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 verringernInfo
- 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
Links
- 238000005457 optimization Methods 0.000 title abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 51
- 238000011156 evaluation Methods 0.000 claims abstract description 15
- 230000006399 behavior Effects 0.000 claims description 16
- 238000013459 approach Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims 4
- 230000001360 synchronised effect Effects 0.000 abstract description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent 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.
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.
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.
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.
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)
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)
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 |
-
2002
- 2002-03-04 US US10/091,084 patent/US7028167B2/en not_active Expired - Lifetime
-
2003
- 2003-02-13 DE DE10306051A patent/DE10306051B4/de not_active Expired - Fee Related
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 |