-
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.