DE60109748T2 - Verfahren und gerät zur ausführungsunterbrechung in einem prozessor - Google Patents

Verfahren und gerät zur ausführungsunterbrechung in einem prozessor Download PDF

Info

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
Application number
DE60109748T
Other languages
English (en)
Other versions
DE60109748D1 (de
Inventor
T. Deborah MARR
Dion Rodgers
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60109748D1 publication Critical patent/DE60109748D1/de
Publication of DE60109748T2 publication Critical patent/DE60109748T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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 Prozessorsystems 10 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-Einheit 31), die einen Befehl zu einem Zeitpunkt ausführen kann. Das Prozessorsystem 10 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 Abrufeinheit 11 abgerufen, zu einer Warteschlange 13 geliefert und als Teil der Warteschlange des Thread 0 oder der Warteschlange des Thread 1 gespeichert. Ein Fachmann wird verstehen, dass die im Prozessorsystem 10 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 Steuerlogik 17 wird zur Steuerung verwendet, ob die Befehle von Thread 0 oder Thread 1 zu einer Decodiereinheit 21 geliefert werden. Die Decodiereinheit 21 kann einen Befehl in zwei oder mehr Mikrobefehle konvertieren und liefert die Befehle an die Warteschlange 23. Die Ausgaben der Warteschlange 23 werden zu einem MUX geliefert, der basierend auf dem Betrieb der Steuerlogik 26 die Befehle von Thread 0 oder Thread 1 zu einer Umbenennungs-/Zuweisungseinheit 27 liefert. Die Umbenennungs-/Zuweisungseinheit 27 liefert die Befehle ihrerseits an die Warteschlange 28. MUX 29 wählt basierend auf dem Betrieb der Ablaufplansteuerlogik 30, die ebenfalls die gleichen Eingaben wie MUX 29 empfängt, zwischen der Warteschlange des Thread 0 und der Warteschlange des Thread 1 aus. Die Ausgabe des MUX 29 wird an eine Ausführungseinheit 31 geliefert, die den Befehl ausführt. Die Befehle werden dann in der Warteschlange 33 angeordnet. Die Ausgaben der Warteschlange 33 werden zu einem MUX 34 geliefert, der basierend auf dem Betrieb der Steuerlogik 35 einen Befehl von Thread 0 und Thread 1 zu einer Retire- bzw. Festschreibungs-Einheit 36 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 Abrufeinheit 11 abgerufen und in diesem Beispiel in der Warteschlange des Threads 0 gespeichert. Die Ausgabe der Warteschlange des Threads 0 wird über MUX 15 an eine Decodiereinheit 21 geliefert, die den Aussetzungsbefehl in zwei Mikrobefehle Decodiert: einen SET-Befehl und einen READ-Befehl. An der Decodiereinheit 21 veranlasst ein SET-Befehl die Speicherung eines Wertes im Speicher (z.B. einem Bit-Flag 19), 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-/Zuweisungseinheit 27 und die Ausführungseinheit 31 und die zugeordneten Warteschlangen umfasst. Die Ausführungseinheit 31 wird beim SET-Befehl nicht aktiv (d.h., sie behandelt ihn wie den bekannten NOP-Befehl). Sobald der SET-Befehl durch die Retire-Einheit 26 festgeschrieben ist, wird das Flag 19 zurückgesetzt.
  • Der READ-Befehl an der Decodiereinheit 21 wird solange nicht in der Pipeline angeordnet, bis das Flag 19 zurückgesetzt ist. Wenn Befehle vom Thread 1 in der Warteschlange 13 vorliegen, können diese Befehle dementsprechend durch die Decodiereinheit 21 decodiert und in der Pipeline angeordnet werden. Folglich wird in Abhängigkeit von der Anzahl der Befehle des Threads 1 in den Warteschlangen 23, 28 und 33 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-Einheit 36 zu erreichen). Sobald das Flag 19 zurückgesetzt ist, wird der READ-Befehl zur Warteschlange 23 und schließlich zur Ausführungseinheit 31 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 Decodiereinheit 21 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 Flag 19, bis es zurückgesetzt wird.
  • Ein Beispiel des Betriebs der Decodiereinheit 21 gemäß diesem Ausführungsbeispiel ist in 2 gezeigt. Nach der Decodierung wird in Block 40 der Befehl vom nächsten Thread ermittelt. Im Entscheidungsblock 41 wird ermittelt, ob der Befehl ein SET-Befehl ist. Wenn er es ist, geht die Steuerung zu Block 43 über, wo das Bit-Flag im Speicher gesetzt wird. Im Block 47 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 Block 40 zurück. Wenn der Befehl kein SET-Befehl ist, geht die Steuerung zum Entscheidungsblock 45 über, um zu ermitteln, ob der Befehl ein READ-Befehl ist. Wenn er es ist, geht die Steuerung zum Entscheidungsblock 49 ü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 Block 51 ü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 (Entscheidungsblock 49), geht die Steuerung zu Block 53 ü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 Block 40 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-Flag 19 von 1 durch einen Zähler 39 ersetzt. Wenn als ein erstes Beispiel die Decodiereinheit 21 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ähler 39 geladen. In diesem Beispiel zählt der Zähler 39 vom vorgegebenen Wert zu Null zurück. Während der Zähler 39 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 Decodiereinheit 21 zwischen der Prüfung des wertes des Zählers 39 (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 Decodiereinheit 21, den Operandenwert in den Zähler 39 zu laden, so dass die Zeitdauer des Aussetzungsbefehls gesetzt werden kann.
  • Ein Beispiel des Betriebs des Verarbeitungssystems von 3 ist in 4 gezeigt. Im Entscheidungsblock 60 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 Block 61 über. Wenn dieser Befehl ein Aussetzungsbefehl ist (Entscheidungsblock 63), geht die Steuerung zum Entscheidungsblock 65 über, um zu ermitteln, ob ein Operand dem Aussetzungsbefehl zugeordnet ist. Wenn ein Operand dem Aussetzungsbefehl zugeordnet ist, geht die Steuerung zum Block 67 über, um den Wert in den Zähler zu laden (die Steuerung geht dann zu Block 73 über, um zum nächsten Thread zu wechseln). Wenn kein Operand dem Aussetzungsbefehl zugeordnet ist, geht die Steuerung zu Block 71 über, um einen vorgegebenen Wert in den Zähler zu laden (erneut geht die Steuerung zu Block 73 über, um zum nächsten Thread zu wechseln). Wenn im Entscheidungsblock 63 der Befehl kein Aussetzungsbefehl ist, geht die Steuerung zu Block 69 ü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)

  1. 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).
  2. Das Verfahren nach Anspruch 1, ferner umfassend ein Decodieren des ersten Befehls in einen ersten Mikrobefehl und einen zweiten Mikrobefehl.
  3. Das Verfahren nach Anspruch 2, wobei der erste Mikrobefehl bewirkt, daß ein Wert für den ersten Thread im Speicher gespeichert wird.
  4. Das Verfahren nach Anspruch 3, ferner umfassend eine Verarbeitung des zweiten Mikrobefehls zur Ausführung, wenn der im Speicher gespeicherte Wert zurückgesetzt ist.
  5. Das Verfahren nach Anspruch 4, wobei der im Speicher gespeicherte Wert zurückgesetzt wird, wenn der erste Mikrobefehl festgeschrieben (retired) wird.
  6. 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.
  7. Das Verfahren nach Anspruch 6, wobei die Ausführung von Software-Code bewirkt, daß der Pause-Befehl an der Decodiereinheit empfangen wird.
  8. 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).
  9. 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.
  10. 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).
  11. 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.
  12. 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.
  13. 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).
  14. 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.
  15. 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).
  16. Das Verfahren nach Anspruch 15, wobei der erste Wert einer vorgegebenen Zeitdauer entspricht.
  17. 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.
  18. 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.
  19. Die Einrichtung nach Anspruch 18, wobei der erste Befehl einen ersten Mikrobefehl und einen zweiten Mikrobefehl umfaßt.
  20. 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.
  21. Die Einrichtung nach Anspruch 20, wobei die Decodiereinheit den zweiten Mikrobefehl zur Ausführung verarbeitet, wenn der im Speicher gespeicherte Wert zurückgesetzt ist.
  22. 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.
  23. 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.
  24. 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.
  25. 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.
  26. 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.
  27. 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.
  28. 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.
  29. Der Prozessor nach Anspruch 25, wobei die Dauer eine vorgegebene Zeitdauer ist.
  30. 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.
  31. Die Einrichtung nach Anspruch 30, wobei der erste Befehl einen in den Zähler zu ladenden Operanden enthält.
  32. Die Einrichtung nach Anspruch 31, wobei die Decodiereinheit mit ihrem Betrieb fortfahren kann, während der erste Thread an der Verarbeitung gehindert wird.
DE60109748T 2000-01-21 2001-01-17 Verfahren und gerät zur ausführungsunterbrechung in einem prozessor Expired - Lifetime DE60109748T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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