DE69839194T2 - Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff - Google Patents

Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff Download PDF

Info

Publication number
DE69839194T2
DE69839194T2 DE69839194T DE69839194T DE69839194T2 DE 69839194 T2 DE69839194 T2 DE 69839194T2 DE 69839194 T DE69839194 T DE 69839194T DE 69839194 T DE69839194 T DE 69839194T DE 69839194 T2 DE69839194 T2 DE 69839194T2
Authority
DE
Germany
Prior art keywords
interrupt
register
vector
maskable
priority
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.)
Expired - Lifetime
Application number
DE69839194T
Other languages
English (en)
Other versions
DE69839194D1 (de
Inventor
Muthurajan Sunnyvale JAYAKUMAR
Vijay Kumar San Jose GORU
Ravi San Jose EAKAMBARAM
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE69839194D1 publication Critical patent/DE69839194D1/de
Publication of DE69839194T2 publication Critical patent/DE69839194T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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)

Description

  • Die vorliegende Erfindung betrifft im Allgemeinen Computer. Im Besonderen betrifft sie Unterbrechungssteuereinheiten zur Steuerung von Unterbrechungen in einem Computer.
  • Ein Computer ist eine Maschine bzw. ein Gerät, die bzw. das im Wesentlichen drei Dinge bzw. Aufgaben erledigt. Erstens nimmt er Eingaben entgegen. Zweitens verarbeitet er die Eingaben gemäß einer vorgeschriebenen Reihe von Regeln. Drittens erzeugt er als Ausgabe die Ergebnisse der Verarbeitung der Eingabe gemäß der vorgeschriebenen Reihe von Regeln.
  • Für die Ausführung dieser Aufgaben weist ein Computer im Allgemeinen folgendes auf: eine Eingabevorrichtung, wie etwa eine Tastatur, die Eingaben empfängt bzw. entgegennimmt; eine Ausgabevorrichtung, wie zum Beispiel einen Drucker oder eine Videoanzeige, welche die Ergebnisse ausgibt; und einen Prozessor, wie etwa eine Zentraleinheit (CPU), welche die Verarbeitung ausführt. Bei den Personalcomputern der Gegenwart kann es sich bei der CPU um einen Mikroprozessor handeln. Darüber hinaus kann der Computer einen Speicher aufweisen. Ein derartiger Speicher kann durch den Prozessor zum Speichern von Daten eingesetzt werden. Der Speicher kann aber auch zum speichern von Computeranweisungen eingesetzt werden, wobei die Anweisungen bzw. Befehle in Form von Mikrocode in den Speicher eingegeben worden sind.
  • Während dem Betrieb des Computers und während der Verarbeitung der vorher von dem Computer empfangenen Eingabe durch den Prozessor gemäß der vorgeschriebenen Reihe von Regeln, kann der Prozessor eine Aufmerksamkeitsanforderung empfangen. Zum Beispiel kann der Prozessor von einer Tastatur eine Anforderung zur Entgegennahme neuer Eingaben empfangen. Eine derartige Aufmerksamkeitsanforderung wird als Unterbrechung (Englisch: Interrupt) bezeichnet.
  • Wenn der Prozessor im Allgemeinen eine Unterbrechung empfängt, so unterbricht er seine aktuellen Arbeitsabläufe bzw. Operationen, speichert den Status seiner Arbeit und überträgt die Steuerung auf eine spezielle Routine, welche die Anweisungen für die Behandlung der jeweiligen Situation enthält, die die Unterbrechung bewirkt hat. Unterbrechungen können durch verschiedene Hardwarevorrichtungen erzeugt werden, um die Bearbeitung anzufordern oder um Probleme zu melden, wobei sie aber auch durch den Prozessor selbst angefordert werden können als Reaktion auf Programmfehler oder Anforderungen von Betriebssystembearbeitungen. Unterbrechungen sind die Art und Weise, wie der Prozessor mit anderen Elementen kommuniziert, welche das Computersystem bilden. Eine Hierarchie der Unterbrechungsprioritäten bestimmt, welche Unterbrechungsanforderung zuerst abgearbeitet bzw. bearbeitet wird, wenn mehr als eine Anforderung vorgenommen worden ist. Bestimmte Programme können bestimmte Unterbrechungen temporär deaktivieren, wenn das Programm die vollständige Aufmerksamkeit des Prozessors erfordert, um eine bestimmte Aufgabe auszuführen.
  • Im Allgemeinen gilt eine Unterbrechung als ein Merkmal eines Computers, das die Unterbrechung der Ausführung eines Programms ermöglicht, um ein anderes Programm ausführen zu können. Bei dem anderen Programm kann es sich um ein Spezialprogramm handeln, das ausgeführt wird, wenn eine bestimmte Unterbrechung eintritt, wobei ein derartiges Programm teilweise als ein Unterbrechungs-Steuerungsprogramm bezeichnet wird. Unterbrechungen mit unterschiedlichen Ursachen bzw. Quellen weisen verschiedene Behandlungs- bzw. Steuerungsprogramme auf, um die entsprechenden Aufgaben auszuführen, wie etwa die Aktualisierung des Systemtakts oder das Lesen der Tastatur. Eine in dem Speicher gespeicherte Tabelle enthält Zeiger, die teilweise als Adressvektoren bezeichnet werden, welche den Prozessor zu den verschiedenen Unterbrechungs-Steuerungsprogrammen führen. Programmierer können Unterbrechungs-Steuerungsprogramme entwickeln, um bestehende Steuerungsprogramme zu ersetzen oder zu ergänzen. Alternativ kann es sich bei dem genannten anderen Programm um ein Programm handeln, das nur dann ausgeführt wird, wenn es durch eine Unterbrechung angefordert wird, wobei dies teilweise als ein unterbrechungsgesteuerter Prozess bezeichnet wird. Nachdem die erforderliche Aufgabe ausgeführt worden ist steht die CPU für die Ausführung anderer Aufgaben zur Verfügung, bis die nächste Unterbrechung auftritt. Unterbrechungsgesteuerte Prozessoren werden teilweise eingesetzt, um auf Ereignisse zu reagieren bzw. anzusprechen, wie zum Beispiel ein Floppy-Diskettenlaufwerk, das für die Datenübertragung bereit ist.
  • Im Allgemeinen weisen Computer eine Hardwareleitung auf, die teilweise als eine Unterbrechungsanforderungsleitung bezeichnet wird, über welche Vorrichtungen wie etwa eine Tastatur oder ein Diskettenlaufwerk Unterbrechungen an die CPU senden können. Derartige Unterbrechungsanforderungsleitungen sind in die interne Hardware des Computers integriert und ihnen sind unterschiedliche Prioritätsstufen zugeordnet, so dass die CPU die Quellen und die relative Bedeutung eingehender Bearbeitungsanforderungen bestimmen kann.
  • Die Art und Weise, wie ein bestimmter Computer Unterbrechungen behandelt, wird durch die Unterbrechungssteuereinheit des Computers bestimmt. Die ersten Unterbrechungssteuereinheiten waren in dem Computer fest verdrahtet. Dabei war deren Betriebsweise durch den Computerhersteller festgelegt und konnte nicht verändert werden.
  • Bei bestimmten noch entwickelten modernen Mikroprozessore, wie etwa dem von Intel hergestellten Mikroprozessor PentiumPROTM, ist eine hoch entwickelte programmierbare Unterbrechungssteuereinheit in der CPU enthalten. Diese hoch entwickelte programmierbare Unterbrechungssteuereinheit, die als APIC bezeichnet wird, ist programmierbar. Aus Sicht eines Programmierers wird die APIC jedoch als ein Zusatzelement betrachtet, da auf die APIC-Register, obgleich diese sich in der CPU befinden, als eine auf den Speicher abgebildete Vorrichtung zugegriffen wird. Das heißt, diese APIC-Register werden gesteuert durch Mikrocode beschrieben und ausgelesen, und zwar auf die gleiche Art und Weise wie dies für einen Speicher gilt, der Daten oder Befehle aufweist.
  • Vorgesehen ist gemäß der vorliegenden Erfindung ein Streamline Advanced Programmable Interrupt Controller (SAPIC bzw. rationalisierende, hoch entwickelte, programmierbare Unterbrechungssteuereinheit) mit einem Unterbrechungsvektorregister (IVR), angeordnet in der CPU, wobei sie nicht wie Computerspeicher behandelt wird, und wobei für die Steuerung kein Mikrocode erforderlich ist. Die vorliegende Erfindung macht Mikrocode für die Unterbrechungssteuereinheit überflüssig, wodurch es nicht mehr erforderlich ist,, dass ein teuerer, auf dem Chip vorgesehener Nur-Lesespeicher (ROM) den Mikrocode führt. Folglich kann der Abschnitt des Chips, der für einen Mikrocode-ROM reserviert war, zur Implementierung einer intelligenteren Logik eingesetzt werden, wodurch der Chiphersteller wiederum eine höhere Rentabilität erzielen kann.
  • Nahezu alle bekannten, dem Stand der Technik entsprechenden programmierbaren Unterbrechungssteuereinheiten werden durch Mikrocode gesteuert. Der Mikrocode wird durch den Hersteller des Mikroprozessors codiert und kann danach nur schwer durch Programmierer verändert werden, um die Anforderungen zum Beispiel eines bestimmten Betriebssystems für einen Computer besser zu erfüllen. Folglich können Programmierer nur schwer die Art und Weise anpassen bzw. verändern, wie die Unterbrechungssteuerung in dem Computer ausgeführt wird.
  • In den verbleibenden, dem Stand der Technik entsprechenden Vorrichtungen haben die Hersteller von Mikroprozessoren die vollständige Unterbrechungsverwaltung für die CPU in Software implementiert, ganz ohne jede Hardware-Implementierung. Dies hat zwar den Mikrocode der Unterbrechungssteuereinheit eliminiert sowie den ROM zum Speichern dieses Codes und ermöglicht es Programmierern, Änderungen an der Steuerungssoftware vorzunehmen, allerdings weist dieser Ansatz zahlreiche Nachteile auf. Dieser Ansatz führt zum Beispiel zu mehr Code, der durch den Prozessor jedes Mal ausgeführt werden muss, wenn auf eine Unterbrechung getroffen wird, wodurch sich die Latenz der Unterbrechungsbehandlung erhöht.
  • Das U.S. Patent US-A-5.684.997 offenbart eine Unterbrechungssteuereinheit, wobei ein Prozess der Unterbrechungsanforderung und Bearbeitung folgendes umfasst:
    • 1) Ein Peripheriegerät, das dessen Unterbrechungsleitung aktiviert, die zu einem peripheren Unterbrechungsanforderungskanal der Verarbeitungseinheit geleitet wird. Wenn der Unterbrechungskanal in einem Register Unterbrechungsmaske bzw. Unterbrechungsmaskierung nicht maskiert ist, setzt eine Unterbrechungssteuereinheit ein entsprechendes Bit in einem Register Unterbrechungsanforderung.
    • 2) Einen Prioritäts-Resolver in der Unterbrechungssteuereinheit, der die Anforderungen evaluiert und einen Unterbrechungsausgang der CPU aktiviert, sofern vorgesehen.
    • 3) Die CPU, welche auf die Unterbrechungsanforderung reagiert bzw. antwortet, indem ein PCI-Unterbrechungsbestätigungszyklus ausgeführt wird. Die PCI-Schnittstelle der peripheren Verarbeitungseinheit decodiert den Busbefehl und sendet zwei Unterbrechungsbestätigungsimpulse an die Unterbrechungssteuereinheit.
    • 4) Die Unterbrechungssteuereinheit, welche das relevante Bit in einem Register Unterbrechungsbearbeitung auf Bearbeitung setzt und das Bit in dem Register Unterbrechungsanforderung löscht. Die Steuereinheit gibt einen 8-Bit-Vektor aus, der während einer Datenphase des PCI-Unterbrechungsbestätigungszyklus an die CPU zurückgegeben wird.
  • Vorgesehen wird durch die vorliegende Erfindung eine optimierte Lösung, die darauf ausgerichtet ist, die Effekte bzw. Auswirkungen eines oder mehrerer der vorstehend genannten Probleme zu verhindern bzw. zumindest zu reduzieren.
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung eine Vorrichtung zur Bereitstellung einer Unterbrechungssteuerung gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein Verfahren zur Steuerung von Unterbrechungen in einem Computer gemäß dem gegenständlichen Anspruch 11.
  • Weitere Ausführungsbeispiele der vorliegenden Erfindung sind in den Unteransprüchen enthalten.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist eine registerbasierte programmierbare Unterbrechungssteuereinheit vorgesehen, zur Steuerung der Unterbrechungen in einem Computer. Die Steuereinheit weist eine programmierbare Software auf, die sich in der CPU befindet und steuert, wenn die anstehende Unterbrechung mit der höchsten Priorität bereitgestellt wird, und mit einer Hardware-Unterbrechungslogik, die steuert, wie die anstehende Unterbrechung mit der höchsten Priorität bereitgestellt wird.
  • Die CPU weist ein Unterbrechungsvektorregister auf. Das Register fungiert jedoch nicht wie das typische Register. Es handelt sich um kein physikalisches Register und es kann nicht beschrieben werden. Eine Leseanforderung an das Register durch die programmierbare Software löst die Hardware-Unterbrechungslogik aus; sobald diese ausgelöst ist, führt die Logik bestimmte Steuermaßnahmen durch, deren Endergebnis es ist, dass an die programmierbare Software ein Vektor zurückgegeben wird, der der Unterbrechung mit der höchsten Priorität entspricht. Die programmierbare Software führt somit eine Leseoperation aus und empfängt Daten zurück; diese Daten stammen jedoch nicht aus dem ausgelesenen Register, sondern werden durch die Hardware-Unterbrechungslogik erzeugt.
  • Die bekannten, dem Stand der Technik entsprechenden Vorrichtungen weisen zwei Arten von Registern auf; Register ohne Nebenwirkungen und Register mit einer Nebenwirkung, wenn eine Schreibanforderung an das Register erteilt wird. Kein dem Stand der Technik entsprechendes Register führt eine Steuerungsaktivität aus, wie etwa die Prioritätsverwaltungsaktivität gemäß der vorliegenden Erfindung, wenn eine Leseanforderung an das Register ausgegeben wird.
  • Gemäß einem Aspekt der vorliegenden Erfindung umfassen die Steuerungsmaßnahmen bzw. die Steuerungshandlungen, die durch die Hardware-Unterbrechungslogik ausgeführt werden, das Bestimmen, ob eine nicht maskierbare Unterbrechung vorhanden ist, und wenn dies der Fall ist, wird der programmierbaren Software dies angezeigt. Wenn keine nicht maskierbare Unterbrechung vorhanden ist, und wenn Unterbrechungen deaktiviert worden sind oder die Unterbrechung mit der höchsten Priorität abgearbeitet wird, wird ein spezieller Vektor, ein so genannter Störvektor, an die programmierbare Software zurückgegeben. Wenn eine nicht maskierbare Unterbrechung nicht vorhanden ist und wenn die Unterbrechungen nicht deaktiviert worden sind oder wenn die Unterbrechung mit der höchsten Priorität nicht bearbeitet wird, wird der Vektor, der der Unterbrechung mit der höchsten Priorität entspricht, an die programmierbare Software zurückgegeben. Bei dem Störvektor handelt es sich um einen besonderen Vektor, der eingesetzt wird, um dem Prozessor mitzuteilen, dass er mit dem Fortfahren soll, was er gerade macht.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung handelt es sich bei dem Unterbrechungsvektorregister um das einzige Register, das, wenn es gelesen wird, eine Reihe von Steueraktionen in dem Unterbrechungsprioritätsmodell der CPU auslöst und die Daten zurückgibt, die das Ergebnis dieser Steueraktivitäten sind. Die vorliegende Erfindung basiert auf Registern und nicht auf einer Speicherabbildung und sorgt für eine höhere Leistung als ein auf den Speicher abgebildetes System.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung kann die programmierbare Software eingesetzt werden, um die Unterbrechungspriorität flexibel zu verwalten. Sie wird so programmiert, dass Vektorzahlen zugeordnet werden, die jeweils eine bestimmte Priorität aufweisen, und zwar an Vorrichtungen, die mit dem Prozessor kommunizieren, und wobei das Programm leicht verändert werden kann. Die vorliegende Erfindung ist nicht abhängig von dem Vorhandensein von Mikrocode, sie erfordert eine weniger komplexe Hardware und sie überträgt mehr Kontrolle auf die Software.
  • Die Mikroarchitektur-Pipeline, welche die Steuerungsaktivität der vorliegenden Erfindung ausführt, erfordert keine Handshake- bzw. Quittungsaustausch-Operation und kann synchron zu der CPU arbeiten. Dies führt zu einer besseren Performance bzw. Leistung und höherer Zuverlässigkeit. Das Merkmal der programmierbaren Software der vorliegenden Erfindung stellt Flexibilität bereit und ermöglicht zentralisierte Unterbrechungsroutinen, welche das Unterbrechungsvektorregister lesen, und die verschiedene Software-Richtlinien implementieren können zusätzlich zu der Hardware-Richtlinie, die in der Hardware-Unterbrechungslogik implementiert ist. Diese und weitere Vorteile werden im Zuge der nachstehenden umfassenderen Beschreibung der vorliegenden Erfindung deutlich.
  • Weitere Aufgaben und Vorteile der vorliegenden Erfindung werden beim Lesen der folgenden genauen Beschreibung und in Bezug auf die Zeichnungen deutlich. In den Zeichnungen zeigen:
  • 1 ein schematisches Blockdiagramm einer programmierbaren Unterbrechungssteuereinheit gemäß der vorliegenden Erfindung;
  • 2 ein logisches Flussdiagramm der Steuerungsaktionen, welche die Hardware-Unterbrechungslogik gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausführt;
  • 3 ein Datenflussdiagramm gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 4 verschiedene Pipelines in einem Ausführungsbeispiel der vorliegenden Erfindung.
  • In Bezug auf die vorliegende Erfindung sind verschiedene Modifikationen und alternative Ausführungen möglich, wobei bestimmte Ausführungsbeispiele der vorliegenden Erfindung in den Zeichnungen als Beispiele dargestellt sind und hierin näher beschrieben werden. Hiermit wird jedoch festgestellt, dass die Beschreibung hierin spezifischer Ausführungsbeispiele die vorliegende Erfindung nicht auf die speziellen offenbarten Ausführungen beschränkt, vielmehr umfasst sie alle Modifikationen, Äquivalente und Alternativen, die dem Umfang der vorliegenden Erfindung angehören, der durch die anhängigen Ansprüche definiert ist.
  • Veranschaulichende Ausführungsbeispiele der vorliegenden Erfindung werden nachstehend im Text näher beschrieben. Zur besseren Veranschaulichung werden in der vorliegenden Patentschrift nicht alle Merkmale einer tatsächlichen Implementierung beschrieben. Hiermit wird jedoch festgestellt, dass bei der Entwicklung eines derartigen tatsächlichen Ausführungsbeispiels zahlreiche Entscheidungen in Bezug auf die Implementierung getroffen werden müssen, um die spezifischen Ziele de Entwicklers zu erreichen, wie zum Beispiel eine Einhaltung bzw. Erfüllung systembezogener und geschäftsbezogener Einschränkungen, die von Implementierung zu Implementierung anders ausfallen. Ferner wird hiermit festgestellt, dass eine derartige Entwicklung komplex und zeitaufwändig sein kann, wobei sie nichtsdestotrotz weiterhin eine routinemäßige Aufgabe für den Durchschnittsfachmann auf dem Gebiet darstellt, der von der vorliegenden Offenbarung profitiert.
  • In folgendem Bezug auf die Zeichnungen und im Besonderen auf die Abbildung aus 1, zeigt diese in Blockdiagrammdarstellung die grundlegende innere Struktur einer programmierbaren Unterbrechungssteuereinheit gemäß der vorliegenden Erfindung. Die Unterbrechungen 110 von verschiedenen Quellen werden von der programmierbaren Unterbrechungssteuerung empfangen, priorisiert und danach an den CPU-Kern übermittelt. Jede Unterbrechung wird von der Annahmelogik bzw. Akzeptanzlogik 112 empfangen. Die Annahmelogik prüft die Unterbrechung und führt für diese ein Scheduling durch, wenn sie die grundlegenden Unterbrechungskriterien erfüllt, wie etwa Markierung, etc. Die Unterbrechung wird danach von einem Vektordecodierer 114 decodiert und danach einer bestimmten Position bzw. Stelle in dem Unterbrechungsanforderungsregister (IRR als englische Abkürzung von Interrupt Request Register) 116 zugeordnet.
  • Durch das Zwischenspeichern einer bestimmten Unterbrechung in dem Unterbrechungsanforderungsregister (RR) 116 registriert die programmierbare Unterbrechungssteuerung die Unterbrechung. Die Unterbrechung wird danach an eine Priorisierungseinrichtung 118 übermittelt, wo die eingehende Unterbrechung dann mit einer bereits existierenden Unterbrechung und/oder dem Aufgabenprioritätsregister (TPR als englische Abkürzung von Task Priority Register) 120 verglichen wird. Eine Anzeige, dass eine Unterbrechung auf Bearbeitung wartet, wird zu dem Mikroprozessorkern 122 gesendet.
  • Als Reaktion auf die Anzeige darauf, dass eine Unterbrechung auf eine Bearbeitung wartet, führt die programmierbare Software eine Leseoperation des Unterbrechungsvektorregisters (IVR als englische Abkürzung von Interrupt Vector Register) 124 über den Steuerregisterzugangsbus (CRAB als englische Abkürzung von Control Register Access Bus) 126 aus.
  • Bis hier beschrieben wurde somit eine Unterbrechungsbestätigungssequenz der programmierbaren Unterbrechungssteuereinheit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Nachdem die Unterbrechung bestätigt worden ist, spricht die programmierbare Unterbrechungssteuereinheit an.
  • Die programmierbare Unterbrechungssteuereinheit gemäß dem in der Abbildung aus 1 veranschaulichten Ausführungsbeispiel spricht auf diesen Lesevorgang an, indem der Vektor der Unterbrechung auf dem CRAB 126 platziert wird. Der Kern 122 empfängt den Vektor von dem CRAB 126 und tritt auf der Basis des empfangenen Vektors in eine Unterbrechungsbehandlungsroutine ein.
  • Die Leseoperation in dem Unterbrechungsvektorregister (IVR) 124 bewirkt es, dass sich die Unterbrechung von dem Unterbrechungsanforderungsregister (IRR) 116 zu dem Unterbrechungsbearbeitungsregister (ISR als englische Abkürzung von Interrupt Service Register) 128 bewegt. Wenn der Kern 122 die Unterbrechungsbearbeitungs- bzw. Unterbrechungsbehandlungsroutine abgeschlossen hat, schreibt er in das Register Unterbrechungsende (EOI als englische Abkürzung von End of Interrupt) 130. Dies führt dazu, dass die programmierbare Unterbrechungssteuereinheit die Unterbrechung verwirft, die sich in dem Unterbrechungsbehandlungsregister (ISR) 128 befindet, wobei das Unterbrechungsbehandlungsregister wieder in dessen Ausgangszustand versetzt wird.
  • Bis hier hin wurde die Verarbeitung einer einzelnen Unterbrechung beschrieben. Im Betrieb können in dem veranschaulichten Ausführungsbeispiel der vorliegenden Erfindung bis zu 242 Unterbrechungen bearbeitet bzw. abgearbeitet werden, was dafür sorgt, dass das Betriebssystem mehrere verschachtelte Unterbrechungen ermöglicht. Ferner können bis zu 242 anstehende Unterbrechungen vorhanden sein.
  • Im Betrieb bestimmt die programmierbare Software den anstehenden Unterbrechungsvektor mit der aktuell höchsten Priorität, indem das Unterbrechungsvektorregister (IVR) 124 gelesen wird. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem IVR um ein 8-Bit-Register, und jede Unterbrechung stellt einen 8-Bit-Vektor dar, der die Zahl bzw. Ziffer aufweist, die einer bestimmten Unterbrechungsquelle zugeordnet ist durch die programmierbare Software, wobei die programmierbare Software so programmiert worden ist, dass sie eine bestimmte Priorität jeder Vektorzahl und somit jeder Unterbrechungsquelle zuordnet. Eine bestimmte Nummer ist reserviert, um das Vorhandensein eines Störvektors anzuzeigen, wie dies nachstehend im Text umfassender beschrieben wird.
  • Für die äußere Umgebung in dem Ausführungsbeispiel aus 1 sichtbare Register umfassen das Register Unterbrechungsende (EOI) 130, das Unterbrechungsanforderungsregister (IRR) 116, das Unterbrechungsvektorregister (IVR) 124 und das Aufgabenprioritätsregister (TPR) 120. Die für die äußere Umgebung nicht sichtbaren Register umfassen das Unterbrechungsbehandlungsregister (ISR) 128, das Register mit der Unterbrechung mit der höchsten Priorität (Highest Priority Interrupt Register) und das höchste Unterbrechungsbearbeitungsregister (Highest Servicing Interrupt Register).
  • Das Register Unterbrechungsende (EOI) ist eigentlich ein Pseudoregister. Nach vollständiger Ausführung der Unterbrechungsbehandlungsroutine für die anstehende Unterbrechung mit der höchsten Priorität, ist die Software zuständig für die Ausführung einer Schreiboperation an die Adresse des EOI-Registers, um ein bestimmtes Bit (in dem Unterbrechungsbehandlungsregister) zu löschen, das der Unterbrechung zugeordnet ist. In der programmierbaren Unterbrechungssteuereinheit aktiviert diese Schreiboperation ein einzelnes Signal, das durch die Maschine gesteuert wird, um darüber zu informieren, dass die Unterbrechung vollständig ausgeführt worden ist. Im Betrieb zeigt eine Schreiboperation in das Register Unterbrechungsende an, dass die Software bereit ist, um eine weitere Unterbrechung auf der gleichen oder einer niedrigeren Prioritätsstufe zu akzeptieren, wie dies durch das Aufgabenprioritätsregister bestimmt wird. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem Register Unterbrechungsende um ein 8-Bit-Register.
  • Das Unterbrechungsanforderungsregister (IRR) überwacht die anstehenden bzw. ausstehenden Unterbrechungen. Eine anstehende bzw. ausstehende Unterbrechung ist eine Unterbrechung, die von dem Prozessor angenommen, jedoch noch nicht bearbeitet worden ist. Wenn eine Unterbrechung empfangen wird, wird sie in dem IRR registriert. Wenn das Unterbrechungsvektorregister gelesen wird, wird die Unterbrechung mit der höchsten Priorität in dem IRR codiert und als Unterbrechungsvektor bereitgestellt. Sobald die Vektorinformationen an den Prozessor weitergeleitet worden sind, wird die Unterbrechung zu dem Unterbrechungsbehandlungsregister übertragen. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem Unterbrechungsanforderungsregister um ein 242-Bit-Register.
  • Das Unterbrechungsbehandlungsregister (ISR) überwacht die Unterbrechungen, die aktuell von dem Prozessor bearbeitet werden. Wenn das Unterbrechungsvektorregister gelesen wird, wird der Vektor der anstehenden Unterbrechung mit der höchsten Priorität an die CPU übermittelt, und das entsprechende ISR-Bit wird gesetzt. Das Bit bleibt so lange gesetzt, bis das Register Unterbrechungsende durch den Prozessor beschrieben wird. Das Register ISR kann mehrere gesetzte Bits aufweisen, wenn Unterbrechungen mit höherer Priorität während der Bearbeitung einer Unterbrechung mit niedrigerer Priorität empfangen werden. Die Unterbrechungen mit höherer Priorität werden während der Bearbeitung der ursprünglichen Unterbrechung verschachtelt und bearbeitet bzw. abgearbeitet. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem Unterbrechungsbehandlungsregister um ein 242-Bit-Register.
  • Das Register mit der Unterbrechung mit der höchsten Priorität wird verwendet, um den Wert der Unterbrechung mit der höchsten Priorität (HPI als englische Abkürzung von Highest Priority Interrupt) zu speichern. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei diesem Register um ein 8-Bit-Register. Die Unterbrechung mit der höchsten Priorität (HPI) ist der Vektor für die Unterbrechung mit der höchsten Priorität, die empfangen, jedoch noch nicht bearbeitet worden ist.
  • Das höchste Unterbrechungsbearbeitungsregister überwacht die Priorität der aktuell bearbeiteten Unterbrechung und wird eingesetzt, um den Wert der höchsten bearbeiteten Unterbrechung (HSI als englische Abkürzung von Highest Servicing Interrupt) zu speichern. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei diesem Register um ein 8-Bit-Register. Die höchste bearbeitete Unterbrechung (HSI) ist der Vektor für die bearbeitete Unterbrechung mit der höchsten Priorität.
  • Das Aufgabenprioritätsregister (TPR als englische Abkürzung von Task Priority Register) überwacht bzw. verfolgt die Priorität des Prozessors. Die Prozessorpriorität kann sich jedes Mal verändern, wenn der Prozessor die Aufgaben wechselt, wobei die aktuelle Aufgabe des Prozessors dessen Priorität erhöht oder senkt, wobei der Prozessor in eine Unterbrechungsbehandlungsroutine eintritt oder der Prozessor aus einer Unterbrechungsbehandlungsroutine zurückkehrt, wobei die Priorität durch die programmierbare Software gesteuert wird. In dem veranschaulichten Ausführungsbeispiel handelt es sich bei dem Aufgabenprioritätsregister um ein 8-Bit-Register, das bis zu 256 eindeutige Prioritäten bereitstellt. In einem Ausführungsbeispiel der vorliegenden Erfindung werden 242 eindeutige Prioritäten eingesetzt, und die verbleibenden Vektoren werden reserviert, wie dies nachstehend im Text näher beschrieben wird.
  • Wenn in dem veranschaulichten Ausführungsbeispiel ein bestimmtes Bit in dem Aufgabenprioritätsregister (TPR) 120 gesetzt ist, um anzuzeigen, dass eine nicht maskierbare Unterbrechung vorliegt, so wird eine Anzeige für eine nicht maskierbare Unterbrechung (NMI als englische Abkürzung von Non-Maskable Interrupt) an den Kern 122 gesendet.
  • Acht Bits entsprechen 256 eindeutigen binären Zahlen. Diese 256 Zahlen werden in einem Ausführungsbeispiel der vorliegenden Erfindung eingesetzt, um den Unterbrechungen Prioritäten zuzuweisen. Die Hierarchie der Priorität entspricht in einem Ausführungsbeispiel: 2; 0; 255, 254, 253, ..., 16, wobei die Zahlen 15 bis 3 und 1 reserviert sind. Dies bedeutet, dass die Zahl 2 die höchste Priorität aufweist, gefolgt von der Zahl 0, gefolgt von der Zahl 255, gefolgt von der Zahl 254 und nach unten bis zu der Zahl 16, wobei die Zahl 16 die Zahl mit der niedrigsten Priorität ist. Die Zahl 2 wird verwendet, um eine nicht maskierbare Unterbrechung (NMI) anzuzeigen, wobei die Zahl 0 eingesetzt wird, um eine externe Unterbrechung anzuzeigen, und wobei die verbleibenden 240 Zahlen für die Zuordnung zu verschiedenen Unterbrechungsquellen zur Verfügung stehen.
  • Die zuletzt genannten 240 Zahlen werden als Vektorzahl für jede Unterbrechung eingesetzt, und somit gibt es 240 Unterbrechungsvektoren, die jeweils einer bestimmten Unterbrechungsquelle entsprechen. Folglich gibt es insgesamt 242 Vektoren, die durch Software programmierbar sind, und wobei deren Bereich 255-16, 2, 0 entspricht.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung sind die vorstehend genannten möglichen 256 Binärzahlen in 16 Gruppen gruppiert. Jede Gruppe wird als eine Klasse bezeichnet; zum Beispiel enthält die Klasse 0 die Zahlen 0 bis 15, wobei die Klasse 1 die zahlen 16 bis 31 enthält, wobei die Klasse 2 die Zahlen 32 bis 47 enthält, und so weiter, bis hin zu Klasse 15, welche die Zahlen 240 bis 255 enthält. Bei diesem Modell sind die 240 Vektorzahlen (das heißt, alle Vektorzahlen mit Ausnahme von 2 und 0) in den Klassen 1 bis 15 enthalten, und die in einer bestimmten Klasse enthaltenen Unterbrechungsvektoren können für bestimmte Zwecke gemeinsam behandelt werden. Wenn sich zum Beispiel die höchste bearbeitete Unterbrechung in Klasse 13 befindet (Vektorzahlen 208–244), und wobei während der Bearbeitung dieser Unterbrechung eine weitere Unterbrechung empfangen wird, muss, damit die neu empfangene Unterbrechung eine höhere Priorität aufweist als die gerade bearbeitete Unterrechung, diese Unterbrechung sich in Klasse 13 oder in einer höheren Prioritätsklasse befinden, den Klassen 14 oder 15, oder es muss sich um eine nicht maskierbare Unterbrechung handeln oder um eine externe Unterbrechung; wenn sie sich in den Klassen 1 bis 12 befindet, ist ihre Priorität niedriger als die der aktuell bearbeiteten Unterbrechung. Das Aufgabenprioritätsregister deaktiviert (z. B. maskiert) Unterbrechungen in den Klassen 1 bis 12, um die Verarbeitung der Unterbrechung in Klasse 13 zu beschleunigen.
  • In Bezug auf das oben genannten Modell bzw. System handelt es sich bei der Unterbrechung mit der höchsten Priorität (HPI als englische Abkürzung von Highest Priority Interrupt) um die Vektorzahl oder den wert des Unterbrechungsvektors für die empfangene und nicht bearbeitete Unterbrechung mit der höchsten Priorität, und wobei es sich bei der höchsten bearbeiteten Unterbrechung (HSI als englische Abkürzung von Highest Servicing Interrupt) um die Vektorzahl oder den Wert des Unterbrechungsvektors für die bearbeitete Unterbrechung mit der höchsten Priorität handelt. Größere Zahlen weisen in einem Ausführungsbeispiel der vorliegenden Erfindung höhere Prioritätswerte auf (exklusive der Vektorzahlen 2 und 0).
  • Die Abbildung aus 2 veranschaulicht einen bestimmten Logikablauf einer programmierbaren Unterbrechungssteuereinheit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Der Eintritt in die Logik erfolgt über die Leitung 210. Die rautenförmigen Kästchen 220 und 240 stehen für zu treffende Entscheidungen, und die rechteckigen Kästchen 230, 250 und 260 stehen für aufgeführte Aufgaben als Folge der entsprechend getroffenen Entscheidungen.
  • Die Abbildung aus 2 veranschaulicht die Steueraktionen, die ausgelöst werden, wenn das Unterbrechungsvektorregister (IVR) 124 durch die programmierbare Software gelesen wird. Diese Steueraktionen werden gemäß der vorliegenden Erfindung in Hardware implementiert. Bei der ersten veranschaulichten Steueraktion handelt es sich um die Bestimmung, ob eine nicht maskierbare Unterbrechung vorliegt (der Entscheidungsblock 220). Wenn eine nicht maskierbare Unterbrechung vorliegt, wird sie an die programmierbare Software in dem Unterbrechungsvektorregister (IVR) zurückgegeben (der Verfahrensblock 230). Wenn andererseits eine nicht maskierbare Unterbrechung nicht vorliegt, so erfolgt ein Eintritt in den Entscheidungsblock 240. Dort wird entschieden, ob das Aufgabenprioritätsregister (TPR) die vorliegenden Unterbrechungen deaktiviert hat oder ob die höchste anstehende Unterbrechung (HPI als englische Abkürzung von Highest Pending Interrupt) kleiner oder gleich der höchsten bearbeiteten Unterbrechung (HSI) ist. Wenn die Antwort auf den Entscheidungsblock 240 Ja lautet, so wird der Störvektor in IVR zurückgeführt (Verfahrensblock 250). In einem Ausführungsbeispiel der vorliegenden Erfindung ist die Vektorzahl 15 als Störvektor reserviert.
  • In Bezug auf den Entscheidungsblock 240 wird hiermit festgestellt, dass die HPI mit der HSI identisch sein kann, da im Betrieb die Unterbrechungsquelle eine Unterbrechung an die Steuereinheit senden kann, während die Steuereinheit dabei ist, eine Unterbrechung zu bearbeiten, die von der Vorrichtung vorher empfangen worden ist, oder mehr als eine Unterbrechung kann mit dem gleichen Unterbrechungsvektor programmiert werden.
  • Wenn die Antwort auf den Entscheidungsblock 240 Nein lautet, das heißt, wenn das TPR die vorhandenen bzw. vorliegenden Unterbrechungen nicht deaktiviert hat, und HPI > HSI ist, so wird das Bit für das Unterbrechungsbehandlungsregister (ISR als englische Abkürzung von Interrupt Service Register), das der Unterbrechung mit der höchsten Priorität entspricht, bei dem des es sich in einem Ausführungsbeispiel der vorliegenden Erfindung um den obersten Vektor in dem Unterbrechungsanforderungsregister (IRR als englische Abkürzung von Interrupt Request Register) handelt, gesetzt, wobei das Bit für das Unterbrechungsanforderungsregister, das der Unterbrechung mit der höchsten Priorität entspricht, gelöscht wird, und wobei der oberste Vektor (der Vektor für die Unterbrechung mit der höchsten Priorität) in dem Unterbrechungsanforderungsregister (IRR) in IVR zurückgeführt wird.
  • Die programmierbare Software, die sich als Bestandteil des Betriebssystems in der CPU befindet, steuert somit, wann der Vektor für die anstehende Unterbrechung mit der höchsten Priorität an die programmierbare Software bereitgestellt wird, und wobei die Hardware-Unterbrechungslogik steuert, wie der Vektor an die programmierbare Software bereitgestellt wird. Eine Leseoperation durch die programmierbare Software an das Unterbrechungsvektorregister löst die Steueraktionen der Hardware-Unterbrechungslogik aus, was dazu führt, dass die Hardware-Unterbrechungslogik Daten an die programmierbare Software zurückführt. Es verhält sich dabei so, als würde die programmierbare Software tatsächlich in dem Unterbrechungsvektorregister enthaltene Informationen lesen, wobei in Wirklichkeit die Leseoperation Hardware auslöst, um Daten zu bestimmen und um danach Daten an die Software zurückzugeben. Es erfolgt keine tatsächliche Lese- oder Schreiboperation im herkömmlichen Sinne.
  • Die Abbildung aus 3 veranschaulicht in Blockdiagrammform den Datenfluss in dem Unterbrechungsanforderungsregister (IRR) und in dem Unterbrechungsbehandlungsregister (ISR) eines Ausführungsbeispiels der vorliegenden Erfindung bei einer Leseoperation des Unterbrechungsvektorregisters (IVR) und einer Schreiboperation in das Register Unterbrechungsende (EOI). Und die Abbildung aus 4 veranschaulicht die Pipelinie für eine Leseoperation des Unterbrechungsvektorregisters (IVR), für eine Schreiboperation Unterbrechungsende (EOI) und für eine Unterbrechungsanforderung, in Bezug auf das Ausführungsbeispiel aus 3.
  • Die programmierbare Software, welche das Unterbrechungsvektorregister (IVR) liest, kann verschiedene Softwarerichtlinien implementieren, zusätzlich zu der Hardwarerichtlinie, die durch die Hardware-Unterbrechungslogik implementiert wird. Dieses Merkmal der vorliegenden Erfindung ermöglicht hohe Flexibilität und ermöglicht eine individuelle Gestaltung der Unterbrechungsarchitektur, so dass diese auf die individuellen Anforderungen verschiedener Betriebssysteme abgestimmt ist.

Claims (12)

  1. Vorrichtung zur Bereitstellung einer Unterbrechungssteuerung, wobei die Vorrichtung folgendes umfasst: ein erstes Register (124), das so angeordnet ist, dass es einen Unterbrechungsvektor speichert; und ein zweites Register (116), das so angeordnet ist, dass es anstehende Unterbrechungen speichert, die noch nicht abgearbeitet worden sind, wobei in dem genannten zweiten Register eine Priorität gespeichert ist, die den anstehenden Unterbrechungen zugeordnet ist; gekennzeichnet durch: eine Unterbrechungs-Logikschaltung (112, 114, 118), die mit den genannten ersten und zweiten Registern gekoppelt ist, die so angeordnet sind, dass eine Hardware-Unterbrechungssequenz ausgeführt wird, wenn eine Unterbrechung durch Software verarbeitet wird, wobei die Hardware-Unterbrechungssequenz eingeleitet wird, wenn die Software einen Lesevorgang in das genannte erste Register (124) ausführt, wobei die genannte Unterbrechungs-Logikschaltung so angeordnet ist, dass sie die Unterbrechungspriorität bestimmt und einen priorisierten Vektor zurückgibt; wobei die genannte Unterbrechungs-Logikschaltung so angeordnet ist, dass sie an die programmierbare Software einen Vektor einer Unterbrechung mit ausgewählter Priorität als Reaktion auf die durch die Software eingeleitete Hardware-Unterbrechungssequenz zurückgibt, wobei die genannte Unterbrechungs-Logikschaltung so angeordnet ist, dass sie als Reaktion auf die durch die Software eingeleitete Hardware-Unterbrechungssequenz bestimmt (220), ob eine nicht maskierbare Unterbrechung vorhanden ist, und wenn die nicht maskierbare Unterbrechung vorhanden ist, wird die nicht maskierbare Unterbrechung zurückgegeben (230); ansonsten, wenn die nicht maskierbare Unterbrechung nicht vorhanden ist, ist die genannte Unterbrechungs-Logikschaltung so angeordnet, dass bestimmt (240) wird, ob Unterbrechungen nicht deaktiviert worden sind, oder wenn eine Unterbrechung mit einer ausgewählten Priorität nicht abgearbeitet wird, und wobei ein Vektor zurückgegeben wird, der der ausgewählten Prioritätsunterbrechung entspricht; und wenn Unterbrechungen deaktiviert worden sind oder wenn die Unterbrechung, welche die ausgewählte Priorität aufweist, abgearbeitet wird, so angeordnet ist, dass ein bestimmter Vektor zurückgegeben wird (250).
  2. Vorrichtung nach Anspruch 1, wobei es sich bei dem ersten Register um ein Unterbrechungsvektorregister (124) handelt, das so angeordnet ist, dass es einen Unterbrechungsvektor speichert.
  3. Vorrichtung nach Anspruch 2, wobei die genannte Unterbrechungs-Logikschaltung ferner so angeordnet ist, dass sie einen besonderen Vektor zurückgibt (250), wenn Unterbrechungen deaktiviert worden sind oder wenn eine Unterbrechung mit der höchsten Priorität abgearbeitet wird.
  4. Vorrichtung nach Anspruch 3, wobei es sich bei dem zweiten Register um ein Unterbrechungsanforderungsregister handelt.
  5. Vorrichtung nach Anspruch 4, wobei diese ferner folgendes umfasst: ein Unterbrechungsbehandlungsregister (128), das so angeordnet ist, dass darin ein Vektor einer abgearbeiteten Unterbrechung gespeichert wird.
  6. Vorrichtung nach Anspruch 5, wobei die genannte Unterbrechungs-Logikschaltung so angeordnet ist, dass bestimmt wird (220), ob eine nicht maskierbare Unterbrechung vorhanden ist, und wenn die nicht maskierbare Unterbrechung vorhanden ist, wird die nicht maskierbare Unterbrechung (230) zurückgegeben; ansonsten, wenn die nicht maskierbare Unterbrechung nicht vorhanden ist, ist die genannte Unterbrechungs-Logikschaltung so angeordnet, dass bestimmt wird (240), ob Unterbrechungen nicht deaktiviert worden sind oder ob eine Unterbrechung mit einer höchsten Priorität nicht abgearbeitet wird, und so dass ein Unterbrechungsbehandlungsregister-Bit (128) auf den obersten Vektor in dem Unterbrechungsanforderungsregister (116) gesetzt wird (260), uns so dass der oberste Vektor in dem Unterbrechungsanforderungsregister zurückgegeben wird.
  7. Vorrichtung nach Anspruch 5, wobei es sich bei dem genannten Unterbrechungsvektorregister (124) um ein X-Bit-Register handelt; wobei es sich bei dem gekannten Unterbrechungsbehandlungsregister (128) um ein Y-Bit-Register handelt; und wobei es sich bei dem genannten Unterbrechungsanforderungsregister (116) um ein Y-Bit-Register handelt; wobei X kleiner ist als Y.
  8. Vorrichtung nach Anspruch 5, wobei es sich bei dem genannten Unterbrechungsvektorregister (124) um ein 8-Bit-Register handelt.
  9. Vorrichtung nach Anspruch 8, wobei das genannte Unterbrechungsbehandlungsregister (128) ein 242-Bit-Register darstellt; und wobei es sich bei dem genannten Unterbrechungsanforderungsregister (116) um ein 242-Bit-Register handelt.
  10. Verfahren zur Steuerung von Unterbrechungen in einem Computer, wobei das Verfahren folgendes umfasst: das Auslösen einer Steuerungsmaßnahme, indem Software ein Unterbrechungsvektorregister (124) liest, um eine Hardware-Sequenz einzuleiten, wobei dies folgendes umfasst: das Bestimmen (220), ob eine nicht maskierbare Unterbrechung vorhanden ist; das Zurückgeben der nicht maskierbaren Unterbrechung, wenn eine nicht maskierbare Unterbrechung vorhanden ist; das Zurückgeben (250) eines besonderen Vektors an die programmierbare Software, wenn eine nicht maskierbare Unterbrechung nicht vorhanden ist, und wenn Unterbrechungen deaktiviert sind, oder wenn ein Wert in einem höchsten anstehenden Unterbrechungsregister kleiner oder gleich einem Wert in einem höchsten behandelnden Unterbrechungsregister ist; das Setzen eines Bits eines Unterbrechungsbehandlungsregisters (128), das einem obersten Vektor in einem Unterbrechungsbehandlungsregister (116) entspricht, und das Zurückgeben (260) des obersten Vektors in dem Unterbrechungsanforderungsregister (116), wenn eine nicht maskierbare Unterbrechung nicht vorhanden ist, und wenn ein Aufgabenprioritätsregister (120) nicht deaktivierte Unterbrechungen aufweist, und wenn ein Wert in dem höchsten anstehenden Unterbrechungsregister größer ist als ein Wert in dem höchsten behandelnden Unterbrechungsregister.
  11. Verfahren nach Anspruch 10, wobei Software selektiv Unterbrechungenmaskiert.
  12. Verfahren nach Anspruch 10, wobei Software selektiv eine Priorität einer Unterbrechung festlegt.
DE69839194T 1997-12-31 1998-12-22 Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff Expired - Lifetime DE69839194T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/001,817 US6298410B1 (en) 1997-12-31 1997-12-31 Apparatus and method for initiating hardware priority management by software controlled register access
PCT/US1998/027514 WO1999034298A1 (en) 1997-12-31 1998-12-22 Apparatus and method for initiating hardware priority management by software controlled register access
US1817 2007-11-05

Publications (2)

Publication Number Publication Date
DE69839194D1 DE69839194D1 (de) 2008-04-10
DE69839194T2 true DE69839194T2 (de) 2009-03-26

Family

ID=21697969

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69839194T Expired - Lifetime DE69839194T2 (de) 1997-12-31 1998-12-22 Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff

Country Status (6)

Country Link
US (1) US6298410B1 (de)
EP (1) EP1049985B1 (de)
CN (1) CN1328677C (de)
AU (1) AU2012599A (de)
DE (1) DE69839194T2 (de)
WO (1) WO1999034298A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6202090B1 (en) * 1997-12-11 2001-03-13 Cisco Technology, Inc. Apparatus and method for downloading core file in a network device
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
US6553443B1 (en) * 1999-09-28 2003-04-22 Legerity, Inc. Method and apparatus for prioritizing interrupts in a communication system
KR100317237B1 (ko) * 1999-10-01 2001-12-22 윤종용 유사 벡터 방식의 인터럽트 컨트롤러 및 그것의 인터럽트 처리 방법
US6754754B1 (en) * 1999-12-30 2004-06-22 Intel Corporation Apparatus and method for end of interrupt handling
JP2002055830A (ja) * 2000-05-29 2002-02-20 Seiko Epson Corp 割込信号生成装置及び割込信号の生成方法
JP4600586B2 (ja) * 2000-05-29 2010-12-15 セイコーエプソン株式会社 割込信号生成装置及び割込信号の生成方法
US6647441B1 (en) * 2000-09-15 2003-11-11 Hewlett-Packard Development Company, L.P. Method of maximizing servicing capability of large numbers of I/O descriptors
DE10062996B4 (de) * 2000-12-16 2005-09-29 Micronas Gmbh Unterbrecher-Steuereinrichtung mit Prioritätsvorgabe
DE10062995A1 (de) * 2000-12-16 2002-07-11 Micronas Gmbh Unterbrecher-Steuereinrichtung
US20030204655A1 (en) * 2002-04-24 2003-10-30 Schmisseur Mark A. Prioritizing vector generation in interrupt controllers
US7739438B2 (en) * 2003-02-12 2010-06-15 Hewlett-Packard Development Company, L.P. Method for priority-encoding interrupts and vectoring to interrupt code
GB2403822B (en) * 2003-07-07 2006-05-10 Advanced Risc Mach Ltd Data processing apparatus and method for handling interrupts
US7426728B2 (en) * 2003-09-24 2008-09-16 Hewlett-Packard Development, L.P. Reducing latency, when accessing task priority levels
US7590982B1 (en) * 2003-12-17 2009-09-15 Vmware, Inc. System and method for virtualizing processor and interrupt priorities
DE10361364B4 (de) * 2003-12-29 2010-07-01 Advanced Micro Devices, Inc., Sunnyvale Vorrichtung zum Behandeln von Interruptereignissen, mit der pegel-sensitive bzw. level-sensitive Interruptanforderungen in flankengetriggerten Interruptnachrichten umgesetzt werden
JP4241462B2 (ja) * 2004-03-26 2009-03-18 株式会社デンソー 制御ユニットおよびマイクロコンピュータ
US8127098B1 (en) * 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US20070016906A1 (en) * 2005-07-18 2007-01-18 Mistletoe Technologies, Inc. Efficient hardware allocation of processes to processors
JP4068106B2 (ja) * 2005-08-05 2008-03-26 三菱電機株式会社 リアルタイム組込み簡易モニタプログラム
EP2108147B1 (de) * 2006-10-20 2017-03-08 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of Health Through The Public Health Agency Of Canada Verfahren und vorrichtung zur softwarerichtlinienverwaltung
US8336022B2 (en) * 2006-10-20 2012-12-18 Her Majesty the Queen in Right of Canada as Represented by the Minister of Health Through the Public Health Agency of Canada Method and apparatus for creating a configurable browser-based forms application
US9946668B1 (en) * 2007-01-10 2018-04-17 The Mathworks, Inc. Automatic prioritization of interrupts in a modeling environment
CN101426099B (zh) * 2007-10-31 2010-08-25 晨星半导体股份有限公司 数字电视系统及数字电视中处理数据信号的方法
US20120226842A1 (en) * 2011-03-02 2012-09-06 Research In Motion Limited, an Ontario, Canada corporation Enhanced prioritising and unifying interrupt controller
US9952990B2 (en) * 2015-06-27 2018-04-24 Vmware, Inc. Implementing pseudo non-masking interrupts behavior using a priority interrupt controller
US9952895B2 (en) * 2015-06-27 2018-04-24 Vmware, Inc. Implementing pseudo non-masking interrupts behavior using a priority interrupt controller
CN110221861B (zh) * 2019-05-31 2023-08-29 常州市常河电子技术开发有限公司 一种cpu寄存器体系结构及其中断处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4365294A (en) * 1980-04-10 1982-12-21 Nizdorf Computer Corporation Modular terminal system using a common bus
US4604683A (en) 1984-12-10 1986-08-05 Advanced Computer Communications Communication controller using multiported random access memory
GB9012950D0 (en) * 1989-11-03 1990-08-01 Ibm Programmable interrupt controller
WO1993000638A1 (en) 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
US5384724A (en) * 1991-09-05 1995-01-24 Texas Instruments Incorporated Electronic circuit and method for half adder logic
DE69228980T2 (de) 1991-12-06 1999-12-02 Nat Semiconductor Corp Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
JPH0713772A (ja) * 1993-06-29 1995-01-17 Mitsubishi Electric Corp データ処理装置
JPH0721035A (ja) * 1993-07-02 1995-01-24 Mitsubishi Denki Eng Kk データ処理装置

Also Published As

Publication number Publication date
CN1286775A (zh) 2001-03-07
CN1328677C (zh) 2007-07-25
EP1049985A4 (de) 2001-12-19
EP1049985B1 (de) 2008-02-27
EP1049985A1 (de) 2000-11-08
WO1999034298A1 (en) 1999-07-08
WO1999034298A9 (en) 1999-10-28
AU2012599A (en) 1999-07-19
US6298410B1 (en) 2001-10-02
DE69839194D1 (de) 2008-04-10

Similar Documents

Publication Publication Date Title
DE69839194T2 (de) Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff
DE69930614T2 (de) VERFAHREN UND GERÄT ZUM HANDHABEN VON mehrfachen flanken- und zustandsausgelösten unterbrechungen
DE2722099C2 (de)
DE69926365T2 (de) Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2714805C2 (de)
DE2902465A1 (de) Datenverarbeitungsanordnung
DE3606211A1 (de) Multiprozessor-computersystem
DE3131341A1 (de) "pufferspeicherorganisation"
DE3610433A1 (de) Speicherprogrammierbares steuergeraet mit funktionsplaninterpreter
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE102013113262B4 (de) Auslöser-Leitwegeinheit
DE3642324A1 (de) Multiprozessoranlage mit prozessor-zugriffssteuerung
DE69531270T2 (de) Unterbrechungssteuerungsgeräte in symmetrischen Mehrprozessorsystemen
DE2626703A1 (de) Intern programmierbares datenverarbeitungssystem
DE3809831C2 (de)
DE69726400T2 (de) Festkörper-datenprozessor mit vielseitiger mehrquellen-unterbrechungsorganisation
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE3936339A1 (de) Controller fuer direkten speicherzugriff
DE10063915A1 (de) Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
EP0110199A2 (de) Verfahren zum Steuern des Datentransfers zwischen einem Datensender und einem Datenempfänger über einen Bus mit Hilfe einer am Bus angeschlossenen Steuereinrichtung
DE3247083A1 (de) Mehrprozessorsystem
DE19580638B4 (de) Computersystem und Verfahren zum Steuern eines Peripheriegeräts in einem Computersystem
EP1308846B1 (de) Datenübertragungseinrichtung
DE69938017T2 (de) Datenprozessor mit robuster Unterbrechungsverzweigung und Betriebsverfahren dazu

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806