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 PDFInfo
- 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
Links
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 33
- 238000005192 partition Methods 0.000 claims description 15
- 239000000872 buffer Substances 0.000 claims description 11
- 239000000725 suspension Substances 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims description 3
- 238000007664 blowing Methods 0.000 claims 1
- 238000013461 design Methods 0.000 description 11
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 208000003443 Unconsciousness Diseases 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000029142 excretion Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction 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.
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. mit dem Titel „A Method and Apparatus for Suspending Execution of a Thread Until a Specified Memory Access Occurs"; Anmeldung Nr. mit dem Titel "Coherency Techniques for Suspending Execution of a Thread Until a Specified Memory Access Occurs"; Anmeldung Nr. 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 von1 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-Prozessors100 mit Suspendierungslogik110 , 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 Speicher195 angekoppelt, damit der Prozessor Anweisungen aus dem Speicher195 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 Speicher195 speichert verschiedene Programm-Threads, darunter einen ersten Thread196 und einen zweiten Thread198 . Der erste Thread196 enthält eine SUSPEND-Anweisung. - Bei der Ausführungsform von
1 führt eine Bus-/Speichersteuerung120 einem Frontend130 auszuführende Anweisungen zu. Das Frontend130 lenkt das Abrufen von Anweisungen von verschiedenen Threads gemäß Anweisungszeigern170 . Anweisungszeigerlogik ist vervielfältigt, um mehrere Threads zu unterstützen. Das Frontend130 leitet Anweisungen in thread-partitionierbare Betriebsmittel140 zur weiteren Verarbeitung. Die thread-partitionierbaren Betriebsmittel140 enthalten logisch getrennte Partitionen, die fest bestimmten Threads zugeordnet sind, wenn mehrere Threads in dem Prozessor100 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 Betriebsmittel140 können zum Beispiel Anweisungswarteschlangen enthalten. In einem Einzel-Thread-Modus können die Partitionen der thread-partitionierbaren Betriebsmittel140 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 Zustand180 . Der vervielfältigte Zustand180 enthält Zustandsvariablen, die ausreichen, um den Kontext für einen logischen Prozessor zu halten. Mit dem vervielfältigten Zustand180 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 Betriebsmitteln150 weiter. Die gemeinsam benutzten Betriebsmittel150 operieren an Anweisungen ungeachtet ihres Ursprungs. Zum Beispiel können Scheduler- und Ausführungseinheiten Thread-unbewußte gemeinsam benutzte Betriebsmittel sein. Die partitionierbaren Betriebsmittel140 können den gemeinsam benutzten Betriebsmitteln150 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 Betriebsmitteln160 folgen. Die Thread- partitionierbaren Betriebsmittel160 können Ausscheidungsbetriebsmittel wie zum Beispiel ein Umordnungspuffer und dergleichen enthalten. Folglich können die thread-partitionierbaren Betriebsmittel160 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 von1 die Suspendierungslogik110 . Die Suspendierungslogik110 kann programmierbar sein, um eine bestimmte Dauer bereitzustellen, für die der Thread suspendiert werden soll, oder um eine feste Verzögerung bereitzustellen. Die Suspendierungslogik110 enthält Pipeline-Ausräumlogik112 und Partitionier-Verschmelzungslogik114 . - Die Operationen der Ausführungsform von
1 können mit Bezug auf das Flußdiagramm von2 weiter erläutert werden. Bei einer Ausführungsform enthält der Anweisungssatz des Prozessors100 einen SUSPEND-Opcode (eine Anweisung), um die Thread-Suspendierung zu bewirken. Im Block200 wird der SUSPEND-Opcode als Teil der Anweisungssequenz eines ersten Threads (T1) empfangen. Die Ausführung von Thread T1 wird suspendiert, wie im Block210 angegeben. Die Thread-Suspendierungslogik110 enthält Pipeline-Ausräumlogik112 , die die Prozessorpipeline entleert, um alle Anweisungen zu löschen, wie im Block220 angegeben. Bei einer Ausführungsform bewirkt die Partitionier-Verschmelzungslogik114 , 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 Block230 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 und160 , 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 in3a gezeigt. Zum Beispiel kann ein Prozessor300 eine durch eine Routine des Mikrocodes310 spezifizierte Verzögerungszeit (D1) enthalten. Ein Timer oder Zähler312 kann die Verzögerung implementieren und dem Mikrocode signalisieren, wann die spezifizierte Zeitdauer vergangen ist. Alternativ dazu kann mit einer oder mehreren Schmelzverbindungen330 (fuses) eine Verzögerung (D2) spezifiziert werden, oder ein Register340 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 Speichersteuerung302 , 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 Speichersteuerung302 angekoppelten Speicher304 gespeichert werden. Der Prozessor300 kann den Verzögerungswert als einen impliziten oder expliziten Operanden für den SUSPEND-Opcode abrufen, während er durch eine Ausführungseinheit320 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 Block240 angegeben. Wenn die Verzögerungszeit abgelaufen ist, beginnt die Wiederaufnahme des Threads T1 im Block250 . Wie im Block250 angegeben wird die Pipeline ausgeräumt, um Betriebsmittel für Thread T1 zu befreien. Im Block260 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 Block270 angegeben. - Also liefern die Ausführungsformen von
1 und2 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 Block360 ist der Thread gemäß vorherigen Operationen bereits suspendiert. Im Block370 wird geprüft, ob genug Zeit vergangen ist (wie zuvor mit Bezug auf2 besprochen). Falls genug Zeit vergangen ist, wird Thread T1 wiederaufgenommen, wie im Block380 angegeben. - Wenn jedoch im Block
365 nicht genug Zeit vergangen ist, dann werden in den Blöcken370 und375 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 Block370 , 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ß zum365 zurück. Wenn beliebige der freigegebenen Ereignisse auftreten, was im Block375 geprüft wird, dann wird Thread T1 wiederaufgenommen, wie im Block380 angegeben. Andernfalls verbleibt der Prozessor mit dem Thread T1 in dem Suspendiert-Zustand und der Prozeß kehrt zum Block365 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 von4 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 von4 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 von4 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 Hardwaremodell1110 kann in einem Speichermedium1100 , wie zum Beispiel einem Computerspeicher, gespeichert werden, so daß das Modell unter Verwendung von Simulationssoftware1120 simuliert werden kann, die eine bestimmte Prüfsuite1130 auf das Hardwaremodell1110 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 Speicher1150 oder eine magnetische oder optische Speicherung1140 , 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)
- 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.
- Prozessor nach Anspruch 1, wobei die Programmanweisung eine Suspendierungsanweisung ist.
- Prozessor nach Anspruch 1, wobei die Logik bewirken soll, daß der Prozessor den ersten Thread für eine gewählte Zeitdauer suspendiert.
- Prozessor nach Anspruch 3, wobei die gewählte Zeitdauer eine feste Zeitdauer ist.
- Prozessor nach Anspruch 3, wobei der Prozessor Anweisungen aus einem zweiten Thread ausführen soll, während der erste Thread suspendiert ist.
- 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.
- Prozessor nach Anspruch 1, wobei die mehreren thread-partitionierbaren Betriebsmittel folgendes umfassen: eine Anweisungswarteschlange; ein Registerpool.
- 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.
- Prozessor nach Anspruch 8, wobei die mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfassen: mehrere Umordnungspuffer; mehrere Speicherpuffereinträge.
- 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.
- Prozessor nach Anspruch 3, wobei die Logik weiterhin bewirken soll, daß der Prozessor Ereignisse ignoriert, bis die gewählte Zeitdauer vergangen ist.
- Prozessor nach Anspruch 1, wobei der Prozessor in digitalem Format auf einem computerlesbaren Medium realisiert ist.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 15, wobei das Freigeben der mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfaßt: Freigeben mehrerer Speicherpuffereinträge; Freigeben mehrerer Umordnungspuffereinträge.
- 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.
- 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.
- System nach Anspruch 18, wobei der Prozessor den zweiten Thread aus dem Speicher ausführen soll, während der erste Thread suspendiert ist.
- 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.
- System nach Anspruch 18, wobei die mehreren thread-partitionierbaren Betriebsmittel folgendes umfassen: eine Anweisungswarteschlange; ein Registerpool.
- 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.
- System nach Anspruch 22, wobei die mehreren thread-partitionierbaren Betriebsmittel weiterhin folgendes umfassen: mehrere Umordnungspuffer; mehrere Speicherpuffereinträge.
- 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.
- Vorrichtung nach Anspruch 24, wobei die erste Anweisung eine Makroanweisung aus einem benutzer-ausführbaren Programm ist.
- Vorrichtung nach Anspruch 25, wobei die mehreren Betriebsmittel ein Registerpool und eine Anweisungswarteschlange umfassen.
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)
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)
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 |
-
2001
- 2001-12-31 US US10/039,777 patent/US20030126416A1/en not_active Abandoned
-
2002
- 2002-12-11 AU AU2002364559A patent/AU2002364559A1/en not_active Abandoned
- 2002-12-11 JP JP2003558678A patent/JP2005514698A/ja active Pending
- 2002-12-11 KR KR1020047010393A patent/KR100617417B1/ko not_active IP Right Cessation
- 2002-12-11 DE DE10297597T patent/DE10297597T5/de not_active Ceased
- 2002-12-11 CN CNB028261585A patent/CN1287272C/zh not_active Expired - Fee Related
- 2002-12-11 WO PCT/US2002/039790 patent/WO2003058434A1/en active Application Filing
- 2002-12-25 TW TW091137297A patent/TW200403588A/zh unknown
-
2005
- 2005-08-24 HK HK05107419A patent/HK1075109A1/xx not_active IP Right Cessation
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 |