DE102012210895A1 - Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor - Google Patents

Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor Download PDF

Info

Publication number
DE102012210895A1
DE102012210895A1 DE102012210895A DE102012210895A DE102012210895A1 DE 102012210895 A1 DE102012210895 A1 DE 102012210895A1 DE 102012210895 A DE102012210895 A DE 102012210895A DE 102012210895 A DE102012210895 A DE 102012210895A DE 102012210895 A1 DE102012210895 A1 DE 102012210895A1
Authority
DE
Germany
Prior art keywords
instruction
instructions
prediction
segment
processor
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.)
Ceased
Application number
DE102012210895A
Other languages
English (en)
Inventor
Ioana Monica Burcea
Alper Buyuktosunoglu
Brian Robert Prasky
Vijayalakshmi Srinivasan
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 DE102012210895A1 publication Critical patent/DE102012210895A1/de
Ceased legal-status Critical Current

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

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Systeme und Verfahren zur Vorhersage der ungeordneten Parallelverarbeitung der Befehle (ILP) von Threads, die in einem Multithread-Prozessor ausgeführt werden, und zur Priorisierung ihrer Planung werden hierin beschrieben. Ein Aspekt stellt das Verfolgen des Abschlusses von Befehlen mithilfe einer globalen Abschlusstabelle bereit, die ein KopfsegmeVorhersagewerte für jeden Befehl in einer Vorhersagetabelle, die über Befehlskennungen indiziert sind, die jedem Befehl zugeordnet sind, wobei ein Vorhersagewert konfiguriert ist, um anzugeben, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und das Vorhersagen, dass Threads mit mehr Befehlen vom Endsegment einen höheren Grad an ungeordneter Parallelverarbeitung der Befehle aufweisen. Auch andere Ausführungsformen und Aspekte werden hierin beschrieben.

Description

  • Gebiet der Erfindung
  • Der hierin beschriebene Gegenstand betrifft allgemein Multithread-Prozessoren und die Vorhersage der ungeordneten Parallelverarbeitung der Befehle (Out-of-order Instruction Level Parallelism (ILP)) von Threads, die darin ausgeführt werden.
  • Hintergrund
  • Typische Hochleistungsprozessoren verwenden eine simultanes Multithreading (SMT) genannte Technik, um Ressourcen effektiver zu nutzen und die Leistungsfähigkeit weiter zu erhöhen. Diese Technik erlaubt es, mehrere unabhängige Threads auf einem Einzelprozessor auszuführen und in jedem Zyklus mehrere Befehle auszugeben. SMT ist ein Mittel, um die Parallelverarbeitung von Threads (d. h. durch mehrere Prozessoren) in die Parallelverarbeitung von Befehlen (ILP) (d. h. durch einen Prozessor) umzuwandeln. Allgemein ist die ILP ein Maß für die durchschnittliche Zahl von Befehlen in einem Programm, die ein Prozessor gleichzeitig auswerten kann.
  • Einem Betriebssystem erscheint ein SMT-Prozessor als zwei logische Prozessoren, die in der Lage sind, mehrere Threads gleichzeitig auszuführen. Die leistungsfähige gleichzeitige Ausführung mehrerer Threads auf demselben Prozessor durch SMT erfordert die effektive Planung der Threadausführung und die Steuerung des Threadzugriffs auf gemeinsame Prozessorressourcen.
  • Kurze Zusammenfassung
  • Ein Aspekt stellt ein Verfahren zur Vorhersage der ungeordneten (engl. „out-of-order”) Parallelverarbeitung der Befehle von Threads bereit, die in einem Multithread-Prozessor ausgeführt werden, umfassend: das Verfolgen des Abschlusses bzw. Beendigung von Befehlen mithilfe einer globalen Abschlusstabelle, die ein Kopfsegment und ein Endsegment aufweist; das Speichern von Vorhersagewerten für jeden Befehl in einer Vorhersagetabelle, die über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei ein Vorhersagewert konfiguriert ist, um anzugeben, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und das Vorhersagen, dass Threads mit mehr Befehlen vom Endsegment einen höheren Grad an ungeordneter Parallelverarbeitung der Befehle aufweisen.
  • Ein anderer Aspekt stellt ein System zur Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads bereit, die in einem Multithread-Prozessor ausgeführt werden, umfassend: eine globale Abschlusstabelle mit einem Kopfsegment und einem Endsegment, wobei die globale Abschlusstabelle konfiguriert ist, um den Abschluss von Befehlen zu verfolgen; einen Vorhersagewert, der angibt, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und eine Vorhersagetabelle, die konfiguriert ist, um den Vorhersagewert für jeden Befehl zu speichern, wobei die Vorhersagetabelle über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei für Threads mit mehr Befehlen vom Endsegment ein höherer Grad an ungeordneter Parallelverarbeitung der Befehle vorhergesagt wird.
  • Ein weiterer Aspekt stellt ein Computerprogrammerzeugnis bereit, umfassend: ein computerlesbares Speichermedium mit computerlesbarem Programmcode, konfiguriert, um die ungeordnete Parallelverarbeitung der Befehle von Threads vorherzusagen, die in einem Multithread-Prozessor ausgeführt werden, der damit ausgeführt ist, wobei der computerlesbare Programmcode umfasst: computerlesbaren Programmcode, konfiguriert, um den Abschluss von Befehlen mithilfe einer globalen Abschlusstabelle zu verfolgen, die ein Kopfsegment und ein Endsegment aufweist; computerlesbaren Programmcode, konfiguriert, um Vorhersagewerte für jeden Befehl in einer Vorhersagetabelle zu speichern, die über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei ein Vorhersagewert konfiguriert ist, um anzugeben, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und computerlesbaren Programmcode, konfiguriert, um für Threads mit mehr Befehlen vom Endsegment einen höheren Grad an ungeordneter Parallelverarbeitung der Befehle vorherzusagen.
  • Das Obige ist eine Zusammenfassung und kann Vereinfachungen, Verallgemeinerungen und Detailauslassungen enthalten; für den Fachmann versteht es sich daher, dass die Zusammenfassung nur veranschaulichend ist und in keiner Weise einschränkend sein soll.
  • Ausführungsformen gemäß kann das Verfahren und/oder das System außerdem das Aktualisieren der Vorhersagetabelle für jeden Befehl umfassen, nachdem bestimmt wurde, ob die Ausführung im Kopfsegment oder im Endsegment der globalen Abschlusstabelle aufgetreten ist.
  • Einem anderen Aspekt gemäß kann das Verfahren und/oder das System so angepasst sein, dass die Vorhersagetabelle den Vorhersagewert um eins vergrößert, wenn ein Befehl vom Endsegment der globalen Abschlusstabelle kommt; und den Vorhersagewert um eins verkleinert, wenn der Befehl vom Kopfsegment der globalen Abschlusstabelle kommt.
  • In manchen Ausführungsformen umfasst das Verfahren und/oder das System das Priorisieren der Planung von Befehlen in einem Multithread-Prozessor durch Auffinden eines Vorhersagewerts, der jedem Befehl zugeordnet ist, der in eine Pipeline zur Ausführung im Multithread-Prozessor eintritt, und Zuweisen einer Priorität an jeden Befehl auf der Basis des Vorhersagewerts.
  • In manchen Ausführungsformen des Verfahrens und/oder des Systems kann der Multithread-Prozessor auch einen SMT-Prozessor umfassen.
  • Ferner kann der Multithread-Prozessor in manchen Ausführungsformen des Verfahrens und/oder des Systems einen feinkörnigen (engl. „fine grained”) Multithread-Prozessor umfassen.
  • Zudem kann der Multithread-Prozessor in manchen Ausführungsformen des Verfahrens und/oder des Systems Befehle mithilfe einer Pipeline ausführen, die eine Ausgabewarteschlange umfasst.
  • In manchen Ausführungsformen des Verfahrens und/oder des Systems kann das Kopfsegment einen ältesten Befehl umfassen, und das Endsegment umfasst einen jüngsten Befehl.
  • In manchen Ausführungsformen des Verfahrens und/oder des Systems kann die Befehlskennung aus einer partiellen Befehlsadresse bestehen.
  • Darüber hinaus kann der Vorhersagewert in manchen Ausführungsformen des Verfahrens und/oder des Systems einen Zwei-Bit-Wert umfassen.
  • Zum besseren Verständnis der Ausführungsformen zusammen mit ihren anderen und weiteren Merkmalen und Vorteilen wird auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen Bezug genommen. Der Umfang der Erfindung wird in den beigefügten Ansprüchen aufgezeigt.
  • Kurze Beschreibung der verschiedenen Ansichten der Zeichnungen
  • 1 zeigt eine beispielhafte Prozessorbefehlspipeline nach einer Ausführungsform.
  • 2 zeigt ein Beispiel der Verfolgung der Threadposition in der Ausgabewarteschlange (IQ) nach einer Ausführungsform.
  • 3 zeigt ein Beispielflussdiagramm eines Vorhersage- und Priorisierungsprozesses für Befehle nach einer Ausführungsform.
  • 4 veranschaulicht einen beispielhaften Rechner.
  • Ausführliche Beschreibung
  • Es versteht sich, dass die Komponenten der Ausführungsformen, wie hierin allgemein beschrieben und in den Zeichnungen dargestellt, zusätzlich zu den beschriebenen beispielhaften Ausführungsformen in verschiedenen anderen Konfigurationen angeordnet und entworfen werden können. Die folgende detailliertere Beschreibung beispielhafter Ausführungsformen, wie in den Zeichnungen dargestellt, soll den Umfang der Ansprüche daher nicht einschränken, sondern ist lediglich repräsentativ für diese Ausführungsformen.
  • Die Bezugnahme, in dieser Patentschrift, auf „Ausführungsform(en)” (oder dergleichen) bedeutet, dass eine bestimmte Funktion, eine bestimmte Struktur oder ein bestimmtes Merkmal, das in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform enthalten ist. Daher beziehen sich die Phrasen „Ausführungsformen gemäß” oder „eine Ausführungsform” (oder dergleichen) an verschiedenen Stellen in dieser Patentschrift nicht notwendigerweise alle auf dieselbe Ausführungsform.
  • Überdies können die beschriebenen Funktionen, Strukturen oder Merkmale in verschiedenen Ausführungsformen auf jede geeignete Weise miteinander kombiniert sein. In der folgenden Beschreibung werden zahlreiche spezifische Details gegeben, um ein gründliches Verständnis beispielhafter Ausführungsformen zu erlauben. Ein Fachmann wird jedoch erkennen, dass Aspekte auch ohne bestimmte spezifische Details oder mit anderen Verfahren, Komponenten, Materialien usw. praktiziert werden können. In anderen Fällen werden wohlbekannte Strukturen, Materialien oder Vorgänge nicht im Detail gezeigt oder beschrieben, um Verwirrung zu vermeiden.
  • Entwickler streben stets an, Computersysteme herzustellen, die in Bezug auf die Kosten pro Arbeitslast einen erhöhten Wert bieten. Die Kosten pro Arbeitslast für einen gegebenen Rechner lassen sich als die Zeit beschreiben, die zur Ausführung einer bestimmten Aufgabe benötigt wird (d. h. die Dauer), und als die Zahl der Aufgaben, die vom Rechner parallel ausgeführt werden können (d. h. der Durchsatz). Die bestehende Technologie hat sich stark auf die Frequenzskalierung gestützt, um die Prozessorleistung zu erhöhen und die Kosten pro Arbeitslast zu verringern. Die Entwicklungsfähigkeit dieser Lösung ist jedoch stark eingeschränkt, da die Frequenzskalierung die Erhöhung der Prozessorspannung erfordert, was zu einer kubischen Leistungsfunktion führt. Designs zur Verbesserung der Prozessor- und Threadleistung sind darauf hin zu bewerten, ob sie einen begrenzten Spitzenstrom gewährleisten, während sie die Einzelthreadleistung halten oder erhöhen, das alles bei einer signifikanten Erhöhung des Prozessordurchsatzes.
  • Die Einführung des simultanen Multithreadings (SMT) hat die Nutzung eines Prozessors ermöglicht, um mehr als einen Thread gleichzeitig auf einem Einzelprozessor auszuführen. Diese Nutzung hat viele Effizienz- und Leistungsvorteile gebracht, wie z. B. das Leisten von mehr Arbeit pro Joule Energie. Da die Prozessorfrequenz aber nicht mehr skaliert, haben Entwickler Systeme mit breiteren Pipelines entworfen, um die zusätzliche Leistung pro Thread zu nutzen. Die breiteren Systeme sind ausgelegt, um die Einzelthreadleistung zu erhöhen und stellen eine große Chance für das SMT dar, wie z. B. die Fähigkeit, mehrere Threads über einen Ressourcenpool hinweg auszuführen. Doch bei bestimmten Arbeitslasten wie z. B. Arbeitslasten mit begrenzter Parallelverarbeitung der Befehle (ILP) sind breitere Systeme nicht anwendbar. Daher werden gegenwärtig neue Schwerpunkte zur Verbesserung der Leistung von SMT-Prozessoren erforscht. Zum Beispiel erlauben SMT-Prozessoren die Parallelverarbeitung von mehr Fehltreffern, was eine Erhöhung im Gesamtdurchsatz des Prozessors ermöglicht.
  • Neben der Frequenzskalierung haben bestehende Technologien sich auch auf Befehlsabruf- und -ausgaberichtlinien als Verfahren zur Erhöhung der SMT-Leistungsfähigkeit konzentriert, einschließlich zum Beispiel Round-Robin-, ICOUNT-, Cachefehltreffergewichtungs- und verteilte Löschungsrichtlinien. Allgemein gibt ein Prozessor, der unter der Round-Robin-Richtlinie betrieben wird, in jedem Zyklus Befehle vom nächsten aktiven Thread aus, wobei die Threadverarbeitung im Wesentlichen ohne Rücksicht auf die Ressourcenverteilung alterniert. Die ICOUNT-Richtlinie versucht, die Zahl der Befehle gleich zu halten und kann konfiguriert werden, um Threads mit der niedrigsten Zahl von Befehlen in den Decodierungs-, Zuteilungs- und Ausgabestufen Priorität zu geben. Die Cachefehltreffergewichtung erkennt, dass Cachefehltreffer die ILP begrenzen, und die Richtlinie zur verteilten Löschung versucht, Threads, die die Befehlspipeline blockieren, zu löschen.
  • Zusätzlich zu den vier oben genannten SMT-Abrufrichtlinien wurden der bestehenden Technologie gemäß auch alternative Abrufrichtlinien realisiert. Manche dieser alternativen Richtlinien können Merkmale der Round-Robin-, ICOUNT-, Cachefehltreffergewichtungs- und verteilten Löschungsrichtlinien umfassen oder integrieren. Zum Beispiel wurden Richtlinien konfiguriert, die Threads mit weniger Befehlen in der Pipeline, weniger ausstehenden Datencachefehltreffern, weniger Befehlen im vorderen Ende der Pipeline oder weniger alten Befehlen in der Ausgabewarteschlange (IQ) höhere Priorität erteilen. Bestehende Richtlinien schließen auch einen Ansatz ein, bei dem Threads mit niedrigem Vertrauenswert in momentan ausgeführten Verzweigungen eine geringere Priorität für den Befehlsabruf erteilt wird, wodurch der Anteil der Befehle, die vom falschen Pfad abgerufen und ausgeführt werden, verringert wird. Es wurde auch eine Technik realisiert, die in einem Versuch, mehr Ressourcen für langsame Threads bereitzustellen, Threads mit mehr L1-Datencachefehltreffern begünstigt, was ihnen erlaubt, die verfügbare ungeordnete Parallelverarbeitung von Befehlen auszunutzen.
  • Richtlinien für den Befehlsabruf können sich auch auf die Messung der Threadleistung stützen, zum Beispiel die Leistungsmessung auf der Basis des Verhältnisses der Zahl der festgeschriebenen Befehle zur Zahl der Ressourcen, die in einem bestimmten Intervall einem bestimmten Thread zugewiesen wurden. Die Leistung eines Threads kann dann in Entscheidungen für die Ressourcenzuweisung verwendet werden, indem z. B. dem Thread, der die Prozessorressourcen am wirksamsten nutzt, im nächsten Ausführungsintervall mehr Ressourcen zugewiesen werden. Eine andere Richtlinie für den Befehlsabruf der bestehenden Technologie gemäß konzentriert sich auf die Verteilung von Ressourcen wie z. B. die IQ, die Umbenennung von Registern und die Umordnung von Puffern für Threads in einem Multithread-Prozessor. Eine Realisierung dieser Abrufrichtlinienkonfiguration verwendet einen „steigenden” Ansatz, bei dem ein Anfangssatz von Verteilungen für gleiche Intervalle verwendet wird und die Verteilung mit der höchsten Leistung für den nächsten Ausführungszeitraum gewählt wird.
  • Weitere Ansätze zur Verbesserung der SMT-Leistung betreffen Lasten mit langer Latenzzeit für Threads, die von einem SMT-Prozessor ausgeführt werden. Zum Beispiel beinhaltet eine Richtlinie das Drosseln des Befehlsabrufs für einen Thread, bei dem eine Last mit langer Latenzzeit auftritt, oder, noch drastischer, das Löschen der Befehle, die bereits für einen Thread abgerufen wurden, bei welchem eine Last mit langer Latenzzeit auftritt. Auch andere bestehende Richtlinien konzentrieren sich in der Bestimmung der Threadpriorität weitgehend auf Lasten mit langer Latenzzeit (z. B. L2-Fehltreffer, DTLB-Fehltreffer). In einer anderen bestehenden Richtlinie, die Lasten mit langer Latenzzeit betrifft, werden Vorhersagen darüber gemacht, ob eine Last eine Operation mit langer Latenzzeit ist, und über die Zahl der Befehle, die abgerufen werden müssen, um die Speicherparallelität (MLP) preiszugeben, damit zwei Lasten mit langer Latenzzeit für jeden Thread sich überschneiden. Bei einem Thread mit einer Last, die als eine Operation mit langer Latenzzeit mit einer MLP von n Befehlen vorhergesagt wird, wird der Abruf nach dem Abruf von n Befehlen gedrosselt. Eine weitere Richtlinie, die Lasten mit langer Latenzzeit betrifft, ist konfiguriert, um zu reagieren, nachdem bekannt geworden ist, dass ein Last-Befehl eine Operation mit langer Latenzzeit ist, und wenn bereits mehr als eine MLP-Distanz an Befehlen abgerufen worden ist, werden die zusätzlichen Befehle, die über die MLP-Befehle hinausgehen, gelöscht.
  • Zusätzlich zur Abrufpriorisierung schlossen frühere Versuche zur Verbesserung der SMT-Leistung auch die Priorisierung der Planung von Befehlen für die Ausführung ein. Beispielhafte priorisierte Planungssysteme schließen die Oldest First-Planung, die spekulative Last-Planung, die die Priorität für Befehle auf dem spekulativen Pfad senkt, und die Branch-First-Planung, die Verzweigungen so früh wie möglich plant.
  • Wie aus der obigen Übersicht der SMT-Richtlinien bestehender Technologien zu ersehen ist, sind frühere Ansätze zur Threadpriorisierung und zur Verbesserung der SMT-Leistung reaktiv gewesen, statt proaktiv. Vorherige Lösungen waren konzipiert, um auf einen spezifischen Satz von Ereignissen im Laufe der Befehlsausführung zu reagieren und die Threadpriorität dann auf der Basis der Ergebnisse dieser Ereignisse zu ändern. Ein Hauptnachteil derartiger Techniken ist, dass die jeweiligen Ergebnisse, die dem Satz von Ereignissen zugeordnet werden, das Programmverhalten an bestimmten zukünftigen Punkten nicht genau wiedergeben können, wie z. B., wenn Befehle wiederholt werden. Daher kann eine resultierende Threadpriorisierung die Gesamtprozessorleistung nicht wirklich verbessern, sondern die Leistung tatsächlich verschlechtern. Zudem haben Threadpriorisierungtechniken nach dem Stand der Technik nicht die Fähigkeit, zu beobachten und aus den Ergebnissen der Ereignisse zu lernen. Daher neigen diese Techniken dazu, den gleichen Satz von Maßnahmen zu wiederholen, wenn das Programm einen Codeabschnitt erneut ausführt, selbst wenn diese Maßnahmen die Prozessorleistung verringern.
  • Zum Beispiel zeigt das SMT bei der gleichzeitigen Ausführung bestimmter Threads oder Tasks gewisse Inkonsistenzen auf. Diese Inkonsistenzen können unter anderem das Ergebnis von Ressourcenkonkurrenz oder von Threads sein, die Ressourcen nicht auf effektive Weise gemeinsam nutzen. Von vier gegebenen Tasks A, B, C und D können z. B. die Tasks A und B auf effiziente Weise zusammen ausgeführt werden, die Ausführung der Tasks A und C zusammen oder der Tasks B und D zusammen kann aber zu ganz anderen Ergebnissen führen. Die SMT-Priorisierungstechniken des Stands der Technik sind nicht in der Lage, zu lernen, welche Threads effizient zusammen ausgeführt werden und welche nicht. Daher können diese Techniken Threads wiederholt auf unwirksame Weise priorisieren. Obwohl das SMT Leistungsvorteile bietet, kann es auch ein erhebliches Maß an Ineffizienz schaffen, wenn die reaktiven SMT-Richtlinien des Stands der Technik verwendet werden. Zum Beispiel können die Warteschlangenressourcen aufgrund der reaktiven Beschaffenheit der aktuellen Priorisierungstechniken nur innerhalb begrenzter Zeitrahmen ausgeglichen werden. Zur Veranschaulichung kann ein zweiter Thread beginnen, die verfügbaren Ressourcen zu dominieren, nachdem in einem ersten Thread eine falsche Verzweigung aufgetreten ist, selbst wenn der zweite Thread nicht in der Lage ist, die angeforderten Ressourcen zu nutzen. Zudem hat die Forschung gezeigt, dass ohne das vorausschauende Wissen, wie gut ein Thread verfügbare Ressourcen nutzen kann, wie bei den reaktiven Prozessen des Stands der Technik, ein Thread übermäßige Ressourcen beanspruchen kann, wenn ein konkurrierender Thread in einem Zustand ist, wo er keinen Ressourcenbedarf hat.
  • Ausführungsformen stellen einen proaktiven Ansatz zur Threadpriorisierung in einem Multithread-Prozessor bereit, einschließlich, ohne aber darauf beschränkt zu sein, SMT- und feinkörniger Multithread-Prozessoren. Ausführungsformen gemäß kann die Multithread-Prozessorleistung verbessert werden, indem die Wirksamkeit von Priorisierungsentscheidungen verfolgt wird und die Ergebnisse der Priorisierungsentscheidungen verwendet werden, um eine Vorgehensweise für künftige Auftritte derselben oder ähnlicher Befehlssequenzen vorherzusagen. Ausführungsformen stellen einen Prozess zur proaktiven Vorhersage der ungeordneten ILP in einem Multithread-Prozessor bereit. Als nicht einschränkendes Beispiel können Ausführungsformen die Vorhersage der ungeordneten ILP für die Verwaltung der Threadpriorität im Prozessor verwenden. Ausführungsformen sind konfiguriert, um spezifische Ressourcen in einer Prozessorpipeline zu überwachen und die Nutzung von Computerressourcen durch verschiedene Threads vorherzusagen.
  • Bestehende SMT-Designs schaffen eine Umgebung, in der jeder Thread im Wesentlichen um seinen Ressourcenanteil kämpfen muss. Demgegenüber können die proaktiven Ansätze, die durch die hierin beschriebenen Ausführungsformen bereitgestellt werden, so konfiguriert sein, dass Threads nicht mehr um Ressourcen kämpfen müssen; statt dessen sind Threads in der Lage, Ressourcen gemeinsam zu nutzen. Darüber hinaus sehen Ausführungsformen vor, dass Threads ihre Nutzung von Prozessorressourcen begrenzen können, die anderen Threads im System zur Verfügung gestellt werden, einschließlich, ohne aber darauf beschränkt zu sein, indem sie nur eine Menge an Prozessorressourcen behalten, die sie am effektivsten nutzen können.
  • Ausführungsformen können konfiguriert sein, um den Abruf und die Zuteilung unter mehreren Threads in einem Multithread-Prozessorsystem unter anderem auf der Basis der ungeordneten Parallelverarbeitung der Befehle (Out-of-order ILP) eines oder mehrerer Threads zu priorisieren. Mit der Vorhersage auf der Basis früherer Ergebnisse nach Ausführungsformen, die hierin bereitgestellt werden, sorgen Ausführungsformen dafür, dass Threads mit höherer ungeordneter ILP Zugriff auf Abruf- und Zuteilungsressourcen erhalten können, um den Gesamtdurchsatz zu erhöhen. Zusätzlich können Ausführungsformen die Wirkungen vorheriger Vorhersagen verfolgen und ein entsprechendes Vorhersageprotokoll erstellen, das für den künftigen Gebrauch ständig aktualisiert wird. Ausführungsformen können außerdem konfiguriert sein, um Threadressourcen so auszugleichen, dass ein Thread bis zur Gesamtbreite der Befehlspipeline nutzen kann, wenn der Thread dies braucht, und andere Threads, die in der Lage wären, Prozessorressourcen zu nutzen, nicht aushungert, wenn der Thread die Breite/Warteschlangen der Pipeline nicht nutzen kann.
  • Bezug nehmend auf 1 wird hierin eine beispielhafte Prozessorbefehlspipeline bereitgestellt, die einer Ausführungsform gemäß modifiziert wurde. Auf einer höheren Ebene können Befehle aus dem Befehlscache 102 abgerufen werden und zum vorderen Ende der Prozessorpipeline 101 gesendet werden, das Abruf- 103, Decodierungs- 104, Zuteilungs- 106 und Ausgabestufen 108 einschließt. Diese vorderen Stufen 103, 104, 106, 108 entsprechen jeweils dem Abrufen, Decodieren, Zuteilen, in der Programmreihenfolge, und dem ungeordneten Ausgeben von Befehlen an die Ausführungseinheiten 109. Das hintere Ende der Prozessorpipeline 101 besteht aus den Ausführungseinheiten 109 wie z. B. Ganzzahl-, Gleitkomma- und Lade/Speicher-Ausführungseinheiten, und einer Festschreibungseinheit 110, die entscheidet, wann es sicher ist, das Ergebnis von einer Ausführungseinheit 109 zu speichern. Wie in 1 dargestellt, sehen Ausführungsformen vor, dass die Threadpriorisierung 111 an den Abruf- 103 und Zuteilungsstufen 106 auftritt.
  • Bei einem SMT-Prozessor können Puffer oder Warteschlangen, die zwischen den vorderen Ausführungsstufen, d. h. Abruf 103, Decodierung 104, Zuteilung 106 und Ausgabe 108 konfiguriert sind, von mehr als einem Ausführungsthread gemeinsam benutzt werden. Der in 1 veranschaulichte SMT-Prozessor weist zwischen den Decodierungs- 104 und Zuteilungsstufen 106 eine Warteschlange auf, „Zuteilungswarteschlange” (DQ) 105 genannt, und eine Warteschlange zwischen den Zuteilungs- und Ausgabestufen, „Ausgabewarteschlange” (IQ) 107 genannt. Die DQ 105 verwaltet eine Warteschlange für Tasks, die der Zuteilungsstufe 106 zugeführt werden. Die IQ 107 spezifiziert, welche Befehle ausgeführt werden und wann. Zum Beispiel kann die IQ 107 Befehle auf der Basis der Abhängigkeiten von Befehlen in der Pipeline ausführen. Mehrere Threads, die vom SMT-Prozessor ausgeführt werden, können die DQ 105 und IQ 107 dynamisch gemeinsam nutzen. Zudem können Befehle der IQ 107 in der Programmreihenfolge zugeführt werden, während die IQ 107 die ungeordnete Ausgabe von Befehlen an verschiedene Ausführungseinheiten 109 erlauben kann. Die Puffer oder Warteschlangen zwischen diesen vorderen Stufen in einem SMT-Prozessor, nämlich die in 1 dargestellte Zuteilungswarteschlange (DQ) 105 und Ausgabewarteschlange (IQ) 107, können von mehr als einem Ausführungsthread gemeinsam genutzt werden.
  • Eine IQ weist eine begrenzte Zahl von Bereichen auf, die für Befehle verfügbar sind. Da die Größe der IQ bei einer ungeordneten IQ vervierfacht wird, wird das Fenster für die ungeordnete Ausführung im Durchschnitt verdoppelt. Zur Veranschaulichung kann eine beispielhafte IQ eine Eintragsgröße von acht haben, und aufgrund von Abhängigkeiten kann die IQ nur in der Lage sein, drei Befehle zu verarbeiten, bevor sie auf Inhalt warten muss (z. B. Daten aus dem Cache erhält). Wenn die Eintragsgröße dieser beispielhaften IQ auf 32 vervierfacht wird, könnten potenziell sechs Befehle ungeordnet ausgeführt werden, bevor auf eine Rückgabe des ersten Ergebnisses gewartet werden muss. Die Größe einer IQ ist jedoch begrenzt, da der Siliciumchip, der die IQ aufnimmt, eine begrenzte Fläche hat. Zudem nimmt die Leistungsfähigkeit einer IQ mit zunehmender Größe der IQ ab. Daher tritt ein Problem auf, wie die IQ unter mehreren Threads in einem SMT-Prozessor aufgeteilt wird, und welche Befehle zugeteilt werden und welche in die IQ eingetragen werden.
  • Ausführungsformen stellen effektive Prozesse zur Handhabung mehrerer Threads in einem SMT-Prozessor durch effiziente Verteilung von Ressourcen, und insbesondere der IQ, auf mehrere gleichzeitig ausgeführte Threads bereit. Eine beispielhafte Ausführungsform ist konfiguriert, um Threads mit hoher ungeordneter ILP zu priorisieren, indem sie solche Threads der IQ mit früherer Zuteilung zuführt. Zusätzlich können Ausführungsformen die gleiche Priorisierungsrichtlinie für den Befehlsabruf vorsehen, um für einen Thread mit hoher ungeordneter ILP einen stetigen Fluss an decodierten Befehlen zu gewährleisten. Obwohl beispielhafte Ausführungsformen, die hierin beschrieben werden, die Verwendung der Vorhersage der ungeordneten ILP von Threads betreffen, um die Zuteilung zur IQ zu priorisieren, sind Ausführungsformen nicht darauf beschränkt. Die Vorhersage der ungeordneten ILP kann zu jedem Zweck verwendet werden, der von einer derartigen Information profitiert, wobei die Priorisierung der Zuteilung zur IQ nur ein Beispiel ist.
  • Ausführungsformen sehen einen Multithread-Prozessor vor, der eine globale Abschlusstabelle (GCT) verwendet, um unter anderem eine Reihenfolge von Befehlen zu verfolgen, bis sie abgeschlossen sind. Die IQ kann Befehle von der Zuteilung bis zur Ausführung verfolgen, während die GCT Befehle von der Zuteilung bis zur Festschreibungsstufe verfolgen kann. Zusätzlich erlaubt die Verfolgungsfunktion der GCT einem Prozessor, eine falsche Richtung oder ein falsches Ziel aus einer Verzweigung wiederherzustellen. Ausführungsformen gemäß erfüllt die GCT die Funktion einer Umlaufwarteschlange mit individuellen Kopf- und Endzeigern, wobei der Befehl im Kopf der GCT der älteste momentan ausgeführte Befehl ist. Bei der Ausgabe eines Befehls aus der IQ können Ausführungsformen das Bestimmen der Position des Befehls in der GCT relativ zum Kopf der GCT vorsehen. Ein nicht einschränkendes Beispiel veranschaulicht, dass die Ausgabe als vom Ende der GCT kommend definiert werden kann, wenn N Befehle aus einem Einzelthread in der GCT vorliegen und die aktuelle Position eines ausgegebenen Befehls größer als N/2 ist; andernfalls wird der Befehl vom Kopf der Warteschlange ausgegeben.
  • Ausführungsformen gemäß gilt ein Thread mit mehr „End”-Ausgaben als Thread mit hoher ungeordneter ILP, da mehr Befehle ungeordnet ausgegeben werden. Zudem sehen Ausführungsformen vor, dass derartige Threads besser in der Lage sein können, eine ungeordnete Pipeline zu nutzen, und deshalb besser in der Lage sein können, eine größere Menge der GCT-Ressource zu nutzen. Zudem sehen Ausführungsformen die Erhöhung des Gesamtdurchsatzes des Multithread-Prozessors vor, indem sie Threads mit mehr Befehlen, die vom Ende der GCT kommen, beim Belegen der DQ und IQ mehr Priorität geben.
  • In 2 wird eine beispielhafte Darstellung eines Prozesses zur Verfolgung der Thread-IQ-Position nach einer Ausführungsform gezeigt. Eine IQ 201 für einen Einzelthread enthält fünf Befehle, zwei „Kopfbefehle” 202 und drei „Endbefehle” 203. Alle Befehle werden in der Programmreihenfolge in die IQ 201 eingetragen, wobei der erste Befehl ein Kopfbefehl ist. Ausführungsformen sehen vor, dass die Zahl der Kopf- und Endbefehle durch die tatsächliche Zahl der Einträge in der IQ 201 bestimmt wird. Als nicht einschränkendes Beispiel werden die Hälfte Kopfbefehle sein und die Hälfte Endbefehle sein, wenn eine gerade Zahl von Befehlen vorhanden ist. Wenn acht Einträge in einer IQ mit 16 Bereichen vorhanden sind, wird es daher vier Kopfbefehle und vier Endbefehle geben. Wenn eine ungerade Zahl von Befehlen vorhanden ist, wird es einen zusätzlichen End- oder Kopfbefehl geben. Wenn es zum Beispiel fünf Einträge gibt, sind die möglichen Konfigurationen zwei Kopf- und drei Endbefehle oder drei Kopf- und zwei Endbefehle. Wenn ein Befehl hinzugefügt wird, der der letzte oder jüngste Befehl ist, wird er ein Endbefehl sein, und Befehle, die früher zur IQ hinzugefügt wurden, können ihren Status als Kopf- oder Endbefehle ändern oder behalten. Wenn zur weiteren Veranschaulichung ein erster Befehl als erster Befehl in eine IQ eingetragen wird, wird er ein Kopfbefehl sein. Ein zweiter Befehl, der zur IQ hinzugefügt wird, wird der jüngste Befehl und ein Endbefehl sein, und der erste Befehl wird ein Kopfbefehl bleiben. Wenn ein dritter Befehl zur IQ hinzugefügt wird, wird er nun der jüngste Befehl und ein Endbefehl sein. Der mittlere bzw. zweite Befehl wird zu einem Kopfbefehl werden oder ein Endbefehl bleiben, da mittlere Befehle bei einer ungeraden Zahl zu beidem werden können.
  • Wie in 2 gezeigt, stellen Ausführungsformen eine GCT 204 bereit, die aus Kopf- 205 und Endsegmenten 206 besteht. Ausführungsformen gemäß kann der Prozess die Befehle 202, 203 verfolgen, um zu bestimmen, ob sie von der Endseite oder Kopfseite der IQ 201 aus ausgeführt werden. Es wird eine Vorhersagetabelle 207 bereitgestellt, die eine Befehlskennung 208 und einen Vorhersagewert 209 enthält, der angibt, ob der Prozess die Ausgabe des Befehls vom Ende oder vom Kopf der GCT 204 vorhersagt. Ausführungsformen sehen vor, dass die Befehlskennung 208 zum Beispiel eine partielle Adresse oder ein Befehls-Tag sein kann. Daher muss nicht der ganze Befehl in der Vorhersagetabelle 207 gespeichert werden. Wenn ein Befehl ausgegeben wird, bestimmt der Prozess Ausführungsformen gemäß die Position des Befehls in der GCT 204 und aktualisiert 210 den Vorhersagewert 209 für die jeweilige Befehlskennung 208.
  • Ausführungsformen sehen vor, dass die Adresse eines jeweiligen Befehls am vorderen Ende der Prozessorpipeline verwendet werden kann, um auf die Vorhersagetabelle zuzugreifen. Ausführungsformen gemäß wird Befehlen mit einem Vorhersagewert, der angibt, dass der Befehl vom Ende der GCT kommen wird, Zuteilungspriorität erteilt. Zum Beispiel können Vorhersagewerte über einem festgelegten Schwellenwert eine Vorhersage angeben, dass der Befehl vom Ende der GCT kommen wird, während Werte unter diesem Schwellenwert angeben können, dass der Befehl vom Kopf kommen wird. Wenn der Befehl ausgegeben wird, verwendet das System Ausführungsformen gemäß die tatsächlich bestimmte Position des Befehls in der GCT, um den Vorhersagewert der jeweiligen Befehlskennung zu aktualisieren.
  • Als ein nicht einschränkendes Beispiel kann ein erster Befehl in der Vergangenheit von der Kopfseite und der Endseite der GCT ausgegeben worden sein, während ein zweiter Befehl stets von der Kopfseite der GCT ausgegeben worden sein kann. Da der zweite Befehl stets von der Kopfseite der GCT ausgegeben wurde, ist es nicht erforderlich, dass er den tieferen Teil der IQ (d. h. den Endabschnitt) benutzt. Daher kann der erste Befehl besser geeignet sein, um von der GCT und IQ mehr Gebrauch zu machen, da er vom Kopf oder vom Ende verschiedener möglicher Befehlsarten kommen kann, wie z. B. Befehle, die den ersten und zweiten Befehlen in diesem Beispiel entsprechen und Varianten davon, die der IQ zugeführt werden. Daher können Ausführungsformen konfiguriert sein, um mehr Befehle wie den ersten Befehl zu senden, der besser in der Lage ist, sowohl die Kopf- als auch die Endsegmente der IQ zu nutzen.
  • Bezug nehmend auf 3, wird ein Flussdiagramm eines beispielhaften Befehlsausgabevorhersage- und Priorisierungsprozesses nach einer Ausführungsform gezeigt. Für jeden Thread wird der Befehl am Kopf der Decodierungswarteschlange geprüft 301, und der Prozess weist die Priorität 302 für die Zuteilung im Prozessorzyklus zu. Der Prozess verwendet die Adresse des in die Prädiktorfeldgruppe nach dem Hashverfahren einzutragenden Befehls 303. Wenn die Befehlsadresse gefunden wird, greift der Prozess auf den Vorhersagewert des Befehls zu 304, um zu bestimmen, ob der Befehl voraussichtlich vom Ende oder vom Kopf der GCT 305 kommen wird. Der Prozess gibt Befehlen aus einem gegebenen Thread, die mit höherer Wahrscheinlichkeit vom Ende der GCT kommen, Priorität beim Eintrag in die DQ und folglich beim Eintrag in die IQ 306. Wenn der Befehl zur Ausführung gewählt wird, bestimmt der Prozess die Position des Befehls in der GCT 307. Der Prozess aktualisiert den Vorhersagewert für den Befehl in der Vorhersagetabelle 308. Als nicht einschränkendes Beispiel kann der Prozess bei Verwendung eines Zwei-Bit-Vorhersagewerts den Prädiktorwert um eins inkrementieren, wenn der Befehl vom Ende der GCT kommt; andernfalls kann der Prozess den Prädiktorwert um eins dekrementieren. Zur weiteren Veranschaulichung können Vorhersagewerte für Köpfe, wieder bei Verwendung eines Zwei-Bit-Werts, aus 00 und 01 bestehen, während Werte für Enden aus 10 und 11 bestehen können. Daher sagt der Prozess jedes Mal Enden voraus, wenn der Zähler um eins inkrementiert wird, um sich drei zu nähern. Sobald drei erreicht wird, ist der Vorhersagewert bei diesem Wert gesättigt. Der entsprechende Prozess für Enden kann darin bestehen, den Vorhersagewert um eins zu dekrementieren und bei einem Wert von null zu sättigen. Auch wenn das obige nicht einschränkende Beispiel eines Vorhersagewerts einen Zwei-Bit-Wert umfasst, sind die Vorhersagewerte Ausführungsformen gemäß nicht darauf eingeschränkt, da Vorhersagewerte jede Form aufweisen können, die in der Lage ist, Daten zu speichern, die angeben, ob ein Befehl voraussichtlich vom Kopf oder vom Ende kommen wird. Zum Beispiel kann ein Vorhersagewert Ausführungsformen gemäß nur aus einem Bit bestehen, z. B. 0 für Köpfe und 1 für Enden, oder er kann aus mehreren Bits bestehen, die eventuell Zusatzinformation speichern.
  • Ausführungsformen stellen einen Prozess bereit, der eine Vorhersagefeldgruppe verwendet, um die Wirksamkeit der Threadpriorisierungsentscheidungen zu verfolgen. Zudem sind Ausführungsformen konfiguriert, um Korrekturmaßnahmen wie z. B. die Aktualisierung der Information bezüglich der Herkunft von Befehlen vorzusehen, um bei der künftigen Ausführung derselben Befehle eine wiederholte ineffiziente Threadpriorisierung zu vermeiden. Die Vorhersageprozess-, Threadzuteilungs- und Ausgabepriorisierungskonfigurationen der hierin beschriebenen Ausführungsformen erhöhen die Gesamtleistung von Multithread-Prozessoren. Wie der Fachmann erkennen wird, können Aspekte der Ausführungsformen der hierin beschriebenen Vorhersage- und Priorisierungsprozesse zudem modifiziert werden, indem z. B. mehr Information in den Vorhersageprozess aufgenommen wird, einschließlich ausstehender Speicherzugriffe oder der Verzweigungsvorhersagekonfidenz.
  • Bezug nehmend auf 4, ist leicht zu ersehen, dass bestimmte Ausführungsformen mit einer großen Vielfalt von Geräten oder Gerätekombinationen realisiert werden können. Ein Beispielgerät, das zur Realisierung von Ausführungsformen verwendet werden kann, umfasst einen Rechner in Form eines Computers 410, der die Form eines Servers, eines Arbeitsstation-Computers, eines Mobilgeräts und dergleichen annehmen kann. In diesem Kontext kann der Computer 410 Programmbefehle ausführen, die konfiguriert sind, um eine prädiktive Platzierung von Inhalt durch Netzanalyse bereitzustellen und andere Funktionalitäten der Ausführungsformen durchzuführen, wie hierin beschrieben.
  • Die Komponenten des Computers 410 können, ohne aber darauf beschränkt zu sein, mindestens eine Verarbeitungseinheit 420, einen Systemspeicher 430 und einen Systembus 422 umfassen, der verschiedene Systemkomponenten einschließlich des Systemspeichers 430 mit der (den) Verarbeitungseinheit(en) 420 verbindet. Der Computer 410 kann verschiedene computerlesbare Medien einschließen oder darauf Zugriff haben. Der Systemspeicher 430 kann computerlesbare Speichermedien in Form eines flüchtigen und/oder nicht flüchtigen Speichers wie z. B. Nur-Lese-Speicher (ROM) und/oder Arbeitsspeicher (RAM) umfassen. Beispielsweise, und auf nicht einschränkende Weise, kann der Systemspeicher 430 auch ein Betriebssystem, Anwendungsprogramme, andere Programmmodule und Programmdaten enthalten.
  • Ein Benutzer kann über Eingabegeräte 440 mit dem Computer 410 interagieren (zum Beispiel Befehle und Information eingeben). Ein Bildschirm oder ein anderer Gerätetyp kann über eine Schnittstelle wie z. B. eine Ausgabeschnittstelle 450 mit dem Systembus 422 verbunden sein. Zusätzlich zu einem Bildschirm können Computer auch andere Peripherieausgabegeräte umfassen. Der Computer 410 kann in einer vernetzten oder verteilten Umgebung mit logischen Verbindungen (Netzwerkschnittstelle 460) zu anderen fernen Computern oder Datenbanken (entfernte Einheit(en) 470) betrieben werden. Die logischen Verbindungen können ein Netz wie z. B. ein lokales Netz (LAN), ein Weitverkehrsnetz (WAN), ein Mobilfunknetz umfassen, aber auch andere Netze einschließen.
  • Der Fachmann wird erkennen, dass Aspekte als System, Verfahren oder Computerprogrammerzeugnis ausgeführt werden können. Daher können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardware-Ausführungsform, einer kompletten Software-Ausführungsform (einschließlich Firmware, speicherresidenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hierin alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammerzeugnisses annehmen, das in einem computerlesbaren Medium oder in mehreren computerlesbaren Medien mit einem darauf ausgeführten computerlesbaren Programmcode ausgeführt ist.
  • Jede Kombination eines computerlesbaren Mediums oder mehrerer computerlesbarer Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbarer Signalträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne aber darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine entsprechende Vorrichtung oder Einheit oder jede geeignete Kombination des Vorstehenden sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums schließen folgendes ein: eine elektrische Verbindung mit einem Draht oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), eine Glasfaser, eine CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit enthalten oder speichern kann.
  • Ein computerlesbarer Signalträger kann ein zum Beispiel im Basisband oder als Teil einer Trägerwelle verbreitetes Datensignal mit einem computerlesbaren Programmcode sein, der darin ausgeführt ist. Ein derartiges verbreitetes Signal kann verschiedene Formen annehmen, einschließlich, ohne aber darauf beschränkt zu sein, elektromagnetisch, optisch oder jede geeignete Kombination daraus. Ein computerlesbarer Signalträger kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit übertragen, verbreiten oder transportieren kann.
  • Der Programmcode, der auf einem computerlesbaren Medium ausgeführt ist, kann durch jedes geeignete Medium übertragen werden, einschließlich, ohne aber darauf beschränkt zu sein, drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw., oder jede geeignete Kombination des Vorstehenden.
  • Der Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und konventioneller prozeduraler Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann gänzlich auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder gänzlich auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer durch jede Art von Netz einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) mit dem Computer eines Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet durch einen Internet-Dienstanbieter).
  • Aspekte der vorliegenden Erfindung werden im Folgenden Bezug nehmend auf Fluss- und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammerzeugnissen nach Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Fluss- und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockdiagrammen durch Computerprogrammbefehle realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Mehrzweckcomputers, Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine so bereitgestellt werden, dass die Befehle, die über den Prozessor des Computers oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Durchführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass die Befehle, die im computerlesbaren Medium gespeichert sind, ein Erzeugnis mit Befehlen ergeben, die die Funktionen/Vorgänge durchführen, die die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind. Die Computerprogrammbefehle können auch in einen Computer, in eine andere programmierbare Datenverarbeitungsvorrichtung oder in sonstige Einheiten geladen werden, um die Durchführung einer Reihe von Arbeitsgängen auf dem Computer, der anderen programmierbaren Vorrichtung oder sonstigen Einheiten zu bewirken, um einen computergestützten Prozess zu ergeben, sodass die Befehle, die auf dem Computer oder der sonstigen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
  • Diese Offenbarung soll der Veranschaulichung und Beschreibung dienen, ohne aber erschöpfend oder einschränkend zu sein. Dem Fachmann werden viele Modifikationen und Varianten einfallen. Die beispielhaften Ausführungsformen wurden gewählt und beschrieben, um die Prinzipien und die praktische Anwendung zu beschreiben und anderen Fachleuten das Verständnis der Offenbarung für verschiedene Ausführungsformen mit verschiedenen Modifikationen zu ermöglichen, wie sie für den in Betracht gezogenen speziellen Gebrauch geeignet sind.
  • Auch wenn hierin veranschaulichende Beispielausführungsformen Bezug nehmend auf die beiliegenden Zeichnungen beschrieben wurden, versteht es sich, dass Ausführungsformen nicht auf diese präzisen Beispielausführungsformen beschränkt sind, und dass verschiedene andere Änderungen und Modifikationen von einem Fachmann vorgenommen werden können, ohne vom Umfang oder Geist der Offenbarung abzuweichen.

Claims (14)

  1. Verfahren zur Vorhersage ungeordneter Parallelverarbeitung von Befehlen von Threads, die in einem Multithread-Prozessor ausgeführt werden, aufweisend: Verfolgen des Abschlusses von Befehlen mithilfe einer globalen Abschlusstabelle, die ein Kopfsegment und ein Endsegment aufweist; Speichern von Vorhersagewerten für jeden Befehl in einer Vorhersagetabelle, die über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei ein Vorhersagewert konfiguriert ist, um anzugeben, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und Vorhersagen, dass Threads mit mehr Befehlen vom Endsegment einen höheren Grad an ungeordneter Parallelverarbeitung der Befehle aufweisen.
  2. Das Verfahren nach Anspruch 1, außerdem aufweisend ein Aktualisieren der Vorhersagetabelle für jeden Befehl nach eine Bestimmung, ob eine Ausführung im Kopfsegment oder im Endsegment der globalen Abschlusstabelle aufgetreten ist.
  3. Das Verfahren nach Anspruch 2, wobei ein Aktualisieren der Vorhersagetabelle aufweist: Vergrößern des Vorhersagewertes um eins, wenn ein Befehl vom Endsegment der globalen Abschlusstabelle kommt; und Verkleinern des Vorhersagewertes um eins, wenn der Befehl vom Kopfsegment der globalen Abschlusstabelle kommt.
  4. Das Verfahren nach Anspruch 2 oder 3, außerdem aufweisend ein Priorisieren einer Planung von Befehlen in einem Multithread-Prozessor durch Auffinden eines Vorhersagewertes, der jedem Befehl zugeordnet ist, der in eine Pipeline zur Ausführung im Multithread-Prozessor eintritt, und Zuweisen einer Priorität an jeden Befehl auf Basis des Vorhersagewertes.
  5. Das Verfahren nach einem der Ansprüche 1 bis 4, wobei der Multithread-Prozessor einen SMT-Prozessor aufweist.
  6. Das Verfahren nach einem der Ansprüche 1 bis 4, wobei der Multithread-Prozessor einen feinkörnigen Multithread-Prozessor aufweist.
  7. Das Verfahren nach einem beliebigen der vorherigen Ansprüche, wobei der Multithread-Prozessor Befehle mithilfe einer Pipeline ausführt, die eine Ausgabewarteschlange nutzt.
  8. Das Verfahren nach einem beliebigen der vorherigen Ansprüche, wobei das Kopfsegment einen ältesten Befehl aufweist und das Endsegment einen jüngsten Befehl aufweist.
  9. Das Verfahren nach einem beliebigen der vorherigen Ansprüche, wobei die Befehlskennung eine partielle Befehlsadresse aufweist.
  10. Das Verfahren nach einem beliebigen der vorherigen Ansprüche, wobei der Vorhersagewert einen Zwei-Bit-Wert umfasst.
  11. Ein System zur Vorhersage ungeordnete Parallelverarbeitung von Befehlen von Threads, die in einem Multithread-Prozessor ausgeführt werden, aufweisend: eine globale Abschlusstabelle mit einem Kopfsegment und einem Endsegment, wobei die globale Abschlusstabelle konfiguriert ist, um einen Abschluss von Befehlen zu verfolgen; einen Vorhersagewert, der angibt, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und eine Vorhersagetabelle, die konfiguriert ist, um den Vorhersagewert für jeden Befehl zu speichern, wobei die Vorhersagetabelle über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei für Threads mit mehr Befehlen vom Endsegment ein höherer Grad an ungeordneter Parallelverarbeitung der Befehle vorhergesagt wird, und wobei das System angepasst ist, das Verfahren nach einem der Ansprüche 1 bis 10 durchzuführen.
  12. Ein Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium mit computerlesbarem Programmcode, konfiguriert, um eine ungeordnete Parallelverarbeitung von Befehlen von Threads vorherzusagen, die in einem Multithread-Prozessor ausgeführt werden, der damit ausgeführt wird, wobei der computerlesbare Programmcode aufweist: computerlesbaren Programmcode, konfiguriert, um einen Abschluss von Befehlen mithilfe einer globalen Abschlusstabelle zu verfolgen, die ein Kopfsegment und ein Endsegment aufweist; computerlesbaren Programmcode, konfiguriert, um Vorhersagewerte für jeden Befehl in einer Vorhersagetabelle zu speichern, die über Befehlskennungen indiziert ist, die jedem Befehl zugeordnet sind, wobei ein Vorhersagewert konfiguriert ist, um anzugeben, ob ein Befehl voraussichtlich vom Kopfsegment oder vom Endsegment kommen wird; und computerlesbaren Programmcode, konfiguriert, um für Threads mit mehr Befehlen vom Endsegment einen höheren Grad an ungeordneter Parallelverarbeitung der Befehle vorherzusagen.
  13. Ein Computerprogrammprodukt nach Anspruch 12, außerdem aufweisend computerlesbaren Programmcode, konfiguriert, um die Vorhersagetabelle für jeden Befehl zu aktualisieren, nachdem bestimmt wurde, ob die Ausführung am Kopfsegment oder am Endsegment der globalen Abschlusstabelle aufgetreten ist.
  14. Ein Computerprogrammprodukt nach Anspruch 12 oder 13, außerdem umfassend computerlesbaren Programmcode, konfiguriert, um eine Planung von Befehlen in einem Multithread-Prozessor durch Auffinden eines Vorhersagewertes zu priorisieren, der jedem Befehl zugeordnet ist, der in eine Pipeline zur Ausführung im Multithread-Prozessor eintritt, und jedem Befehl auf der Basis des Vorhersagewertes eine Priorität zuzuweisen.
DE102012210895A 2011-06-29 2012-06-26 Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor Ceased DE102012210895A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/172,218 2011-06-29
US13/172,218 US9652243B2 (en) 2011-06-29 2011-06-29 Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor

Publications (1)

Publication Number Publication Date
DE102012210895A1 true DE102012210895A1 (de) 2013-01-03

Family

ID=46641257

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012210895A Ceased DE102012210895A1 (de) 2011-06-29 2012-06-26 Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor

Country Status (3)

Country Link
US (1) US9652243B2 (de)
DE (1) DE102012210895A1 (de)
GB (1) GB2492457A (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018200948A1 (de) 2018-01-22 2019-07-25 Magna powertrain gmbh & co kg Fahrzeug mit Verteilergetriebe und Verfahren zum Betrieb eines Fahrzeugs mit einem Verteilergetriebe
DE102018200950A1 (de) 2018-01-22 2019-07-25 Magna powertrain gmbh & co kg Fahrzeug mit Verteilergetriebe und Verfahren zum Betrieb eines Fahrzeugs mit einem Verteilergetriebe

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223124B2 (en) * 2013-01-11 2019-03-05 Advanced Micro Devices, Inc. Thread selection at a processor based on branch prediction confidence
US8938697B1 (en) 2013-08-27 2015-01-20 United Microelectronics Corp. Method of performing optical proximity correction for preparing mask projected onto wafer by photolithography
US10007525B2 (en) 2014-10-24 2018-06-26 International Business Machines Corporation Freelist based global completion table having both thread-specific and global completion table identifiers
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10268482B2 (en) 2015-12-15 2019-04-23 International Business Machines Corporation Multi-slice processor issue of a dependent instruction in an issue queue based on issue of a producer instruction
US10324727B2 (en) * 2016-08-17 2019-06-18 Arm Limited Memory dependence prediction
US10599431B2 (en) 2017-07-17 2020-03-24 International Business Machines Corporation Managing backend resources via frontend steering or stalls
US10831678B2 (en) * 2017-11-21 2020-11-10 Arm Limited Multi-tier cache placement mechanism
ES2697548B2 (es) * 2018-03-20 2020-07-22 Univ Madrid Politecnica Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza
US10977041B2 (en) 2019-02-27 2021-04-13 International Business Machines Corporation Offset-based mechanism for storage in global completion tables
US10956168B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Post completion execution in an out-of-order processor design

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6721874B1 (en) * 2000-10-12 2004-04-13 International Business Machines Corporation Method and system for dynamically shared completion table supporting multiple threads in a processing system
US6988186B2 (en) 2001-06-28 2006-01-17 International Business Machines Corporation Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
US7363625B2 (en) 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7392366B2 (en) 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US8756605B2 (en) 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging
US20090193240A1 (en) 2008-01-30 2009-07-30 Ibm Corporation Method and apparatus for increasing thread priority in response to flush information in a multi-threaded processor of an information handling system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018200948A1 (de) 2018-01-22 2019-07-25 Magna powertrain gmbh & co kg Fahrzeug mit Verteilergetriebe und Verfahren zum Betrieb eines Fahrzeugs mit einem Verteilergetriebe
DE102018200950A1 (de) 2018-01-22 2019-07-25 Magna powertrain gmbh & co kg Fahrzeug mit Verteilergetriebe und Verfahren zum Betrieb eines Fahrzeugs mit einem Verteilergetriebe
WO2019141459A1 (de) 2018-01-22 2019-07-25 Magna powertrain gmbh & co kg Fahrzeug mit verteilergetriebe und verfahren zum betrieb eines fahrzeugs mit einem verteilergetriebe

Also Published As

Publication number Publication date
GB2492457A (en) 2013-01-02
US9652243B2 (en) 2017-05-16
US20130007423A1 (en) 2013-01-03
GB201210975D0 (en) 2012-08-01

Similar Documents

Publication Publication Date Title
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE4227345C2 (de) Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem
DE69606648T2 (de) Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE60032481T2 (de) Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE112012002664B4 (de) Erhöhen der Energieeffizienz des Turbo-Modus-Betriebs in einem Prozessor
DE60029158T2 (de) Verfahren zur Verbesserung der Leistung eines Multiprozessorsystems mit einer Aufgabenwarteschlange und Systemarchitektur zu deren Betrieb
DE69824688T2 (de) System und Verfahren zur Leistungsoptimierung eines Rechnersystems
DE112013000486T5 (de) Anweisungsausgleich durch Anweisungsunsicherheit für Prozessoren mit mehreren Threads
DE10393481B4 (de) Verfahren und Vorrichtung zum Management einer Cache-Umgehung
DE112011101086T5 (de) Optimieren von Energieverbrauch und Anwendungsleistung in einem Multithread-Mehrkernprozessorsystem
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE112020004661B4 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112010003595T5 (de) Verfahren, System und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE112015004750T5 (de) Eine beinahe faire aktive sperre
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches

Legal Events

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

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final