DE112013005882B4 - Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage - Google Patents

Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage Download PDF

Info

Publication number
DE112013005882B4
DE112013005882B4 DE112013005882.0T DE112013005882T DE112013005882B4 DE 112013005882 B4 DE112013005882 B4 DE 112013005882B4 DE 112013005882 T DE112013005882 T DE 112013005882T DE 112013005882 B4 DE112013005882 B4 DE 112013005882B4
Authority
DE
Germany
Prior art keywords
branch
thread
branch instruction
path
reliability
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.)
Active
Application number
DE112013005882.0T
Other languages
English (en)
Other versions
DE112013005882T5 (de
Inventor
Brian Robert Prasky
Chung-Lung Kevin Shum
Christopher Anthony Krygowski
Fadi Yusuf Busaba
Steven R. Carlough
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 DE112013005882T5 publication Critical patent/DE112013005882T5/de
Application granted granted Critical
Publication of DE112013005882B4 publication Critical patent/DE112013005882B4/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

Computersystem für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage, wobei das System aufweist:- einen Prozessor, wobei der Prozessor einen Prozessor für simultanes Multithreading (SMT) aufweist und er ein Verfahren durchführt, das aufweist:- Ermitteln einer Verzweigungsvorhersage für einen ersten Verzweigungsbefehl, der während einer Ausführung eines ersten Threads auftritt, wobei die Verzweigungsvorhersage einen Primärpfad und einen Gegenpfad für den ersten Verzweigungsbefehl angibt;- Ausführen des Primärpfades durch den ersten Thread;- Ermitteln einer Zuverlässigkeit der Verzweigungsvorhersage;- Vergleichen der Zuverlässigkeit der Verzweigungsvorhersage mit einem Zuverlässigkeitsschwellenwert; und- auf Grundlage dessen, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, Starten eines zweiten Threads, der den Gegenpfad des ersten Verzweigungsbefehls ausführt, wobei der zweite Thread parallel zu dem ersten Thread ausgeführt wird,- wobei wenn die Gesamtzahl der Threads, die aktuell durch den Prozessor bearbeitet werden, der Höchstzahl der Threads des Prozessors gleich ist, das Verfahren aufweist:o Ermitteln einer Zuverlässigkeit einer Verzweigungsvorhersage, die einem dritten Thread zugehörig ist, der aktuell in dem Prozessor ausgeführt wird, wobei der dritte Thread einem Gegenpfad eines zweiten Verzweigungsbefehls entspricht;o Vergleichen der Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, mit der Zuverlässigkeit, die dem ersten Verzweigungsbefehl zugehörig ist; undo auf Grundlage dessen, dass die Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, geringer als die Zuverlässigkeit ist, die dem ersten Verzweigungsbefehl zugehörig ist, Abbrechen des zweiten Threads und Starten des dritten Threads, der den Gegenpfad des zweiten Verzweigungsbefehls ausführt.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich allgemein auf eine Verzweigungsvorhersage in einem Computerprozessor und im Besonderen auf eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage.
  • Ein Prozessor in einem Computersystem kann einen Befehl durch Ausführen des Befehls in einer Reihe kleiner Schritte oder Operationen verarbeiten. Um die Anzahl der Befehle zu erhöhen, die durch den Prozessor verarbeitet werden, und daher die Geschwindigkeit des Prozessors zu erhöhen, kann der Prozessor in einigen Fällen nach dem Pipeline-System arbeiten. Pipelining bezieht sich auf ein Bereitstellen getrennter Stufen in einem Prozessor, wobei jede Stufe einen oder mehrere kleine Schritte durchführt, die zum Ausführen eines Befehls erforderlich sind. Als Beispiel für ein Ausführen von Befehlen in einer Pipeline kann eine erste Pipeline-Stufe, wenn ein erster Befehl empfangen wird, einen kleinen Teil des Befehls verarbeiten. Wenn die erste Pipeline-Stufe das Verarbeiten des kleinen Teils des Befehls beendet hat, kann eine zweite Pipeline-Stufe beginnen, einen weiteren kleinen Teil des ersten Befehls zu verarbeiten, während die erste Pipeline-Stufe einen kleinen Teil eines zweiten Befehls empfängt und zu verarbeiten beginnt. Auf diese Weise kann der Prozessor zwei oder mehr Befehle gleichzeitig parallel verarbeiten.
  • Ein Computerprogramm kann Verzweigungsbefehle beinhalten, die bewirken, dass das Computerprogramm von einem Befehl zu einem Zielbefehl verzweigt (wodurch ggf. sequentielle Befehle übersprungen werden), wenn eine Bedingung erfüllt wird, die durch den Verzweigungsbefehl definiert wird. Wenn die Bedingung nicht erfüllt ist, kann der nächste Befehl sequenziell nach dem Verzweigungsbefehl ausgeführt werden, ohne zu dem Zielbefehl zu verzweigen. Üblicherweise ist das Ergebnis der Bedingung, die getestet wird, nicht bekannt, bis der Verzweigungsbefehl ausgeführt wird und seine Bedingung getestet wird. Folglich ist der korrekte nächste Befehl, der nach dem Verzweigungsbefehl auszuführen ist, möglicherweise nicht bekannt, bis die Bedingung getestet wird.
  • Wo eine Pipeline zum Ausführen von Befehlen eingesetzt wird, ist das Ergebnis des Verzweigungsbefehls möglicherweise bis zu einer Verzweigungsauflösung, nachdem der Verzweigungsbefehl mehrere Stufen der Pipeline durchlaufen hat, nicht bekannt. Folglich ist der korrekte nächste Befehl, der nach dem Verzweigungsbefehl auszuführen ist, möglicherweise nicht bekannt, bis der Verzweigungsbefehl die Stufen durchlaufen hat, die erforderlich sind, um das Ergebnis der Bedingung zu ermitteln. In einigen Fällen kann die Ausführung von Befehlen in der Pipeline bis zu einer Verzweigungsauflösung angehalten (stalled) werden (z.B. können die Stufen der Pipeline, die dem Verzweigungsbefehl vorangehen, nicht zum Ausführen von Befehlen verwendet werden). Wenn die Pipeline angehalten ist, wird die Pipeline nicht zum Ausführen so vieler Befehle parallel verwendet, wodurch die Leistungsfähigkeit des Prozessors insgesamt abnimmt.
  • In anderen Fällen kann eine Verzweigungsvorhersage dazu verwendet werden, das Ergebnis von Verzweigungsbefehlen vorherzusagen, um die Leistungsfähigkeit des Prozessors zu erhöhen. Wenn zum Beispiel ein Verzweigungsbefehl auftritt, kann der Prozessor vorhersagen, welcher Befehl oder Pfad ausgeführt wird, nachdem das Ergebnis der Bedingung bekannt ist. Statt die Pipeline anzuhalten, wenn der Verzweigungsbefehl ausgegeben wird, kann der Prozessor anschließend fortfahren, beginnend mit dem vorhergesagten nächsten Befehl Befehle auszugeben. Der vorhergesagte Pfad eines Verzweigungsbefehls kann als Primärpfad bezeichnet werden, und der nicht vorhergesagte Pfad kann als Gegenpfad bezeichnet werden.
  • In einigen Fällen kann die Verzweigungsvorhersage jedoch falsch sein (z.B. kann der Prozessor ein Ergebnis des Verzweigungsbefehls vorhersagen, jedoch bei der Verzweigungsauflösung das entgegengesetzte Ergebnis eintreten). Wenn das Ergebnis des Verzweigungsbefehls falsch vorhergesagt wird, können die vorhergesagten Befehle, die auf Grundlage der Verzweigungsvorhersage an die Pipeline ausgegeben wurden, aus der Pipeline entfernt werden, und die Auswirkungen, für die ein Prüfpunkt zu setzen war, dieser Befehle werden rückgängig gemacht. Dies wird als Löschen der Pipeline bezeichnet. Nachdem die Pipeline gelöscht worden ist, kann der korrekte nächste Befehl entsprechend dem Gegenpfad für den Verzweigungsbefehl an die Pipeline ausgegeben werden, und die Ausführung der Befehle kann fortgesetzt werden. Wenn das Ergebnis eines Verzweigungsbefehls falsch vorhergesagt wird und die falsch vorhergesagte Gruppe von Befehlen entsprechend dem Primärpfad aus der Pipeline gelöscht wird, wodurch die zuvor von der Pipeline geleistete Arbeit rückgängig gemacht wird, kann die Leistungsfähigkeit des Prozessors abnehmen.
  • Im Stand der Technik wird in Silc et al., „Dynamic branch prediction and control speculation“, Int. J. High Performance Systems Architecture (IJHPSA), 1, 2007, ein Überblick gegeben über dynamische Verzweigungsvorhersagen bei superskalaren Prozessoren. Insbesondere wird im dortigen Abschnitt 3.9, „Eager execution“ die Anwendung von kumulativer Konfidenz von Ausführungspfaden für die Auswahl der auszuführenden Threads angesprochen.
  • In Uht, Multipath Execution, 2005, Chapter 6, wird die Problematik bei der Entscheidung für oder gegen eine spekulative Verzweigung beschrieben. Insbesondere wird in Abschnitt 6.3.1.3 beschrieben, dass theorie-basierte Maschinen zwar sich dynamisch verändernde Verzweigungsbäume haben, aber teuer und aufwendig sind. Hingegen (Abschnitt 6.4.2.4) zeigt ein adaptiver Verzweigungsbaum günstige Eigenschaften.
  • Ausgehend von diesem Stand der Technik ist es Aufgabe der Erfindung eine flexiblere Verzweigung bei spekulativen Ausführungen zu gewährleisten und gleichzeitig die vorhandenen Ressourcen optimal zu nutzen.
    Diese Aufgabe wird gelöst durch das Computersystem für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage nach Anspruch 1, das computerimplementierte Verfahren für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage nach Anspruch 11 und das Computerprogrammprodukt zum Implementieren einer Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage nach Anspruch 14. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
  • Ein Aspekt der Erfindung beinhaltet ein Ermitteln einer Verzweigungsvorhersage für einen ersten Verzweigungsbefehl, der während einer Ausführung eines ersten Threads auftritt, wobei die Verzweigungsvorhersage einen Primärpfad und einen Gegenpfad für den ersten Verzweigungsbefehl angibt. Ein weiterer Aspekt beinhaltet ein Ausführen des Primärpfades durch den ersten Thread. Ein weiterer Aspekt beinhaltet ein Ermitteln einer Zuverlässigkeit der Verzweigungsvorhersage und ein Vergleichen der Zuverlässigkeit der Verzweigungsvorhersage mit einem Zuverlässigkeitsschwellenwert. Ein noch weiterer Aspekt beinhaltet auf Grundlage dessen, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, ein Starten eines zweiten Threads, der den Gegenpfad des ersten Verzweigungsbefehls ausführt, wobei der zweite Thread parallel zu dem ersten Thread ausgeführt wird.
  • Figurenliste
  • Merkmale und Vorteile der Erfindung werden im folgenden in Verbindung mit den beigefügten Zeichnungen beschrieben, in denen:
    • 1 ein Computersystem für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage gemäß einer Ausführungsform der Erfindung darstellt;
    • 2 eine Pipeline gemäß einer Ausführungsform der Erfindung darstellt;
    • 3 einen Verzweigungszielpuffer/eine Verzweigungsverlaufstabelle gemäß einer Ausführungsform der Erfindung darstellt;
    • 4 einen Eintrag für einen Verzweigungszielpuffer/eine
    • Verzweigungsverlaufstabelle gemäß einer Ausführungsform der Erfindung darstellt;
    • 5A bis B einen Prozessablauf für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage gemäß einer Ausführungsform der Erfindung darstellt;
    • 6 eine Ausführung einer Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage gemäß einer Ausführungsform der Erfindung darstellt; und
    • 7 ein Computerprogrammprodukt gemäß einer Ausführungsform der Erfindung veranschau licht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Verzweigungsbefehl kann mit einer hohen Zuverlässigkeit oder einer geringen Zuverlässigkeit vorhergesagt werden. Der Grad der Zuverlässigkeit kann auf Grundlage eines Zuverlässigkeitsschwellenwertes ermittelt werden, der in dem Prozessor definiert ist. Bei einem Verzweigungsbefehl, der mit geringer Zuverlässigkeit vorhergesagt wird, kann sowohl der vorhergesagte Pfad (d.h. der Primärpfad) als auch der nicht vorhergesagte Pfad (d.h. der Gegenpfad) parallel als zwei getrennte Threads entsprechend dem Programm ausgeführt werden, das den Verzweigungsbefehl beinhaltet. Bei der Auflösung der Bedingung des Verzweigungsbefehls kann, wenn der korrekte Pfad ermittelt wird, der Thread, der dem korrekten Pfad entspricht, als Haupt-Thread für das Programm weiter ausgeführt werden, wohingegen der Thread, der dem falschen Pfad entspricht, abgebrochen werden kann. Wenn der Gegenpfad-Thread als korrekter Pfad ermittelt wird, ersetzt der Gegenpfad-Thread den abgebrochenen Primärpfad-Thread als Haupt-Thread für das Programm. Zähler, die korrekte und falsche Verzweigungsvorhersagen verfolgen, können für jeden Verzweigungsbefehl so in einem Verzweigungszielpuffer/einer Verzweigungsverlaufstabelle (branch target buffer/branch history table, BTB/BHT) geführt werden, dass eine relativ genaue Ermittlung der Vorhersagezuverlässigkeit ermöglicht wird.
  • Der Prozessor kann einen Prozessor für simultanes Multithreading (SMT) aufweisen, der in der Lage ist, mehrere Threads parallel auszuführen. Ein SMT-Prozessor kann eine festgelegte Höchstzahl von Threads aufweisen, die gleichzeitig durch den SMT-Prozessor bearbeitet werden können. Der Prozessor kann darüber hinaus Transaktionsspeicher-Ressourcen aufweisen. Ein Transaktionsspeicher ermöglicht, einen Satz von Befehlen als Transaktion zu definieren, und die Ergebnisse der Ausführung der Transaktion können in dem Transaktionsspeicher statt in dem Cachespeicher des Prozessors gespeichert werden. Wenn eine Transaktion abgebrochen wird, kann der Prozessor den Satz von Befehlen, der die Transaktion aufweist, zum Start der Transaktion zurückführen, indem er die Ergebnisse der Transaktion ungültig macht und sie in dem Transaktionsspeicher belässt. Wenn die Transaktion erfolgreich abgeschlossen wird, können die Ergebnisse der Transaktion festgeschrieben werden, d.h. von dem Transaktionsspeicher in den Cachespeicher übertragen werden. Ein Thread, der einem Gegenpfad eines Verzweigungsbefehls entspricht, kann als Transaktion mithilfe der Transaktionsspeicher-Ressourcen ausgeführt werden. Wenn bei der Verzweigungsauflösung ermittelt wird, dass es sich bei dem Thread, der dem Gegenpfad entspricht, um den falschen Pfad handelt, können daher die Ergebnisse des Gegenpfad-Threads zurückgeführt werden, wenn der Gegenpfad-Thread abgebrochen wird. Wenn demgegenüber bei der Verzweigungsauflösung ermittelt wird, dass es sich bei dem Gegenpfad-Thread um den korrekten Pfad handelt, wird die Transaktion beendet, und die Operationen, die durch den Gegenpfad-Thread durchgeführt worden sind, können von dem Transaktionsspeicher in den Cachespeicher festgeschrieben werden.
  • 1 stellt eine veranschaulichende Ausführungsform eines Datenverarbeitungssystems 100 für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage dar. Das Datenverarbeitungssystem 100 beinhaltet einen Prozessor 101 mit einer Pipeline 102. Der Prozessor 101 steht mit einem Hauptspeicher 108 des Datenverarbeitungssystems 100 in Verbindung, und Befehle, die während einer Ausführung von Computerprogrammen wie zum Beispiel einer Anwendung 109 ausgegeben werden, werden durch die Pipeline 102 verarbeitet. Bei dem Prozessor 101 handelt es sich um einen SMT-Prozessor, der in der Lage ist, mithilfe von SMT-Ressourcen 103 mehrere Threads gleichzeitig parallel auszuführen. Der Prozessor 101 beinhaltet darüber hinaus einen Transaktionsspeicher 104. Für Sätze von Befehlen, die als Transaktion definiert sind, können die Ergebnisse sämtlicher durch die Transaktion durchgeführter Operationen in dem Transaktionsspeicher 104 gespeichert werden, bis die Transaktion festgeschrieben wird, wobei die Ergebnisse der Transaktion an diesem Punkt von dem Transaktionsspeicher 104 in den Cachespeicher 107 übertragen werden können. Der Cachespeicher 107 kann eine beliebige geeignete Anzahl und beliebige geeignete Typen von Caches aufweisen, darunter einen Befehls-Cache und einen Daten-Cache, ohne auf diese beschränkt zu sein. Eine Verzweigungsvorhersage wird durch eine Verzweigungsvorhersagelogik 105 bearbeitet. Der/Die BTB/BHT 106 enthält Einträge, die Verzweigungsbefehlsadressen entsprechen, die für eine Verzweigungsvorhersage verwendet werden, und wird im Folgenden im Hinblick auf 3 und 4 ausführlicher erörtert. Die Verzweigungsvorhersagelogik 105 ermittelt außerdem auf Grundlage der Zuverlässigkeit einer Verzweigungsvorhersage, die auf Grundlage der Daten in dem/der BTB/BHT 106 gemacht wurde, ob ein Thread für einen Gegenpfad eines Verzweigungsbefehls zu starten ist. Diese Ermittlung kann auf Grundlage eines Zuverlässigkeitsschwellenwertes, der in der Verzweigungsvorhersagelogik 105 vordefiniert ist, und einer Anzahl von Threads durchgeführt werden, die aktuell durch die SMT-Ressourcen 103 bearbeitet werden. Der Zuverlässigkeitsschwellenwert, der durch die Verzweigungsvorhersagelogik 105 dazu verwendet wird zu ermitteln, ob ein Gegenpfad-Thread zu starten ist, kann bei einigen Ausführungsformen einen variablen Zuverlässigkeitsschwellenwert aufweisen; bei solchen Ausführungsformen kann der Zuverlässigkeitsschwellenwert auf Grundlage der Anzahl von parallelen Threads variiert werden, die aktuell durch die SMT-Ressourcen 103 bearbeitet werden. Wenn zum Beispiel aktuell nur der Primär-Thread ausgeführt wird, kann der Zuverlässigkeitsschwellenwert relativ niedrig sein, und wenn eine Ausführung zusätzlicher Gegen-Threads gestartet wird, kann der Zuverlässigkeitsschwellenwert erhöht werden. Darüber hinaus kann bei einigen Ausführungsformen ein Thread auf Grundlage der vorhergesagten Zuverlässigkeit, die dem Thread zugehörig ist, und dessen, ob es sich bei dem Thread um einen Primär- oder einen Gegen-Thread handelt, während der Ausführung Zugriff mit höherer Priorität auf die Ressourcen des Prozessors 101 haben. Die Verzweigungsvorhersagelogik 105 kann darüber hinaus ein Abbrechen von Threads initiieren, die bei der Verzweigungsauflösung als falsch ermittelt werden.
  • 2 stellt eine veranschaulichende Ausführungsform einer Pipeline 200 dar, die eine Mehrzahl von Stufen 201 bis 208 aufweist, die die Pipeline 102 von 1 aufweisen kann. Befehle durchlaufen die Pipeline 200 von einer Abrufstufe 201 bis zu einer Rückschreibstufe 208. Während Abruf-, Decodierungs- und Zuteilungsstufen 201 bis 203 werden Befehle der Reihe nach verarbeitet. Während einer Ausgabe-/Ausführungsstufe 204 können Befehle außerhalb der Reihenfolge so verarbeitet werden, wie die zum Ausführen der Befehle erforderlichen Daten verfügbar werden. Anschließend werden die Befehle in einer Neuordnungsstufe 205 neu geordnet und während Fertigstellungs-, Prüfpunkt- und Rückschreibstufen 206 bis 208 der Reihe nach ausgeführt. Eine Verzweigungsvorhersage eines Verzweigungsbefehls kann bei verschiedenen Ausführungsformen am vorderen Ende der Pipeline, zum Beispiel während der Abrufstufe 201, der Decodierungsstufe 202 oder früher durchgeführt werden, und eine Verzweigungsauflösung des Verzweigungsbefehls kann während der Ausgabe-/Ausführungsstufe 204 auftreten. In der Prüfpunktstufe 207 wird ermittelt, ob ein Fehler (z.B. wenn an einem Transistor ein unerwarteter Bit-Flip aufgetreten ist) während einer Ausführung eines Befehls aufgetreten ist. Wenn kein Fehler aufgetreten ist, können die Ergebnisse des Befehls in der Rückschreibstufe 208 in den Cachespeicher 107 des Prozessors geschrieben werden. 2 wird lediglich zur Veranschaulichung dargestellt; eine Pipeline kann bei verschiedenen Ausführungsformen eine beliebige geeignete Anzahl von Stufen aufweisen.
  • 3 veranschaulicht eine Ausführungsform eines Systems 300, das eine(n) BTB/BHT 302, die den/die BTB/BHT 106 von 1 beinhalten kann, und eine zugehörige Logik beinhaltet. Der/Die in 3 dargestellte BTB/BHT 302 weist eine(n) vollassoziative(n) BTB/BHT auf. Eine Suchadresse, die eine Verzweigungsbefehlsadresse aufweist, wird von der Verzweigungsvorhersagelogik 105 an einem Suchadresseneingang 301 durch den/die BTB/BHT 302 empfangen, und es wird ermittelt, ob jegliche Einträge 303A bis N der an dem Suchadresseneingang 301 empfangenen Suchadresse entsprechen. Wenn ermittelt wird, dass ein Eintrag, zum Beispiel der Eintrag 303A, in dem/der BTB/BHT 302 vorhanden ist, der mit der Suchadresse übereinstimmt, ermittelt eine Trefferlogik 304 eine Zieladresse und Vorhersagedaten aus dem Eintrag 303A und gibt diese an dem Zieladressen- und Vorhersageausgang 305 an die Verzweigungsvorhersagelogik 105 aus. Die Vorhersagedaten können eine Verzweigungsrichtungsvorhersage, eine Zieladressenvorhersage und Zuverlässigkeitsdaten aufweisen und werden im Folgenden im Hinblick auf 4 ausführlicher erörtert. 3 wird lediglich zur Veranschaulichung dargestellt; ein(e) BTB/BHT kann eine beliebige geeignete Anzahl von Einträgen beinhalten, und bei verschiedenen Ausführungsformen können die Einträge in zwei oder mehr Kongruenzklassen eingeteilt werden.
  • 4 veranschaulicht eine Ausführungsform eines BTB/BHT-Eintrags 400, der jeden der BTB/BHT-Einträge 303A bis N, wie in 3 dargestellt, aufweisen kann. Der BTB/BHT-Eintrag 400 beinhaltet eine Kennung (tag) 401, die einer Befehlsadresse eines Verzweigungsbefehls entspricht; es wird ein Eintrag der Einträge 303A bis N ermittelt, der mit einer bestimmten Suchadresse übereinstimmt, die an dem Suchadresseneingang 301 empfangen worden ist, wenn die Kennung 401 mit der Suchadresse übereinstimmt. Der BTB/BHT-Eintrag 400 beinhaltet des Weiteren eine Zieladresse 402, die eine Adresse eines Ziel-, d.h. nächsten, Befehls aufweist, der nach dem genommenen Verzweigungsbefehl auszuführen ist, der dem Eintrag 400 entspricht. Der Sättigungsvorhersagezähler 403 gibt an, ob es sich bei dem Befehl, der der Zieladresse 402 entspricht, um den vorhergesagten oder Primärpfad oder um den nicht vorhergesagten oder Gegenpfad handelt. Der Sättigungsvorhersagezähler 403 kann bei einigen Ausführungsformen einen 2-Bit-Sättigungszähler aufweisen; der Sättigungsvorhersagezähler 403 kann einen beliebigen geeigneten Zähler aufweisen, der für eine Verzweigungsvorhersage verwendet werden kann, und er kann in geeigneter Weise inkrementiert und dekrementiert werden.
  • Da die SMT-Ressourcen 103 zur Ausführung von zusätzlichen Threads im Prozessor 101 begrenzt sind, können nur Verzweigungsbefehle mit einer Zuverlässigkeit unterhalb des Zuverlässigkeitsschwellenwertes neue Gegenpfad-Threads starten. Der Korrektheitszähler 404 und der Falschheitszähler 405 verfolgen die Anzahl korrekter und falscher Vorhersagen für den Verzweigungsbefehl, der dem Eintrag 400 entspricht, und sie werden dazu verwendet, die Zuverlässigkeit der Verzweigungsvorhersage zu ermitteln, die durch den Sättigungsvorhersagezähler 403 bereitgestellt wird. Die Zuverlässigkeit der Vorhersage, die durch den Sättigungsvorhersagezähler 403 bereitgestellt wird, kann durch den Wert des Korrektheitszählers 404 dividiert durch die Summe des Wertes des Korrektheitszählers 404 und des Wertes des Falschheitszählers 405 gegeben sein. Wenn bei einer Verzweigungsauflösung des Verzweigungsbefehls, der dem Eintrag 400 entspricht, ermittelt wird, dass die Verzweigungsrichtung durch den Sättigungsvorhersagezähler 403 korrekt vorhergesagt worden ist, wird der Korrektheitszähler 404 inkrementiert; wenn ermittelt wird, dass die Verzweigungsrichtung falsch vorhergesagt worden ist, wird der Falschheitszähler 405 inkrementiert. Das Inkrementieren des Korrektheitszählers 404 oder des Falschheitszählers 405 und das Inkrementieren/Dekrementieren des Sättigungsvorhersagezählers 403 kann zu einem beliebigen geeigneten Zeitpunkt nach einer Verzweigungsauflösung des Verzweigungsbefehls, der dem Eintrag 400 entspricht, durchgeführt werden. Der Korrektheitszähler 404 und der Falschheitszähler 405 können bei einigen Ausführungsformen jeweils 4-Bit-Zähler aufweisen, und wenn einer der Korrektheits-/Falschheitszähler 404/405 gesättigt wird (d.h. einen Zählerhöchstwert erreicht), können beide Zähler 404/405 durch zwei dividiert werden, wodurch die Zählerwerte um ein Bit nach rechts verschoben werden und die Bits beibehalten werden, bei denen es sich um die höchstwertigen Bits handelte.
  • 5A bis B veranschaulichen einen Ablaufplan einer Ausführungsform eines Verfahrens 500 für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage. Das Verfahren 500 wird unter Bezugnahme auf 1 bis 4 erörtert. Zuerst tritt in Block 501 von 5A ein Verzweigungsbefehl während einer Ausführung eines Haupt-Threads auf, der einem Computerprogramm entspricht, und der/die BTB/BHT 106/302 wird nach einem Eintrag durchsucht, der eine Kennung 401 aufweist, die einer Befehlsadresse des Verzweigungsbefehls entspricht. Wenn ein entsprechender Eintrag (zum Beispiel der Eintrag 303A/400) in dem/der BTB/BHT 106/302 ermittelt wird, wird in Block 502 eine Verzweigungsvorhersage für den Verzweigungsbefehl auf Grundlage des Sättigungsvorhersagezählers 403 in dem ermittelten Eintrag 303A/400 gemacht. Der Sättigungsvorhersagezähler 403 gibt an, ob es sich bei dem Befehl, der der Zieladresse 402 entspricht, um den vorhergesagten nächsten (d.h. genommenen) Befehl handelt. Als Nächstes wird in Block 503 eine Zuverlässigkeit für die Verzweigungsvorhersage, die in Block 502 gemacht wurde, auf Grundlage des Korrektheitszählers 404 und des Falschheitszählers 405 durch die Verzweigungsvorhersagelogik 105 ermittelt. Die Zuverlässigkeit kann dem Wert des Korrektheitszählers 404 dividiert durch die Summe des Wertes des Korrektheitszählers 404 und des Wertes des Falschheitszählers 405 gleich sein. Als Nächstes geht der Ablauf zu Block 504 über, in dem die Zuverlässigkeit, die in Block 503 ermittelt worden ist, durch die Verzweigungsvorhersagelogik 105 mit einem Zuverlässigkeitsschwellenwert verglichen wird. Der Zuverlässigkeitsschwellenwert kann bei verschiedenen Ausführungsformen einen beliebigen geeigneten Wert aufweisen und kann bei einigen Ausführungsformen einen variablen Zuverlässigkeitsschwellenwert aufweisen. Bei solchen Ausführungsformen kann der Zuverlässigkeitsschwellenwert auf Grundlage der Anzahl von parallelen Threads, die aktuell durch die SMT-Ressourcen 103 bearbeitet werden, variiert werden.
  • Wenn in Block 504 ermittelt wird, dass die ermittelte Zuverlässigkeit höher als der Zuverlässigkeitsschwellenwert ist, geht der Ablauf zu Block 505 über, in dem der Haupt-Thread die Ausführung des Computerprogramms auf dem Primärpfad fortsetzt, wie durch die in Block 502 gemachte Vorhersage angegeben. Der Primärpfad-Thread kann entweder einem nächsten Befehl, der auf den nicht genommenen Verzweigungsbefehl folgt, der dem Eintrag 303A/400 in dem Computerprogramm entspricht, oder über eine genommene Verzweigung dem Befehl entsprechen, der der Zieladresse 402 entspricht, die in dem Eintrag 303A/400 definiert ist, je nach der Verzweigungsvorhersage, die durch den Sättigungsvorhersagezähler 403 in Block 502 gemacht worden ist. Wenn der Primärpfad-Thread, der in Block 505 gestartet worden ist, in Block 506 eine Verzweigungsauflösung erreicht, wird ermittelt, ob die in Block 502 gemachte Vorhersage korrekt war, und die Zähler in dem BTB/BHT-Eintrag 303A/400, der dem Verzweigungsbefehl entspricht, werden auf Grundlage der Verzweigungsauflösung aktualisiert. Wenn die Vorhersage korrekt war, wird der Korrektheitszähler 404 in dem BTB/BHT-Eintrag 303A/400, der dem Verzweigungsbefehl entspricht, inkrementiert. Wenn die Vorhersage falsch war, wird die Pipeline 102 gelöscht, und der Falschheitszähler 405 in dem BTB/BHT-Eintrag 303A/400, der dem Verzweigungsbefehl entspricht, wird inkrementiert. Der Sättigungsvorhersagezähler 403 wird ebenfalls so aktualisiert, dass er die korrekte oder falsche Verzweigungsvorhersage widerspiegelt.
  • Wenn jedoch in Block 504 ermittelt wird, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, geht der Ablauf von Block 504 zu Block 507 über, in dem der Haupt-Thread die Ausführung entsprechend dem Primärpfad fortsetzt, und durch die Verzweigungsvorhersagelogik 105 wird ein neuer, paralleler Thread für den nicht vorhergesagten (d.h. Gegen-) Pfad gestartet. Der Gegenpfad-Thread kann abhängig von der Vorhersage, die in Block 502 durch den Sättigungsvorhersagezähler 403 gemacht worden ist, entweder einem nächsten sequentiellen Befehl, der auf den Verzweigungsbefehl folgt, der dem Eintrag 303A/400 in dem Computerprogramm entspricht, oder dem Befehl entsprechen, der der Zieladresse 402 entspricht, die in dem Eintrag 303A/400 definiert ist. Der Gegenpfad-Thread wird durch die SMT-Ressourcen 103 bearbeitet. Der Satz von Befehlen, die dem Gegenpfad-Thread entsprechen, kann als Transaktion unter Verwendung des Transaktionsspeichers 104 so definiert sein, dass Ergebnisse von Operationen, die durch den Gegenpfad-Thread abgeschlossen werden, in dem Transaktionsspeicher 104 gespeichert werden, bis die Verzweigung abgeschlossen wird.
  • Das Starten des Gegenpfad-Threads in Block 507 kann einer Anzahl von Threads unterworfen sein, die aktuell durch die SMT-Ressourcen 103 in dem Prozessor 101 bearbeitet werden, da die SMT-Ressourcen 103 eine Höchstzahl von Threads aufweisen können, die gleichzeitig bearbeitet werden können. Wenn die Anzahl von Threads, die in dem Prozessor 101 ausgeführt werden, dieser Höchstzahl entspricht, kann der Gegenpfad-Thread bei einigen Ausführungsformen in Block 507 nicht gestartet werden. Bei anderen Ausführungsformen kann die Zuverlässigkeit, die in Block 503 für den Gegenpfad-Thread ermittelt wurde, mit der Zuverlässigkeit eines weiteren, bereits vorhandenen, Gegenpfad-Threads verglichen werden, der aktuell durch die SMT-Ressourcen 103 ausgeführt wird, und wenn der aktuelle Gegenpfad-Thread eine geringere Zuverlässigkeit als der bereits vorhandene Gegenpfad-Thread aufweist, kann der bereits vorhandene Gegenpfad-Thread abgebrochen werden, und an seiner Stelle kann der aktuelle Gegenpfad-Thread gestartet werden. Der Primärpfad-Thread kann bei einigen Ausführungsformen eine höhere Priorität als der Gegenpfad-Thread aufweisen. Bei einigen Ausführungsformen können auch Prioritätsebenen auf Grundlage der Zuverlässigkeit zugewiesen werden, die in Block 503 ermittelt wurde.
  • Von Block 507 des Verfahrens 500 geht der Ablauf zu Block 508 von 5B über, in dem eine Verzweigungsauflösung des Verzweigungsbefehls, der dem BTB/BHT-Eintrag 400/303A entspricht, in der Pipeline 102/200 auftritt und der korrekte Pfad für den Verzweigungsbefehl bekannt ist. Als Nächstes wird in Block 509 auf Grundlage der Verzweigungsauflösung von Block 508 ermittelt, ob die in Block 502 für den Verzweigungsbefehl gemachte Verzweigungsvorhersage korrekt war. Wenn in Block 509 ermittelt wird, dass die Verzweigungsvorhersage korrekt war, geht der Ablauf zu Block 510 über, in dem die Verzweigungsvorhersagelogik 105 bewirkt, dass der Gegenpfad-Thread abgebrochen wird. Ein Abbrechen des Gegenpfad-Threads kann ein Rückgängigmachen der Transaktion, die dem Gegenpfad-Thread entspricht, durch den Transaktionsspeicher 104 aufweisen. Der Primärpfad-Thread setzt die Ausführung des Computerprogramms fort. Abschließend wird in Block 511 der Korrektheitszähler 404 in dem BTB-/BHT-Eintrag 303A/400, der dem Verzweigungsbefehl entspricht, inkrementiert, und der Sättigungsvorhersagezähler 403 wird außerdem so aktualisiert, dass er die korrekte Verzweigungsvorhersage widerspiegelt.
  • Wenn jedoch in Block 508 auf Grundlage der Verzweigungsauflösung von Block 507 ermittelt wird, dass die in Block 502 gemachte Verzweigungsvorhersage für den Verzweigungsbefehl falsch war, geht der Ablauf von Block 509 zu Block 512 über, in dem die Verzweigungsvorhersagelogik 105 bewirkt, dass der Primärpfad-Thread abgebrochen wird. Ein Abbrechen des Primärpfad-Threads kann bei einigen Ausführungsformen ein Löschen jeglicher Befehle, die dem Primärpfad-Thread entsprechen, in der Pipeline 101/200 aufweisen. Als Nächstes wird in Block 513 der Falschheitszähler 405 in dem BTB-/BHT-Eintrag 303A/400, der dem Verzweigungsbefehl entspricht, inkrementiert, und der Sättigungsvorhersagezähler 403 wird außerdem so aktualisiert, dass er die falsche Verzweigungsvorhersage widerspiegelt. Abschließend wird in Block 514 die Transaktion, die dem Gegenpfad-Thread entspricht, beendet und von dem Transaktionsspeicher 104 in den Cachespeicher 107 festgeschrieben, und der Gegenpfad-Thread wird als Haupt-Thread für das Computerprogramm weiter ausgeführt. Die Transaktion kann festgeschrieben werden, nachdem die Verzweigung die Fertigstellungsstufe 206 in der Pipeline 102/200 erreicht, da eine Verzweigungsauflösung außerhalb der Reihenfolge durchgeführt wird und die Fertigstellung der Reihe nach durchgeführt wird. In einigen Situationen ist es möglich, dass für einen weiteren Thread, der einer älteren Verzweigung entspricht, eine falsche Verzweigungsvorhersage gemacht wird und diese jüngere Verzweigung gelöscht wird, nachdem die jüngere Verzweigung die Verzweigungsauflösung erreicht hat, jedoch bevor die jüngere Verzweigung die Fertigstellung erreicht hat.
  • Ein Abbrechen eines Threads, wie es in den Blöcken 510 und 512 des Verfahrens 500 von 5A bis B durchgeführt wird, ermöglicht, dass der Abschnitt der SMT-Ressourcen 103, die für den abgebrochenen Thread bestimmt waren, so in einem freien Pool wiederhergestellt werden, dass sie zum Starten eines Gegenpfad-Threads für eine künftige Verzweigungsvorhersage mit geringer Zuverlässigkeit verwendet werden. Abhängig von der Anzahl von Threads, die durch die SMT-Ressourcen 103 in dem Prozessor 101 unterstützt werden, können zusätzliche Gegenpfad-Threads als Transaktionen unterhalb des Primärpfad-Threads oder des Gegenpfad-Threads gestartet werden. Wenn ein Verzweigungsbefehl mit einer Vorhersagezuverlässigkeit unterhalb des Zuverlässigkeitsschwellenwertes in den Primär- oder Gegenpfad-Threads auftritt, können bis zu der Höchstzahl von Threads, die durch die SMT-Ressourcen 103 unterstützt wird, zusätzliche Gegenpfad-Threads gestartet werden, wie in 6 veranschaulicht.
  • 6 stellt ein Beispiel für eine Ausführung einer Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage dar. Das Beispiel von 6 wird auf einem Prozessor mit SMT-Ressourcen mit einer Thread-Obergrenze von 4 ausgeführt. Wie in 6 dargestellt, tritt eine Verzweigung 601 mit geringer Zuverlässigkeit, die eine Zuverlässigkeit unterhalb des vordefinierten Zuverlässigkeitsschwellenwertes aufweist, während der Ausführung eines Programms durch einen Prozessor auf. Die Ermittlung, dass die Verzweigung 601 eine geringe Zuverlässigkeit aufweist, bewirkt, dass der Gegenpfad-Thread 603 parallel zu dem Primärpfad-Thread 602 gestartet wird. Der Primärpfad-Thread 602 weist den vorhergesagten Pfad für den Verzweigungsbefehl 601 mit geringer Zuverlässigkeit auf, und der Gegenpfad-Thread 603 weist den nicht vorhergesagten Pfad auf. Der Gegenpfad-Thread 603 kann als Transaktion gestartet werden. Bei dem Primärpfad-Thread 602 handelt es sich um den Haupt-Thread für das Programm, das den Verzweigungsbefehl 601 mit geringer Zuverlässigkeit aufweist. Während der Ausführung des Primärpfad-Threads 602 tritt ein Verzweigungsbefehl 604 mit hoher Zuverlässigkeit auf, dessen Zuverlässigkeit höher als der Zuverlässigkeitsschwellenwert ist. Da es sich bei der Verzweigung 604 um einen Verzweigungsbefehl mit hoher Zuverlässigkeit handelt, wird die Ausführung des Primärpfad-Threads 602 als Primärpfad-Thread 605 nach dem Auftreten der Verzweigung 604 mit hoher Zuverlässigkeit fortgesetzt, und es wird kein Gegenpfad-Thread für die Verzweigung 604 mit hoher Zuverlässigkeit gestartet. Als Nächstes tritt während der weiteren Ausführung des Primärpfad-Threads 602 ein weiterer Verzweigungsbefehl 606 mit geringer Zuverlässigkeit auf, der bewirkt, dass ein weiterer Primär-Gegenpfad-Thread 608 parallel zu einem Primär-Primärpfad-Thread 607 gestartet wird. Der Primär-Gegenpfad-Thread 608 kann auch als Transaktion gestartet werden.
  • Bei der Ausführung des Gegenpfad-Threads 603, die parallel zu dem Primärpfad-Thread 602 stattfindet, tritt zuerst ein Verzweigungsbefehl 609 mit hoher Zuverlässigkeit auf; die Ausführung des Gegenpfad-Threads 603 wird als Gegenpfad-Thread 610 nach dem Verzweigungsbefehl mit hoher Zuverlässigkeit 609 fortgesetzt, und es wird kein zusätzlicher Gegenpfad-Thread gestartet. Dann tritt während der Ausführung des Gegenpfad-Threads 610 ein Verzweigungsbefehl 611 mit geringer Zuverlässigkeit auf, der bewirkt, dass ein weiterer Gegen-Gegenpfad-Thread 613 parallel zu einem Gegen-Primärpfad-Thread 612 gestartet wird. Bei dem Gegen-Primärpfad-Thread 612 handelt es sich um einen Primärpfad im Hinblick auf den Gegen-Gegenpfad-Thread 613. Der Gegen-Gegenpfad-Thread 613 kann auch als Transaktion gestartet werden. Der Primär-Primärpfad-Thread 607, der Primär-Gegenpfad-Thread 608, der Gegen-Primärpfad-Thread 612 und der Gegen-Gegenpfad-Thread 613 können sämtlich mithilfe der SMT-Ressourcen in dem Prozessor parallel ausgeführt werden. Das vordere Ende der Pipeline 102/200 einschließlich der Abrufstufe 201, der Decodierungsstufe 202 und der Ausgabestufe 204 kann bei einigen Ausführungsformen für sämtliche der Threads 607 bis 608 und 612 bis 613 gleich sein; bei anderen Ausführungsformen kann beruhend darauf, ob es sich bei einem bestimmten Thread um einen Primär-Thread handelt, und/oder auf einem Zuverlässigkeitswert, der dem Thread zugehörig ist, einigen Threads der Threads 607 bis 608 und 612 bis 613 Zugriff mit höherer Priorität zu den Ressourcen der Pipeline 102/200 gewährt werden. Beispielsweise kann ein Primär-Thread mit einer relativ hohen Zuverlässigkeit eine entsprechende, höhere Priorität aufweisen.
  • Da die SMT-Ressourcen in dem Prozessor in dem Beispiel von 6 eine Thread-Obergrenze von 4 aufweisen, können keine zusätzlichen Threads gestartet werden, bis einer dieser 4 Threads abgebrochen wird. Bei der Verzweigungsauflösung des Verzweigungsbefehls 606 mit geringer Zuverlässigkeit wird entweder der Primär-Primärpfad-Thread 607 oder der Primär-Gegenpfad-Thread 608 abgebrochen; und bei der Verzweigungsauflösung des Verzweigungsbefehls 611 mit geringer Zuverlässigkeit wird entweder der Gegen-Primärpfad-Thread 612 oder der Gegen-Gegenpfad-Thread 613 abgebrochen. Bei der Verzweigungsauflösung des Verzweigungsbefehls 601 mit geringer Zuverlässigkeit werden entweder der Primär-Primärpfad-Thread 607 und der Primär-Gegenpfad-Thread 608 oder der Gegen-Primärpfad-Thread 612 und der Gegen-Gegenpfad-Thread 613 abgebrochen.
  • Wenn bei der Ausführung eines des Primär-Primärpfad-Threads 607, des Primär-Gegenpfad-Threads 608, des Gegen-Primärpfad-Threads 612 und des Gegen-Gegenpfad-Threads 613 ein zusätzlicher Verzweigungsbefehl mit geringer Zuverlässigkeit auftritt, kann bei einigen Ausführungsformen die Zuverlässigkeit der Vorhersage für den zusätzlichen Verzweigungsbefehl mit geringer Zuverlässigkeit mit der Zuverlässigkeit der Verzweigungsbefehle 606 und 611 mit geringer Zuverlässigkeit verglichen werden, und wenn der zusätzliche Verzweigungsbefehl mit geringer Zuverlässigkeit eine geringere Zuverlässigkeit als die Verzweigungsbefehle 606 und 611 mit geringer Zuverlässigkeit aufweist, kann entweder der Primär-Gegenpfad-Thread 608 oder der Gegen-Gegenpfad-Thread 613 abgebrochen werden, und es kann ein Gegenpfad für den zusätzlichen Verzweigungsbefehl mit geringer Zuverlässigkeit anstelle des abgebrochenen Threads gestartet werden.
  • Es wird nun auf 7 Bezug genommen, wo ein Computerprogrammprodukt 700 in einem Beispiel etwa ein oder mehrere Speichermedien 702, wobei es sich um physische und/oder nichttransitorische Medien handeln kann, zum Speichern eines/einer computerlesbaren Programmcodemittels oder -logik 704 darauf beinhaltet, um einen oder mehrere Aspekte von hierin beschriebenen Ausführungsformen bereitzustellen und zu vereinfachen.

Claims (16)

  1. Computersystem für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage, wobei das System aufweist: - einen Prozessor, wobei der Prozessor einen Prozessor für simultanes Multithreading (SMT) aufweist und er ein Verfahren durchführt, das aufweist: - Ermitteln einer Verzweigungsvorhersage für einen ersten Verzweigungsbefehl, der während einer Ausführung eines ersten Threads auftritt, wobei die Verzweigungsvorhersage einen Primärpfad und einen Gegenpfad für den ersten Verzweigungsbefehl angibt; - Ausführen des Primärpfades durch den ersten Thread; - Ermitteln einer Zuverlässigkeit der Verzweigungsvorhersage; - Vergleichen der Zuverlässigkeit der Verzweigungsvorhersage mit einem Zuverlässigkeitsschwellenwert; und - auf Grundlage dessen, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, Starten eines zweiten Threads, der den Gegenpfad des ersten Verzweigungsbefehls ausführt, wobei der zweite Thread parallel zu dem ersten Thread ausgeführt wird, - wobei wenn die Gesamtzahl der Threads, die aktuell durch den Prozessor bearbeitet werden, der Höchstzahl der Threads des Prozessors gleich ist, das Verfahren aufweist: o Ermitteln einer Zuverlässigkeit einer Verzweigungsvorhersage, die einem dritten Thread zugehörig ist, der aktuell in dem Prozessor ausgeführt wird, wobei der dritte Thread einem Gegenpfad eines zweiten Verzweigungsbefehls entspricht; o Vergleichen der Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, mit der Zuverlässigkeit, die dem ersten Verzweigungsbefehl zugehörig ist; und o auf Grundlage dessen, dass die Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, geringer als die Zuverlässigkeit ist, die dem ersten Verzweigungsbefehl zugehörig ist, Abbrechen des zweiten Threads und Starten des dritten Threads, der den Gegenpfad des zweiten Verzweigungsbefehls ausführt.
  2. Computersystem nach Anspruch 1, das des Weiteren aufweist: - Ermitteln einer Verzweigungsauflösung des ersten Verzweigungsbefehls, wobei die Verzweigungsauflösung angibt, ob entweder der Primärpfad oder der Gegenpfad einen korrekten Pfad des ersten Verzweigungsbefehls aufweist; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des ersten Threads; und - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des zweiten Threads.
  3. Computersystem nach Anspruch 2, wobei der zweite Thread als Transaktion gestartet wird, die in einem Transaktionsspeicher des Prozessors ausgeführt wird, und das des Weiteren aufweist: - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Beenden und Festschreiben der Transaktion, die dem zweiten Thread entspricht; und - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Rückgängigmachen der Transaktion, die dem zweiten Thread entspricht.
  4. Computersystem nach Anspruch 1, wobei das Starten des zweiten Threads zusätzlich darauf beruht, dass eine Gesamtzahl von Threads, die aktuell durch den Prozessor bearbeitet werden, geringer als eine Thread-Höchstzahl des SMT-Prozessors ist.
  5. Computersystem nach Anspruch 4, wobei der Zuverlässigkeitsschwellenwert auf Grundlage der Gesamtzahl von Threads variiert, die aktuell durch den Prozessor bearbeitet werden.
  6. Computersystem nach Anspruch 1, wobei die Verzweigungsvorhersage für den ersten Verzweigungsbefehl auf Grundlage eines Sättigungsvorhersagezählers in einem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl in einem Verzweigung-genommen-Puffer/einer Verzweigungsverlaufstabelle (BTB/BHT) des Prozessors entspricht, und wobei die Zuverlässigkeit der Verzweigungsvorhersage auf Grundlage eines Korrektheitszählers und eines Falschheitszählers in dem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl entspricht.
  7. Computersystem nach Anspruch 6, wobei die Zuverlässigkeit der Verzweigungsvorhersage einem Wert des Korrektheitszählers dividiert durch eine Summe des Wertes des Korrektheitszählers und eines Wertes des Falschheitszählers gleich ist.
  8. Computersystem nach Anspruch 6, das des Weiteren auf Grundlage dessen, dass entweder der Korrektheitszähler oder der Falschheitszähler einen Zählerhöchstwert erreicht, sowohl den Korrektheitszähler als auch den Falschheitszähler durch zwei dividiert.
  9. Computersystem nach Anspruch 6, das des Weiteren aufweist: - Ermitteln einer Verzweigungsauflösung des ersten Verzweigungsbefehls; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um einen korrekten Pfad des ersten Verzweigungsbefehls handelt, Inkrementieren des Falschheitszählers in dem Eintrag, der dem ersten Verzweigungsbefehl entspricht; und - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um einen korrekten Pfad des ersten Verzweigungsbefehls handelt, Inkrementieren des Korrektheitszählers in dem Eintrag, der dem ersten Verzweigungsbefehl entspricht.
  10. Computersystem nach Anspruch 1, wobei eine Priorität einer Ausführung des ersten Threads höher als eine Priorität einer Ausführung des zweiten Threads ist und wobei die Priorität der Ausführung des ersten Threads und die Priorität der Ausführung des zweiten Threads des Weiteren auf Grundlage der ermittelten Zuverlässigkeit ermittelt werden.
  11. Computerimplementiertes Verfahren für eine Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage durch einen Prozessor für simultanes Multithreading (SMT) aufweist, der ein Verfahren durchführt, wobei das Verfahren aufweist: - durch einen Prozessor Ermitteln einer Verzweigungsvorhersage für einen ersten Verzweigungsbefehl, der während einer Ausführung eines ersten Threads auftritt, wobei die Verzweigungsvorhersage einen Primärpfad und einen Gegenpfad für den ersten Verzweigungsbefehl angibt; - Ausführen des Primärpfades durch den ersten Thread; - Ermitteln einer Zuverlässigkeit der Verzweigungsvorhersage; - Vergleichen der Zuverlässigkeit der Verzweigungsvorhersage mit einem Zuverlässigkeitsschwellenwert; und - auf Grundlage dessen, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, Starten eines zweiten Threads, der den Gegenpfad des ersten Verzweigungsbefehls ausführt, wobei der zweite Thread parallel zu dem ersten Thread ausgeführt wird, wobei der zweite Thread als Transaktion gestartet wird, die in einem Transaktionsspeicher des Prozessors ausgeführt wird; - Ermitteln einer Verzweigungsauflösung des ersten Verzweigungsbefehls, wobei die Verzweigungsauflösung angibt, ob entweder der Primärpfad oder der Gegenpfad einen korrekten Pfad des ersten Verzweigungsbefehls aufweist; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des ersten Threads; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des zweiten Threads; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Beenden und Festschreiben der Transaktion, die dem zweiten Thread entspricht; und - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Rückgängigmachen der Transaktion, die dem zweiten Thread entspricht, - wobei wenn die Gesamtzahl der Threads, die aktuell durch den Prozessor bearbeitet werden, der Höchstzahl der Threads des Prozessors gleich ist, das Verfahren aufweist: - Ermitteln einer Zuverlässigkeit einer Verzweigungsvorhersage, die einem dritten Thread zugehörig ist, der aktuell in dem Prozessor ausgeführt wird, wobei der dritte Thread einem Gegenpfad eines zweiten Verzweigungsbefehls entspricht; - Vergleichen der Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, mit der Zuverlässigkeit, die dem ersten Verzweigungsbefehl zugehörig ist; und - auf Grundlage dessen, dass die Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, geringer als die Zuverlässigkeit ist, die dem ersten Verzweigungsbefehl zugehörig ist, Abbrechen des zweiten Threads und Starten des dritten Threads, der den Gegenpfad des zweiten Verzweigungsbefehls ausführt.
  12. Verfahren nach Anspruch 11, wobei das Starten des zweiten Threads zusätzlich darauf beruht, dass eine Gesamtzahl von Threads, die aktuell durch den Prozessor bearbeitet werden, geringer als eine Thread-Höchstzahl des SMT-Prozessors ist.
  13. Verfahren nach Anspruch 11, wobei die Verzweigungsvorhersage für den ersten Verzweigungsbefehl auf Grundlage eines Sättigungsvorhersagezählers in einem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl in einem Verzweigung-genommen-Puffer/einer Verzweigungsverlaufstabelle (BTB/BHT) des Prozessors entspricht, und wobei die Zuverlässigkeit der Verzweigungsvorhersage auf Grundlage eines Korrektheitszählers und eines Falschheitszählers in dem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl entspricht; - wobei die vorzugsweise Zuverlässigkeit der Verzweigungsvorhersage einem Wert des Korrektheitszählers dividiert durch eine Summe des Wertes des Korrektheitszählers und eines Wertes des Falschheitszählers gleich ist.
  14. Computerprogrammprodukt zum Implementieren einer Gegenpfadausführung auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage, wobei das Computerprogrammprodukt aufweist: - ein physisches Speichermedium, das durch einen Prozessor lesbar ist und das Befehle zum Ausführen durch den Prozessor zum Durchführen eines Verfahrens speichert, wobei der Prozessor einen Prozessor für simultanes Multithreading (SMT) aufweist und das Verfahren aufweist: - Ermitteln einer Verzweigungsvorhersage für einen ersten Verzweigungsbefehl, der während einer Ausführung eines ersten Threads auftritt, wobei die Verzweigungsvorhersage einen Primärpfad und einen Gegenpfad für den ersten Verzweigungsbefehl angibt; - Ausführen des Primärpfades durch den ersten Thread; - Ermitteln einer Zuverlässigkeit der Verzweigungsvorhersage; - Vergleichen der Zuverlässigkeit der Verzweigungsvorhersage mit einem Zuverlässigkeitsschwellenwert; und - auf Grundlage dessen, dass die Zuverlässigkeit der Verzweigungsvorhersage geringer als der Zuverlässigkeitsschwellenwert ist, Starten eines zweiten Threads, der den Gegenpfad des ersten Verzweigungsbefehls ausführt, wobei der zweite Thread parallel zu dem ersten Thread ausgeführt wird, wobei der zweite Thread als Transaktion gestartet wird, die in einem Transaktionsspeicher des Prozessors ausgeführt wird; - Ermitteln einer Verzweigungsauflösung des ersten Verzweigungsbefehls, wobei die Verzweigungsauflösung angibt, ob entweder der Primärpfad oder der Gegenpfad einen korrekten Pfad des ersten Verzweigungsbefehls aufweist; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des ersten Threads; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Abbrechen des zweiten Threads; - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Gegenpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Beenden und Festschreiben der Transaktion, die dem zweiten Thread entspricht; und - auf Grundlage dessen, dass die Verzweigungsauflösung des ersten Verzweigungsbefehls angibt, dass es sich bei dem Primärpfad um den korrekten Pfad des ersten Verzweigungsbefehls handelt, Rückgängigmachen der Transaktion, die dem zweiten Thread entspricht, - wobei wenn die Gesamtzahl der Threads, die aktuell durch den Prozessor bearbeitet werden, der Höchstzahl der Threads des Prozessors gleich ist, das Verfahren aufweist: - Ermitteln einer Zuverlässigkeit einer Verzweigungsvorhersage, die einem dritten Thread zugehörig ist, der aktuell in dem Prozessor ausgeführt wird, wobei der dritte Thread einem Gegenpfad eines zweiten Verzweigungsbefehls entspricht; - Vergleichen der Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, mit der Zuverlässigkeit, die dem ersten Verzweigungsbefehl zugehörig ist; und - auf Grundlage dessen, dass die Zuverlässigkeit, die dem zweiten Verzweigungsbefehl zugehörig ist, geringer als die Zuverlässigkeit ist, die dem ersten Verzweigungsbefehl zugehörig ist, Abbrechen des zweiten Threads und Starten des dritten Threads, der den Gegenpfad des zweiten Verzweigungsbefehls ausführt.
  15. Computerprogrammprodukt nach Anspruch 14, wobei das Starten des zweiten Threads zusätzlich darauf beruht, dass eine Gesamtzahl von Threads, die aktuell durch den Prozessor bearbeitet werden, geringer als eine Thread-Höchstzahl des SMT-Prozessors ist.
  16. Computerprogrammprodukt nach Anspruch 14, wobei die Verzweigungsvorhersage für den ersten Verzweigungsbefehl auf Grundlage eines Sättigungsvorhersagezählers in einem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl in einem Verzweigung-genommen-Puffer/einer Verzweigungsverlaufstabelle (BTB/BHT) des Prozessors entspricht, und wobei die Zuverlässigkeit der Verzweigungsvorhersage auf Grundlage eines Korrektheitszählers und eines Falschheitszählers in dem Eintrag ermittelt wird, der dem ersten Verzweigungsbefehl entspricht, - wobei vorzugsweise die Zuverlässigkeit der Verzweigungsvorhersage einem Wert des Korrektheitszählers dividiert durch eine Summe des Wertes des Korrektheitszählers und eines Wertes des Falschheitszählers gleich ist.
DE112013005882.0T 2013-01-15 2013-10-21 Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage Active DE112013005882B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/741,597 US9348599B2 (en) 2013-01-15 2013-01-15 Confidence threshold-based opposing branch path execution for branch prediction
US13/741,597 2013-01-15
PCT/IB2013/059500 WO2014111758A1 (en) 2013-01-15 2013-10-21 Confidence threshold-based opposing branch path execution for branch prediction

Publications (2)

Publication Number Publication Date
DE112013005882T5 DE112013005882T5 (de) 2015-08-27
DE112013005882B4 true DE112013005882B4 (de) 2020-12-24

Family

ID=51166182

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005882.0T Active DE112013005882B4 (de) 2013-01-15 2013-10-21 Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage

Country Status (5)

Country Link
US (2) US9348599B2 (de)
JP (1) JP6304694B2 (de)
CN (1) CN104919418B (de)
DE (1) DE112013005882B4 (de)
WO (1) WO2014111758A1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
GB2522910B (en) * 2014-02-10 2021-04-07 Advanced Risc Mach Ltd Thread issue control
US9477469B2 (en) * 2014-06-02 2016-10-25 International Business Machines Corporation Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment
US10261826B2 (en) 2014-06-02 2019-04-16 International Business Machines Corporation Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made
US10289414B2 (en) * 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US10503538B2 (en) 2014-06-02 2019-12-10 International Business Machines Corporation Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed
US10235172B2 (en) 2014-06-02 2019-03-19 International Business Machines Corporation Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions
US10685318B2 (en) * 2015-01-30 2020-06-16 United Parcel Service Of America, Inc. Concepts for address prediction or correction
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation
GB2544489B (en) * 2015-11-17 2017-12-06 Advanced Risc Mach Ltd Branch prediction in a data processing apparatus
US10474462B2 (en) * 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
US20190369283A1 (en) * 2016-09-09 2019-12-05 Vermeer Corporation Cross-bore detection during horizontal directional drilling
US10394559B2 (en) * 2016-12-13 2019-08-27 International Business Machines Corporation Branch predictor search qualification using stream length prediction
US10387152B2 (en) * 2017-07-06 2019-08-20 Arm Limited Selecting branch instruction execution paths based on previous branch path performance
CN110503740B (zh) * 2018-05-18 2021-11-26 杭州海康威视数字技术股份有限公司 一种车辆状态判定方法、装置、计算机设备及系统
US10776122B2 (en) 2018-06-14 2020-09-15 International Business Machines Corporation Prioritization protocols of conditional branch instructions
US10901743B2 (en) * 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines
US11188340B2 (en) * 2018-12-20 2021-11-30 International Business Machines Corporation Multiple streams execution for hard-to-predict branches in a microprocessor
US11416257B2 (en) * 2019-04-10 2022-08-16 International Business Machines Corporation Hybrid and aggregrate branch prediction system with a tagged branch orientation predictor for prediction override or pass-through
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器
US11113063B2 (en) * 2019-06-24 2021-09-07 Samsung Electronics Co., Ltd. Method and apparatus to control the use of hierarchical branch predictors based on the effectiveness of their results
US11249762B2 (en) * 2019-10-24 2022-02-15 Arm Limited Apparatus and method for handling incorrect branch direction predictions
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11473418B1 (en) 2020-01-22 2022-10-18 Vermeer Manufacturing Company Horizontal directional drilling system and method
US20220075624A1 (en) * 2020-09-04 2022-03-10 Advanced Micro Devices, Inc. Alternate path for branch prediction redirect
US11847458B2 (en) * 2021-07-02 2023-12-19 International Business Machines Corporation Thread priorities using misprediction rate and speculative depth
CN113918225A (zh) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 指令预测方法、指令数据处理装置、处理器以及存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
JPH1196005A (ja) * 1997-09-19 1999-04-09 Nec Corp 並列処理装置
US6625744B1 (en) * 1999-11-19 2003-09-23 Intel Corporation Controlling population size of confidence assignments
US6560693B1 (en) 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US7051192B2 (en) 2000-05-31 2006-05-23 Sun Microsystems, Inc. Facilitating value prediction to support speculative program execution
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
JP4009248B2 (ja) 2003-12-05 2007-11-14 富士通株式会社 分岐予測装置および分岐予測方法
US20050223203A1 (en) * 2004-03-30 2005-10-06 Gabriel Loh Segmented branch predictor
US7334143B2 (en) 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
US20060168432A1 (en) 2005-01-24 2006-07-27 Paul Caprioli Branch prediction accuracy in a processor that supports speculative execution
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20070288731A1 (en) 2006-06-08 2007-12-13 Bradford Jeffrey P Dual Path Issue for Conditional Branch Instructions
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
CN101587434A (zh) 2008-05-22 2009-11-25 国际商业机器公司 在推测多线程计算系统中处理访存请求的方法及其设备
US20100162247A1 (en) 2008-12-19 2010-06-24 Adam Welc Methods and systems for transactional nested parallelism
CN101515231A (zh) 2009-03-23 2009-08-26 浙江大学 基于数据流分析的单线程程序并行化的实现方法
US8909908B2 (en) 2009-05-29 2014-12-09 Via Technologies, Inc. Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Ahuja, Pritpal S. [et.al.]: Multipath Execution: Opportunities and Limits. Proceedings of the 12th International Conference on Supercomputing. New York, NY, USA : Association for Computing Machinery, 1998 (ICS ’98). S. 101-108. - ISBN 089791998X. https://doi.org/10.1145/277830.277854 [abgerufen am 28.01.2020] *
Dwarkadas, Sandhya: Hardware Support for Transactional Memory Transactional Memory, Oregon Summer School 2006 : Hardware Support for Transactional Memory, University of Oregon, 2006. URL: https://www.cs.uoregon.edu/research/summerschool/summer06/basic.html [abgerufen am 29.01.2020] *
Silc, Jurij; Ungerer, Theo; Robic, Borut: Current and Future Trends in Processor Architecture, Tutorial, Computer Systems Department, Jozef Stefan Institute, 2005, Folien 1-4, 9-16, 33-40, 57-64, 69-72, 77-80, 85-98. URL: http://csd.ijs.si/courses/trends/, Archiviert in http://www.archive.org am 19.05.2005 [abgerufen am 28.01.2020] *
Silc, Jurij; Ungerer, Theo; Robic, Borut: Dynamic branch prediction and control speculation. In: Int. J. High Performance Systems Architecture (IJHPSA), 1, 2007, 1, S. 2-13. https://www.semanticscholar.org/paper/Dynamic-branch-prediction-and-control-speculation-Silc-Ungerer/656868ddf2646d0e0c789a08fbdc9a9b82aff4e4 [abgerufen am 24.01.2020] *
Uht, Augustus K.: Chapter 6 : Multipath Execution, 2005. URL: https://www.semanticscholar.org/paper/Contents-6-Multipath-Execution-Uht/955081ccde2d6841a02854317242e0d01c41c941 [abgerufen am 28.01.2020] *
Wallace, S.; Calder, B.; Tullsen, D. M.: Threaded multiple path execution. In: Proceedings. 25th Annual International Symposium on Computer Architecture (Cat. No.98CB36235), 1998, S. 238-249. - ISSN 1063-6897. https://doi.org/10.1109/ISCA.1998.694778 [abgerufen am 24.01.2020] *

Also Published As

Publication number Publication date
CN104919418B (zh) 2018-01-02
US9519485B2 (en) 2016-12-13
US9348599B2 (en) 2016-05-24
CN104919418A (zh) 2015-09-16
JP6304694B2 (ja) 2018-04-04
US20140201508A1 (en) 2014-07-17
DE112013005882T5 (de) 2015-08-27
JP2016507092A (ja) 2016-03-07
US20150058607A1 (en) 2015-02-26
WO2014111758A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
DE112013005882B4 (de) Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE10015675B4 (de) Spekulative Auswahl von heißen Spuren in einem dynamischen CACHE-Übersetzer mit geringem Aufwand
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE102014003434A1 (de) Vorhersage indirekter Verzweigungen
DE10121792A1 (de) Universelle Ladeadresse/Wertevorhersageschema
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE4222776A1 (de) Verfahren und anordnung fuer eine verzweigungsbefehlsverarbeitung in einer parallelverarbeitungseinheit
DE112010003492T5 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102014000535A1 (de) Registerdatei mit mehreren unterregisterdateien
EP0635792A2 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE102013205059A1 (de) Durchführen von vordecodierzeitoptimierten Anweisungen zusammen mit Sequence Caching von vordecodierzeitoptimierten Anweisungen
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final