DE10306051A1 - Kernparallele Ausführung mit unterschiedlichen Optimierungscharakteristika, um den dynamischen Ausführungsweg zu verringern - Google Patents

Kernparallele Ausführung mit unterschiedlichen Optimierungscharakteristika, um den dynamischen Ausführungsweg zu verringern

Info

Publication number
DE10306051A1
DE10306051A1 DE10306051A DE10306051A DE10306051A1 DE 10306051 A1 DE10306051 A1 DE 10306051A1 DE 10306051 A DE10306051 A DE 10306051A DE 10306051 A DE10306051 A DE 10306051A DE 10306051 A1 DE10306051 A1 DE 10306051A1
Authority
DE
Germany
Prior art keywords
paths
heuristic
processing
command
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10306051A
Other languages
English (en)
Other versions
DE10306051B4 (de
Inventor
Donald C Soltis Jr
Eric Delano
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10306051A1 publication Critical patent/DE10306051A1/de
Application granted granted Critical
Publication of DE10306051B4 publication Critical patent/DE10306051B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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

Die Erfindung schafft einen Prozessor mit zwei oder mehreren parallelen Befehlwegen zum Verarbeiten von Befehlen. Die Befehlswege können mit einer Mehrzahl von Kernen auf einem gemeinsamen Chip implementiert sein. Befehle der Erfindung werden vorzugsweise innerhalb eines Bündels von zwei oder mehr Befehlen eines gemeinsamen Programmteilprozesses verarbeitet, und jeder der Befehlswege bildet vorzugsweise ein Cluster, um gebündelte Befehle zu verarbeiten. Jeder der Befehlswege weist ein Array von zeitverschachtelt arbeitenden Ausführungseinheiten auf. Anfänglich verarbeiten zwei oder mehr der parallelen Befehlswege denselben Programmteilprozeß (eines oder mehrere Bündel) durch dieselben Ausführungseinheiten, aber mit unterschiedlichen Optimierungscharakteristika, die für jeden Weg gesetzt sind. Die Bewertungslogik überwacht die Verarbeitung des Anfangs-Programmteilprozesses durch die Ausführungseinheiten und wählt die Heuristik aus, die definiert, welcher Pfad in Führung ist. Die anderen Befehlspfade werden dann neu zugeordnet oder mit den Optimierungscharakteristika des führenden Befehlsweges oder mit ähnlichen optimierten Charakteristika synchronisiert, um andere Bündel des Programmteilprozesses zu verarbeiten, vorzugsweise setzt der führende Weg das Verarbeiten des Anfangs-Teilprozesses fort, ohne gestört zu werden. Bei anderen Programmteilprozessen kann der Prozeß beim Verarbeiten gleicher Bündel durch mehrere Befehlswege wiederholt werden, um die bevorzugte Heuristik ...

Description

  • Die parallele Ausführung von Befehlen durch Ausführungseinheiten oder Pipelines ist in der Technik bekannt, um EPIC- Prozessoren vorteilhaft zu unterstützen. Bestimmte dieser Prozessoren verwenden redundante Verarbeitungskerne auf einem gemeinsamen Chip. Es ist in der Technik ferner bekannt, Ausführungseinheiten als ein "Cluster" zu gruppieren, um Befehle als ein "Bündel" zu verarbeiten. Ein derartiges Bündel weist drei Befehle auf; jedes Cluster wirkt, um ein Bündel oder mehr von Befehlen zu verarbeiten.
  • Bestimmte EPIC-Prozessoren verwenden eine Heuristik, um eine Antwort auf eine Programmabfrage vorzuschlagen. Beispielsweise kann die interner Logik und die Software eines Prozessors Programmcachefehlgriffe ("Cache Misses") während der Laufaktivität überwachen und dann eine Heuristik anlegen, um Vorabrufhinweise ("Prefetch Hints") korrekt zu setzten.
  • VLSI-Entwerfer und -Softwaretechniker betreiben beträchtlichen Aufwand zum Optimieren von Hardware- und Software- Entwürfen von EPIC-Prozessoren, und von deren Leit- Heuristik, um die Verarbeitung von Befehlen und/oder gebündelten Befehlen durch die Pipelines zu beschleunigen. Weitere Entwicklungen werden gesucht, um schnellere und stabilere Prozessoren zu liefern.
  • Die Erfindung schafft einen Vorteil in der Technik von Verarbeitungsarchitekturen durch Bereitstellen von Verfahren und Systemen zum Verarbeiten von Befehlen durch Ausführungseinheiten. Ein Merkmal der Erfindung ist es, einen Prozessor mit Dualkernen zum Optimieren der Verarbeitung von gebündelten Befehlen zu liefern. Verschiedene andere Merkmale der Erfindung gehen aus der nachfolgenden Beschreibung hervor.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Optimieren der Verarbeitungsbefehle durch einen Prozessor, einen Prozessor zum Verarbeiten von Programmbefehlen und einen Prozessor mit zumindest zwei parallelen Befehlswegen mit verbesserten Charakteristika zu schaffen. Diese Aufgabe wird durch eine Verfahren gemäß Anspruch 1 und durch einen Prozessor gemäß Anspruch 11 oder 19 gelöst.
  • Die nachfolgenden Patente liefern einen nützlichen Hintergrund der Erfindung und sind hierin durch Bezugnahme aufgenommen: das U.S.-Patent Nr. 6,188, 633; das U.S.-Patent Nr. 6,105,123; das U.S.-Patent Nr. 5,857,104; das U.S.-Patent Nr. 5,809,275; das U.S.-Patent Nr. 5,778,219; das U.S.- Patent Nr. 5,761,490; das U.S.-Patent Nr. 5,721,865 und das U.S.-Patent Nr. 5,513,363.
  • Wie er hierin verwendet wird, ist ein Befehl ein "Erzeuger", wenn dieser Befehl Daten erzeugt, die in ein Register geschrieben werden sollen, und diese Daten für ein Umleiten oder eine Datenweiterleitung verfügbar sind. Ein Befehl ist ein "Verbraucher", wenn dieser Befehl die Umleitungsdaten verwendet.
  • Gemäß einem Aspekt liefert die Erfindung einen Prozessor mit zwei oder mehreren parallelen Befehlswegen zum Verarbeiten von Befehlen. Beispielweise können die Befehlswege mit einer Mehrzahl von Kernen auf einem gemeinsamen Chip implementiert sein. Befehle der Erfindung werden vorzugsweise innerhalb eines Bündels von zwei oder mehr Befehlen eines gemeinsamen Programmteilprozesses verarbeitet; und jeder der Befehlswege bildet vorzugsweise ein Cluster, um gebündelte Befehle zu verarbeiten. Jeder der Befehlswege weist ein Array von pipelineartigen Ausführungseinheiten auf. Anfänglich verarbeiten zwei oder mehr der parallelen Befehlswege denselben Programmteilprozeß (eines oder mehrere Bündel) durch die Ausführungseinheiten, jedoch mit unterschiedlichen Optimierungscharakteristika, die für jeden Weg gesetzt sind. Die Bewertungslogik überwacht die Verarbeitung des Anfangs-Programmteilprozesses durch die Ausführungseinheiten und wählt die Heuristik auf, die definiert, welcher Weg vorne ist. Die anderen Befehlswege werden dann neu zugewiesen, oder synchronisiert, mit den Optimierungscharakteristika des führenden Befehlsweges, oder mit ähnlichen optimierten Charakteristika, um andere Bündel des Programmteilprozesses zu verarbeiten; vorzugsweise setzt der führende Weg das Verarbeiten des Anfangs-Teilprozesses fort, ohne unterbrochen zu werden. Bei anderen Programmteilprozessen oder "Programmthreads" kann der Prozeß beim Verarbeiten ähnlicher Bündel durch mehrere Befehlswege wiederholt werden, um die bevorzugte Heuristik zu identifizieren; worauf die mehreren Befehlswege auf die optimierten Charakteristika synchronisiert werden, um das Verhalten zu verbessern.
  • Sobald optimierte Charakteristika zugeordnet sind, verarbeitet jeder Befehlsweg Programmteilprozesse zu entworfenen Zuständen mit verbessertem Verhalten. Der Prozessor verbessert das Verhalten gegenüber der Technik durch erneutes Zuweisen der Optimierungscharakteristika paralleler Ausführungseinheiten gemäß der bevorzugten Heuristik, die durch ein Vorab-Verarbeiten gleicher Bündel durch die Ausführungseinheiten identifiziert wird. Effektiv werden Optimierungscharakteristika mit schlechterem Verhalten aus den Ausführungseinheiten für einen gegebenen Teilprozeß entfernt.
  • Die Bewertungslogik eines Aspekts umfaßt eine dynamische Hardwarelogik, die vorzugsweise auf dem Chip eingelagert ist, wobei die parallelen Kerne die Befehlswege definieren.
  • Die Bewertungslogik kann ferner eine dynamische Software umfassen. Beispielsweise können die dynamische Hardwarelogik und die Software mindestens entweder die CPU-gebundene Heuristik oder die Speicher-gebundene Heuristik verwenden, um die Befehle durch die Pipelines zu verarbeiten. Eine Speicher-gebundene Heuristik kann z. B. mindestens entweder Laden- und Speichern-Routinen, ein Cache-Referenzieren und eine Latenzzeit für Verbraucheranforderungen umfassen. Beispielsweise können Laden- und Speichern-Operationen gemäß einer gesetzten Heuristik gehandhabt werden.
  • Eine Zweigvorhersage - die Fachleuten auf dem Gebiet bekannt ist - kann ebenfalls in einem Aspekt der Erfindung umfaßt sein, um das Prozessorverhalten zu verbessern. Durch Ausführen von zwei identischen Bündeln eines Programmteilprozesses durch parallele Verarbeitungscluster, aber mit eindeutigen Optimierungscharakteristika für jedes Cluster, kann eine Zweigvorhersageheuristik ein besseres oder schnelleres Ergebnis in einem der Cluster im Vergleich zu dem anderen erzeugen. Dementsprechend, durch erneutes Zuweisen beider Cluster zu den optimierten Zweigvorhersagecharakteristika, können andere Bündel für diesen Teilprozeß effizient durch die Cluster mit einem verbesserten Verhalten verarbeitet werden.
  • Das Vorab-Abrufen ist Fachleuten auf dem Gebiet ebenfalls bekannt und kann eine andere Heuristik zur Verwendung mit der Erfindung definieren, um das Prozessorverhalten zu verbessern. Zum Beispiel durch Ausführen von zwei identischen Bündeln eines Programmteilprozesses durch parallele Verarbeitungscluster, aber mit unterschiedlichen Optimierungscharakteristika innerhalb der Cluster, kann eine Vorab-Abrufheuristik ein besseres oder schnelleres Ergebnis in einem der Cluster im Vergleich zu dem anderen erzeugen. Dementsprechend, durch Neuzuweisen beider Cluster zu den optimierten Vorab-Abrufcharakteristika können andere Bündel für diesen Teilprozeß effizient durch die Cluster mit einem verbesserten Verhalten verarbeitet werden.
  • Die Erfindung schafft bestimmte Vorteile, insbesondere beim Verstärken des Verhaltens eines einzelnen Teilprozesses einer zentralen Verarbeitungseinheit (CPU = Central Processing Unit). Genauer gesagt können gemäß der Erfindung mehr Befehle pro Zyklus durch die CPU für ein gegebenes Programm verarbeitet werden, da repräsentative Befehle aus diesem Programm spekulativ verarbeitet werden, durch mehrere Befehlswege, um optimierte Verarbeitungscharakteristika zu definieren. Zukünftig entworfene Zustände für einen Programmteilprozeß werden dann vorzugsweise über alle Befehlswege mit den optimierten Charakteristika verarbeitet.
  • Bei einem Aspekt wählt eine Konfigurationsmodus eine Heuristik für einen Befehlsweg aus, z. B., um einen Vorab- Abrufalgorithmus zu definieren. Eine Mehrzahl von Befehlswegen verarbeiten dieselben Befehlsbündel gleichzeitig, aber jeweils mit unterschiedlichen Optimierungscharakteristika. Die Bewertungslogik überwacht das Verarbeiten der Bündel und wählt den schnellsten Befehlsweg aus; dieselbe zeichnet die optimierte Heuristik auf und die anderen Befehlswege werden mit den Optimierungscharakteristika des leitenden Befehlswegs oder ähnlich zu denselben neu synchronisiert, um eine dynamische Optimierung für die Programmteilprozesse zu liefern. Bei einem Aspekt versendet ein Hardwarekompilierer Programmteilprozesse durch die parallelen Befehlswege, bis die Bewertungslogik die optimierten Charakteristika für andere Wege bestimmt; an diesem Punkt versendet der Hardwarekompilierer Programmteilprozesse durch die Befehlswege und ohne Redundanz, um das Programm zu verarbeiten. Die Bewertungslogik nähert sich asymptotisch an die "idealen" Optimierungscharakteristika an, mit einer längeren Zeitperiode zum Analysieren der Verarbeitung von gleichen Befehlen durch verschiedene Heuristiken, die den mehreren Befehlswegen zugeordnet sind.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgende bezugnehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • Fig. 1 schematisch eine Verarbeitungseinheit der Erfindung zum Verarbeiten von Befehlen durch mehrere Befehlswege;
  • Fig. 2 schematisch ein Flußdiagramm, das die Optimierung von parallelen Befehlswegen mit einer Heuristik darstellt, die durch eine Vorabverarbeitung von gleichen Befehlen gemäß der Erfindung definiert ist; und
  • Fig. 3 ein Diagramm eines verbesserten Verhaltens einer dynamischen Ausführungspfadlänge im Lauf der Zeit gemäß einer bevorzugten Optimierung von Ausführungseinheiten gemäß der Erfindung.
  • Fig. 1 zeigt eine Prozessorarchitektur 10 der Erfindung. Die Architektur 10 weist ein Array von Ausführungswegen 12 (1), 12 (2). . . 12 (N) auf, die Befehle verarbeiten, durch die Ausführungseinheiten 14 (1), . . . bzw. 14 (N). Die Ausführungseinheiten 14 umfassen ein Array von Pipelineausführungseinheiten 16, die Fachleuten auf dem Gebiet bekannt sind, um Befehle auf individuellen Stufen zu verarbeiten, wie z. B. der Abrufstufe F, der Registerlesestufe R, der Ausführungsstufe E, der Ausnahmeerfassungsstufe D und der Zurückschreibestufe W. Jeder Befehlsweg 12 kann als ein Programmierkern innerhalb eines EPIC-Prozessors implementiert sein, und auf einem gemeinsamen Chip; die Erfindung eines Ausführungsbeispiels bildet zwei parallele Cluster mit nur den Wegen 12 (1) und 12 (2) auf einem Chip.
  • Der Prozessor 10 empfängt Befehle von einem Hauptspeichersystem-Befehlsbus 20 und zwischenspeichert dieselben in den Befehlscaches 22 (1), 22 (2). . . 22 (N). Bei jedem Weg 12 führt die Abruflogik, die darstellend als Abrufheuristik 24gezeigt ist, ein Abrufen und ein Vorab-Abrufen von Befehlen aus deren Cache 22 gemäß einer oder mehreren Charakteristika durch, die die Heuristik für derartige Operationen definieren.
  • Bei dem bevorzugten Ausführungsbeispiel werden die Befehle innerhalb eines Befehlscaches 22 gebündelt und dann durch einen Befehlausgabeabschnitt 26 ausgegeben. Bei diesem Ausführungsbeispiel kann jeder Befehlsweg 12 als ein Cluster implementiert sein, um die gebündelten Befehle zu verarbeiten; diese Cluster können ferner als mehrere Programmierkerne auf einem gemeinsamen Chip gebildet sein.
  • Für jeden Weg 12 ist die Verarbeitung von Befehlen durch die Ausführungseinheiten 14 durch die Ausführungsheuristik 28 vorgegeben. Beispielsweise werden spekulative Operationen, wie z. B. Zweigvorhersagen und/oder andere Grenzheuristiken (z. B. Speicher- oder CPU-Grenzheuristik) gemäß der Ausführungsheuristik 28 gesetzt. Für jeden Weg 12 geht die Ausführung von Befehlen durch die Pipelines 16 daher gemäß einer oder mehreren Charakteristika voran, die die Heuristik 28 für derartige Operationen definieren.
  • Ein Datencache 30 kann für jeden Befehlsweg 12 umfaßt sein; der Cache 30 kann z. B. verwendet werden, um spekulative Transaktionen zu speichern. Die Cacheverwendung ist ferner vorzugsweise durch die Cacheheuristik 32 beschränkt. Beispielsweise kann die Steuerung von Cachefehlgriffen gemäß einer oder mehreren Charakteristika gesetzt sein, die die Heuristik 32 für derartige Operationen definieren.
  • Der Prozessor 10 umfaßt ferner eine Bewertungs- und Kompilierungs-Logik 50. Die Logik 50 ist mit jeder der Heuristiken 24, 28, 32 verbunden, wie gezeigt ist. In Betrieb überwacht der Bewertungsteil der Logik 50 die Befehlsverarbeitung innerhalb jedes Befehlsweges 12; und der Kompiliererteil der Logik 50 modifiziert die Charakteristika, die innerhalb der Heuristiken 24, 28 und 32 gesetzt sind, um das Prozessorverhalten gemäß den Lehren hierin zu verbessern. Fachleute auf dem Gebiet erkennen, daß die Logik 50 alternativ mit einer oder zwei der Heuristiken 24, 28, 32 verbunden sein kann, ohne von dem Umfang der Erfindung abzuweichen. Ferner können die EPIC-Prozessoren eine andere Heuristik und Logik umfassen, die gemäß den Lehren hierin überwacht und gestört werden kann, um das Prozessorverhalten zu verbessern.
  • Genauer gesagt stellt Fig. 2 dar, wie Befehle durch die Prozessorarchitektur 10 verarbeitet werden können. Ein Anfangspogrammteilprozeß beginnt bei Schritt 102. Befehle des Teilprozesses werden bei Schritt 104 als Bündel ausgegeben und dann gleichzeitig auf zwei oder mehreren Befehlswegen (jeder mit einer unterschiedlichen Heuristik) bei Schritt 106 verarbeitet. Die Bewertungslogik überwacht das Verarbeiten der Bündel durch die Befehlswege bei Schritt 108, bis dieselbe bestimmt bei Schritt 110, daß ein bestimmter Befehlsweg führend ist. Wenn ein führender Befehlsweg bestimmt wird, kann ein Zweig bei JA (1) auftreten und die anderen Befehlswege werden mit der Heuristik des führenden Befehlswegs bei Schritt 112 synchronisiert. Die Fortsetzung über Schritt 110 hinaus kann sich verzögern, aufgrund der Entwurfsauswahl, um asymptotisch eine immer bessere Optimierungsheuristik zu definieren. Nach Schritt 112 wird das Verarbeiten des Programmteilprozesses bei Schritt 114 fortgesetzt, ohne Redundanz, durch mehrere Befehlswege und vorzugsweise ohne eine Unterbrechung der Verarbeitung innerhalb des führenden Befehlswegs.
  • Wenn ein neuer Teilprozeß bei Schritt 116 auftritt, werden die Befehle optional abgerufen und wiederum wie bei Schritt 102, 104 ausgegeben, um wiederum eine optimierte Heuristik für die mehreren Befehlswege zu bestimmen. Das Verarbeiten kann anderweitig entlang des NEIN(1)-Zweiges fortgesetzt werden, um das Verarbeiten der Befehle in einem gemeinsamen Teilprozeß fortzusetzen.
  • Optional, anstelle der Verzweigung von Schritt 210 zu JA (1) kann ein Zweig zu JA (2) weiterleiten. Das heißt, anstelle des Synchronisierens der Heuristik anderer Befehlswege mit der Heuristik des führenden Befehlsweges wird der Prozeß bei Schritt 111 durch Modifizieren aller oder annähernd aller Heuristiken der mehreren Befehlswege fortgesetzt, um die Heuristik für alle Wege inkrementell fein einzustellen; eine derartige Modifikation kann z. B. das Modifizieren dieser Heuristik mit Charakteristika umfassen, ähnlich zu der führenden Wegheuristik. Ein Zweig zu Schritt 111 könnte ferner nach Schritt 112 auftreten, wie z. B. nach einer voreingestellten Zeitperiode und bevor ein anderer Teilprozeß erfaßt wird, wie durch den Zweig NEIN (2) von Schritt 116 zu Schritt 111 angezeigt wird.
  • Inkrementelle Weiterbewegungen gemäß Schritt 111 verkürzen die Länge des dynamischen Ausführungswegs inkrementell, wie in Fig. 3 gezeigt ist. In Fig. 3 ist die dynamische Ausführungsweglänge darstellend über die Zeit hinweg dargestellt. Bei Zeit 0 beginnt die Verarbeitung wie bei Schritt 108. Bei Zeit 150 wird die Heuristik anderer Befehlswege mit der Heuristik eines führenden Befehlsweges aktualisiert, wie bei Schritt 112. Eine fortgesetzte Modifikation der Heuristik bestimmter Wege zwischen der Zeit 150 und der Zeit 160 basierend auf der führenden Heuristik (wie z. B. in Verbindung mit Schritt 111, Fig. 2 erörtert wird) kann die dynamische Ausführungsweglänge ferner reduzieren, um eine neue führenden Heuristik zu definieren, wie gezeigt ist. Durch erneutes Modifizieren der Heuristik bei Zeit 160 zu dem führenden Befehlsweg und wie in Verbindung mit Schritt 112, Fig. 2 beschrieben ist, kann sich die Weglänge wiederum verringern, wie gezeigt ist. Auf diese Weise kann sich die Erfindung asymptotisch der idealen Verarbeitungsheuristik für einen gegebenen Programmteilprozeß nähern, um das Verhalten pro Teilprozeß zu verbessern.
  • Weiterhin bezugnehmend auf Fig. 1 kann die Prozessorarchitektur 10 daher Befehle verarbeiten wie in Fig. 2 und Fig.3 beschrieben wurde. Die Logik 50 überwacht das Fortschreiten gleicher Befehle entlang der Wege 12 und trifft geeignete Entscheidungen zum Schalten zu unterschiedlichen Heuristiken, um ein verbessertes Verhalten zu liefern. Effektiv ist das Verarbeiten von gleichen Befehlen spekulativ, da es ungewiß ist, ob ein entworfener Zustand aus einem Weg resultiert. Das Verarbeiten gleicher Befehlsbündel durch Wege 12 ist ähnlich einem Rennen; während des Rennens verarbeiten die verschiedenen Wege einen Bereich spekulativer Daten, und der führende Weg mit der besten Heuristik gewinnt das Rennen, und dessen Teilprozeß kann zu einem entworfenen Zustand werden. Wenn eine Entscheidung getroffen wird, daß ein Weg ein Führer ist, werden die anderen Befehlswege blockiert und verbesserten Heuristiken zugewiesen und das Verarbeiten anderer Teilprozesse kann beginnen. Das Verarbeiten gleicher Bündel durch Wege 12 kann auf zwei oder mehr Wegen auftreten; z. B. kann das Verarbeiten gleicher Bündel auf drei Wegen 12 auftreten, jeder mit einer unterschiedlichen Heuristik; die zwei nicht führenden Wege können unterschiedlichen Heuristiken zugeordnet werden, um das Verarbeiten anderer Bündel zu verbessern. Der führende Weg wird vorzugsweise nicht beeinträchtigt und setzt das Verarbeiten fort. Diese Wege können ferner mit demselben Teilprozeß neu gestartet werden, durch Sicherungsspeichern des Programmzählers und Neuzuweisen aller drei Heuristiken, um sich der idealen Heuristik für alle Befehlswege asymptotisch zu nähern.
  • Die Modifikation der Heuristiken 24, 28, 32 kann verschiedene Formen annehmen. Zum Beispiel kann die Logik 50 diese Heuristik randomisieren, um die optimalen Charakteristika für einen gegebenen Teilprozeß zu isolieren.

Claims (20)

1. Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor (10), das folgende Schritte aufweist:
A) Verarbeiten (106) erster gleicher Befehle durch zwei oder mehrere Befehlswege (12) des Prozessors, wobei jeder der Wege eine unterschiedliche Heuristik (24, 28, 32) aufweist, die demselben zugeordnet ist;
B) Überwachen (108) eines Fortschritts der ersten gleichen Befehle durch die Befehlswege (12);
C) Bestimmen (110), welcher der Befehlswege (12) ein erster Führer beim Verarbeiten der ersten gleichen Befehle ist; und
D) Modifizieren (111, 112) der Heuristik (24, 28, 32) des einen oder der mehreren Befehlswege basierend auf der Heuristik des ersten Führers.
2. Verfahren gemäß Anspruch 1, das ferner eine Gruppierung der ersten gleichen Befehle als ein Bündel aus einem gemeinsamen Programmteilprozeß aufweist.
3. Verfahren gemäß Anspruch 1 oder 2, bei dem der Schritt des Modifizierens das Modifizieren der Heuristik (24, 28, 32) von jedem der Befehlswege aufweist.
4. Verfahren gemäß einem der Ansprüche 1 bis 3, bei dem der Schritt des Modifizierens das Modifizieren der Heuristik (24, 28, 32) der Befehlswege außer der Heuristik des Führers aufweist.
5. Verfahren gemäß einem der Ansprüche 1 bis 4, das ferner das Verarbeiten der ersten gleichen Befehle durch den Führer aufweist, ohne durch den Schritt des Modifizierens beeinträchtigt zu werden.
6. Verfahren gemäß einem der Ansprüche 1 bis 5, das ferner das Verarbeiten zusätzlicher Befehle aus einem Programmteilprozeß der ersten gleichen Befehle durch die mehreren Befehlswege (12) und ohne Redundanz aufweist.
7. Verfahren gemäß einem der Ansprüche 1 bis 6, das ferner folgende Schritte aufweist:
Verarbeiten zweiter gleicher Befehle durch zwei oder mehr Befehlwege (12) des Prozessors, wobei jeder der Wege (12) eine unterschiedliche Heuristik (24, 28, 32) aufweist, die demselben zugeordnet ist;
Überwachen eines Fortschritts der zweiten gleichen Befehle durch die Befehlswege;
Bestimmen (110), welcher der Befehlswege (12) ein zweiter Führer beim Verarbeiten der Befehle ist; und
Modifizieren der Heuristik von einem oder mehreren der Befehlswege basierend auf der Heuristik des zweiten Führers.
8. Verfahren gemäß einem der Ansprüche 1 bis 7, bei dem der Schritt des Modifizierens das Modifizieren von einer oder mehreren CPU-gebundenen Heuristiken und Speicher-gebundenen Heuristiken aufweist.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, bei dem der Schritt des Modifizierens das Modifizieren der Heuristik basierend auf entweder der Zweigvorhersage oder der Vorab-Abrufheuristik aufweist.
10. Verfahren gemäß einem der Ansprüche 1 bis 9, das ferner das Wiederholen der Schritte (A)-(D) für eine modifizierte Heuristik innerhalb von mehreren Befehlswegen aufweist, um sich den optimierten Charakteristika für die Befehlswege asymptotisch zu nähern.
11. Prozessor (10) zum Verarbeiten von Programmbefehlen, der folgende Merkmale aufweist:
zumindest zwei parallele Befehlswege, wobei jeder der Wege ein Array von Pipelineausführungseinheiten und zugeordneten Heuristiken aufweist, die bewirken, wie die Befehle in denselben verarbeitet werden; und
eine Bewertungslogik zum Überwachen der Verarbeitung der Befehle innerhalb der Wege und zum Modifizieren der Heuristik von zumindest einem der Wege, um das Verhalten pro Teilprozeß des Prozessors zu verbessern.
12. System gemäß Anspruch 11, bei dem die Heuristik von jedem der Befehlswege eine oder mehrere aus Abfrageheuristik, Ausführungsheuristik und Cacheheuristik aufweist.
13. System gemäß Anspruch 11 oder 12, bei dem die zwei parallelen Befehlswege parallele Kernprozessoren auf einem gemeinsamen Chip aufweisen.
14. System gemäß einem der Ansprüche 11 bis 13, bei dem die parallelen Befehlswege aufgebaut und angeordnet sind, um anfänglich erste gleiche Befehle durch dieselben zu verarbeiten, wobei die Bewertungslogik die Verarbeitung der ersten gleichen Befehle überwacht, um eine optimierte Heuristik für die Befehlswege zu bestimmen.
15. System gemäß Anspruch 14, bei dem die parallelen Befehlswege aufgebaut und angeordnet sind, um anschließend unterschiedliche Befehle durch dieselben zu verarbeiten, um das Verarbeitungsverhalten pro Teilprozeß zu verbessern.
16. System gemäß Anspruch 14 oder 15, bei dem die parallelen Befehlswege aufgebaut und angeordnet sind, um anschließend zweite gleiche Befehle durch dieselben zu verarbeiten, wobei die Bewertungslogik das Verarbeiten der zweiten gleichen Befehle überwacht, um eine optimierte Heuristik für die Befehlswege zu bestimmen.
17. System gemäß einem der Ansprüche 11 bis 16, bei dem jeder der parallelen Befehlswege ein Cluster bildet, das aufgebaut und angeordnet ist, um die Befehle als Bündel zu verarbeiten.
18. System gemäß einem der Ansprüche 11 bis 17, bei dem die parallelen Befehlswege und die Bewertungslogik zusammenarbeiten, um eines oder mehrere Bündel mit gleichen Befehlen durch die Befehlswege zu verarbeiten, um die Heuristik der Befehlswege zu überwachen und dann zu modifizieren, um die Pro-Teilprozeß-Verarbeitung der Befehle zu verbessern.
19. Prozessor des Typs, der zumindest zwei parallele Befehlswege aufweist, wobei jeder der Wege ein Array aus Pipelineausführungseinheiten und einer zugeordneten Heuristik aufweist, die bewirken, wie die Befehle verarbeitet werden, mit folgenden Merkmalen:
einer Bewertungslogik zum Überwachen der Verarbeitung der Befehle innerhalb der Wege und zum Modifizieren der Heuristik von zumindest einem der Wege, um das Verhalten pro Teilprozeß des Prozessors zu verbessern.
20. Prozessor gemäß Anspruch 19, bei dem die parallelen Befehlswege aufgebaut und angeordnet sind, um anfänglich erste gleiche Befehle durch dieselben zu verarbeiten, wobei die Bewertungslogik die Verarbeitung der ersten gleichen Befehle überwacht, um eine optimierte Heuristik für die Befehlswege zu bestimmen.
DE10306051A 2002-03-04 2003-02-13 Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren Expired - Fee Related DE10306051B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/091084 2002-03-04
US10/091,084 US7028167B2 (en) 2002-03-04 2002-03-04 Core parallel execution with different optimization characteristics to decrease dynamic execution path

Publications (2)

Publication Number Publication Date
DE10306051A1 true DE10306051A1 (de) 2003-09-25
DE10306051B4 DE10306051B4 (de) 2006-10-19

Family

ID=27787662

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10306051A Expired - Fee Related DE10306051B4 (de) 2002-03-04 2003-02-13 Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren

Country Status (2)

Country Link
US (1) US7028167B2 (de)
DE (1) DE10306051B4 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US7533384B2 (en) * 2004-05-27 2009-05-12 International Business Machines Corporation Job routing to earliest available resources in a parallel job scheduler
GB0412104D0 (en) * 2004-05-29 2004-06-30 Ibm Apparatus method and program for recording diagnostic trace information
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US20080082644A1 (en) * 2006-09-29 2008-04-03 Microsoft Corporation Distributed parallel computing
US8201142B2 (en) * 2006-09-29 2012-06-12 Microsoft Corporation Description language for structured graphs
US7844959B2 (en) * 2006-09-29 2010-11-30 Microsoft Corporation Runtime optimization of distributed execution graph
US8209989B2 (en) * 2007-03-30 2012-07-03 Intel Corporation Microarchitecture control for thermoelectric cooling
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
GB2461902B (en) * 2008-07-16 2012-07-11 Advanced Risc Mach Ltd A Method and apparatus for tuning a processor to improve its performance
US20100115245A1 (en) * 2008-10-30 2010-05-06 Atsuya Okazaki Detecting and recovering from timing violations of a processor
US8510749B2 (en) 2010-05-27 2013-08-13 International Business Machines Corporation Framework for scheduling multicore processors
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
US10540737B2 (en) * 2017-12-22 2020-01-21 International Business Machines Corporation Processing unit performance projection using dynamic hardware behaviors
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5245638A (en) * 1990-10-29 1993-09-14 Iowa State University Research Foundation, Inc. Method and system for benchmarking computers
KR0176263B1 (ko) * 1991-03-11 1999-05-15 마이클 에이치. 모리스 비용기준 발견적 명령스케쥴링을 최적화하기 위한 방법 및 장치
DE59401478D1 (de) * 1993-03-15 1997-02-13 Siemens Ag Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
US5615357A (en) * 1994-12-29 1997-03-25 Sun Microsystems, Inc. System and method for verifying processor performance
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5844830A (en) * 1996-08-07 1998-12-01 Sun Microsystems, Inc. Executing computer instrucrions by circuits having different latencies
US5999736A (en) * 1997-05-09 1999-12-07 Intel Corporation Optimizing code by exploiting speculation and predication with a cost-benefit data flow analysis based on path profiling information
US5966537A (en) * 1997-05-28 1999-10-12 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing an executable computer program using input data
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US5941981A (en) * 1997-11-03 1999-08-24 Advanced Micro Devices, Inc. System for using a data history table to select among multiple data prefetch algorithms
US6170083B1 (en) * 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
EP0945989A1 (de) * 1998-03-12 1999-09-29 Hitachi Micro Systems Europe Limited Viterbi-Dekodierung
CN1154111C (zh) * 1998-04-01 2004-06-16 睦塞德技术公司 异步流水线半导体存储器
US6128775A (en) * 1998-06-16 2000-10-03 Silicon Graphics, Incorporated Method, system, and computer program product for performing register promotion via load and store placement optimization within an optimizing compiler
US6748589B1 (en) * 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6848100B1 (en) * 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
US6715062B1 (en) * 2000-07-26 2004-03-30 International Business Machines Corporation Processor and method for performing a hardware test during instruction execution in a normal mode
US6738955B2 (en) * 2000-11-30 2004-05-18 International Business Machines Corporation Method and system for formal characterization of average performance
US6856951B2 (en) * 2002-11-15 2005-02-15 Rajat Moona Repartitioning performance estimation in a hardware-software system

Also Published As

Publication number Publication date
US7028167B2 (en) 2006-04-11
DE10306051B4 (de) 2006-10-19
US20030167389A1 (en) 2003-09-04

Similar Documents

Publication Publication Date Title
DE10306051B4 (de) Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren
DE69129919T2 (de) Verfahren zur Kompilierung von Rechnerbefehlen, um Cachespeicherleistung zu verbessern
DE69321698T2 (de) Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69132675T2 (de) Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE19983330B4 (de) Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE68928340T2 (de) Fliessband-Datenprozessor
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE69023568T2 (de) Cache-Speicheranordnung.
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
WO1994022079A1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee