DE112004001133T5 - Warteschlangen-Sperren mit Monitor-Memory-Wait - Google Patents

Warteschlangen-Sperren mit Monitor-Memory-Wait Download PDF

Info

Publication number
DE112004001133T5
DE112004001133T5 DE112004001133T DE112004001133T DE112004001133T5 DE 112004001133 T5 DE112004001133 T5 DE 112004001133T5 DE 112004001133 T DE112004001133 T DE 112004001133T DE 112004001133 T DE112004001133 T DE 112004001133T DE 112004001133 T5 DE112004001133 T5 DE 112004001133T5
Authority
DE
Germany
Prior art keywords
processor
lock
monitor
event
machine
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
DE112004001133T
Other languages
English (en)
Inventor
Per Hillsboro Hammarlund
James Banks Crossland
Anil Portland Aggarwal
Shivnandan Portland Kaushik
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 DE112004001133T5 publication Critical patent/DE112004001133T5/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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Abstract

Ein Verfahren, umfassend:
Überwachen eines einer umstrittenen Sperre zugeordneten Knotens; und
Versetzen eines Prozessors, der die umstrittene Sperre erwerben möchte, in einen Ruhemodus, bis ein Ereignis eintritt.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Erfindungsgebiet
  • Die Erfindung bezieht sich auf Prozessoren und insbesondere auf den Einsatz von Monitor-Memory-Wait zur Überwachung einer Sperre für einen oder mehrere auf die Sperre wartenden Prozessoren, bis die Sperre verfügbar ist.
  • Beschreibung der einschlägigen Technik
  • Ein Hyperthreaded- oder Multithreaded-Prozessor ist typisch fähig, gleichzeitig mehrere Anweisungsfolgen zu verarbeiten. Ein primärer Motivierungsfaktor, der die Ausführung mehrerer Anweisungsströme innerhalb eines einzigen Prozessors treibt, ist die resultierende Verbesserung in der Prozessornutzung. Hyperthreaded-Prozessoren erlauben mehreren Anweisungsströmen die gleichzeitige Ausführung in verschiedenen Ausführungsressourcen, um diese Ressourcen besser nutzen zu können. Des weiteren können Hyperthreaded-Prozessoren für Programme benutzt werden, die hohe Latenzverzögerungen antreffen oder die oft auf das Eintreten von Ereignissen warten.
  • Hyperthreaded-Prozessoren weisen typisch ein einziges Ressourcen-Setup auf, welches von allen Threads oder logischen Prozessoren (Prozessoren) gemeinsam benutzt wird. Ein Mangel an hinreichenden Ressourcen kann zu signifikanten Streitigkeiten und Konkurrenz zwischen Prozessoren führen, besonders dann, wenn ein oder mehrere Prozessoren darauf warten, daß eine Sperre verfügbar wird. Vorgeschlagen wurden mehrere Techniken, um Programmablauf-Ineffizienz und andere Ressourcen-verbrauchende Verzögerungen zu verbessern, die den Streit um eine Sperre zwischen mehreren Prozessoren betreffen. Zum Beispiel wird in einem konventionellen Spinwait-Sperrensystem eine Warteschlange verwendet, um den auf die Sperre wartenden Prozessor auf die Warteliste zu setzen, wo er wartet, bis die Sperre verfügbar ist. Während dieses Wartens greift der Prozessor jedoch fortlaufend auf den Speicherort der Sperre zu und verursacht Streit um diesen Speichort, Ressourcen-Engpässe, sowie eine Verschwendung von Speicher-Bandbreite, Berechnungsbandbreite, microarchitektonischen Ressourcen und Strom. Derartige mit Warten beschäftigten Prozessoren können eine nachteilige Auswirkung auf die Leistung anderer Prozessoren im Pakt haben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • In den beigefügten Ansprüchen sind die besonderen Merkmale der vorliegenden Ansprüche aufgeführt. Die Ausführungsformen der vorliegenden Erfindung, zusammen mit ihren Vorteilen, erklären sich am besten mit Bezug auf die folgende ausführliche Beschreibung im Zusammenhang mit den beiliegenden Zeichnungen, in denen
  • 1 ein Blockdiagramm ist, das eine Ausführungsform eines Hyperthreaded-Prozessors mit einem Speicherzugriffsmonitor darstellt;
  • 2 ein Flußdiagramm ist, das eine Ausführungsform einer Betriebsweise eines Hyperthreaded-Prozessors darstellt;
  • 3 ein Blockdiagramm ist, das eine Ausführungsform einer Betriebsweise eines Hyperthreaded-Prozessors darstellt;
  • 4 ein Blockdiagramm ist, das eine Ausführungsform eines Verfahrens zum Partitionieren, zur gemeinsamen Nutzung und zum Duplizieren von Ressourcen darstellt;
  • 5 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zum Suspendieren und Neustarten der Ausführung eines Threads darstellt;
  • 6 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zum Aktivieren und Betreiben einer Überwachungslogik darstellt;
  • 7 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zum Überwachen von Vorgängen darstellt;
  • 8 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zum Erwerb einer Sperre und zur Überwachung der Sperre mit Monitor-Memory-Wait darstellt;
  • 9 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zur Freigabe einer Sperre und zur Überwachung der Sperre mit Monitor-Memory-Wait darstellt;
  • 10 ein Blockdiagramm ist, das eine Ausführungsform eines Systems darstellt; und
  • 11 ein Blockdiagramm ist, das eine Ausführungsform verschiedener Design-Darstellungen oder Formate zur Simulation, Emulation und Fabrikation eines Designs veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Beschrieben wird ein Verfahren und eine Vorrichtung zur Überwachung einer Sperre für einen oder mehrere Prozessoren, die auf eine Sperre warten. Allgemein gesagt, stellen die Ausführungsformen der vorliegenden Erfindung Monitor-Memory-MWait zur Überwachung einer Sperre für einen oder mehrere Prozessoren bereit, die darauf warten, daß die Sperre verfügbar wird.
  • Es wird ein System, eine Vorrichtung und ein Verfahren zum Stillegen (Versetzen in einen Ruhemodus) eines Prozessors bereitgestellt, um eine Sperre zu erwerben, um die sich noch andere Prozessoren bewerben, bis ein Monitor-Ereignis eintritt, durch welches die Sperre für den Prozessor verfügbar wird. Anders ausgedrückt kann der Prozessor, obwohl er darauf wartet, daß die Sperre verfügbar wird, während seines Aufenthalts in einer Warteschlange „schlafen". Gemäß einer Ausführungsform kann der stillgelegte Prozessor nach Wahl seine Ressourcen aufgeben und die aufgegebenen Ressourcen anderen Prozessoren zu ihrer Benutzung zur Verfügung stellen. Gemäß einer Ausführungsform kann der auf die Sperre wartende Prozessor ein logischer Prozessor eines Hyperthreaded-Prozessors sein. Ein typischer Hyperthreaded-Prozessor kann mehrere Threads oder logische Prozessoren, die sich die gleiche Ressource teilen, beinhalten.
  • Gemäß einer Ausführungsform kann Monitor-Memory-Wait (Monitor-Mwait) dazu benutzt werden, die umstrittene Sperre zu überwachen und den Prozessor stillzulegen, bis beispielsweise die Sperre verfügbar wird. Die umstrittene Sperre kann eine Sperre sein, auf die mehrere Prozessoren warten, oder die sie zu erwerben versuchen. Gemäß einer Ausführungsform kann ein dem Prozessor entsprechender Knoten oder ein Warteschlangenelement (Knoten) erzeugt werden. Gemäß einer Ausführungsform kann der Knoten initialisiert, mit der umstrittenen Sperre verknüpft und unter Einsatz von Monitor-Mwait überwacht werden. Das Überwachen des Knotens kann das Überwachen der Sperre durch beispielsweise Überwachen der Sperrenadresse, die als Überwachungsadresse bezeichnet werden kann, beinhalten.
  • Gemäß einer Ausführungsform können ein oder mehrere Ereignisse, oder eine bestimmte Zeitperiode, als Überwachungsereignisse bezeichnet werden, und beim Eintreten eines Überwachungsereignisses kann das Überwachen des Knotens beendet und der Prozessor geweckt werden. Zum Beispiel kann der Anspruch des nächsten Prozessors in der Warteschlange auf die Sperre und die Verfügbarkeit der Sperre als Überwachungsereignis bezeichnet werden. Anders ausgedrückt kann der Prozessor, wenn er der nächste (oder erste) Prozessor in der Reihe ist, der auf den Empfang der umstrittenen Sperre wartet, und die Sperre verfügbar wird, die Sperre beanspruchen und außerdem einige oder alle der früher aufgegebenen Ressourcen zurückverlangen. Gemäß einer Ausführungsform kann die umstrittene Sperre verfügbar werden, wenn sie von einem anderen Prozessor, der die Sperre besitzt, freigegeben wird.
  • Gemäß einer Ausführungsform kann Monitor-Mwait in einem einzigen Thread oder Prozessor implementiert werden, während anderen Prozessoren die Benutzung von Verarbeitungsressourcen erlaubt wird. Zum Beispiel kann gemäß einer Ausführungsform eine Überwachung eingerichtet werden, derart, daß ein Prozessor so lange schlafen kann, bis ein bestimmter Speicherzugriff, wie zum Beispiel das Schreiben auf einen angegebenen Speicherort, eintritt. Bei Eintreten eines bestimmten Ereignisses kann ein Prozessor, ohne Prozessorressourcen-verschwendende Routinen auszuführen, geweckt werden. Gemäß einer Ausführungsform können Partitionen, die früher dem jetzt schlafenden Prozessor zugeordnet waren, aufgegeben werden, während der Prozessor noch schläft. Diese und/oder andere Ausführungsformen der vorliegenden Erfindung führen zu einer relativen Verbesserung des Maschinengesamtdurchsatzes.
  • In der folgenden Beschreibung werden zahlreiche spezifischen Details wie Logikimplementierung, Opcodes, Ressourcenpartitionierung, gemeinsame Ressourcennutzung und Ressourcenduplizierungs-Implementierungen, Typen und Wechselbeziehungen von Systemkomponenten sowie Partitionierungs-/Integrierungswahlen aufgeführt, um ein gründlicheres Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung zu vermitteln. Es versteht sich jedoch, daß ein Fachmann aufgrund der bereitgestellten Offenbarung die Ausführungsformen der vorliegenden Erfindung auch ohne diese spezifischen Details praktizieren kann. In anderen Fällen wurde auf die ausführliche Darstellung von Steuerungsstrukturen, Gate-Level-Schaltungen und vollständigen Software-Anweisungsfolgen verzichtet, um ein möglichst klares Bild der Erfindung zu vermitteln. Ein Fachmann wird anhand der enthaltenen Beschreibungen in der Lage sein, die entsprechende Funktionalität ohne übermäßiges Experimentieren zu implementieren.
  • Im folgenden sollen verschiedene Schritte der erfindungsgemäßen Ausführungsformen beschrieben werden. Die verschiedenen Schritte der Ausführungsformen können von Hardware-Komponenten durchgeführt werden oder können in maschinenausführbare Anweisungen aufgenommen werden, die nach ihrer Einprogrammierung in einen Allzweck- oder Spezialzweckcomputer oder in eine Maschine oder in Logikschaltungen dann die Ausführung der verschiedenen Schritte bewirken können. Die verschiedenen Schritte der Ausführungsformen können aber auch von einer Hardware- und Software-Kombination durchgeführt werden.
  • Verschiedene erfindungsgemäße Ausführungsformen können als Computerprogrammprodukt bereitgestellt werden, wozu ein maschinenlesbares Medium mit darin gespeicherten Anweisungen gehören kann, die zum Programmieren eines Computers (oder anderer elektronischer Geräte) verwendet werden können, um ein Verfahren entsprechend den verschiedenen erfindungsgemäßen Ausführungsformen durchzuführen. Verwendbar als maschinenlesbares Medium, aber nicht darauf beschränkt, sind Floppies, optische Platten, DC-ROMs, magneto-optische Disks, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Flash-Speicher, oder irgendein anderer Typ eines zum Speichern von elektronischen Anweisungen geeigneten Mediums/maschinenlesbaren Mediums. Darüber hinaus können verschiedene erfindungsgemäße Ausführungsformen auch als Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer auf einen anfordernden Computer mittels Datensignalen übertragen werden kann, die über eine Kommunikations-Link (zum Beispiel eine Modem- oder Netzwerkverbindung) in eine Trägerwelle oder ein anderes Fortpflanzungsmedium aufgenommen wurden.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Hyperthreaded-Prozessors 100 mit einem Speicherzugriffsmonitor 110. Gemäß einer Ausführungsform kann ein Prozessor 100 als einzelne integrierte Schaltung ausgebildet sein. Gemäß einer anderen Ausführungsform können mehrere integrierte Schaltungen zusammen einen Prozessor 100 bilden, und gemäß einer wiederum anderen Ausführungsform können Hardware- und Software-Routinen zusammen den Prozessor 100 bilden. Wie dargestellt, kann ein Bus/Speichercontroller 120 Anweisungen zur Ausführung eines Front-End 130 bereitstellen. Das Front-End 130 kann den Abruf von Anweisungen verschiedener Threads entsprechend Anweisungsanzeigern 170 dirigieren. Die Anweisungsanzeigerlogik kann repliziert werden, um mehrere Threads zu unterstützen.
  • Gemäß einer Ausführungsform kann das Front-End 130 den partitionierbaren Thread/Prozessor-Ressourcen 140 Anweisungen zur weiteren Verarbeitung zuführen. Die partitionierbaren Thread/Prozessor-Ressourcen 140 können logisch getrennte Partitionen beinhalten, die bestimmten Threads zugeordnet sind, wenn mehrere Threads innerhalb des Prozessors 100 aktiv sind. Gemäß einer Ausführungsform kann jede separate Partition nur Anweisungen von dem Thread enthalten, dem dieser Abschnitt zugeordnet ist. Die partitionierbaren Thread/Prozessor-Ressourcen 140 können zum Beispiel Anweisungswarteschlangen beinhalten. Im Einzel-Thread-Modus können die partitionierbaren Thread/Prozessor-Ressourcen 140 zu einer einzigen großen Partition, die dem einen Thread zugeordnet ist, zusammengefaßt werden.
  • Gemäß einer Ausführungsform kann der Prozessor 100 auch einen replizierten Zustand 180 enthalten. Der replizierte Zustand 180 kann Zustandsvariablen enthalten, die ausreichend sind, um den Kontext für einen logischen Prozessor aufrechtzuerhalten. Mit dem replizierten Zustand 180 können mehrere Threads konkurrenzlos für zustandsvariable Speicherung ausgeführt werden. Zudem kann für jeden Thread Registerzuweisungslogik repliziert werden. Die replizierte zustandsbezogene Logik kann die entsprechenden Ressourcenpartitionen benutzen, um eingehende Anweisungen auf die Ausführung vorzubereiten.
  • Gemäß einer Ausführungsform können die partitionierbaren Thread/Prozessor-Ressourcen 140 Anweisungen an die gemeinsam benutzten Ressourcen 150 weitergeben. Die gemeinsam benutzten Ressourcen 150 können ungeachtet ihres Ursprungs auf die Anweisungen reagieren. Zum Beispiel können Scheduler- und Ausführungseinheiten gemeinsam benutzte Ressourcen sein, die sich der Threads nicht bewußt sind. Die partitionierbaren Ressourcen 140 können Anweisungen von mehreren Threads an die gemeinsam benutzten Ressourcen 150 weiterleiten, indem sie in fairer Weise zwischen den Threads alternieren, was für einen kontinuierlichen Fortschritt auf jedem aktiven Thread sorgt. Somit können die gemeinsam benutzten Ressourcen 150 die gelieferten Anweisungen auf dem entsprechenden Zustand ausführen, ohne die Thread-Mischung beachten zu müssen.
  • Gemäß einer Ausführungsform kann auf die gemeinsam benutzten Ressourcen 150 ein anderer Satz von partitionierbaren Thread/Prozessor-Ressourcen 160 folgen. Die partitionierbaren Thread/Prozessor-Ressourcen 160 können Deaktivierungsressourcen (retirement resources), wie einen Neuordnungspuffer, beinhalten. Dementsprechend können die partitionierbaren Thread/Prozessor-Ressourcen 160 sicherstellen, daß die Ausführung von Anweisungen von jedem Thread ordnungsgemäß beendet wird, und daß der entsprechende Zustand für diesen Thread entsprechend aktualisiert wird.
  • Gemäß einer Ausführungsform kann Programmierern ein Mechanismus zur Implementierung der Funktionalität von Monitor-Memory-Wait zur Verfügung gestellt werden, ohne daß die ständige Befragung eines Speicherorts oder sogar die Ausführung von Anweisungen erforderlich ist. Zum Beispiel kann der Prozessor 100 einen Speicherzugriffsmonitor 110 enthalten. Der Speicherzugriffsmonitor 110 kann mit Information über einen Speicherzugriffszyklus programmiert werden, den der Speicherzugriffsmonitor 110 nach Aktivierung beobachten kann. Dementsprechend kann der Speicherzugriffsmonitor 110 ein Überwachungszyklus-Informationsregister 112 enthalten, welches mit Buszyklusinformation verglichen wird, die vom Bus/Speichercontroller 120 über Vergleichslogik 114 empfangen wird. Wenn eine Deckung gefunden wird, kann ein Thread-Neustart-Signal erzeugt werden, um einen suspendierten Thread erneut zu starten. Speicherzugriffsinformation kann von internen und/oder externen Bussen des Prozessors eingeholt werden.
  • Das Überwachungszyklus-Informationsregister 112 kann Details enthalten, die den Zyklustyp und/oder Adressentyp festlegen, der den Neustart eines Threads auslösen kann. Gemäß einer Ausführungsform kann das Überwachungszyklus-Informationsregister 112 eine physische Adresse speichern, und der Speicherzugriffsmonitor 110 kann auf jeden Buszyklus achten, der ein tatsächliches oder potentielles Schreiben auf diese physische Adresse anzeigt. Ein solcher Zyklus kann ein expliziter Schreibzyklus und/oder ein Lesevorgang zur Prüfung der Inhaberschaft oder ein entwertender Zyklus von einem anderen Agenten sein, der versucht, die ausschließliche Inhaberschaft einer cache-fähigen Zeile zu erwerben, so daß er ohne eine externe Bustransaktion auf diese Zeile schreiben kann. Der Speicherzugriffsmonitor 110 kann so programmiert werden, daß er durch verschiedene Transaktionen in verschiedenen Ausführungsformen ausgelöst wird.
  • 2 ist ein Flußdiagramm, das die Betriebsweise eines Hyperthread-Prozessors veranschaulicht. Die Betriebsweisen der verschiedenen Ausführungsformen von 1 lassen sich näher mit Bezug auf das Flußdiagramm von 2 erklären. Gemäß einer Ausführungsform kann der Satz von Anweisungen von Prozessor 100 einen MONITOR-Opcode (Anweisung) zum Einrichten der Überwachungstransaktions-Information enthalten. Bei Verarbeitungsblock 200 wird der MONITOR-Opcode als Teil der Folge von Anweisungen eines ersten Threads (T1) empfangen. Bei Verarbeitungsblock 210 aktiviert der Prozessor 100 in Antwort auf den MONITOR-Opcode den Speicherzugriffsmonitor 110, um Speicherzugriffe für den angegebenen Speicherzugriff zu überwachen. Der auslösende Speicherzugriff kann durch einen impliziten oder expliziten Operand bestimmt werden. Folglich kann das Ausführen des MONITOR-Opcodes die Überwachungsadresse bestimmen, da die Überwachungsadresse im Voraus in einem Register oder einem anderen Ort als impliziter Operand gespeichert werden kann. Bei Entscheidungsblock 215 kann der Speicherzugriffsmonitor 110 prüfen, ob der angegebene Zyklus entdeckt wurde. Wenn der angegebene Zyklus nicht entdeckt wird, kann der Speicherzugriffsmonitor 110 das Überwachen von Speicherzugriffen fortsetzen. Wenn der auslösende Zyklus entdeckt wird, kann bei Verarbeitungsblock 220 ein Überwachungsereignisanstehend-Anzeiger gesetzt werden.
  • Gemäß einer Ausführungsform kann das Ausführen des MONITOR-Opcodes die Aktivierung des Speicherzugriffsmonitors 110 auslösen. Der Speicherzugriffsmonitor 110 kann anfangen, parallel zu anderen Vorgängen in Prozessor 100 zu laufen. Gemäß einer Ausführungsform kann die MONITOR-Anweisung selbst nur die entsprechende Speicherzyklusinformation im Speicherzugriffsmonitor 110 einrichten und den Speicherzugriffsmonitor 110 aktivieren, ohne Überwachungsereignisse aufzudecken. Anders ausgedrückt heißt das, nach Ausführen des MONITOR-Opcodes können Überwachungsereignisse kumulieren, aber nicht erkannt werden, es sei denn, daß sie explizit aufgedeckt wurden.
  • Bei Verarbeitungsblock 225 ist das Auslösen eines Memory-Wait (Mwait) als separates Ereignis veranschaulicht. Gemäß einer Ausführungsform kann ein MWAIT-Opcode dazu verwendet werden, das Erkennen von Überwachungsereignissen und die Suspendierung von T1 auszulösen. Bei Einsatz von zwei separaten Anweisungen zum Einrichten und Auslösen der Thread-Suspendierung erhält ein Programmierer mehr Flexibilität und kann effizienter programmieren. Gemäß einer anderen Ausführungsform kann Mwait durch den ersten Opcode ausgelöst werden, wodurch auch der Speicherzugriffsmonitor 110 eingerichtet werden kann. In jedem Fall kann der Speicherzugriffsmonitor 110 mit einer oder mehreren Anweisungen ausgerüstet werden und das Erkennen von Überwachungsereignissen ermöglichen.
  • Gemäß einer Ausführungsform, bei der separate Opcodes zum Ausrüsten . des Speicherzugriffsmonitors 110 und zum Auslösen der Erkennung von Überwachungsereignissen benutzt werden, kann eine Prüfung durchgeführt werden, um sicherzustellen, daß der Speicherzugriffsmonitor 110 aktiviert wurde, bevor der Thread bei Entscheidungblock 230 suspendiert wird. Des weiteren kann durch Prüfen, ob ein Überwachungsereignis bereits ansteht (nicht dargestellt), das Suspendieren von T1 vermieden und der Betrieb bei Verarbeitungsblock 250 fortgesetzt werden. Wenn der Monitor 110 aktiviert wurde, und noch keine Überwachungsereignisse anstehen, kann T1 bei Verarbeitungsblock 250 suspendiert werden.
  • Nach Suspendieren von T1 kann gemäß einer Ausführungsform der Prozessor 100 in einen Implementierungs-abhängigen Zustand eintreten, welcher anderen Threads die umfassendere Nutzung von Prozessor-Ressourcen erlauben kann. Gemäß einer Ausführungsform kann der Prozessor einige oder alle Partitionen der partitionierbaren Ressourcen 140 und 160 aufgeben, die T1 zugeordnet waren. Gemäß einer Ausführungsform können verschiedene Varianten des MONITOR-Opcodes oder der damit verknüpften Einstellungen anzeigen, welche Ressourcen, falls zutreffend, aufgegeben werden sollen. Wenn zum Beispiel ein Programmierer ein kürzeres Wait voraussieht, kann der Thread suspendiert werden, seine Ressourcen-Partitionen jedoch behalten. Der Durchsatz ist trotzdem verbessert, weil die gemeinsam benutzten Ressourcen während der Thread-Suspendierungsperiode ausschließlich von anderen Threads benutzt werden. Wenn ein längeres Wait vorausgesehen wird, können durch Aufgeben aller mit dem suspendierten Thread verknüpften Partitionen anderen Threads zusätzliche Ressourcen zugestanden werden, wodurch möglicherweise der Durchsatz der anderen Threads steigt. Der zusätzliche Durchsatz kann auf Kosten des Overheads gehen, das mit dem Entfernen und Hinzufügen von Partitionen verknüpft ist, wenn Threads suspendiert bzw. neu gestartet werden.
  • Gemäß einer Ausführungsform kann T1 so lange in einem suspendierten Zustand verbleiben, bis ein Überwachungsereignis ansteht. Wie an früherer Stelle besprochen, kann der Speicherzugriffsmonitor 110 unabhängig laufen, um Überwachungsereignisse (Block 215220) zu entdecken und zu melden. Wenn der Prozessor 100 bei Entscheidungsblock 240 entdeckt, daß ein Überwachungsereignis ansteht, kann T1 bei Verarbeitungsblock 250 wieder gestartet werden. Ein aktives Verarbeiten von Anweisungen in T1, damit das Überwachungsereignis T1 weckt, ist nicht erforderlich; vielmehr kann T1 weiterhin suspendiert bleiben, und der aktivierte Speicherzugriffsmonitor 110 kann dem Prozessor 110 ein Ereignis melden. Der Prozessor 100 kann das Ereignis handhaben und erkennen, daß T1 infolge des Ereignisses neu gestartet werden soll, und die entsprechenden Aktionen zum Neustarten von T1 durchführen.
  • Die Ausführungsformen von 1 und 2 können Techniken bereitstellen, um einen von einem Programm suspendierten Thread nach Eintreten eines bestimmten Speicherzugriffs neu zu starten. Gemäß einer Ausführungsform können aber auch andere Ereignisse den Neustart von T1 bewirken. Zum Beispiel kann ein Interrupt den Neustart von T1 verursachen. Eine solche Implementierung könnte zu einer weniger perfekten Ausbildung von Speicherzugriffsmonitor 110 führen, insofern als der Speicherzugriffsmonitor bestimmte Speicherzugriffe oder andere Bedingungen überschlägt (d.h. nicht entdeckt), die einen Neustart des Threads bewirken sollen. Dies kann dazu führen, daß T1 viele Male unnötig geweckt wird. Jedoch reduziert eine solche Implementierung die Wahrscheinlichkeit, daß T1 aufgrund eines nicht erkannten Ereignisses permanent eingefroren wird, so daß Hardware-Design und Validierung vereinfacht werden. Das unnötige Wecken von T1 fällt nicht besonders ins Gewicht, da eine Schleife konstruiert werden kann, die es T1 ermöglicht zweimal zu prüfen, ob die erwartete Bedingung auch wirklich eingetreten ist, und falls nicht, sich von neuem zu suspendieren.
  • Gemäß einer Ausführungsform können die partitionierbaren Thread/Prozessor-Ressourcen, die replizierten Ressourcen und die gemeinsam benutzten Ressourcen auf andere Weise arrangiert werden. In einigen Ausführungsformen sind vielleicht keine partitionierbaren Ressourcen an beiden Enden der gemeinsam benutzten Ressourcen vorhanden. Gemäß einer Ausführungsform müssen die partitionierbaren Thread/Prozessor-Ressourcen nicht strikt partitioniert sein, sondern können manchen Anweisungen erlauben, Partitionen zu überqueren oder in der Größe zu variieren, abhängig vom Thread, der gerade in der betreffenden Partition ausgeführt wird, oder abhängig von der Gesamtanzahl der gerade ausgeführten Threads. Außerdem können verschiedene Ressourcenmischungen als gemeinsam benutzte, duplizierte und Thread-partitionierte Ressourcen bestimmt werden.
  • 3 ist ein Blockdiagramm, welches eine Ausführungsform eines Hyperthreaded-Prozessors darstellt. Wie dargestellt, enthält 3 gemäß einer Ausführungsform Kohärenzbezogene Logik 350, eine Implementierung eines Monitors 310 und eine spezifische Implementierung einer Thread-Suspendierungs-/Neustart- und Prozessor-Schlaf-/Weck-Logik 377, abgesehen von anderen Komponenten. Gemäß einer Ausführungsform enthält eine Busschnittstelle 300 einen Bus-Controller 340, Ereigniserkennungslogik 345, einen Monitor 310 und Kohärenz-bezogene Logik 350.
  • Gemäß einer Ausführungsform kann die Busschnittstelle 300 Anweisungen an ein Front-End 365 liefern, welches durch Erzeugung von uOPs aus Makroanweisungen Micro-Operand-Generierung (uOP) durchführt. Ausführungsressourcen 370 können uOPs vom Front-End 365 empfangen, und die Back-End-Logik 380 kann verschiedene uOPs nach ihrer Ausführung deaktivieren (retire). Gemäß einer Ausführungsform kann eine Ausführung „außer der Reihe" vom Front-End, vom Back-End und von Ausführungsressourcen unterstützt werden.
  • Gemäß einer Ausführungsform kann ein MONITOR-Opcode über die Busschnittstelle 300 in den Prozessor eintreten und vom Front-End 365 auf die Ausführung vorbereitet werden. Gemäß einer Ausführungsform kann ein spezieller MONITOR-uOP zur Ausführung durch die Ausführungsressourcen 370 erzeugt werden. Der MONITOR-uOP kann von den Ausführungseinheiten in ähnlicher Weise wie ein Speichervorgang behandelt werden, wobei die Überwachungsadresse durch Adressenübersetzungslogik 375 in eine physische Adresse übersetzt wird, die an den Monitor 310 geliefert wird. Der Monitor 310 kann mit der Thread-Suspendierungs-/Neustart- und Prozessor-Schlaf-/Weck-Logik 377 kommunizieren, um den Neustart von Threads zu veranlassen. Die Thread-Suspendierungs- und Neustartlogik kann Partitionierung durchführen und Ressourcen wieder miteinander verschmelzen, während sich die Anzahl der aktiven Threads ändert.
  • In 4 ist ein Blockdiagramm dargestellt, das eine Ausführungsform eines Prozesses zum Partitionieren, zur gemeinsamen Nutzung und zum Duplizieren von Ressourcen veranschaulicht. Gemäß einer Ausführungsform können partitionierte Ressourcen entsprechend des Flusses von aktiven Threads durch die Maschine partitioniert und wieder miteinander verschmolzen (zur Wiederbenutzung durch andere Threads fusioniert) werden. Gemäß einer Ausführungsform können duplizierte Ressourcen Anweisungsanzeigerlogik im Anweisungsholabschnitt 405 der Pipeline, Registerumbennungslogik im Umbenennungsabschnitt 415 der Pipeline, Zustandsvariablen (nicht dargestellt) und einen Interrupt-Controller (nicht dargestellt) beinhalten. Gemeinsam benutze Ressourcen können gemäß einer Ausführungsform Scheduler (Planer) im Planungsstadium 425 der Pipeline, einen Register-Pool in den Registerlese- (430) und Registerschreibabschnitten (445) der Pipeline und Ausführungsressourcen im Ausführungsabschnitt 435 der Pipeline enthalten. Zusätzlich können ein Verfolgungs-Cache (in I-fetch 405) und ein L1-Daten-Cache (in L1-Cache 440) gemeinsam benutzte Ressourcen sein, die gemäß Speicherzugriffen ungeachtet des Thread-Kontexts gefüllt werden. Gemäß einer anderen Ausführungsform kann bei Caching-Entscheidungen der Thread-Kontext berücksichtigt werden. Partitionierte Ressourcen können gemäß einer Ausführungsform zwei Warteschlangen in den Warteschlangenstadien 410 der Pipeline, einen Neuordnungspuffer in einem Deaktivierungstadium 450 (retirement stage) der Pipeline und einen Speicherpuffer beinhalten. Thread-Auswahl-Multiplexinglogik kann zwischen verschiedenen duplizierten und partitionierten Ressourcen wechseln, um angemessenen Zugriff auf beide Threads bereitzustellen.
  • Zu Beispielzwecken sei angenommen, daß das Partitionieren, gemeinsame Nutzen und Duplizieren, wie in 4 dargestellt, in Verbindung mit der Ausführungsform in 3 zur weiteren Beschreibung der Betriebsweise einer Ausführungsform des Prozessors von 3 benutzt werden kann. Insbesondere sollen jetzt weitere Details der Betriebsweise der Ausführungsform von 3 mit Bezug auf das Flußdiagramm in 5 erörtert werden. Es wird davon ausgegangen, daß die Ausführung des Prozessors in einen Multithreading-Modus erfolgt, wobei mindestens zwei Threads aktiv sind.
  • 5 ist ein Flußdiagramm, das eine Ausführungsform eines Verfahrens zum Suspendieren und Neustarten der Ausführung eines Threads darstellt. Bei Verarbeitungsblock 500 kann das Front-End 365 einen MONITOR-Opcode während der Ausführung eines ersten Threads (T1) empfangen. Das Front-End 365 kann gemäß einer Ausführungsform einen besonderen Monitor-uOP erzeugen. Der MONITOR-uOP kann an die Ausführungsressourcen 370 weitergereicht werden. Der MONITOR-uOP kann eine zugeordnete Adresse aufweisen, die die zu überwachende Adresse (die Überwachungsadresse) angibt. Die zugeordnete Adresse kann als expliziter Operand oder impliziter Operand ausgebildet sein (d.h. die zugeordnete Adresse ist einem vorbestimmten Register oder einem anderen Speicherort zu entnehmen). Die zugeordnete Adresse kann die Überwachungsadresse dadurch „angeben", daß sie genügend Information zur Bestimmung der Überwachungsadresse (möglicherweise in Verbindung mit anderen Registern oder Informationen) vermittelt. Zum Beispiel kann die zugeordnete Adresse eine lineare Adresse sein, die eine entsprechende physische Adresse aufweist, die die entsprechende Überwachungsadresse sein kann. Die Überwachungsadresse kann aber auch in virtuellem Adressenformat oder als relative Adresse oder in anderer bekannter oder geeigneter adreßspezifierender Weise angegeben werden. Wenn virtuelle Adreß-Operanden benutzt werden, ist es wünschenswert zu gestatten, daß allgemeine Schutzfehler als Break Events (Unterbrechungsereignisse) erkannt werden.
  • Die Überwachungsadresse kann jede zur Überwachung geeignete Speichereinheit bezeichnen. Zum Beispiel kann gemäß einer Ausführungsform die Überwachungsadresse eine Cache-Zeile bezeichnen. Gemäß einer anderen Ausführungsform kann die Überwachungsadresse aber auch einen Abschnitt einer Cache-Zeile, einen Abschnitt oder eine Einheit eines Speichers einer spezifischen/ausgewählten Größe, der zu den Cache-Zeilen-Größen verschiedener Prozessoren andere Beziehungen aufweist, oder eine einzelne Adresse bezeichnen. Die Überwachungsadresse kann eine Einheit bezeichnen, die vom Operand vorgegebene Daten (und mehr Daten) enthält, oder kann spezifisch eine Adresse für eine gewünschte Einheit von Daten bezeichnen.
  • Mit Bezug auf die Darstellung in 3 kann die Überwachungsadresse gemäß einer Ausführungsform an die Adressenübersetzungslogik 375 geliefert und an den Monitor 310 weitergeleitet werden, wo sie in einem Überwachungsadressenregister 335 gespeichert werden kann. In Antwort auf den MONITOR-Opcode können die Ausführungsressourcen 370 dann den Monitor 310 aktivieren und betreiben, wie in Verarbeitungsblock 510 angegeben und im Detail in 6 veranschaulicht. Gemäß einer Ausführungsform können irgendwelche Speichervorgänge, die nach dem MONITOR-Opcode eintreten, eingegrenzt werden, um sicherzustellen, daß die Speicher verarbeitet und daher entdeckt werden, bevor eine Thread-Suspendierung eintritt. Gemäß einer Ausführungsform müssen einige Vorgänge infolge der Aktivierung des Monitors 310 eintreten, bevor irgendwelche späteren Anweisungen ausgeführt werden können. Wie dargestellt, läuft Verarbeitungsblock 510 jedoch parallel zu Verarbeitungsblock 505 ab, weil der Monitor 310, nachdem er gemäß einer Ausführungsform vom MONITOR-Opcode aktiviert wurde, weiterhin parallel zu anderen Vorgängen laufen kann, bis ein Break Event eintritt.
  • Bei Verarbeitungsblock 505 kann ein MEMORY WAIT (MWAIT) Opcode in Thread 1 empfangen werden. Gemäß einer Ausführungsform kann der MWAIT-Opcode zum Aufdecken von Überwachungsereignissen ausgeführt werden. In Antwort auf den MWAIT-Opcode kann bei Verarbeitungsblock 515 eine Prüfung durchgeführt werden, um zu bestimmen, ob ein Überwachungsereignis ansteht. Wenn kein Überwachungsereignis ansteht, kann bei Verarbeitungsblock 520 eine Prüfung durchgeführt werden, um zu bestimmen, ob der Monitor aktiv ist. Wenn zum Beispiel MWAIT ausgeführt wird, ohne vorher einen MONITOR auszuführen, kann der Monitor 310 nicht aktiv sein. Wenn entweder der Monitor inaktiv ist oder ein Überwachungsereignis ansteht, kann die Ausführung von Thread 1 bei Verarbeitungsblock 565 fortgesetzt werden.
  • Gemäß einer Ausführungsform, wenn der Monitor 310 aktiv ist und kein Überwachungsereignis ansteht, kann die Ausführung von Thread 1 bei Verarbeitungsblock 525 suspendiert werden. Die Thread-Suspendierungs-/Neustart-Logik 377 kann Pipeline-Flush-Logik 382 zum Entleeren der Prozessor-Pipeline enthalten, um alle Anweisungen bei Verarbeitungsblock 530 zu löschen. Nach Entleeren der Pipeline kann die Partitionierungs-/Verschmelzungslogik 385 bewirken, daß bei Verarbeitungsblock 535 alle ausschließlich Thread 1 zugeordneten partitionierten Ressourcen zur Benutzung durch andere Threads aufgegeben werden. Die aufgegebenen Ressourcen können miteinander verschmolzen werden, um einen Satz größerer Ressourcen zur Verwendung durch die verbleibenden aktiven Threads zu bilden. Unter Bezugnahme auf das Zwei-Thread-Beispiel in 4 könnten zum Beispiel alle auf Thread 1 bezogenen Anweisungen aus beiden Warteschlangen entfernt werden. Dann kann jedes Warteschlangenpaar kombiniert werden, um eine größere Warteschlange für den zweiten Thread bereitzustellen. Desgleichen könnten dem zweiten Thread mehr Register aus dem Register-Pool zur Verfügung gestellt werden, könnten mehr Einträge aus dem Speicherpuffer für den zweiten Thread freigemacht werden, und könnten mehr Einträge im Neuordnungspuffer dem zweiten Thread zur Verfügung gestellt werden. Im Kern werden diese Strukturen auf einzelne dedizierte Strukturen zurückgeführt, die zweimal so groß sind. Andere Verhältnisse, die sich aus Implementierungen bei Einsatz anderer Threadanzahlen ergeben, werden in Erwägung gezogen.
  • Gemäß einer Ausführungsform werden bei Verarbeitungsblöcken 540, 545 und 550 verschiedene Ereignisse geprüft, um zu bestimmen, ob Thread 1 neu gestartet werden kann. Zu bemerken ist, daß diese Prüfungen nicht mit Anweisungen durchgeführt werden können, die als Teil von Thread 1 ausgeführt werden. Vielmehr können diese Vorgänge vom Prozessor durchgeführt werden, während er parallel dazu andere Threads verarbeitet. Wie ausführlicher mit Bezug auf 6 besprochen, kann der Monitor selbst prüfen, ob ein Monitor-Schreibereignis eingetreten und dies durch Einstellen eines Ereignis-anstehend-Anzeigers angezeigt wird. Der Ereignis-anstehend-Anzeiger kann über ein EVENT-Signal (zum Beispiel Microcode) an die Suspendierungs-/Neustart-Logik 377 geliefert werden. Der Microcode kann das Überwachungsereignis an einer entsprechenden Anweisungsgrenze in einer Ausführungsform (Block 540) erkennen, da dieses Ereignis bei Verarbeitungsblock 505 durch den MWAIT-Opcode aufgedeckt wurde. Ereigniserkennungslogik 345 kann andere Ereignisse, wie zum Interrupts, entdecken, die bei Verarbeitungsblock 545 als Break Events (Unterbrechnungsereignisse) bezeichnet sind. Zusätzlich kann gemäß einer Ausführungsform periodisch ein wahlweiser Zeitgeber zum Verlassen des Memory-Wait-Zustands benutzt werden, um sicherzustellen, daß der Prozessor nicht aufgrund einer bestimmten Ereignisfolge bei Verarbeitungsblock 550 einfriert. Wenn keins dieser Ereignisse ein Verlassen des Mwait-Zustands meldet, kann Thread 1 suspendiert bleiben.
  • Wenn Thread 1 neu gestartet wird, kann gemäß einer Ausführungsform die Thread-Suspendierungs-/Neustart-Logik 355 nach Entdeckung des entsprechenden Ereignisses wieder aktiviert werden. Die Pipeline kann wiederum bei Verarbeitungsblock 555 ausgespült werden, um Anweisungen aus der Pipeline zu löschen, damit Ressourcen wieder partitioniert werden können, um Platz für den bald-zu-weckenden Thread 1 zu machen. Bei Verarbeitungsblock 560 können die entsprechenden Ressourcen neu partitioniert werden und bei Verarbeitungsblock 565 kann Thread 1 neu gestartet werden.
  • 6 ist ein Flußdiagramm, welches eine Ausführungsform eines Prozesses zum Aktivieren und Betreiben einer Überwachungslogik darstellt. Bei Verarbeitungsblock 600 kann Front-End-Fetching (Front-End-Holen) für Thread 1 gestoppt werden, um weitere Thread-1-Vorgänge am Eintritt in die Maschine zu hindern. Bei Verarbeitungsblock 605 kann der zugehörige Adreß-Operand durch die Adressenübersetzungslogik 375 von einer linearen Adresse in eine physische Adresse umgewandelt werden. Bei Verarbeitungsblock 610 kann die Beobachtbarkeit von Schreibvorgängen auf die Überwachungsadresse erhöht werden, vielleicht um Caching-Agenten zu zwingen, Schreibvorgänge durchzuführen, die sich auf die in der Überwachungsadresse gespeicherte Information auswirken würden, die für den Monitor 310 selbst sichtbar ist. Bei Verarbeitungsblock 615 kann die zu überwachende physische Adresse früher oder später in dieser Folge gespeichert werden.
  • Als nächstes kann gemäß einer Ausführungsform bei Verarbeitungsblock 620 der Monitor aktiviert werden. Der Überwachungsbus kann Schreibvorgänge auf die physische Adresse, welche die im Monitoradreßregister 445 gespeicherte Überwachungsadresse sein kann, zyklisch überwachen. Weitere Details des Überwachungsvorgangs werden unten mit Bezug auf 7 beschrieben. Nach Aktivieren des Monitors kann gemäß einer Ausführungsform bei Verarbeitungsblock 625 ein Speichereingrenzungsvorgang ausgeführt werden. Die Speichereingrenzung kann dazu beitragen sicherzustellen, daß alle Speicher in der Maschine zu dem Zeitpunkt, zu dem der MONITOR-Opcode die Ausführung abschließt, verarbeitet sind. Wenn alle Speicher in der Maschine vor Ausführung des Monitors entleert werden, wird die Wahrscheinlichkeit reduziert, daß fälschlicherweise ein Memory-Wait-Zustand (mwait) eintritt. Der Speichereingrenzungsvorgang ist ein Vorbeugungsvorgang und kann sehr zeitaufwendig sein.
  • Die Speichereingrenzung kann wahlweise erfolgen, weil der Monitor-Mwait-Mechanismus gemäß einer Ausführungsform als mehrfacher Ausgangsmechanismus (Verlassen) ausgestaltet werden kann. Anders ausgedrückt können verschiedene Ereignisse, wie bestimmte Interrupts, Erkennungen, System-On-Board-Zeitgeber usw., ebenfalls das Verlassen eines Mwait-Zustands verursachen. Gemäß einer Ausführungsform kann der Thread geweckt werden, weil sich der Datenwert, der überwacht wird, geändert hat. Dementsprechend kann gemäß einer Ausführungsform eine doppelte Softwareprüfung auf Änderung des jeweiligen im Speicher gespeicherten Werts erfolgen. Gemäß einer Ausführungsform können bestimmte Ereignisse, wie Assertion NonMaskable Interrupt (NMI) (nicht maskierbares Interrupt) und System Management Interrupt (SMI), Maschinenprüfungs-Interrupts und Störungen als Break Events betrachtet werden, während dies für andere Ereignisse, wie zum Beispiel Power-Down-Ereignisse, nicht möglich ist. Gemäß einer Ausführungsform kann auch Aktivierung eines A20M-Stifts als Break Event betrachtet werden.
  • Bei Verarbeitungsblock 630 kann gemäß einer Ausführungsform der Monitor kontinuierlich prüfen, ob Buszyklen, die eintreten, einen Schreibvorgang auf die Überwachungsadresse anzeigen oder anzuzeigen scheinen. Wenn ein solcher Buszyklus entdeckt wird, kann bei Verarbeitungsblock 635 der Überwachungsereignis-anstehend-Anzeiger gesetzt werden. Nach Ausführung des MWAIT-Opcodes (Block 505, 5) kann dieser Ereignisanstehend-Anzeiger als Ereignis abgewickelt werden und Thread-Neustart in Blöcken 555565 in 5 verursachen. Des weiteren können Ereignisse, die Änderung von Adressenübersetzung verursachen, den Neustart von Thread 1 bewirken. Zum Beispiel können Ereignisse, die das Ausspülen eines Übersetzungs-Lookaside-Puffers verursachen, den Neustart von Thread 1 auslösen, da die Übersetzung aus einer linearen in eine physische Adresse, die zur Erzeugung einer Überwachungsadresse vorgenommen wurde, vielleicht nicht mehr gültig ist. Zum Beispiel können in einem mit x86 Intel-Architektur kompatiblen Prozessor Schreibvorgänge auf Steuerregister CR0, CR3 und CR4 sowie auf bestimmte maschinenspezifische Register das Verlassen des Mwait-Zustands bewirken.
  • 7 ist ein Flußdiagramm, welches eine Ausführungsform eines Verfahrens zum Handhaben von Überwachungsvorgängen veranschaulicht. Insbesondere veranschaulicht 7 weitere Betriebsdetails des Monitors 310 von 3 und des Verarbeitungsblocks 620 von 6. Gemäß einer Ausführungsform kann der Monitor 310 bei Verarbeitungsblock 700 Anforderungs- und Adreßinformation von einem Bus-Controller 340 für eine Bustransaktion empfangen. Bei Verarbeitungsblock 710 kann der Monitor 310 den Buszyklustyp und die betroffene(n) Adresse(n) prüfen. Insbesondere kann die Zyklusvergleichslogik 320 bestimmen, ob der Buszyklus ein vorgegebener Zyklus ist. Gemäß einer Ausführungsform kann eine Adressenvergleichsschaltung 330 die Bustransaktionsadresse mit der im Überwachungsadressenregister 445 gespeicherten Überwachungsadresse vergleichen, und die Schreibvorgangsentdeckungslogik 325 kann die Zyklustypinformation des Bus-Controllers 340 dekodieren, um festzustellen (zu entdecken), ob ein Schreibvorgang eingetreten ist. Wenn ein Schreibvorgang auf der Überwachungsadresse eintritt, kann bei Verarbeitungsblock 720 ein Überwachungsereignis-anstehend-Anzeiger gesetzt werden. Zum Melden des Ereignisses kann ein Signal (WRITE DETECTED) an die Thread-Suspendierungs-/Neustart-Logik 377 geschickt werden (und abgewickelt werden in der Annahme, daß es durch Ausführen von MEMORY-WAIT (MWAIT) aktiviert wurde). Schließlich kann der Monitor 310 bei Verarbeitungsblock 730 angehalten werden. Anhalten des Monitors kann Strom sparen, ist jedoch nicht kritisch, solange falsche Überwachungsereignisse maskiert oder ansonsten nicht erzeugt werden. Der Überwachungsereignis-Anzeiger kann an diesem Punkt auch zurückgesetzt werden. Typisch kann das Abwickeln des Überwachungsereignisses auch die Erkennung von weiteren Überwachungsereignissen maskieren, bis MWAIT wieder ausgeführt wird.
  • Im Falle eines Lesevorgangs auf der Überwachungsadresse kann gemäß einer Ausführungsform die Kohärenz-bezogene Logik 350 aktiviert werden. Bei Verarbeitungsblock 740 kann ein Signal (wie HIT#) aktiviert werden, um einen anderen Agenten am Erwerb der Inhaberschaft zu hindern, wodurch zukünftige Schreibvorgänge ohne Kohärenz-Broadcasts ermöglicht werden können. Gemäß einer Ausführungsform kann der Monitor 310 aktiv bleiben und zu Verarbeitungsblock 700 zurückkehren und von einem Lesevorgang auf der Überwachungsadresse unbeeinflußt bleiben. Des weiteren, wenn eine Transaktion auf der Überwachungsadresse weder ein Lese- noch ein Schreibvorgang ist, kann der Monitor aktiv bleiben und zu Verarbeitungsblock 700 zurückkehren.
  • Gemäß einer Ausführungsform kann sich die MONITOR-Anweisung auf bestimmte, zu überwachende Zugriffstypen beziehen. Diese Zugriffe können so gewählt werden, daß sie bezeichnend für effiziente Programmiertechniken sind, oder aus anderen Gründen. Zum Beispiel muß gemäß einer Ausführungsform der Speicherzugriff ein kopierbarer (cacheable) Speicher im Write-Back-Speicher sein, der natürlich ausgerichtet ist. Ein natürlich ausgerichtetes Element kann sich auf ein N-Bit-Element beziehen, das an einer durch N dividierbaren Adresse startet. Bei Einsatz natürlich ausgerichteter Elemente muß nur auf eine einzige Cache-Zeile (anstatt zwei Cache-Zeilen, wie es erforderlich ist, wenn Daten auf zwei Cache-Zeilen aufgeteilt werden) zugegriffen werden, um auf die Überwachungsadresse zu schreiben. Somit kann der Einsatz von natürlich ausgerichteten Überwachungsadressen die Busüberwachung vereinfachen.
  • 8 ist ein Flußdiagramm, das eine Ausführungsform eines Verfahrens zum Erwerb einer Sperre und zur Überwachung der Sperre mit Monitor-Memory-Wait darstellt. Ein typischer Hyperthreaded-Prozessor oder Multithreaded-Prozessor kann mehrere Threads oder mehrere logischen Prozessoren (Prozessoren) beinhalten. Mehrere Prozessoren sehen typisch wie separate physische Prozessoren aus und teilen sich die gleichen Ressourcen. Bei Verarbeitungsblock 802 versucht ein Prozessor, eine Sperre zu erwerben, um die sich auch andere Prozessoren streiten. Bei Entscheidungsblock 804 wird bestimmt, ob die Sperre, die der Prozessor erwerben möchte, noch von einem anderen Prozessor bestritten wird. Die umstrittene Sperre kann eine Sperre sein, auf deren Erwerb ein oder mehrere Prozessoren warten. Wenn nicht um die Sperre gestritten wird, kann der Prozessor die Sperre auf konventionelle Art und Weise erwerben, indem er die Inhaberschaft der verfügbaren Sperre bei Verarbeitungsblock 806 beansprucht.
  • Wenn eine Sperre von einem oder mehreren Prozessoren bestritten wird, bilden die auf die Sperre wartenden Prozessoren typisch eine Warteschlange. Ein derartiges Warten der Prozessoren wird jedoch typisch als „aktives Warten" (busy waiting) bezeichnet, weil die wartenden Prozessoren die ihnen zur Verfügung stehenden Ressourcen dazu verwenden, auf den Speicherort der umstrittenen Sperre zuzugreifen. Bei Verarbeitungsblock 808 kann gemäß einer Ausführungsform, falls die Sperre umstritten ist, ein Warteschlangenelement oder ein Knoten (Knoten), wie Knoten N, für den Prozessor erstellt werden. Gemäß einer Ausführungsform kann der Knoten dann bei Verarbeitungsblock 810 initialisiert werden. Gemäß einer anderen Ausführungsform ist die Initialisierung des Knotens eventuell nicht notwendig, weil der Knoten bereit initialisiert ist. Bei Verarbeitungsblock 812 kann der initialisierte Knoten mit der umstrittenen Sperre verknüpft oder dieser zugeordnet werden. Gemäß einer Ausführungsform kann dann nach der Zuordnung des Knotens als Schwanzanzeiger der umstrittenen Sperre dienen.
  • Gemäß einer Ausführungsform kann bei Verarbeitungsblock 814 ein Monitor auf dem Knoten eingerichtet werden, um den mit der umstrittenen Sperre verknüpften Knoten zur Überwachung der umstrittenen Sperre zu überwachen. Die Überwachung der umstrittenen Sperre kann die Überwachung der Sperrenadresse der Sperre beinhalten, um zu bestimmen, ob die Sperre dem ersten Prozessor {Monitor(N.lock)} zur Verfügung gestellt wurde. Gemäß einer Ausführungsform kann das Einrichten des Monitors das Aktivieren des Monitors in Antwort auf den Empfang eines MONITOR-Opcodes durch das Front-End 365 und die Erzeugung eines speziellen Monitor-uOPs durch das Front-End 365 beinhalten. Der Monitor-uOP kann an die Ausführungsressourcen 370 weitergereicht werden. Der Monitor-uOP kann eine zugeordnete Adresse aufweisen, die die zu überwachende Adresse (die Überwachungsadresse) bezeichnet. Gemäß einer Ausführungsform kann die Überwachungsadresse die Sperrenadresse der Sperre beinhalten, mit der der Knoten verknüpft sein kann. Die zugeordnete Adresse kann die Überwachungsadresse dadurch „angeben", daß sie genügend Information zur Bestimmung der Überwachungsadresse (möglicherweiser in Verbindung mit anderen Registern oder Informationen) vermittelt.
  • Wie in 3 dargestellt, kann die Überwachungsadresse gemäß einer Ausführungsform an die Adressenübersetzungslogik 375 geliefert und an den Monitor weitergegeben werden, wo sie in einem Überwachungsadressenregister 335 gespeichert werden kann. In Antwort auf den MONITOR-Opcode können die Ausführungsressourcen 370 dann den Monitor aktivieren und betreiben, wie bei Verarbeitungsblock 510 angegeben und in 6 im Detail dargestellt. Gemäß einer Ausführungsform kann der Monitor, nachdem er gemäß einer Ausführungsform durch den MONITOR-Opcode aktiviert wurde, weiterhin parallel zu anderen Vorgängen laufen, bis ein Überwachungsereignis eintritt.
  • Bei Verarbeitungsblock 816 kann gemäß einer Ausführungsform die Memory-Wait-(Mwait) Anweisung ausgeführt werden, um den Prozessor stillzulegen, während er auf das Verfügbarwerden der umstrittenen Sperre wartet. Gemäß einer Ausführungsform kann die Ausführung des MWAIT-Opcodes verschiedene Überwachungsereignisse aufdecken. In Antwort auf den MWAIT-Opcode kann eine Prüfung durchgeführ werden, um zu bestimmen, ob ein Überwachungsereignis ansteht. Wenn kein Überwachungsereignis ansteht, kann eine Prüfung durchgeführt werden, um zu bestimmen, ob der Monitor aktiv ist. Wenn zum Beispiel MWAIT ausgeführt wird, ohne zuvor einen MONITOR auszuführen, ist der Monitor vielleicht nicht aktiv. Gemäß einer Ausführungsform, wenn entweder der Monitor inaktiv ist oder wenn ein Überwachungsereignis ansteht, kann der Prozessor nicht stillgelegt werden. Gemäß einer Ausführungsform kann sich das Überwachungsereignis auf ein Ereignis beziehen, nach dessen Eintreten der Monitor inaktiv wird und so die Überwachung des Knotens beendet, und der Prozessor geweckt werden kann. Zum Beispiel kann ein Überwachungsereignis darin bestehen, daß der Prozessor an der Reihe ist, die Inhaberschaft der Sperre zu beanspruchen, und/oder die Sperre für den Prozessor verfügbar wird, wenn sie von einem anderen Prozessor, der die Sperre gerade besitzt, freigegeben wird.
  • Gemäß einer Ausführungsform kann der Prozessor durch Einsatz des Monitor-Mwait-Mechanismus auf dem Knoten bei Verarbeitungsblock 818 stillgelegt werden. Gemäß einer Ausführungsform kann der Prozessor, wenn der Monitor aktiv ist und es kein anstehendes Überwachungsereignis gibt, stillgelegt werden, bis das Überwachungsereignis eintritt. Anders ausgedrückt, kann der erste Prozessor schlafen, bis er zum Beispiel als der Prozessor erkannt wird, der nun an der Reihe ist, die Inhaberschaft der umstrittenen Sperre zu beanspruchen. Diese Erkennung kann als das Eintreten desjenigen Überwachungsereignisses bezeichnet werden, das den Monitor inaktiv werden läßt und den Prozessor bei Verarbeitungsblock 820 weckt.
  • Gemäß einer Ausführungsform ist ein Überwachungsereignis nicht auf ein einziges Ereignis beschränkt, und es können verschiedene Ereignisse geprüft werden, um zu bestimmen, ob die Überwachung beendet und der Prozessor geweckt werden soll. Wie mit Bezug auf 6 besprochen, kann der Monitor selbst prüfen, ob ein Überwachungsereignis eingetreten ist und dies durch Setzen eines Ereignis-anstehend-Anzeigers anzeigen. Der Ereignis-anstehend-Anzeiger kann über ein EVENT-Signal an die Prozessor-Schlaf-/Wecklogik 377 (zum Beispiel einen Microcode) geliefert werden. Der Microcode kann das Überwachungsereignis gemäß einer Ausführungsform an einer entsprechenden Anweisungsgrenze erkennen, da dieses Ereignis eventuell durch den MWAIT-Opcode aufgedeckt wurde. Des weiteren kann die Entdeckungslogik 345 dazu benutzt werden, verschiedene Ereignisse aufzudecken, die als Überwachungsereignisse bezeichnet werden. Des weiteren kann gemäß einer Ausführungsform periodisch ein wahlweiser Zeitgeber zum Verlassen des Mwait-Zustands benutzt werden, um sicherzustellen, daß der Hyperthreaded-Prozessor korrekt funktioniert, und um eine bestimmte Folge von Ereignissen zu prüfen, die das Einfrieren des Hyperthreaded-Prozessors verursachen können. Wenn keins dieser Ereignisse ein Verlassen des Mwait-Zustands meldet, kann der erste Prozessor weiter schlafen.
  • Bei Verarbeitungsblock 822 kann der erste jetzt wache Prozessor die Inhaberschaft der Sperre beanspruchen und auch irgendwelche früher aufgegebenen Ressourcen zurückfordern. Früher aufgegebene Ressourcen können sich auf die Ressourcen beziehen, die vom ersten Prozessor, während er schlief und auf die Sperre wartete, aufgegeben wurden. Gemäß einer Ausführungsform kann die Prozessor-Schlaf-/Wecklogik 377, während der Prozessor schläft, eine Pipeline-Flush-Logik 382 zum Entleeren der Prozessor-Pipeline enthalten, um alle Anweisungen bei Verarbeitungsblock 530 zu löschen. Nach Entleeren der Pipeline kann die Partitionierungs-/Verschmelzungslogik 385 verursachen, daß die ausschließlich mit dem ersten Prozessor verknüpften Ressourcen zum Einsatz durch andere Prozessoren aufgegeben werden. Diese aufgegebenen Ressourcen können zur Nutzung durch andere Prozessoren zu einem Satz größerer Ressourcen verschmolzen werden. Zum Beispiel könnten mit Bezug auf das Zwei-Thread-Beispiel von 4 alle auf Thread 1 bezogenen Anweisungen aus beiden Warteschlangen entfernt werden. Jedes Warteschlangenpaar kann dann kombiniert werden, um eine größere Warteschlange für den zweiten Thread bereitzustellen. Desgleichen könnten dem zweiten Thread mehr Register aus dem Register-Pool zur Verfügung gestellt werden, könnten mehr Einträge aus dem Speicherpuffer für den zweiten Thread freigemacht werden, und könnten mehr Einträge im Neuordnungspuffer dem zweiten Thread zur Verfügung gestellt werden. Im Kern werden diese Strukturen auf einzelne dedizierte Strukturen zurückgeführt, die zweimal so groß sind. Andere Verhältnisse, die sich aus Implementierungen bei Einsatz anderer Threadanzahlen ergeben, werden in Erwägung gezogen.
  • Gemäß einer Ausführungsform kann nach Aufwachen oder Neustarten des ersten Prozessors die Prozessor-Schlaf-/Wecklogik 377 nach Entdeckung des Überwachungsereignisses wieder aktiviert werden. Die Pipeline kann wiederum ausgespült werden, um Anweisungen aus der Pipeline zu entfernen, damit die früher aufgegebenen Ressourcen wieder partitioniert werden können, um Platz für den bald-zu-weckenden oder kürzlich-geweckten ersten Prozessor zu machen.
  • 9 ist ein Flußdiagramm, das eine Ausführungsform eines Verfahrens zur Freigabe einer Sperre und zur Überwachung der Sperre mit Monitor-Memory-Wait darstellt. Wie mit Bezug auf 8 beschrieben, kann gemäß einer Ausführungsform Monitor-Memory-Wait (Monitor-Mwait) dazu benutzt werden, eine umstrittene Sperre durch Überwachen des entsprechenden Warteschlangenelements oder Knotens (Knoten), wie Knoten N, zu überwachen, und den Prozessor, der die umstrittene Sperre erwerben möchte, stillzulegen, bis zum Beispiel die umstrittene Sperre verfügbar wird. Unter Einsatz von Monitor-Mwait hinsichtlich der Freigabe einer Sperre wird bei Entscheidungsblock 902 bestimmt, ob die Sperre umstritten ist. Wenn die Sperre nicht umstritten ist, kann die Sperre bei Verarbeitungsblock 904 freigegeben werden. Wenn die Sperre jedoch umstritten ist, tritt die Freigabe der Sperre möglicherweise erst dann ein, wenn zum Beispiel der Prozessor (der freigebende Prozessor), der die Sperre besitzt, diese in Antwort auf ein oder mehrere Ereignisse einschließlich eines oder mehrerer Überwachungsereignisse freigibt.
  • Gemäß einer Ausführungsform kann sich ein Überwachungsereignis auf den auf die Sperre wartenden Prozessor (den schlafenden Prozessor) beziehen, der an der Reihe ist, die Sperre zu beanspruchen. Zum Beispiel kann der freigebende Prozessor ein „store the N.next->Lock" (N.nächste->Sperre speichern) ausgeben, um den schlafenden Prozessor, der auf die umstrittene Sperre wartet, aus dem Schlafzustand zu wecken (sleep/mwait ((if N.next!=0) {Store to N.next->Lock //waking up the sleeping processor}), wie in der erworbenen Phase mit Bezug auf 8 beschrieben. Anders ausgedrückt, wird bei Entscheidungsblock 906 bestimmt, ob der Knoten Null (0) erreicht hat (oder im Kreislauf zu Null zurückgekehrt ist). Wenn der Knoten Null erreicht hat, d.h. N.next!=0, kann der freigebende Prozessor ein „store N.next->Lock" ausgeben, was besagt, daß der schlafende Prozessor an der Reihe ist, die Sperre zu besitzen, und somit bei Verarbeitungsblock 910 aus dem Schlaf geweckt wird. Wenn der Knoten nicht Null erreicht hat, kann die Sperre bei Verarbeitungsblock 908 nicht freigegeben werden. Bei Verarbeitungsblock 912 wird die Sperre von dem freigebenden Prozessor freigegeben. Gemäß einer Ausführungsform können irgendwelche nach dem MONITOR-Opcode eintretenden Speichervorgänge eingegrenzt werden, um sicherzustellen, daß die Speicher verarbeitet und entdeckt werden. Gemäß einer Ausführungsform müssen manche Vorgänge infolge der Aktivierung des Monitors eintreten, bevor irgendwelche späteren Anweisungen ausgeführt werden können, oder können parallel zu anderen Vorgängen eintreten, bis ein Überwachungsereignis nach Aktivierung durch den MONITOR-Opcode eintritt.
  • 10 ist ein Blockdiagramm, das eine Ausführungsform eines Systems darstellt. Gemäß einer Ausführungsform enthält das System, wie veranschaulicht, einen Satz von N Hyperthreaded-Prozessoren, Prozessoren 1005-1 bis 1005-N. Die Hyperthreaded-Prozessoren 1005-1 bis 1005-N sind mit einem Bus 1050 gekoppelt. Gemäß einer anderen Ausführungsform kann ein einzelner Prozessor oder eine Mischung von Hyperthreaded-Prozessoren und Einzel-Thread-Prozessoren verwendet werden. Des weiteren können andere bekannte oder anderweitig verfügbare Systemanordnungen benutzt werden. Zum Beispiel können die Prozessoren 1005-1 bis 1005-N in Punkt-zu-Punkt-Weise miteinander verbunden werden, und Teile wie die Speicherschnittstelle können in jeden Prozessor 1005-1 bis 1005-N integriert werden.
  • Gemäß einer Ausführungsform ist eine mit dem Bus 1050 gekoppelte Speicherschnittstelle 1015 mit einem Speicher 1030 und einer Medienschnittstelle 1020 gekoppelt. Der Speicher 1030 kann ein zur Vielfachverarbeitung bereites Betriebssystem 1035 und Anweisungen für einen ersten Thread 1040 sowie für einen zweiten Thread 1045 beinhalten. Die Anweisungen 1030 können gemäß einer Ausführungsform eine inaktive Schleife beinhalten.
  • Gemäß einer Ausführungsform kann die entsprechende Software zur Durchführung verschiedener Funktionen oder Ausführungsformen in einem aus einer Vielfalt von maschinenlesbaren Medien vorgesehen werden. Gemäß einer Ausführungsform kann die Medienschnittstelle 1020 eine Schnittstelle zu solcher Software vorsehen.
  • Gemäß einer Ausführungsform kann die Medienschnittstelle 1020 eine Schnittstelle zu einem Speichermedium (zum Beispiel einem Diskettenlaufwerk, einem optischen Laufwerk, einem Bandlaufwerk, einem flüchtigen Speicher, einem nichtflüchtigen Speicher oder dergleichen) oder zu einem Übertragungsmedium (zum Beispiel einer Netzwerkschnittstelle oder einer anderne digitalen oder analogen Kommunationsschnittstelle) sein. Die Medienschnittstelle 1020 kann Softwareroutinen aus einem Medium (zum Beispiel einem Speichermedium 1092 oder einem Übertragungsmedium 1095) lesen. Maschinenlesbare Medien sind Medien, die mindestens temporär Information zum Lesen einer Maschinenschnittstelle lesen können. Hierzu können Signalübertragungen (über Draht, Optiken oder Luft als Medium) und/oder physische Speichermedien 1092 wie verschiedene Disktypen und Speichergeräte (Memory Storage Devices) gehören.
  • 11 ist ein Blockdiagramm, das eine Ausführungsform verschiedener Design-Darstellungen oder Formate zur Simulation, Emulation und Fabrikation eines Designs veranschaulicht. Daten, die ein Design darstellen, können das Design in einer Anzahl von Weisen veranschaulichen. Erstens, wie es in Simulationen nützlich ist, kann die Hardware mittels einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache veranschaulicht werden, die im wesentlichen ein Computermodell der erwarteten Leistung der entworfenen Hardware bereitstellt. Das Hardwaremodell 1110 kann in einem Speichermedium 1100, wie einem Computerspeicher, gespeichert werden, damit das Modell mit Hilfe von Simulationssoftware 1120 simuliert werden kann, die für eine bestimmte Prüffolge 1130 für Hardwaremodell 1110 gelten kann, um zu bestimmen, ob sie ihre beabsichtigte Funktion ausführt. Gemäß einer Ausführungsform kann die Simulationssoftware 1120 weder aufgezeichnet noch erfaßt werden noch im Medium enthalten sein.
  • Gemäß einer Ausführungsform kann in einigen Stadien des Design-Prozesses ein Schaltungsebenenmodell mit logischen und/oder Kondensator-Gates erstellt werden. Ein solches Modell kann auf ähnliche Weise, manchmal durch dedizierte Hardwaresimulatoren, die das Modell bilden, mit Hilfe programmierbarer Logik simuliert werden. Diese An von Simulation kann, wenn man sie einen Schritt weiter führt, eine Emulationstechnik sein. Gemäß einer Ausführungsform kann rekonfigurierbare Hardware ein maschinenlesbares Medium enthalten, in dem ein Modell gespeichert ist, das die offenbarten Techniken verwendet.
  • Des weiteren können gemäß einer Ausführungsform die meisten Designs in irgendeinem Stadium ein Niveau erreichen, auf dem die Daten die physische Plazierung verschiedener Geräte im Hardwaremodell darstellen. In Fällen, in denen konventionelle Halbleiterherstellungstechniken verwendet werden, können die das Hardwaremodell darstellenden Daten die Daten sein, die die An- oder Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung dienen. Diese die integrierte Schaltung darstellenden Daten können die offenbarten Techniken dadurch aufweisen, daß die Schaltungen oder die Logik in den Daten zur Durchführung dieser Techniken simuliert oder gefertigt werden kann.
  • Gemäß einer Ausführungsform können die Daten in einer beliebigen Form eines computerlesbaren Mediums gespeichert werden. Eine optische oder elektrische Welle 1160, die moduliert ist oder ansonsten zur Übertragung dieser Information erzeugt wird, ein Speicher 1150 oder ein magnetischer oder optischer Speicher 1140, wie eine Disk, können das Medium darstellen. Der Satz von Bits, die das Design oder das betreffende Teil des Designs beschreiben, kann einen Artikel darstellen, der als Teil eines weiteren Designs oder eines Produkts verkauft oder als Einzelteil verkauft oder von anderen für das weitere Design oder die weitere Herstellung benutzt wird.
  • Obwohl bestimmte beispielhafte Ausführungsformen beschrieben und in den beiliegenden Zeichnungen veranschaulicht wurden, versteht es sich, daß diese Ausführungsformen lediglich illustrativ, aber nicht einschränkend sind, und daß die erfindungsgemäßen Ausführungsformen nicht auf spezifische dargestellte und beschriebene Konstruktionen und Anordnungen beschränkt sind, da der Fachmann nach Studieren der Offenbarung verschiedene andere Modifikationen erkennen wird.
  • Zusammenfassung
  • Ein Verfahren, eine Vorrichtung und ein System werden zum Überwachen von Sperren unter Einsatzes eines Monitor-Memory-Wait zur Verfügung gestellt. Gemäß einer Ausführungsform wird ein Knoten, der mit einer umstrittenen Sperre in Verbindung steht, überwacht; und ein Prozessor, der die umstrittene Sperre sucht, wird in einen Ruhemodus versetzt, bis ein Monitor-Ereignis eintritt.

Claims (30)

  1. Ein Verfahren, umfassend: Überwachen eines einer umstrittenen Sperre zugeordneten Knotens; und Versetzen eines Prozessors, der die umstrittene Sperre erwerben möchte, in einen Ruhemodus, bis ein Ereignis eintritt.
  2. Verfahren nach Anspruch 1, wobei das Überwachen des Knotens das Überwachen einer der umstrittenen Sperre entsprechenden Sperrenadresse durch Ausführen einer Überwachungsanweisung zur Aktivierung der Überwachung des Knotens umfaßt.
  3. Verfahren nach Anspruch 1, weiterhin umfassend das Ausführen einer Memory-Wait-Anweisung (Mwait), mit der der Prozessor bis zum Eintreten des Ereignisses in den Ruhemodus versetzt wird.
  4. Verfahren nach Anspruch 1, weiterhin umfassend: das Wecken des Prozessors, wenn das Ereignis eintritt, wobei das Ereignis das Verfügbarwerden der umstrittenen Sperre umfaßt; und das Erwerben der verfügbaren Sperre durch den Prozessor.
  5. Verfahren nach Anspruch 1, wobei das Verfügbarwerden der, umstrittenen Sperre umfaßt, daß der Prozessor an der Spitze der Warteschlange steht, um die umstrittene Sperre zu erwerben, und die umstrittene Sperre freigegeben wird.
  6. Verfahren nach Anspruch 1, wobei das Versetzen des Prozessors in den Ruhemodus das Aufgeben von Ressourcen durch den Prozessor zur Benutzung durch andere Prozessoren umfaßt.
  7. Verfahren nach Anspruch 4, wobei das Wecken das Deaktivieren der Überwachung des Knotens und die Benutzung der aufgegebenen Ressourcen durch den Prozessor umfaßt.
  8. Verfahren nach Anspruch 7, wobei das Aufgeben umfaßt: Aufgeben einer Mehrzahl von Registern in einem Register-Pool; Aufgeben einer Mehrzahl von Anweisungswarteschlangen-Einträgen in einer Anweisungswarteschlange; Aufgeben einer Mehrzahl von Speicherpuffer-Einträgen in einem Speicherpuffer; und Aufgeben einer Mehrzahl von Neuordnungspuffer-Einträgen in einem Neuordnungspuffer.
  9. Verfahren, umfassend Angeben einer einem Warteschlangenelement zugeordneten Überwachungsadresse zur Überwachung des Warteschlangenelements, wobei das Angeben die Ausführung einer Überwachungsanweisung und einer Memory-Wait-Anweisung (Mwait) umfaßt.
  10. Verfahren nach Anspruch 9, wobei das Warteschlangenelement einem Prozessor, der eine umstrittende Sperre erwerben möchte, entspricht.
  11. Verfahren nach Anspruch 10, wobei der Prozessor, während er auf die umstrittene Sperre wartet, unter Einsatz einer Kombination von Monitor/Mwait in den Ruhemodus versetzt wird.
  12. Verfahren nach Anspruch 11, wobei der Prozessor bei Eintreten eines Ereignisses geweckt wird, und das Ereignis umfaßt, daß der Prozessor in der Warteschlange an der Reihe ist, die umstrittene Sperre zu erwerben, und die umstrittene Sperre freigegeben wird.
  13. Prozessor, umfassend: eine Ausführungseinheit zur Ausführung einer Überwachungsanweisung und einer Memory-Wait- (Mwait) Anweisung, um einen einer umstrittenen Sperre zugeordneten Knoten zu überwachen; und eine Logik, mit der ein logischer Prozessor, der die umstrittene Sperre erwerben möchte, in den Ruhemodus versetzt wird, bis ein Ereignis eingetreten ist.
  14. Prozessor nach Anspruch 13, weiterhin umfassend eine Erkennungslogik zum Erkennen des Eintretens des Ereignisses, wobei das Ereignis ein designiertes Ereignis einschließlich des Verfügbarwerdens der umstrittenen Sperre umfaßt.
  15. Prozessor nach Anspruch 13, wobei das Versetzen des logischen Prozessors in den Ruhemodus das Aufgeben von Ressourcen durch den logischen Prozessor zur Benutzung durch andere logische Prozessoren umfaßt.
  16. Prozessor nach Anspruch 13, wobei die Logik weiterhin den logischen Prozessor bei Eintreten des Ereignisses zu wecken hat, wobei das Wecken die Deaktivierung der Überwachung des Knotens und die logische Verarbeitung mit Hilfe der aufgegebenen Ressourcen umfaßt.
  17. Prozessor nach Anspruch 16, wobei das Aufgeben umfaßt: Aufgeben einer Mehrzahl von Registern in einem Register-Pool; Aufgeben einer Mehrzahl von Anweisungswarteschlangen-Einträgen in einer Anweisungswarteschlange; Aufgeben einer Mehrzahl von Speicherpuffer-Einträgen in einem Speicherpuffer; und Aufgeben einer Mehrzahl von Neuordnungspuffer-Einträgen in einem Neuordnungspuffer.
  18. Ein System, umfassend: ein Speichermedium; und einen mit dem Speichermedium gekoppelten Prozessor, der eine Ausführungseinheit zur Ausführung einer Überwachungsanweisung und einer Memory-Mwait-(Mwait) Anweisung aufweist, um einen einer umstrittenen Sperre zugeordneten Knoten zu überwachen; und eine Logik zum Versetzen eines logischen Prozessors, der die umstrittene Sperre erwerben möchte, in den Ruhemodus bis ein Ereignis eingetreten ist.
  19. System nach Anspruch 18, weiterhin umfassend Erkennungslogik zum Erkennendes Eintretens eines Ereignisses, wobei das Ereignis ein designiertes Ereignis einschließlich des Verfügbarwerdens der umstrittenen Sperre umfaßt.
  20. System nach Anspruch 18, wobei das Versetzen des logischen Prozessors in den Ruhemodus das Aufgeben von Ressourcen durch den logischen Prozessor zur Benutzung durch andere logische Prozessoren umfaßt.
  21. System nach Anspruch 18, wobei die Logik weiterhin den logischen Prozessor bei Eintreten des Ereignisses zu wecken hat, das Wecken die Deaktivierung der Überwachung des Knotens und die logische Verarbeitung mit Hilfe der aufgegebenen Ressourcen umfaßt.
  22. Maschinenlesbares Medium, auf dem Daten-darstellende Folgen von Anweisungen gespeichert sind, wobei die Folgen von Anweisungen bei Ausführung durch eine Maschine bewirken, daß die Maschine: einen einer umstrittenen Sperre zugeordneten Knoten überwacht, und einen Prozessor, der die umstrittene Sperre erwerben möchte, bis zum Eintreten eines Ereignisses in den Ruhezustand versetzt.
  23. Maschinenlesbares Medium nach Anspruch 22, wobei das Überwachen des Knotens das Überwachen einer der umstrittenen Sperre entsprechenden Sperrenadresse durch Ausführen einer Überwachungsanweisung zur Aktivierung der Überwachung des Knotens umfaßt.
  24. Maschinenlesbares Medium nach Anspruch 22, wobei die Folgen von Anweisungen bei Ausführung durch die Maschine ferner bewirken, daß die Maschine eine Memory-Wait-(Mwait) Anweisung ausführt, um den Prozessor bis zum Eintreten des Ereignisses in den Ruhezustand zu versetzen.
  25. Maschinenlesbares Medium nach Anspruch 22, wobei die Folgen von Anweisungen bei Ausführung durch die Maschine ferner bewirken, daß die Maschine: den Prozessor bei Eintreten des Ereignisses weckt, wobei das Ereignis umfaßt: das Verfügbarwerden der umstrittenen Sperre; und das Ermöglichen des Erwerbens der verfügbaren Sperre durch den Prozessor.
  26. Verfahren nach Anspruch 22, wobei das Stillegen des Prozessors das Aufgeben von Ressourcen durch den Prozessor zur Benutzung durch andere Prozessoren umfaßt.
  27. Maschinenlesbares Medium, auf dem Daten-darstellende Folgen von Anweisungen gespeichert sind, wobei die Folgen von Anweisungen bei Ausführung durch eine Maschine bewirken, daß die Maschine eine einem Warteschlangenelement zugeordnete Überwachungsadresse zur Überwachung des Warteschlangenelements angibt, wobei das Angeben die Ausführung einer Überwachungsanweisung und einer Memory-Wait-(Mwait) Anweisung umfaßt.
  28. Maschinenlesbares Medium nach Anspruch 27, wobei das Warteschlangenelement einem Prozessor, der eine umstrittene Sperre erwerben möchte, entspricht.
  29. Maschinenlesbares Medium nach Anspruch 28, wobei die Folgen von Anweisungen bei Ausführung durch die Maschine ferner bewirken, daß die Maschine den Prozessor während des Wartens auf die umstrittene Sperre mit einer Kombination von Monitor/Mwait in den Ruhemodus versetzt.
  30. Maschinenlesbares Medium nach Anspruch 29, wobei die Folgen von Anweisungen bei Ausführung durch die Maschine ferner bewirken, daß die Maschine bei Eintreten eines Ereignisses den Prozessor weckt, und das Ereignis das Verfügbarwerden der umstrittenen Sperre umfaßt.
DE112004001133T 2003-06-27 2004-06-16 Warteschlangen-Sperren mit Monitor-Memory-Wait Ceased DE112004001133T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/608,708 US7213093B2 (en) 2003-06-27 2003-06-27 Queued locks using monitor-memory wait
US10/608,708 2003-06-27
PCT/US2004/019373 WO2005003971A2 (en) 2003-06-27 2004-06-16 Queued locks using monitor-memory wait

Publications (1)

Publication Number Publication Date
DE112004001133T5 true DE112004001133T5 (de) 2006-05-11

Family

ID=33540657

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001133T Ceased DE112004001133T5 (de) 2003-06-27 2004-06-16 Warteschlangen-Sperren mit Monitor-Memory-Wait

Country Status (9)

Country Link
US (3) US7213093B2 (de)
JP (2) JP2007520769A (de)
KR (1) KR100864747B1 (de)
CN (1) CN100337206C (de)
DE (1) DE112004001133T5 (de)
GB (1) GB2417805B (de)
HK (1) HK1081301A1 (de)
TW (1) TWI266987B (de)
WO (1) WO2005003971A2 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7236918B2 (en) * 2003-12-31 2007-06-26 International Business Machines Corporation Method and system for selective compilation of instrumentation entities into a simulation model of a digital design
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US20060031201A1 (en) * 2004-08-06 2006-02-09 Microsoft Corporation Life moment tagging and storage
US7590738B2 (en) * 2004-10-27 2009-09-15 Hewlett-Packard Development Company, L.P. Method and system for processing concurrent events in a provisional network
US20070004501A1 (en) * 2005-06-29 2007-01-04 Christopher Brewer Multi-core processing in a wagering game machine
US20070067502A1 (en) * 2005-09-22 2007-03-22 Silicon Integrated Systems Corp. Method for preventing long latency event
US7958510B2 (en) * 2005-12-30 2011-06-07 Intel Corporation Device, system and method of managing a resource request
US8094158B1 (en) * 2006-01-31 2012-01-10 Nvidia Corporation Using programmable constant buffers for multi-threaded processing
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7882381B2 (en) 2006-06-29 2011-02-01 Intel Corporation Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop
US8276151B2 (en) * 2006-09-06 2012-09-25 International Business Machines Corporation Determination of running status of logical processor
US7899663B2 (en) * 2007-03-30 2011-03-01 International Business Machines Corporation Providing memory consistency in an emulated processing environment
US8140823B2 (en) * 2007-12-03 2012-03-20 Qualcomm Incorporated Multithreaded processor with lock indicator
US8145849B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8086437B2 (en) * 2008-04-02 2011-12-27 Microsoft Corporation Modeling and simulating software contention
US20100262966A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Multiprocessor computing device
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8886919B2 (en) * 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
CN101876942A (zh) * 2009-04-30 2010-11-03 卓望数码技术(深圳)有限公司 一种终端软件的测试方法及装置
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8364862B2 (en) * 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
CN102483708B (zh) * 2010-07-07 2016-01-20 松下电器产业株式会社 处理器
US8516577B2 (en) * 2010-09-22 2013-08-20 Intel Corporation Regulating atomic memory operations to prevent denial of service attack
US20120144218A1 (en) * 2010-12-03 2012-06-07 International Business Machines Corporation Transferring Power and Speed from a Lock Requester to a Lock Holder on a System with Multiple Processors
KR101510028B1 (ko) * 2010-12-21 2015-04-08 인텔 코포레이션 전력 관리를 위한 시스템 및 방법
US8713262B2 (en) * 2011-09-02 2014-04-29 Nvidia Corporation Managing a spinlock indicative of exclusive access to a system resource
CN103136099B (zh) * 2011-12-02 2017-08-25 腾讯科技(深圳)有限公司 测试软件的方法、模拟终端、后台服务器和系统
US20150143071A1 (en) * 2011-12-30 2015-05-21 Ravi L. Sahita Memory event notification
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources
US8943505B2 (en) 2012-08-24 2015-01-27 National Instruments Corporation Hardware assisted real-time scheduler using memory monitoring
US20140075163A1 (en) 2012-09-07 2014-03-13 Paul N. Loewenstein Load-monitor mwait
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
US9558132B2 (en) * 2013-08-14 2017-01-31 Intel Corporation Socket management with reduced latency packet processing
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
JP6227151B2 (ja) * 2014-10-03 2017-11-08 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
US9760511B2 (en) * 2014-10-08 2017-09-12 International Business Machines Corporation Efficient interruption routing for a multithreaded processor
US9342384B1 (en) 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10185564B2 (en) 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
US10481936B2 (en) 2017-02-22 2019-11-19 Red Hat Israel, Ltd. Efficient virtual machine memory monitoring with hyper-threading
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US20220394023A1 (en) * 2021-06-04 2022-12-08 Winkk, Inc Encryption for one-way data stream
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
JPH01300365A (ja) * 1988-05-30 1989-12-04 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムの排他制御方式
US4965718A (en) 1988-09-29 1990-10-23 International Business Machines Corporation Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
CN1147785C (zh) 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
JPH10149285A (ja) * 1996-11-18 1998-06-02 Hitachi Ltd 命令実行制御方法および情報処理装置
US6512591B1 (en) * 1997-02-19 2003-01-28 Hewlett-Packard Company Multiple peripheral support for a single physical port in a host-based printing system
US6463527B1 (en) 1997-03-21 2002-10-08 Uzi Y. Vishkin Spawn-join instruction set architecture for providing explicit multithreading
US5790851A (en) 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
GB2345555A (en) * 1999-01-05 2000-07-12 Ibm Controlling device access in a network
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
US6522649B1 (en) * 2000-04-07 2003-02-18 Omneon Video Networks Method of distributing video reference signals as isochronous network packets
JP4253796B2 (ja) * 2001-11-08 2009-04-15 富士通株式会社 コンピュータ及び制御方法
US20030126379A1 (en) 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
US20030126416A1 (en) 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7127561B2 (en) 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US7257679B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores

Also Published As

Publication number Publication date
GB2417805B (en) 2007-11-21
CN1577282A (zh) 2005-02-09
US20070162774A1 (en) 2007-07-12
WO2005003971A2 (en) 2005-01-13
WO2005003971A3 (en) 2005-07-14
JP2010044770A (ja) 2010-02-25
GB0519863D0 (en) 2005-11-09
KR100864747B1 (ko) 2008-10-22
US7640384B2 (en) 2009-12-29
US7213093B2 (en) 2007-05-01
JP2007520769A (ja) 2007-07-26
US20040267996A1 (en) 2004-12-30
TWI266987B (en) 2006-11-21
GB2417805A (en) 2006-03-08
US20080022141A1 (en) 2008-01-24
HK1081301A1 (en) 2006-05-12
TW200525348A (en) 2005-08-01
CN100337206C (zh) 2007-09-12
US7328293B2 (en) 2008-02-05
KR20060029151A (ko) 2006-04-04

Similar Documents

Publication Publication Date Title
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE10297596B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE112010003330B4 (de) Einrichten von Prüfpunkten bei Cachespeichern für die spekulative Versionierung
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE112005002305B4 (de) Thread-Livelock-Einheit
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
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
DE102010052680A1 (de) Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112011100715T5 (de) Hardware-hilfs-thread
DE10393727T5 (de) Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE10297597T5 (de) Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112011100744T5 (de) Datenverarbeitungsvorrichtung und -Verfahren zum Schalten einer Arbeitslast zwischen ersten und zweiten Verarbeitungsschaltkreisen

Legal Events

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

Ref document number: 112004001133

Country of ref document: DE

Date of ref document: 20060511

Kind code of ref document: P

8131 Rejection