DE102004042170B4 - Nachrichtenbasierte Interrupttabelle - Google Patents
Nachrichtenbasierte Interrupttabelle Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling 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.
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 auf1 angeordnet sind, gehören die CPU (zentrale Recheneinheit)100 , eine Northbridge105 , eine Southbridge110 und ein Systemspeicher115 . - Die Northbridge
105 ist für gewöhnlich ein einzelner Chip in einem Kern-Logik-Chipssatz, der den Prozessor100 mit dem Systemspeicher115 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 Prozessor100 und peripheren Geräten, etwa Videokarten, Audiokarten, Netzwerkschnittstellenkarten und Modem-Einrichtungen herzustellen. Der AGP-Bus ist ein Hochgeschwindigkeitsgraphikerweiterungsbus, der den Anzeigeadapter und den Systemspeicher115 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 Teil250 liegt in dem I/O-Untersystem und wir als I/I-APIC bezeichnet. Der andere Teil ist die sogenannte lokale APIC220 in dem Prozessor200 . Die lokale APIC220 und die I/O-APIC250 kommunizieren über einen zugeordneten APIC-Bus240 . Die I/O-APIC-Busschnittstelle ist aus zwei bidirektionalen Datensignalen und einem Taktsignal aufgebaut. - Die lokale APIC-Einheit
220 des Prozessor200 beinhaltet die erforderliche Intelligenz, um zu bestimmen, ob der Prozessor200 auf dem APIC-Bus240 versendete Interruptereignisse akzeptieren sollte oder nicht. Die lokale APIC220 sorgt ferner für das lokale Warteverfahren für Interruptereignisse, das Verschachteln und Maskieren von Interruptereignissen und handhabt das Zusammenspiel mit seinem lokalen Prozessor200 . Die I/O-APIC-Einheit250 besteht aus einem Satz von Interrupteingangssignalen, einer Interruptumleitungstabelle, programmierbaren Register und einer Nachrichteneinheit zum Senden und Empfangen von APIC-Nachrichten über den APIC-Bus240 . Die I/O-APIC-Einheit250 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 aus3 hervorgeht, ist die I/O-APIC-Einheit330 in der Southbridgeeinrichtung320 angeordnet. - Wenn eine periphere Interruptanforderung auftritt, sendet die I/O-APIC-Einheit
330 eine Interruptnachricht an den Prozessor300 . Das WSC# ("Write Snoop Complete": Schreiben-Abfragen-Beendet) Protokoll zwingt die Northbridge130 und den Prozessor200 dazu, alle laufenden Schreibaktivitäten kurz zu überprüfen und eine Statusanzeige für die Southbridge320 bereitzustellen. Die Southbridge320 (und die I/O-APIC-Einheit330 ) kann nunmehr eine Nachricht an den Prozessor300 über den Interruptbus ausgeben. - Eine weitere herkömmliche Lösung ist in
4 gezeigt. Wenn eine periphere Interruptanforderung auftritt, sendet die in der Southbridge420 angeordnete PIC ("Programmable Interrupt Controller": programmierbare Interruptsteuerung)430 auf dem INTR-Anschluss eine Interruptanforderung an den Prozessor400 . Der Prozessor400 reagiert darauf mit einem Interruptbestätigungszyklus, der die Northbridge410 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 Datenfeld500 , das eine gerätespezifische Speicheradresse speichert, und ein Datenfeld510 , 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 aus5 von einem der peripheren Geräte770 bis790 zu der lokalen Interruptsteuerung710 des Prozessors700 gesendet. Dies kann über eine Southbridgeeinrichtung und/oder eine I/O-Interruptsteuerung760 vonstatten gehen, die an der Southbridgeeinrichtung angeordnet ist. In einer weiteren Ausführungsform wird die Interruptnachricht aus5 von der I/O-Interruptsteuerung760 in Reaktion auf eine Interruptanforderung von einem einzelnen Gerät der Geräte770 bis790 erzeugt. - Wie im Folgenden detaillierter beschrieben ist, kann die gerätespezifische Speicheradresse
500 , die in der in5 gezeigten Interruptnachricht enthalten ist, verwendet werden, um den Systemspeicher720 zu adressieren, um damit Information aus der Interrupttabelle auszulesen. - In
6 ist eine Ausführungsform der Interrupttabelle600 ,730 gezeigt. Wie daraus hervorgeht, wird der aktuelle Interruptstatus für jedes Gerät in Speicherfeldern620 ,640 ,660 gespeichert, die mittels Adressen610 ,630 ,650 ansprechbar sind, die aus dem entsprechenden Nachrichtenfeld500 entnommen werden. In der Ausführungsform repräsentiert jeder Tabelleneintrag den eigentlichen Interruptstatus des entsprechenden Geräts. Die Tabelleneinträge620 ,640 ,660 werden von der lokalen Interruptsteuerung710 des Prozessors700 aktualisiert, die den in einer eintreffenden Interruptnachricht enthaltenen Interruptstatusvektor510 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 Prozessors700 verwendet, um eine eintreffende Interruptnachricht zu untersuchen, auf die Tabelle600 ,730 zuzugreifen und diese auszulesen und die Interrupttabelle zu aktualisieren, indem der empfangene Interruptstatusvektor510 mit dem momentan gespeicherten Interrupttabelleneintrag620 ,640 ,660 kombiniert wird. - Wenn die Interrupttabelle
600 ,730 aktualisiert ist, wird eine Erste-Ebene-Interrupthandhabungsroutine740 , die ein Teil des Betriebssystems sein kann, aktiviert. In einer Ausführungsform aktiviert jede eintreffende Interruptnachricht eine Interrupthandhabungsroutine740 . Das Aktivieren bzw. Triggern der Interrupthandhabungsroutine740 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ätetreiber750 . D. h., da die Interrupttabelle600 ,730 aus mehreren einzelnen adressierbaren Tabellenfeldern620 ,640 ,660 aufgebaut ist, wovon jedes sich auf unterschiedliche Geräte770 bis790 bezieht, wobei jedes Tabellenfeld mittels der in der Interruptnachricht enthaltenen Speicheradresse500 adressiert wird und jedes Tabellenfeld510 einen entsprechenden gerätespezifischen Interruptstatus enthält, erkennt die Interrupthandhabungsroutine740 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 Interrupthandhabungsroutine740 das entsprechende Gerät770 bis790 sowie die entsprechen de Gerätetreiberinterrupthandhabungsroutine750 . Diese Gerätetreiberinterrupthandhabungsroutine750 wird dann von der Interrupthandhabungsroutine740 aufgerufen, so dass die Gerätetreiberinterrupthandhabungsroutine750 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 Interruptsteuerung710 des Prozessors700 ausgeführt werden. In anderen Ausführungsformen ist es die Erste-Ebene-Interrupthandhabungsroutine740 , die die Interrupttabelle600 ,730 aktualisiert. In einer noch weiteren Ausführungsform muss die Interrupttabelle600 ,730 nicht aktualisiert werden, da in diesen Ausführungsformen das Festlegen gerätespezifischer Interruptstati bewirkt, dass eine weitere Interruptnachricht an die lokale Interruptsteuerung710 des Prozessors700 gesendet wird, so dass es einen inneren Mechanismus gibt, der die Interrupttabelle600 ,730 die ganze Zeit über aktualisiert. - D. h, da die Interrupttabelle
600 ,730 in Reaktion auf eine Interruptnachricht aktualisiert wird, die den Interruptstatusvektor510 und eine gerätespezifische Speicheradresse500 enthielt, besitzt die Interrupthandhabungsroutine740 alle erforderlichen Informationen, um den korrekten Gerätetreiber750 zu bestimmen, ohne dass eine übermäßige Kommunikationsaktivität zu den Geräten770 bis790 und/oder der I/O-Interruptsteuerung760 zum Auslesen von Geräteregistern erforderlich ist. Des weiteren ist anzumerken, dass es in den Ausführungsformen nicht erforderlich ist, dass die Interrupthandhabungsroutine740 mehr als einen Gerätetreiber750 kontaktiert, da die Interrupthandhabungsroutine740 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 Schritt800 wird eine Interruptnachricht zu der lokalen Interruptsteuerung710 des Prozessors700 gesendet. Die lokale Interruptsteuerung710 aktualisiert so dann die Interrupttabelle600 ,730 im Schritt810 und erzeugt einen Hardwareinterrupt für die Weiterleitung zu dem Prozessorkern (Schritt820 ), wodurch das Senden einer Aufrufanforderung an die Erste-Ebene-Interrupthandhabungsroutine740 in Gang gesetzt wird. Diese ruft die Softwareinterrupthandhabungsroutine740 des Betriebssystems auf, die die Tabelle600 ,730 ausliest (Schritt830 ). Die Interrupthandhabungsroutine740 ruft dann im Schritt840 den verantwortlichen Gerätetreiber750 auf, und der Gerätetreiber kann dann im Schritt850 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 Interruptsteuerung710 des Prozessors700 in Reaktion auf eine Interruptanforderung von einem der Geräte770 bis790 gesendet ist, kann eine zweite Interruptnachricht an die Interruptsteuerung710 des Prozessors700 in Reaktion auf eine weitere Interruptanforderung von einem weiteren der Geräte770 bis790 gesendet werden. Die Interruptsteuerung710 aktualisiert dann separat und der Reihe nach die Interrupttabelle600 ,730 und ruft die Erste-Ebene-Interrupthandhabungsroutine740 in Reaktion auf jede einzelne Interruptnachricht auf. In einer Ausführungsform wird die gleiche Erste-Ebene-Interrupthandhabungsroutine740 zwei mal aufgerufen, während in einer weiteren Ausführungsform mehrere Instanzen der gleichen Erste-Ebene-Interrupthandhabungsroutine740 aufgerufen werden. In einer noch weiteren Ausführungsform ist die erste aufgerufene Interrupthandhabungsroutine740 noch aktiv, wenn die Interruptsteuerung710 des Prozessors700 den zweiten Aufruf erzeugt, und die erste aufgerufene Interrupthandhabungsroutine740 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äts770 bis790 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äts770 bis790 , 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äte770 bis790 , 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 bis790 selbst sowie auch von einer southbridgegestützten Interruptsteuerung (etwa der I/O-Interruptsteuerung760 ), 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 Interrupthandhabungsroutine740 in anderen Ausführungsformen auch als eine separate Softwareeinheit realisiert werden kann. Die Interrupthandhabungsroutine740 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)
- 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 bis790 ) 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. - Verfahren nach Anspruch 1, das ferner nach dem Aktualisieren der Interrupttabelle umfasst: Aufrufen (
820 ) einer Interrupthandhabungsroutine (740 ) durch die Interruptsteuerung. - Verfahren nach Anspruch 2, wobei die Interrupthandhabungsroutine ein Teil des Betriebssystems ist, das auf dem Computersystem läuft.
- 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.
- 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. - 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. - Verfahren nach Anspruch 5, das ferner umfasst: Identifizieren des entsprechenden Geräts für jeden noch nicht festgelegten gerätespezifischen Interruptstatus.
- Verfahren nach Anspruch 5, das ferner umfasst: Identifizieren einer entsprechenden Gerätetreiberinterrupthandhabungsroutine (
750 ) für jeden noch nicht festgelegten gerätespezifischen Interruptstatus. - 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. - Verfahren nach Anspruch 9, das ferner umfasst: Festlegen (
850 ) des entsprechenden identifizierten gerätespezifischen Interruptstatus durch die jeweils aufgerufene Gerätetreiberinterrupthandhabungsroutine. - 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.
- 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.
- Verfahren nach Anspruch 1, wobei die Interruptnachricht an die Interruptsteuerung des Prozessors durch das einzelne der Geräte gesendet wird.
- Verfahren nach Anspruch 13, wobei die Interruptnachricht mittels einer Interruptsteuerung (
760 ) einer Southbridgeeinrichtung zu der Interruptsteuerung des Prozessors gesendet wird. - 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. - Verfahren nach Anspruch 1, wobei die Interruptnachricht über einen Interruptnachrichtenbus an die Interruptsteuerung des Prozessors gesendet wird.
- 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 ). - Verfahren nach Anspruch 1, wobei das eine oder die mehreren Geräte, die mit dem Computersystem verbunden sind, periphere Geräte sind.
- 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. - Prozessor nach Anspruch 19, wobei die Interruptsteuerung ferner ausgebildet ist, um nach dem Aktualisieren der Interrupttabelle eine Interrupthandhabungsroutine (
740 ) aufzurufen. - Prozessor nach Anspruch 20, wobei die Interrupthandhabungsroutine ein Teil eines Betriebssystems ist.
- 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.
- 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.
- 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. - 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.
- 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. - 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.
- 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.
- 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.
- Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interrptnachricht von einem einzelnen Gerät von mehreren Geräten zu empfangen.
- Prozessor nach Anspruch 20, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interruptnachricht durch eine Interrptsteuerung (
760 ) einer Southbridgeeinrichtung zu empfangen. - Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, die Interruptnachricht von einer Interruptsteuerung (
760 ) einer Southbridgeeinrichtung des Computersystems zu empfangen. - Prozessor nach Anspruch 19, wobei die Interruptsteuerung des Prozessors ausgebildet ist, mit einem Interruptnachrichtenbus verbunden zu werden, um die Interruptnachricht zu empfangen.
- 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. - Prozessor nach Anspruch 19, wobei das Gerät ein peripheres Gerät ist.
- Computersystem umfassend: einen Prozessor nach einem der Ansprüche 19 bis 35; und einen Systemspeicher (
720 ). - 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. - Computerlesbares Speichermedium nach Anspruch 37, das ferner computerausführbare Instruktionen enthält, die das Computersystem veranlassen, eine Interrupthandhabungsroutine (
740 ) abzuarbeiten. - Computerlesbares Speichermedium nach Anspruch 38, wobei die Interrupthandhabungsroutine ein Teil des Betriebssystems ist, das auf dem Computersystem läuft.
- Computerlesbares Speichermedium nach Anspruch 38, das computerausführbare Instruktionen enthält, um die Interrupthandhabungsroutine zu veranlassen, eine Aufrufanforderung von dem Prozessor zu empfangen.
- 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.
- 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. - 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.
- 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. - 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.
- 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 ). - 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.
- 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.
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)
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)
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)
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 |
-
2004
- 2004-08-31 DE DE102004042170A patent/DE102004042170B4/de active Active
- 2004-12-14 US US11/011,511 patent/US7257658B2/en not_active Expired - Fee Related
Patent Citations (5)
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 |