DE112017005014T5 - Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge - Google Patents

Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge Download PDF

Info

Publication number
DE112017005014T5
DE112017005014T5 DE112017005014.6T DE112017005014T DE112017005014T5 DE 112017005014 T5 DE112017005014 T5 DE 112017005014T5 DE 112017005014 T DE112017005014 T DE 112017005014T DE 112017005014 T5 DE112017005014 T5 DE 112017005014T5
Authority
DE
Germany
Prior art keywords
branch
branch predictor
search
predictor
data stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112017005014.6T
Other languages
English (en)
Other versions
DE112017005014B4 (de
Inventor
Daniel Lipetz
James Bonanno
Michael Joseph Cadigan Jr.
Adam Benjamin Collura
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112017005014T5 publication Critical patent/DE112017005014T5/de
Application granted granted Critical
Publication of DE112017005014B4 publication Critical patent/DE112017005014B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Abstract

Ein durch einen Computer implementiertes Verfahren beinhaltet Ermitteln einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, durch einen datenstromgestützten Prädiktor mit Indexbeschleuniger (Indexdirektaufruf) eines Prozessors. Ein Verzweigungsprädiktor der ersten Ebene eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors des Prozessors wird nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich durchsucht, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist. Ein Durchsuchen eines Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors wird auf Grund der Tatsache ausgelöst, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich auf das Gebiet der Mikroprozessor-Entwicklung und insbesondere auf ein Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung einer Vorhersage der Datenstromlänge.
  • Die Verzweigungsvorhersage ist eine leistungskritische Komponente eines Pipeline-Mikroprozessors mit hoher Arbeitsfrequenz. Sie wird verwendet, um die Richtung (gewählt bzw. nichtgewählt) und die Zieladresse jedes Verzweigungsbefehls vorherzusagen. Dies ist von Vorteil, da die Verarbeitung auf dem vorhergesagten Weg einer Verzweigung fortgesetzt werden kann, anstatt darauf zu warten, dass das Ergebnis der Verzweigung ermittelt wird. Eine Strafe wird verhängt, wenn eine Verzweigung falsch vorhergesagt wird. Ein pipelinegestützter Verzweigungsprädiktor benötigt mehrere Zyklen, um eine Vorhersage zu treffen.
  • Üblicherweise wird die Verzweigungsvorhersage verwendet, um den Ablauf der Befehle entlang einer Prozessorpipeline über den wahrscheinlichsten Pfad eines Codes zu steuern, der in einem Programm ausgeführt werden soll. Bei der Verzweigungsvorhersage werden historische Informationen verwendet, um vorherzusagen, ob eine bestimmte Verzweigung gewählt wird, wie die Vorhersage, welcher Teil des Codes, der in einer IF-THEN-ELSE-Struktur enthalten ist, auf Grund der Tatsache ausgeführt wird, welcher Teil des Codes in der Vergangenheit ausgeführt wurde. Die Verzweigung, von der erwartet wird, dass sie die erste gewählte Verzweigung ist, wird dann abgerufen und spekulativ ausgeführt. Wenn später festgestellt wird, dass die Vorhersage falsch war, werden die spekulativ ausgeführten oder teilweise ausgeführten Befehle verworfen, und die Pipeline beginnt erneut, wobei der Befehl mit dem korrekten Verzweigungspfad verzweigt, wobei eine Verzögerung zwischen der Verzweigung und dem nächsten auszuführenden Befehl entsteht.
  • Zugriffshäufigkeiten von Strukturen, die zum Bereitstellen von Verzweigungsvorhersagen verwendet werden, schränken deren Kapazität ein. Hierarchische Verzweigungsprädiktoren können ein System mit größerer Kapazität bereitstellen. Bei derartigen Konstruktionen wird das Fehlen von Verzweigungsvorhersagen aus mehreren aufeinanderfolgenden Suchvorgängen von Prädiktoren der ersten Ebene üblicherweise als Hinweis auf einen „Level 1-Miss“ (Fehlschlag der Ebene 1) verwendet, der dazu verwendet werden kann, einen Suchvorgang und einen Massentransfer mehrerer Verzweigungen in der Nähe des „Level 1-Miss“ von einer Struktur der Ebene 2 in die Struktur der Ebene 1 auszulösen. Das Fehlen von Vorhersagen kann jedoch entweder auf Kapazitätsprobleme zurückzuführen sein, wobei es in diesem Fall vorteilhaft ist, auf die zweite Ebene der Hierarchie zuzugreifen, oder das Fehlen von Vorhersagen kann darauf zurückzuführen sein, dass sich im durchsuchten Abschnitt des Codes keine Verzweigungsbefehle befinden. Ein asynchroner Lookahead-(Vorgriff-) Verzweigungsprädiktor kann üblicherweise nicht zwischen diesen beiden Fällen unterscheiden. Daher wäre es vorteilhaft, den Such- und Übertragungsprozess in einem hierarchischen Verzweigungsprädiktor zu verbessern.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform enthält ein durch einen Computer implementiertes Verfahren Ermitteln einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, durch einen datenstromgestützten Prädiktor mit Indexbeschleuniger (Indexdirektaufruf) eines Prozessors. Ein Verzweigungsprädiktor der ersten Ebene eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors des Prozessors wird nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich durchsucht, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist. Ein Durchsuchen eines Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors wird auf Grund der Tatsache ausgelöst, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  • Gemäß weiteren Ausführungsformen weist ein System einen datenstromgestützten Prädiktor mit Indexbeschleuniger eines Prozessors auf, der funktionsmäßig in der Lage ist, eine vorhergesagte Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, zu ermitteln. Das System weist außerdem einen hierarchischen, asynchronen Lookahead-Verzweigungsprädiktor des Prozessors auf, der einen Verzweigungsprädiktor der ersten Ebene und einen Verzweigungsprädiktor der zweiten Ebene aufweist. Der hierarchische, asynchrone Lookahead-Verzweigungsprädiktor ist in funktionsmäßig in der Lage, den Verzweigungsprädiktor der ersten Ebene nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich zu durchsuchen, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist, und ein Durchsuchen des Verzweigungsprädiktors der zweiten Ebene aufgrund der Tatsache auszulösen, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  • Gemäß nochmals weiteren Ausführungsformen weist ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen auf, wobei es sich bei dem durch einen Computer lesbaren Speichermedium per se nicht um ein flüchtiges Signal handelt. Die Programmanweisungen sind von einem Prozessor ausführbar, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das Ermitteln einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, durch einen datenstromgestützten Prädiktor mit Indexbeschleuniger eines Prozessors enthält. Ein Verzweigungsprädiktor der ersten Ebene eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors des Prozessors wird nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich durchsucht, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist. Ein Durchsuchen eines Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors wird aufgrund der Tatsache ausgelöst, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  • Figurenliste
  • Der Gegenstand wird besonders hervorgehoben und in den Ansprüchen am Ende der Spezifikation deutlich beansprucht. Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 ist ein Blockschaltplan von Komponenten einer Computing-Einheit gemäß einer Ausführungsform;
    • 2 ist eine Blockdarstellung eines Systems gemäß einer Ausführungsform;
    • 3 stellt Einträge in einem Verzweigungszielpuffer gemäß einer Ausführungsform dar;
    • 4 ist eine Blockdarstellung eines weiteren Systems gemäß einer Ausführungsform;
    • 5 stellt ein Durchsuchen des Verzweigungsprädiktors gemäß einer Ausführungsform dar;
    • 6 stellt ein erweitertes Durchsuchen des Verzweigungsprädiktors gemäß einer Ausführungsform dar;
    • 7 stellt ein reduziertes Durchsuchen des Verzweigungsprädiktors gemäß einer Ausführungsform dar; und
    • 8 ist ein Ablaufplan, der ein durch einen Computer implementiertes Verfahren gemäß einer Ausführungsform darstellt.
  • GENAUE BESCHREIBUNG
  • Ausführungsformen verwenden einen hierarchischen, asynchronen Lookahead-Verzweigungsprädiktor eines Prozessors für einen Verzweigungsvorhersage-Prozess in Kombination mit einem datenstromgestützten Verzweigungsprädiktor mit Indexbeschleuniger (SPRED). Ein hierarchischer asynchroner Lookahead-Verzweigungsprädiktor enthält einen Verzweigungsprädiktor der ersten Ebene und einen Verzweigungsprädiktor der zweiten Ebene, der aufgrund der Tatsache durchsucht wird, dass keine Verzweigung in dem Verzweigungsprädiktor der ersten Ebene gefunden wurde. Der Verzweigungsprädiktor der ersten Ebene und der Verzweigungsprädiktor der zweiten Ebene können jeweils einen oder mehrere Verzweigungszielpuffer (BTBs) mit unterschiedlichen Größen und Leistungsmerkmalen enthalten. Bei einem BTB handelt es sich um eine Struktur, die Verzweigungs-, Zielinformationen und optional andere unterstützende Vorhersageinformationen speichert.
  • Die asynchrone Lookahead-Verzweigungsvorhersage erfolgt asynchron aus einer ProzessorPipeline, die mit einem Abrufen von Anweisungen beginnt. Wenn die Verzweigungsvorhersage an einer bestimmten Befehlsadresse zur gleichen Zeit wie ein Abrufen von Anweisungen neu gestartet wird, wird der Verzweigungsprädiktor der ersten Ebene nach der ersten Verzweigung an oder nach der Neustartadresse jeweils unabhängig durchsucht. Nach Auffinden einer Verzweigung meldet die Verzweigungsvorhersagelogik diese an die Befehlsabruflogik und an die Pipeline-Logik, um eine eventuelle Korrelation zwischen Verzweigungsvorhersagen und zu decodierenden Anweisungen zu ermöglichen. Unabhängig vom Rest der Pipeline indiziert sich die Verzweigungsvorhersagelogik neu mit der vorhergesagten Zieladresse einer vorhergesagten gewählten Verzweigung. Bei einer vorhergesagten nichtgewählten Verzweigung wird die Suche sequenziell fortgesetzt. Dann wird nach der nächsten Verzweigung gesucht. Dieser Vorgang wiederholt sich dann. Indizieren von Verzweigungsprädiktoren, Lesen von Inhalten aus ihnen und Ermitteln, ob es eine vorhergesagte gewählte Verzweigung gibt, und, wenn ja, ihrer Zieladresse, kann in modernen Ausführungsformen mit hoher Arbeitsfrequenz mehrere Prozessorzyklen in Anspruch nehmen.
  • Der Verzweigungsprädiktor der ersten Ebene wird im Allgemeinen unter Verwendung einer Befehlsadresse indiziert und um einen bestimmten Betrag erhöht, um weiterhin sequenziell nach Verzweigungen innerhalb eines Code-Bereichs zu suchen. Jedes Mal, wenn der Prozessor-Befehlsdatenstrom neu gestartet wird, z.B. nach einer falschen Verzweigung, beginnt die Suche, und ein neuer Datenstrom wird gestartet. Daher startet jede vorhergesagte gewählte Verzweigung einen neuen Datenstrom. Ausführungsformen nutzen Datenstrom-Längenangaben aus dem SPRED, um zu ermitteln, wie auf einen möglichen Fehlschlag eines Verzweigungsprädiktors der ersten Ebene zu reagieren ist. Eine vollständige Aktion, z.B. ein vollständiges Durchsuchen des Verzweigungsprädiktors der zweiten Ebene, kann verhindert werden, wenn der SPRED anzeigt, dass die Befehlsadresse der Vorhersage der gewählten Verzweigung, die einen durchsuchten aktuellen Datenstrom beendet, größer ist als die aktuelle Suchadresse, wenn diese aktuelle Suchadresse weit genug über den Startpunkt hinausgeht, da sie ansonsten als Fehlschlag der Ebene 1 gemeldet worden wäre, wenn keine Verzweigungsvorhersagen gefunden wurden. Der Fehlschlag kann forciert werden, wenn der SPRED das Ende des Datenstroms frühzeitig vorhergesagt hat, aber keine Verzweigung gefunden wurde (z.B. vor einem festen Fehlschlag-Grenzwert).
  • 1 stellt das Computersystem 100 dar, bei dem es sich um ein Beispiel für ein System handelt, das Ausführungsformen enthält. Das Computersystem 100 enthält eine Datenübertragungsstruktur 102, die Datenübertragungen zwischen dem/den Computerprozessor(en) 104 mit Verzweigungsprädiktoren 105 und Indexbeschleuniger 107, dem Speicher 106, dem dauerhaften Speicher 108, der Datenübertragungseinheit 110, der Ein/Ausgabe-(E/A-) Schnittstelle(n) 112 und dem Cachespeicher 116 bereitstellt. Die Datenübertragungsstruktur 102 kann mit jeder Architektur implementiert werden, die für ein Leiten von Daten und/oder Steuerinformationen zwischen Prozessoren (wie Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemspeicher, peripheren Einheiten und allen anderen Hardwarekomponenten in einem System ausgelegt ist. So kann beispielsweise die Datenübertragungsstruktur 102 mit einem oder mehreren Bussen umgesetzt werden.
  • Bei dem Speicher 106 und dem dauerhaften Speicher 108 handelt es sich um durch einen Computer lesbare Speichermedien. In dieser Ausführungsform enthält der Speicher 106 einen Direktzugriffspeicher (RAM). Im Allgemeinen kann der Speicher 106 jedes geeignete flüchtige oder nichtflüchtige durch einen Computer lesbare Speichermedium enthalten. Der Cachespeicher 116 ist ein schneller Speicher, der die Leistung der Prozessoren 104 verbessert, indem er kürzlich abgerufene Daten und Daten in der Nähe von aus dem Speicher 106 abgerufenen Daten hält. Der Cachespeicher 116 kann innerhalb und/oder außerhalb des Prozessors 104 verteilt sein und kann Anweisungen (z.B. Icache) und/oder Daten (z.B. Dcache) enthalten.
  • Programmanweisungen und Daten, die zum Realisieren von Ausführungsformen verwendet werden, können im dauerhaften Speicher 108 zur Ausführung durch einen oder mehrere der jeweiligen Prozessoren 104 über den Cachespeicher 116 und einen oder mehrere Speicher des Speichers 106 gespeichert werden. In einer Ausführungsform enthält der dauerhafte Speicher 108 ein magnetisches Festplattenlaufwerk. Alternativ oder zusätzlich zu einem magnetischen Festplattenlaufwerk kann der dauerhafte Speicher 108 eine Halbleiter-Festplatte, eine Halbleiter-Speichereinheit, einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen Flash-Speicher oder ein anderes durch einen Computer lesbares Speichermedium enthalten, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
  • Bei den vom dauerhaften Speicher 108 verwendeten Medien kann es sich außerdem um Wechselmedien handeln. So kann beispielsweise ein Wechsel-Festplattenlaufwerk für den dauerhaften Speicher 108 verwendet werden. Zu weiteren Beispielen gehören optische und magnetische Festplatten, USB-Sticks und Smartcards, die in ein Laufwerk eingesetzt werden, um sie auf ein anderes durch einen Computer lesbares Speichermedium zu übertragen, das ebenfalls Teil des dauerhaften Speichers 108 ist.
  • Die Datenübertragungseinheit 110 stellt in diesen Beispielen Datenübertragungen mit anderen Datenverarbeitungssystemen oder -einheiten bereit. Bei diesen Beispielen enthält die Datenübertragungseinheit 110 eine oder mehrere Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 110 kann Datenübertragungen über das Verwenden von physischen und/oder drahtlosen Datenübertragungsverbindungen bereitstellen. Programmanweisungen und Daten, die zum Realisieren von Ausführungsformen verwendet werden, können über die Datenübertragungseinheit 110 in den dauerhaften Speicher 108 heruntergeladen werden.
  • Die E/A-Schnittstelle(n) 112 ermöglichen ein Eingeben und Ausgeben von Daten von/zu anderen Einheiten, die an jedes Computersystem angeschlossen werden können. So kann beispielsweise die E/A-Schnittstelle 112 eine Verbindung zu externen Einheiten 118 wie eine Tastatur, ein Tastenfeld, ein berührungsempfindlicher Bildschirm (Touchscreen) und/oder eine andere geeignete Eingabeeinheit bereitstellen. Zu externen Einheiten 118 können außerdem tragbare, durch einen Computer lesbare Speichermedien wie z.B. USB-Sticks, tragbare optische oder magnetische Festplatten und Speicherkarten gehören. Software und Daten, die zum Realisieren von Ausführungsformen verwendet werden, können auf solchen tragbaren, durch einen Computer lesbaren Speichermedien gespeichert und über die E/A-Schnittstelle(n) 112 in den dauerhaften Speicher 108 geladen werden. Die E/A-Schnittstelle(n) 112 sind außerdem mit einer Anzeige 120 verbunden. Die Anzeige 120 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit und kann beispielsweise ein Computermonitor sein.
  • Verzweigungsprädiktoren 105 und der Indexbeschleuniger 107 können einen oder mehrere Sätze von Hardware-Logikkomponenten enthalten, die in der Lage sind, Vorhersagen für die Position von Verzweigungen in einem Befehlsdatenstrom zu treffen und zu speichern. Beispielhafte Ausführungsformen von Verzweigungsprädiktoren 105 und Indexbeschleuniger 107 werden hierin unter Bezugnahme auf die 2 bis 8 näher beschrieben.
  • 2 stellt ein System 200 dar, das einen hierarchischen, asynchronen Lookahead-Verzweigungsprädiktor 205 als eine Ausführungsform der Verzweigungsprädiktoren 105 von 1 und ein SPRED 207 als eine Ausführungsform des Indexbeschleunigers 107 von 1 enthält. Der beispielhafte hierarchische, asynchrone Lookahead-Verzweigungsprädiktor 205 von 2 enthält einen Verzweigungsprädiktor der ersten Ebene (BTB1) 204, eine BTB1-Such- und Trefferlogik 202, einen Verzweigungsprädiktor der zweiten Ebene (BTB2) 206, BTB2-Such-Tracker 208 und eine BTB2-Such- und Trefferlogik 210. Die BTB1-Such- und Trefferlogik 202 steuert Zugriff auf und Aktualisierungen von BTB-Einträgen in dem BTB1 204, während die BTB2-Such- und Trefferlogik 210 Zugriff auf und Aktualisierungen von BTB-Einträgen in dem BTB2 206 steuert. In einer beispielhaften Ausführungsform handelt es sich bei dem BTB1 204 um einen primären BTB oder BTB der ersten Ebene und bei dem BTB2 206 um einen sekundären BTB oder BTB der zweiten Ebene. BTB2-Such-Tracker 208 können als Filter zum Suchen und Steuern des Massentransfers mehrerer BTB-Einträge von dem BTB2 206 auf der Grundlage eines SPRED-qualifizierten BTB1-Fehlschlags konfiguriert werden. Der SPRED-qualifizierte BTB1-Fehlschlag kann durch einen Fehlschlag des Befehls-Cachespeichers, der einem gleichen Speicherbereich zugehörig ist, weiter eingeschränkt werden. Während die BTB1-Such- und Trefferlogik 202, der SPRED 207 und die BTB2-Such- und Trefferlogik 210 separat dargestellt werden, versteht es sich von selbst, dass sie zu einem einzigen Logikblock zusammengefasst oder weiter unterteilt werden können.
  • Jeder von BTB1 204 und BTB2 206 ist assoziativ mit mehreren Gruppen von BTB-Einträgen. Der BTB2 206 ist ein übergeordneter Cachespeicher von Verzweigungsvorhersageinformationen. Die Kapazität des BTB2 206 ist größer als die Kapazität des BTB1 204 zum Speichern von Einträgen, und der BTB1 204 deckt einen größeren Platzbedarf für Befehle als der Befehls-Cachespeicher des Cachespeichers 116 von 1 oder den gleichen Platzbedarf wie dieser ab. Ein allgemeines Beispiel für einen BTB-Eintrag ist in 3 als BTB-Eintrag 300 (auch als Eintrag 300 bezeichnet) dargestellt, der ein Verzweigungsadressen-Tag 302 und eine vorhergesagte Zieladresse 306 enthält. Bei weiterer Bezugnahme auf die 1 bis 3 wird der Verzweigungsadressen-Tag 302 verwendet, um einen Eintrag in einer BTB-Zeile 310 zu lokalisieren, wobei jeder von BTB1 204 und BTB2 206 von 2 mehrere BTB-Zeilen 312 und mehrere assoziative BTB-Einträge pro BTB-Zeile 310 enthalten kann. Der BTB1 204 und der BTB2 206 können eine unterschiedliche Anzahl von BTB-Zeilen 312 und Spalten relativ zueinander aufweisen. Jeder BTB-Eintrag 300 kann weitere Verzweigungsvorhersageinformationen (nicht dargestellt) enthalten, z.B. eine Verzweigungsrichtung, um anzuzeigen, ob die zugehörige Verzweigung gewählt wurde.
  • In einer beispielhaften Ausführungsform wird eine Suchadresse, die einem Neustart des Befehlsabrufs in den Prozessoren 104 von 1 entspricht, an die BTB1-Such- und Trefferlogik 202 gesendet, die danach asynchron vom Befehlsabruf bis zum nächsten Neustart arbeitet. Bei der Suche nach Verzweigungsvorhersagen wird der BTB1 204 gelesen und kann eine Verzweigungsvorhersage liefern, wenn er einen Eintrag mit einem Verzweigungsadressen-Tag 302 enthält, der mit der Suchadresse übereinstimmt. Der BTB1 204 liefert Eingaben zur BTB1-Such und Trefferlogik 202, um zu ermitteln, ob auf der Grundlage der Suchadresse eine Übereinstimmung oder ein „Treffer“ lokalisiert wird. Wird eine Übereinstimmung gefunden, gibt die BTB1-Such- und Trefferlogik 202 eine vorhergesagte Zieladresse aus. Wird keine Übereinstimmung gefunden, wird das sequenzielle Suchen des BTB1 204 über einen Suchbereich fortgesetzt, bevor ein BTB1-Fehlschlag gemeldet wird und weitere Maßnahmen durch die BTB2-Such-Tracker 208 ergriffen werden.
  • Der Suchbereich des BTB1 204 kann durch den SPRED 207 festgelegt werden. In Ausführungsformen ermittelt der SPRED 207 eine vorhergesagte Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsstrom beendet. Der BTB1 204 wird nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen 300 im Suchbereich durchsucht, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist. Ein Durchsuchen des BTB2 206 kann ausgelöst werden, wenn keine Verzweigungsvorhersage im Suchbereich gefunden wurde.
  • In einigen Ausführungsformen können die BTB2-Such-Tracker 208 weggelassen werden. In Ausführungsformen, die die BTB2-Such-Tracker 208 beinhalten, können BTB1-Fehlschläge anhand der Granularität der BTB2-Seiten verfolgt werden. Wenn beispielsweise die Granularität einer BTB2-Massenübertragung (Seitengröße) 4 KB beträgt, gilt jeder qualifizierte BTB1-Fehlschlag in derselben 4 KB-Seite als derselbe Seitenfehlschlag. Wenn ein Such-Tracker in den BTB2-Such-Trackern 208 für einen BTB1-Fehlschlag in einer bestimmten Seite aktiv ist, werden alle nachfolgenden Fehlschläge in derselben Seite ignoriert, während dieser Such-Tracker aktiv ist und diese Seitenadresse als kürzlich abgeschlossen gekennzeichnet wird. Wenn ein BTB1-Fehlschlag erkannt wird, bei dem es sich um ein Duplikat eines aktiven Such-Tracker von den BTB2-Such-Trackern 208 handelt, der einen Gültigkeitsindikator für den Fehlschlag des Befehls-Cachespeichers gültig hat (z.B. Bit auf ‚1‘ gesetzt), aber der Gültigkeitsindikator des BTB1-Fehlschlags ungültig ist (z.B. Bit auf ‚0‘ gesetzt), dann kann der zugehörige Gültigkeitsindikator des BTB1-Fehlschlags des Such-Tracker auf gültig gesetzt werden (z.B. ‚1‘).
  • Wenn Fehlschläge des Befehls-Cachespeichers auftreten, können diese unabhängig von BTB1-Fehlschlägen an die BTB2-Such-Tracker 208 gesendet werden. Jeder Such-Tracker kann auch Fehlschläge des Befehls-Cachespeichers verfolgen. Fehlschläge des Befehls-Cachespeichers können mit der gleichen Seitengranularität wie BTB2-Massenübertragungen oder einer anderen Granularität des Befehls-Cachespeichers verfolgt werden. Wenn die Adresse des Fehlschlags des Befehls-Cachespeichers mit der Adresse eines Tracker übereinstimmt, der für einen BTB1-Fehlschlag (eine BTB1-Fehlschlag-Adresse), aber nicht für einen Fehlschlag des Befehls-Cachespeichers aktiv ist, kann der Gültigkeitsindikator für den Befehls-Cachespeicher auf gültig gesetzt werden (z.B. ‚1‘).
  • Aktive Such-Tracker können verwendet werden, um das Durchsuchen des BTB2 206 durchzuführen. In beispielhaften Ausführungsformen kann immer dann, wenn ein Such-Tracker sowohl für einen BTB1-Fehlschlag als auch für einen Fehlschlag des Befehls-Cachespeichers aktiv ist, ein Ganzseiten-Transfer erfolgen. Alle Zeilen des BTB2 206 in der Seite werden durchsucht, und Treffer werden in den BTB1 204 geschrieben. Such-Tracker, die sowohl für einen BTB1-Fehlschlag als auch für einen Fehlschlag des Befehls-Cachespeichers aktiv sind, können aktiv bleiben, bis der BTB2-Massentransfer abgeschlossen ist.
  • Der SPRED 207 kann einen Index auf eine Zeile verfolgen, die der Adresse des ersten in einem Befehlsdatenstrom empfangenen Befehls entspricht, und die in der aktuellen Zeile des SPRED 207 enthaltenen Informationen werden gelesen. In verschiedenen Ausführungsformen können abhängig von der Breite des Adressraums verschiedene Anzahlen von eindeutigen Befehlsadressen vorhanden sein, so dass für den SPRED 207 in verschiedenen Ausführungsformen folglich eine unterschiedliche Anzahl von Zeilen erforderlich sein kann. Im Allgemeinen wird nur eine Teilmenge von Bits der Befehlsadresse für einen gegebenen Befehl verwendet, um die Zeilennummer im SPRED 207 zu kennzeichnen, die Verzweigungsvorhersagedaten für den gegebenen Befehl enthält. So kann beispielsweise in einer Ausführungsform, bei der 32-Bit-Befehlsadressen verwendet werden (mit Bit 0 bis 31), jede Befehlsadresse in ein linkes Tag (L-Tag), das aus den ersten 17 Bits der Befehlsadresse (Bit 0 bis 16) besteht, einen Index, der aus den nächsten 10 Bits der Befehlsadresse (Bit 17 bis 26) besteht, und ein rechtes Tag (R-Tag), das aus den letzten 5 Bits der Befehlsadresse (Bit 27 bis 31) besteht, aufgeteilt werden. Da in dieser Ausführungsform lediglich die zehn Bits der als Index verwendeten Befehlsadresse verwendet werden, um die Zeile im SPRED 207 zu ermitteln, in der die Verzweigungsvorhersagedaten für diesen Befehl gespeichert sind, enthält der SPRED 207 1024 Zeilen. Weiterhin ist der SPRED 207 in einigen Ausführungsformen so eingerichtet, dass er die gleiche Anzahl von Zeilen wie der BTB1 204 enthält und auf der Grundlage der gleichen 10 Bits der Befehlsadresse wie der BTB1 204 indiziert wird. In weiteren Ausführungsformen verwenden BTB1 204 und SPRED 207 unterschiedliche Bitanzahlen, um zu ermitteln, welche Zeile in den jeweiligen Tabellen die Verzweigungsvorhersageinformationen für diesen Befehl enthält. In diesen Ausführungsformen ist es möglich, dass BTB1 204 und SPRED 207 unterschiedliche Zeilenanzahlen aufweisen und dennoch einen korrekten Betrieb ermöglichen.
  • Daten, die in einer Zeile des SPRED 207 enthalten sind, die dem aktuellen Befehl entspricht, können gelesen werden, um zu ermitteln, ob eine Verzweigung für den aktuellen Befehl erwartet wird. Es ist zu beachten, dass eine Zeile des SPRED 207 einer großen Anzahl von Befehlsadressen in Ausführungsformen entsprechen kann, in denen Aliasing verwendet wird, und dass in diesen Ausführungsformen mehrere Befehlsadressen der gleichen Zeile im SPRED 207 entsprechen können. In einer Ausführungsform enthält das erste Bit der in der aktuellen Zeile von SPRED 207 gespeicherten Daten eine binäre Angabe darüber, ob eine gewählte Vorhersage in der entsprechenden Zeile des BTB1 204 vorhanden ist. In dieser Ausführungsform erfolgt das Ermitteln, ob eine gewählte Vorhersage in der entsprechenden Zeile des BTB1 204 vorhanden ist, unter Verwendung eines Offsetfeldes, das angibt, wie oft ein Durchsuchen des BTB1 204 durchgeführt werden muss, bevor die gewählte Verzweigung zum Beenden des Datenstroms auftritt.
  • Der/die Prozessor/en 104 kann/können die Zieladresse der ersten gewählten Verzweigungsvorhersage erkennen, die in der aktuell ausgewählten Zeile des SPRED 207 angezeigt wird. In einigen Ausführungsformen kann eine zusätzliche Struktur, beispielsweise ein sich ändernder Zielpuffer (CTB), verwendet werden, um die Zieladresse für die erste gewählte Vorhersage vorherzusagen, die durch eine oder mehrere Zeilen des SPRED 207 angegeben wird. In diesen Ausführungsformen kann die Zieladresse der ersten gewählten Vorhersage weggelassen werden, und die Angabe der Spalte des BTB1 204 kann verwendet werden, um die Zieladresse der ersten gewählten Vorhersage unter Verwendung der zusätzlichen Struktur wie der CTB leichter zu erkennen.
  • Eine Vorhersage kann gleichzeitig aus dem BTB1 204 erstellt werden, während eine Vorhersage aus dem SPRED 207 erstellt wird. Die aus dem SPRED 207 erstellte Vorhersage kann als gültig angesehen werden, bis sie durch die aus dem BTB1 204 erstellte Vorhersage bestätigt oder widerlegt wird. In verschiedenen Ausführungsformen kann es sich bei den im SPRED 207 enthaltenen Datenbits um die Datenbits handeln, die verwendet werden, um den SPRED 207 an der Zieladresse der Vorhersage zu reindizieren. In Ausführungsformen, bei denen mehr oder weniger Datenbits zum Reindizieren des SPRED 207 verwendet werden, kann die Länge der in einer bestimmten Zeile des SPRED 207 enthaltenen Zahl unterschiedlich sein. Sobald die Zieladresse der ersten gewählten Verzweigungsvorhersage erkannt wurde, reindizieren der/die Prozessoren 104 den SPRED 207 und den BTB1 204 auf die Zeilen, die der Zieladresse für die erste gewählte Verzweigungsvorhersage entsprechen. Sobald der SPRED 207 und der BTB1 204 reindiziert wurden, starten der/die Prozessoren 104 den Prozess des Suchens in BTB1 204 und SPRED 207 nach Verzweigungsvorhersagen an der neuen Zieladresse neu.
  • Der/die Prozessor/en 104 kann/können ermitteln, ob ein größerer Adressraum zum Suchen zur Verfügung steht. Wenn die Suchlogik wie die BTB1-Such- und Trefferlogik 202 entscheidet, dass die Suche gestoppt werden soll, wird die Suche nach Verzweigungsvorhersagen beendet. Ein Neustart beginnt einen neuen Suchdatenstrom in der Verzweigungsvorhersagelogik. Sobald ein Neustart erfolgt, kann der Prozessor 104 sequenziell weiter nach Verzweigungen suchen. In anderen Ausführungsformen kann der Prozessor 104 außerdem das Reindizieren beschleunigen, wenn der SPRED 207 ein Ende des Datenstroms findet, daher leitet der Prozessor 104 die Verzweigungsprädiktoren 105 um, um das Suchen in einem neuen Datenstrom zu beginnen. Wenn eine Anforderung für einen Neustart mit einer Befehlsadresse empfangen wird, die der vorherigen Befehlsadresse folgt, kann der Prozessor 104 das Durchsuchen der nächsten sequenziellen Zeilen von BTB1 204 und SPRED 207 nach Vorhersagen über das Vorhandensein von Verzweigungen fortsetzen. Im Allgemeinen können die Indizes von BTB1 204 und SPRED 207 inkrementiert werden, da die nächste Zeile in BTB1 204 und SPRED 207 Verzweigungsvorhersageinformationen für den nächsten sequenziellen Befehlssatz enthält, der in dem Befehlsdatenstrom vorhanden ist.
  • Der SPRED 207 kann einen vorhergesagten Austrittspunkt oder eine gewählte Verzweigung ermitteln, die einen Datenstrom beendet. So kann beispielsweise am Anfang des Datenstroms 0 eine Startbefehlsadresse von 0x00 verwendet werden, um in dem SPRED 207 zu indexieren, und die Ausgabe des SPRED 207 kann anzeigen, dass der Austrittspunkt um X Positionen/Befehle vom Anfang des Datenstroms 0 entfernt ist. Die Ausgabe des SPRED 207 kann verwendet werden, um das Indizieren im Datenstrom 1 zu beschleunigen, nachdem X Positionen/Befehle im Datenstrom 0 durchsucht wurden. Die Indizierung kann bei einer Startbefehlsadresse fortgesetzt werden, um ein Ausgeben von Y Positionen/Befehlen zu erzeugen, die angeben, wo sich der Austrittspunkt vom Datenstrom 1 befindet, usw. Bei diesem Ansatz muss der SPRED 207 möglicherweise nur einmal pro Datenstrom gelesen werden, (z.B.) bei der Anfangssuchadresse des Datenstroms. Ein Eintrag des SPRED 207 kann Informationen enthalten, die einen Versatz zu einem vorhergesagten Austrittspunkt als eine vorhergesagte Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsstrom beendet, beinhalten.
  • In einigen Ausführungsformen wird ein Genauigkeitszähler 209 (d.h. ein SPRED-Genauigkeitszähler) auf der Grundlage der Häufigkeit aktualisiert, wie oft der SPRED 207 die vorhergesagte Datenstromlänge korrekt voraussagt und die richtige Vorhersage verwendet wird. Die Verwendung des Suchbereichs, begrenzt durch die Befehlsadresse und die vorhergesagte Datenstromlänge, kann auf dem Ermitteln beruhen, dass der Genauigkeitszähler 209 über einem Genauigkeitsschwellenwert liegt. Wenn die Genauigkeit des SPRED 207 unter einem Genauigkeitsschwellenwert liegt, kann der SPRED 207 als ungenau betrachtet werden, was zum Deaktivieren der Nutzung des Suchbereichs und zum Aktivieren der Verwendung einer Standard-Suchtiefe führt, auf der Grundlage eines Feststellens, dass der Genauigkeitszähler 209 unter dem Genauigkeitsschwellenwert liegt. So kann beispielsweise ein Standardsuchbereich auf einen vorgegebenen Wert eingestellt werden, z.B. die Suche nach drei Einträgen, bevor ein Fehlschlag gemeldet wird. Im Gegensatz dazu kann der SPRED 207 einen Suchbereich einstellen, der größer oder kleiner als der Standardsuchbereich ist, auf der Grundlage einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die den Befehlsdatenstrom beendet.
  • 4 stellt ein System 400 dar, das einen hierarchischen, asynchronen Lookahead-Verzweigungsprädiktor 405 als Ausführungsform der Verzweigungsprädiktoren 105 von 1 und einen SPRED 407 als Ausführungsform des Indexbeschleunigers 107 von 1 enthält. Der beispielhafte hierarchische, asynchrone Lookahead-Verzweigungsprädiktor 405 von 4 enthält einen Verzweigungsprädiktor der ersten Ebene 401 mit BTB1 404 und einer Verzweigungs-Zielpuffer-Vorladetabelle (BTBP) 403, eine BTB1-Such- und Trefferlogik 402, einen Verzweigungsprädiktor der zweiten Ebene (BTB2) 406, einen BTB2-Such-Tracker 408 und eine BTB2-Such- und Trefferlogik 410.
  • Bei dem BTBP 403 kann es sich um einen kleinen BTB handeln, der parallel zu einem größeren BTB (BTB1 404) durchsucht wird, um die Ziele und optional die Richtung der Verzweigungsbefehle vorherzusagen. Da der BTB1 404 größer ist, kann er mit großen SRAM-Arrays implementiert werden, die möglicherweise eine begrenzte Anzahl von Lese- und Schreibanschlüssen aufweisen können (normalerweise 1 oder 2 Lese- und ein einziger Schreibanschluss mit der Einschränkung, dass es nicht möglich ist, dieselbe Bank im gleichen Zyklus zu lesen und zu beschreiben). Da der BTBP 403 jedoch viel kleiner ist als der BTB1404, kann er z.B. mit SRAM-Registerdateien implementiert werden. Der BTBP 403 kann über viele Lese- und Schreibanschlüsse verfügen, die gleichzeitig verwendet werden können. Daher können mehrere Quellen von Verzweigungsvorhersageinformationen die Vorteile der BTBP 403-Schreibbandbreite nutzen, indem sie zuerst in den BTBP 403 geschrieben werden. Der BTBP 403 kann so aufgebaut werden, dass er als Filter für den BTB1404 dient, wobei der BTB1 404 Verzweigungsvorhersageinformationen vom BTBP 403 empfängt. In beispielhaften Ausführungsformen unterstützt der BTBP 403 Verzweigungen, die als die nützlichsten (z.B. mindestens ein Suchtreffer) gelten, vom BTBP 403 in den BTB1 404. Der BTBP 403 kann außerdem als assoziativer Opfer-BTB-Cachespeicher dienen, indem er Informationen zur Verzweigungsvorhersage speichert, die kürzlich aus dem BTB1 404 verwiesen wurden. Der BTBP 403 kann Software-Preload-Installationen unterstützen und kann mit anderen Strukturen, beispielsweise dem BTB2 406, verbunden werden.
  • Ähnlich wie bei der Ausführungsform von 2 steuert die BTB1-Such- und Trefferlogik 402 Zugriff auf und Aktualisierungen von BTB-Einträgen im BTB1 404 (und optional BTBP 403), während die BTB2-Such- und Trefferlogik 410 Zugriff auf und Aktualisierungen von BTB-Einträgen im BTB2 406 steuert. In einer beispielhaften Ausführungsform bilden BTBP 403 und BTB1 404 zusammen den Verzweigungsprädiktor 401 der ersten Ebene, und bei dem BTB2 406 handelt es sich um einen sekundären BTB oder einen BTB der zweiten Ebene. Die BTB2-Such-Tracker 408 können als Filter für ein Durchsuchen und Steuern der Massenübertragung von BTB-Einträgen vom BTB2 406 zum BTBP 403 konfiguriert werden auf der Grundlage eines vom SPRED qualifizierten BTB1-Fehlschlags. Der vom SPRED qualifizierte BTB1-Fehlschlag kann durch einen Fehlschlag des Befehls-Cachespeicher, der einem gleichen Speicherbereich zugehörig ist, weiter eingeschränkt werden. Während die BTB1-Such- und Trefferlogik 402, der SPRED 407 und die BTB2-Such- und Trefferlogik 410 separat dargestellt werden, versteht es sich von selbst, dass sie zu einem einzigen Logikblock zusammengefasst oder weiter unterteilt werden können. Anstatt eine Vielzahl von Verzweigungen vom BTB2 406 direkt auf den BTB1 404 zu übertragen, kann die BTB2 Such- und Trefferlogik 410 Verzweigungen zu dem BTBP 403 übertragen. Verzweigungen, die sich im BTBP 403 befinden, können zu dem BTB1404 übertragen werden, wenn ein „Treffer“ einer Verzweigung in dem BTBP 403 erkannt wird.
  • In einigen Ausführungsformen werden der BTB1 404 und der BTBP 403 bei einem durch den SPRED 407 definierten Suchbereich parallel durchsucht. In weiteren Ausführungsformen schränkt der durch den SPRED 407 definierte Suchbereich das Durchsuchen des BTB1 404 ein, schränkt aber den Suchbereich des BTBP 403 nicht ein. Der BTB1404 und der BTB2 406 können ähnlich aufgebaut sein wie der BTB1 204 und der BTB2 206 von 2. Der SPRED 407, der BTB2 Such-Tracker 408, der Genauigkeitszähler 409 und die BTB2 Such- und Trefferlogik 410 können ähnlich wie der SPRED 207, der BTB2 Such-Tracker 208, der Genauigkeitszähler 209 und die BTB2 Such- und Trefferlogik 210 von 2 arbeiten.
  • Die 5 bis 7 zeigen Beispiele für das Durchsuchen der Verzweigungsprädiktoren der ersten Ebene, das mit dem bzw. ohne den aktivierten SPRED 207, 407 der 2 und 4 durchgeführt wird. Ein normaler Suchvorgang 500 kann durchgeführt werden, wenn der SPRED 207, 407 deaktiviert ist. Bei Ausführungsformen, die den Genauigkeitszähler 209, 409 enthalten, wobei der Genauigkeitszähler 209, 409 unter einem Genauigkeitsschwellenwert liegt, kann der BTB1 204, 404 von der Start-Suchadresse 502 mit Offset 0 aus untersucht werden und mit der Suche mit Offset 1 und Offset 2 fortfahren, bevor eine Standardsuchtiefe 504 erreicht wird. Werden nach Erreichen der Standardsuchtiefe 504 keine Treffer gefunden, wird ein Fehlschlag angezeigt, der zu einem weiteren Durchsuchen des BTB2 206, 406 führen kann. Wenn der Genauigkeitszähler 209, 409 über dem Genauigkeitsschwellenwert liegt (oder der Genauigkeitszähler 209, 409 weggelassen wird), wird die Suche über einen Suchbereich durchgeführt, der durch eine Befehlsadresse und eine vorhergesagte Datenstromlänge vom SPRED 207, 407 begrenzt ist. Die vorhergesagte Datenstromlänge kann über die Standardsuchtiefe 504 hinausgehen, was ein vorzeitiges Auslösen eines nicht benötigten Durchsuchens des BTB2 206, 406 verhindert, oder die vorhergesagte Datenstromlänge kann kleiner als die Standardsuchtiefe 504 sein, was ein frühzeitiges Auslösen des Durchsuchens der BTB2 206, 406 ermöglichen kann.
  • Bei dem Suchprozess 600 handelt es sich um ein Beispiel für eine SPRED-fähige erweiterte Suche. Das Untersuchen des BTB1 204, 404 kann ab der Startsuchadresse 602 mit Offset 0 erfolgen und kann mit der Suche mit Offset 1 und Offset 2 fortgesetzt werden, bevor eine Standardsuchtiefe 604 erreicht wird. Anstatt einen Fehlschlag zu deklarieren, erstreckt sich die Suche über die Standardsuchtiefe 604 hinaus auf die Offsets 3 und 4, bis sie eine vorhergesagte Datenstromlänge 606 erreicht, um einen Fehlschlag anzuzeigen. Wenn eine gewählte Verzweigung am Offset 4 lokalisiert wird, wie vom SPRED 207, 407 vorhergesagt, kann der Genauigkeitszähler 209, 409 inkrementiert werden; andernfalls kann das Durchsuchen des BTB2 206, 406 ausgelöst werden und der Genauigkeitszähler 209, 409 kann dekrementiert werden.
  • Bei dem Suchprozess 700 handelt es sich um ein Beispiel für eine SPRED-fähige reduzierte Suche. Der BTB1 204, 404 kann ab der Startsuchadresse 702 mit Offset 0 untersucht werden, anstatt mit der Suche mit Offset 1 und Offset 2 fortzufahren, bevor eine Standardsuchtiefe 704 erreicht wird. Ein Fehlschlag wird frühzeitig vor der Standardsuchtiefe 704 angezeigt, wenn der Offset 0 bei der vorhergesagten Datenstromlänge 706 erreicht wird. Wenn eine gewählte Verzweigung am Offset 0 lokalisiert wird, wie vom SPRED 207, 407 vorhergesagt, dann kann der Genauigkeitszähler 209, 409 inkrementiert werden; andernfalls kann das Durchsuchen des BTB2 206, 406 ausgelöst werden und der Genauigkeitszähler 209, 409 kann dekrementiert werden.
  • In 8 wird nun ein Verfahren 800 zum Qualifizieren des Durchsuchens des Verzweigungsprädiktors mittels Datenstromlängenvorhersage in einer beispielhaften Ausführungsform beschrieben. Der Prozess 800 wird unter Bezugnahme auf die 1 bis 7 beschrieben und kann durch die Verzweigungsprädiktoren 105 und den Indexbeschleuniger 107 von 1 implementiert werden.
  • Im Block 802 ermittelt der SPRED 207, 407 des Prozessors 104 eine vorhergesagte Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsstrom beendet. Im Block 804 sucht ein Verzweigungsprädiktor der ersten Ebene (BTB1 204, 404 und/oder BTP 403) eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors 205, 405 des Prozessors 104 nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist.
  • Im Block 806 wird ein Durchsuchen eines Verzweigungsprädiktors der zweiten Ebene (BTB2 206, 406) des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors 205, 405 ausgelöst, da keine Verzweigungsvorhersage im Suchbereich gefunden wurde. Das Auslösen einer Suche kann zu einer Massenübertragung einer Vielzahl von Verzweigungen vom BTB2 206, 406 zum BTB1 204, 404 und/oder zum BTBP 403 führen. Das Verwenden des SPRED 207, 407 kann das Durchsuchen des BTB2 206, 406 über eine Standardsuchtiefe hinaus erweitern (das mit einem Fehlschlag des Befehlscachespeichers weiter qualifiziert werden kann), wie im Beispiel der 2, 4 und 6 dargestellt. Der SPRED 207, 407 kann alternativ das Durchsuchen des BTB2 206, 406 auslösen, bevor er die Standardsuchtiefe (die mit einem Fehlschlag des Befehlscachespeichers weiter qualifiziert werden kann) erreicht, wie im Beispiel der 2, 4 und 7 dargestellt.
  • Wie bereits beschrieben, kann in einigen Ausführungsformen der Genauigkeitszähler 209, 409 auf der Grundlage der Häufigkeit aktualisiert werden, wie oft der SPRED 207, 407 die vorhergesagte Datenstromlänge korrekt voraussagt und die richtige Vorhersage verwendet wird. Das Verwenden des Suchbereichs kann auf der Grundlage eines Feststellens aktiviert werden, dass der Genauigkeitszähler 207, 407 über einem Genauigkeitsschwellenwert liegt. Das Verwenden des Suchbereichs kann deaktiviert werden, und das Verwenden einer Standardsuchtiefe kann auf der Grundlage eines Feststellens aktiviert werden, dass der Genauigkeitszähler 207, 407 unter dem Genauigkeitsschwellenwert liegt.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Erläuterung dargestellt, es ist jedoch nicht vorgesehen, dass sie für die offenbarten Ausführungsformen erschöpfend oder einschränkend sein sollen. Viele Modifikationen und Variationen werden einem Fachmann offensichtlich erscheinen, ohne vom Umfang und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserungen gegenüber am Markt vorhandenen Technologien am besten zu erklären oder um andere Fachleute zu befähigen, die hier offenbarten Ausführungsformen zu verstehen.

Claims (20)

  1. Durch einen Computer implementiertes Verfahren, das aufweist: Ermitteln einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, durch einen datenstromgestützten Prädiktor mit Indexbeschleuniger (Indexdirektaufruf) eines Prozessors; Durchsuchen eines Verzweigungsprädiktors der ersten Ebene eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors des Prozessors nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist; und Auslösen eines Durchsuchens des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors auf Grundlage der Tatsache, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  2. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei der Verzweigungsprädiktor der ersten Ebene einen Verzweigungszielpuffer und eine Verzweigungszielpuffer-Vorladetabelle aufweist.
  3. Durch einen Computer implementiertes Verfahren nach Anspruch 2, das ferner Übertragen einer Vielzahl von Verzweigungen von dem Verzweigungsprädiktor der zweiten Ebene in den Verzweigungszielpuffer oder die Verzweigungszielpuffer-Vorladetabelle auf der Grundlage des Durchsuchens des Verzweigungsprädiktors der zweiten Ebene aufweist.
  4. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei das Auslösen des Durchsuchens des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors vor Erreichen einer Standardsuchtiefe durchgeführt wird.
  5. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei das Durchsuchen des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors über eine Standardsuchtiefe hinaus erweitert wird.
  6. Durch einen Computer implementiertes Verfahren nach Anspruch 1, das ferner aufweist: Aktualisieren eines Genauigkeitszählers auf der Grundlage einer Häufigkeit, wie oft der datenstromgestützte Prädiktor mit Indexbeschleuniger die vorhergesagte Datenstromlänge korrekt voraussagt und die korrekte Vorhersage verwendet wird.
  7. Durch einen Computer implementiertes Verfahren nach Anspruch 6, das ferner aufweist: Ermöglichen des Verwendens des Suchbereichs auf der Grundlage eines Feststellens, dass der Genauigkeitszähler über einem Genauigkeitsschwellenwert liegt; und Sperren des Verwendens des Suchbereichs und Ermöglichen des Verwendens einer Standardsuchtiefe auf der Grundlage eines Feststellens, dass der Genauigkeitszähler unter dem Genauigkeitsschwellenwert liegt.
  8. System, das aufweist: einen datenstromgestützten Prädiktor mit Indexbeschleuniger eines Prozessors, der funktionsmäßig in der Lage ist, eine vorhergesagte Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, zu ermitteln; und einen hierarchischen, asynchronen Lookahead-Verzweigungsprädiktor des Prozessors, der einen Verzweigungsprädiktor der ersten Ebene und einen Verzweigungsprädiktor der zweiten Ebene aufweist, wobei der hierarchische, asynchrone Lookahead-Verzweigungsprädiktor funktionsmäßig in der Lage ist zum: Durchsuchen des Verzweigungsprädiktors der ersten Ebene nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist; und Auslösen eines Durchsuchens des Verzweigungsprädiktors der zweiten Ebene auf Grund der Tatsache, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  9. System nach Anspruch 8, wobei der Verzweigungsprädiktor der ersten Ebene einen Verzweigungszielpuffer und eine Verzweigungszielpuffer-Vorladetabelle aufweist.
  10. System nach Anspruch 9, wobei der hierarchische, asynchrone Lookahead-Verzweigungsprädiktor funktionsmäßig in der Lage ist, eine Vielzahl von Verzweigungen von dem Verzweigungsprädiktor der zweiten Ebene in den Verzweigungszielpuffer oder die Verzweigungszielpuffer-Vorladetabelle auf der Grundlage der Suche des Verzweigungsprädiktors der zweiten Ebene zu übertragen.
  11. System nach Anspruch 8, wobei das Durchsuchen des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors ausgelöst wird, bevor eine Standardsuchtiefe erreicht wird.
  12. System nach Anspruch 8, wobei das Durchsuchen des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors über eine Standardsuchtiefe hinaus erweitert wird.
  13. System nach Anspruch 8, wobei ein Genauigkeitszähler auf der Grundlage einer Häufigkeit aktualisiert wird, wie oft der datenstromgestützte Prädiktor mit Indexbeschleuniger die vorhergesagte Datenstromlänge korrekt voraussagt und die richtige Vorhersage verwendet wird.
  14. System nach Anspruch 13, wobei das Verwenden des Suchbereichs auf der Grundlage eines Feststellens ermöglicht wird, dass der Genauigkeitszähler über einem Genauigkeitsschwellenwert liegt, und das Verwenden des Suchbereichs gesperrt wird und das Verwenden einer Standardsuchtiefe auf der Grundlage eines Feststellens ermöglicht wird, dass der Genauigkeitszähler unter dem Genauigkeitsschwellenwert liegt.
  15. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darin verkörperten Programmbefehlen aufweist, wobei das durch einen Computer lesbare Speichermedium per se kein flüchtiges Signal ist, wobei die Programmbefehle durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das aufweist: Ermitteln einer vorhergesagten Datenstromlänge zwischen einer Befehlsadresse und einer gewählten Verzweigung, die einen Befehlsdatenstrom beendet, durch einen datenstromgestützten Verzweigungsprädiktor mit Indexbeschleuniger des Prozessors; Durchsuchen eines Verzweigungsprädiktors der ersten Ebene eines hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors des Prozessors nach einer Verzweigungsvorhersage in einem oder mehreren Einträgen in einem Suchbereich, der durch die Befehlsadresse und die vorhergesagte Datenstromlänge begrenzt ist; und Auslösen eines Durchsuchens eines Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors auf Grund der Tatsache, dass im Suchbereich keine Verzweigungsvorhersage gefunden wurde.
  16. Computerprogrammprodukt nach Anspruch 15, wobei der Verzweigungsprädiktor der ersten Ebene einen Verzweigungszielpuffer und eine Verzweigungszielpuffer-Vorladetabelle aufweist.
  17. Computerprogrammprodukt nach Anspruch 16, wobei die Programmanweisungen ferner bewirken, dass der Prozessor ausführt: Übertragen einer Vielzahl von Verzweigungen von dem Verzweigungsprädiktor der zweiten Ebene in den Verzweigungszielpuffer oder die Verzweigungszielpuffer-Vorladetabelle auf der Grundlage des Durchsuchens des Verzweigungsprädiktors der zweiten Ebene.
  18. Computerprogrammprodukt nach Anspruch 15, wobei das Auslösen des Durchsuchens des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors vor dem Erreichen einer Standardsuchtiefe durchgeführt wird.
  19. Computerprogrammprodukt nach Anspruch 15, wobei das Durchsuchen des Verzweigungsprädiktors der zweiten Ebene des hierarchischen, asynchronen Lookahead-Verzweigungsprädiktors über eine Standardsuchtiefe hinaus erweitert wird.
  20. Computerprogrammprodukt nach Anspruch 15, wobei die Programmanweisungen ferner veranlassen, dass der Prozessor ausführt: Aktualisieren eines Genauigkeitszählers auf der Grundlage der Häufigkeit, wie oft der datenstromgestützte Verzweigungsprädiktor mit Indexbeschleuniger die vorhergesagte Datenstromlänge korrekt voraussagt und die korrekte Vorhersage verwendet wird; Ermöglichen des Verwendens des Suchbereichs auf der Grundlage deines Feststellens, dass der Genauigkeitszähler über einem Genauigkeitsschwellenwert liegt; und Sperren des Verwendens des Suchbereichs und Ermöglichen des Verwendens einer Standardsuchtiefe auf der Grundlage eines Feststellens, dass der Genauigkeitszähler unter dem Genauigkeitsschwellenwert liegt.
DE112017005014.6T 2016-12-13 2017-12-01 Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge Active DE112017005014B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/376,847 2016-12-13
US15/376,847 US10394559B2 (en) 2016-12-13 2016-12-13 Branch predictor search qualification using stream length prediction
PCT/EP2017/081131 WO2018108574A1 (en) 2016-12-13 2017-12-01 Branch predictor search qualification using stream length prediction

Publications (2)

Publication Number Publication Date
DE112017005014T5 true DE112017005014T5 (de) 2019-07-11
DE112017005014B4 DE112017005014B4 (de) 2023-11-23

Family

ID=60569917

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017005014.6T Active DE112017005014B4 (de) 2016-12-13 2017-12-01 Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge

Country Status (7)

Country Link
US (1) US10394559B2 (de)
JP (1) JP7034159B2 (de)
CN (1) CN109791494B (de)
DE (1) DE112017005014B4 (de)
GB (1) GB2571899B (de)
TW (1) TWI651648B (de)
WO (1) WO2018108574A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550588B2 (en) 2018-08-22 2023-01-10 Advanced Micro Devices, Inc. Branch target filtering based on memory region access count
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape
US11782919B2 (en) 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table
US11928471B2 (en) 2021-08-19 2024-03-12 International Business Machines Corporation Metadata predictor
US11556474B1 (en) 2021-08-19 2023-01-17 International Business Machines Corporation Integrated semi-inclusive hierarchical metadata predictor

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5574871A (en) 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US6076141A (en) * 1996-01-24 2000-06-13 Sun Microsytems, Inc. Look-up switch accelerator and method of operating same
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6185675B1 (en) * 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6742111B2 (en) * 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
US6263427B1 (en) 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US7082520B2 (en) 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US7873818B2 (en) 2008-02-22 2011-01-18 International Business Machines Corporation System and method for search area confined branch prediction
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
US8543796B2 (en) * 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
US9235419B2 (en) 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9348599B2 (en) * 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
EP3060983B1 (de) 2013-10-25 2020-01-08 Advanced Micro Devices, Inc. Bandbreitenerhöhung in einer verzweigungs-vorhersageeinheit und einem level-1-befehlscachespeicher
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation

Also Published As

Publication number Publication date
TWI651648B (zh) 2019-02-21
JP2020501242A (ja) 2020-01-16
TW201823969A (zh) 2018-07-01
JP7034159B2 (ja) 2022-03-11
CN109791494B (zh) 2023-08-11
WO2018108574A1 (en) 2018-06-21
US10394559B2 (en) 2019-08-27
CN109791494A (zh) 2019-05-21
GB2571899B (en) 2021-07-21
GB201909974D0 (en) 2019-08-28
GB2571899A (en) 2019-09-11
US20180165094A1 (en) 2018-06-14
DE112017005014B4 (de) 2023-11-23

Similar Documents

Publication Publication Date Title
DE112017005014B4 (de) Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE60003235T2 (de) Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE112018000202T5 (de) Umgehen eines Speicherzugriffs für eine Ladeanweisung unter Verwendung einer Anweisungsadresszuordnung
CN106339324B (zh) 一种选择垃圾回收块的方法及装置
DE102015100705A1 (de) Vorhersage von werten stapelgespeicherter variablen
DE112012003496T5 (de) Schnelles Bereitstellen von virtuellen Maschinen auf der Grundlage von mehrdimensionalen Benutzeranforderungsmustern in einer Cloud
DE112010003610T5 (de) Vorabfüllen eines Cachespeichers bei Threadmigration
DE102015101414A1 (de) Verbesserter Rücksprungstapelpuffer
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
EP3173952A1 (de) System und verfahren zum entfernen von hash-tabelleneinträgen
DE102013200508A1 (de) Ersetzungsreihenfolge von Cache-Sets auf der Grundlage von zeitbezogener Set-Aufzeichnung
DE112017005063T5 (de) Verwalten eines Speichers mit niedrigstem Kohärenzpunkt (LPC) mithilfe eines Dienstschichtadapters
DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung
DE112016002275T5 (de) Koordinierte benutzerwortauswahl zum übersetzen und erhalten von kontextinformtionen für das ausgewählte wort
DE112020004295T5 (de) Plausibilitätsgesteuerte defekterkennung in ergebnislogik und zustandscodes für schnellen genauen teilzeichenfolgenabgleich
DE102020132140A1 (de) Pipelines für sichere Multithread-Ausführung
DE112017007361T5 (de) Unterstützen von interaktivem textmining-prozess mit dialog in natürlicher sprache
DE102021123290A1 (de) Schnelles verfolgen von cache zum unterstützen von aggressivem vorablesen
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE19824289C2 (de) Pipelineverarbeitungsmaschine
DE102013202060A1 (de) Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence