Hintergrund der Erfindung
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft eine Unterbrechungssteuerung zur Verwendung
in einem Mikrocomputer und insbesondere eine Unterbrechungssteuerung mit
einer Unterbrechungspriorität-Steuerfunktion.
Beschreibung des zugehörigen Standes der Technik
-
Allgemein ist eine Unterbrechungssteuerung zwischen einer zentralen
Verarbeitungseinheit (CPU) und einer Vielzahl peripherer Eingabe-/ausgabe-(I/O)-
Vorrichtungen angeordnet worden, und in normalen Fällen hat sie die folgenden
Funktionen:
-
(1) Sie dient zum Bestätigen einer Unterbrechungsanfrage von jeder der
peripheren Vorrichtungen und zum Bringen einer Unterbrechungsverarbeitungsanfrage
zur CPU;
-
(2) wenn von einer Vielzahl peripherer Vorrichtungen eine Vielzahl von
Unterbrechungsanfragen gleichzeitig erzeugt wird, dient sie zum Auswählen und Bestätigen
einer Unterbrechungsanfrage gemäß dem Prioritätsrang und zum Bringen einer
entsprechenden Unterbrechungsverarbeitungsanfrage zur CPU; und
-
(3) wenn die CPU gerade eine Unterbrechungsverarbeitung basierend auf der
Unterbrechungsanfrage ausführt, während eine weitere Unterbrechungsanfrage
mit einer Priorität, die höher als jene der Unterbrechungsanfrage entsprechend der
gerade ausgeführten Unterbrechungsverarbeitung ist, dient sie zum Bestätigen der
Unterbrechungsanfrage mit der hohen Priorität und zum Bringen einer
entsprechenden Unterbrechungsverarbeitungsanfrage zur CPU. Diese Funktion wird eine
"Unterbrechungs-Verschachtelungsfunktion" genannt, die auf der
Prioritätsreihenfolgesteuerung basiert.
-
Bei der oben angegebenen Unterbrechungsfunktion ist eine
Unterbrechungsanfrage, die während einer Ausführung der Unterbrechungsverarbeitung der CPU
bestätigt werden kann, auf solche beschränkt, die eine Priorität haben, die höher als jene
der Unterbrechungsanfrage ist, die der gerade ausgeführten
Unterbrechungsverarbeitung entspricht. Daher wird, selbst wenn eine Unterbrechungsanfrage mit
derselben Priorität wie jener der Unterbrechungsanfrage, die der gerade ausgeführten
Unterbrechungsverarbeitung entspricht, erzeugt wird, die später erzeugte
Unterbrechung nicht bestätigt, und sie wird daher in einem noch nicht behandelten Zustand
unentschieden gelassen.
-
In letzter Zeit sind Mikrocomputer auf verschiedenen Anwendungsgebieten
verwendet worden, und bei einigen zu realisierenden Systemen wird gewünscht, die
Unterbrechungs-Verschachtelungsfunktion für eine Unterbrechungsanfrage mit derselben
Priorität wie jener der Unterbrechungsanfrage auszuführen, die der gerade
ausgeführten Unterbrechungsverarbeitung entspricht. Jedoch ist eine
Unterbrechungssteuerung mit einer solchen Funktion noch nicht vorgeschlagen worden. Daher ist
diese Funktion softwaremäßig basierend auf einem Programm realisiert worden.
-
Gemäß der EP-A-0 230 512 ist es möglich, eine neue Unterbrechungsanfrage
zuzulassen, während eine Unterbrechung derselben Priorität in einem Hintergrundmodus
behandelt wird.
-
Gemäß MICROPROCESSORS AND MICROSYSTEMS, Bd. 10,10.5, Juni 1986,
London, Seiten 258-267 kann eine Unterbrechungsmodus-Ausführung höchster
Priorität durch eine andere Unterbrechung derselben Priorität unterbrochen werden.
Zusammenfassung der Erfindung
-
Demgemäß ist es eine Aufgabe der vorliegenden Erfindung, eine
Unterbrechungssteuerung zu schaffen, die die Unterbrechungs-Verschachtelungsfunktion für eine
später erzeugte Unterbrechungsanfrage ausführen kann, die dieselbe Priorität wie
jene einer Unterbrechungsanfrage hat, die einer gerade ausgeführten
Unterbrechungsverarbeitung entspricht.
-
Eine weitere Aufgabe der vorliegenden Erfindung ist es, eine
Unterbrechungssteuerung zu schaffen, die nicht nur in Systemen verwendet werden kann, bei denen
erforderlich ist, daß sie eine Unterbrechungs-Verschachtelungsfunktion für eine später
erzeugte Unterbrechungsanfrage mit derselben Priorität wie jener einer
Unterbrechungsanfrage haben, die einer gerade ausgeführten Unterbrechungsverarbeitung
entspricht, sondern auch in Systemen, für die es nicht erforderlich ist, dieselbe
Unterbrechungs-Verschachtelungsfunktion zu haben.
-
Die obigen und andere Ziele der vorliegenden Erfindung werden gemäß der
vorliegenden Erfindung durch eine Unterbrechungssteuerung erreicht, die folgendes
aufweist: eine Vorrichtung zum Halten einer Prioritätsinformation, die durch Bestimmen
einer Priorität erhalten wird, die aus einer Vielzahl von Prioritäten für jede einer
Vielzahl von Unterbrechungsanfragen ausgewählt wird, ein Flag zum Anzeigen, ob eine
Verschachtelung für eine Unterbrechungsanfrage zugelassen ist oder nicht, die
wenigstens eine vorbestimmte Priorität der Vielzahl von Prioritäten hat, und eine
Steuereinrichtung, die auf der Basis der in der Einrichtung gehaltenen
Prioritätsinformation und einer in dem Flag gehaltenen Information auf solche Weise arbeitet,
daß dann, wenn während einer Ausführung einer Unterbrechungsverarbeitung mit
der vorbestimmten Priorität eine Unterbrechungsanfrage erzeugt wird, wenn die in
dem Flag gehaltene Information in einem ersten Zustand ist, die Steuereinrichtung
die erzeugte Unterbrechungsanfrage nur bestätigt, wenn die Priorität der erzeugten
Unterbrechungsanfrage höher als die vorbestimmte Priorität ist, und wenn die in
dem Flag gehaltene Information in einem zweiten Zustand ist, die Steuereinrichtung
die erzeugte Unterbrechungsanfrage nicht nur bestätigt, wenn die Priorität der
erzeugten Unterbrechungsanfrage höher als die vorbestimmte Priorität ist, sondern
auch dann, wenn die Priorität der erzeugten Unterbrechungsanfrage dieselbe wie
die vorbestimmte Priorität ist.
-
Bei dem oben angegebenen Aufbau ist es möglich, die Verschachtelungsfunktion
für eine Vielzahl von Unterbrechungsanfragen mit der vorbestimmten Priorität
auszuführen. Zusätzlich wird durch die in dem Flag gesetzte Information gesteuert, ob
die Verschachtelungsfunktion realisiert wird oder nicht.
-
Bei einem bevorzugten Ausführungsbeispiel enthält die Steuereinrichtung eine
Einrichtung zum Erzeugen einer In-Betrieb-Prioritätsinformation, die eine für die gerade
ausgeführte Unterbrechungsverarbeitung bestimmte Priorität anzeigt, eine
Einrichtung zum Ändern eines Inhalts der In-Betrieb-Prioritätsinformation, um eine Priorität
anzuzeigen, die niedriger als die vorbestimmte Priorität ist, wenn die für die gerade
ausgeführte Unterbrechungsverarbeitung bestimmte Priorität die vorbestimmte
Priorität ist und wenn die in dem Flag gehaltene Information in dem zweiten Zustand
ist, und eine Einrichtung zum Bestätigen der während der Ausführung der
Unterbrechungsverarbeitung erzeugten Unterbrechungsanfrage, wenn die während der
Ausführung der Unterbrechungsverarbeitung erzeugte Unterbrechungsanfrage
höher als die durch die In-Betrieb-Prioritätsinformation angezeigte Priorität ist.
-
Bei einem weiteren bevorzugten Ausführungsbeispiel enthält die Steuereinrichtung
eine Einrichtung zum Erzeugen einer In-Betrieb-Prioritätsinformation, die eine für
die gerade ausgeführte Unterbrechungsverarbeitung bestimmte Priorität anzeigt,
eine Einrichtung zum Vergleichen der während der Ausführung der
Unterbrechungsverarbeitung erzeugten Unterbrechungsanfrage mit der durch die In-Betrieb-
Prioritätsinformation angezeigten Priorität, und eine Einrichtung zum Bestätigen der
erzeugten Unterbrechungsanfrage, wenn ein von der Vergleichseinrichtung
ausgegebenes Vergleichsergebnis auf einem ersten Pegel ist, und zum Nichtbestätigen
der erzeugten Unterbrechungsanfrage, wenn das von der Vergleichseinrichtung
ausgegebene Vergleichsergebnis auf einem zweiten Pegel ist. Wenn die in dem
Flag gehaltene Information im ersten Zustand ist, arbeitet die Vergleichseinrichtung,
um das Vergleichsergebnis nur dann auf den ersten Pegel zu bringen, wenn die
während der Ausführung der Unterbrechungsverarbeitung erzeugte
Unterbrechungsanfrage höher als die durch die In-Betrieb-Prioritätsinformation angezeigte
Priorität ist. Wenn die in dem Flag gehaltene Information im zweiten Zustand ist,
arbeitet die Vergichseinrichtung, um das Vergleichsergebnis nicht nur auf den
ersten Pegel zu bringen, wenn die während der Ausführung der
Unterbrechungsverarbeitung erzeugte Unterbrechungsanfrage höher als die durch die In-Betrieb-
Prioritätsinformation angezeigte Priorität ist, sondern auch, wenn die während der
Ausführung der Unterbrechungsverarbeitung erzeugte Unterbrechungsanfrage
dieselbe wie die durch die In-Betrieb-Prioritätsinformation angezeigte Priorität ist.
-
Die obigen und weitere Gegenstände, Merkmale und Vorteile der vorliegenden
Erfindung werden aus der folgenden Beschreibung bevorzugter Ausführungsbeispiele
der Erfindung unter Bezugnahme auf die beigefügten Zeichnungen klar.
Kurze Beschreibung der Zeichnungen
-
Fig. 1 ist ein Blockdiagramm eines Mikrocomputers, der ein erstes
Ausführungsbeispiel der Unterbrechungssteuerung gemäß der
vorliegenden Erfindung enthält;
-
Fig. 2 ist ein Blockdiag ramm eines inneren Aufbaus der
Verschachtelungssteuerung, die in dem in Fig. 1 gezeigten Mikrocomputer
enthalten ist;
-
Fig. 3 ist ein Blockdiagramm eines inneren Aufbaus des In-Betrieb-
Prioritätsinformationsgenerators, der in dem in Fig. 1
gezeigten Mikrocomputer enthalten ist;
-
Fig. 4 zeigt eine Beziehung zwischen Eingangsdaten und
Ausgangsdaten in dem
In-Betrieb-Prioritätsinformationsdecodierer, der in Fig. 2 gezeigt ist;
-
Fig. 5 ist ein Blockdiagramm eines inneren Aufbaus eines weiteren
Beispiels des In-Betrieb-Prioritätsinformationsgenerators;
-
Fig. 6 ist ein Blockdiagramm eines inneren Aufbaus eines weiteren
Beispiels des In-Betrieb-Prioritätsinformationsgenerators;
-
Fig. 7 ist ein Blockdiagramm eines inneren Aufbaus einer
Verschachtelungssteuerung, die in einem zweiten Ausführungsbeispiel
der Unterbrechungssteuerung gemäß der vorliegenden
Erfindung enthalten ist;
-
Fig. 8 ist ein Blockdiagramm eines inneren Aufbaus eines In-Betrieb-
Prioritätsinformationsgenerators, der in dem zweiten
Ausführungsbeispiel der Unterbrechungssteuerung gemäß der
vorliegenden Erfindung enthalten ist; und
-
Fig. 9 zeigt eine Beziehung zwischen Eingangsdaten und
Ausgangsdaten in dem in Fig. 7 gezeigten Prioritätskomparator.
Beschreibung der bevorzugten Ausführungsbeispiele
-
Nun werden Ausführungsbeispiele der Unterbrechungssteuerung gemäß der
vorliegenden Erfindung unter Bezugnahme auf die beigefügten Zeichnungen
beschrieben. Da jedoch die hierin zuvor erklärten Funktionen (1) und (2) und wohlbekannte
verschiedene Funktionen einschließlich einer Unterbrechungsmaskenfunktion und
einer Unterbrechungsvektor-Informationserzeugungsfunktion keine direkte
Beziehung zu der vorliegenden Erfindung haben, wird ein zum Realisieren dieser
Funktionen notwendiger Aufbau weggelassen, und nur die
Unterbrechungsverschachtelung wird gezeigt und erklärt. In der folgenden Beschreibung und in allen Figuren
sind denselben Funktionsteilen dieselben Bezugszeichen zugeordnet, und eine
doppelte Erklärung wird vermieden.
-
Unter Bezugnahme auf Fig. list ein Blockdiagramm eines Mikrocomputers gezeigt,
der eine Unterbrechungssteuerung 1 gemäß einem ersten Ausführungsbeispiel der
vorliegenden Erfindung enthält. Die Unterbrechungssteuerung 1 ist zwischen einer
zentralen Verarbeitungseinheit (CPU) 2 und einer Gruppe peripherer Eingabe-/
Ausgabe-(I/O)-Vorrichtungen 3 angeordnet und empfängt acht Arten von
Unterbrechungsanfragen von den peripheren I/O-Vorrichtungen 3 in der Form von
Unterbrechungsanfragesignalen 3-0 bis 3-7. Wenn eine Unterbrechungsanfrage bestätigt
wird, erzeugt die Unterbrechungssteuerung 1 ein
Unterbrechungsverarbeitungsanfragesignal 11 zu der CPU 2. Andererseits gibt die CPU 2 ein
Unterbrechungsverarbeitungs-Bestätigungssignal 21, das anzeigt, daß eine
Unterbrechungsverarbeitungsanfrage bestätigt ist, und ein Unterbrechungsverarbeitungs-Beendigungssignal
22, das anzeigt, daß die bestätigte Unterbrechungsverarbeitung beendet worden ist,
zu der Unterbrechungssteuerung 1 aus. Die Unterbrechungssteuerung 1, die CPU 2
und die peripheren I/O-Vorrichtungen 3 sind mittels eines Adressen-/Datenbusses 4
miteinander gekoppelt, so daß ein erforderliches Lesen/Schreiben von Daten über
den Bus 4 durchgeführt wird.
-
Die Unterbrechungssteuerung 1 enthält eine Verschachtelungssteuerung 10 und
einen In-Betrieb-Prioritätsinformationsgenerator 50. Die
Unterbrechungsanfragesignale 3-0 bis 3-7 werden der Verschachtelungssteuerung 10 zugeführt, und die
Verschachtelungssteuerung 10 erzeugt das
Unterbrechungsverarbeitungsanfragesignal 11. Das Unterbrechungsverarbeitungs-Bestätigungssignal 21 und das
Unterbrechungsverarbeitungs-Beendigungssignal 22, die durch die CPU 2 erzeugt
werden, werden jeweils der Verschachtelungssteuerung 10 und dem In-Betrieb-
Prioritätsinformationsgenerator 50 zugeführt. Die Verschachtelungssteuerung 10
gibt eine bestätigte Unterbrechungsprioritätsinformation 12, die eine für die
bestätigte Unterbrechungsanfrage bestimmte Priorität anzeigt, zu dem In-Betrieb-
Prioritätsinformationsgenerator 50 aus, und andererseits führt der In-Betrieb-
Prioritätsinformationsgenerator 50 der Verschachtelungssteuerung 10 In-Betrieb-
Prioritätsinformation 51 zu, die eine Priorität einer gerade von der CPU 2
ausgeführten U nterbrechungsverarbeitung anzeigt.
-
Gemäß Fig. 2 enthält die Verschachtelungssteuerung 10 Unterbrechungs-
Unterscheidungsschaltungen 200 (200-0 bis 200-7), die jeweils entsprechend den
Unterbrechungsanfragesignalen 3-0 bis 3-7 vorgesehen sind. Da diese
Unterbrechungs-Unterscheidungsschaltungen 200-0 bis 200-7 denselben Aufbau haben, ist
in Fig. 2 ein innerer Aufbau nur der Unterbrechungs-Unterscheidungsschaltung 200-
0 gezeigt. Die Unterbrechungs-Unterscheidungsschaltung 200 hat ein
Unterbrechungsflag 201, ein UND-Gatter 202, ein ODER-Gatter 203, einen
Prioritätskomparator 204 und ein Prioritätsbestimmungsregister 205, die verbunden sind, wie es in
Fig. 2 gezeigt ist. Wenn ein entsprechendes Unterbrechungsanfragesignal 3 erzeugt
wird, wird das Unterbrechungsflag 201 in einen gesetzten Zustand gebracht und
führt eine logische "1" zu dem zugehörigen UND-Gatter 202. Das
Prioritätsbestimmungsregister 205 hat zwei Bits PR1 und PR0 (PR1 ist eine höhere Stelle) zum
Halten einer Prioritätsreihenfolge oder eines Prioritätspegels, die bzw. der für die
entsprechende Unterbrechungsanfrage bestimmt ist.
-
Bei diesem Ausführungsbeispiel können vier Prioritätspegel derart gesetzt werden,
daß die Priorität in der genannten Reihenfolge von (0,0), (0,1), (1,0) und (1,1) der
zwei Bits PR1 und PR0 des Prioritätsbestimmungsregisters 205 niedriger wird.
Wenn nämlich die zwei Bits PR1 und PR0 des Prioritätsbestimmungsregisters 205
(0,0) sind, zeigt es die höchste Priorität, und wenn die zwei Bits PR1 und PR0 des
Prioritätsbestimmungsregisters 205 (1,1) sind, zeigt es die niedrigste Priorität. Als
Ergebnis wird wenigstens ein Prioritätspegel für eine Vielzahl von
Unterbrechungsanfragen bestimmt. Für jede der Unterbrechungsanfragen 3-0 bis 3-7 wird einer der
vier Prioritätspegel durch die CPU 2 bestimmt, d.h. er kann durch Verwendung
eines Programms frei gesetzt werden.
-
Der Prioritätskomparator 204 empfängt und vergleicht die durch die zwei Bits PR1
und PR0 des Prioritätsbestimmungsregisters 205 gegebene Priorität und eine In-
Betrieb-Priorität 501 und 502 (501 ist eine hohe Stelle und 502 ist eine niedrige
Stelle), die von einem In-Betrieb-Informationsdecodierer 500 zugeführt wird, der
hierin nachfolgend erklärt wird. Wenn die durch das Prioritätsbestimmungsregister
205 gegebene Priorität höher als die von dem In-Betrieb-Informationsdecodierer
500 zugeführte In-Betrieb-Priorität 501 und 502 ist, erzeugt der Prioritätskomparator
204 eine Ausgabe 206 einer logischen "1", die durch das ODER-Gatter 203 zu dem
UND-Gatter 202 geführt wird. Das ODER-Gatter 203 empfängt auch eine Ausgabe
503 von dem In-Betrieb-Informationsdecodierer 500.
-
Somit beurteilt, wenn eine entsprechende Unterbrechungsanfrage 3 erzeugt ist,
jede Unterbrechungs-Unterscheidungsschaltung 200 auf der Basis des Inhalts des
Prioritätsbestimmungsregisters 205 und der von dem
In-Betrieb-Informationsdecodierer 500 zugeführten In-Betrieb-Prioritätsinformation, ob die
erzeugte entsprechende Unterbrechungsanfrage 3 bestätigt werden soll oder nicht.
Wenn die Unterbrechungsanfrage 3 bestätigt wird, erzeugt die Unterbrechungs-
Unterscheidungsschaltung 200 eine entsprechende Unterbrechungsausgabe 207
von logisch "1 ".
-
Unterscheidungsausgaben 207-0 bis 207-7 der acht Unterbrechungs-
Unterscheidungsschaltungen 200-0 bis 200-7 werden einem ODER-Gatter 300
zugeführt, das das Unterbrechungsverarbeitungsanfragesignal 11 ausgibt. Somit wird,
wenn die Unterbrechungsanfrage erzeugt ist, die
Unterbrechungsverarbeitungsanfrage zu der CPU 2 erzeugt. Wenn die CPU 2 die
Unterbrechungsverarbeitungsanfrage bestätigt, sendet die CPU das Unterbrechungsverarbeitungs-
Bestätigungssignal 21 zu der Verschachtelungssteuerung 10.
-
In Antwort auf dieses Unterbrechungsverarbeitungs-Bestätigungssignal 21 und die
Unterscheidungsausgaben 207-0 bis 207-7 der acht Unterbrechungs-
Unterscheidungsschaltungen 200-0 bis 200-7 aktiviert eine Unterbrechungsflag-
Rücksetzschaltung 100 eines von Flag-Rücksetzsignalen 100-0 bis 100-7, das der
bestätigten Unterbrechungsanfrage entspricht, so daß ein entsprechendes
Unterbrechungsfiag 201 rückgesetzt wird.
-
Wenn die Unterbrechungsanfrage bestätigt wird, ist es notwendig, den
Prioritätspegel der bestätigten Unterbrechungsanfrage zu erfassen, und dem
In-Betrieb-Informationsgenerator 50 den erfaßten Prioritätspegel anzuzeigen. Zu diesem
Zweck sind acht Decodierer 400-0 bis 400-7 für eine bestätigte
Unterbrechungsprioritätsinformation jeweils entsprechend den acht Unterbrechungs-
Unterscheidungsschaltungen 200-0 bis 200-7 vorgesehen. Diese Decodierer haben
denselben Aufbau und ein innerer Aufbau nur des Decodierers 400-0 für eine
bestätigte Unterbrechungsprioritätsinformation ist gezeigt.
-
Der Decodierer 400 für eine bestätigte Unterbrechungsprioritätsinformation enthält
vier UND-Gatter 401 bis 404 mit Eingängen, die, wie es gezeigt ist, zum Empfangen
von vier Eingangssignalen angeschlossen sind. Ein erstes Eingangssignal zu dem
Decodierer 400 ist das Unterbrechungsverarbeitungs-Bestätigungssignal 21 von der
CPU 2, und ein zweites Eingangssignal ist die Unterscheidungsausgabe 207 der
entsprechenden Unterbrechungs-Unterscheidungsschaltung 200. Ein drittes und ein
viertes Eingangssignal sind die zwei Bits PR1 und PR0 des Prioritäts-
Bestimmungsregisters 205 in der entsprechenden Unterbrechungs
Unterscheidungsschaltung 200. Daher erzeugt, wenn man beispielsweise annimmt,
daß die Unterbrechungsanfrage 3-0 bestätigt wird und die bestätigte
Unterbrechungsanfrage 3-0 den Prioritätspegel (0,0) hat, das UND-Gatter 401 ein Signal von
logisch "1" in Antwort auf das Unterbrechungsverarbeitungs-Bestätigungssignal 21.
Wenn die Prioritätsordnung (0,1), (1,0) oder (1,1) ist, gibt das jeweilige UND-Gatter
402, 403 oder 404 das Signal von logisch "1" aus. Die Ausgaben der vier UND-
Gatter 401 bis 404 werden als Bit-Signale 12-0 bis 12-3 zugeführt, die die bestätigte
Unterbrechungsprioritätsinformation 12 bilden. Da die vier Prioritätspegel gesetzt
werden können, wie es hierin zuvor angegeben ist, wird nämlich die bestätigte
Unterbrechungsprioritätsinformation 12 aus vier Bits gebildet, so daß ein Bit der
bestätigten Unterbrechungsprioritätsinformation 12 entsprechend dem Prioritätspegel der
bestätigten Unterbrechungsanfrage aktiviert wird.
-
Auf der Basis der bestätigten Unterbrechungsprioritätsinformation 12 erzeugt der In-
Betrieb-Prioritätsinformationsgenerator 50 die In-Betrieb-Prioritätsinformation 51 in
Relation zu der Priorität der gerade von der CPU 2 ausgeführten
Unterbrechungsverarbeitung. Diese In-Betrieb-Prioritätsinformation 51 wird auch aus Vier-Bit-
Signalen 51-1 bis 51-3 gebildet. Grundsätzlich werden, wenn die Priorität der
gerade durch die CPU 2 ausgeführten Unterbrechungsverarbeitung jeweils (0,0), (0,1),
(1,0) oder (1,1) ist, die jeweiligen Bit-Signale 51-0, 51-1, 51-2 oder 51-3 zu logisch
"1" gebracht.
-
Auf der Basis der In-Betrieb-Prioritätsinformation 51 steuert der In-Betrieb-
Prioritätsinformationsdecodierer 500 den logischen Pegel der Ausgangs-Bit-Signale
501, 502 und 503, wie es in Fig. 4 gezeigt ist. Wenn nämlich alle Bit-Signale 51-1
bis 51-3 der In-Betrieb-Prioritätsinformation 51 "0" sind, bringt der Decodierer 500
das Bit-Signal 503 zu "1", so daß die Unterbrechungs-Unterscheidungsschaltung
200 arbeitet, um die erzeugte Unterbrechungsanfrage 3 ungeachtet der Ausgabe
206 des Komparators 204 zu bestätigen. In den anderen Situationen, nämlich dann,
wenn die Bit-Signale 51-1 bis 51-3 der In-Betrieb-Prioritätsinformation 51 nicht alle
"0" sind, erzeugt der Decodierer 500 die Ausgangsbits 501 und 502, die die In-
Betrieb-Priorität zeigen, auf der Basis der Position des Bits "1" in einem Muster der
Bit-Signale 51-1 bis 51-3, wie es in Fig. 4 gezeigt ist.
-
Gemäß Fig. 3 enthält der In-Betrieb-Prioritätsinformationsgenerator 50 vier Setz-
Rücksetz-(S-R)-Flip-Flops 601 bis 604 mit einem Setz-Anschluß 5, der
angeschlossen ist, um die jeweiligen Bit-Signale 12-0 bis 12-3 der bestätigten
Prioritätsinformation 12 zu empfangen. Zusätzlich ist ein Flag 700 vorgesehen, das anzeigt, ob die
Verschachtelung der Unterbrechungsanfrage desselben Prioritätspegels erlaubt ist
oder nicht. Dieses Flag kann mittels einer programmierten Verarbeitung durch die
CPU 2 zur logischen "0" oder logischen "1" geschrieben und neu geschrieben
werden. Bei diesem Ausführungsbeispiel wird, wenn das Flag 700 auf logisch "1"
gesetzt ist, die Verschachteung für denselben Prioritätspegel verhindert, und wenn
das Flag 700 auf logisch "0" gesetzt ist, wird die Verschachtelung für denselben
Prioritätspegel zugelassen. Darüber hinaus ist der Prioritätspegel, der die
Verschachtelung desselben Pegels zuläßt, nur der Pegel (1,1), nämlich der niedrigste
Prioritätspegel.
-
Zu diesem Zweck werden Q-Ausgaben der Flip-Flops 601 bis 603 ohne
Abänderung der In-Betrieb-Prioritätsinformation 51 als die Bit-Signale 51-0 bis 51-2
zugeführt. Andererseits werden die Q-Ausgabe des Flip-Flops 604 und eine Ausgabe
701 des Flags 700 einem UND-Gatter 750 eingegeben, so daß ein logisches
Produkt der Q-Ausgabe des Flip-Flops 604 und eine Ausgabe 701 des Flags 700 der
In-Betrieb-Prioritätsinformation 51 als das Bit-Signal 51-3 zugeführt wird.
-
Bei diesem Aufbau wird, selbst wenn die Unterbrechungsanfrage des
Prioritätspegels (1,1) bestätigt wird und das Flip-Flop 604 durch das Signal 12-3 gesetzt wird,
das in Antwort auf das Unterbrechungsverarbeitungs-Bestätigungssignal 21 erzeugt
wird, das durch die CPU 2 erzeugt wird, die eine Unterbrechungsverarbeitung
entsprechend der bestätigten Unterbrechungsanfrage begonnen hat, wenn das Flag
700 auf "0" gesetzt ist, die Q-Ausgabe des Fiip-Flops 604 maskiert, so daß das Bit-
Signal 51-3 auf "0" beibehalten wird. Andererseits wird, wenn das Flag 700 auf "1
gesetzt wird, wenn das Flip-Flop 604 gesetzt wird, das Bit-Signal 51-3 auf "1"
gebracht.
-
Die Flip-Flops 601 bis 604 werden jeweils durch eine Ausgabe der UND-Gatter 605
bis 608 rückgesetzt, die Eingänge aufweisen, die Eingangssignale empfangen, wie
es in den Zeichnungen gezeigt ist. Daher wird, wenn eine Vielzahl von Flip-Flops in
dem gesetzten Zustand ist, das an der höchsten Stelle positionierte Flip-Flop zuerst
von dem Unterbrechungsverarbeitungs-Beendigungssignal 22 rückgesetzt. Bei
diesem Aufbau wird, selbst wenn die Unterbrechungsverschachtelung durchgeführt
wird, die bestätigte Information der Unterbrechungsanfrage niedrigeren Pegeis
niemals verloren.
-
Nun wird die Operation der Schaltungen unter der Annahme erklärt, daß die
Unterbrechungsanfragen 3-0 bis 3-7 jeweils zu Prioritäten von (0,0), (0,1), (0,1), (1,0),
(1,0), (1,1), (1,1) und (1,1) bestimmt sind.
-
Nun wird angenommen, daß die Unterbrechungsanfrage 3-5 erzeugt und bestätigt
wurde. Die bestätigte Unterbrechungsprioritätsinformation 12 wird auf "0001"
gebracht, so daß das Flip-Flop 604 gesetzt wird. Andererseits beginnt die CPU 2 die
Unterbrechungsverarbeitung entsprechend der Unterbrechungsanfrage 3-5.
-
Wenn das Flag 700 auf "1" gesetzt wird, wird die In-Betrieb-Prioritätsinformation 51
auf "0001" gebracht. In Antwort auf diese In-Betrieb-Prioritätsinformation 51 bringt
der Decodierer 500 das Ausgangssignal 503 auflogisch "0" und die In-Betrieb-
Prioritätssignale 501 und 502 in einen Zustand von (1,1). Unter dieser Bedingung
behält der Prioritätskomparator 204 der entsprechenden Unterbrechungs-
Unterscheidungsschaltung 200-7, selbst wenn die Unterbrechungsanfrage 3-7
erzeugt wird, da die Unterbrechungsanfrage 3-7 den bestimmten Prioritätspegel von
(1,1) hat, seine Ausgabe 206 auf der logischen "0" bei. Daher wird die
Unterbrechungsanfrage 3-7 nicht bestätigt, und demgemäß wird sie in einem noch nicht
ausgeführten Zustand aufbewahrt.
-
Andererseits bringt, wenn eine Unterbrechung mit dem bestimmten Prioritätspegel,
der höher als der Prioritätspegel von (1,1) ist, beispielsweise die
Unterbrechungsanfrage 3-1, erzeugt wird, der Prioritätskomparator 204 der entsprechenden
Unterbrechungs-Unterscheidungsschaltung 200-1 seine Ausgabe 206 auflogisch "1". Daher
wird die Unterbrechungsanfrage 3-1 bestätigt, und das
Unterbrechungsverarbeitungsanfragesignal 11 zur CPU 2 wird erzeugt. In Antwort auf das
Unterbrechungsverarbeitungsanfragesignal 11 unterbricht die CPU 2 die Verarbeitung für die
Unterbrechungsanfrage 3-5 und speichert Daten, die zur Zeit eines Rücksprungs
erforderlich
sind, in einem Stapelbereich (nicht gezeigt) eines Speichers (nicht gezeigt).
Danach beginnt die CPU 2 die Verarbeitung für die Unterbrechungsanfrage 3-1. Als
Ergebnis wird die bestätigte Unterbrechungs-Bestimmungsinformation 12 auf "0100"
gebracht, und die In-Betrieb-Prioritätsinformation 51 wird auf "0101" gebracht.Somit
ändert der Decodierer 500 die In-Betrieb-Priorität 501 und 502 in einen Zustand von
(0,1). Als Ergebnis wird während der Ausführung der Verarbeitung für die
Unterbrechungsanfrage 3-1, wenn die Unterbrechungsanfrage 3-0 erzeugt wird, die Anfrage
bestätigt, aber selbst wenn die anderen Unterbrechungsanfragen erzeugt werden,
werden sie nie bestätigt.
-
Wenn die Verarbeitung für die Unterbrechungsanfrage 3-1 beendet worden ist,
erzeugt die CPU 2 sofort das Verarbeitungs-Beendigungssignal 22 und springt zu den
gespeicherten Daten zurück, um die Verarbeitung für die Unterbrechungsanfrage 3-
5 erneut zu beginnen. In Antwort auf das Verarbeitungs-Beendigungssignal 22 wird
das Flip-Fiop 602 rückgesetzt, aber das Flip-Flop 604 wird nicht rückgesetzt. Als
Ergebnis wird die In-Betrieb-Priorität zu (1,1) zurückgebracht.
-
Wie es oben angegeben ist wird, wenn das Flag 700 auf "1" gesetzt ist, die
Verschachtelung für Unterbrechungsanfragen 3-5 bis 3-7, die für die Priorität von (1,1)
bestimmt sind, verhindert, aber die Verschachteung für eine
Unterbrechungsanfrage mit einer höheren Priorität wird zugelassen.
-
Andererseits wird, wenn die Unterbrechungsanfrage 3-5 bestätigt wird, wenn das
Flag 700 in dem "0"-Zustand ist, die Q-Ausgabe des Flip-Flops 604 durch das UND-
Gatter 750 maskiert, so daß die In-Betrieb-Prioritätsinformation 51 zu "0000"
gebracht wird. Demgemäß wird, wenn die für dieselbe Priorität wie jene der
Unterbrechungsanfrage 3-5 bestimmte Unterbrechungsanfrage 3-6 oder 3-7 erzeugt wird,
die später erzeugte Unterbrechungsanfrage mit demselben Prioritätspegel bestätigt.
Die CPU 2 unterbricht die Verarbeitung für die Unterbrechungsanfrage 3-5 und führt
eine Verarbeitung für die später erzeugte Unterbrechungsanfrage 3-6 oder 3-7 aus.
Wenn diese Verarbeitung beendet worden ist und das Beendigungssignal 22
erzeugt wird, wird das Flip-Fiop 604 rückgesetzt. Jedoch wird, da die Q-Ausgabe des
Flip-Flops 604 durch das UND-Gatter 750 maskiert wird, das Rücksetzen des Flip-
Flops 605 keinen Einfluß haben.
-
Wie es aus der obigen Beschreibung klar wird, wird dann, wenn das Flag 700 auf
"0" gesetzt wird, die Verschachtelung zwischen den Unterbrechungsanfragen mit
dem niedrigsten Prioritätspegel ermöglicht. Aber dann, wenn das Flag 700 auf "1"
gesetzt wird, wird die Unterbrechungsverschachtelung gemäß der normalen
Prioritätsreihenfolge ausgeführt.
-
Wendet man sich der Fig. 5 zu, ist dort ein weiteres Beispiel des In-Betrieb-
Prioritätsinformationsgenerators 50 gezeigt. Bei diesem Beispiel ist das UND-Gatter
750 für das Bit-Signal 12-3 der bestätigten Prioritätsinformation 12 vorgesehen. Das
UND-Gatter 750 arbeitet nämlich, um die Q-Ausgabe des Flip-Flops 604 bei dem in
Fig. 3 gezeigten Beispiel zu maskieren, aber bei dem in Fig. 5 gezeigten Beispiel
zum Maskieren eines gesetzten Signals, das dem Flip-Fiop 604 zugefügt werden
soll. Daher arbeitet das in Fig. 5 gezeigte Beispiel im wesentlichen gleich dem
Beispiel, das in Fig. 3 gezeigt ist, und kann eine Funktion ausüben, die im wesentlichen
gleich der bie dem in Fig. 3 gezeigten Beispiel ist.
-
Der Prioritätspegel, bei dem die Unterbrechungsverschachtelung auf demselben
Prioritätspegel ermöglicht wird, ist beim oben angegebenen Ausführungsbeispiel auf
den niedrigsten Prioritätspegel (1,1) begrenzt, aber für die Verschachtelung
zwischen Unterbrechungsanfragen desselben Prioritätspegels kann ein beliebiger
Prioritätspegel ausgewählt werden, und zwar durch derartiges Entwickeln des
Aufbaus des In-Betrieb-Prioritätsinformationsgenerators 50, daß er diese Anforderung
erfüllt.
-
In Fig. 6 ist ein Beispiel des In-Betrieb-Prioritätsinformationsgenerators 50 gezeigt,
der die Anforderung erfüllen kann.
-
Vier Verschachtelungs-Zulassungsflags 801 bis 804 sind entsprechend den
jeweiligen vier Prioritätspegeln vorgesehen. Die Q-Ausgaben der Flip-Flops 601 bis 604
werden durch UND-Gatter 811 bis 814 jeweils auf der Basis von Information
maskiert oder nicht maskiert, die in den Flags 801 bis 804 gehalten wird. Ausgänge der
UND-Gatter 812, 813 und 814 sind jeweils mit ODER-Gattern 816, 817 und 188
verbunden. Diese ODER-Gatter 816, 817 und 818 sind angeschlossen, um auch
eine Ausgabe der jeweiligen UND-Gatter 812, 813 und 814 zu empfangen, von
denen jedes eine invertierte Information eines Flags einer genau höheren Stelle und
die Q-Ausgabe eines Flip-Flops einer genau höheren Stelle empfängt.
-
Beispielsweise werden zum Zulassen der Verschachtelung zwischen
Unterbrechungsanfragen des Prioritätspegels (0,0) und der Verschachtelung zwischen
Unterbrechungsanfragen des Prioritätspegels (1,0) die Flags 801, 802, 803 und 804
jeweils auf "0", "1","0" und "1" gesetzt. Nun wird unter der Annahme, daß eine
Unterbrechungsanfrage des Prioritätspegels (0,0) bestätigt wird, das Flip-Flop 601
gesetzt, aber die Q-Ausgabe des Flip-Flops 601 wird durch das UND-Gatter 811
maskiert. Andererseits gibt das UND-Gatter 821 die logische "1" aus, die durch das
ODER-Gatter 816 als das Bit-Signal 51-1 von "1" in der In-Betrieb-
Prioritätsinformation 51 zugeführt wird. Die CPU 2 führt nämlich eine Verarbeitung
für die Unterbrechungsanfrage des höchsten Prioritätspegels (0,0) aus, aber der In-
Betrieb-Prioritätspegel von (0,1) wird den jeweiligen Unterbrechungs-
Unterscheidungsschaltungen 200 zugeführt. Demgemäß wird, wenn eine weitere für
die höchste Priorität bestimmte Unterbrechungsanfrage erzeugt wird, diese
bestätigt. Natürlich wird, wenn gerade eine Unterbrechungsverarbeitung für eine
Unterbrechungsanfrage des Prioritätspegels (1,0) ausgeführt wird, wenn eine für die
höchste Priorität bestimmte Unterbrechungsanfrage erzeugt wird, diese bestätigt.
-
Bei dem oben angegebenen Ausführungsbeispiel wird während einer Ausführung
der Unterbrechungsverarbeitung für die Unterbrechungsanfrage, wenn eine weitere
für denselben Prioritätspegel bestimmte Unterbrechungsanfrage erzeugt wird, diese
bestätigt, und eine entsprechende Verarbeitung wird ausgeführt. In dieser Situation
sollte, selbst wenn die Unterbrechungsverarbeitung für die spätere
Unterbrechungsanfrage desselben Prioritätspegels beendet wird, das Flip-Flop 601 nicht
rückgesetzt werden, weil die unterbrochene Verarbeitung für die frühere
Unterbrechungsanfrage des Prioritätspegels (0,0) noch nicht beendet worden ist. Zu diesem
Zweck sind ein UND-Gatter 831, ein Aufwärts-/Abwärtszähler 841 und ein Zahl-"1"-
Detektor 851 für den höchsten Prioritätspegel vorgesehen, und eine Ausgabe des
Detektors 851 wird einem UND-Gatter 861 zum Rücksetzen zugeführt. Ein zweiter
Eingang des UND-Gatters 861 ist angeschlossen, um das
Unterbrechungsverarbeitungs-Beendigungssignal 22 zu empfangen, und ein Ausgang des UND-Gatters 861
ist an einen Rücksetzanschluß R des Flip-Flops 601 angeschlossen.
-
Der Aufwärts-/Abwärtszähler 841 hat einen Aufwärtsanschluß U, der angeschlossen
ist, um das Bit-Signal 12-0 der bestätigten Unterbrechungsprioritätsinformation 12
zu empfangen, und einen Abwärtsanschluß D, der an einen Ausgang des UND-
Gatters 831 angeschlossen ist, das wiederum die Q-Ausgabe des Flip-Flops 601
und das Unterbrechungsverarbeitungs-Beendigungssignal 22 empfängt. Der
Detektor 851 arbeitet, um zu erfassen, ob der Zahlenwert des Zählers 841 "1" ist oder
nicht, und um eine Ausgabe von logisch "1" zu erzeugen, wenn der Zahlenwert "1"
des Zählers 841 erfaßt wird.
-
Daher wird bei der obigen Beschreibung, wenn die Unterbrechungsverarbeitung für
die zuletzt erzeugte Unterbrechungsanfrage desselben Prioritätspegels beendet und
das Unterbrechungsverarbeitungs-Beendigungssignal 22 erzeugt wird, der
Zahlenwert des Zählers 841 "2", und daher wird die Ausgabe des Detektors 851 "0". Das
bedeutet, daß das Flip-Flop 601 nicht rückgesetzt wird. Nachdem die unterbrochene
Verarbeitung erneut begonnen worden ist, wird dann, wenn die erneut begonnene
Verarbeitung beendet ist, der Zahlenwert des Zählers 841 auf "1" gebracht. Zu
dieser Zeit wird das Flip-Flop 601 rückgesetzt. Aus gleichen Gründen sind UND-Gatter
832 und 833, Aufwärts-/Abwärts-Zähler 842 und 843 und Zahl-"1"-Detektoren 852
und 853 jeweils für die Flip-Flops 602 und 603 vorgesehen.
-
Die oben angegebenen Ausführungsbeispiele sind aufgebaut, um ein Zulassen und
ein Verhindern der Verschachtelung für eine zweite Unterbrechungsanfrage
desselben Prioritätspegels während der Ausführung der Unterbrechungsverarbeitung des
ausgewählten Prioritätspegels zu steuern. Jedoch ist es möglich, die
Verschachtelung für eine zweite Unterbrechungsanfrage desselben Prioritätspegels während der
Ausführung der Unterbrechungsverarbeitung irgendeines beliebigen Prioritätspegels
ungeachtet des Prioritätspegels der gerade ausgeführten
Unterbrechungsverarbeitung zu steuern. Ein weiteres Ausführungsbeispiel für diesen Zweck ist in Fig. 7
gezeigt.
-
Bei diesem Ausführungsbeispiel ist ein Verschachtelungs-Zulassungsflag 900 in der
Verschachtelungssteuerung 10 vorgesehen und ein Ausgang 901 des Flags 900 ist
gemeinsam an den Prioritätskomparator 204 der Unterbrechungs-
Unterscheidungsschaltungen 200-0 bis 200-7 angeschlossen. Nämlich jeder
Prioritätskomparator 204 antwortet nicht nur auf die bestimmte Priorität (PR1, PR0) des
Prioritäts-Bestimmungsregisters 205 und den In-Betrieb-Prioritätspegel (501, 502),
sondern auch auf die Ausgabe 901 des Verschachtelungs-Zulassungsflags 900, so
daß er das Vergleichsergebnis erzeugt, wie es in Fig. 9 gezeigt ist.
-
Wenn das Verschachtelungs-Zulassungsflag 900 auf "1" gesetzt ist, um die Flag-
Information 901 von "1" auszugeben, erzeugt jeder Prioritätskomparator 204 die
Ausgabe 206 von logisch "1" nur dann, wenn die bestimmte Priorität (PR1, PR0)
des Prioritäts-Bestimmungsregisters 205 höher als der In-Betrieb-Prioritätspegel
(501, 502) ist, was genauso wie beim oben angegebenen Ausführungsbeispiel ist.
Andererseits erzeugt, wenn das Verschachtelungs-Zulassungsflag 900 auf "0"
gesetzt ist, jeder Prioritätskomparator 204 die Ausgabe 206 von logisch "1" nicht nur
dann, wenn die bestimmte Priorität (PR1, PR0) des Prioritäts-Bestimmungsregisters
205 höher als der In-Betrieb-Prioritätspegel (501, 502) ist, sondern auch dann, wenn
die bestimmte Priorität (PR1, PR0) des Prioritäts-Bestimmungsregisters 205 gleich
dem In-Betrieb-Prioritätspegel (501, 502) ist.
-
Somit wird, welchen Prioritätspegel die gerade ausgeführte Verarbeitung auch
immer hat, wenn eine zweite Unterbrechungsanfrage mit demselben Prioritätspegel
wie jenem der gerade ausgeführten Unterbrechungsverarbeitung erzeugt wird, die
zweite Unterbrechungsanfrage bestätigt, wenn das Verschachtelungs-
Zulassungsflag 900 "0" ist, und eine Verarbeitung für die zweite
Unterbrechungsanfrage wird ausgeführt. Natürlich wird dann, wenn eine zweite
Unterbrechungsanfrage des Prioritätspegels erzeugt wird, der höher als jener der gerade ausgeführten
Unterbrechungsverarbeitung ist, die zweite Unterbrechungsanfrage bestätigt, aber
die Unterbrechungsanfrage mit einem niedrigeren Prioritätspegel wird aufbewahrt.
Wenn das Verschachtelungs-Zulassungsflag 900 "1" ist, wird nur eine
Unterbrechungsanfrage des Prioritätspegels bestätigt, der höher als jener der gerade
ausgeführten Unterbrechungsverarbeitung ist.
-
Bei diesem Ausführungsbeispiel kann der In-Betrieb-Prioritätsinformationsgenerator
50 aufgebaut sein, wie es in Fig. 8 gezeigt ist. Wie es aus einem Vergleich
zwischen den Fig. 6 und 8 zu sehen ist, enthält der in Fig. 8 gezeigte In-Betrieb-
Prioritätsinformationsgenerator 50 kein Verschachtelungs-Zulassungsflag und
zugehörige Gatter, sondern enthält zusätzlich eine Flip-Flop-Rücksetzsteuerschaltung,
die für das Flip-Flop 604 vorgesehen ist und die ein UND-Gatter 834, einen
Aufwärts-/Abwärts-Zähler 844 und einen Zahl-"1 "-Detektor 854 aufweist.
-
In dem in Fig. 8 gezeigten In-Betrieb-Prioritätsinformationsgenerator 50 ist es
möglich, das Zulassungsflag 900 für jede der Unterbrechungs-
Unterscheidungsschaltungen 200 vorzusehen, was genauso wie bei dem in Fig. 6
gezeigten Beispiel ist. Bei diesem abgeänderten Beispiel ist es möglich, die
Verschachtelungssteuerung für Unterbrechungsanfragen derselben Priorität für jede
der Unterbrechungen 3-0 bis 3-7 auszuwählen.
-
Wie es aus dem Obigen erkannt wird, kann die Unterbrechungssteuerung gemäß
der vorliegenden Erfindung die Unterbrechungsverschachtelung nicht nur für eine
Unterbrechungsanfrage eines höheren Prioritätspegels ausführen, sondern auch für
eine Unterbrechungsanfrage desselben Prioritätspegels. Daher kann die
Unterbrechungssteuerung gemäß der vorliegenden Erfindung die Leistungsfähigkeit und
Funktion aufgebauter Systeme erhöhen.
-
Die Erfindung ist somit unter Bezugnahme auf die bestimmten Ausführungsbeispiele
gezeigt und beschrieben worden. Anstelle eines Verwendens der
Aufwärts-/Abwärts-Zähler in den in den Fig. 6 und 8 gezeigten In-Betrieb-
Prioritätsinformationsgeneratoren ist es möglich, das Verarbeitungs-
Beendigungssignal 22 zu maskieren, wenn die Verarbeitung der durch die
Verschachtelung mit demselben Prioritätspegel verursachten Unterbrechung beendet
ist. Zusätzlich ist es möglich, die Anzahl der Unterbrechungsanfragen und die
Anzahl der Prioritätspegel zu verändern oder zu modifizieren.