DE60109748T2 - Verfahren und gerät zur ausführungsunterbrechung in einem prozessor - Google Patents
Verfahren und gerät zur ausführungsunterbrechung in einem prozessor Download PDFInfo
- Publication number
- DE60109748T2 DE60109748T2 DE60109748T DE60109748T DE60109748T2 DE 60109748 T2 DE60109748 T2 DE 60109748T2 DE 60109748 T DE60109748 T DE 60109748T DE 60109748 T DE60109748 T DE 60109748T DE 60109748 T2 DE60109748 T2 DE 60109748T2
- Authority
- DE
- Germany
- Prior art keywords
- thread
- instruction
- command
- execution
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 29
- 230000004044 response Effects 0.000 claims description 12
- 230000000694 effects Effects 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 239000000725 suspension Substances 0.000 description 9
- 238000005265 energy consumption Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000005540 biological transmission 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control 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, 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
- Gebiet der Erfindung
- Die vorliegende Erfindung betrifft ein Verfahren und eine Einrichtung zum Aussetzen einer Ausführung in einem Prozessor oder dergleichen. Insbesondere betrifft ein Ausführungsbeispiel der vorliegenden Erfindung die Steuerung des Aussetzens der Ausführung eines einer Mehrzahl von Threads [eigenständige Prozessaktivitäten], um so einem anderen der Threads den Vorrang zu geben oder um Energie zu sparen.
- Hintergrund der Erfindung
- Wie auf dem Gebiet bekannt ist, umfasst ein Prozessor verschiedene Untermodule, von denen jedes zur Ausführung spezieller Aufgaben angepasst ist. In einem bekannten Prozessor umfassen diese Untermodule Folgendes: einen Befehls-Cache, eine Befehlsabrufeinheit zum Abrufen der entsprechenden Befehle aus dem Befehls-Cache; eine Decodierlogik, die den Befehl in ein End- oder Zwischenformat decodiert, eine Mikro-Operationslogik, die Zwischenbefehle für eine Ausführung in ein Endformat konvertiert; und eine Ausführungseinheit, die Endformatbefehle ausführt (entweder in einigen Beispielen von der Decodierlogik oder in anderen von der Mikro-Operationslogik).
- Im Betrieb mit einem Taktgeber führt die Ausführungseinheit des Prozessorsystems an sie übergebene, aufeinander folgende Befehle aus. Wie auf dem Gebiet bekannt ist, kann der Ausführungseinheit ein Befehl bereitgestellt werden, der zu keiner signifikanten Aufgabendurchführung des Prozessorsystems führt. Zum Beispiel veranlasst in den Intel® X86-Prozessorsystemen ein NOP (Nulloperations)-Befehl die Ausführungseinheit, für einen „Befehlszyklus" nicht aktiv zu werden. Ein Befehlszyklus, wie er hier verwendet wird, ist eine festgesetzte Anzahl von Prozessortaktzyklen, die vom Prozessor zur Ausführung eines Befehls benötigt werden. Tatsächlich blockiert der NOP-Befehl den Prozessor für einen Befehlszyklus.
- Eine Beschränkung des NOP-Befehls besteht darin, dass er den Prozessor für eine festgesetzte Zeiteinheit blockiert. Folglich kann der Prozessor unter Verwendung eines oder mehrerer NOP-Befehle nur für eine Zeit gleich dem ganzzahligen Vielfachen der Befehlszyklen blockiert werden.
- Eine weitere Beschränkung des NOP-Befehls besteht darin, dass die Ausführungseinheit des Prozessors nicht zur Durchführung irgendeiner anderen Befehlsausführung imstande ist. Zum Beispiel können von der Ausführungseinheit auszuführende Befehle in zwei oder mehr „Threads" aufgeteilt sein. Jeder Thread ist ein Satz von Befehlen zum Erfüllen einer vorgegebenen Aufgabe. Wenn einer der Threads einen NOP-Befehl umfasst, wird folglich dieser Befehl durch die Ausführungseinheit ausgeführt und der gesamte Prozessor blockiert (d.h. die Ausführung des anderen Threads kann während der Ausführung des NOP-Befehls nicht vorgenommen werden).
- Auf dem Gebiet sind Prozessoren mit paralleler Thread-Bearbeitung bekannt. Zum Beispiel offenbart die europäische Veröffentlichung Nr. 0 827 071 (MATSUSHITA ELECTRIC INDUSTRIAL CO. LTD) ein Beispiel eines derartigen Prozessors. Im MATSUSHITA-Prozessor werden für jeden Thread Decodiereinheiten bereitgestellt und eine Mehrzahl von Funktionseinheiten wird zur Ausführung der in jedem Thread enthaltenen Befehle bereitgestellt. Eine Steuereinheit umfasst eine Entscheidungseinheit, die auswählt, welche Befehle von welchem Thread auszuführen sind. Die Steuereinheit umfasst außerdem eine Unterbrechungseinheit zum Unterbrechen der Ausführung eines Befehlsstroms. Die Steuereinheit unterbricht die Ausführung von Befehlen eines Threads, wenn ein „Stopp"-Befehl von einer Funktionseinheit ausgeführt wird. Die Versorgung mit Befehlen zur Ausführung wird durch einen externen Interrupt zu einem, dem gestoppten Thread zugeordneten, logischen Prozessor neu gestartet. In den Ausführungsbeispielen der vorliegenden Erfindung gibt es eine Ermittlung, ob der nächste Befehl für einen Thread von einer ersten Art ist (z.B. ein SET-Befehl). Das Vorliegen dieser Befehlsart kann sehr viel früher als im MATSUSHITA-Prozessor (z.B. durch die Decodiereinheit) erfasst werden, um ein Flag zur Verhinderung der Weiterleitung weiterer Befehle vom festgelegten Thread durch die Pipeline zu setzen. Wenn in einem Ausführungsbeispiel der vorliegenden Erfindung eine erste Befehlsart durch die Ausführungseinheit ausgeführt wird, wird das Flag zur Bewilligung der Verarbeitung von Befehlen des vorher ausgesetzten Threads gelöscht (ohne dass die Erzeugung eines Interrupts erforderlich ist).
- In Anbetracht des Obenerwähnten wird ein verbessertes Verfahren und eine verbesserte Einrichtung zum Aussetzen der Prozessorausführung benötigt, die diese Beschränkungen vermeiden.
- Zusammenfassung der Erfindung
- Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung wird ein Verfahren zum Aussetzen der Ausführung von Befehlen in einem Thread dargelegt. Zuerst wird ermittelt, ob der nächste Befehl für einen ersten Thread ein Befehl einer ersten Art ist. Wenn er es ist, wird der Befehl des ersten Thread an der Verarbeitung zur Ausführung gehindert, während ein Befehl von einem zweiten Thread zur Ausführung verarbeitet werden kann.
- Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockdiagramm eines Teils eines Prozessors, der ein Ausführungsbeispiel der vorliegenden Erfindung anwendet. -
2 ist ein Ablaufdiagramm, das ein Ausführungsbeispiel eines Verfahrens gemäß einem Ausführungsbeispiel der vorliegenden Erfindung zeigt. -
3 ist ein Blockdiagramm eines Teils eines Prozessors, der ein zusätzliches Ausführungsbeispiel der vorliegenden Erfindung anwendet. -
4 ist ein Ablaufdiagramm, das ein zusätzliches Ausführungsbeispiel eines Verfahrens gemäß einem Ausführungsbeispiel der vorliegenden Erfindung zeigt. - Detaillierte Beschreibung
- Es wird auf
1 Bezug genommen, in der ein Beispiel eines Teils eines Prozessorsystems10 gezeigt ist, das ein Ausführungsbeispiel der vorliegenden Erfindung implementiert. In diesem Ausführungsbeispiel ist der Prozessor ein mehrfädiger (multithreaded) Prozessor, in dem theoretisch die Ausführung in zwei oder mehr logische Prozessoren aufgeteilt wird. Der Begriff „Thread", wie er hier verwendet wird, bezieht sich auf eine Befehlscodefolge. Zum Beispiel kann der Prozessor in einer Videotelefonanwendung zur Ausführung von Code zur Behandlung von Videobilddaten wie auch von Audiodaten aufgerufen werden. Es kann separate Codefolgen geben, deren Ausführung zur Behandlung jedes dieser Datentypen ausgelegt ist. Folglich kann ein erster Thread Befehle zur Videobilddatenverarbeitung umfassen und ein zweiter Thread kann aus Befehlen zur Audiodatenverarbeitung bestehen. In diesem Beispiel gibt es eine einzige Ausführungseinheit (Out-of-Order [Neuordnung: Sortierung der Abarbeitungsreihenfolge während der Laufzeit] – Ausführungs-Einheit31 ), die einen Befehl zu einem Zeitpunkt ausführen kann. Das Prozessorsystem10 kann jedoch als zwei logische Prozessoren betrachtet werden, ein Befehle vom ersten Thread (Thread 0) ausführender, erster logischer Prozessor und ein Befehle vom zweiten Thread (Thread 1) ausführender, zweiter logischer Prozessor. - In diesem Ausführungsbeispiel des Prozessorsystems
10 werden Befehle durch eine Abrufeinheit11 abgerufen, zu einer Warteschlange13 geliefert und als Teil der Warteschlange des Thread 0 oder der Warteschlange des Thread 1 gespeichert. Ein Fachmann wird verstehen, dass die im Prozessorsystem10 verwendeten Warteschlangen zur Speicherung von mehr als zwei Threads verwendet werden können. Die Befehle beider Threads werden zu einem Multiplexer (MUX)15 geliefert. Eine Steuerlogik17 wird zur Steuerung verwendet, ob die Befehle von Thread 0 oder Thread 1 zu einer Decodiereinheit21 geliefert werden. Die Decodiereinheit21 kann einen Befehl in zwei oder mehr Mikrobefehle konvertieren und liefert die Befehle an die Warteschlange23 . Die Ausgaben der Warteschlange23 werden zu einem MUX geliefert, der basierend auf dem Betrieb der Steuerlogik26 die Befehle von Thread 0 oder Thread 1 zu einer Umbenennungs-/Zuweisungseinheit27 liefert. Die Umbenennungs-/Zuweisungseinheit27 liefert die Befehle ihrerseits an die Warteschlange28 . MUX29 wählt basierend auf dem Betrieb der Ablaufplansteuerlogik30 , die ebenfalls die gleichen Eingaben wie MUX29 empfängt, zwischen der Warteschlange des Thread 0 und der Warteschlange des Thread 1 aus. Die Ausgabe des MUX29 wird an eine Ausführungseinheit31 geliefert, die den Befehl ausführt. Die Befehle werden dann in der Warteschlange33 angeordnet. Die Ausgaben der Warteschlange33 werden zu einem MUX34 geliefert, der basierend auf dem Betrieb der Steuerlogik35 einen Befehl von Thread 0 und Thread 1 zu einer Retire- bzw. Festschreibungs-Einheit36 sendet. - Gemäß einem ersten Ausführungsbeispiel der vorliegenden Erfindung wird ein Aussetzungsbefehl zum vorübergehenden Aussetzen der Verarbeitung von Befehlen eines Thread verwendet. In
1 wird der Aussetzungsbefehl durch die Abrufeinheit11 abgerufen und in diesem Beispiel in der Warteschlange des Threads 0 gespeichert. Die Ausgabe der Warteschlange des Threads 0 wird über MUX15 an eine Decodiereinheit21 geliefert, die den Aussetzungsbefehl in zwei Mikrobefehle Decodiert: einen SET-Befehl und einen READ-Befehl. An der Decodiereinheit21 veranlasst ein SET-Befehl die Speicherung eines Wertes im Speicher (z.B. einem Bit-Flag19 ), um anzuzeigen, dass für einen bestimmten Thread (in diesem Beispiel Thread 0) ein SET-Befehl empfangen wurde. Der SET-Befehl wird dann in die „Pipeline" eingespeist, die in diesem Ausführungsbeispiel die Umbenennungs-/Zuweisungseinheit27 und die Ausführungseinheit31 und die zugeordneten Warteschlangen umfasst. Die Ausführungseinheit31 wird beim SET-Befehl nicht aktiv (d.h., sie behandelt ihn wie den bekannten NOP-Befehl). Sobald der SET-Befehl durch die Retire-Einheit26 festgeschrieben ist, wird das Flag19 zurückgesetzt. - Der READ-Befehl an der Decodiereinheit
21 wird solange nicht in der Pipeline angeordnet, bis das Flag19 zurückgesetzt ist. Wenn Befehle vom Thread 1 in der Warteschlange13 vorliegen, können diese Befehle dementsprechend durch die Decodiereinheit21 decodiert und in der Pipeline angeordnet werden. Folglich wird in Abhängigkeit von der Anzahl der Befehle des Threads 1 in den Warteschlangen23 ,28 und33 beeinflusst, wie lange die Ausführung von Thread 0 ausgesetzt wird (d.h. je größer die Anzahl der Befehle des Threads 1 in der Pipeline ist, desto länger wird der SET-Befehl benötigen, um die Retire-Einheit36 zu erreichen). Sobald das Flag19 zurückgesetzt ist, wird der READ-Befehl zur Warteschlange23 und schließlich zur Ausführungseinheit31 gesendet. Wie beim SET-Befehl wird die Ausführungseinheit wie bei einem NOP-Befehl nicht aktiv. In diesem Ausführungsbeispiel der vorliegenden Erfindung decodiert die Decodiereinheit21 abwechselnd die Befehle von Thread 0 und Thread 1. Nach zum Beispiel einem SET-Befehl für den Thread 0 wechselt die Decodierung zwischen der Decodierung von Befehlen von Thread 1 und der Prüfung des Wertes von Flag19 , bis es zurückgesetzt wird. - Ein Beispiel des Betriebs der Decodiereinheit
21 gemäß diesem Ausführungsbeispiel ist in2 gezeigt. Nach der Decodierung wird in Block40 der Befehl vom nächsten Thread ermittelt. Im Entscheidungsblock41 wird ermittelt, ob der Befehl ein SET-Befehl ist. Wenn er es ist, geht die Steuerung zu Block43 über, wo das Bit-Flag im Speicher gesetzt wird. Im Block47 wird der SET-Befehl in der Pipeline für die Ausführungseinheit angeordnet. Die Steuerung kehrt dann zur Ermittlung des nächsten Befehls vom nächsten Thread zu Block40 zurück. Wenn der Befehl kein SET-Befehl ist, geht die Steuerung zum Entscheidungsblock45 über, um zu ermitteln, ob der Befehl ein READ-Befehl ist. Wenn er es ist, geht die Steuerung zum Entscheidungsblock49 über, um zu ermitteln, ob das entsprechende Bit-Flag im Speicher gesetzt ist. Wenn das Bit-Flag im Speicher gesetzt ist, geht die Steuerung zum Block51 über, wo der Befehl von der Pipeline zurückgehalten wird (folglich wird die Ausführung von Befehlen von diesem bestimmten Thread zeitweise blockiert). Die Steuerung verlagert sich dann zu Block 40, um den nächsten Befehl vom nächsten Thread zu ermitteln. Wenn das Bit-Flag nicht gesetzt ist (Entscheidungsblock49 ), geht die Steuerung zu Block53 über, wo der Befehl (in diesem Fall der READ-Befehl) in die Pipeline zur Ausführung angeordnet wird. Wie oben erwähnt, wird in diesem Ausführungsbeispiel das Bit-Flag zurückgesetzt, wenn der SET-Befehl festgeschrieben bzw. retired wird. Die Steuerung kehrt dann zu Block40 zurück, um den nächsten Befehl vom nächsten Thread zu ermitteln. Ebenso wird er, wenn der Befehl weder ein SET-Befehl noch ein READ-Befehl ist, in der Pipeline zur Ausführung in einer normalen Art und Weise angeordnet. - Wie vom Obenerwähnten zu entnehmen ist, dient der SET-Befehl zur Bewirkung einer Aussetzung bzw. Pause in der Ausführung für diesen Thread, bis der Befehl festgeschrieben wird. Dies liegt daran, dass der nachfolgende READ-Befehl solange nicht in der Pipeline angeordnet wird, bis der SET-Befehl festgeschrieben ist, wobei die Ausführung der nachfolgenden Befehle von diesem Thread in wirksamer Weise blockiert wird. Während der Aussetzung eines Threads werden die Befehle von diesem Thread an der Verarbeitung zur Ausführung gehindert (z.B. Anordnung in der Pipeline, Senden zur Ausführungseinheit etc.), während Befehle von einem anderen Thread zur Ausführung verarbeitet werden können. Wenn die Ausführung eines Threads ausgesetzt ist, kann der Gesamtenergieverbrauch für das Verarbeitungssystem reduziert werden.
- Gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung wird ein Aussetzungsbefehl mit einem Zeitgeber oder Zähler ausgeführt. Wie in
3 gezeigt, wird das Speicher-Flag19 von1 durch einen Zähler39 ersetzt. Wenn als ein erstes Beispiel die Decodiereinheit21 ermittelt, dass der nächste Befehl eines ersten Threads ein Aussetzungsbefehl ist (d.h. ein Befehl, der ein bestimmtes Bit-Format aufweist), wird ein vorgegebener Wert in den Zähler39 geladen. In diesem Beispiel zählt der Zähler39 vom vorgegebenen Wert zu Null zurück. Während der Zähler39 zu Null zurückzählt, werden Befehle vom zweiten Thread (z.B. Thread 1) Decodiert und in die Pipeline geladen. In diesem Beispiel wechselt die Decodiereinheit21 zwischen der Prüfung des wertes des Zählers39 (anstelle der Decodierung von Befehlen von Thread 0) und der Decodierung von Befehlen vom Thread 1. Sobald der Zähler fertig ist (z.B. Null erreichte), kann der nächste Befehl von diesem Thread in die Pipeline geladen werden. Als ein zweites Beispiel wird der Aussetzungsbefehl einen Operanden umfassen (d.h. ein in den Zeitgeber zu ladender Wert). Dementsprechend gestattet dies der Decodiereinheit21 , den Operandenwert in den Zähler39 zu laden, so dass die Zeitdauer des Aussetzungsbefehls gesetzt werden kann. - Ein Beispiel des Betriebs des Verarbeitungssystems von
3 ist in4 gezeigt. Im Entscheidungsblock60 wird ermittelt, ob der Zähler einen vorgegebenen Wert für den aktuellen Thread erreicht hat. Wenn kein Zähler gesetzt wurde oder der Wert den vorgegebene Wert (z.B. Null) erreicht hat, geht die Steuerung zur Ermittlung des nächsten Befehls für den aktuellen Thread auf Block61 über. Wenn dieser Befehl ein Aussetzungsbefehl ist (Entscheidungsblock63 ), geht die Steuerung zum Entscheidungsblock65 über, um zu ermitteln, ob ein Operand dem Aussetzungsbefehl zugeordnet ist. Wenn ein Operand dem Aussetzungsbefehl zugeordnet ist, geht die Steuerung zum Block67 über, um den Wert in den Zähler zu laden (die Steuerung geht dann zu Block73 über, um zum nächsten Thread zu wechseln). Wenn kein Operand dem Aussetzungsbefehl zugeordnet ist, geht die Steuerung zu Block71 über, um einen vorgegebenen Wert in den Zähler zu laden (erneut geht die Steuerung zu Block73 über, um zum nächsten Thread zu wechseln). Wenn im Entscheidungsblock63 der Befehl kein Aussetzungsbefehl ist, geht die Steuerung zu Block69 über, um den Befehl in die Pipeline zu laden. - Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung kann die Verwendung des Aussetzungsbefehls eine Angabe des Betriebssystems sein, dass die verarbeitende System-Hardware in einen Energiesparmodus gehen kann. Folglich kann die Ausführung von Betriebssystemcode (oder irgendeinem anderen Software-Code) am Prozessorsystem die Weiterleitung eines Aussetzungsbefehls zur Decodiereinheit bewirken. Wie oben erwähnt, kann die Aussetzung der Ausführung eines Threads zu einer Verringerung des Gesamtenergieverbrauchs führen. Als Reaktion auf die Decodierung eines Aussetzungsbefehls kann das Verarbei tungssystem
10 andere Schritte zu einer gewünschten weiteren Verringerung des Gesamtenergieverbrauchs unternehmen.
Claims (32)
- Ein Verfahren zum Aussetzen der Ausführung von Befehlen in einem Thread, umfassend: Bestimmen, ob ein erster Befehl für einen ersten Thread als Befehl einer ersten Art decodiert worden ist (
40 ,41 ); Verhindern, daß Befehle des ersten Threads zur Ausführung verarbeitet werden, für eine Zeitdauer (51 ), sofern der erste Befehl als einer der ersten Art decodiert worden ist (41 ), während Befehle aus einem zweiten Thread zur Ausführung verarbeitet werden können; und Wiederaufnehmen der Ausführung des ersten Threads in Abhängigkeit von dem ersten Befehl (53 ). - Das Verfahren nach Anspruch 1, ferner umfassend ein Decodieren des ersten Befehls in einen ersten Mikrobefehl und einen zweiten Mikrobefehl.
- Das Verfahren nach Anspruch 2, wobei der erste Mikrobefehl bewirkt, daß ein Wert für den ersten Thread im Speicher gespeichert wird.
- Das Verfahren nach Anspruch 3, ferner umfassend eine Verarbeitung des zweiten Mikrobefehls zur Ausführung, wenn der im Speicher gespeicherte Wert zurückgesetzt ist.
- Das Verfahren nach Anspruch 4, wobei der im Speicher gespeicherte Wert zurückgesetzt wird, wenn der erste Mikrobefehl festgeschrieben (retired) wird.
- Das Verfahren nach Anspruch 1, wobei der Befehl einer ersten Art ein Pause-Befehl ist, wobei das Verfahren ferner umfaßt: Empfangen des Pause-Befehls aus einem ersten Thread an einer Decodiereinheit (
21 ) in einem Prozessor; und wobei das Wiederaufnehmen der Verarbeitung des ersten Threads zur Ausführung in Erwiderung des Pause-Befehls erfolgt. - Das Verfahren nach Anspruch 6, wobei die Ausführung von Software-Code bewirkt, daß der Pause-Befehl an der Decodiereinheit empfangen wird.
- Das Verfahren nach Anspruch 1, ferner umfassend: Empfangen von Befehlen für einen ersten Thread (
11 ); Decodieren eines ersten Befehls aus dem ersten Thread in einen zweiten Befehl und einen dritten Befehl (21 ); Setzen eines Flags, um das Vorhandensein des zweiten Befehls anzuzeigen (19 ,41 ,43 ); Senden des zweiten Befehls in eine Pipeline (47 ); Abhalten des dritten Befehls vom Eintreten in die Pipeline, wenn das Flag gesetzt ist, wobei das Verarbeiten des ersten Threads ausgesetzt wird (51 ); Ausführen des zweiten Befehls; Rücksetzen des Flags bei Festschreibung (retirement) des zweiten Befehls; und Freigeben des dritten Befehls in die Pipeline, nachdem das Flag zurückgesetzt worden ist, wobei die Verarbeitung des ersten Threads wieder aufgenommen wird (53 ). - Das Verfahren nach Anspruch 8, ferner umfassend: Freigeben von Verarbeitungsressourcen zum Verarbeiten eines zweiten Threads, während der erste Thread ausgesetzt (pausiert) ist; und Verarbeiten von Befehlen des zweiten Threads.
- Das Verfahren nach Anspruch 1, ferner umfassend: Decodieren eines ersten Befehls aus einem ersten Thread in einen zweiten Befehl und einen dritten Befehl; Abhalten des dritten Befehls vom Eintreten in eine Befehlspipeline, bis der zweite Befehl festgeschrieben wird (retires) (
51 ); Ausführen des zweiten Befehls (47 ); und Freigeben des dritten Befehls in die Befehlspipeline (53 ). - Das Verfahren nach Anspruch 10, ferner umfassend: Aussetzen der Verarbeitung von Befehlen aus dem ersten Thread nach dem ersten Befehl; Verarbeiten von Befehlen aus einem zweiten Thread, während der erste Thread ausgesetzt ist; und Wiederaufnehmen der Verarbeitung von Befehlen aus dem ersten Thread in Erwiderung der Festschreibung (retirement) des dritten Befehls.
- Das Verfahren nach Anspruch 11, ferner umfassend: Setzen eines Flags in Erwiderung des zweiten Befehls; und Rücksetzen des Flags in Erwiderung der Festschreibung des zweiten Befehls.
- Ein Verfahren, umfassend: Bestimmen, ob ein erster Befehl für einen ersten Thread als ein Befehl einer ersten Art decodiert worden ist (
63 ); Initiieren eines Zählers (39 ); und Hindern von Befehlen des ersten Threads daran, zur Ausführung verarbeitet zu werden, bis der Zähler einen vorgegebenen Wert erreicht, während Befehle für einen zweiten Thread zur Ausführung verarbeitet werden (73 ,60 ). - Das Verfahren nach Anspruch 13, ferner umfassend ein Wiederaufnehmen einer Verarbeitung für eine Ausführung von Befehlen des ersten Threads, nachdem der Zähler den vorgegebenen Wert erreicht.
- Das Verfahren nach Anspruch 13, ferner umfassend: Laden eines Zählers (
39 ) mit einem ersten Wert in Erwiderung des ersten Befehls des ersten Threads; Aussetzen einer Verarbeitung des ersten Threads, wobei Befehle nach dem ersten Befehl des ersten Threads nicht mehr in eine Pipeline eintreten, bis der Zähler bis zu einem vorgegebenen Wert zählt (73 ,60 ); Verarbeiten eines zweiten Threads, während der erste Thread ausgesetzt ist (69 ); und Wiederaufnehmen der Verarbeitung des ersten Threads, nachdem der Zähler bis zu dem vorgegebenen Wert gezählt hat (60 ,73 ). - Das Verfahren nach Anspruch 15, wobei der erste Wert einer vorgegebenen Zeitdauer entspricht.
- Das Verfahren nach Anspruch 13 oder 15, wobei der erste Befehl einen Operanden enthält und wobei das Initiieren ein Laden des Zählers mit dem Operanden einschließt.
- Eine Einrichtung mit einer Decodiereinheit zum Pausieren der Ausführung von Befehlen in einem Thread, gekennzeichnet dadurch: daß die Decodiereinheit bestimmt, ob ein erster Befehl eines ersten Threads ein Befehl einer ersten Art ist, wobei die Decodiereinheit dazu dient, Befehle des ersten Threads für eine Zeitdauer daran zu hindern, zur Ausführung verarbeitet zu werden, während Befehle aus einem zweiten Thread zur Ausführung verarbeitet werden können, wobei die Decodiereinheit ferner dazu dient, eine Wiederaufnahme der Verarbeitung von Befehlen des ersten Threads in Erwiderung des ersten Befehls zu bewirken.
- Die Einrichtung nach Anspruch 18, wobei der erste Befehl einen ersten Mikrobefehl und einen zweiten Mikrobefehl umfaßt.
- Die Einrichtung nach Anspruch 19, ferner aufweisend: einen Speicher, wobei der erste Mikrobefehl bewirkt, daß ein Wert im Speicher für den ersten Thread gespeichert wird.
- Die Einrichtung nach Anspruch 20, wobei die Decodiereinheit den zweiten Mikrobefehl zur Ausführung verarbeitet, wenn der im Speicher gespeicherte Wert zurückgesetzt ist.
- Die Einrichtung nach Anspruch 21, ferner aufweisend: eine mit der Decodiereinheit gekoppelte Festschreibeinheit (retire unit), wobei die Festsschreibeinheit bewirkt, daß der im Speicher gespeicherte Wert zurückgesetzt wird, wenn der erste Mikrobefehl von der Festschreibeinheit festgeschrieben (retired) wird.
- Die Einrichtung nach Anspruch 18, wobei die Decodiereinheit Teil eines Prozessors (
10 ) ist, um den Energieverbrauch zu reduzieren, und wobei die Decodiereinheit (21 ) dazu dient, den ersten Befehl aus dem ersten Thread in dem Prozessor (10 ) zu empfangen, wobei die Decodiereinheit (21 ) dazu dient, in Erwiderung des ersten Befehls des ersten Threads Befehle des ersten Threads für eine Zeitdauer daran zu hindern, zur Ausführung verarbeitet zu werden, während Befehle aus dem zweiten Thread zur Ausführung verarbeitet werden können, und wobei die Decodiereinheit (21 ) ferner dazu dient, in Erwiderung der Ausführung des ersten Befehls ein Gestatten einer Verarbeitung zur Ausführung von Befehlen des ersten Threads wieder aufzunehmen. - Die Einrichtung nach Anspruch 23, wobei eine Ausführung von Software-Code durch den Prozessor bewirkt, daß der erste Befehl an der Decodiereinheit empfangen wird.
- Die Einrichtung nach Anspruch 18, wobei die Einrichtung ein Prozessor mit einer Decodiereinheit ist und die Decodiereinheit (
21 ) dazu dient, den ersten Befehl aus dem ersten Thread zu empfangen und den Prozessor zu veranlassen, die Verarbeitung von Befehlen aus dem ersten Thread in Erwiderung des ersten Befehls für eine Zeitdauer auszusetzen, wobei die Decodiereinheit (21 ) in der Lage ist, Befehle aus dem zweiten Thread während der Zeitdauer zu verarbeiten, und wobei die Decodiereinheit (21 ) dazu dient, die Verarbeitung von Befehlen aus dem ersten Thread in Erwiderung des ersten Befehls wiederaufzunehmen. - Der Prozessor nach Anspruch 25, wobei die Decodiereinheit es den Befehlen aus dem zweiten Thread ermöglicht, während der Zeitdauer ausgeführt zu werden.
- Der Prozessor nach Anspruch 26, wobei die Decodiereinheit dazu dient, die Verarbeitung von Befehlen nach dem ersten Befehl aus dem ersten Thread während der Zeitdauer auszusetzen.
- Der Prozessor nach Anspruch 27, wobei die Decodiereinheit dazu dient, die Ausführung von Befehlen aus dem ersten Thread zu verhindern, indem die Abfertigung (dispatch) von weiteren Befehlen aus dem ersten Thread verhindert wird, bis der erste Befehl festgeschrieben (retired) ist.
- Der Prozessor nach Anspruch 25, wobei die Dauer eine vorgegebene Zeitdauer ist.
- Eine Einrichtung mit einer Decodiereinheit, gekennzeichnet dadurch, daß: die Decodiereinheit dazu dient, zu bestimmen, ob ein erster Befehl für einen ersten Thread ein Befehl einer ersten Art ist; ein Zähler mit der Decodiereinheit gekoppelt ist, wobei der Zähler dazu dient, initiiert zu werden, wenn der erste Befehl für den ersten Thread ein Befehl der ersten Art ist, wobei die Decodiereinheit dazu dient, Befehle des ersten Thread daran zu hindern, zur Ausführung verarbeitet zu werden, bis der Zähler einen vorgegebenen Wert erreicht; und wobei Befehle für einen zweiten Thread zur Ausführung verarbeitet werden können, während Befehle des ersten Thread an der Ausführung gehindert werden, und wobei die Decodiereinheit die Verarbeitung von Befehlen des ersten Threads in Abhängigkeit von dem Zähler wieder aufnimmt.
- Die Einrichtung nach Anspruch 30, wobei der erste Befehl einen in den Zähler zu ladenden Operanden enthält.
- Die Einrichtung nach Anspruch 31, wobei die Decodiereinheit mit ihrem Betrieb fortfahren kann, während der erste Thread an der Verarbeitung gehindert wird.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/489,130 US6671795B1 (en) | 2000-01-21 | 2000-01-21 | Method and apparatus for pausing execution in a processor or the like |
US489130 | 2000-01-21 | ||
PCT/US2001/001392 WO2001053935A1 (en) | 2000-01-21 | 2001-01-17 | Method and apparatus for pausing execution in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60109748D1 DE60109748D1 (de) | 2005-05-04 |
DE60109748T2 true DE60109748T2 (de) | 2006-02-09 |
Family
ID=23942534
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60109748T Expired - Lifetime DE60109748T2 (de) | 2000-01-21 | 2001-01-17 | Verfahren und gerät zur ausführungsunterbrechung in einem prozessor |
DE60143230T Expired - Lifetime DE60143230D1 (de) | 2000-01-21 | 2001-01-17 | Verfahren und Vorrichtung zur Unterbrechung von Befehlsausführungen in einem Prozessor |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60143230T Expired - Lifetime DE60143230D1 (de) | 2000-01-21 | 2001-01-17 | Verfahren und Vorrichtung zur Unterbrechung von Befehlsausführungen in einem Prozessor |
Country Status (7)
Country | Link |
---|---|
US (2) | US6671795B1 (de) |
EP (2) | EP1256054B1 (de) |
CN (2) | CN1426553B (de) |
AU (1) | AU2001229506A1 (de) |
DE (2) | DE60109748T2 (de) |
RU (1) | RU2271035C2 (de) |
WO (1) | WO2001053935A1 (de) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US20020184290A1 (en) * | 2001-05-31 | 2002-12-05 | International Business Machines Corporation | Run queue optimization with hardware multithreading for affinity |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7805220B2 (en) | 2003-03-14 | 2010-09-28 | Sharper Image Acquisition Llc | Robot vacuum with internal mapping system |
US7594089B2 (en) | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7711931B2 (en) | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
DE602004017879D1 (de) * | 2003-08-28 | 2009-01-02 | Mips Tech Inc | Integrierter mechanismus zum suspendieren und endznem prozessor |
US7376954B2 (en) | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7373536B2 (en) * | 2004-08-04 | 2008-05-13 | Kabushiki Kaisha Toshiba | Fine granularity halt instruction |
US7203100B2 (en) | 2004-11-01 | 2007-04-10 | Sun Mircosystems, Inc. | Efficient implementation of a read scheme for multi-threaded register file |
US20060136919A1 (en) * | 2004-12-17 | 2006-06-22 | Sun Microsystems, Inc. | System and method for controlling thread suspension in a multithreaded processor |
US7577762B1 (en) * | 2005-02-01 | 2009-08-18 | Nvidia Corporation | Cooperative scheduling for multiple consumers |
US7840845B2 (en) * | 2005-02-18 | 2010-11-23 | Intel Corporation | Method and system for setting a breakpoint |
US7266674B2 (en) * | 2005-02-24 | 2007-09-04 | Microsoft Corporation | Programmable delayed dispatch in a multi-threaded pipeline |
US7882381B2 (en) * | 2006-06-29 | 2011-02-01 | Intel Corporation | Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop |
US8032737B2 (en) * | 2006-08-14 | 2011-10-04 | Marvell World Trade Ltd. | Methods and apparatus for handling switching among threads within a multithread processor |
US8566568B2 (en) | 2006-08-16 | 2013-10-22 | Qualcomm Incorporated | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
US8230203B2 (en) * | 2007-03-30 | 2012-07-24 | Intel Corporation | Detecting spin loops in a virtual machine environment |
US8639062B2 (en) * | 2007-10-09 | 2014-01-28 | Bank Of America Corporation | Ensuring image integrity using document characteristics |
US8502819B1 (en) | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US8289324B1 (en) | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
US8458438B2 (en) * | 2008-02-26 | 2013-06-04 | International Business Machines Corporation | System, method and computer program product for providing quiesce filtering for shared memory |
US8527715B2 (en) * | 2008-02-26 | 2013-09-03 | International Business Machines Corporation | Providing a shared memory translation facility |
US8140834B2 (en) * | 2008-02-26 | 2012-03-20 | International Business Machines Corporation | System, method and computer program product for providing a programmable quiesce filtering register |
US8032716B2 (en) * | 2008-02-26 | 2011-10-04 | International Business Machines Corporation | System, method and computer program product for providing a new quiesce state |
US8380907B2 (en) * | 2008-02-26 | 2013-02-19 | International Business Machines Corporation | Method, system and computer program product for providing filtering of GUEST2 quiesce requests |
JP4897851B2 (ja) * | 2009-05-14 | 2012-03-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システム及びコンピュータ・システムの制御方法 |
US8533505B2 (en) * | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
US8564589B1 (en) | 2010-05-17 | 2013-10-22 | Nvidia Corporation | System and method for accelerated ray-box intersection testing |
US8555036B1 (en) | 2010-05-17 | 2013-10-08 | Nvidia Corporation | System and method for performing predicated selection of an output register |
CN104011703B (zh) | 2011-12-22 | 2017-04-12 | 英特尔公司 | 用于指定应用线程性能状态的指令的指令处理装置及相关方法 |
EP2831721B1 (de) | 2012-03-30 | 2020-08-26 | Intel Corporation | Kontextumschaltungsmechanismus für einen prozessorkern mit einem universal-cpu-kern und einem fest gekoppelten beschleuniger |
US9218288B2 (en) * | 2012-06-15 | 2015-12-22 | International Business Machines Corporation | Monitoring a value in storage without repeated storage access |
US9323535B2 (en) * | 2013-06-28 | 2016-04-26 | Intel Corporation | Instruction order enforcement pairs of instructions, processors, methods, and systems |
CN104298552B (zh) * | 2013-07-15 | 2018-06-19 | 华为技术有限公司 | 多线程处理器的线程取指调度方法、系统和多线程处理器 |
GB2519103B (en) * | 2013-10-09 | 2020-05-06 | Advanced Risc Mach Ltd | Decoding a complex program instruction corresponding to multiple micro-operations |
US9396032B2 (en) * | 2014-03-27 | 2016-07-19 | Intel Corporation | Priority based context preemption |
US9778949B2 (en) * | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US10467011B2 (en) * | 2014-07-21 | 2019-11-05 | Intel Corporation | Thread pause processors, methods, systems, and instructions |
KR102476357B1 (ko) | 2015-08-06 | 2022-12-09 | 삼성전자주식회사 | 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 |
GB2544994A (en) * | 2015-12-02 | 2017-06-07 | Swarm64 As | Data processing |
US10437880B2 (en) | 2016-02-08 | 2019-10-08 | Bank Of America Corporation | Archive validation system with data purge triggering |
US9823958B2 (en) | 2016-02-08 | 2017-11-21 | Bank Of America Corporation | System for processing data using different processing channels based on source error probability |
US10460296B2 (en) | 2016-02-08 | 2019-10-29 | Bank Of America Corporation | System for processing data using parameters associated with the data for auto-processing |
US10437778B2 (en) | 2016-02-08 | 2019-10-08 | Bank Of America Corporation | Archive validation system with data purge triggering |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US9952942B2 (en) | 2016-02-12 | 2018-04-24 | Bank Of America Corporation | System for distributed data processing with auto-recovery |
US10067869B2 (en) | 2016-02-12 | 2018-09-04 | Bank Of America Corporation | System for distributed data processing with automatic caching at various system levels |
CN108255516A (zh) * | 2016-12-29 | 2018-07-06 | 展讯通信(上海)有限公司 | 顺序同步多线程处理器及其指令执行控制方法、装置 |
GB2563384B (en) * | 2017-06-07 | 2019-12-25 | Advanced Risc Mach Ltd | Programmable instruction buffering |
GB2563589B (en) | 2017-06-16 | 2019-06-12 | Imagination Tech Ltd | Scheduling tasks |
GB2563587B (en) | 2017-06-16 | 2021-01-06 | Imagination Tech Ltd | Scheduling tasks |
US10860618B2 (en) | 2017-09-25 | 2020-12-08 | Splunk Inc. | Low-latency streaming analytics |
CN109697084B (zh) * | 2017-10-22 | 2021-04-09 | 刘欣 | 一个用于时分复用流水线处理器的快速访问存储器结构 |
US10997180B2 (en) | 2018-01-31 | 2021-05-04 | Splunk Inc. | Dynamic query processor for streaming and batch queries |
US10936585B1 (en) | 2018-10-31 | 2021-03-02 | Splunk Inc. | Unified data processing across streaming and indexed data sets |
US11238048B1 (en) | 2019-07-16 | 2022-02-01 | Splunk Inc. | Guided creation interface for streaming data processing pipelines |
US11614923B2 (en) | 2020-04-30 | 2023-03-28 | Splunk Inc. | Dual textual/graphical programming interfaces for streaming data processing pipelines |
US20220245156A1 (en) | 2021-01-29 | 2022-08-04 | Splunk Inc. | Routing data between processing pipelines via a user defined data stream |
US11687487B1 (en) * | 2021-03-11 | 2023-06-27 | Splunk Inc. | Text files updates to an active processing pipeline |
US11663219B1 (en) | 2021-04-23 | 2023-05-30 | Splunk Inc. | Determining a set of parameter values for a processing pipeline |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59111526A (ja) | 1982-12-16 | 1984-06-27 | Fujitsu Ltd | 信号処理方式 |
US4881194A (en) * | 1987-11-16 | 1989-11-14 | Intel Corporation | Stored-program controller for equalizing conditional branch delays |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
JP2866241B2 (ja) * | 1992-01-30 | 1999-03-08 | 株式会社東芝 | コンピュータシステムおよびスケジューリング方法 |
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
JP3678759B2 (ja) * | 1992-07-21 | 2005-08-03 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 割込を発生するための装置および割込を発生するための方法 |
US5584031A (en) | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
US5546037A (en) | 1993-11-15 | 1996-08-13 | Cirrus Logic, Inc. | NAPNOP circuit for conserving power in computer systems |
US5632032A (en) * | 1994-02-07 | 1997-05-20 | International Business Machines Corporation | Cross address space thread control in a multithreaded environment |
US5748950A (en) * | 1994-09-20 | 1998-05-05 | Intel Corporation | Method and apparatus for providing an optimized compare-and-branch instruction |
SE9404294D0 (sv) * | 1994-12-09 | 1994-12-09 | Ellemtel Utvecklings Ab | sätt och anordning vid telekommunikation |
JPH08320797A (ja) * | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
CN101794212B (zh) | 1995-08-31 | 2015-01-07 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
CN1147785C (zh) | 1996-08-27 | 2004-04-28 | 松下电器产业株式会社 | 执行多个指令流的多程序流程同时处理器 |
US5961639A (en) | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US5784616A (en) * | 1997-05-02 | 1998-07-21 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation |
US5935705A (en) * | 1997-10-15 | 1999-08-10 | National Science Council Of Republic Of China | Crystalline Six Cy Nz with a direct optical band gap of 3.8 eV |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
KR100280460B1 (ko) * | 1998-04-08 | 2001-02-01 | 김영환 | 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
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 |
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US6687838B2 (en) * | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
-
2000
- 2000-01-21 US US09/489,130 patent/US6671795B1/en not_active Expired - Lifetime
-
2001
- 2001-01-17 CN CN01806539.2A patent/CN1426553B/zh not_active Expired - Fee Related
- 2001-01-17 AU AU2001229506A patent/AU2001229506A1/en not_active Abandoned
- 2001-01-17 DE DE60109748T patent/DE60109748T2/de not_active Expired - Lifetime
- 2001-01-17 CN CN201110270809.2A patent/CN102346689B/zh not_active Expired - Fee Related
- 2001-01-17 EP EP01942736A patent/EP1256054B1/de not_active Expired - Lifetime
- 2001-01-17 WO PCT/US2001/001392 patent/WO2001053935A1/en active IP Right Grant
- 2001-01-17 RU RU2002122402/09A patent/RU2271035C2/ru not_active IP Right Cessation
- 2001-01-17 DE DE60143230T patent/DE60143230D1/de not_active Expired - Lifetime
- 2001-01-17 EP EP05000364A patent/EP1522917B1/de not_active Expired - Lifetime
-
2003
- 2003-12-08 US US10/728,962 patent/US7451296B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
AU2001229506A1 (en) | 2001-07-31 |
CN102346689B (zh) | 2013-10-16 |
EP1522917A3 (de) | 2007-11-28 |
US7451296B2 (en) | 2008-11-11 |
WO2001053935A1 (en) | 2001-07-26 |
CN102346689A (zh) | 2012-02-08 |
EP1256054B1 (de) | 2005-03-30 |
CN1426553B (zh) | 2011-11-09 |
RU2002122402A (ru) | 2004-02-27 |
CN1426553A (zh) | 2003-06-25 |
RU2271035C2 (ru) | 2006-02-27 |
EP1522917A2 (de) | 2005-04-13 |
US6671795B1 (en) | 2003-12-30 |
US20040117604A1 (en) | 2004-06-17 |
EP1522917B1 (de) | 2010-10-06 |
DE60109748D1 (de) | 2005-05-04 |
EP1256054A1 (de) | 2002-11-13 |
DE60143230D1 (de) | 2010-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60109748T2 (de) | Verfahren und gerät zur ausführungsunterbrechung in einem prozessor | |
DE112004002296B4 (de) | Anwenderprogrammierbares Multithreading mit geringem Overhead | |
DE10085363B4 (de) | Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor | |
DE60032481T2 (de) | Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor | |
DE10297856B4 (de) | Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt | |
DE112005002305B4 (de) | Thread-Livelock-Einheit | |
DE10085375B4 (de) | Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer | |
DE60038693T2 (de) | Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor | |
DE10296980B4 (de) | Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor | |
DE60029619T2 (de) | Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor | |
DE112004001320B3 (de) | Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren | |
DE60217157T2 (de) | Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts | |
DE102010052680A1 (de) | Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE112011100744T5 (de) | Datenverarbeitungsvorrichtung und -Verfahren zum Schalten einer Arbeitslast zwischen ersten und zweiten Verarbeitungsschaltkreisen | |
DE112004001133T5 (de) | Warteschlangen-Sperren mit Monitor-Memory-Wait | |
DE10083848B4 (de) | Eine Prozessorpipline mit einer Befehlswiederholung | |
DE4429921A1 (de) | Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor | |
DE102009051388A1 (de) | Technik zur Förderung effizienter Befehlsfusion | |
DE602004007754T2 (de) | Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung | |
DE112005002403T5 (de) | Prozessor-Pipeline mit konstantem Durchsatz | |
DE102012210895A1 (de) | Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor | |
DE19506435A1 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE112005003343T5 (de) | Mechanismus für eine befehlssatzbasierte Threadausführung an mehreren Befehlsablaufsteuerungen | |
DE60009496T2 (de) | Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |