DE102004042170B4 - Nachrichtenbasierte Interrupttabelle - Google Patents

Nachrichtenbasierte Interrupttabelle Download PDF

Info

Publication number
DE102004042170B4
DE102004042170B4 DE102004042170A DE102004042170A DE102004042170B4 DE 102004042170 B4 DE102004042170 B4 DE 102004042170B4 DE 102004042170 A DE102004042170 A DE 102004042170A DE 102004042170 A DE102004042170 A DE 102004042170A DE 102004042170 B4 DE102004042170 B4 DE 102004042170B4
Authority
DE
Germany
Prior art keywords
interrupt
processor
message
computer
specific
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.)
Active
Application number
DE102004042170A
Other languages
English (en)
Other versions
DE102004042170A1 (de
Inventor
Joerg Winkler
Frank Barth
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.)
GlobalFoundries US Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to DE102004042170A priority Critical patent/DE102004042170B4/de
Priority to US11/011,511 priority patent/US7257658B2/en
Publication of DE102004042170A1 publication Critical patent/DE102004042170A1/de
Application granted granted Critical
Publication of DE102004042170B4 publication Critical patent/DE102004042170B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

Verfahren zum Bearbeiten von Interruptereignissen in einem Computersystem mit einem Systemspeicher (720) und mindestens einem Prozessor (700), wobei das Computersystem mit einem oder mehreren Geräten (770 bis 790) verbunden ist, wobei das Verfahren umfasst:
Senden (800) einer Interruptnachricht an eine Interruptsteuerung (710) des Prozessors in Reaktion auf eine Interruptanforderung von einem der Geräte, wobei die Interruptnachricht eine Speicheradresse (500) und eine Interruptstatusinformation (510) aufweist, wobei die Speicheradresse speziell dem Gerät zugeordnet ist, das die Interruptanforderung ausgegeben hat, und wobei die Interruptstatusinformation einen Interruptstatus des Geräts kennzeichnet;
Aktualisieren (810) einer in dem Systemspeicher gespeicherten Interrupttabelle (600, 730) mittels der Interruptsteuerung des Prozessors, wobei die in der Interruptnachricht enthaltene Interruptstatusinformation verwendet wird und wobei die Interrupttabelle gerätespezifische Interruptstati enthält,
wobei das Aktualisieren der Interrupttabelle umfasst:
Adressieren des Systemspeichers unter Anwendung der in der Interruptnachricht enthaltenen Speicheradresse.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen Computersysteme, Prozessoren und entsprechende Betriebsverfahren und betrifft insbesondere Techniken zur Verarbeitung von Programmunterbrechungen bzw. Interruptereignissen.
  • Beschreibung des Stands der Technik
  • Im Wesentlichen kann ein Interrupt als ein asynchrones Ereignis beschrieben werden, das die normale Verarbeitung aussetzt und zeitweilig den Steuerungsablauf durch eine "Interrupthandler-"("Interrupthandhabungs-")Routine regelt. Interruptereignisse können sowohl durch Hardware als auch durch Software ausgelöst werden. Interrupttechniken werden in den vielen bestehenden Computersystemtechnologien häufig eingesetzt.
  • In 1 sind die Hardware-Komponenten eines gängigen Computersystemaufbaus dargestellt. Es ist anzumerken, dass diese Figur lediglich einen Beispielsaufbau eines Motherboards (einer Hauptplatine) darstellt und dass ebenso andere Konfigurationen anzutreffen sind. Zu den grundlegenden Elementen, die auf der Hauptplatine auf 1 angeordnet sind, gehören die CPU (zentrale Recheneinheit) 100, eine Northbridge 105, eine Southbridge 110 und ein Systemspeicher 115.
  • Die Northbridge 105 ist für gewöhnlich ein einzelner Chip in einem Kern-Logik-Chipssatz, der den Prozessor 100 mit dem Systemspeicher 115 und z. B. mit dem AGP-("Accelerated Graphic Port": beschleunigter Graphikanschluss) Bus und dem PCI-Bus ("Peripheral Component Interface": Peripheriekomponentenschnittstelle) verbindet. Der PCI-Bus wird in Personalcomputern üblicherweise eingesetzt, um eine Datenverbindung zwischen dem Prozessor 100 und peripheren Geräten, etwa Videokarten, Audiokarten, Netzwerkschnittstellenkarten und Modem-Einrichtungen herzustellen. Der AGP-Bus ist ein Hochgeschwindigkeitsgraphikerweiterungsbus, der den Anzeigeadapter und den Systemspeicher 115 direkt miteinander verbindet. Der AGP-Bus arbeitet unabhängig von dem PCI-Bus.
  • Die Southbridge 110 ist für gewöhnlich derjenige Chip in einem System-Kernlogik-Chipsatz, der den IDE-("Integrated Drive Electronics": integrierte Laufwerkselektronik) oder EIDE-("Enhanced IDE": erweiterer IDE) Bus, den USB ("Universal Serial Bus": universeller serieller Bus), der die Unterstützung für selbsterkennende Peripheriegeräte (plug and play) bereitstellt, steuert, die PCI-ISA-("Industry Standard Architecture": Industriestandardarchitektur) Brücke steuert, die Tastatur-Maus-Steuerung verwaltet, Hilfsmittel für die Leistungsverwaltung bereitstellt und andere periphere Einrichtungen steuert.
  • In modernen Computersystemen können zwei unterschiedliche Arten von Interruptereignissen unterschieden werden; level- oder pegelsensitive Interruptereignisse (oder pegelgetriggerte Interruptereignisse) und flankengetriggerte Interruptereignisse. Allgemein gesagt, können die levelsensitiven Interruptereignisse so betrachtet werden, als ob diese eine Bedingung für ein Interruptereignisse definieren, wohingegen flankengetriggerte Interruptereignisse als ein diskretes Ereignis betrachtet werden können.
  • Standardmäßige PCI-Funktionen und Einrichtungen verwenden levelsensitive Interruptereignisse. Levelsensitive Interruptereignisse können von vielen I/O-(Eingabe/Ausgabe) Einrichtungen gemeinsam genutzt werden, was bedeutet, dass viele I/O-Geräte die gleiche Interruptleitung benutzen, obwohl im Einzelnen die Interruptereignisse von jedem Gerät diskrete Ereignisse sind. D. h., mehrere Geräte können alle die Leitung setzen und wenn ein levelsensitiver Interrupt auftritt, muss die ISR ("Interrupt Service Routine": Interruptbearbeitungsroutine) alle Geräte abfragen, die die Interruptleitung gemeinsam nutzen.
  • Flankengetriggerte Interruptereignisse werden im Vergleich zu levelsensitiven Interruptereignissen unterschiedlich behandelt, da ein einzelner flankengetriggerter Interrupt als ein einzelnes Auftreten eines Ereignisses zählt, während levelsensitive Interruptereignisse bestehende Bedingungen sind. In modernen Buskonzepten werden beispielsweise MSI-("Message Signal Interrupt": Nachrichtensignalinterrupt) Transportmechanismen verwendet, um die Anzahl der Seitenbandsignale zu verringern. Nachrichtensignalinterruptereignisse sind flankengetriggert.
  • Eine konventionelle Technik zur Handhabung von Interruptereignissen ist in dem APIC-("Advanced Programmable Interrupt Controller": fortschrittliche programmierbare Interruptsteuerung) Standard spezifiziert. Dieser wird hauptsächlich in Systemen mit mehreren Pro zessoren eingesetzt und unterstützt die Interruptumleitung und die Interruptübertragung zwischen Prozessoren.
  • Gemäß 2 besteht die APIC aus zwei Teilen auf der Systemebene. Ein Teil 250 liegt in dem I/O-Untersystem und wir als I/I-APIC bezeichnet. Der andere Teil ist die sogenannte lokale APIC 220 in dem Prozessor 200. Die lokale APIC 220 und die I/O-APIC 250 kommunizieren über einen zugeordneten APIC-Bus 240. Die I/O-APIC-Busschnittstelle ist aus zwei bidirektionalen Datensignalen und einem Taktsignal aufgebaut.
  • Die lokale APIC-Einheit 220 des Prozessor 200 beinhaltet die erforderliche Intelligenz, um zu bestimmen, ob der Prozessor 200 auf dem APIC-Bus 240 versendete Interruptereignisse akzeptieren sollte oder nicht. Die lokale APIC 220 sorgt ferner für das lokale Warteverfahren für Interruptereignisse, das Verschachteln und Maskieren von Interruptereignissen und handhabt das Zusammenspiel mit seinem lokalen Prozessor 200. Die I/O-APIC-Einheit 250 besteht aus einem Satz von Interrupteingangssignalen, einer Interruptumleitungstabelle, programmierbaren Register und einer Nachrichteneinheit zum Senden und Empfangen von APIC-Nachrichten über den APIC-Bus 240. Die I/O-APIC-Einheit 250 wählt den entsprechenden Eintrag in der Umleitungstabelle aus und verwendet diese Information in diesem Eintrag, um eine Interruptanforderungsnachricht zu formatieren. Jeder Interruptanschlusskontakt ist individuell als flankengetriggerter oder pegelgetriggerter Anschluss programmierbar.
  • 3 zeigt eine konventionelle Systemkonfiguration, in der die APIC verwendet ist. Wie aus 3 hervorgeht, ist die I/O-APIC-Einheit 330 in der Southbridgeeinrichtung 320 angeordnet.
  • Wenn eine periphere Interruptanforderung auftritt, sendet die I/O-APIC-Einheit 330 eine Interruptnachricht an den Prozessor 300. Das WSC# ("Write Snoop Complete": Schreiben-Abfragen-Beendet) Protokoll zwingt die Northbridge 130 und den Prozessor 200 dazu, alle laufenden Schreibaktivitäten kurz zu überprüfen und eine Statusanzeige für die Southbridge 320 bereitzustellen. Die Southbridge 320 (und die I/O-APIC-Einheit 330) kann nunmehr eine Nachricht an den Prozessor 300 über den Interruptbus ausgeben.
  • Eine weitere herkömmliche Lösung ist in 4 gezeigt. Wenn eine periphere Interruptanforderung auftritt, sendet die in der Southbridge 420 angeordnete PIC ("Programmable Interrupt Controller": programmierbare Interruptsteuerung) 430 auf dem INTR-Anschluss eine Interruptanforderung an den Prozessor 400. Der Prozessor 400 reagiert darauf mit einem Interruptbestätigungszyklus, der die Northbridge 410 dazu zwingt, alle laufenden Schreibaktivitäten zu beenden.
  • In den herkömmlichen Techniken besteht der allgemeine Ablauf darin, dass der Computer auf einen Interrupt so reagiert, indem die Information über den aktuellen Zustand des laufenden Programms gespeichert wird, die Information zur Identifizierung der Quelle des Interrupts gespeichert wird und eine Erste-Ebene-Interrupthandhabungsroutine aufgerufen wird. Diese Erste-Ebene-Interrupt-Handhabungsroutine kann die genaue Ursache des Interrupts aufklären (beispielsweise, wenn mehrere Geräte gemeinsam eine Interruptleitung benutzen) und ergründen, was zu tun ist, um die Betriebssystemtabellen (etwa die Prozesstabelle) auf aktuellem Stand zu halten. Die Erste-Ebene-Handhabungsroutine kann eine weitere Routine aufrufen, beispielsweise eine, die mit dem speziellen Gerät verknüpft ist, die den Interrupt erzeugt hat, d. h. einen Gerätetreiber aufrufen.
  • Jedoch erfordern nachteiligerweise die konventionellen Techniken eine zusätzliche Kommunikation, die erforderlich ist, um das Gerät zu identifizieren, das das Interruptereignis erfahren hat. D. h., die Treiber müssen eine Leseanforderung aussenden, um auf ein Register in dem Gerät zuzugreifen, und die ausgelesene Information muss an den Treiber zurückgesendet werden. Dies kann zu deutlichen Interruptwartezeiten führen. Insbesondere, wenn Interruptereignisse von mehreren Geräten gemeinsam erzeugt werden können, müssen die Treiber nacheinander so aktiviert werden, dass jeder Treiber prüfen kann, ob das Interruptereignis an einem der Geräte aufgetreten ist, das mit dem entsprechenden Treiber verknüpft ist. Auf Grund der erzeugten Interruptwartezeit kann damit die Arbeitsgeschwindigkeit des gesamten Computersystems deutlich beeinflusst werden.
  • Die US 6,647,431 B1 beschreibt ein Prozessorsubsystem in einer Mobilfunkvermittlingsstelle eines Telekommunikationsnetzwerks. Mobilfunkgeräte fordern Verbindungen an, indem I/O-Nachrichten an die Mobilfunkvermittlingsstelle gesendet werden. Eine Interrupt-Handhabungseinheit des Prozessorsubsystems empfängt Nachrichtentransportadressen (MTA) aus dem hereinkommenden I/O-Nachrichtenbytestrom. Die Interrupt- Handhabungseinheit ordnet die empfangene Nachrichtentransportadresse einer von mehreren Anrufverarbeitungsanwendungen zu, die die entsprechende Nachricht vorverarbeitet und die vorverarbeitete Nachricht an einem ausgewählten Speicherort speichert.
  • Die US 6,460,105 B1 beschreibt ein Computersystem, bei dem ein Event-Assembler Eventpakete erzeugt. Die Pakete enthalten ein Transaktionsidentifizierungsfeld (TID), das in einer Situation verwendet werden kann, in der eine Abfolge von Paketen bezüglich verschiedener Interrupts erzeugt werden kann, wobei in diesem Feld die Identifizierungskennung jedes Mal um eins erhöht wird. Das Eventpaket enthält ferner ein Opcodebyte, welches das Paket als ein Eventpaket ausweist. Das Opcodebyte ist für alle Events dasselbe.
  • Die US 5,675,807 betrifft die durch den Speicherort empfangener Interruptdaten identifizierte Interruptnachrichtenauslieferung. Ein peripheres Gerät sendet eine Interruptnachricht an den Prozessor, wobei die Interruptnachricht eine Interruptbedingung und eine Adresse enthält. Die Adresse gibt einen AVT-Eintrag an.
  • Überblick über die Erfindung
  • Der Erfindung liegt die Aufgabe zugrunde, eine verbesserte Interruptverarbeitungstechnik bereitzustellen, die die Interruptwartezeit verringern, die Arbeitsgeschwindigkeit erhöhen und die Interrupthardware-Strukturen vereinfachen kann.
  • Diese Aufgabe wird durch die in den unabhängigen Patentansprüchen definierte Erfindung gelöst.
  • Bevorzugte Ausgestaltungen sind in den Unteransprüchen angegeben.
  • In einer Ausführungsform wird ein Verfahren zum Verarbeiten von Interruptereignissen in einen Computersystem bereitgestellt, das einen Speicher und mindestens einen Prozessor aufweist. Das Computersystem ist mit einem oder mehreren Geräten verbunden. Das Verfahren umfasst das Senden einer Interruptnachricht an eine Interruptsteuerung des Prozessors in Reaktion auf eine Interruptanforderung eines einzelnen der Geräte. Die Interruptnachricht umfasst eine Speicheradresse und Interruptstatusinformation. Es wird eine Speicheradresse speziell dem Gerät zugeordnet, das die Interuptanforderung ausgegeben hat. Die Interruptstatusinformation bezeichnet einen Interruptstatus des Gerätes. Das Verfahren umfasst ferner das Aktualisieren einer Interrupttabelle, die in dem Speicher abgelegt ist, mittels der Interruptsteuerung, wobei die Interruptstatusinformation, die in der Interruptnachricht enthalten ist, verwendet wird. Die Interrupttabelle beinhaltet gerätespezifische Inter ruptstati. Das Aktualisieren der Interrupttabelle umfasst das Adressieren des Speichers unter Verwendung der Speicheradresse, die in der Interruptnachricht enthalten ist.
  • In einer weiteren Ausführungsform wird ein Computersystem bereitgestellt, das zumindest einen Prozessor und einen Speicher aufweist. Das Computersystem ist ausgebildet, mit einem oder mehreren Geräten verbunden zu sein. Der mindestens eine Prozessor umfasst eine Interruptsteuerung, die so angeschlossen ist, um eine Interruptnachricht mit einer Speicheradresse und Interruptstatusinformation zu empfangen. Die Speicheradresse ist speziell einem einzelnen der Geräte zugeordnet, das eine Interruptanforderung ausgegeben hat. Die Interruptstatusinformation kennzeichnet einen Interruptstatus des Geräts. Der Speicher speichert eine Interrupttabelle, die gerätespezifische Interruptstati beinhaltet. Die Interruptsteuerung ist ausgebildet, den Speicher unter Verwendung der Speicheradresse, die in einer empfangenen Interruptnachricht enthalten ist, anzusprechen und die Interrupttabelle unter Anwendung der in der empfangenen Interruptnachricht enthaltenen Interruptstatusinformation zu aktualisieren.
  • Gemäß einer weiteren Ausführungsform umfasst ein Prozessor eine Interruptsteuerung, die ausgebildet ist, eine eine Speicheradresse und eine Interruptstatusinformation enthaltende Interruptnachricht zu empfangen. Die Speicheradresse ist speziell einem einzelnen Gerät zugeordnet, das eine Interruptanforderung ausgegeben hat. Die Interruptstatusinformation kennzeichnet einen Interruptstatus des Geräts. Die Interruptsteuerung ist ausgebildet, einen Speicher unter Anwendung der in einer empfangenen Interruptnachricht enthaltenen Speicheradresse anzusprechen und eine Interrupttabelle unter Verwendung der in der empfangenen Interruptnachricht enthaltenen Interruptstatusinformation zu aktualisieren. Die Interrupttabelle ist in dem Speicher gespeichert und enthält gerätespezifische Interruptstati.
  • Gemäß einer noch weiteren Ausführungsform speichert ein computerlesbares Speichermedium von einem Computer ausführbare Instruktionen, die, wenn sie von einem Prozessor eines Computersystems ausgeführt werden, bewirken, dass das Computersystem eine Interrupthandhabung ausführt, indem auf einer Interrupttabelle operiert wird, die in einem Speicher des Computersystems gespeichert ist, wobei eine Interruptstatusinformation verwendet wird, die in einer Interruptnachricht enthalten ist. Die Interruptnachricht enthält ferner eine Speicheradresse, die speziell einem Gerät zugeordnet ist, das eine Interruptanforderung ausgegeben hat. Die Interruptstatusinformation bezeichnet einen Interruptstatus des Geräts. Die Interrupttabelle enthält gerätespezifische Interruptstati, die mittels der Interruptnachricht enthaltenen Speicheradresse ansprechbar sind.
  • Kurze Beschreibung der Zeichnungen
  • Die begleitenden Zeichnungen sind in der Beschreibung enthalten und stellen einen Teil davon dar, um die Prinzipien der Erfindung zu erläutern. Die Zeichnungen sollen nicht so verstanden werden, dass diese die Erfindung auf lediglich die dargestellten und beschriebenen Beispiele einschränken, wie die Erfindung praktiziert und angewendet werden kann. Weitere Merkmale und Vorteile gehen aus der folgenden detaillierten Beschreibung der Erfindung hervor, wie sie auch in den begleitenden Zeichnungen dargestellt ist, wobei:
  • 1 eine Blockansicht ist, die die Komponenten eines konventionellen Computersysstems darstellt;
  • 2 APIC-Komponenten auf Systemebene darstellt;
  • 3 eine beispielhafte Systemkonfiguration zeigt, um den Mechanismus darzustellen, der typischerweise bei Chipsätzen verwendet wird, um die aktiven Schreibpuffer zu leeren;
  • 4 eine weitere konventionelle Systemkonfiguration zeigt;
  • 5 eine Ansicht ist, die Felder in einer Interruptnachricht gemäß einer Ausführungsform zeigt;
  • 6 eine nachrichtenbasierte Interrupttabelle gemäß einer Ausführungsform zeigt;
  • 7 ein Systemebenendiagramm ist, das die Komponenten zeigt, die verwendbar sind, um die Interruptverarbeitungstechnik der Ausführungsformen anzuwenden; und
  • 8 ein Flussdiagramm ist, das einen Interruptverarbeitungsprozess gemäß einer Ausführungsform darstellt.
  • Detaillierte Beschreibung der Erfindung
  • Mit Bezug zu den Zeichnungen, in denen gleiche Elemente und Strukturen durch gleiche Bezugszeichen gekennzeichnet sind, werden nun die anschaulichen Ausführungsformen der vorliegenden Erfindung beschrieben.
  • Wie aus der folgenden detaillierteren Beschreibung hervorgeht, stellen die Ausführungsformen eine nachrichtenbasierte Interrupttabellentechnik bereit, die es ermöglicht, dass der vollständige Interruptstatus übertragen wird, so dass ein Kombinieren der Interruptinformation in der Prozessorinterruptsteuerung vermieden wird. D. h., es werden nachrichtenbasierte Interruptereignisse verwendet, um dem Prozessor Ereignisse anzuzeigen, und es werden einzelne Interruptnachrichtenadressen für jedes Gerät verwendet, so dass die Interruptnachrichtenadresse als ein Index für eine auf einem Systemspeicher basierenden Interrupttabelle verwendet werden kann.
  • Gemäß 5 ist eine Interruptnachricht gezeigt, die in den Ausführungsformen verwendet werden kann. Wie aus der Zeichnung hervorgeht, umfasst jede Interruptnachricht ein Datenfeld 500, das eine gerätespezifische Speicheradresse speichert, und ein Datenfeld 510, das einen Interruptstatusvektor enthält. Es ist anzumerken, dass es andere Datenfelder für andere Zwecke in der Nachricht geben kann. Ferner ist zu beachten, dass die gerätespezifische Speicheradresse und/oder der Interruptstatusvektor in anderen Feldern als den Datenfeldern liegen kann, beispielsweise in einem Nachrichtenvorspann, einem Nachspann oder einem anderen Nachrichtensteuerfeld.
  • Gemäß 7 wird die Interruptnachricht aus 5 von einem der peripheren Geräte 770 bis 790 zu der lokalen Interruptsteuerung 710 des Prozessors 700 gesendet. Dies kann über eine Southbridgeeinrichtung und/oder eine I/O-Interruptsteuerung 760 vonstatten gehen, die an der Southbridgeeinrichtung angeordnet ist. In einer weiteren Ausführungsform wird die Interruptnachricht aus 5 von der I/O-Interruptsteuerung 760 in Reaktion auf eine Interruptanforderung von einem einzelnen Gerät der Geräte 770 bis 790 erzeugt.
  • Wie im Folgenden detaillierter beschrieben ist, kann die gerätespezifische Speicheradresse 500, die in der in 5 gezeigten Interruptnachricht enthalten ist, verwendet werden, um den Systemspeicher 720 zu adressieren, um damit Information aus der Interrupttabelle auszulesen.
  • In 6 ist eine Ausführungsform der Interrupttabelle 600, 730 gezeigt. Wie daraus hervorgeht, wird der aktuelle Interruptstatus für jedes Gerät in Speicherfeldern 620, 640, 660 gespeichert, die mittels Adressen 610, 630, 650 ansprechbar sind, die aus dem entsprechenden Nachrichtenfeld 500 entnommen werden. In der Ausführungsform repräsentiert jeder Tabelleneintrag den eigentlichen Interruptstatus des entsprechenden Geräts. Die Tabelleneinträge 620, 640, 660 werden von der lokalen Interruptsteuerung 710 des Prozessors 700 aktualisiert, die den in einer eintreffenden Interruptnachricht enthaltenen Interruptstatusvektor 510 mit dem aktuellen Interrupttabelleneintrag für dieses Gerät kombiniert.
  • D. h., in den Ausführungsformen wird ein Hardwareprozess in der lokalen Interruptsteuerung 710 des Prozessors 700 verwendet, um eine eintreffende Interruptnachricht zu untersuchen, auf die Tabelle 600, 730 zuzugreifen und diese auszulesen und die Interrupttabelle zu aktualisieren, indem der empfangene Interruptstatusvektor 510 mit dem momentan gespeicherten Interrupttabelleneintrag 620, 640, 660 kombiniert wird.
  • Wenn die Interrupttabelle 600, 730 aktualisiert ist, wird eine Erste-Ebene-Interrupthandhabungsroutine 740, die ein Teil des Betriebssystems sein kann, aktiviert. In einer Ausführungsform aktiviert jede eintreffende Interruptnachricht eine Interrupthandhabungsroutine 740. Das Aktivieren bzw. Triggern der Interrupthandhabungsroutine 740 kann die Folge des Sendens eines Hardware-Interrupts zu dem Prozessorkern sein.
  • Die Interrupthandhabungsroutine 740 springt dann von einem Interrupttabelleneintrag zu einem anderen Interrupttabelleneintrag und meldet einen neuen Interruptstatus an die entsprechende gerätespezifische (Zweite-Ebene-)Interrupthandhabungsroutine, d. h. zu dem entsprechenden Gerätetreiber 750. D. h., da die Interrupttabelle 600, 730 aus mehreren einzelnen adressierbaren Tabellenfeldern 620, 640, 660 aufgebaut ist, wovon jedes sich auf unterschiedliche Geräte 770 bis 790 bezieht, wobei jedes Tabellenfeld mittels der in der Interruptnachricht enthaltenen Speicheradresse 500 adressiert wird und jedes Tabellenfeld 510 einen entsprechenden gerätespezifischen Interruptstatus enthält, erkennt die Interrupthandhabungsroutine 740 gerätespezifische Interruptstati, die noch nicht vollständig sind, indem jedes individuell adressierbare Tabellenfeld der Reihe nach angesprochen wird. Für jeden noch nicht vollständigen gerätespezifischen Interruptstatus identifiziert die Interrupthandhabungsroutine 740 das entsprechende Gerät 770 bis 790 sowie die entsprechen de Gerätetreiberinterrupthandhabungsroutine 750. Diese Gerätetreiberinterrupthandhabungsroutine 750 wird dann von der Interrupthandhabungsroutine 740 aufgerufen, so dass die Gerätetreiberinterrupthandhabungsroutine 750 nunmehr den entsprechenden erkannten gerätspezifischen Interruptstatus festlegen kann.
  • Die Interrupttabelle 600, 730 kann so aktualisiert werden, dass diese wiedergibt, dass einer oder mehrere zuvor nicht festgelegte gerätespezifische Interruptstati nunmehr festgelegt sind. Dies kann von der lokalen Interruptsteuerung 710 des Prozessors 700 ausgeführt werden. In anderen Ausführungsformen ist es die Erste-Ebene-Interrupthandhabungsroutine 740, die die Interrupttabelle 600, 730 aktualisiert. In einer noch weiteren Ausführungsform muss die Interrupttabelle 600, 730 nicht aktualisiert werden, da in diesen Ausführungsformen das Festlegen gerätespezifischer Interruptstati bewirkt, dass eine weitere Interruptnachricht an die lokale Interruptsteuerung 710 des Prozessors 700 gesendet wird, so dass es einen inneren Mechanismus gibt, der die Interrupttabelle 600, 730 die ganze Zeit über aktualisiert.
  • D. h, da die Interrupttabelle 600, 730 in Reaktion auf eine Interruptnachricht aktualisiert wird, die den Interruptstatusvektor 510 und eine gerätespezifische Speicheradresse 500 enthielt, besitzt die Interrupthandhabungsroutine 740 alle erforderlichen Informationen, um den korrekten Gerätetreiber 750 zu bestimmen, ohne dass eine übermäßige Kommunikationsaktivität zu den Geräten 770 bis 790 und/oder der I/O-Interruptsteuerung 760 zum Auslesen von Geräteregistern erforderlich ist. Des weiteren ist anzumerken, dass es in den Ausführungsformen nicht erforderlich ist, dass die Interrupthandhabungsroutine 740 mehr als einen Gerätetreiber 750 kontaktiert, da die Interrupthandhabungsroutine 740 bereits die vollständige Kenntnis über den aktuellen Interruptstatus und das entsprechende Gerät besitzt. Ferner ist anzumerken, dass in den Ausführungsformen die gerätespezifische Interrupthandhabungsroutine nicht das zugehörige Gerät über den Interruptstatus abfragen muss, da der Status mittels der Interruptnachricht übertragen worden ist und in der Interrupttabelle gespeichert ist.
  • In 8 ist ein Interruptverarbeitungsprozess gemäß einer Ausführungsform gezeigt. Im Schritt 800 wird eine Interruptnachricht zu der lokalen Interruptsteuerung 710 des Prozessors 700 gesendet. Die lokale Interruptsteuerung 710 aktualisiert so dann die Interrupttabelle 600, 730 im Schritt 810 und erzeugt einen Hardwareinterrupt für die Weiterleitung zu dem Prozessorkern (Schritt 820), wodurch das Senden einer Aufrufanforderung an die Erste-Ebene-Interrupthandhabungsroutine 740 in Gang gesetzt wird. Diese ruft die Softwareinterrupthandhabungsroutine 740 des Betriebssystems auf, die die Tabelle 600, 730 ausliest (Schritt 830). Die Interrupthandhabungsroutine 740 ruft dann im Schritt 840 den verantwortlichen Gerätetreiber 750 auf, und der Gerätetreiber kann dann im Schritt 850 entsprechend der ursprünglich gesendeten Interruptnachricht agieren.
  • Obwohl dies in 8 nicht gezeigt wird, so ist dennoch anzumerken, dass der in der Zeichnung gezeigte Prozess iterativ ausgeführt werden kann. D. h., sobald eine erste Interruptnachricht an die Interruptsteuerung 710 des Prozessors 700 in Reaktion auf eine Interruptanforderung von einem der Geräte 770 bis 790 gesendet ist, kann eine zweite Interruptnachricht an die Interruptsteuerung 710 des Prozessors 700 in Reaktion auf eine weitere Interruptanforderung von einem weiteren der Geräte 770 bis 790 gesendet werden. Die Interruptsteuerung 710 aktualisiert dann separat und der Reihe nach die Interrupttabelle 600, 730 und ruft die Erste-Ebene-Interrupthandhabungsroutine 740 in Reaktion auf jede einzelne Interruptnachricht auf. In einer Ausführungsform wird die gleiche Erste-Ebene-Interrupthandhabungsroutine 740 zwei mal aufgerufen, während in einer weiteren Ausführungsform mehrere Instanzen der gleichen Erste-Ebene-Interrupthandhabungsroutine 740 aufgerufen werden. In einer noch weiteren Ausführungsform ist die erste aufgerufene Interrupthandhabungsroutine 740 noch aktiv, wenn die Interruptsteuerung 710 des Prozessors 700 den zweiten Aufruf erzeugt, und die erste aufgerufene Interrupthandhabungsroutine 740 erhält dann die Zuständigkeit, auch diesen zweiten Aufruf zu handhaben.
  • In einer weiteren Ausführungsform kann der Interruptverarbeitungsprozess wie folgt gestaltet sein. Die Erste-Ebene-Interrupt-Handhabungsroutine 740 bestimmt lediglich die Nummer des aktuellen Interrupts. Auf der Grundlage dieser Nummer ruft sie dann die Gerätetreiberinterrupthandhabungsroutine des ersten Geräts 770 bis 790 auf, das den mit dieser Interruptnummer verknüpften Interrupt mit anderen Geräten gemeinsam nutzt. Die Handhabungsroutine überprüft dann, ob ihr zugeordnetes Gerät den Interrupt erzeugt hat. Danach übergibt sie an die Gerätetreiberinterrupthandhabungsroutine des nächsten Geräts 770 bis 790, die den mit dieser Interruptnummer verknüpften Interrupt mit anderen Geräten teilt. Diese Handhabungsroutine überprüft dann ebenso ihr zugehöriges Gerät. Diese Prozedur endet, wenn die Gerätetreiberinterrupthandhabungsroutinen aller Geräte 770 bis 790, die den Interrupt gemeinsam nutzen, alle ihre Geräte überprüft haben. Danach übergeben die Interrupthandhabungsroutinen die Steuerung an das Betriebssystem, die die Steuerung den Anwendungs-/Gerätetreibern überträgt.
  • D. h., diese Ausführungsform unterscheidet zwischen den Gerätetreiberinterrupthandhabungsroutine und den Anwendungs-/Gerätetreibern. Ferner werden die Gerätetreiberinterrupthandhabungsroutinen der Reihe nach aufgerufen, so dass die Erste-Ebene-Interrupthandhabungsroutine 740 die erste Gerätetreiberinterrupthandhabungsroutine aufruft, die erste Gerätetreiberinterrupthandhabungsroutine die zweite Gerätetreiberinterrupthandhabungsroutine aufruft, die zweite Gerätetreiberinterrupthandhabungsroutine die dritte Gerätetreiberinterrupthandhabungsroutine aufruft, usw. Wie zuvor beschrieben ist, kann das Aufrufen (oder das Übergeben eines Interrupts an) einer bzw. eines Gerätetreiberinterupthandhabungsroutine lediglich jene Handhabungsroutinen berücksichtigen, die den mit dieser Interruptnummer verknüpften Interrupt gemeinsam aufweisen.
  • In den diversen Ausführungsformen kann die Interruptnachricht von dem Gerät 770 bis 790 selbst sowie auch von einer southbridgegestützten Interruptsteuerung (etwa der I/O-Interruptsteuerung 760), mit der das Gerät verbunden ist, gesendet werden. Ferner kann die Interruptnachricht über einen zugeordneten Interruptnachrichtenbus oder einen nachrichtenbasierten Host-Bus (etwa Busse, die mit Hypertransport oder PCI-Express kompatibel sind) gesendet werden.
  • Es ist zu beachten, dass in den Ausführungsformen flankengetriggerte sowie levelgetriggerte Interruptereignisse verwendet werden können.
  • Obwohl in der vorhergehenden Beschreibung der diversen Ausführungsformen die Interrupthandhabungsroutine 740 als ein Teil des Betriebssystems beschrieben ist, so ist anzumerken, dass die Interrupthandhabungsroutine 740 in anderen Ausführungsformen auch als eine separate Softwareeinheit realisiert werden kann. Die Interrupthandhabungsroutine 740 kann in weiteren Ausführungsformen sogar spezielle zugeordnete Hardware-Komponenten verwenden.
  • Wie aus der vorhergehenden Beschreibung der Ausführungsform deutlich wird, wird eine Technik bereitgestellt, die es ermöglicht, die gesamte Interruptkommunikation von den peripheren Geräten in einer Interruptnachricht zu bewerkstelligen, so dass alle Interruptstatus informationen für jedes Gerät zu jeder Zeit ohne weitere Leseanforderungen an die Geräte verfügbar sind. Dies reduziert die Interruptwartezeiten deutlich, wodurch die Gesamtarbeitsgeschwindigkeit erhöht und die Interrupthardware-Strukturen vereinfacht werden.
  • Obwohl die Erfindung in Bezug auf die physikalischen Ausführungsformen beschrieben ist, die im Einklang mit der Erfindung aufgebaut sind, erkennt der Fachmann, dass diverse Modifizierungen, Variationen und Verbesserungen der vorliegenden Erfindung im Lichte der obigen technischen Lehren und innerhalb des Bereichs der angefügten Patentansprüche möglich ist, ohne von dem Grundgedanken und dem beabsichtigten Schutzbereich der Erfindung abzuweichen. Ferner wurden jene Bereiche, von denen angenommen wird, dass der Fachmann damit vertraut ist, hierin nicht beschrieben, um die hierin beschriebene Erfindung nicht unnötig zu verdunkeln. Daher ist die Erfindung nicht als durch die speziellen anschaulichen Ausführungsformen eingeschränkt zu betrachten, sondern lediglich durch den Bereich der angefügten Patentansprüche.

Claims (48)

  1. Verfahren zum Bearbeiten von Interruptereignissen in einem Computersystem mit einem Systemspeicher (720) und mindestens einem Prozessor (700), wobei das Computersystem mit einem oder mehreren Geräten (770 bis 790) verbunden ist, wobei das Verfahren umfasst: Senden (800) einer Interruptnachricht an eine Interruptsteuerung (710) des Prozessors in Reaktion auf eine Interruptanforderung von einem der Geräte, wobei die Interruptnachricht eine Speicheradresse (500) und eine Interruptstatusinformation (510) aufweist, wobei die Speicheradresse speziell dem Gerät zugeordnet ist, das die Interruptanforderung ausgegeben hat, und wobei die Interruptstatusinformation einen Interruptstatus des Geräts kennzeichnet; Aktualisieren (810) einer in dem Systemspeicher gespeicherten Interrupttabelle (600, 730) mittels der Interruptsteuerung des Prozessors, wobei die in der Interruptnachricht enthaltene Interruptstatusinformation verwendet wird und wobei die Interrupttabelle gerätespezifische Interruptstati enthält, wobei das Aktualisieren der Interrupttabelle umfasst: Adressieren des Systemspeichers unter Anwendung der in der Interruptnachricht enthaltenen Speicheradresse.
  2. Verfahren nach Anspruch 1, das ferner nach dem Aktualisieren der Interrupttabelle umfasst: Aufrufen (820) einer Interrupthandhabungsroutine (740) durch die Interruptsteuerung.
  3. Verfahren nach Anspruch 2, wobei die Interrupthandhabungsroutine ein Teil des Betriebssystems ist, das auf dem Computersystem läuft.
  4. Verfahren nach Anspruch 2, wobei das Aufrufen der Interrupthandhabungsroutine umfasst: Senden eines Hardware-Interrupts zu dem Prozessorkern, um das Aussenden einer Aufrufanforderung an die Interrupthandhabungsroutine zu initiieren.
  5. Verfahren nach Anspruch 2, das ferner umfasst: Zugreifen (830) auf die Interrupttabelle mittels der Interrupthandhabungsroutine, um gerätespezifische Interruptstati zu identifizieren, die noch nicht festgelegt sind.
  6. Verfahren nach Anspruch 5, wobei die Interrupttabelle mehrere einzeln adressierbare Datenfelder (620, 640, 660) aufweist, wovon sich jedes auf ein unterschiedliches Gerät bezieht, wobei jedes Datenfeld mittels der in der Interruptnachricht enthaltenen Speicheradresse adressiert wird, und wobei jedes Datenfeld einen entsprechenden gerätespezifischen Interruptstatus enthält, wobei die Interrupthandhabungsroutine gerätespezifische Interruptstati, die noch nicht festgelegt sind, identifiziert, indem auf jedes der mehreren der individuell adressierbaren Datenfelder sequenziell zugegriffen wird.
  7. Verfahren nach Anspruch 5, das ferner umfasst: Identifizieren des entsprechenden Geräts für jeden noch nicht festgelegten gerätespezifischen Interruptstatus.
  8. Verfahren nach Anspruch 5, das ferner umfasst: Identifizieren einer entsprechenden Gerätetreiberinterrupthandhabungsroutine (750) für jeden noch nicht festgelegten gerätespezifischen Interruptstatus.
  9. Verfahren nach Anspruch 8, das ferner umfasst: Aufrufen (840) der identifizierten Gerätetreiberinterrupthandhabungsroutine mittels der Interrupthandhabungsroutine für jeden noch nicht festgelegten gerätespezifischen Interruptstatus.
  10. Verfahren nach Anspruch 9, das ferner umfasst: Festlegen (850) des entsprechenden identifizierten gerätespezifischen Interruptstatus durch die jeweils aufgerufene Gerätetreiberinterrupthandhabungsroutine.
  11. Verfahren nach Anspruch 10, das ferner umfasst: Aktualisieren der Interrupttabelle, um darzustellen, dass einer oder mehrere der zuvor noch nicht festgelegten gerätespezifischen Interruptstati nun festgelegt ist.
  12. Verfahren nach Anspruch 11, wobei das Aktualisieren der Interrupttabelle, um darzustellen, dass ein oder mehrere zuvor noch nicht festgelegte gerätespezifische Interruptstati nunmehr festgelegt sind, mittels der Interruptsteuerung durchgeführt wird.
  13. Verfahren nach Anspruch 1, wobei die Interruptnachricht an die Interruptsteuerung des Prozessors durch das einzelne der Geräte gesendet wird.
  14. Verfahren nach Anspruch 13, wobei die Interruptnachricht mittels einer Interruptsteuerung (760) einer Southbridgeeinrichtung zu der Interruptsteuerung des Prozessors gesendet wird.
  15. Verfahren nach Anspruch 1, wobei die Interruptnachricht an die Interruptsteuerung des Prozessors mittels einer Interruptsteuerung (760) einer Southbridgeeinrichtung gesendet wird, die mit dem einzelnen der Geräte verbunden ist.
  16. Verfahren nach Anspruch 1, wobei die Interruptnachricht über einen Interruptnachrichtenbus an die Interruptsteuerung des Prozessors gesendet wird.
  17. Verfahren nach Anspruch 1, das ferner umfasst: Senden (800) einer zweiten Interruptnachricht zu der Interruptsteuerung des Prozessors in Reaktion auf eine Interruptanforderung eines weiteren Gerätes der Geräte; Aktualisieren (810) der in dem Speicher gelegten Interrupttabelle mittels der Interruptsteuerung, wobei die in der zweiten Interruptnachricht enthaltene Interruptstatusinformation verwendet wird, wobei die Interruptsteuerung des Prozessors eine Interrupthandhabungsroutine (740) in Reaktion auf jede einzelne Interruptnachricht aufruft (820).
  18. Verfahren nach Anspruch 1, wobei das eine oder die mehreren Geräte, die mit dem Computersystem verbunden sind, periphere Geräte sind.
  19. Prozessor mit einer Interruptsteuerung, die ausgebildet ist, eine Interruptnachricht mit einer Speicheradresse (500) und Interruptstatusinformation (510) zu empfangen, wobei die Speicheradresse speziell einem einzelnen Gerät zugeordnet ist, das eine Interruptanforderung ausgegeben hat, wobei die Interruptstatusinformation einen Interruptstatus des Gerätes kennzeichnet, wobei die Interruptsteuerung ausgebildet ist, einen Systemspeicher unter Verwendung der in einer empfangenen Interruptnachricht enthaltenen Speicheradresse zu adressieren und um eine Interrupttabelle (600, 730) unter Anwendung der in der empfangenen Interruptnachricht enthaltenen Interruptstatusinformation zu aktualisieren, wobei die Interrupttabelle in dem Systemspeicher abgelegt ist und gerätespezifische Interruptstati enthält.
  20. Prozessor nach Anspruch 19, wobei die Interruptsteuerung ferner ausgebildet ist, um nach dem Aktualisieren der Interrupttabelle eine Interrupthandhabungsroutine (740) aufzurufen.
  21. Prozessor nach Anspruch 20, wobei die Interrupthandhabungsroutine ein Teil eines Betriebssystems ist.
  22. Prozessor nach Anspruch 20, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine durch Senden eines Hardware-Interrupts zu dem Prozessorkern aufzurufen, um das Aussenden einer Aufrufanforderung an die Interrupthandhabungsroutine zu initiieren.
  23. Prozessor nach Anspruch 20, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, auf die Interrupttabelle zuzugreifen, um gerätespezifische Interruptstati, die noch nicht festgelegt sind, zu erkennen.
  24. Prozessor nach Anspruch 23, wobei die Interrupttabelle mehrere einzeln adressierbare Datenfelder (620, 640, 660) aufweist, wovon jedes sich auf ein unterschiedliches Gerät bezieht, wobei jedes Datenfeld mittels der in der Interruptnachricht enthaltenen Speicheradresse aufrufbar ist und wobei jedes Datenfeld einen entsprechenden gerätespezifischen Interruptstatus enthält, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, gerätespezifische Interruptstati, die noch nicht festgelegt sind, zu er kennen, indem jedes einzelne der mehreren einzeln adressierbaren Datenfelder abgefragt wird.
  25. Prozessor nach Anspruch 23, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, ein entsprechendes Gerät für jeden noch nicht festgelegten gerätespezifischen Interruptstatus zu erkennen.
  26. Prozessor nach Anspruch 23, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, eine entsprechende Gerätetreiberinterrupthandhabungsroutine (750) für jeden noch nicht festgelegten gerätespezifischen Interruptstatus zu erkennen.
  27. Prozessor nach Anspruch 26, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, die erkannte Gerätetreiberinterrupthandhabungsroutine für jeden noch nicht festgelegten gerätespezifischen Interruptstatus aufzurufen.
  28. Prozessor nach Anspruch 27, wobei die Interruptsteuerung ausgebildet ist, die Interrupthandhabungsroutine zu veranlassen, jede Gerätetreiberinterrupthandhabungsroutine aufzurufen, um den entsprechenden erkannten gerätespezifischen Interruptstatus festzustellen.
  29. Prozessor nach Anspruch 28, wobei die Interruptsteuerung ausgebildet ist, die Interrupttabelle so zu aktualisieren, dass diese darstellt, dass ein oder mehrere zuvor noch nicht festgelegte gerätespezifische Interruptstati nunmehr festgestellt sind.
  30. Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interrptnachricht von einem einzelnen Gerät von mehreren Geräten zu empfangen.
  31. Prozessor nach Anspruch 20, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interruptnachricht durch eine Interrptsteuerung (760) einer Southbridgeeinrichtung zu empfangen.
  32. Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interruptnachricht von einer Interruptsteuerung (760) einer Southbridgeeinrichtung des Computersystems zu empfangen.
  33. Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, mit einem Interruptnachrichtenbus verbunden zu werden, um die Interruptnachricht zu empfangen.
  34. Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ferner ausgebildet ist, eine zweite Interruptnachricht mit einer Speicheradresse, die speziell einem weiteren Gerät zugeordnet ist, zu empfangen und um die Interrupttabelle unter Anwendung der in der zweiten Interruptnachricht enthaltenen Interruptstatusinformation zu aktualisieren, wobei die Interruptsteuerung des Prozessors ferner ausgebildet ist, eine Interrupthandhabungsroutine (740) in Reaktion auf jede einzelne Interruptnachricht aufzurufen.
  35. Prozessor nach Anspruch 19, wobei das Gerät ein peripheres Gerät ist.
  36. Computersystem umfassend: einen Prozessor nach einem der Ansprüche 19 bis 35; und einen Systemspeicher (720).
  37. Computerlesbares Speichermedium, das von einem Computer ausführbare Instruktionen enthält, die, wenn sie von einen Prozessor eines Computersystems ausgeführt werden, das Computersystem veranlassen, eine Interrupthandhabung auszuführen, indem eine Interrupttabelle (600, 730), die in einem Systemspeicher des Computersystems abgelegt ist, unter Anwendung einer Statusinformation (510), die in einer Interruptnachricht enthalten ist, zu betreiben, wobei die Interruptnachricht ferner eine Speicheradresse (500) aufweist, die speziell einem Gerät zugeordnet ist, das eine Interruptanforderung ausgegeben hat, wobei die Interruptstatusinformation einen Interruptstatus des Geräts kennzeichnet und wobei die Interrupttabelle gerätespezifische Interruptstati enthält, die mittels der in der Interruptnachricht enthaltenen Speicheradresse abfragbar sind.
  38. Computerlesbares Speichermedium nach Anspruch 37, das ferner computerausführbare Instruktionen enthält, die das Computersystem veranlassen, eine Interrupthandhabungsroutine (740) abzuarbeiten.
  39. Computerlesbares Speichermedium nach Anspruch 38, wobei die Interrupthandhabungsroutine ein Teil des Betriebssystems ist, das auf dem Computersystem läuft.
  40. Computerlesbares Speichermedium nach Anspruch 38, das computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, eine Aufrufanforderung von dem Prozessor zu empfangen.
  41. Computerlesbares Speichermedium nach Anspruch 38, das ferner computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, auf die Interrupttabelle zuzugreifen, um gerätespezifische Interruptstati zu erkennen, die noch nicht festgestellt sind.
  42. Computerlesbares Speichermedium nach Anspruch 41, wobei die Interrupttabelle mehrere einzeln adressierbare Datenfelder (620, 640, 660) aufweist, wovon jedes sich auf ein unterschiedliches Gerät bezieht, wobei jedes Datenfeld mittels der in der Interruptnachricht enthaltenen Speicheradresse adressierbar ist und wobei jedes Datenfeld einen entsprechenden gerätespezifischen Interruptstatus enthält, wobei das Medium ferner computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, gerätespezifische Interruptstati, die noch nicht festgelegt sind, zu erkennen, indem sequenziell jedes einzelne der mehreren einzeln adressierbaren Datenfelder abgefragt wird.
  43. Computerlesbares Speichermedium nach Anspruch 41, das ferner computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, ein entsprechendes Gerät für jeden noch nicht festgelegten gerätespezifischen Interruptstatus zu erkennen.
  44. Computerlesbares Speichermedium nach Anspruch 41, das ferner computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, eine entsprechende Gerätetreiberhandhabungsroutine (750) für jeden noch nicht festgelegten gerätespezifischen Interruptstatus zu erkennen.
  45. Computerlesbares Speichermedium nach Anspruch 44, das ferner computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, die erkannte Gerätetreiberinterrupthandhabungsroutine für jeden noch nicht festgelegten gerätesspezifischen Interruptstatus aufzurufen.
  46. Computerlesbares Speichermedium nach Anspruch 45, das ferner computerausführbare Instruktionen enthält, um jede aufgerufene Gerätetreiberinterrupthandhabungsroutine zu veranlassen, den entsprechenden erkannten gerätespezifischen Interruptstatus festzustellen (850).
  47. Computerlesbares Speichermedium nach Anspruch 46, das ferner computerausführbare Instruktionen enthält, um die Interrupttabelle so zu aktualisieren, dass diese darstellt, dass ein oder mehrere zuvor noch nicht festgelegte gerätespezifische Interruptstati nunmehr festgestellt sind.
  48. Computerlesbares Speichermedium nach Anspruch 37, das ferner computerausführbare Instruktionen enthält, um das Computersystem zu veranlassen, eine Interruptabarbeitung unter Anwendung von in einer zweiten Interruptnacht enthaltenen Interruptstatusinformation auszuführen, wobei eine Interrupthandhabungsroutine (740) in Reaktion auf jede einzelne Interruptnachricht aufgerufen wird.
DE102004042170A 2004-08-31 2004-08-31 Nachrichtenbasierte Interrupttabelle Active DE102004042170B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102004042170A DE102004042170B4 (de) 2004-08-31 2004-08-31 Nachrichtenbasierte Interrupttabelle
US11/011,511 US7257658B2 (en) 2004-08-31 2004-12-14 Message based interrupt table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102004042170A DE102004042170B4 (de) 2004-08-31 2004-08-31 Nachrichtenbasierte Interrupttabelle

Publications (2)

Publication Number Publication Date
DE102004042170A1 DE102004042170A1 (de) 2006-03-09
DE102004042170B4 true DE102004042170B4 (de) 2009-02-19

Family

ID=35852413

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004042170A Active DE102004042170B4 (de) 2004-08-31 2004-08-31 Nachrichtenbasierte Interrupttabelle

Country Status (2)

Country Link
US (1) US7257658B2 (de)
DE (1) DE102004042170B4 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242806A (ja) * 2004-02-27 2005-09-08 Renesas Technology Corp データ処理装置
US20060294277A1 (en) * 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
US7565471B2 (en) * 2005-09-16 2009-07-21 Emulex Design & Manufacturing Corporation Message signaled interrupt extended (MSI-X) auto clear and failsafe lock
US7689748B2 (en) * 2006-05-05 2010-03-30 Ati Technologies, Inc. Event handler for context-switchable and non-context-switchable processing tasks
US7743195B2 (en) * 2006-12-27 2010-06-22 Intel Corporation Interrupt mailbox in host memory
US7805556B2 (en) * 2007-05-01 2010-09-28 Ricoh Company, Ltd. Interrupt control apparatus, bus bridge, bus switch, image processing apparatus, and interrupt control method
US7783811B2 (en) * 2007-12-17 2010-08-24 Microsoft Corporation Efficient interrupt message definition
US7725637B2 (en) * 2007-12-31 2010-05-25 Intel Corporation Methods and apparatus for generating system management interrupts
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
JP5320140B2 (ja) 2009-04-14 2013-10-23 株式会社日立製作所 計算機システム、割込み中継回路及び割込み中継方法
JP2011076584A (ja) * 2009-09-02 2011-04-14 Renesas Electronics Corp 半導体集積回路装置
US8364877B2 (en) * 2009-12-16 2013-01-29 Cisco Technology, Inc. Implementing gang interrupts
US20120179847A1 (en) * 2011-01-12 2012-07-12 Standard Microsystems Corporation Method and System for Implementing Bus Operations with Precise Timing
US20120226842A1 (en) * 2011-03-02 2012-09-06 Research In Motion Limited, an Ontario, Canada corporation Enhanced prioritising and unifying interrupt controller
WO2013109233A2 (en) * 2011-11-03 2013-07-25 Intel Corporation Method to emulate message signaled interrupts with interrupt data
US9384154B2 (en) 2011-11-03 2016-07-05 Intel Corporation Method to emulate message signaled interrupts with multiple interrupt vectors
WO2013109234A2 (en) * 2011-11-03 2013-07-25 Intel Corporation Method to accelerate message signaled interrupt processing
US8793423B2 (en) 2012-03-28 2014-07-29 Advanced Micro Devices, Inc. Servicing interrupt requests in a computer system
CN102662889B (zh) * 2012-04-24 2016-12-14 华为技术有限公司 中断处理方法、中断控制器及处理器
US8996774B2 (en) 2012-06-27 2015-03-31 Intel Corporation Performing emulated message signaled interrupt handling
JP6106986B2 (ja) * 2012-08-14 2017-04-05 富士通株式会社 演算処理装置、情報処理装置及び割込制御方法
US9152588B2 (en) 2012-10-16 2015-10-06 Apple Inc. Race-free level-sensitive interrupt delivery using fabric delivered interrupts
US9009377B2 (en) * 2012-11-01 2015-04-14 Apple Inc. Edge-triggered interrupt conversion in a system employing level-sensitive interrupts
US9311243B2 (en) * 2012-11-30 2016-04-12 Intel Corporation Emulated message signaled interrupts in multiprocessor systems
US9672173B2 (en) * 2015-02-26 2017-06-06 Red Hat Israel, Ltd. Shared PCI interrupt line management
US10565004B2 (en) 2016-02-04 2020-02-18 Hewlett Packard Enterprise Development Lp Interrupt and message generation independent of status register content
US10089264B2 (en) * 2016-05-13 2018-10-02 Intel Corporation Callback interrupt handling for multi-threaded applications in computing environments

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0775959A2 (de) * 1995-11-27 1997-05-28 Digital Equipment Corporation Verfahren und Gerät zur Optimierung von gemeinsamen PCI-Unterbrechungen und entsprechender Latenz in den PCI-Bussen mit Erweiterung oder Brücke
US5675807A (en) * 1992-12-17 1997-10-07 Tandem Computers Incorporated Interrupt message delivery identified by storage location of received interrupt data
US20010032287A1 (en) * 2000-04-05 2001-10-18 Jiin Lai Processing method, chip set and controller for supporting message signaled interrupt
US6460105B1 (en) * 1998-04-29 2002-10-01 Stmicroelectronics Limited Method and system for transmitting interrupts from a peripheral device to another device in a computer system
US6647431B1 (en) * 1997-12-31 2003-11-11 Nortel Networks Limited Method and apparatus for handling I/O messages

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555430A (en) * 1994-05-31 1996-09-10 Advanced Micro Devices Interrupt control architecture for symmetrical multiprocessing system
US5848279A (en) * 1996-12-27 1998-12-08 Intel Corporation Mechanism for delivering interrupt messages
US6192442B1 (en) * 1998-04-29 2001-02-20 Intel Corporation Interrupt controller
US6301630B1 (en) * 1998-12-10 2001-10-09 International Business Machines Corporation Interrupt response in a multiple set buffer pool bus bridge
US6295573B1 (en) * 1999-02-16 2001-09-25 Advanced Micro Devices, Inc. Point-to-point interrupt messaging within a multiprocessing computer system
US6629179B1 (en) * 2000-07-31 2003-09-30 Adaptec, Inc. Message signaled interrupt generating device and method
US6918022B2 (en) * 2001-02-28 2005-07-12 Intel Corporation Memory space organization
US7197588B2 (en) * 2004-03-31 2007-03-27 Intel Corporation Interrupt scheme for an Input/Output device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675807A (en) * 1992-12-17 1997-10-07 Tandem Computers Incorporated Interrupt message delivery identified by storage location of received interrupt data
EP0775959A2 (de) * 1995-11-27 1997-05-28 Digital Equipment Corporation Verfahren und Gerät zur Optimierung von gemeinsamen PCI-Unterbrechungen und entsprechender Latenz in den PCI-Bussen mit Erweiterung oder Brücke
US6647431B1 (en) * 1997-12-31 2003-11-11 Nortel Networks Limited Method and apparatus for handling I/O messages
US6460105B1 (en) * 1998-04-29 2002-10-01 Stmicroelectronics Limited Method and system for transmitting interrupts from a peripheral device to another device in a computer system
US20010032287A1 (en) * 2000-04-05 2001-10-18 Jiin Lai Processing method, chip set and controller for supporting message signaled interrupt

Also Published As

Publication number Publication date
US20060047877A1 (en) 2006-03-02
US7257658B2 (en) 2007-08-14
DE102004042170A1 (de) 2006-03-09

Similar Documents

Publication Publication Date Title
DE102004042170B4 (de) Nachrichtenbasierte Interrupttabelle
DE69825623T2 (de) Mechanismen zum umwandeln von unterbrechungsanfragesignalen auf addressen und datenleitungen zur generierung von interruptsignalen
DE69031547T2 (de) Befehlsausgabe für ein Rechnersystem
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE69630126T2 (de) Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet
DE69822221T2 (de) Umleitung von interruptzielen unterstützende transaktionen sowie niveauabhängigeinterruptsemantik
DE102009043411B4 (de) Bereitstellen eines Zurückstellungsmechanismus für "gepostete" Interrupt-Transaktionen
DE3751091T2 (de) Übertragungsprotokoll zwischen Prozessoren.
DE69833503T2 (de) Mechanismus der unterbrechung von bestimmungsortredirektion ausführt
DE19733151B4 (de) Vorrichtung und Verfahren für einen virtuellen Gerätezugriff in einem Computersystem
DE102009061252B3 (de) Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102012209016A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE102012209009B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE3855300T2 (de) Schnittstellenschaltung zur Datenübertragung zwischen Prozessor und Ein-/Ausgabevorrichtung
DE4313190B4 (de) Vorrichtung und Verfahren zur Initialisierung einer Datenschnittstelle für eine programmierbare Steuerung
DE69726302T2 (de) Busschnittstellensteuerungsschaltung
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE60122085T2 (de) Datenverarbeitungsgerät für serielles Kommunikationssystem
DE10234992A1 (de) Retry-Mechanismus für blockierende Schnittstellen
DE102009050983A1 (de) Eine Technik, um Interrupts in einem Computersystem zu kommunizieren
DE102004052412A1 (de) Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES U.S. INC., SANTA CLARA, US

Free format text: FORMER OWNER: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009400000

Ipc: G06F0013240000