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 PDF

Info

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
Application number
DE10297166T
Other languages
English (en)
Inventor
Scott Chandler Bobholz
Keshavram Phoenix Murty
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 DE10297166T5 publication Critical patent/DE10297166T5/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task 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.

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 Computersystems 100, in dem die vorliegende Erfindung implementiert werden kann. Das Computersystem 100 enthält einen Mehrfachkontextprozessor 110 zur Ausführung von in einem Speicher 160 gespeicherten Anweisungen. Zwischen dem Prozessor 110 und dem Speicher 160 werden durch einen Kanal 180 Daten und Anweisungen gekoppelt. Der Kanal 180 kann einen oder mehrere Busse enthalten, die durch einen Chipsatz oder eine Systemlogik gesteuert werden (nicht gezeigt).
  • Für das System 100 speichert der Speicher 160 einen Interrupt-Handler 170, der durch Betriebsmittel auf dem Mehrfachkontextprozessor 110 als Reaktion auf einen Interrupt ausgeführt wird. Der Speicher 160 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-Handlers 170 in Firmware implementiert werden, während andere Teile in einem Hauptspeicher gespeichert werden können.
  • Die Logik des Mehrfachkontextprozessors 110 wird als logische Prozessoren 120(1)–120(n) (generisch logischer Prozessor 120) repräsentiert, einschließlich ihrer jeweiligen zugeordneten Interrupt-Einheiten 130(1)–130(n) (generisch Interrupt-Einheit 130) und gemeinsam benutzter Betriebsmittel 140. Zum Beispiel kann jeder logische Prozessor 120 Betriebsmittel darstellen, die einem bestimmten Thread zugeteilt werden, und die gemeinsam benutzten Betriebsmittel 140 können diejenigen Betriebsmittel des Prozessors 110 darstellen, die Threads auf allen logischen Prozessoren 120 verfügbar sind.
  • Bei der gezeigten Ausführungsform des Systems 100 enthalten die gemeinsam benutzten Betriebsmittel 140 ein Interrupt-Anspruch-Register (interrupt claim regi ster/ICR) 150, das jedem logischen Prozessor 120 zugänglich ist. Wie später ausführlicher beschrieben wird, liefert das ICR 150 einen Mechanismus, durch den ein logischer Prozessor 120 den übrigen logischen Prozessoren signalisiert, daß er einen Interrupt abwickeln wird. Die gemeinsam benutzten Betriebsmittel 140 können außerdem einen Cache-Speicher auf höherer Ebene oder Buslogik enthalten, womit mit dem Speicher 160 oder Peripheriegeräten (nicht gezeigt) kommuniziert wird.
  • Die Interrupt-Einheit 130 stellt einen dem logischen Prozessor 120 zur Verarbeitung von Interrupts zugeordneten Funktionsblock dar. Bestimmte Interrupts können von jedem der logischen Prozessoren 120 abgewickelt werden. Zum Beispiel können in der Regel bestimmte Interrupts, die aus den gemeinsam benutzten Betriebsmitteln 140 auf dem Prozessor und System stammen, oder Interrupts auf Plattformebene, die durch Betriebsmittel außerhalb des Prozessorbausteins erzeugt werden, durch einen beliebigen logischen Prozessor 120 abgewickelt werden. Sie können durch einen externen Anschluß 104 an dem Prozessorbaustein, einen Bus oder durch interne Schaltkreise des Prozessors 110 ü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 Prozessoren 120(1)–120(n). Zum Beispiel bewertet jede Interrupt-Einheit 130 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-Einheit 130 bestimmt, daß der Interrupt Priorität hat, lenkt sie ihren zugeordneten logischen Prozessor 120 zu einer entsprechenden Interrupt-Abwicklungsroutine. Die vorliegende Erfindung liefert einen Mechanismus, der es einem logischen Prozessor 120 gestattet, die volle Interrupt-Abwicklungsroutine für einen Interrupt, der durch alle logischen Prozessoren 120 registriert wird, auszuführen. Dabei erlegt er den logischen Prozessoren 120 keine Asymmetrien auf, wie zum Beispiel das willkürliche Zuweisen von Interrupts zu logischen Prozessoren 120.
  • Bei einer Ausführungsform des Systems 100 registrieren die Interrupt-Einheiten 130(1)–130(n) einen gewöhnlichen Interrupt für die logischen Prozessoren 120(1)–120(n). Wenn der Interrupt Priorität hat, lenken die Interrupt-Einheiten 130(1)–130(n) die logischen Prozessoren 120(1)–120(n) jeweils zu dem Interrupt-Handler 170. Jeder der logischen Prozessoren 120(1)–120(n) führt ein erstes Codesegment des Interrupt-Handlers 170 aus, das ihn anweist, auf das ICR 150 zuzugreifen. Der erste der logischen Prozessoren 120, der erfolgreich auf das ICR 150 zugreift, schließt die Verarbeitung des Interrupts ab und die übrigen logischen Prozessoren 120 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-Handlers 160 weist jeden logischen Prozessor 120 an, den gerade in dem ICR 150 befindlichen Wert zu lesen und einen zweiten Wert in das ICR 150 zu schreiben. Vorausgesetzt, daß der zweite Wert von dem ersten Wert verschieden ist, sieht der erste logische Prozessor 120, der das ICR 150 liest, den ersten Wert. Alle anderen logischen Prozessoren 120 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 Prozessor 120 auf das ICR 150 zugreift. Abhängig von der Ausführungsform kann der Interrupt-Handler 170 nur durch einen Prozessor auf einmal ausführbar sein, und in diesem Fall ist der erste logische Prozessor, der den Interrupt-Handler 170 ausführt, der erste, der auf das ICR 150 zugreift.
  • Verschiedene Ausführungsformen des Mehrfachkontextprozessors 110 implementieren die logischen Prozessoren 120 auf verschiedene Weise. Bei einer Mehr kernausführungsform des Mehrfachkontextprozessors 110 entspricht jeder logische Prozessor 120 einem Ausführungskern. Eine Mehrkernausführungsform des Mehrfachkontextprozessors 110 wird in Verbindung mit 2 besprochen. Bei einer Mehrfachthreadausführungsform des Mehrfachkontextprozessors 110 entspricht jeder logische Prozessor 120 den Betriebsmitteln eines einzigen Ausführungskerns, die einem bestimmten Thread zugeteilt werden. Eine Mehrfachthreadausführungsform des Mehrfachkontextprozessors 110 wird in Verbindung mit 3 besprochen. Andere Ausführungsformen des Mehrfachkontextprozessors 110 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ührungsform 210 eines Mehrfachkontextprozessors 110. Der Mehrkernprozessor 210 stellt die Ausführungskerne 220(1)–220(n) und ihre jeweiligen Interrupt-Einheiten 230(1)–230(n) bereit, um die gleichzeitige Ausführung von bis zu n Threads zu unterstützen. Außerdem sind gemeinsam benutzte Betriebsmittel 240 gezeigt, zu denen ein Interrupt-Anspruch-Register (ICR) 250 gehört. Bei der offengelegten Ausführungsform des Mehrkernprozessors 210 greifen die Ausführungskerne 220(1)–220(n) durch einen Bus 254 auf das ICR 250 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ührungskern 220 zu einem Interrupt-Handler. Unter der Kontrolle eines ersten Teils des Interrupt-Handlers konkurrieren die Ausführungskerne 220 um den Zugriff auf das ICR 250. Der erste, der auf das ICR 250 zugreift, schließt den Interrupt-Handler ab. Die übrigen Ausführungskerne nehmen ihre unterbrochenen Threads wieder auf. Bei einer anderen Ausführungsform des Mehrkernprozessors 210 können einer oder mehrere der Ausführungskerne 220(1)–220(n) ebenfalls mehrere Threads aufweisen, und in diesem Fall versucht jeder Thread auf jedem Kern, zuerst auf das ICR 250 zuzugreifen.
  • Bei einer Ausführungsform der Erfindung bewirkt das erste Codesegment, daß jeder logische Prozessor 220 das ICR 250 liest. Wenn der logische Prozessor 220 einen ersten Wert in dem ICR 250 liest, fährt er fort, den Rest des Interrupt-Handlers auszuführen. Wenn der logische Prozessor 220 einen zweiten Wert in dem ICR 250 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 Prozessor 220 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 ICR 250 Null ist, kann der Interrupt-Handler 170 den Wert in dem ICR 250 lesen und atomisch eine Eins in das ICR 250 schreiben. Das heißt, die Lese-Modifizier-Schreiboperationen werden ausgeführt, ohne das ICR 250 einem anderen logischen Prozessor zu überlassen. Bei dieser Ausführungsform liest nur der erste logische Prozessor, der das ICR 250 erreicht, den Nullwert. Alle anderen logischen Prozessoren lesen die durch den ersten logischen Prozessor, der auf das ICR 250 zugegriffen hat, in das ICR 250 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ührungsform 310 des Mehrfachkontextprozessors 110. Der Mehrthreadprozessor 310 enthält einen Ausführungskern 304, der die gleichzeitige Verarbeitung von Anweisungen von bis zu n verschiedenen Threads ermöglicht. Der Ausführungskern 304 wird als eine Pipeline dargestellt, in der verschiedene Stufen entweder einem der n Threads (Blöcke 324(1)–324(n), 326(1)–326(n), 328(1)–328(n), 330(1)–330(n)) zugeteilt oder gemeinsam von den n Threads (Blöcke 340(a)–340(c) und ICR 350) benutzt werden. Zum Beispiel können die Blöcke 340(a), 340(b) und 340(c) einen gemeinsam benutzten Anweisungs-Cache-Speicher, eine gemeinsam benutzte Register-Umbenennungseinheit und einen gemeinsam benutzten Daten-Cache-Speicher re präsentieren. Die Blöcke 324(1)–324(n), die Blöcke 326(1)–326(n), die Blöcke 328(1)–328(n) und die Blöcke 330(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 von 3 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 Prozessor 320(1) durch zugeteilte Betriebsmittel 324(1), 326(1), 328(1) und 330(1) dargestellt, und der logische Prozessor 320(n) durch zugeteilte Betriebsmittel 324(n), 326(n), 328(n) und 330(n). Dies geschieht lediglich zur Veranschaulichung. Andere Darstellungen können Teile der gemeinsam benutzten Betriebsmittel 340(a)–340(c) enthalten, die gerade von dem entsprechenden Thread benutzt werden.
  • Die Interrupt-Einheiten 330 müssen wie andere zugeteilte Betriebsmittel in dem Prozessor 310 nicht physisch verschiedene Einheiten sein. Zum Beispiel können sie Teile einer einzigen Interrupt-Einheit darstellen, die einzelnen, auf dem Prozessor 310 ausgeführten Threads zugeteilt wird. Als Reaktion auf einen gewöhnlichen Interrupt registrieren die Interrupt-Einheiten 330(1)–330(n) den Interrupt, und bestimmen, ob er verarbeitet werden soll. Wenn der Interrupt Priorität hat, weisen die Interrupt-Einheiten 330(1)–330(n) die logischen Prozessoren 320(1)–320(n) an, eine Interrupt-Abwicklungsroutine, z.B. den Interrupt-Handler 170, auszuführen. Jeder logische Prozessor 320 führt ein erstes Codesegment der Interrupt-Abwicklungsroutine aus, das bewirkt, daß er auf das ICR 350 zugreift. Der erste logische Prozessor 320, der auf das ICR 350 zugreift, führt den Rest der Interrupt-Abwicklungsroutine aus. Die anderen logischen Prozessoren 320 kehren zu ihren unterbrochenen Threads zurück.
  • Die Konfigurationen des Mehrkernprozessors 210 und des Mehrthreadprozessors 310 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 Verfahrens 400, 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 bestimmt 420, 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 Verfahren 400 470. Wenn der Interrupt Priorität hat 420, werden bestimmte Zustandsinformationen an einem entsprechenden Punkt in dem gerade ausgeführten Thread gesichert 430 und der logische Prozessor wird zu der Interrupt-Abwicklungsroutine an einer angegebenen Adresse gelenkt 440. 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 vergleichen 460. Wenn der gelesene Wert gleich dem ersten Wert ist, fährt der logische Prozessor mit der Interrupt-Abwicklungsroutine fort 470. Wenn der gespei cherte Wert nicht gleich dem ersten Wert ist, kehrt der logische Prozessor aus dem Interrupt zurück 480.
  • 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 Verfahrens 500 gemäß der vorliegenden Erfindung zum Abwickeln von Interrupts. Das Verfahren 500 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 eingeleitet 510. Ein logischer Prozessor prüft 520 ein Bit, um zu bestimmen, ob duplizierte Interruptabwicklung freigegeben ist. Wenn sie freigegeben ist, fährt der logische Prozessor mit dem Interrupt-Handler fort 530, ungeachtet dessen, was andere logische Prozessoren durchführen. Wenn das Bit anzeigt 520, daß duplizierte Interruptabwicklung gesperrt ist, prüft 540 der logische Prozessor das ICR, um zu bestimmen, ob Eigentümerschaft des Interrupts beansprucht wurde. Wenn der Interrupt nicht beansprucht wurde 550, fährt der logische Prozessor mit dem Interrupt-Handler fort 530. Die obenbesprochenen Mechanismen zur Regelung des Zugriffs auf das ICR sind auf das Verfahren 500 anwendbar. Wenn der Interrupt beansprucht wurde 550, bestimmt 560 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ück 570 und kehrt aus dem Interrupt-Handler zurück 580, 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ück 580, ohne das ICR zurückzusetzen. Die obenbesprochenen Mechanismen des Verfahrens 400 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 Verfahren 500 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)

  1. 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.
  2. 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.
  3. Prozessor nach Anspruch 2, wobei der erste logische Prozessor den Interrupt abwickelt, wenn er das Interrupt-Anspruch-Register zuerst liest.
  4. Prozessor nach Anspruch 3, wobei der zweite logische Prozessor den Interrupt-Handler verläßt, wenn der erste logische Prozessor den Interrupt abwickelt.
  5. 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.
  6. 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.
  7. System nach Anspruch 6, wobei die Mehrzahl von Thread-Betriebsmitteln eine Mehrzahl von Ausführungskernen des Prozessors umfaßt.
  8. System nach Anspruch 6, wobei die Mehrzahl von Thread-Betriebsmitteln mehrere Betriebsmittel eines Ausführungskerns umfaßt, die mehreren Anweisungsthreads zugeordnet sind.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. System der Anspruchsvorrichtung nach Anspruch 12, wobei die Ausführungsbetriebsmittel zur Unterstützung mehrerer logischer Prozessoren mehrere Ausführungskerne umfassen.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. System nach Anspruch 17, wobei die logischen Prozessoren, die nach dem ersten logischen Prozessor auf das Interrupt-Anspruch-Register zugreifen, den Interrupt-Handler verlassen.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
DE10297166T 2001-08-31 2002-08-01 Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen Ceased DE10297166T5 (de)

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)

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

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

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