DE10297166T5 - Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen - Google Patents
Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen Download PDFInfo
- Publication number
- DE10297166T5 DE10297166T5 DE10297166T DE10297166T DE10297166T5 DE 10297166 T5 DE10297166 T5 DE 10297166T5 DE 10297166 T DE10297166 T DE 10297166T DE 10297166 T DE10297166 T DE 10297166T DE 10297166 T5 DE10297166 T5 DE 10297166T5
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- processor
- register
- value
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Abstract
Prozessor, welcher umfaßt:
eine erste Interrupt-Einheit zum Lenken eines ersten logischen Prozessors zu einem Interrupt-Handler als Reaktion auf einen Interrupt;
eine zweite Interrupt-Einheit zum Lenken eines zweiten logischen Prozessors zu dem Interrupt-Handler als Reaktion auf den Interrupt; und
ein Interrupt-Anspruch-Register zum Speichern eines Werts, der angibt, ob der erste oder der zweite logische Prozessor den Interrupt abwickeln soll.
eine erste Interrupt-Einheit zum Lenken eines ersten logischen Prozessors zu einem Interrupt-Handler als Reaktion auf einen Interrupt;
eine zweite Interrupt-Einheit zum Lenken eines zweiten logischen Prozessors zu dem Interrupt-Handler als Reaktion auf den Interrupt; und
ein Interrupt-Anspruch-Register zum Speichern eines Werts, der angibt, ob der erste oder der zweite logische Prozessor den Interrupt abwickeln soll.
Description
- Hintergrund der Erfindung
- Technisches Gebiet
- Die vorliegende Erfindung betrifft Computersysteme und insbesondere Mechanismen zur Abwicklung von Interrupts in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen.
- Allgemeiner Stand der Technik
- Moderne Hochleistungsprozessoren sind dafür ausgelegt, in jedem Taktzyklus mehrere Anweisungen auszuführen. Zu diesem Zweck enthalten sie in der Regel umfangreiche Ausführungsbetriebsmittel zur Ermöglichung einer parallelen Verarbeitung der Anweisungen. Die effiziente Benutzung dieser Betriebsmittel kann durch die Verfügbarkeit von parallel ausführbaren Anweisungen begrenzt werden. Die Verfügbarkeit von Anweisungen für parallele Ausführung wird als Anweisungsebenenparallelität (ILP) bezeichnet. Anweisungsabhängigkeiten begrenzen die in einem einzelnen Ausführungsthread verfügbare ILP. Wenn nur ein Ausführungsthread auf einmal verarbeitet werden kann, wird auch der Anweisungsdurchsatz reduziert.
- Ein Ansatz zur Erhöhung des Anweisungsdurchsatzes besteht darin, Prozessoren zu entwerfen, die Anweisungen von zwei oder mehr Anweisungsthreads gleichzeitig ausführen können. Da Anweisungen von verschiedenen Threads unabhängig sind, vergrößert die gleichzeitige Ausführung von zwei oder mehr Anweisungsthreads den Anweisungsdurchsatz.
- Es wurden vielfältige Entwürfe implementiert, um die gleichzeitige Ausführung mehrerer Threads in einem einzigen Prozessorbaustein zu unterstützen. Zum Beispiel enthalten Mehrkernprozessoren mehrere Ausführungskerne auf einem einzigen Prozessorchip. Jeder Ausführungskern kann einem verschiedenen Anweisungsthread zugeteilt werden, obwohl verschiedene Betriebsmittel gemeinsam benutzt werden können, um Chipfläche zu sparen oder eine gewisse Kommunikation zwischen den ausgeführten Threads zu ermöglichen. Es können auch mehrere Prozessorchips in ein Multichipmodul integriert werden, das eine einzige Schnittstelle zu dem Rest des Systems bereitstellt.
- Mehrthreadprozessoren enthalten Betriebsmittel zur Verwaltung der Ausführung mehrerer Anweisungsthreads auf einem einzigen Ausführungskern. Thread-Managementeinheiten ermöglichen Onchip-Speicherung von Zustandsdaten für mehrere Threads und aktualisieren die Daten, während Anweisungen von verschiedenen Threads durch den gemeinsam benutzten Kern verarbeitet werden.
- Ein grobkörniger Mehrthreadprozessor führt Anweisungen von nur einem Thread auf einmal aus, aber die Onchipspeicherung von Zustandsdaten für mehrere Threads verringert den Overhead, der dem Wechseln der Anweisungsausführung zwischen den verschiedenen Threads (Kontextwechseln) zugeordnet ist. Threadwechsel können ausgelöst werden, wenn der zur Zeit ausgeführte Thread auf ein Ereignis mit langer Latenz stößt (Switch-On-Event Multi-Threading oder SOEMT).
- Ein feinkörniger Mehrthreadprozessor ermöglicht die gleichzeitige Ausführung von Anweisungen von den mehreren Threads. Zum Beispiel können Anweisungen bei jedem Taktzyklus von mehreren Threads oder von verschiedenen Threads bei verschiedenen Taktzyklen ausgegeben werden. In beiden Fällen können Anweisungen von mehreren Threads in dem Ausführungskern zur selben Zeit gerade bearbeitet werden.
- Im allgemeinen ermöglichen sowohl Mehrthreadprozessoren als auch Mehrkernprozessoren, daß der Kontext von mehr als einem Thread gleichzeitig in dem Pro zessor aktiv ist. Bei Mehrkernprozessoren können ein Teil der Kerne oder alle mehrere Threads aufweisen. Kontext bedeutet hierbei die Register, die den Architekturzustand eines Threads für eine bestimmte Prozessorarchitektur speichern, und dazu können allgemeine, Steuer- und Anwendungsregister gehören. Die Leistungsvorteile dieser und anderer Prozessoren, die mehrere Threadkontexte unterstützen („Mehrfachkontextprozessoren"), hängen teilweise von der Fähigkeit dieser Prozessoren ab, als mehrere, äquivalente logische Prozessoren zu erscheinen. Diese Äquivalenz erleichtert sehr den Ausgleich von Arbeitslasten zwischen den logischen Prozessoren und vereinfacht die Verwaltung der Threads durch das Betriebssystem. Das Ziel besteht effektiv darin, daß ein Mehrfachkontextprozessor als ein symmetrisches Mehrprozessorsystem (SMP) erscheint.
- Um die Symmetrie zwischen den mehreren Threads zu vergrößern, werden bestimmte Betriebsmittel für jeden logischen Prozessor des Mehrfachkontextprozessors dupliziert. Zum Beispiel ist in der Regel jedem logischen Prozessor eine Interrupt-Einheit zugeordnet, um eine Schnittstelle zwischen dem logischen Prozessor und Betriebsmitteln auf Systemebene oder gemeinsam benutzten Betriebsmitteln des Mehrfachkontextprozessors bereitzustellen. Die Interrupt-Einheit bestimmt, ob ein Interrupt abgewickelt werden soll, und liefert einen Zeiger auf den Interrupt-Abwicklungscode, wenn der Interrupt angenommen wird.
- Ein Nachteil der Bereitstellung einer Interrupt-Einheit für jeden logischen Prozessor besteht darin, daß Interrupts, insbesondere diejenigen, die gemeinsam von den logischen Prozessoren benutzten Betriebsmitteln zugeordnet sind, häufig von allen logischen Prozessoren gesehen werden. Zum Beispiel kann ein Mehrfachkontextprozessor einen einzigen Interrupt-Anschluß bereitstellen, um Kompatibilität mit Einthreadentwürfen auf Bausteinebene aufrechtzuerhalten. Auf dem Anschluß gesetzte Interrupts werden von den Interrupt-Einheiten aller logischen Prozessoren gesehen. Ein Lüfterausfall in dem System kann einen solchen Interrupt auslösen. Aufgrund ihrer Äquivalenz registriert jede Interrupt-Einheit den Interrupt und ihr zugeordneter logischer Prozessor führt den Interrupt-Handler aus. Interrupts, die durch gemeinsam benutzte Onchipbetriebsmittel erzeugt oder auf System- oder eigenen Interrupt-Bussen empfangen werden, können auf ähnliche Weise gesehen und verarbeitet werden. In vielen Fällen hätte der Interrupt durch einen der logi schen Prozessoren abgewickelt werden können, aber die symmetrische Konfiguration der logischen Prozessoren verpflichtet jeden, den Interrupt-Code auszuführen.
- Die vorliegende Erfindung behandelt diese und andere Probleme, die mit der Interrupt-Abwicklung in Prozessoren, die gleichzeitige Ausführung mehrerer Threads unterstützen, verbunden sind.
- Kurze Beschreibung der Zeichnungen
- Die vorliegende Erfindung wird durch Bezugnahme auf die folgenden Zeichnungen, in denen gleiche Elemente durch gleiche Zahlen bezeichnet werden, verständlich. Diese Zeichnungen werden bereitgestellt, um gewählte Ausführungsformen der vorliegenden Erfindung zu veranschaulichen, und sollen den Schutzumfang der Erfindung nicht einschränken.
-
1 ist ein Blockschaltbild eines Computersystems, in dem die vorliegende Erfindung implementiert werden kann. -
2 ist ein Blockschaltbild eines Mehrkernprozessors gemäß der vorliegenden Erfindung. -
3 ist ein Blockschaltbild eines Mehrthreadprozessors gemäß der vorliegenden Erfindung. -
4 ist. ein Flußdiagramm einer Ausführungsform eines Verfahrens zur Abwicklung von Interrupts gemäß der vorliegenden Erfindung. -
5 ist ein Flußdiagramm einer weiteren Ausführungsform eines Verfahrens zur Abwicklung von Interrupts gemäß der vorliegenden Erfindung. - Ausführliche Beschreibung der Erfindung
- Im folgenden werden zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der Erfindung bereitzustellen. Für Durchschnittsfachleute ist jedoch anhand der vorliegenden Offenlegung erkennbar, daß die Erfindung ohne diese spezifischen Einzelheiten ausgeübt werden kann. Zusätzlich wurden verschiedene wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht ausführlich beschrieben, um die Aufmerksamkeit auf die Merkmale der vorliegenden Erfindung zu konzentrieren.
-
1 ist ein Blockschaltbild einer Ausführungsform eines Computersystems100 , in dem die vorliegende Erfindung implementiert werden kann. Das Computersystem100 enthält einen Mehrfachkontextprozessor110 zur Ausführung von in einem Speicher160 gespeicherten Anweisungen. Zwischen dem Prozessor110 und dem Speicher160 werden durch einen Kanal180 Daten und Anweisungen gekoppelt. Der Kanal180 kann einen oder mehrere Busse enthalten, die durch einen Chipsatz oder eine Systemlogik gesteuert werden (nicht gezeigt). - Für das System
100 speichert der Speicher160 einen Interrupt-Handler170 , der durch Betriebsmittel auf dem Mehrfachkontextprozessor110 als Reaktion auf einen Interrupt ausgeführt wird. Der Speicher160 kann flüchtige Speicherstrukturen darstellen, wie zum Beispiel Cache- und Hauptspeicher, sowie nichtflüchtige Speicherstrukturen, wie zum Beispiel Flash-Speicher, Festplatten- und Soft-Laufwerke und dergleichen. Bei einer Ausführungsform der Erfindung kann ein Teil des Interrupt-Handlers170 in Firmware implementiert werden, während andere Teile in einem Hauptspeicher gespeichert werden können. - Die Logik des Mehrfachkontextprozessors
110 wird als logische Prozessoren120(1)–120(n) (generisch logischer Prozessor120 ) repräsentiert, einschließlich ihrer jeweiligen zugeordneten Interrupt-Einheiten130(1)–130(n) (generisch Interrupt-Einheit130 ) und gemeinsam benutzter Betriebsmittel140 . Zum Beispiel kann jeder logische Prozessor120 Betriebsmittel darstellen, die einem bestimmten Thread zugeteilt werden, und die gemeinsam benutzten Betriebsmittel140 können diejenigen Betriebsmittel des Prozessors110 darstellen, die Threads auf allen logischen Prozessoren120 verfügbar sind. - Bei der gezeigten Ausführungsform des Systems
100 enthalten die gemeinsam benutzten Betriebsmittel140 ein Interrupt-Anspruch-Register (interrupt claim regi ster/ICR)150 , das jedem logischen Prozessor120 zugänglich ist. Wie später ausführlicher beschrieben wird, liefert das ICR150 einen Mechanismus, durch den ein logischer Prozessor120 den übrigen logischen Prozessoren signalisiert, daß er einen Interrupt abwickeln wird. Die gemeinsam benutzten Betriebsmittel140 können außerdem einen Cache-Speicher auf höherer Ebene oder Buslogik enthalten, womit mit dem Speicher160 oder Peripheriegeräten (nicht gezeigt) kommuniziert wird. - Die Interrupt-Einheit
130 stellt einen dem logischen Prozessor120 zur Verarbeitung von Interrupts zugeordneten Funktionsblock dar. Bestimmte Interrupts können von jedem der logischen Prozessoren120 abgewickelt werden. Zum Beispiel können in der Regel bestimmte Interrupts, die aus den gemeinsam benutzten Betriebsmitteln140 auf dem Prozessor und System stammen, oder Interrupts auf Plattformebene, die durch Betriebsmittel außerhalb des Prozessorbausteins erzeugt werden, durch einen beliebigen logischen Prozessor120 abgewickelt werden. Sie können durch einen externen Anschluß104 an dem Prozessorbaustein, einen Bus oder durch interne Schaltkreise des Prozessors110 übermittelt werden. In der folgenden Erörterung werden Interrupts wie diese als gewöhnliche Interrupts bezeichnet, um sie von Interrupts, die auf einen spezifischen logischen Prozessor abgezielt sind, zu unterscheiden. - Die Interrupt-Einheiten
130(1)–130(n) registrieren gewöhnliche Interrupts jeweils für die logischen Prozessoren120(1)–120(n) . Zum Beispiel bewertet jede Interrupt-Einheit130 die einem Interrupt zugewiesene Priorität zusammen mit etwaigen Maskenbedingungen, um zu bestimmen, ob es der Interrupt verdient, sofort abgewickelt zu werden, z.B. ob das Ereignis, das den Interrupt ausgelöst hat, gegenüber dem zur Zeit ausgeführten Thread Priorität haben sollte. Wenn die Interrupt-Einheit130 bestimmt, daß der Interrupt Priorität hat, lenkt sie ihren zugeordneten logischen Prozessor120 zu einer entsprechenden Interrupt-Abwicklungsroutine. Die vorliegende Erfindung liefert einen Mechanismus, der es einem logischen Prozessor120 gestattet, die volle Interrupt-Abwicklungsroutine für einen Interrupt, der durch alle logischen Prozessoren120 registriert wird, auszuführen. Dabei erlegt er den logischen Prozessoren120 keine Asymmetrien auf, wie zum Beispiel das willkürliche Zuweisen von Interrupts zu logischen Prozessoren120 . - Bei einer Ausführungsform des Systems
100 registrieren die Interrupt-Einheiten130(1)–130(n) einen gewöhnlichen Interrupt für die logischen Prozessoren120(1)–120(n) . Wenn der Interrupt Priorität hat, lenken die Interrupt-Einheiten130(1)–130(n) die logischen Prozessoren120(1)–120(n) jeweils zu dem Interrupt-Handler170 . Jeder der logischen Prozessoren120(1)–120(n) führt ein erstes Codesegment des Interrupt-Handlers170 aus, das ihn anweist, auf das ICR150 zuzugreifen. Der erste der logischen Prozessoren120 , der erfolgreich auf das ICR150 zugreift, schließt die Verarbeitung des Interrupts ab und die übrigen logischen Prozessoren120 nehmen die Ausführung ihrer Threads wieder auf. - Bei einer Ausführungsform der Erfindung wird das ICR
150 auf einen ersten Wert initialisiert und nach einem gewöhnlichen Interrupt auf den ersten Wert zurückgesetzt. Das Anfangs-Codesegment des Interrupt-Handlers160 weist jeden logischen Prozessor120 an, den gerade in dem ICR150 befindlichen Wert zu lesen und einen zweiten Wert in das ICR150 zu schreiben. Vorausgesetzt, daß der zweite Wert von dem ersten Wert verschieden ist, sieht der erste logische Prozessor120 , der das ICR150 liest, den ersten Wert. Alle anderen logischen Prozessoren120 sehen den zweiten Wert. Der logische Prozessor, der den ersten Wert liest, setzt die Ausführung des Interrupt-Handlers fort. Die übrigen logischen Prozessoren lesen den zweiten Wert, der ihnen signalisiert, aus dem Interrupt zurückzukehren, z.B. um die Ausführung ihrer unterbrochenen Threads wiederaufzunehmen. - Die logischen Prozessoren
120 reagieren auf einen gewöhnlichen Interrupt nicht unbedingt synchron miteinander. Die Art von Thread, der ausgeführt wird, wenn der Interrupt auftritt, seine Priorität oder sogar die Art der gerade bearbeiteten Anweisungen können bestimmen, wie schnell der logische Prozessor120 auf das ICR150 zugreift. Abhängig von der Ausführungsform kann der Interrupt-Handler170 nur durch einen Prozessor auf einmal ausführbar sein, und in diesem Fall ist der erste logische Prozessor, der den Interrupt-Handler170 ausführt, der erste, der auf das ICR150 zugreift. - Verschiedene Ausführungsformen des Mehrfachkontextprozessors
110 implementieren die logischen Prozessoren120 auf verschiedene Weise. Bei einer Mehr kernausführungsform des Mehrfachkontextprozessors110 entspricht jeder logische Prozessor120 einem Ausführungskern. Eine Mehrkernausführungsform des Mehrfachkontextprozessors110 wird in Verbindung mit2 besprochen. Bei einer Mehrfachthreadausführungsform des Mehrfachkontextprozessors110 entspricht jeder logische Prozessor120 den Betriebsmitteln eines einzigen Ausführungskerns, die einem bestimmten Thread zugeteilt werden. Eine Mehrfachthreadausführungsform des Mehrfachkontextprozessors110 wird in Verbindung mit3 besprochen. Andere Ausführungsformen des Mehrfachkontextprozessors110 können zum Beispiel mehrere Kerne enthalten, von denen alle oder einige mehrere Threads aufweisen. Die vorliegende Erfindung hängt nicht von der genauen Art und Weise der Implementierung der logischen Prozessoren in dem Prozessor ab. -
2 ist ein Blockschaltbild einer Mehrkernausführungsform210 eines Mehrfachkontextprozessors110 . Der Mehrkernprozessor210 stellt die Ausführungskerne220(1)–220(n) und ihre jeweiligen Interrupt-Einheiten230(1)–230(n ) bereit, um die gleichzeitige Ausführung von bis zu n Threads zu unterstützen. Außerdem sind gemeinsam benutzte Betriebsmittel240 gezeigt, zu denen ein Interrupt-Anspruch-Register (ICR)250 gehört. Bei der offengelegten Ausführungsform des Mehrkernprozessors210 greifen die Ausführungskerne220(1)–220(n) durch einen Bus254 auf das ICR250 zu. - Als Reaktion auf einen gewöhnlichen Interrupt bestimmt jede Interrupt-Einheit
230 , ob der Interrupt Priorität hat, und wenn dies der Fall ist, lenkt sie ihren entsprechenden Ausführungskern220 zu einem Interrupt-Handler. Unter der Kontrolle eines ersten Teils des Interrupt-Handlers konkurrieren die Ausführungskerne 220 um den Zugriff auf das ICR250 . Der erste, der auf das ICR250 zugreift, schließt den Interrupt-Handler ab. Die übrigen Ausführungskerne nehmen ihre unterbrochenen Threads wieder auf. Bei einer anderen Ausführungsform des Mehrkernprozessors210 können einer oder mehrere der Ausführungskerne220(1)–220(n) ebenfalls mehrere Threads aufweisen, und in diesem Fall versucht jeder Thread auf jedem Kern, zuerst auf das ICR250 zuzugreifen. - Bei einer Ausführungsform der Erfindung bewirkt das erste Codesegment, daß jeder logische Prozessor
220 das ICR250 liest. Wenn der logische Prozessor220 einen ersten Wert in dem ICR250 liest, fährt er fort, den Rest des Interrupt-Handlers auszuführen. Wenn der logische Prozessor220 einen zweiten Wert in dem ICR250 liest, kann er die Ausführung der Anweisungen des Threads, den er vor dem Interrupt ausgeführt hat, wiederaufnehmen. Um sicherzustellen, daß nur ein logischer Prozessor220 den ersten Wert liest, kann das anfängliche Codesegment eine atomische Lese-Modifizier-Schreib-Operation, wie zum Beispiel eine Operation des Typs „Test-and-Set" verwenden. Wenn zum Beispiel der erste Wert in dem ICR250 Null ist, kann der Interrupt-Handler170 den Wert in dem ICR250 lesen und atomisch eine Eins in das ICR250 schreiben. Das heißt, die Lese-Modifizier-Schreiboperationen werden ausgeführt, ohne das ICR250 einem anderen logischen Prozessor zu überlassen. Bei dieser Ausführungsform liest nur der erste logische Prozessor, der das ICR250 erreicht, den Nullwert. Alle anderen logischen Prozessoren lesen die durch den ersten logischen Prozessor, der auf das ICR250 zugegriffen hat, in das ICR250 geschriebene Eins. - Die obenbeschriebene Ausführungsform ist ein Beispiel für einen Mechanismus des Typs „Race-to-Flag" zur Bestimmung, welcher logische Prozessor einen gewöhnlichen Interrupt abwickeln wird. Das Flag kann in einem Register, einer Verriegelungsvariablen oder in einem ähnlich gespeicherten Bit oder Bits enthalten sein, worauf durch jeden logischen Prozessor zugegriffen werden kann. Die für ein solches Flag geltenden Lese-/Schreibregeln ermöglichen es jedem logischen Prozessor, der unabhängig handelt, zu bestimmen, ob er für das Abwickeln des gewöhnlichen Interrupt verantwortlich ist oder nicht.
-
3 ist ein Blockschaltbild einer Mehrthreadausführungsform310 des Mehrfachkontextprozessors110 . Der Mehrthreadprozessor310 enthält einen Ausführungskern304 , der die gleichzeitige Verarbeitung von Anweisungen von bis zu n verschiedenen Threads ermöglicht. Der Ausführungskern304 wird als eine Pipeline dargestellt, in der verschiedene Stufen entweder einem der n Threads (Blöcke324(1)–324(n) ,326(1)–326(n) ,328(1)–328(n) ,330(1)–330(n) ) zugeteilt oder gemeinsam von den n Threads (Blöcke340(a)–340(c) und ICR350 ) benutzt werden. Zum Beispiel können die Blöcke340(a) ,340(b) und340(c) einen gemeinsam benutzten Anweisungs-Cache-Speicher, eine gemeinsam benutzte Register-Umbenennungseinheit und einen gemeinsam benutzten Daten-Cache-Speicher re präsentieren. Die Blöcke324(1)–324(n) , die Blöcke326(1)–326(n) , die Blöcke328(1)–328(n) und die Blöcke330(1)–330(n) können Teile einer Abrufeinheit, einer Decodiereinheit, einer Ausführungseinheit bzw. einer Interrupt-Einheit darstellen, die den Threads 1-n zugeteilt werden. Die einem gegebenen logischen Prozessor zugeteilten Betriebsmittel sind nur zur Vereinfachung von3 in vertikaler Ausrichtung gezeigt. Es ist nicht beabsichtigt, eine bestimmte Anordnung der einem Thread zugeteilten Betriebsmittel anzugeben. - Bei der dargelegten Ausführungsform des Prozessors
310 wird der logische Prozessor320(1) durch zugeteilte Betriebsmittel324(1) ,326(1) ,328(1) und330(1) dargestellt, und der logische Prozessor320(n) durch zugeteilte Betriebsmittel324(n) ,326(n) ,328(n) und330(n) . Dies geschieht lediglich zur Veranschaulichung. Andere Darstellungen können Teile der gemeinsam benutzten Betriebsmittel340(a)–340(c) enthalten, die gerade von dem entsprechenden Thread benutzt werden. - Die Interrupt-Einheiten
330 müssen wie andere zugeteilte Betriebsmittel in dem Prozessor310 nicht physisch verschiedene Einheiten sein. Zum Beispiel können sie Teile einer einzigen Interrupt-Einheit darstellen, die einzelnen, auf dem Prozessor310 ausgeführten Threads zugeteilt wird. Als Reaktion auf einen gewöhnlichen Interrupt registrieren die Interrupt-Einheiten330(1)–330(n) den Interrupt, und bestimmen, ob er verarbeitet werden soll. Wenn der Interrupt Priorität hat, weisen die Interrupt-Einheiten330(1)–330(n) die logischen Prozessoren320(1)–320(n) an, eine Interrupt-Abwicklungsroutine, z.B. den Interrupt-Handler170 , auszuführen. Jeder logische Prozessor320 führt ein erstes Codesegment der Interrupt-Abwicklungsroutine aus, das bewirkt, daß er auf das ICR350 zugreift. Der erste logische Prozessor320 , der auf das ICR350 zugreift, führt den Rest der Interrupt-Abwicklungsroutine aus. Die anderen logischen Prozessoren320 kehren zu ihren unterbrochenen Threads zurück. - Die Konfigurationen des Mehrkernprozessors
210 und des Mehrthreadprozessors310 werden lediglich zur Veranschaulichung angegeben. Andere Ausführungsformen von Mehrfachkontextprozessoren, die sich zur Verwendung bei der vorliegenden Erfindung eignen, können andere Konfigurationen verwenden. Zum Bei spiel können die Threads eines Mehrthreadprozessors ein Frontend und Ausführungsbetriebsmittel gemeinsam benutzen und nur Registerfiles duplizieren. Fachleute auf dem Gebiet des Prozessorentwurfs werden anhand der vorliegenden Offenbarung andere Konfigurationen von Mehrfachkontextprozessoren erkennen, die in Verbindung mit der vorliegenden Erfindung verwendet werden können. -
4 ist ein Floßdiagramm einer Ausführungsform des Verfahrens400 , das von jedem logischen Prozessor in einem Mehrfachkontextprozessor als Reaktion auf einen gewöhnlichen Interrupt ausgeführt wird. - Ein gewöhnlicher Interrupt wird erkannt
410 und der logische Prozessor bestimmt420 , ob der Interrupt abgewickelt werden soll. Zum Beispiel kann eine Interrupt-Einheit des logischen Prozessors Prioritäts- und Maskierbits untersuchen, um zu bestimmen, ob der erkannte Interrupt gegenüber dem gerade ausgeführten Anweisungsthread Vorrang erhält. Wenn der Interrupt keine Priorität hat, endet das Verfahren400 470 . Wenn der Interrupt Priorität hat420 , werden bestimmte Zustandsinformationen an einem entsprechenden Punkt in dem gerade ausgeführten Thread gesichert430 und der logische Prozessor wird zu der Interrupt-Abwicklungsroutine an einer angegebenen Adresse gelenkt440 . Eine Interrupt-Einheit stellt die Interrupt-Handler-Adresse in der Regel bereit, wenn sie bestimmt, daß der Interrupt Priorität hat. - Die vor dem Transfer der Steuerung zu einem Interrupt-Handler gesicherten Zustandsinformationen sind gewöhnlich die kleinste Menge an Zustandsinformationen, die den logischen Prozessor nach Abschluß des Interrupt-Handlers zu dem unterbrochenen Anweisungsthread zurückführen kann. Dadurch wird das mit der Ausführung des Interrupt-Handlers verbundene Overhead verringert.
- Nach dem Eintritt in die Interrupt-Routine führt der logische Prozessor ein erstes Codesegment aus, das ihn anweist, auf ein Interrupt-Anspruch-Register (ICR) zuzugreifen
450 und einen in dem ICR gespeicherten Wert mit einem ersten Wert zu vergleichen460 . Wenn der gelesene Wert gleich dem ersten Wert ist, fährt der logische Prozessor mit der Interrupt-Abwicklungsroutine fort470 . Wenn der gespei cherte Wert nicht gleich dem ersten Wert ist, kehrt der logische Prozessor aus dem Interrupt zurück480 . - Um sicherzustellen, daß nur ein Prozessor auf einmal auf das ICR zugreift, können Ausführungsformen der vorliegenden Erfindung das ICR oder das zum Zugriff auf das ICR verwendete Codesegment schützen. Im ersten Fall kann der Interrupt-Handler eine atomische Lese-Modifizier-Schreib-Operation verwenden, um das ICR zu modifizieren. Wenn bei dieser Ausführungsform der logische Prozessor einen ersten Wert in dem ICR liest, schreibt er dann einen zweiten Wert in das ICR, ohne die Kontrolle des ICR zwischen Lese- und Schreiboperationen aufzugeben. Sofern das ICR zwischen Interrupts auf den ersten Wert zurückgesetzt ist, liest der erste logische Prozessor, der das ICR liest, den ersten Wert in dem ICR und ersetzt ihn mit dem zweiten Wert. Jeder logische Prozessor, der das ICR nach dem ersten logischen Prozessor liest (als Reaktion auf denselben Interrupt), liest den zweiten Wert und nimmt seine Aktivitäten vor der Unterbrechung wieder auf.
- Für den zweiten Fall wird der Zugriff auf das erste Codesegment des Interrupt-Handlers durch ein Kritischer-Teil-Bit (critical section bit) torgeschaltet. Der erste logische Prozessor, der das erste Codesegment erreicht, führt eine atomische Lese-Modifizier-Schreiboperation eines Kritischer-Teil-Bit durch, wobei er den Wert des Bit liest und einen zweiten Wert in das Bit schreibt, ohne das Bit zwischen der Lese- und Schreiboperation freizugeben. Wenn der gelesene Wert anzeigt, daß das erste Codesegment unverriegelt ist, führt der logische Prozessor den Code zum Lesen des Werts in dem ICR aus. Der zweite in das Kritischer-Teil-Bit geschriebene Wert stellt sicher, daß kein anderer logischer Prozessor das erste Codesegment in der Zwischenzeit ausführen kann. Wenn der gelesene Wert anzeigt, daß das erste Codesegment verriegelt ist, kann der logische Prozessor zu dem Thread zurückkehren, den er ausgeführt hatte. Da nur ein logischer Prozessor auf einmal das erste Codesegment ausführen kann, erfordert das Lesen und Beschreiben des ICR keine atomische Operation. Fachleute werden anhand der vorliegenden Offenbarung verschiedene andere Mechanismen erkennen, die sicherstellen, daß nur ein logischer Prozessor die Eigentümerschaft des gewöhnlichen Interrupt beansprucht.
- Nachdem alle logischen Prozessoren als Reaktion auf einen gewöhnlichen Interrupt auf das Flag (ICR, Verriegelungsvariable usw.) zugegriffen haben, sollte das Flag für den nächsten gewöhnlichen Interrupt auf den ersten Wert zurückgesetzt werden. Bei einer Ausführungsform der Erfindung setzt der letzte logische Prozessor, der das Flag als Reaktion auf einen gewöhnlichen Interrupt liest, es auf den ersten Wert zurück. Zum Beispiel kann das Flag so definiert werden, daß es ein Bit für jeden durch den Mehrfachkontextprozessor unterstützten logischen Prozessor enthält. Während jeder logische Prozessor auf das Flag zugreift, setzt er das entsprechende Flag-Bit. Der letzte logische Prozessor setzt sein entsprechendes Flag-Bit und setzt alle Bit in dem Flag auf den ersten Wert zurück.
- Bei einer anderen Ausführungsform kann das anfängliche Codesegment des Interrupt-Handlers einen logischen Prozessor anweisen, einen Zählwert (d.h. ein Flag) zu erhöhen und den erhöhten Zählwert zu lesen. Wenn der erhöhte Zählwert gleich der Anzahl gerade auf dem Prozessor aktiver logischer Prozessoren ist, setzt der logische Prozessor den Zählwert auf den ersten Wert zurück. Wenn der erhöhte Zählwert kleiner als die Anzahl logischer Prozessoren, die gerade aktiv sind, ist, kehrt der logische Prozessor aus dem Interrupt zurück.
- Bei diesen Mechanismen zum Rücksetzen des Flag wird angenommen, daß die Zeit zwischen gewöhnlichen Interrupts in der Regel größer als die Zeit ist, die alle logischen Prozessoren benötigen, um den Interrupt-Handler (oder Teile davon) auszuführen und auf das Flag zuzugreifen. Fachleute auf dem Gebiet des Prozessorentwurfs werden anhand der vorliegenden Offenbarung andere Mechanismen zum Rücksetzen des Flag, nachdem die Eigentümerschaft eines gewöhnlichen Interrupts bestimmt wurde, erkennen.
-
5 ist ein Floßdiagramm einer Ausführungsform eines Verfahrens500 gemäß der vorliegenden Erfindung zum Abwickeln von Interrupts. Das Verfahren500 ermöglicht es, eine duplizierte Abwicklung gewöhnlicher Interrupts freizugeben oder zu sperren. Zum Beispiel kann es notwendig sein, daß alle logischen Prozessoren auf einen gewöhnlichen Interrupt, wie zum Beispiel einen Maschinen-Check oder ein thermisches Ereignis, reagieren. Für diese und andere gewöhnliche Interrupts, die von allen logischen Prozessoren eine Reaktion erfordern, kann eine du plizierte Abwicklung von Interrupts durch Bezugnahme auf das Bit ECH (enable common handling/Freigabe der gemeinsamen Abwicklung) freigegeben werden. Dieses Bit kann für ausgewählte gewöhnliche Interrupts gesetzt werden, wenn das System das erste Mal gebootet wird, oder später zur Anpassung einer bestimmten Systemumgebung verändert werden. - Des Verfahren
500 wird als Reaktion auf die Erkennung eines gewöhnlichen Interrupts eingeleitet510 . Ein logischer Prozessor prüft520 ein Bit, um zu bestimmen, ob duplizierte Interruptabwicklung freigegeben ist. Wenn sie freigegeben ist, fährt der logische Prozessor mit dem Interrupt-Handler fort530 , ungeachtet dessen, was andere logische Prozessoren durchführen. Wenn das Bit anzeigt520 , daß duplizierte Interruptabwicklung gesperrt ist, prüft540 der logische Prozessor das ICR, um zu bestimmen, ob Eigentümerschaft des Interrupts beansprucht wurde. Wenn der Interrupt nicht beansprucht wurde550 , fährt der logische Prozessor mit dem Interrupt-Handler fort530 . Die obenbesprochenen Mechanismen zur Regelung des Zugriffs auf das ICR sind auf das Verfahren500 anwendbar. Wenn der Interrupt beansprucht wurde550 , bestimmt560 der logische Prozessor, ob es der letzte Thread ist, der auf den gewöhnlichen Interrupt reagiert. Wenn dem so ist, setzt der logische Prozessor das ICR auf den ersten Wert zurück570 und kehrt aus dem Interrupt-Handler zurück580 , um die Ausführung des Threads, den er abgewickelt hat, als der Interrupt auftrat, wiederaufzunehmen. Wenn es nicht der letzte Thread ist, der auf den gewöhnlichen Interrupt reagiert, kehrt er aus dem Interrupt-Handler zurück580 , ohne das ICR zurückzusetzen. Die obenbesprochenen Mechanismen des Verfahrens400 zur Bestimmung, ob der logische Prozessor der letzte Thread ist, der auf den gewöhnlichen Interrupt reagiert, und zum entsprechenden Zurücksetzen des ICR (d.h. Flag) sind auf das Verfahren500 anwendbar. - Es wurde also ein Mechanismus zum Abwickeln bestimmter Interrupts in Computersystemen mit Mehrfachkontextprozessoren offengelegt. Die logischen Prozessoren auf einem Mehrfachkontextprozessor konkurrieren um den Zugriff auf ein gemeinsam benutztes Register als Reaktion auf einen gewöhnlichen Interrupt. Der erste der logischen Prozessoren, der auf das gemeinsam benutzte Register zugreift, wickelt den Interrupt ab. Die übrigen logischen Prozessoren erkennen, daß der Interrupt beansprucht wurde, und kehren aus dem Interrupt-Handler zurück. Bei ei ner Ausführungsform der Erfindung enthält der Interrupt-Handler einen ersten Codeteil, der von allen logischen Prozessoren auf dem Baustein als Reaktion auf den gewöhnlichen Interrupt ausgeführt wird. Das gemeinsam benutzte Register wird auf einen ersten Wert initialisiert und der erste Codeteil weist jeden logischen Prozessor an, das gemeinsam benutzte Register zu lesen. Der erste logische Prozessor, der nach einem gewöhnlichen Interrupt auf das gemeinsam benutzte Register zugreift, liest den ersten Wert, schreibt einen zweiten Wert und setzt die Ausführung des Interrupt-Handlers fort. Die übrigen logischen Prozessoren lesen den zweiten Wert, der sie anweist, aus dem Interrupt-Handler auszutreten.
- Bei einer anderen Ausführungsform der Erfindung wird ein Freigabe-/Sperrbit vorgesehen, um zu signalisieren, ob gewöhnliche Interrupts redundant verarbeitet werden oder nicht. Wenn das Bit der Sperrzustand ist, wird der Interrupt von dem ersten logischen Prozessor beansprucht, der auf das gemeinsam benutzte Register zugreift, indem er ein erstes Segment einer Interrupt-Abwicklungsroutine ausführt. Wenn sich das Bit in dem Freigabezustand befindet, wird das erste Codesegment umgangen und alle logischen Prozessoren führen die Interrupt-Handler-Routine bis zum Schluß aus.
- Die offenbarten Ausführungsformen wurden angegeben, um verschiedene Merkmale der vorliegenden Erfindung zu veranschaulichen. Die vorliegende Erfindung kann in Computern und anderen prozessorgestützten Systemen, die Mehrfachkontextprozessoren verwenden, Anwendung finden. Fachleute werden anhand der vorliegenden Offenlegung Varianten und Modifikationen der offengelegten Ausführungsformen erkennen, die dennoch in den Gedanken und Schutzumfang der angefügten Ansprüche fallen.
- Zusammenfassung
- Die vorliegende Erfindung liefert einen Mechanismus zum Abwickeln von Interrupts auf einem Prozessor, der mehrere Threads gleichzeitig unterstützt. Die Betriebsmittel des Prozessors werden zugeteilt, um mehrere logische Prozessoren bereitzustellen. Als Reaktion auf einen gewöhnlichen Interrupt konkurrieren die logischen Prozessoren um den Zugriff auf ein gemeinsam benutztes Register. Der erste logische Prozessor, der auf das gemeinsam benutzte Register zugreift, wickelt den gewöhnlichen Interrupt ab. Die übrigen logischen Prozessoren kehren aus dem Interrupt zurück.
Claims (22)
- Prozessor, welcher umfaßt: eine erste Interrupt-Einheit zum Lenken eines ersten logischen Prozessors zu einem Interrupt-Handler als Reaktion auf einen Interrupt; eine zweite Interrupt-Einheit zum Lenken eines zweiten logischen Prozessors zu dem Interrupt-Handler als Reaktion auf den Interrupt; und ein Interrupt-Anspruch-Register zum Speichern eines Werts, der angibt, ob der erste oder der zweite logische Prozessor den Interrupt abwickeln soll.
- Prozessor nach Anspruch 1, wobei der erste und der zweite logische Prozessor einen Wert in dem Interrupt-Anspruch-Register unter der Kontrolle des Interrupt-Handlers lesen.
- Prozessor nach Anspruch 2, wobei der erste logische Prozessor den Interrupt abwickelt, wenn er das Interrupt-Anspruch-Register zuerst liest.
- Prozessor nach Anspruch 3, wobei der zweite logische Prozessor den Interrupt-Handler verläßt, wenn der erste logische Prozessor den Interrupt abwickelt.
- Prozessor nach Anspruch 4, wobei der zweite logische Prozessor feststellt, daß der erste logische Prozessor den Interrupt abwickelt, indem er einen Wert in dem Interrupt-Anspruch-Register liest, der durch den ersten logischen Prozessor geschrieben wird.
- System, welches umfaßt: einen Prozessor mit einem Interrupt-Anspruch-Register und einer Mehrzahl von Thread-Betriebsmitteln zur Verarbeitung von Anweisungen jeweils für eine entsprechende Mehrzahl von Anweisungsthreads; und einen Speicher zum Speichern eines Interrupt-Handlers, der Anweisungen enthält, die als Reaktion auf einen Interrupt durch jedes der Mehrzahl von Thread-Betriebsmitteln ausführbar sind, um folgendes auszuführen: Lesen eines Werts in dem Interrupt-Anspruch-Register; und Verarbeiten des Interrupts oder Wiederaufnahme der Anweisungsausführung als Reaktion auf den gelesenen Wert.
- System nach Anspruch 6, wobei die Mehrzahl von Thread-Betriebsmitteln eine Mehrzahl von Ausführungskernen des Prozessors umfaßt.
- System nach Anspruch 6, wobei die Mehrzahl von Thread-Betriebsmitteln mehrere Betriebsmittel eines Ausführungskerns umfaßt, die mehreren Anweisungsthreads zugeordnet sind.
- System nach Anspruch 6, wobei der Interrupt-Handler Anweisungen enthält, die weiter durch jedes Thread-Betriebsmittel ausführbar sind, um nach dem Lesen des Werts in dem Interrupt-Anspruch-Register einen zweiten Wert in das Interrupt-Anspruch-Register zu schreiben.
- System nach Anspruch 9, wobei das Interrupt-Anspruch-Register so initialisiert wird, daß er einen ersten Wert speichert, und das erste Thread-Betriebsmittel, das den ersten Wert liest, diesen mit einem zweiten Wert ersetzt und den Interrupt abwickelt.
- System nach Anspruch 10, wobei ein Rest der Mehrzahl von Thread-Betriebsmitteln als Reaktion auf das Lesen des zweiten Werts in dem Interrupt-Anspruch-Register einen Rücksprung aus dem Interrupt ausführen.
- System, welches umfaßt: einen Speicher, in dem ein Interrupt-Handler gespeichert ist; und einen Prozessor mit einem Interrupt-Anspruch-Register und Ausführungsbetriebsmitteln zur Unterstützung mehrerer logischer Prozessoren, wobei jeder der logischen Prozessoren als Reaktion auf ein Interrupt-Signal unter Verwendung des Interrupt-Handlers um den Zugriff auf das Interrupt-Anspruch-Register konkurriert.
- System der Anspruchsvorrichtung nach Anspruch 12, wobei die Ausführungsbetriebsmittel zur Unterstützung mehrerer logischer Prozessoren mehrere Ausführungskerne umfassen.
- System nach Anspruch 13, wobei jeder Ausführungskern eine Interrupt-Einheit zur direkten Lenkung des Ausführungskerns zu dem Interrupt-Handler als Reaktion auf das Interrupt-Signal enthält.
- System nach Anspruch 13, wobei jeder der Ausführungskerne Anweisungen des Interrupt-Handlers zum Lesen des Interrupt-Anspruch-Registers und zum Fortsetzen der Ausführung des Interrupt-Handlers oder zum Rückkehren aus dem Interrupt-Handler als Reaktion auf den in dem Interrupt-Anspruch-Register gelesenen Wert verarbeitet.
- System nach Anspruch 15, wobei ein erster der Ausführungskerne, der als Reaktion auf das Interrupt-Signal das Interrupt-Anspruch-Register liest, die Ausführung des Interrupt-Handlers abschließt und andere Ausführungskerne den Interrupt-Handler verlassen.
- System nach Anspruch 12, wobei ein erster der logischen Prozessoren, der auf das Interrupt-Anspruch-Register zugreift, die Ausführung des Interrupt-Handlers abschließt.
- System nach Anspruch 17, wobei die logischen Prozessoren, die nach dem ersten logischen Prozessor auf das Interrupt-Anspruch-Register zugreifen, den Interrupt-Handler verlassen.
- System nach Anspruch 12, wobei die Ausführungsbetriebsmittel zur Unterstützung mehrerer logischer Prozessoren mehrere Ausführungskerne umfassen, von denen mindestens einer Mehrfachthreads unterstützt.
- Verfahren, das als Reaktion auf einen Interrupt durch jeden Thread, der gerade auf einem Mehrfachkontextprozessor ausgeführt wird, implementiert wird, mit den folgenden Schritten: Zugreifen auf einen Interrupt-Handler an einer angegebenen Speicherstelle; Ausführen des Interrupt-Handlers, um einen Wert in einem Interrupt-Anspruch-Register zu lesen; und Abschließen der Ausführung des Interrupt-Handlers, wenn der aus dem In#terrupt-Anspruch-Register gelesene Wert ein erster Wert ist.
- Verfahren nach Anspruch 20, wobei die Ausführung des Interrupt-Handlers das Lesen des Werts in dem Interrupt-Anspruch-Register und das Schreiben eines zweiten Werts in das Register, ohne die Kontrolle über das Register aufzugeben, umfaßt.
- Verfahren nach Anspruch 20, bei dem weiterhin die Ausführung des Interrupt-Handlers beendet wird, wenn der aus dem Interrupt-Anspruch-Register gelesene Wert der zweite Wert ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/945419 | 2001-08-31 | ||
US09/945,419 US6779065B2 (en) | 2001-08-31 | 2001-08-31 | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
PCT/US2002/024672 WO2003021438A1 (en) | 2001-08-31 | 2002-08-01 | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10297166T5 true DE10297166T5 (de) | 2004-07-22 |
Family
ID=25483060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10297166T Ceased DE10297166T5 (de) | 2001-08-31 | 2002-08-01 | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen |
Country Status (10)
Country | Link |
---|---|
US (1) | US6779065B2 (de) |
JP (1) | JP2005502119A (de) |
KR (1) | KR100578437B1 (de) |
CN (1) | CN1267822C (de) |
DE (1) | DE10297166T5 (de) |
GB (1) | GB2394099B (de) |
HK (1) | HK1060784A1 (de) |
RU (1) | RU2280272C2 (de) |
TW (1) | TWI223771B (de) |
WO (1) | WO2003021438A1 (de) |
Families Citing this family (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181600B1 (en) | 2001-08-02 | 2007-02-20 | Mips Technologies, Inc. | Read-only access to CPO registers |
US7185183B1 (en) | 2001-08-02 | 2007-02-27 | Mips Technologies, Inc. | Atomic update of CPO state |
US7428485B2 (en) * | 2001-08-24 | 2008-09-23 | International Business Machines Corporation | System for yielding to a processor |
US7251814B2 (en) | 2001-08-24 | 2007-07-31 | International Business Machines Corporation | Yield on multithreaded processors |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
US7130948B2 (en) * | 2002-08-02 | 2006-10-31 | Bian Qiyong B | Flexible interrupt handling methods for optical networking apparatuses with multiple multi-protocol optical networking modules |
US7627721B2 (en) | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
US7346757B2 (en) * | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US8176298B2 (en) * | 2002-10-08 | 2012-05-08 | Netlogic Microsystems, Inc. | Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline |
US7924828B2 (en) * | 2002-10-08 | 2011-04-12 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for fast packet queuing operations |
US20050033831A1 (en) * | 2002-10-08 | 2005-02-10 | Abbas Rashid | Advanced processor with a thread aware return address stack optimally used across active threads |
US7334086B2 (en) | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
US7461215B2 (en) * | 2002-10-08 | 2008-12-02 | Rmi Corporation | Advanced processor with implementation of memory ordering on a ring based data movement network |
US9088474B2 (en) * | 2002-10-08 | 2015-07-21 | Broadcom Corporation | Advanced processor with interfacing messaging network to a CPU |
US20050033889A1 (en) * | 2002-10-08 | 2005-02-10 | Hass David T. | Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip |
US8015567B2 (en) | 2002-10-08 | 2011-09-06 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for packet distribution at high line rate |
US8037224B2 (en) * | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7984268B2 (en) * | 2002-10-08 | 2011-07-19 | Netlogic Microsystems, Inc. | Advanced processor scheduling in a multithreaded system |
US8478811B2 (en) * | 2002-10-08 | 2013-07-02 | Netlogic Microsystems, Inc. | Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip |
US7961723B2 (en) * | 2002-10-08 | 2011-06-14 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for enforcing ordering between information sent on two independent networks |
US20050044324A1 (en) * | 2002-10-08 | 2005-02-24 | Abbas Rashid | Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads |
US7634638B1 (en) * | 2002-10-22 | 2009-12-15 | Mips Technologies, Inc. | Instruction encoding for system register bit set and clear |
US7062606B2 (en) * | 2002-11-01 | 2006-06-13 | Infineon Technologies Ag | Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events |
US7386619B1 (en) * | 2003-01-06 | 2008-06-10 | Slt Logic, Llc | System and method for allocating communications to processors in a multiprocessor system |
US7487502B2 (en) | 2003-02-19 | 2009-02-03 | Intel Corporation | Programmable event driven yield mechanism which may activate other threads |
US7849465B2 (en) * | 2003-02-19 | 2010-12-07 | Intel Corporation | Programmable event driven yield mechanism which may activate service threads |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7281075B2 (en) * | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
WO2005022381A2 (en) | 2003-08-28 | 2005-03-10 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7836450B2 (en) * | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) * | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7721024B2 (en) * | 2003-11-12 | 2010-05-18 | Dell Products L.P. | System and method for exiting from an interrupt mode in a multiple processor system |
US20050102457A1 (en) * | 2003-11-12 | 2005-05-12 | Dell Products L.P. | System and method for interrupt processing in a multiple processor system |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US7917910B2 (en) * | 2004-03-26 | 2011-03-29 | Intel Corporation | Techniques to manage critical region interrupts |
US7143223B2 (en) * | 2004-10-14 | 2006-11-28 | International Business Machines Corporation | Method, system and program product for emulating an interrupt architecture within a data processing system |
US8176489B2 (en) * | 2004-12-09 | 2012-05-08 | International Business Machines Corporation | Use of rollback RCU with read-side modifications to RCU-protected data structures |
US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
US20060294149A1 (en) * | 2005-06-24 | 2006-12-28 | Intel Corporation | Method and apparatus for supporting memory hotplug operations using a dedicated processor core |
US7386646B2 (en) * | 2005-08-25 | 2008-06-10 | Broadcom Corporation | System and method for interrupt distribution in a multithread processor |
US7386647B2 (en) * | 2005-10-14 | 2008-06-10 | Dell Products L.P. | System and method for processing an interrupt in a processor supporting multithread execution |
US8079031B2 (en) * | 2005-10-21 | 2011-12-13 | Intel Corporation | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
US8180923B2 (en) * | 2005-11-29 | 2012-05-15 | Intel Corporation | Network access control for many-core systems |
CN101366004A (zh) * | 2005-12-06 | 2009-02-11 | 波士顿电路公司 | 用于带有专用线程管理的多核处理的方法和设备 |
KR100679050B1 (ko) * | 2005-12-12 | 2007-02-06 | 삼성전자주식회사 | 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치 |
TW200810523A (en) | 2005-12-23 | 2008-02-16 | Nxp Bv | An AV renderer peripheral with dual interrupt lines for staggered interrupts |
KR100681199B1 (ko) * | 2006-01-11 | 2007-02-09 | 삼성전자주식회사 | 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치 |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
US7721148B2 (en) * | 2006-06-29 | 2010-05-18 | Intel Corporation | Method and apparatus for redirection of machine check interrupts in multithreaded systems |
US7870372B2 (en) * | 2006-08-14 | 2011-01-11 | Marvell World Trade Ltd. | Interrupt handling |
US7493436B2 (en) * | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
US7818302B2 (en) * | 2007-03-09 | 2010-10-19 | Emc Corporation | System and method for performing file system checks on an active file system |
US7660570B2 (en) * | 2007-03-12 | 2010-02-09 | John Mezzalingua Associates, Inc. | Active step attenuator |
US8627030B2 (en) * | 2007-11-07 | 2014-01-07 | Intel Corporation | Late lock acquire mechanism for hardware lock elision (HLE) |
US9596324B2 (en) * | 2008-02-08 | 2017-03-14 | Broadcom Corporation | System and method for parsing and allocating a plurality of packets to processor core threads |
CN101247275B (zh) * | 2008-03-18 | 2011-02-09 | 杭州华三通信技术有限公司 | 一种中断上报方法和网络设备 |
US8808164B2 (en) * | 2008-03-28 | 2014-08-19 | Intuitive Surgical Operations, Inc. | Controlling a robotic surgical tool with a display monitor |
US8155479B2 (en) | 2008-03-28 | 2012-04-10 | Intuitive Surgical Operations Inc. | Automated panning and digital zooming for robotic surgical systems |
CN102077181B (zh) * | 2008-04-28 | 2014-07-02 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
US9417914B2 (en) * | 2008-06-02 | 2016-08-16 | Microsoft Technology Licensing, Llc | Regaining control of a processing resource that executes an external execution context |
US7996722B2 (en) * | 2009-01-02 | 2011-08-09 | International Business Machines Corporation | Method for debugging a hang condition in a process without affecting the process state |
US8151027B2 (en) * | 2009-04-08 | 2012-04-03 | Intel Corporation | System management mode inter-processor interrupt redirection |
US7996595B2 (en) * | 2009-04-14 | 2011-08-09 | Lstar Technologies Llc | Interrupt arbitration for multiprocessors |
US8260996B2 (en) * | 2009-04-24 | 2012-09-04 | Empire Technology Development Llc | Interrupt optimization for multiprocessors |
US8321614B2 (en) * | 2009-04-24 | 2012-11-27 | Empire Technology Development Llc | Dynamic scheduling interrupt controller for multiprocessors |
JP5035299B2 (ja) * | 2009-06-15 | 2012-09-26 | 株式会社日立製作所 | マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム |
US8234431B2 (en) * | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
BR112012008687A2 (pt) * | 2009-10-15 | 2016-04-19 | L E Tech Co Ltd | microcomputador, e, método de operação de um microcomputador |
FR2960314B1 (fr) * | 2010-05-19 | 2012-07-27 | Bull Sas | Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede |
TWI463406B (zh) * | 2011-10-31 | 2014-12-01 | Univ Nat Taiwan | 具搶占功能的即時中斷處理系統及其方法 |
US9104508B2 (en) * | 2012-01-18 | 2015-08-11 | International Business Machines Corporation | Providing by one program to another program access to a warning track facility |
US10102003B2 (en) | 2012-11-01 | 2018-10-16 | International Business Machines Corporation | Intelligent context management |
US10078518B2 (en) * | 2012-11-01 | 2018-09-18 | International Business Machines Corporation | Intelligent context management |
US9329880B2 (en) * | 2013-02-13 | 2016-05-03 | Red Hat Israel, Ltd. | Counter for fast interrupt register access in hypervisors |
US10331589B2 (en) * | 2013-02-13 | 2019-06-25 | Red Hat Israel, Ltd. | Storing interrupt location for fast interrupt register access in hypervisors |
US9311138B2 (en) | 2013-03-13 | 2016-04-12 | Intel Corporation | System management interrupt handling for multi-core processors |
US9842015B2 (en) * | 2013-09-27 | 2017-12-12 | Intel Corporation | Instruction and logic for machine checking communication |
US10147480B2 (en) * | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US10013279B2 (en) * | 2015-07-28 | 2018-07-03 | International Business Machines Corporation | Processing interrupt requests |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102538679B1 (ko) * | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN110737616B (zh) * | 2018-07-20 | 2021-03-16 | 瑞昱半导体股份有限公司 | 处理中断优先级的电路系统 |
US20210049036A1 (en) * | 2019-08-13 | 2021-02-18 | Facebook Technologies, Llc | Capability Space |
CN116401990B (zh) * | 2023-01-30 | 2023-10-20 | 芯华章科技(北京)有限公司 | 处理中断事件的方法、装置、系统和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109522A (en) * | 1983-06-02 | 1992-04-28 | Amdahl Corporation | Data processing system with logical processing facility supporting a plurality of system control programs for production operation |
US5437042A (en) * | 1992-10-02 | 1995-07-25 | Compaq Computer Corporation | Arrangement of DMA, interrupt and timer functions to implement symmetrical processing in a multiprocessor computer system |
EP0827071B1 (de) * | 1996-08-27 | 2002-11-27 | Matsushita Electric Industrial Co., Ltd. | Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom |
US5915088A (en) * | 1996-12-05 | 1999-06-22 | Tandem Computers Incorporated | Interprocessor messaging system |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6205468B1 (en) * | 1998-03-10 | 2001-03-20 | Lucent Technologies, Inc. | System for multitasking management employing context controller having event vector selection by priority encoding of contex events |
US6163829A (en) * | 1998-04-17 | 2000-12-19 | Intelect Systems Corporation | DSP interrupt control for handling multiple interrupts |
-
2001
- 2001-08-31 US US09/945,419 patent/US6779065B2/en not_active Expired - Lifetime
-
2002
- 2002-08-01 DE DE10297166T patent/DE10297166T5/de not_active Ceased
- 2002-08-01 WO PCT/US2002/024672 patent/WO2003021438A1/en active Application Filing
- 2002-08-01 KR KR1020047001244A patent/KR100578437B1/ko not_active IP Right Cessation
- 2002-08-01 RU RU2004109581/09A patent/RU2280272C2/ru not_active IP Right Cessation
- 2002-08-01 CN CNB028170687A patent/CN1267822C/zh not_active Expired - Fee Related
- 2002-08-01 JP JP2003525460A patent/JP2005502119A/ja active Pending
- 2002-08-01 GB GB0401390A patent/GB2394099B/en not_active Expired - Fee Related
- 2002-08-14 TW TW091118296A patent/TWI223771B/zh not_active IP Right Cessation
-
2004
- 2004-05-19 HK HK04103557A patent/HK1060784A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
GB0401390D0 (en) | 2004-02-25 |
JP2005502119A (ja) | 2005-01-20 |
US20030046464A1 (en) | 2003-03-06 |
GB2394099B (en) | 2005-02-09 |
US6779065B2 (en) | 2004-08-17 |
KR100578437B1 (ko) | 2006-05-11 |
GB2394099A (en) | 2004-04-14 |
RU2280272C2 (ru) | 2006-07-20 |
KR20040023692A (ko) | 2004-03-18 |
CN1549968A (zh) | 2004-11-24 |
TWI223771B (en) | 2004-11-11 |
CN1267822C (zh) | 2006-08-02 |
RU2004109581A (ru) | 2005-08-20 |
HK1060784A1 (en) | 2004-08-20 |
WO2003021438A1 (en) | 2003-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE112005000706B4 (de) | Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene | |
DE602004012106T2 (de) | Multikanal-DMA mit gemeinsamem FIFO-Puffer | |
DE69332663T2 (de) | Datenprozessor mit einem Cachespeicher | |
DE112009000741B4 (de) | Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen | |
DE60011797T2 (de) | Ausführung von mehreren fäden in einem parallelprozessor | |
DE112007003801B3 (de) | Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE69233655T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren | |
DE112005003874B3 (de) | Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung | |
DE69724355T2 (de) | Erweiterte symmetrische Multiprozessorarchitektur | |
DE102009049078B4 (de) | Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen | |
DE112010005821T5 (de) | Kontextwechsel | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE112010004963T5 (de) | Synchronisieren von SIMD Vektoren | |
DE102010052680A1 (de) | Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen | |
DE102010034555A1 (de) | Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus | |
DE112005002672T5 (de) | Dynamische Neukonfiguration eines Cache-Speichers | |
DE102010055267A1 (de) | Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU | |
DE112006001698T5 (de) | Grundfunktionen zum Verbessern von Thread-Level Spekulation | |
DE112011105298T5 (de) | Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors | |
DE4417068A1 (de) | Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System | |
DE102007006190A1 (de) | Techniken zur Verwendung von Speicher-Attributen | |
DE112005003098T5 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 10297166 Country of ref document: DE Date of ref document: 20040722 Kind code of ref document: P |
|
R011 | All appeals rejected, refused or otherwise settled | ||
R003 | Refusal decision now final |
Effective date: 20131202 |