DE10297597T5 - Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor - Google Patents

Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor Download PDF

Info

Publication number
DE10297597T5
DE10297597T5 DE10297597T DE10297597T DE10297597T5 DE 10297597 T5 DE10297597 T5 DE 10297597T5 DE 10297597 T DE10297597 T DE 10297597T DE 10297597 T DE10297597 T DE 10297597T DE 10297597 T5 DE10297597 T5 DE 10297597T5
Authority
DE
Germany
Prior art keywords
thread
processor
resources
instruction
several
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE10297597T
Other languages
English (en)
Inventor
Deborah Portland Marr
Scott Hillsboro Rodgers
David Cornelius Hill
Shivananden Portland Kaushik
James Banks Crossland
David Portland Koufaty
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
Publication of DE10297597T5 publication Critical patent/DE10297597T5/de
Ceased 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • 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 or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Prozessor, umfassend:
mehrere Thread-partitionierbare Betriebsmittel, die jeweils zwischen mehreren Threads partitionierbar sind;
Logik zum Empfangen einer Programmanweisung aus einem ersten Thread der mehreren Threads, und die als Reaktion auf die Programmanweisung bewirken soll, daß der Prozessor die Ausführung des ersten Threads suspendiert und Teile der mehreren Thread-partitionierbaren Betriebsmittel, die dem ersten Thread assoziiert sind, zur Verwendung durch andere der mehreren Threads freigibt.

Description

  • VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung ist mit den folgenden verwandt: Anmeldung Nr.
    Figure 00010001
    mit dem Titel „A Method and Apparatus for Suspending Execution of a Thread Until a Specified Memory Access Occurs"; Anmeldung Nr.
    Figure 00010001
    mit dem Titel "Coherency Techniques for Suspending Execution of a Thread Until a Specified Memory Access Occurs"; Anmeldung Nr.
    Figure 00010001
    mit dem Titel "Instruction Sequences for Suspending Execution of a Thread Until a Specified Memory Access Occurs", die alle am selben Datum wie die vorliegende Anmeldung registriert wurden.
  • ALLGEMEINER STAND DER TECHNIK 1. Technisches Gebiet
  • Die vorliegende Offenlegung betrifft das Gebiet der Prozessoren und insbesondere Mehrfach-Thread-Prozessoren und Techniken zum vorübergehenden Suspendieren der Verarbeitung eines Threads in einem Mehrfach-Thread-Prozessor.
  • 2. Allgemeiner Stand der Technik
  • Ein Mehrfach-Thread-Prozessor kann gleichzeitig mehrere verschiedene Anweisungssequenzen verarbeiten. Ein Hauptmotivierungsfaktor für die Ausführung mehrerer Anweisungsströme in einem einzigen Prozessor ist die resultierende Verbesserung der Prozessorausnutzung. Über die Jahre haben sich hochparallele Architekturen entwickelt, es ist aber häufig schwierig, genug Parallelität aus einem einzigen Anweisungsstrom zu extrahieren, um die mehrfachen Ausführungseinheiten auszunutzen. Durch Prozessoren mit gleichzeitigen Mehrfach-Threads können mehrere Anweisungsströme gleichzeitig in den verschiedenen Ausführungsbetriebsmitteln ausgeführt werden, um zu versuchen, diese Betriebsmittel besser auszunutzen. Mehrfach-Threads können besonders für solche Programme vorteilhaft sein, bei denen es zu Verzögerungen hoher Latenz kommt oder die häufig auf das Eintreten von Ereignissen warten. Wenn ein Thread darauf wartet, daß eine Task mit hoher Latenz fertig wird, oder auf ein bestimmtes Ereignis, kann ein anderer Thread verarbeitet werden.
  • Es wurden viele verschiedene Techniken vorgeschlagen, um zu steuern, wann ein Prozessor zwischen Threads wechselt. Zum Beispiel erkennen bestimmte Prozessoren bestimmte Ereignisse mit langer Latenz, wie zum Beispiel L2-Cache-Fehlspeicherungen und wechseln als Reaktion auf diese erkannten Ereignisse mit langer Latenz Threads. Obwohl die Erkennung solcher Ereignisse mit langer Latenz in bestimmten Umständen effektiv sein kann, erkennt eine solche Ereigniserkennung nur unwahrscheinlich alle Punkte, an denen es effizient sein kann, Threads zu wechseln. Insbesondere kann es sein, daß das Thread-Wechseln auf Ereignisbasis Punkte in einem Programm, an denen Verzögerungen vom Programmierer beabsichtigt sind, nicht erkennt.
  • Tatsächlich ist häufig der Programmierer am besten in der Lage, zu bestimmen, wann es effizient wäre, Threads zu wechseln, um verschwenderische Spin-Wait-Schleifen oder andere Betriebsmittel verbrauchende Verzögerungstechniken zu vermeiden. Indem Programmen erlaubt wird, den Thread-Wechsel zu steuern, können Programme also effizienter operieren. Zu diesem Zweck können explizite Programmanweisungen vorteilhaft sein, die sich auf die Thread-Auswahl auswirken. Zum Beispiel wird in der US-Patentanmeldung Nr. 09/489 130, registriert am 21.1.2000, eine „Pause"-Anweisung beschrieben. Durch die Pause-Anweisung kann ein Ausführungs-Thread vorübergehend suspendiert werden, bis entweder ein Zählwert erreicht wird oder bis eine Anweisung die Prozessor-Pipeline durchlaufen hat. Die in der oben zitierten Anmeldung beschriebene Pause-Anweisung spezifiziert jedoch nicht, daß thread-partitionierbare Betriebsmittel freigegeben werden sollen. Verschiedene Techniken können nützlich sein, indem Programmierern erlaubt wird, die Betriebsmittel eines Mehrfach-Thread-Prozessors effizienter einzuspannen.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird in den Figuren der beigefügten Zeichnungen als Beispiel und nicht als Beschränkung veranschaulicht.
  • 1 zeigt eine Ausführungsform eines Mehrfach-Thread-Prozessors mit Logik zum Suspendieren eines Threads als Reaktion auf eine Anweisung und zum Freigeben von diesem Thread zugeordneten Betriebsmitteln.
  • 2 ist ein Flußdiagramm der Funktionsweise des Mehrfach-Thread-Prozessors von 1 gemäß einer Ausführungsform.
  • 3a zeigt verschiedene Optionen zum Spezifizieren einer Zeitdauer, für die ein Mehrfach-Thread-Prozessor suspendiert werden kann.
  • 3b zeigt ein Flußdiagramm, in dem aus dem Suspendiert-Zustand entweder durch das Vergehen einer gewählten Zeitdauer oder das Auftreten eines Ereignisses ausgetreten werden kann.
  • 4 zeigt Betriebsmittel-Partitionierung-Sharing und -Duplikation gemäß einer Ausführungsform.
  • 5 zeigt verschiedene Entwurfsrepräsentationen oder Formate zur Simulation, Emulation und Herstellung eines Entwurfs unter Verwendung der offengelegten Techniken.
  • Ausführliche Beschreibung
  • Die folgende Beschreibung beschreibt Techniken zum Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten, wie zum Beispiel logische Implementierungen, Opcodes, Mittel zum Spezifizieren von Operanden, Implementierungen für Betriebsmittel-Partitionierung/-Sharing/-Duplikation, Typen und Beziehungen von Systemkomponenten und Wahlmöglichkeiten für logische Partitionierung/Integration dargelegt, um ein besseres Verständnis der vorliegenden Erfindung zu ermöglichen. Für Fachleute ist jedoch erkennbar, daß die Erfindung ohne solche spezifischen Einzelheiten ausgeübt werden kann. In anderen Fällen wurden Steuerstrukturen, Schaltung auf Gatterebene und volle Softwareanweisungssequenzen nicht im einzelnen gezeigt, um die Erfindung nicht zu verdecken. Anhand der angegebenen Beschreibungen werden Durchschnittsfachleute in der Lage sein, ohne übermäßiges Experimentieren geeignete Funktionalität zu implementieren.
  • Die offengelegten Techniken können es einem Programmierer erlauben, einen Suspendierungsmechanismus in einem Thread zu implementieren, während zugelassen wird, daß andere Threads Verarbeitungsbetriebsmittel einspannen. Partitionen, die zuvor dem suspendierten Thread fest zugeordnet waren, können also freigegeben werden, während der Thread suspendiert ist. Diese und/oder andere offengelegten Techniken können vorteilhafterweise den Gesamtprozessordurchsatz verbessern.
  • 1 zeigt eine Ausführungsform eines Mehrfach-Thread-Prozessors 100 mit Suspendierungslogik 110, um die Suspendierung eines Threads als Reaktion auf eine Anweisung zu ermöglichen. Bei bestimmten Ausführungsformen kann ein „Prozessor" als eine einzige integrierte Schaltung gebildet werden. Bei anderen Ausführungsformen können mehrere integrierte Schaltungen zusammen einen Prozessor bilden, und bei noch anderen Ausführungsformen können Hardware- und Softwareroutinen (z.B. binäre Übersetzungsroutinen) zusammen den Prozessor bilden. Bei der Suspendierungslogik kann es sich um Mikrocode, verschiedene Formen von Steuerlogik oder eine andere Implementierung der beschriebenen Funktionalität, möglicherweise einschließlich Übersetzung, Software usw., handeln.
  • Der Prozessor 100 ist an einen Speicher 195 angekoppelt, damit der Prozessor Anweisungen aus dem Speicher 195 abrufen und diese Anweisungen ausführen kann. Der Speicher und der Prozessor können Punkt-zu-Punkt, über Busbrücken, über eine Speichersteuerung oder über andere bekannte oder anderweitig verfügbare Techniken gekoppelt sein. Der Speicher 195 speichert verschiedene Programm-Threads, darunter einen ersten Thread 196 und einen zweiten Thread 198. Der erste Thread 196 enthält eine SUSPEND-Anweisung.
  • Bei der Ausführungsform von 1 führt eine Bus-/Speichersteuerung 120 einem Frontend 130 auszuführende Anweisungen zu. Das Frontend 130 lenkt das Abrufen von Anweisungen von verschiedenen Threads gemäß Anweisungszeigern 170. Anweisungszeigerlogik ist vervielfältigt, um mehrere Threads zu unterstützen. Das Frontend 130 leitet Anweisungen in thread-partitionierbare Betriebsmittel 140 zur weiteren Verarbeitung. Die thread-partitionierbaren Betriebsmittel 140 enthalten logisch getrennte Partitionen, die fest bestimmten Threads zugeordnet sind, wenn mehrere Threads in dem Prozessor 100 aktiv sind. Bei einer Ausführungsform enthält jede getrennte Partition nur Anweisungen aus dem Thread, dem dieser Teil fest zugeordnet ist. Die thread-partitionierbaren Betriebsmittel 140 können zum Beispiel Anweisungswarteschlangen enthalten. In einem Einzel-Thread-Modus können die Partitionen der thread-partitionierbaren Betriebsmittel 140 kombiniert werden, um eine einzige große Partition zu bilden, die dem einen Thread fest zugeordnet ist.
  • Außerdem enthält der Prozessor 100 den vervielfältigten Zustand 180. Der vervielfältigte Zustand 180 enthält Zustandsvariablen, die ausreichen, um den Kontext für einen logischen Prozessor zu halten. Mit dem vervielfältigten Zustand 180 können mehrere Threads ausgeführt werden, ohne um Zustandsvariablenspeicherung zu konkurrieren. Zusätzlich kann für jeden Thread Registerzuteilungslogik vervielfältigt sein. Die vervielfältigte zustandsbezogene Logik operiert mit den entsprechenden Betriebsmittelpartitionen, um ankommende Anweisungen für die Ausführung vorzubereiten.
  • Die thread-partitionierbaren Betriebsmittel 140 leiten Anweisungen zu gemeinsam benutzten Betriebsmitteln 150 weiter. Die gemeinsam benutzten Betriebsmittel 150 operieren an Anweisungen ungeachtet ihres Ursprungs. Zum Beispiel können Scheduler- und Ausführungseinheiten Thread-unbewußte gemeinsam benutzte Betriebsmittel sein. Die partitionierbaren Betriebsmittel 140 können den gemeinsam benutzten Betriebsmitteln 150 Anweisungen aus mehreren Threads zuführen, indem zwischen den Threads auf eine faire Weise alterniert wird, die einen fortgesetzten Fortschritt an jedem aktiven Thread bereitstellt. Somit können die gemeinsam benutzten Betriebsmittel die bereitgestellten Anweisungen an dem entsprechenden Zustand ohne Sorge um die Thread-Mischung ausführen.
  • Den gemeinsam benutzten Betriebsmitteln 150 kann eine weitere Menge von thread-partitionierbaren Betriebsmitteln 160 folgen. Die Thread- partitionierbaren Betriebsmittel 160 können Ausscheidungsbetriebsmittel wie zum Beispiel ein Umordnungspuffer und dergleichen enthalten. Folglich können die thread-partitionierbaren Betriebsmittel 160 sicherstellen, daß die Ausführung von Anweisungen aus jedem Thread ordnungsgemäß endet, und daß der entsprechende Zustand für diesen Thread entsprechend aktualisiert wird.
  • Wie bereits erwähnt, kann es wünschenswert sein, Programmierern eine Technik zur Implementierung einer Verzögerung bereitzustellen, ohne daß ein konstantes Abfragen einer Speicherstelle oder sogar eine Ausführung einer Schleife von Anweisungen erforderlich ist. Somit enthält der Prozessor 100 von 1 die Suspendierungslogik 110. Die Suspendierungslogik 110 kann programmierbar sein, um eine bestimmte Dauer bereitzustellen, für die der Thread suspendiert werden soll, oder um eine feste Verzögerung bereitzustellen. Die Suspendierungslogik 110 enthält Pipeline-Ausräumlogik 112 und Partitionier-Verschmelzungslogik 114.
  • Die Operationen der Ausführungsform von 1 können mit Bezug auf das Flußdiagramm von 2 weiter erläutert werden. Bei einer Ausführungsform enthält der Anweisungssatz des Prozessors 100 einen SUSPEND-Opcode (eine Anweisung), um die Thread-Suspendierung zu bewirken. Im Block 200 wird der SUSPEND-Opcode als Teil der Anweisungssequenz eines ersten Threads (T1) empfangen. Die Ausführung von Thread T1 wird suspendiert, wie im Block 210 angegeben. Die Thread-Suspendierungslogik 110 enthält Pipeline-Ausräumlogik 112, die die Prozessorpipeline entleert, um alle Anweisungen zu löschen, wie im Block 220 angegeben. Bei einer Ausführungsform bewirkt die Partitionier-Verschmelzungslogik 114, nachdem die Pipeline ausgeräumt wurde, daß etwaige partitionierte Betriebsmittel, die ausschließlich Thread T1 zugeordnet sind, zur Verwendung durch andere Threads freigegeben werden, wie im Block 230 angegeben. Diese freigegebenen Betriebsmittel werden verschmolzen, um eine Menge größerer Betriebsmittel zur Verwendung durch die übrigen aktiven Threads zu bilden.
  • Wie im Block 235 angegeben, können andere Threads ausgeführt werden (vorausgesetzt daß Anweisungen zur Ausführung verfügbar sind) während Thread T1 suspendiert ist. Somit können Prozessorbetriebsmittel im wesentlichen ohne Störungen aus dem Thread T1 weiter verwendet werden. Eine vollständigere feste Zuordnung der Prozessorbetriebsmittel zu anderen Threads kann vorteilhafterweise die Verarbeitung anderer nützlicher Ausführungsströme vorantreiben, wenn Thread T1 nur wenig oder keine nützliche Arbeit zu verrichten hat, oder wenn ein Programm urteilt, daß das Abschließen von Tasks in Thread T1 keine Priorität ist.
  • Mit suspendiertem Thread T1 tritt der Prozessor im allgemeinen in einen implementierungsabhängigen Zustand ein, der es anderen Threads erlaubt, die Prozessorbetriebsmittel vollständiger auszunutzen. Bei bestimmten Ausführungsformen kann der Prozessor einen Teil der Partitionen der partitionierbaren Betriebsmittel 140 und 160, die fest T1 zugeordnet waren, oder alle dieser freigeben. Bei anderen Ausführungsformen können verschiedene Permutationen des SUSPEND-Opcodes oder von diesem zugeordneten Einstellungen angeben, welche etwaigen Betriebsmittel freigegeben werden sollen. Wenn zum Beispiel ein Programmierer ein kürzeres Warten antizipiert, kann der Thread suspendiert werden, aber die meisten Betriebsmittelpartitionen behalten. Der Durchsatz ist immer noch verbessert, da die gemeinsam benutzten Betriebsmittel während der Threadsuspendierungsperiode ausschließlich von anderen Threads verwendet werden können. Wenn ein längeres Warten antizipiert wird, erlaubt eine Freigabe aller dem suspendierten Thread zugeordneter Partitionen anderen Threads, über zusätzliche Betriebsmittel zur verfügen, wodurch der Durchsatz der anderen Threads potentiell vergrößert wird. Der zusätzliche Durchsatz kommt jedoch zu Lasten des Overheads, das dem Entfernen und Hinzufügen von Partitionen zugeordnet ist, wenn Threads suspendiert bzw. wiederaufgenommen werden.
  • Im Block 240 wird geprüft, ob aus dem Suspendierungszustand ausgetreten werden soll. Wenn die spezifizierte Verzögerung aufgetreten ist (d.h. es ist genügend Zeit vergangen), dann kann der Thread wiederaufgenommen werden. Wie lange der Thread suspendiert wird, kann auf vielerei Weisen spezifiziert werden, wie in 3a gezeigt. Zum Beispiel kann ein Prozessor 300 eine durch eine Routine des Mikrocodes 310 spezifizierte Verzögerungszeit (D1) enthalten. Ein Timer oder Zähler 312 kann die Verzögerung implementieren und dem Mikrocode signalisieren, wann die spezifizierte Zeitdauer vergangen ist. Alternativ dazu kann mit einer oder mehreren Schmelzverbindungen 330 (fuses) eine Verzögerung (D2) spezifiziert werden, oder ein Register 340 kann eine Verzögerung (D3) speichern. Eine Verzögerung (D4) kann durch ein Register oder durch eine Speicherstelle spezifiziert werden, wie zum Beispiel ein Konfigurationsregister in einer Brücke oder Speichersteuerung 302, die an den Prozessor angekoppelt ist. Eine Verzögerung (D5) kann außerdem durch das grundlegende Eingangs-/Ausgangssystem (BIOS) 322 spezifiziert werden. Als weitere Alternative könnte die Verzögerung (D6) in einem an die Speichersteuerung 302 angekoppelten Speicher 304 gespeichert werden. Der Prozessor 300 kann den Verzögerungswert als einen impliziten oder expliziten Operanden für den SUSPEND-Opcode abrufen, während er durch eine Ausführungseinheit 320 ausgeführt wird. Außerdem kann die Verzögerung mit anderen bekannten oder anderweitig verfügbaren oder zweckmäßigen Techniken zum Spezifizieren eines Werts spezifiziert werden.
  • Wieder mit Bezug auf 2 verfolgt der Timer, der Zähler oder der andere verwendete Verzögerungsmeßmechanismus, wenn die Verzögerungszeit nicht abgelaufen ist, weiter die Verzögerung und der Thread bleibt suspendiert, wie durch die Rückkehr zum Block 240 angegeben. Wenn die Verzögerungszeit abgelaufen ist, beginnt die Wiederaufnahme des Threads T1 im Block 250. Wie im Block 250 angegeben wird die Pipeline ausgeräumt, um Betriebsmittel für Thread T1 zu befreien. Im Block 260 werden Betriebsmittel umpartitio niert, so daß Thread T1 Teile der thread-partitionierbaren Betriebsmittel besitzt, mit denen er Operationen durchführen kann. Schließlich startet Thread T1 die Ausführung neu, wie im Block 270 angegeben.
  • Also liefern die Ausführungsformen von 1 und 2 Techniken, durch die ein Thread durch ein Programm für eine bestimmte Dauer suspendiert werden kann. Bei einer Ausführungsform können auch andere Ereignisse bewirken, daß T1 wiederaufgenommen wird. Zum Beispiel kann ein Interrupt bewirken, daß T1 wiederaufgenommen wird. 3b zeigt ein Flußdiagramm für eine Ausführungsform, die es anderen Ereignissen erlaubt, zu bewirken, daß aus dem Suspendierungszustand ausgetreten wird. Im Block 360 ist der Thread gemäß vorherigen Operationen bereits suspendiert. Im Block 370 wird geprüft, ob genug Zeit vergangen ist (wie zuvor mit Bezug auf 2 besprochen). Falls genug Zeit vergangen ist, wird Thread T1 wiederaufgenommen, wie im Block 380 angegeben.
  • Wenn jedoch im Block 365 nicht genug Zeit vergangen ist, dann werden in den Blöcken 370 und 375 etwaige Suspendierungszustand-Break-Ereignisse erkannt. Bei bestimmten Ausführungsformen kann es Operanden, Konfigurationseinstellungen, Permutationen der SUSPEND-Anweisung usw. geben, die spezifizieren, welche etwaigen Ereignisse bewirken, daß aus dem Suspendierungszustand ausgetreten wird. Somit prüft Block 370, ob etwaige (und in bestimmten Ausführungsformen welche) Ereignisse freigegeben sind, ein Break des Suspendierungszustands zu bewirken. Wenn keine Ereignisse freigegeben sind, ein Break des Suspendierungszustands zu bewirken, dann kehrt der Prozeß zum 365 zurück. Wenn beliebige der freigegebenen Ereignisse auftreten, was im Block 375 geprüft wird, dann wird Thread T1 wiederaufgenommen, wie im Block 380 angegeben. Andernfalls verbleibt der Prozessor mit dem Thread T1 in dem Suspendiert-Zustand und der Prozeß kehrt zum Block 365 zurück.
  • 4 zeigt das Partitionieren, Duplizieren und gemeinsame Benutzen von Betriebsmitteln gemäß einer Ausführungsform. Partitionierte Betriebsmittel können gemäß dem Auf und Ab aktiver Threads in der Maschine partitioniert und verschmolzen (zur Wiederverwendung durch andere Threads wieder zusammengeschmolzen) werden. Bei der Ausführungsform von 4 umfassen duplizierte Betriebsmittel Anweisungszeigerlogik in dem Anweisungsabrufteil der Pipeline, Registerumbenennungslogik in dem Umbenennungsteil der Pipeline, (nicht gezeigte, aber in verschiedenen Stufen in der Pipeline erwähnte) Zustandsvariablen und eine Interrupt-Steuerung (nicht gezeigt, im allgemeinen asynchron zur Pipeline). Gemein benutzte Betriebsmittel in der Ausführungsform von 4 umfassen Scheduler in der Schedule-Stufe der Pipeline, ein Registerpool in den Register-Lese- und -schreibteilen der Pipeline und Ausführungsbetriebsmittel im Ausführungsteil der Pipeline. Zusätzlich können ein Trace-Cache und ein L1-Daten-Cache gemeinsam benutzte Betriebsmittel sein, die gemäß Speicherzugriffen ungeachtet des Thread-Kontexts aufgefüllt werden. Bei anderen Ausführungsformen kann bei Cache-Speicherungsentscheidungen Thread-Kontext berücksichtigt werden. Partitionierte Betriebsmittel in der Ausführungsform von 4 umfassen zwei Warteschlangen in Warteschlangenstufen der Pipeline, einen Umordnungspuffer in einer Ausscheidungsstufe der Pipeline und einen Speicherpuffer. Thread-Auswahlmultiplexlogik alterniert zwischen den verschiedenen duplizierten und partitionierten Betriebsmitteln, um beiden Threads einen sinnvollen Zugriff zu gewähren.
  • Bei der Ausführungsform von 4 werden, wenn ein Thread suspendiert ist, alle mit Thread 1 zusammenhängenden Anweisungen aus beiden Warteschlangen entleert. Jedes Paar von Warteschlangen wird dann kombiniert, um dem zweiten Thread eine größere Warteschlange bereitzustellen. Ähnlich werden weitere Register aus dem Registerpool dem zweiten Thread zur Verfügung gestellt, weitere Einträge aus dem Speicherpuffer werden für den zweiten Thread befreit und weitere Einträge in dem Umordnungspuffer werden dem zweiten Thread zur Verfügung gestellt. Im wesentlichen werden diese Strukturen wieder in einzelne fest zugeordnete Strukturen der doppelten Größe verwandelt. Natürlich können sich aus Implementierungen, die verschieden viele Threads verwenden, verschiedene Proportionen ergeben.
  • Bei bestimmten Ausführungsformen können die thread-partitionierbaren Betriebsmittel, die vervielfältigten Betriebsmittel und die gemeinsam benutzten Betriebsmittel verschieden angeordnet sein. Bei bestimmten Ausführungsformen liegen möglicherweise nicht an beiden Enden der gemeinsam benutzten Betriebsmittel partitionierbare Betriebsmittel vor. Bei bestimmten Ausführungsformen können die partitionierbaren Betriebsmittel möglicherweise nicht strikt partitioniert sein, sondern statt dessen bestimmten Anweisungen ermöglichen, Partitionen zu überschreiten, oder Partitionen ermöglichen, eine verschiedene Größe aufzuweisen, abhängig von dem in dieser Partition ausgeführten Thread oder von der Gesamtzahl von ausgeführten Threads. Außerdem können verschiedene Mischungen von Betriebsmitteln als gemeinsam benutzte, duplizierte und partitionierte Betriebsmittel ausgewiesen werden.
  • 5 zeigt verschiedene Entwurfsrepräsentationen oder -formate zur Simulation, Emulation und Herstellung eines Entwurfs unter Verwendung der offengelegten Techniken. Daten; die einen Entwurf repräsentieren, können den Entwurf auf vielerlei Weise repräsentieren. Erstens ist es in Simulationen nützlich, daß die Hardware mit einer Hardwarebeschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert wird, die im wesentlichen ein computerisiertes Modell dafür liefert, wie die entworfene Hardware erwartungsgemäß arbeiten wird. Das Hardwaremodell 1110 kann in einem Speichermedium 1100, wie zum Beispiel einem Computerspeicher, gespeichert werden, so daß das Modell unter Verwendung von Simulationssoftware 1120 simuliert werden kann, die eine bestimmte Prüfsuite 1130 auf das Hardwaremodell 1110 anwendet, um zu bestimmen, ob es tatsächlich wie beabsichtigt funktioniert. Bei bestimmten Ausführungsformen wird die Simulationssoftware nicht aufgezeichnet, erfaßt oder in dem Medium gehalten.
  • Zusätzlich kann ein Modell auf Schaltungsebene mit Logik und/oder Transistorgattern in einer bestimmten Phase des Entwurfsprozesses erzeugt werden. Dieses Modell kann ähnlich simuliert werden, und zwar manchmal durch eigene Hardwaresimulatoren, die das Modell unter Verwendung programmierbarer Logik bilden. Diese An von Simulation kann, wenn sie etwas weiter geführt wird, eine Emulationstechnik sein. In jedem Fall ist umkonfigurierbare Hardware eine weitere Ausführungsform, die ein maschinenlesbares Medium beteiligen kann, das ein Modell speichert, das die offengelegten Techniken verwendet.
  • Außerdem erreichen die meisten Entwürfe in einer bestimmten Phase eine Ebene von Werten, die die physikalische Plazierung verschiedener Geräte in dem Hardwaremodell repräsentieren. Falls herkömmliche Halbleiterherstellungstechniken verwendet werden, können die das Hardwaremodell repräsentierenden Daten die Daten sein, die die Anwesenheit oder Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten für zur Herstellung der integrierten Schaltung verwendete Masken spezifizieren. Wiederum realisieren diese die integrierte Schaltung repräsentierenden Daten insofern die offengelegten Techniken, als die Schaltkreise oder Logik in den Daten simuliert oder hergestellt werden, um diese Techniken durchzuführen.
  • Bei jeder Repräsentation des Entwurfs können die Daten in jeder beliebigen Form eines computerlesbaren Mediums gespeichert werden. Eine optische oder elektrische Welle 1160, die moduliert oder anderweitig erzeugt wird, um solche Informationen zu senden, ein Speicher 1150 oder eine magnetische oder optische Speicherung 1140, zum Beispiel eine Platte, können das Medium sein. Die Menge von Bits, die den Entwurf oder den bestimmten Teil des Entwurfs beschreiben, sind ein Artikel, der an und für sich von anderen zum weiteren Entwurf oder zur weiteren Herstellung verkauft oder benutzt werden kann.
  • Es werden also Techniken zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt, offengelegt. Obwohl bestimmte Ausführungsbeispiele beschrieben und in den beigefügten Zeichnungen gezeigt wurden, versteht sich, daß solche Ausführungsformen die allgemeine Erfindung lediglich veranschaulichen und nicht einschränken, und daß die vorliegende Erfindung nicht auf die spezifisch gezeigten und beschriebenen Konstruktionen und Anordnungen beschränkt ist, da Durchschnittsfachleuten bei Durchsicht der vorliegenden Offenlegung verschiedene andere Modifikationen einfallen können.
  • Zusammenfassung
  • Techniken zum Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor. Bei einer Ausführungsform enthält ein Prozessor Betriebsmittel, die zwischen mehreren Threads partitioniert werden können. Prozessorlogik empfängt eine Anweisung in einem ersten Ausführungsthread und gibt als Reaktion auf diese Anweisung Teile der portionierten Betriebsmittel zur Verwendung durch andere Threads frei.

Claims (26)

  1. Prozessor, umfassend: mehrere Thread-partitionierbare Betriebsmittel, die jeweils zwischen mehreren Threads partitionierbar sind; Logik zum Empfangen einer Programmanweisung aus einem ersten Thread der mehreren Threads, und die als Reaktion auf die Programmanweisung bewirken soll, daß der Prozessor die Ausführung des ersten Threads suspendiert und Teile der mehreren Thread-partitionierbaren Betriebsmittel, die dem ersten Thread assoziiert sind, zur Verwendung durch andere der mehreren Threads freigibt.
  2. Prozessor nach Anspruch 1, wobei die Programmanweisung eine Suspendierungsanweisung ist.
  3. Prozessor nach Anspruch 1, wobei die Logik bewirken soll, daß der Prozessor den ersten Thread für eine gewählte Zeitdauer suspendiert.
  4. Prozessor nach Anspruch 3, wobei die gewählte Zeitdauer eine feste Zeitdauer ist.
  5. Prozessor nach Anspruch 3, wobei der Prozessor Anweisungen aus einem zweiten Thread ausführen soll, während der erste Thread suspendiert ist.
  6. Prozessor nach Anspruch 3, wobei die gewählte Zeitdauer durch mindestens eine Technik programmierbar ist, die aus der folgenden Menge gewählt wird: Bereitstellen eines Operanden in Verbindung mit der Programmanweisung; Durchbrennen von Schmelzverbindungen zum Setzen der gewählten Dauer; Programmieren der gewählten Dauer in einer Speicherstelle vor dem Decodieren der Programmanweisung; Setzen der gewählten Dauer in Mikrocode.
  7. Prozessor nach Anspruch 1, wobei die mehreren thread-partitionierbaren Betriebsmittel folgendes umfassen: eine Anweisungswarteschlange; ein Registerpool.
  8. Prozessor nach Anspruch 7, weiterhin umfassend: mehrere gemeinsam benutzte Betriebsmittel, wobei die mehreren gemeinsam benutzten Betriebsmittel folgendes umfassen: mehrere Ausführungseinheiten; einen Cache; einen Scheduler; mehrere duplizierte Betriebsmittel, wobei die mehreren duplizierten Betriebsmittel folgendes umfassen: mehrere Prozessorzustandsvariablen; einen Anweisungszeiger; Registerumbenennungslogik.
  9. Prozessor nach Anspruch 8, wobei die mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfassen: mehrere Umordnungspuffer; mehrere Speicherpuffereinträge.
  10. Prozessor nach Anspruch 1, wobei die Logik weiterhin bewirken soll, daß der Prozessor die Ausführung des ersten Threads als Reaktion auf ein Ereignis wiederaufnimmt.
  11. Prozessor nach Anspruch 3, wobei die Logik weiterhin bewirken soll, daß der Prozessor Ereignisse ignoriert, bis die gewählte Zeitdauer vergangen ist.
  12. Prozessor nach Anspruch 1, wobei der Prozessor in digitalem Format auf einem computerlesbaren Medium realisiert ist.
  13. Verfahren mit den folgenden Schritten: Empfangen eines ersten Opcodes in einem ersten Ausführungsthread; Suspendieren des ersten Threads für eine gewählte Zeitdauer als Reaktion auf den ersten Opcode; Freigeben mehrerer thread-partitionierbarer Betriebsmittel als Reaktion auf den ersten Opcode.
  14. Verfahren nach Anspruch 13, wobei das Freigeben folgendes umfaßt: Verschmelzen der mehreren thread-partitionierbaren Betriebsmittel, damit sie größere Strukturen werden, die von weniger Threads verwendbar sind.
  15. Verfahren nach Anspruch 14, wobei das Freigeben der mehreren thread-partitionierbaren Betriebsmittel folgendes umfaßt: Freigeben einer Partition einer Anweisungswarteschlange; Freigeben mehrerer Register aus einem Registerpool.
  16. Verfahren nach Anspruch 15, wobei das Freigeben der mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfaßt: Freigeben mehrerer Speicherpuffereinträge; Freigeben mehrerer Umordnungspuffereinträge.
  17. Verfahren nach Anspruch 13, wobei die gewählte Zeitdauer durch mindestens eine Technik programmierbar ist, die aus der folgenden Menge gewählt wird: Bereitstellen eines Operanden in Verbindung mit dem ersten Opcode; Durchbrennen von Schmelzverbindungen zum Setzen der gewählten Zeitdauer; Einprogrammieren der gewählten Zeitdauer in eine Speicherstelle vor dem Dekodieren der Programmanweisung; Setzen der gewählten Zeitdauer in Mikrocode.
  18. System, umfassend: einen Speicher zum Speichern mehrerer Programm-Threads, einschließlich eines ersten Threads und eines zweiten Threads, wobei der erste Thread eine erste Anweisung enthält; einen mit dem Speicher gekoppelten Prozessor, wobei der Prozessor mehrere thread-partitionierbare Betriebsmittel und mehrere gemeinsam benutzte Betriebsmittel enthält, wobei der Prozessor Anweisungen aus dem Speicher ausführen soll, wobei der Prozes sor als Reaktion auf die Ausführung der ersten Anweisung den ersten Thread suspendieren und Teile der mehreren thread-partitionierbaren Betriebsmittel freigeben soll.
  19. System nach Anspruch 18, wobei der Prozessor den zweiten Thread aus dem Speicher ausführen soll, während der erste Thread suspendiert ist.
  20. System nach Anspruch 19, wobei der Prozessor die Ausführung des ersten Threads als Reaktion auf die erste Anweisung für eine gewählte Zeitdauer suspendieren soll, wobei die gewählte Zeitdauer durch mindestens eine Technik gewählt wird, die aus einer folgenden Menge gewählt wird: Bereitstellen eines Operanden in Verbindung mit der Programmanweisung; Durchbrennen von Schmelzverbindungen, um die gewählte Zeitdauer zu setzen; Einprogrammieren der gewählten Zeitdauer in eine Speicherstelle vor dem Decodieren der Programmanweisung; Setzen der gewählten Zeitdauer in Mikrocode.
  21. System nach Anspruch 18, wobei die mehreren thread-partitionierbaren Betriebsmittel folgendes umfassen: eine Anweisungswarteschlange; ein Registerpool.
  22. System nach Anspruch 21, wobei der Prozessor weiterhin folgendes umfaßt: mehrere gemeinsam benutzte Betriebsmittel, wobei die mehreren gemeinsam benutzten Betriebsmittel folgendes umfassen: mehrere Ausführungseinheiten; einen Cache; einen Scheduler; mehrere duplizierte Betriebsmittel, wobei die mehreren duplizierten Betriebsmittel folgendes umfassen: mehrere Prozessorzustandsvariablen; einen Anweisungszeiger; Registerumbenennungslogik.
  23. System nach Anspruch 22, wobei die mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfassen: mehrere Umordnungspuffer; mehrere Speicherpuffereinträge.
  24. Vorrichtung, umfassend: Mittel zum Empfangen einer ersten Anweisung aus einem ersten Thread; Mittel zum Suspendieren des ersten Threads als Reaktion auf die erste Anweisung; Mittel zum Freigeben mehrerer Partitionen mehrerer Betriebsmittel; Mittel zum Umpartitionieren der mehreren Betriebsmittel nach einer gewählten Zeitdauer.
  25. Vorrichtung nach Anspruch 24, wobei die erste Anweisung eine Makroanweisung aus einem benutzer-ausführbaren Programm ist.
  26. Vorrichtung nach Anspruch 25, wobei die mehreren Betriebsmittel ein Registerpool und eine Anweisungswarteschlange umfassen.
DE10297597T 2001-12-31 2002-12-11 Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor Ceased DE10297597T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/039,777 US20030126416A1 (en) 2001-12-31 2001-12-31 Suspending execution of a thread in a multi-threaded processor
US10/039,777 2001-12-31
PCT/US2002/039790 WO2003058434A1 (en) 2001-12-31 2002-12-11 Suspending execution of a thread in a multi-threaded

Publications (1)

Publication Number Publication Date
DE10297597T5 true DE10297597T5 (de) 2005-01-05

Family

ID=21907295

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297597T Ceased DE10297597T5 (de) 2001-12-31 2002-12-11 Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor

Country Status (9)

Country Link
US (1) US20030126416A1 (de)
JP (1) JP2005514698A (de)
KR (1) KR100617417B1 (de)
CN (1) CN1287272C (de)
AU (1) AU2002364559A1 (de)
DE (1) DE10297597T5 (de)
HK (1) HK1075109A1 (de)
TW (1) TW200403588A (de)
WO (1) WO2003058434A1 (de)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7376954B2 (en) 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
WO2005022381A2 (en) 2003-08-28 2005-03-10 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US8984517B2 (en) * 2004-02-04 2015-03-17 Intel Corporation Sharing idled processor execution resources
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8533716B2 (en) 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US8041930B2 (en) * 2005-05-11 2011-10-18 Arm Limited Data processing apparatus and method for controlling thread access of register sets when selectively operating in secure and non-secure domains
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
CN101595456A (zh) 2006-12-27 2009-12-02 莫尔It资源有限公司 用于事务资源控制的方法和系统
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
US20080162858A1 (en) * 2007-01-03 2008-07-03 Freescale Semiconductor, Inc. Hardware-based memory initialization with software support
US8725975B2 (en) * 2007-01-03 2014-05-13 Freescale Semiconductor, Inc. Progressive memory initialization with waitpoints
US20080244242A1 (en) * 2007-04-02 2008-10-02 Abernathy Christopher M Using a Register File as Either a Rename Buffer or an Architected Register File
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
WO2008155794A1 (ja) * 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置
CN101681260B (zh) * 2007-06-20 2013-04-17 富士通株式会社 运算装置
US20090100249A1 (en) * 2007-10-10 2009-04-16 Eichenberger Alexandre E Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
US8131983B2 (en) * 2008-04-28 2012-03-06 International Business Machines Corporation Method, apparatus and article of manufacture for timeout waits on locks
US20120166777A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for switching threads
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US8578394B2 (en) * 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
CN103389911B (zh) * 2012-05-07 2016-08-03 启碁科技股份有限公司 节省系统资源的方法及运用其方法的操作系统
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) * 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
EP2972836B1 (de) 2013-03-15 2022-11-09 Intel Corporation Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US9515901B2 (en) 2013-10-18 2016-12-06 AppDynamics, Inc. Automatic asynchronous handoff identification
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
JP6448779B2 (ja) * 2015-05-14 2019-01-09 株式会社日立製作所 サーバストレージシステムを含んだ計算機システム
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
CN107690625B (zh) * 2017-03-16 2022-02-11 深圳大趋智能科技有限公司 iOS线程恢复的方法及装置
TWI647619B (zh) * 2017-08-29 2019-01-11 智微科技股份有限公司 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置
CN109471673B (zh) * 2017-09-07 2022-02-01 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置
US10481915B2 (en) * 2017-09-20 2019-11-19 International Business Machines Corporation Split store data queue design for an out-of-order processor
GB201717303D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6105127A (en) * 1996-08-27 2000-08-15 Matsushita Electric Industrial Co., Ltd. Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
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
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
SG65097A1 (en) * 1998-12-28 2001-08-21 Compaq Computer Corp Break event generation during transitions between modes of operation in a computer system
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread 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
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
AU2002326378A1 (en) * 2001-07-13 2003-01-29 Sun Microsystems, Inc. Facilitating efficient join operations between a head thread and a speculative thread

Also Published As

Publication number Publication date
WO2003058434A1 (en) 2003-07-17
CN1287272C (zh) 2006-11-29
KR100617417B1 (ko) 2006-08-30
US20030126416A1 (en) 2003-07-03
AU2002364559A1 (en) 2003-07-24
HK1075109A1 (en) 2005-12-02
CN1608246A (zh) 2005-04-20
TW200403588A (en) 2004-03-01
JP2005514698A (ja) 2005-05-19
KR20040069352A (ko) 2004-08-05

Similar Documents

Publication Publication Date Title
DE10297597T5 (de) Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE19983476B4 (de) Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE68927911T2 (de) Datenverarbeitungssystem
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE2714805C2 (de)
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE69807729T2 (de) Threadumschaltungssteuerung in einem multithreadprozessorsystem
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE3751356T2 (de) Informationsverarbeitungssystem.
DE19681660C2 (de) Verfahren zum Ausführen von Befehlssätzen, die Operationen an verschiedenen Datenarten und Register eines gemeinsamen logischen Registersatzes spezifizieren
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE2722099C2 (de)
DE112004002296B4 (de) Anwenderprogrammierbares Multithreading mit geringem Overhead
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE4429921A1 (de) Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor
DE69622832T2 (de) Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112005003343B4 (de) Mechanismus für eine befehlssatzbasierte Threadausführung an mehreren Befehlsablaufsteuerungen
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10297597

Country of ref document: DE

Date of ref document: 20050105

Kind code of ref document: P

8131 Rejection