DE2629459C2 - - Google Patents
Info
- Publication number
- DE2629459C2 DE2629459C2 DE2629459A DE2629459A DE2629459C2 DE 2629459 C2 DE2629459 C2 DE 2629459C2 DE 2629459 A DE2629459 A DE 2629459A DE 2629459 A DE2629459 A DE 2629459A DE 2629459 C2 DE2629459 C2 DE 2629459C2
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- level
- program
- register
- block
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Description
Die vorliegende Erfindung bezieht sich auf eine Unterbrechungsverarbeitungsanordnung
in einem Datenverarbeitungssystem der
aus dem Oberbegriff des Patentanspruchs 1 ersichtlichen Gattung.
Datenverarbeitungssysteme enthalten in der Regel zahlreiche
Unterbrechungsquellen, wobei auf eine Unterbrechungsanforderung
von den betreffenden Unterbrechungsquellen her ein
Unterbrechungsbetrieb festgelegt wird.
Unterbrechungsverarbeitungsanordnungen sind bei Datenverarbeitungssystemen
bereits bekannt. So werden beispielsweise Unterbrechungssignale
von peripheren Geräten, die an eine Eingabe/
Ausgabe-Busleitung angeschlossen sind und die die Funktion
einer Unterbrechungsquelle haben, an das Datenverarbeitungssystem
übermittelt, das nach Aufnahme und Erkennen dieses
Signals einen Unterbrechungsbetrieb festlegt und einleitet.
Für die Einleitung eines solchen Unterbrechungsbetriebs ist
es erforderlich, daß die die Unterbrechung anfordernde periphere
Einrichtung identifiziert und ihr Status angefordert
und sodann bestimmt wird. Diese Prozesse sind relativ zeitaufwendig,
so daß bei einer häufigeren Ausführung von Unterbrechungsroutinen
dem gesamten System Geschwindigkeitseinschränkungen
auferlegt sind. Eine Unterbrechungsverarbeitungsanordnung
dieser Art ist beispielsweise in der US-Patentschrift
38 81 174 beschrieben. Auf die Quittierung einer
von dem betreffenden peripheren Gerät ausgesandten Unterbrechungsanforderung
sendet dieses periphere Gerät seine Adresse
und seinen Programmstatus gleichzeitig an eine Recheneinrichtung
im Datenverarbeitungssystem, woraufhin der Unterbrechungsbetrieb
eingeleitet wird.
Nun kommt es aber auch vor, daß Unterbrechungsanforderungen
nicht nur von peripheren Geräten, die mit der Recheneinrichtung
verbunden sind, ausgehen, sondern auch von internen Unterbrechungsquellen
kommen können, wie beispielsweise von
den im Datenverarbeitungssystem ausgeführten Rechenprogrammen.
Für die Verarbeitung auch derartiger interner Unterbrechungsanforderungen
ist es zur Ermöglichung einer zuverlässigen
Unterbrechungsbedienung erforderlich, daß zwischen den unterschiedlichen
Typen von Unterbrechungsanforderungen und auch
zwischen den unterschiedlichen Unterbrechungsprioritätsstufen
oder Ebenen der Unterbrechbarkeit (nachfolgend mit Unterbrechungsebenen
bezeichnet), die den Unterbrechungsanforderungen
zugeordnet sind, unterschieden werden kann bzw. daß die jeweils
zugeordneten Unterbrechungsebenen entsprechend berücksichtigt
werden dahingehend, daß höhere Unterbrechungsebenen
höherrangig sind als niedrigere Unterbrechungsebenen, so daß
in einer niedrigeren Unterbrechungsebene laufende Programme
unterbrochen werden zugunsten einer Unterbrechungsanforderung
mit einer höheren Unterbrechungsebene. All dies zu berücksichtigen
erfordert komplexe Schaltungsanordnungen und benötigt
einen entsprechenden Zeitaufwand, um die Unterbrechungsbedienung
systemgerecht einzuleiten.
In der Datenverarbeitungstechnik sind auch sogenannte Vorrangzugriffssysteme
bekannt geworden (z. B. DE-Offenlegungsschrift
23 58 545), bei denen die Prioritätsstufen, auch Vorrangebenen
genannt, verschiedener Unterbrechungsanforderungen programmgesteuert
verändert werden können. Dazu ist ein besonderer
Zentralprozessor mit einem veränderbaren Vorrangnetz zur wahlweisen
Zuteilung einer Vorrangebene vorgesehen. Von dieser
Technik macht die vorliegende Erfindung jedoch keinen Gebrauch.
Bei der US-Patentschrift 38 25 902 ist eine Behandlung von Unterbrechungsanforderungen
verschiedener Vorrangebenen beschrieben,
wobei diese Ebenen untereinander in Verbindung stehen,
aber keine Möglichkeit vorgesehen ist, die Vorrangebenen zu
ändern.
Eine weitere Anordnung eines Vorrangzugriffssystems ist schließlich
in der US-Patentschrift 33 33 252 offenbart, die jedoch
sowohl von anderer Struktur als auch von anderer Funktion als
diejenige des Gegenstandes der Erfindung ist. Es handelt sich
dabei vielmehr um ein zeitabhängiges Prioritätssystem, bei
dem die Zuweisung verschiedener Prioritätsstufen programmunabhängig
erfolgt. Dabei ist es das Ziel zu vermeiden, daß Programme
niedriger Priorität im Aufruf zur Verarbeitung vernachlässigt
werden, weil sie wegen ihrer niedrigen Priorität
am Ende der Warteschlange stehen. Eine Modifikation der Priorität
erfolgt streng zeitabhängig mit dem Ziel, daß irgendwann
einmal auch ein Programm mit niedriger Prioritätsstufe aufgerufen
wird. Programmunterbrechungen sind in diesem System
nicht vorgesehen.
Der Erfindung liegt die Aufgabe zugrunde, eine Unterbrechungsverarbeitungsanordnung
in einem Datenverarbeitungssystem zu
schaffen, das ein gegenüber aus dem Stand der Technik bekannten
Unterbrechungsbedienungsmechanismen eine flexiblere Unterbrechungsverarbeitungsanordnung
umfaßt, wobei in erster Linie
die Unterbrechbarkeit von im Datenverarbeitungssystem ausgeführten
Programmen zeitverzugslos variierbar sein soll, insbesondere
im Hinblick auf eine Herabsetzung der Unterbrechbarkeit
gerade ablaufender Programme.
Gelöst wird die vorstehend aufgezeigte Aufgabe mit Hilfe
einer Unterbrechungsverarbeitungsanordnung, die die im
kennzeichnenden Teil des Patentanspruchs 1 aufgeführten
Merkmale aufweist.
Die Unterbrechungsverarbeitungsanordnung findet in einem
Datenverarbeitungssystem, das zahlreiche Unterbrechungsquellen
aufweist, Anwendung. Auf Unterbrechungsanforderungs-,
Programmstatus- und Unterbrechungsebenensignale hin werden
in dem Datenverarbeitungssystem Maßnahmen zur Unterbrechungsbedienung
eingeleitet, die auf die gerade in Verarbeitung befindlichen,
in einer bestimmten Unterbrechungsebene ablaufenden
Programme Einfluß nehmen. Dabei kann ein vom Programm
selbst oder ein von irgendeiner anderen Unterbrechungsquelle
erzeugtes Ebenenänderungssignal diese bestimmte Unterbrechungsebene
auf einen anderen Unterbrechungsprioritätswert
verändern, der dieses gerade in Verarbeitung befindliche
Programm gegenüber anderen Unterbrechungsquellen beispielsweise
in einen schwer unterbrechbaren Zustand versetzt.
Eine solche Änderung der Unterbrechungsebene wird
bewirkt, ohne daß dabei die Ausführung des gerade ablaufenden
Programms eine Unterbrechung erfährt. Die Unterbrechungsebenen
werden in Zahlenwerten angegeben, wobei die erste
Zahl die höchste und die letzte Zahl die niedrigste Unterbrechungsebene
angibt. Für jeden unterschiedlichen Zahlenwert
der Unterbrechungsebenen ist in einem Speicher ein eigener Speicherbereich
vorgesehen. Die vom Programmablauf her gerade
aktuelle Unterbrechungsebenenzahl liefert ein Hinweissignal,
genannt Zeiger, das eine Beziehung zu einem derartigen Speicherbereich
herstellt, wo die Abspeicherung von Daten möglich
ist, die im Verlauf der Programmabarbeitung in irgendeinem der
Register des Datenverarbeitungssystems temporär gespeichert
sind. Auf das Unterbrechungsebenen-Änderungssignal hin wird
eine neue Unterbrechungsebenenzahl bereitgestellt, die - wie
auch die aktuelle Unterbrechungsebenenzahl - auf denselben
Speicherbereich hinweist, so daß es nicht mehr nötig ist,
eine Verschiebung oder einen Transfer der in solchen Registern
befindlichen Daten durchzuführen, wie es gemäß dem Stand der Technik
erforderlich wäre, wenn ein Programm mit höherer Unterbrechungspriorität
ein anderes Programm unterbricht.
Anhand von Zeichnungen wird die Erfindung nachstehend beispielsweise
näher erläutert.
Es zeigt
Fig. 1 ein Blockdiagramm mit den verschiedenen Einheiten eines
Datenverarbeitungssystems, in dem die Erfindung realisiert ist;
Fig. 2 das Format eines Unterbrechungssignals;
Fig. 3 das Format eines Speicherplatzes in einem Unterbrechungssicherstellungs-
Speicherbereich;
Fig. 4 ein Flußdiagramm zur Veranschaulichung der Arbeitsweise
der vorliegenden Erfindung;
Fig. 5 ein Blockdiagramm der Unterbrechungsverarbeitungsanordnung;
Fig. 6 ein detailliertes Blockdiagramm für die Schaltung zum
Setzen und Löschen von Unterbrechungskennzeichen;
Fig. 7 ein detailliertes Blockdiagramm für die Schaltung der
Unterbrecherdekodierlogik, die auf ein Unterbrechungssignal
hin die verschiedenen, für die Unterbrechungsbedienung benötigten
Signale erzeugt;
Fig. 8 ein detailliertes Blockdiagramm für die Schaltung zur
Abtastung und Bearbeitung einer Unterbrechung;
Fig. 9 ein detailliertes Blockdiagramm für die Schaltung zum
Sicherstellen und Wiederherstellen der Registerinhalte; und
Fig. 10 ein detailliertes Blockdiagramm mit den Ausführungsschaltmitteln,
welche die Ausführung eines laufenden Programmteils
in einer geänderten Unterbrechungsebene bewirken.
Im folgenden wird eine bevorzugte Ausführungsform der
Erfindung im einzelnen beschrieben. Der Unterbrechungsmechanismus
der vorliegenden Erfindung ist in dem in Fig. 1
generell gezeigten Datenverarbeitungssystem enthalten. Die gemeinsame Busleitung
400 ist mit einem Ende an einer Zentraleinheit 402
und am anderen Ende an zumindest einer Speichereinrichtung 404
angeschlossen. Außerdem können an der Busleitung verschiedene
periphere Geräte und Steuereinrichtungen angeschlossen sein, die zur
Steuerung von Band- oder Magnetplattenspeichern,
zur Steuerung von Nachrichtenübertragungseinrichtungen, bzw. zur
Steuerung von Logik-
und Recheneinheiten und von anderen peripheren Aufzeichnungseinrichtungen,
z. B. Kartenlesern, dienen. Derartige
periphere Einrichtungen sind durch die Steuereinrichtungen
406 und 408 generell dargestellt. Dabei
steuert die Steuereinrichtung
406 zwei oder mehr periphere Geräte
oder Einrichtungen 410 und 412.
Die Unterbrechungsstruktur der vorliegenden Erfindung ermöglicht
die Aufnahme von Unterbrechungen durch die Zentraleinheit
402 von irgendeiner der an der Busleitung 400 angeschlossenen
Einrichtungen. Demgemäß kann die Steuereinrichtung
406 beispielsweise eine Unterbrechung erzeugen. Derartige
Unterbrechungen, die von an der Busleitung angeschlossenen
Einrichtungen aufgenommen werden, werden als externe Unterbrechungen
bezeichnet. Darüber hinaus können Unterbrechungen
innerhalb der Zentraleinheit unter Rechnerprogrammsteuerung
erzeugt werden.
Die in dem System erzeugten Unterbrechungen werden, unabhängig
davon, ob sie externe oder interne Unterbrechungen
für die Zentraleinheit 402 sind, asynchron
in bezug auf die Operation des Systems erzeugt, wobei
das laufende Rechnerprogramm in dem
Prozessor 402 verarbeitet wird. Die Unterbrechungen können
hinsichtlich ihrer Quelle in der zuvor erwähnten Weise entweder
als externe oder als interne Unterbrechungen für den
Prozessor 402 klassifiziert werden. Extern erzeugte Unterbrechungen
können so durch irgendeines der folgenden
Ereignisse erzeugt sein: Eine periphere Einrichtung einer
Einheit erfordert eine Bedienung; es ist ein Speisespannungsausfall
aufgetreten; es liegt eine Zeitsperre vor, die über eine
Überwachungs-Zeitsteuereinrichtung hervorgerufen sein kann
oder durch eine Echtzeit-Taktschaltung, die z. B. anzeigt, daß
eine Operation innerhalb einer vorgeschriebenen Zeit nicht
stattgefunden hat. Interen erzeugte Unterbrechungen können
durch einen besonderen Befehl erzeugt sein, der als LEV-Befehl angezeigt
ist, worauf weiter unten im Zusammenhang mit Fig. 2 noch im
einzelnen eingegangen werden wird.
Den Unterbrechungen in dem System sind verschiedene Prioritätsebenen
bzw. Prioritätsstufen zugehörig. Jedes Rechnerprogramm
in der Zentraleinheit wird mit einer Prioritätsebene,
die durch einen 6-Bit-Ebenencode festgelegt ist, ausgeführt.
Das Rechnerprogramm in der Zentraleinheit 402
kann durch ein Ereignis unterbrochen werden, das eine Prioritätsebene
besitzt, die z. B. "höher" ist als die Prioritätsebene
des gerade laufenden, aktuellen Programms. Eine Ebene,
die gleich Null ist, besitzt die höchste Priorität für eine Programmunterbrechung, und die
Ebenen mit höherer Zahl besitzen eine geringere Priorität.
In einem System können mehrere Unterbrechungsebenen benutzt
sein, z. B. 64 verschiedene Ebenen
von dem Nummernwert 0 bis zum Nummernwert 63. Dabei
besitzt die Ebene mit dem Nummernwert 63 die niedrigste Priorität. Der jeweiligen
Ebene ist ein entsprechender Unterbrechungsvektor
(IV) zugehörig, der in einem zur Verfügung gestellten
Speicherplatz (Unterbrechungsvektoren-Registerstelle) gespeichert ist. Der Unterbrechungsvektor
ist ein Zeiger bzw. ein Hinweissignal auf einen Unterbrechungssicherstellungsspeicherbereich (ISA). Wenn
ein laufendes Programm unterbrochen wird, sein Status zur Zeit der Programmunterbrechung
im entsprechenden Unterbrechungs-Sicherstellungsbereich
gespeichert. Der Status der Programmunterbrechung
wird aus dem Unterbrechungs-Sicherstellungsbereich
der Unterbrechungsebene bereitgestellt.
Dieser Unterbrechungsprozeß beginnt dann mit der Programmausführung
bei seiner festgelegten Ebene. Dabei können verschiedene
Programme in unterschiedlichen Ebenen
ablaufen. Ferner kann einem Programm mehr
als eine Ebene zugehörig sein. So kann z. B. normalerweise
das Programm bei einer Ebene ablaufen, und wenn das betreffende
Programm beginnt, eine Ausführung an einer Stelle vornehmen,
an der es nicht wünscht, unterbrochen zu werden - abgesehen
von einem Speisespannungsausfall - kann eine Ebenenänderung
zu einer Ebene niedrigerer Nummer hin erfolgen, so daß der
betreffende Vorgang weniger unterbrechbar ist. Den 64 verschiedenen
Ebenen kann ein 64-Bit-Register zugehörig sein
(das z. B. in demselben Speicher vorgesehen sein kann), um anzuzeigen,
welche Ebenen gerade aktiv sind, d. h. welche Ebenen
und demgemäß Programme für eine Ausführung bereit sind. Üblicherweise
entspricht die gerade vorliegende aktuelle Ebene der höchstwertigen
Bitgruppe. Diese 64 Bits werden als Aktivitätskennzeichenbits
bezeichnet und durch die externen Unterbrechungsanforderungen
gesetzt und durch den intern in dem Prozessor 402
erzeugten LEV-Befehl gesetzt und/oder gelöscht.
Wenn eine externe Unterbrechung auftritt, wird der Unterbrechungsvektor
für die unterbrochene Ebene abgeleitet, der
einen Zugriff auf den Unterbrechungs-Sicherstellungsbereich
bewirkt, in welchem der Inhalt von ausgewählten Registern des Prozessors 402
gespeichert ist.
Diese Register enthalten z. B. den Programmzähler und andere
Spezialregister, wie z. B. üblicherweise benutzte Speicherregister
sowie andere den Programmstatus bestimmende Generalregister. In Abhängigkeit von
der Anzahl derartiger Register, deren Inhalt reserviert werden
muß, und unter der Annahme, daß beispielsweise die Anzahl
derartiger Register nicht größer als 16 ist, steuert ein 16-Bit-
Unterbrechungs-Sicherstellungs-Maskenregister (ISM), welches
z. B. in dem Unterbrechungs-Sicherstellungsbereich enthalten
sein kann, den zu reservierenden Teilsatz der Register. Der
Unterbrechungsvektor für die Unterbrechungsebene wird in
ähnlicher Weise dazu herangezogen, einen Zugriff zu dessen
Unterbrechungs-Sicherstellungsbereich zu gewährleisten, aus dem
der zuvor reservierte Inhalt der Register wieder zurück in
derartige Register geladen wird. Die Kennung des Unterbrechungskanals
ist in einer Speicherstelle des betreffenden
Unterbrechungs-Sicherstellungsbereichs gespeichert. Das Format
einer derartigen Speicherstelle ist in Fig. 3 gezeigt. Die
Bits 0 bis 9 geben die Kanalkennung und die
Bits 10 bis 15 geben die Unterbrechungsebene an.
Wenn der Unterbrechungsvektor der Unterbrechungsebene eine
ungültige Adresse enthält, dann wird die Unterbrechung nicht
berücksichtigt. So kann beispielsweise insbesondere in dem
Fall, daß der Unterbrechungsvektor nur aus Nullen besteht,
dieser Vektor nicht ein richtiger Unterbrechungsvektor sein,
da per Definition der Vektor auf den Unterbrechungs-Sicherstellungsbereich
hinweisen muß, der z. B. an einer anderen
Stelle als an der Null-Stelle beginnt. Wenn eine Unterbrechung
berücksichtigt wird, erfolgt eine Abtastung der Aktivitätskennzeichenbits,
wie dies nachstehend noch beschrieben wird.
Wenn der Unterbrechungsvektor des Unterbrechungskanals derselbe
ist wie der Vektor der gerade ausgeführten Unterbrechungsebene,
d. h. z. B. eine schnelle Ebenenänderung, dann
werden die Sicherung und Wiederabspeicherung des
Programmstatus umgangen, und die vorliegende
Ebene kann die Ausführung beibehalten. In einem solchen Fall
braucht somit die Reservierung der Register der unterbrochenen
Ebene und die Wiederabspeicherung des Inhalts der Register
der Unterbrechungsebene nicht durchgeführt zu werden.
Die intern erzeugte Unterbrechung des Prozessors 402 ist daher
im Format eines LEV-Befehls vorgesehen, der als Parameter
die angezeigten Felder und seinen in Fig. 2 gezeigten Operanden
besitzt. Der Befehl wird zum Setzen oder Löschen (Zurückstellen)
der Aktivitätskennzeichenbits und entweder zur
Sperrung oder Freigabe von Unterbrechungen benutzt. Der LEV-
Befehl weist grundsätzlich vier Felder für Unterbrechungsstatussignale auf, um verschiedene
Maßnahmen zu steuern. Die vier Grundfelder sind das S-Feld
in der Bitstelle 0, das D-Feld in der Bitstelle 1, das Q-Feld
in der Bitstelle 8 und das L-Feld in den Bitstellen 10 bis 15.
Die Bits 2 bis 7 und 9 werden nicht benutzt. Die Felder besitzen
folgende Bedeutungen: S bedeutet Aussetzen der gerade
vorhandenen Ebene, D bedeutet Zurückstellen von Unterbrechungen,
Q bedeutet eine schnelle Ebenenänderung, wie dies nachstehend
beschrieben werden wird, L definiert die Unterbrechungsebenennummer.
Die verschiedenen Maßnahmen, die auf das Setzen
oder Zurückstellen derartiger Bits ausgeführt werden, hängen
vom Binärzustand der Bits S, D und Q in dem LEV-Befehl gemäß
Fig. 2 ab. In einigen Fällen spielt es keine Rolle, in welchem
Binärzustand sich das Bit für ein bestimmtes Feld befindet,
wie dies im folgenden beschrieben wird.
Die verschiedenen Kombinationen der Unterbrechungsstatussignale S, D und Q werden
nachstehend als erster Zustand, zweiter Zustand, etc. bis
fünfter Zustand bezeichnet. Der erste Zustand bzw. die erste
Bedingung liegt dann vor, wenn die Bits S, D und Q
alle binäre Nullen sind. Dies bedeutet, daß die Ebene L
erfaßt bzw. eingetragen wird und daß die
eingetragene Ebene mit der höchsten Priorität abgetastet und abgefertigt wird.
Der zweite Zustand bzw. die zweite Bedingung liegt dann vor,
wenn die Bits S und Q binäre Nullen und das D-Bit eine
binäre 1 aufweisen. Dies bedeutet, daß die Ebene L eingetragen
wird, daß aber keine weitere Maßnahme als Ergebnis dieses Befehls
vorgenommen wird. Der dritte Zustand bzw. die dritte Bedingung
liegt dann vor, wenn das Q-Bit eine binäre 1 und das
S-Bit eine binäre 0 enthält, während der Inhalt des D-Bits
keine Rolle spielt, was bedeutet, daß das D-Bit
entweder eine binäre 1 oder eine binäre 0 enthalten kann.
Dies bedeutet, daß eine Sperre bezüglich der Ebene L vorhanden
ist. Der vierte Zustand bzw. die vierte Bedingung liegt
dann vor, wenn das S-Bit eine binäre 1 enthält und wenn das
Q-Bit eine binäre 0 enthält, während der Inhalt des D-Bits
keine Rolle spielt. Dies bedeutet, daß die Ebene L einzutragen
ist, so daß die gerade vorhandene Ebene unterbrochen
wird und daß die mit der höchsten Priorität eingetragene
Ebene abgetastet und abgefertigt wird. Die fünfte Bedingung
bzw. der fünfte Zustand liegt in dem Fall vor, wenn
die beiden S- und Q-Bits binäre Einsen enthalten und der
Inhalt des D-Bits keine Rolle spielt. Dies bedeutet, daß eine
Sperrung der Ebene L vorliegt und daß die vorhandene Ebene
unterbrochen wird.
Um die obigen fünf Zustände zu verstehen, wird nunmehr die
Erläuterung der Bedeutung der bei der Beschreibung der bestimmten
Bits benutzten Wörter vorgenommen. Der Ausdruck "Eintragen"
bedeutet, daß das Aktivitätskennzeichen für die
spezifizierte Ebene gesetzt wird. Der Ausdruck "Abtasten und
Erledigen" bedeutet, daß eine Abtastung der Aktivitätskennzeichen
erfolgt, so daß die Ebene mit der höchsten Priorität
ermittelt und dem Prozessor die Steuerung übertragen
wird. Der Ausdruck "Aussetzen der Unterbrechung" bedeutet,
daß zu diesem Zeitpunkt keine Abtastung und keine
Erledigung erfolgen. Der Ausdruck "Sperren" bedeutet, daß
die Ebene des gerade laufenden Programms geändert wird, daß
das Aktivitätskennzeichen für eine neue Ebene gesetzt wird
und daß ferner keine Programmstatus-Sicherstellungs-
und Zurückstellungsoperation auftritt. Dies wird üblicherweise
für eine schnelle Ebenenänderung zu einer höheren Ebene hin
benutzt. Der Ausdruck "Unterbrechen" bzw. "Aufschieben" bedeutet,
daß das Aktivitätskennzeichen für die gerade laufende
Ebene gelöscht wird.
Nunmehr sei unter Bezugnahme auf das Flußdiagramm gemäß Fig. 4
die Operation der fünf Bedingungen bzw. Zustände erläutert.
Die normale Operation des Systems beginnt bei dem Block 10,
wenn ein Aufruf eines Befehls vorhanden ist. Der Anfangspunkt
dieses Befehls ist durch den Block 11 gekennzeichnet. Der
Aufruf betrifft einen auszuführenden Befehl (der in dem Speicher untergebracht
sein kann). Nach erfolgtem
Aufruf wird eine Abfrage daraufhin
vorgenommen, ob ein Impuls, der z. B. zur stufenweisen Verkleinerung
der Zeitsperrenfunktion verwendet wird, aufgenommen
worden ist. Dieser Zeit- oder Taktimpuls kann z. B. von der
Netzwechselspannungsleitung gewonnen sein. Dabei können die
Impulse in einem zeitlichen Abstand von 8 Millisekunden
aufeinanderfolgen. Innerhalb der betreffenden Zeitspanne
können dabei viele Aufrufoperationen erfolgen. Wenn ein
Impuls erzeugt ist, wie dies durch eine JA-Antwort des
Blocks 12 angegeben wird, dann erfolgt der Eintritt in die
Zeitsperren-Dekrementierungsfunktion gemäß dem Block 27, wie
dies nachstehend beschrieben werden wird. Wenn kein Taktimpuls
auf diese Weise erzeugt worden ist, erfolgt die Anfrage über den
Block 13, ob eine externe Unterbrechung vorhanden gewesen ist
oder nicht. War keine externe Unterbrechung vorhanden,
so wird der Befehl schließlich aufgerufen, wie dies
durch den Block 14 angedeutet ist. Bei dem Block 15 wird der
Befehl überprüft um festzustellen, ob eine interne Unterbrechung
durch die Zentraleinheit 402 erzeugt worden ist
oder nicht, wie dies durch den LEV-Befehl angezeigt ist.
Wenn dies kein LEV-Befehl ist, wird der aufgerufene Befehl
ausgeführt, wie dies durch den Block 16 angedeutet ist, und das
Programm tritt wieder in den Block 10 ein. Dadurch ist die
normale Operation des Systems erläutert, wenn ein Befehlsaufruf
erfolgt und wenn der Befehl ausgeführt wird, ohne daß
interne oder externe Unterbrechungen erzeugt sind und ohne
daß ein Taktsignal erzeugt ist.
Der nächste Fall liegt dann vor, wenn ein Taktimpuls erzeugt
worden ist, wie dies im Block 12 angedeutet ist. Dadurch wird
die Zeitsperrenfunktion (TOF) stufenweise verkleinert, wie
dies im Block 50 bezüglich der Zeitsperrenfunktion 27 angegeben
ist. Sodann erfolgt eine Überprüfung dahingehend, ob
die stufenweise Verkleinerung einer derartigen Zeitsperrenfunktion
im Block 50 dazu geführt hat, daß die resultierende
Zählerstellung beispielsweise gleich Null ist, wie dies im
Block 52 angedeutet ist. Lautet die Antwort NEIN, so erfolgt
wieder ein Eintritt in den Block 10, und ein neuer Aufruf beginnt
bei dem Block 11. Lautet die Antwort hingegen JA, so
wird der Wert der Zeitsperrenfunktionsebene festgesetzt oder
erzeugt, wie dies durch den Block 54 angedeutet ist. Die nachstehend
noch zu erläuternde Operation gemäß dem Block 54 sowie
gemäß dem Block 17 besteht darin, daß die Bits S, D und Q
jeweils auf Null gesetzt werden, wie dies durch den Block 56
angedeutet ist. Auf diese Weise wird, wie nachstehend noch
erläutert werden wird, das Aktivitätskennzeichen der höchsten
Ebene abgetastet. Daraufhin kann eine Sicherstellung und Zurückversetzung
des Inhalts der verschiedenen Register erfolgen,
um eine Bedienung einer derart höheren aktiven Ebene
zu bewirken.
Vor einer Erläuterung der Bedingungen, unter denen eine
externe Unterbrechung ermittelt wird, wie dies durch eine
JA-Antwort gemäß dem Block 13 angegeben ist, sei zunächst
die interne Unterbrechungsbedingung erläutert. Wenn eine
JA-Antwort durch den Block 15 erzeugt wird, zeigt diese
Antwort demgemäß an, daß ein LEV-Befehl aufgerufen wurde.
Sodann erfolgt der Eintritt in den Block 18, und das Aktivitätskennzeichen
der durch den LEV-Befehl spezifizierten Ebene
wird gesetzt. Der LEV-Befehl kann dann unter Programmsteuerung
beispielsweise eingefügt worden sein. Unter Bezugnahme auf
Fig. 2 sei bemerkt, daß das L-Feld eines derartigen Operanden
somit herangezogen wird, um das einer derartigen Ebene
zugehörige Aktivitätskennzeichenbit zu setzen. Daraufhin gelangt
man bei einer Ausführungsform vom Ausgang des Blockes 18
über die Linie 19 direkt zum Entscheidungsfeld 20. Bei
einer anderen Ausführungsform, die nachstehend unter Bezugnahme
auf externe Unterbrechungen noch erläutert werden wird, kann
der Eintritt in den Block 19 A erfolgen.
Entsprechend dem Block 18 wird somit eine neue Ebene eingetragen,
woraufhin entsprechend dem Block 20 die Frage gestellt
wird, ob das S-Bit gesetzt worden ist oder nicht, d. h.
ob es eine binäre 1 ist oder nicht. Unter der Annahme, daß
die erste Bedingung erfüllt ist, d. h., daß die Bits S, Q
und D jeweils durch eine binäre Null gebildet sind, lautet
die vom Block 20 abgegebene Antwort NEIN, wie dies für die
Blöcke 23 und 24 ebenfalls zutrifft. Dadurch gelangt man zum
Block 25. In dem Block 25 werden die Aktivitätskennzeichenbits
abgetastet um zu bestimmen, welches der
betreffenden Kennzeichen die höchste Aktivitätsebene anzeigt.
Auf diese Abtastung hin kann der Unterbrechungsvektor der
höchsten Aktivitätsebene überprüft werden um zu bestimmen,
ob er gültig ist, wie dies durch den Block 26 angezeigt ist.
Liegt keine Gültigkeit vor, so gelangt man zum Block 21, und
das Kennzeichen einer derartigen Ebene wird gelöscht. Daraufhin
werden auf eine NEIN-Antwort von dem Block 22 hin die
Kennzeichen wieder für die höchste Aktivitätsebene abgetastet.
Gibt der Block 26 eine JA-Antwort ab, d. h., daß ein gültiger
Unterbrechungsvektor vorhanden ist, so erfolgt eine Überprüfung
dahingehend, ob der neue Unterbrechungsvektor gleich
dem alten Unterbrechungsvektor ist oder nicht, wie dies durch
den Block 28 angezeigt ist. Unter normalen Bedingungen gibt
der Block 28 eine NEIN-Antwort ab, und man gelangt zu dem
Block 30, wodurch als erster Schritt der Inhalt der Register
für die alte Ebene in dem Unterbrechungssicherungsbereich
(ISA) durch Abspeicherung gesichert wird, auf den durch den
Unterbrechungsvektor für die betreffende Ebene hingezeigt ist.
In die Register wird der Inhalt aus dem betreffenden Unterbrechungssicherungsbereich,
der Unterbrechungsebene wieder zurückgespeichert.
Auf diese Operation hin wird bei dem Block 10
wieder ein Aufruf eingeführt. Unter der Annahme, daß die
Bits S, D und Q jeweils durch eine binäre 1 gebildet sind
und insgesamt der Zustand 1 vorliegt, wird
somit entsprechend dem Block 18 die neue Ebene eingetragen.
Ferner erfolgt eine Abtastung der Kennzeichen, um zu bestimmen,
um welche Unterbrechungsebene es sich handelt, wie dies
durch den Block 25 angegeben ist. Wie durch den Block 30 angegeben
ist, wird eine Sicherstellungs- und Wiedereinspeicherfunktion
ausgeführt.
Im zweiten Zustand bzw. bei der Bedingung 2 mit den Bits S = 0,
D = 1 und Q = 0 erfolgt die Operation vom Block 10
aus beginnend über den Block 15. Dabei ist angenommen, daß
kein Zeitsteuer- oder Taktimpuls erzeugt worden ist und daß
keine externe Unterbrechung vorliegt. Die neue Ebene wird,
wie dies durch den Block 18 angegeben ist, eingeleitet. Sodann
gelangt man zu dem Block 20, woraufhin man zu dem
Block 23 gelangt. Der Ablauf nimmt denselben Weg zu dem
Block 24, da Q = 0 ist. In diesem Fall,
bei dem D = 1 ist, gibt der Block 24
jedoch eine JA-Antwort ab, und man gelangt wieder zu dem
Block 10. Bei Vorliegen des zweiten Zustandes
ist somit durch die interne Unterbrechung die
Einleitung einer neuen Ebene bewirkt worden; die Operation
anhand der neuen Ebene wurde jedoch zurückgestellt.
Es dürfte ersichtlich sein, daß die Ausnutzung des zweiten
Zustandes in dem Fall gegeben sein
kann, daß z. B. der Wunsch besteht, ein Programm niederer
Priorität einzuleiten als ein gerade ablaufendes
Programm, und zwar mit der Absicht, gegebenenfalls
mehrere Programme niederer Priorität einzuleiten, bevor für
irgendeines dieser Programme die Steuerung aufgegeben wird. Da
diese Programme eine niedere Priorität besitzen, kann man
eine Abtastung bis zu dem Zeitpunkt aussetzen,
bis die gerade unter Ausführung stehende Ebene ihre Operation
unterbricht.
Nunmehr sei auf die Operation bei Vorliegen des dritten Zustandes
bzw. der Bedingung 3 eingegangen. Die Bits S, D und Q sind
dabei durch eine binäre 0 bzw. durch eine binäre 0 oder
eine binäre 1 bzw. durch eine binäre 1 gebildet. Die Operation
läuft wie im Falle des Vorliegens der Bedingungen bzw.
Zustände 1 und 2 ab, so daß der Block 18 die Aufzeichnung
der spezifizierten Ebene des LEV-Befehles bewirkt. Da das
S-Bit eine binäre 0 ist und da in dem Block 20 über die Leitung
19 eingetreten worden ist, gelangt man zu dem Block 23,
der mit Rücksicht darauf, daß das Q-Bit eine binäre 1
ist, bewirkt, daß eine JA-Antwort erzeugt wird. Dies bewirkt,
daß der Prozeß in den Block 29 eintritt. Gemäß dem Block 29
wird die Ebene des gerade laufenden Programms geändert, und
der Inhalt der Register wird nicht sichergestellt
und wieder abgespeichert. In typischer Weise wird der
Zustand 3 für eine schnelle Ebenenänderung zu einer höheren Unterbrechungsebene
hin herangezogen, so daß das laufende Programm
weniger unterbrechbar ist. Entsprechend dem Block 29
wird somit die alte ISA-Adresse, auf die durch die vorhergehende
Ebene hingezeigt ist, in der neuen Unterbrechungsvektoren-
Registerstelle untergebracht. In einem solchen
Fall zeigen somit sowohl die alte Unterbrechungsvektoren-Registerstelle
als auch die neue Unterbrechungsvektoren-Registerstelle auf denselben
Unterbrechungssicherstellungsbereich. Der neue Unterbrechungsvektor
ist üblicherweise ein Vektor, der nicht irgendeinem
bestimmten Unterbrechungssicherstellungsbereich zugewiesen ist;
der betreffende Vektor kann vielmehr in solchen Fällen benutzt
werden, in denen das laufende Programm wünscht, weniger
stark unterbrechbar zu sein. Demgemäß braucht kein Transfer
der Unterbrechungssicherstellungsbereichs-Registerinhalte vorgesehen
zu werden, da tatsächlich derselbe Unterbrechungssicherstellungsbereich
benutzt wird und da dasselbe Programm abläuft. Dies ist
auch dann der Fall, wenn eine schnelle Ebenenänderung zurück
zur Ebene niederer Priorität erfolgt. Zusätzlich zur Unterbringung
der alten ISA-Adresse an der neuen Registerstelle (IV)
entsprechend dem Block 29 erfolgt über die Busleitung eine
Übertragung der Ebenenänderung zu anderen Einrichtungen, um
derartigen anderen Einrichtungen anzuzeigen, daß sie mit der
Abgabe einer externen Unterbrechung an den Prozessor warten
mögen, daß eine Ebenenänderung vorhanden gewesen ist und daß
sie versuchen sollten, Zugriff zur Benutzung der Busleitung
zu dem betreffenden bestimmten Zeitpunkt in dem Fall zu erhalten,
daß eine Ebenenänderung zu einer niederen Ebene hin
erfolgt. Auf die durch den Block 29 gegebene Funktion hin
tritt der Aufrufzyklus wieder bei dem Block 10 ein.
Während der vierten Bedingung sind die Bits S und Q durch eine binäre 1
bzw. durch eine binäre 0 gebildet, während der Zustand des
D-Bits keine Rolle spielt. Demgemäß beginnt die Operation
bei dem Block 10 und setzt sich über die Blöcke 15 und 18
fort. Zu diesem Zeitpunkt wird ein Zeitplan ausgeführt, indem
das Kennzeichen der bezeichneten Ebene gesetzt wird. Sodann
tritt man in den Block 20 ein und wird feststellen, daß das
S-Bit eine binäre 1 ist. Dies bewirkt den entsprechenden
Eintritt in den Block 21. Dies wiederum bewirkt, daß das
Aktivitätskennzeichen der gerade vorliegenden Ebene zu löschen
ist. Demgemäß wird die bezeichnete Ebene eingetragen, und sodann
wird die Operation der gerade vorliegenden Ebene unterbrochen
bzw. gesperrt, worauf mit Rücksicht darauf, daß das
Q-Bit durch eine binäre 0 gebildet ist, in den Block 22 eingetreten
und an dessen NEIN-Ausgang weitergegangen wird, um
in den Block 25 einzutreten. Dadurch wird eine Abtastung der
Kennzeichen bezüglich der höchsten Unterbrechungsebene bewirkt.
Dies wird in typischer Weise so bewirkt, daß die Operation
über die Blöcke 26 und 28 und dann über den Block 30 zurück
zu dem Block 10 verläuft. Demgemäß ist eine Sicherstellungs-
und Wiederabspeicherungsoperation ausgeführt.
Es ist somit die neue Ebene eingeleitet worden, und die gerade
vorliegende Ebene ist ausgesetzt bzw. gesperrt worden, und
außerdem hat eine Sicherstellungs- und Wiederabspeicherungsoperation
auf die Anzeige der Abtastung der höchsten
Unterbrechungsebene hin stattgefunden. Diese Anzeige könnte
zum Abrufen eines Programms einer höheren
oder einer niederen Ebene als der des gerade laufenden
Programms herangezogen werden.
Bei dem fünften Zustand, bei dem die Bits S und Q jeweils
durch eine binäre 1 gebildet sind und bei dem das D-Bit
keine Rolle spielt, ist die Operation dieselbe wie beim
vierten Zustand, und zwar insofern, als der Eintritt bei
dem Block 20 erfolgt und im Block 21 das Kennzeichen der
gerade vorhandenen Ebene gelöscht wird. In diesem Fall, in
dem das Q-Bit gleich 1 ist, bewirkt jedoch eine JA-Antwort
vom Block 22, daß man zu dem Block 29 gelangt, wodurch
eine zu schnelle Ebenenänderung und eine Übertragung der Ebenenänderung
zu den anderen Einrichtungen über die Busleitung
bewirkt werden. Auf diese Operation hin gelangt man wieder in
den Block 10. Demgemäß wird bei dem fünften Zustand die bezeichnete
Ebene eingeleitet, die gerade vorliegende Ebene
wird aufgehoben, und die alte ISA-Adresse, d. h. diejenige
Adresse, auf die durch die gerade aufgehobene Ebene hingewiesen
worden ist, wird in der neuen Registerstelle (IV)
abgespeichert. Dadurch ist eine schnelle Ebenenänderung auf eine
andere Ebene für das gerade laufende Programm ermöglicht, wodurch
die alte Ebene, d. h. die gerade vorliegende Ebene, aufgegeben
wird.
Nachdem die Operation der zuvor erwähnten fünf Zustände bzw.
Bedingungen beschrieben worden ist, wird nunmehr der Vorteil
der externen Unterbrechung erläutert. Wenn eine externe
Unterbrechung auf das Setzen des externen Unterbrechungskennzeichens
hin vorhanden ist, erzeugt der Block 13 eine
JA-Antwort, und man gelangt zu dem Block 17. Zu diesem
Zeitpunkt werden die Identität bzw. Kennung und die
Ebene der extern unterbrechenden Einrichtung gelesen und in
dem für die betreffende Ebene vorgesehenen Unterbrechungssicherstellungsbereich
gespeichert. Daraufhin erfolgt die
Einleitung der betreffenden Ebene, die durch die externe
Unterbrechung angegeben ist.
Demgemäß wird diese Operation dieselbe sein, wie sie
für den ersten Zustand ausgeführt worden ist, bei dem die
Bits S, D und Q jeweils durch eine binäre 0 gebildet waren. Von
dem Block 17 aus gelangt man somit zu dem Block 56, so daß
sämtliche Bits gesetzt und zu binären Nullen werden. Der
Prozeß wird dann, wie für den Zustand 1 erläutert, fortgesetzt.
Wie oben bezüglich der Zeitsperrenfunktion ausgeführt, bewirkt
diese Funktion, wie dies durch den Block 27 angegeben ist,
ebenfalls, daß die Bits S, D und Q jeweils zu Null
werden, was durch den Block 56 angegeben ist. Demgemäß
läuft dann auch die Operation des Zustands 1 ab. In
jedem dieser Fälle wird, wenn die Aktivitätskennzeichen abgetastet
werden, die Veranlassung der Unterbrechung ermöglicht,
um über den Unterbrechungssicherstellungsbereich und schließlich
über dessen eigene Unterbrechungsroutine eine entsprechende
Funktion auszuführen.
Wenn der neue Unterbrechungsvektor nicht gleich dem alten
Unterbrechungsvektor ist, dann gelangt man, wie oben ausgeführt,
zu dem Block 30 mit Rücksicht auf die Sicherstellungs-
und Wiedergabespeicherungsfunktion. Wenn derartige Vektoren jedoch
gleich sind, gelangt man zu der Operation des Blockes 29.
Wenn vom Block 28 eine JA-Antwort abgegeben wird, ist
entweder durch die Abtastung festgestellt worden, daß keine
höhere Unterbrechungsebene als die aktuelle
Ebene vorliegt oder daß das Programm, das eine Sperrung hervorgerufen
hat, gerade aufgehoben worden ist (um zum normalen
Betrieb zurückzukehren).
Wie zuvor ausgeführt, verläuft der normale Weg zwischen dem Einleiten oder
Eintragen gemäß dem Block 18 und dem Prüfen gemäß dem Block 20
über die Linie 19. Bei einer anderen Ausführungsform, bei der
eine externe Unterbrechung vorhanden ist, kann der direkte Weg
über die Linie 19 vom Block 18 zum Block 20 weggelassen werden,
und die Überprüfung bezüglich einer externen Unterbrechung kann
in der Weise vorgenommen werden, wie dies durch den in gestrichelten
Linien angedeuteten Block 19 a angegeben ist. Wenn
keine externe Unterbrechung vorliegt, gelangt man direkt zu
dem Block 20. Wenn jedoch eine externe Unterbrechung vorliegt
und wenn demgemäß eine JA-Antwort erzeugt wird, dann
gelangt man von dem Block 19 A über die Linie 19 B direkt zu
dem Block 26. Dies beseitigt die Forderung nach Abtastung
der Aktivitätskennzeichen bezüglich der höchsten Unterbrechungsebene,
wie dies durch den Block 25 angegeben ist. Dabei ist
der Umstand vorausgesetzt, daß die Zulässigkeit des Setzens
des externen Unterbrechungskennzeichens auf eine externe
Unterbrechung hin bedeutet, wie dies nachstehend noch erläutert
werden wird, daß tatsächlich die Ebene der externen
Unterbrechung höher ist als die gerade in Betrieb befindliche
Ebene in der Zentraleinheit 402. Demgemäß braucht in einem
solchen Fall keine Abtastung bezüglich der höchsten
Ebene vorgenommen zu werden, da per Definition die externe
Unterbrechung in der höchsten Ebene liegt. Von der
JA-Antwort gemäß dem Block 19 A verläuft die Operation über
die Linie 19 B und dann normalerweise über die Blöcke 26, 28
und 30 zu dem Block 10, um die externe Unterbrechung innerhalb
einer minimalen Zeitspanne zu bewirken. Ein potentielles
Problem, das mit diesem Verfahren der Einsparung einer
externen Unterbrechungszeit verknüpft ist, besteht darin, daß
es - obwohl zu dem Zeitpunkt, zu dem das externe Unterbrechungskennzeichen
gesetzt wurde, die bezeichnete externe Unterbrechung
in der höchsten Ebene lag, d. h. in einer
höheren Ebene als derjenigen Ebene, die dem gerade laufenden
Programm der Zentraleinheit 402 zugehörig war - ohne weiteres
möglich ist, daß vor dem nächsten Abruf, und zwar schon
nach einigen Mikrosekunden, ein weiteres Programm mit einer höheren Ebene
vorliegen kann (einer höheren Ebene als der Ebene der externen
Unterbrechung), das es zu verarbeiten gilt. In einem
solchen Fall wäre es dann unerwünscht, daß die externe Unterbrechung,
die nunmehr eine niedere Priorität besitzt, eine
Unterbrechung vor dem Programm mit der höheren
Priorität vornimmt. Durch den Prozeß, wie er durch die gestrichelten
Linien 19 A und 19 B angedeutet ist, ist es jedoch
möglich, Zeit einzusparen, die den Vergleichs- und Abtastoperationen
zugehörig ist, wie in Fig. 4 veranschaulicht.
Das Programm einer höheren Ebene kann jedoch durch externe
Unterbrechungen mit einer niederen Ebene unterbrochen werden, und zwar
auch in dem Fall, daß eine derartige externe Unterbrechung in
der höchsten Ebene zu dem Zeitpunkt vorliegt, zu dem das Setzen
ihres externen Unterbrechungskennzeichens zuglassen war.
Die Operation der Unterbrechungsverarbeitungsanordnung gemäß der
Erfindung ist anhand des Flußdiagramms von Fig. 4 beschrieben
worden. Im folgenden wird die Arbeitsweise unter
Bezugnahme auf Fig. 5, in der ein
Blockdiagramm der Unterbrechungsverarbeitungsanordnung gemäß der
Erfindung gezeigt ist, erläutert. In Fig. 6 bis 10 sind bestimmte Einzelheiten
der Anordnung gemäß Fig. 5 gezeigt.
Wie weiter oben
bereits ausgeführt wurde, können
externe oder interne Unterbrechungen vorkommen. Eine externe
Unterbrechung wird durch irgendeine der an der Busleitung 400
angeschlossenen Einrichtungen veranlaßt. Eine interne
Unterbrechung wird durch die Zentraleinheit 402 mittels des
LEV-Befehls oder durch Aufgabe der Zeitsperre veranlaßt.
Der externe Unterbrechungsbefehl auf der Leitung 300 beinhaltet auch seine
Unterbrechungsebene. Er gelangt an den A-Eingang des Vergleichers 302.
Am B-Eingang des Vergleichers 302 liegt die aktuelle
Unterbrechungsebene des in der Zentraleinheit 402 ablaufenden
Programms, wie durch den Block 304 dargestellt.
Wie oben ausgeführt, ist eine Ebene mit dem Nummernwert 0 die
Ebene mit der höchsten Priorität, und eine Ebene mit einem
Nummernwert 63 die Ebene mit der niedrigsten Priorität.
Wenn die Nummer der Ebene der externen Unterbrechung kleiner
ist als die Nummer der gerade vorliegenden, aktuellen Ebene, dann wird
für den Fall, daß das externe Unterbrechungskennzeichen im Block 311
zuvor nicht gesetzt worden ist, dieses Kennzeichen dadurch
gesetzt, daß das UND-Glied 309 übertragungsfähig
gemacht wird. Dadurch wird das UND-Glied 307
veranlaßt, die Unterbrechungsebene an das Register 315
zum Zwecke der Abspeicherung darin weiterzuleiten.
Das im Register 315 gespeicherte Unterbrechungsebenensignal
ermöglicht das Setzen des zugehörigen Aktivitätskennzeichens
mit Hilfe der zweiten Logikschaltmittel 308
und 150. Bei Durchschaltung des UND-Gliedes
307 werden über das Register 315 die Bits S, D und Q auf Null gesetzt
und von der zur ersten Logikschaltstufe gehörenden Unterbrechungsdecodierlogik 310 aufgenommen.
Die interne Unterbrechung mittels des
LEV-Befehles wird über die Leitung 312 veranlaßt. Der Nummernwert
der Unterbrechungsebene und die Binärwerte der Bits S, D
und Q stehen im Register 314. Der Nummernwert der Unterbrechungsebene
aus dem Register 314 wird außerdem vom zweiten Logikschaltmittel
308 aufgenommen, und die Bits S, D und Q werden von der
Verknüpfungsschaltung der Unterbrechungsdecodierlogik 310 aufgenommen. Die Verknüpfungsschaltung
der zweiten Logikschaltmittel 308 ist generell in Fig. 6 gezeigt. Die Aktivitätskennzeichen
150 werden über die Verknüpfungsschaltung 308 gesetzt.
Die Verknüpfungsschaltung 310 ist so geschaltet, daß derartige
Kennzeichen durch das RFCL-Signal gelöscht werden, das auf eine
aufgeschobene Anforderung oder auf einen ungültigen Unterbrechungsvektor
hin erzeugt wird. Ein Kennzeichenbit wird
generell gelöscht, wenn die dessen Ebene zugehörige Operation
beendet worden ist. In Abhängigkeit vom Zustand der Bits S, D
und Q, die von der Unterbrechungsdecodierlogik 310 aufgenommen
werden, werden ein oder mehrere Signale von vier Signalen
erzeugt. Wie angegeben, wird durch das RFCL-Signal die zugehörige
Unterbrechungsebene zurückgestellt oder gelöscht. Außerdem
kann das SFHL-Signal, das OLC-Signal oder das FNI-Signal
erzeugt werden. Das SFHL-Signal zeigt an, daß die Aktivitätskennzeichen
abgetastet werden sollen um zu bestimmen, welche
Ebene die höchste Aktivitätsebene ist (das ist in der Regel diejenige Ebene,
die auf eine Unterbrechungsbedienung wartet). Das
OLC-Signal zeigt an, daß eine schnelle Änderung von einer
Ebene zu einer anderen Ebene erfolgen soll, in der Regel
zu einer höheren Ebene. Das FNI-Signal zeigt an,
daß der nächste Befehl aufgerufen werden soll. Die Unterbrechungs-Decodierlogik
310 ist in Fig. 7 gezeigt.
Durch das SFHL-Signal wird die Abtastlogik 316
aktiviert. Die Abtastlogik 316 ist in Fig. 8 im einzelnen
gezeigt. Sie arbeitet in der Weise, daß angezeigt wird, welches
der Aktivitätskennzeichenbits in dem Register 150 die höchste
Ebene anzeigt, die für eine Bedienung (Service) bereit ist. In Abhängigkeit
von der Steuerung durch die Abtastlogik 316 wird die Unterbrechungsvektoradresse erzeugt und über die zur ersten Logikschaltstufe gehörende Adressenerzeugungs-
und Prüflogik 318 gebildet. Diese Logik bzw. Verknüpfungsschaltung
wird dazu herangezogen, die Unterbrechungsvektoren im
Register 108 zu adressieren und die OLC-Operation einzuleiten oder
den Inhalt der Registeroperation zu sichern und wieder abzuspeichern.
Die eine schnelle Ebenenänderung betreffende Operation
kann ebenfalls in Abhängigkeit von dem von der Logik 310
abgegebenen OLC-Signal unabhängig ausgelöst werden. Die
Logik 318 liefert demgemäß eine Adresse für die Unterbrechungsvektoren
(IV) im Register 108. Jeder der Unterbrechungsvektoren zeigt auf
den zugehörigen Unterbrechungssicherstellungsbereich (ISA), d. h.
das Signal IV-0 zeigt auf den Bereich ISA-0, der
an irgendeiner Stelle in dem Speicher untergebracht
sein kann. Dabei brauchen nicht sämtliche Unterbrechungsvektoren
einem bestimmten Unterbrechungssicherstellungs-Speicherbereich
zugewiesen zu werden, wie dies nachstehend noch erläutert
werden wird. Der Unterbrechungssicherstellungsbereich enthält
eine Vielzahl von Speicherplätzen, die genügen, die erforderliche
Information zu speichern, die den verschiedenen Ebenen
zugehörig ist. Die Unterbrechungssicherstellungsbereiche
können insbesondere jeweils den Inhalt für die betreffende
Ebene der Arbeitsregister in der Zentraleinheit 202 speichern.
Derartige Register können z. B. den Programmzähler enthalten.
Nicht sämtliche Ebenen brauchen den Inhalt derselben Register
zu speichern. Falls eine Ebene durch eine höhere Ebene unterbrochen
wird, tritt somit eine Sicherstellungs- und Wiederherstellungsoperation
auf. Dies wird durch das SRCR-Signal
angezeigt, das von der Verknüpfungsschaltung der ersten Logikschaltungsstufe 318 erzeugt wird,
die die Sicherstellungs- und Wiederabspeicherungs-Verknüpfungsschaltung
320 freigibt, wie dies insbesondere unter Bezugnahme
auf Fig. 9 beschrieben wird. Demgemäß ermöglicht die Verknüpfungsschaltung
320 den zweiseitigen Transfer der Inhalte
der Register und des Unterbrechungssicherstellungsbereichs.
Während einer derartigen Sicherstellungs- und Wiederabspeicherungsfunktion
wird zunächst der Inhalt der Register, die der
gerade vorliegenden aktuellen Ebene zugehörig sind, d. h. der unterbrochenen
Ebene, in deren entsprechenden Unterbrechungssicherstellungsbereich
abgespeichert, der durch die Verknüpfungsschaltung
318 adressiert ist. Nach Abschluß dieses
Sicherstellungsprozesses wird in den betreffenden Registern
der Inhalt des der neuen Ebene zugehörigen Unterbrechungssicherstellungsbereiches
abgespeichert.
Die schnelle Ebenenänderung, die durch die Verknüpfungsschaltung
318 oder durch die Verknüpfungsschaltung 310 der ersten Logikschaltungsstufe ausgelöst
werden kann, arbeitet in der Weise, daß die insbesondere in
Fig. 10 gezeigte, auch noch zur ersten Logikschaltungsstufe gehörenden
Schnellebenenänderungs-Verknüpfungsschaltung
322 freigegeben bzw. angesteuert wird. Dies erfordert keine
Sicherstellungs- und Wiederabspeicherungsoperation. Die
schnelle Ebenenänderung ermöglicht den Sprung von der gerade
vorliegenden Ebene zu einer höheren Ebene und gestattet, daß
von der betreffenden höheren Ebene zu demselben Unterbrechungssicherstellungsbereich
hingewiesen wird, auf den durch die
gerade vorliegende Ebene hingewiesen wurde. Demgemäß kann
ein Programm in einer Ebene (nämlich in der aktuellen Ebene) ablaufen
und wünschen, weniger oft unterbrechbar zu sein, weshalb auf
eine höhere Ebene entsprechend umgeschaltet werden kann. Die
Sicherstellungs- und Wiederabspeicherungsfunktion braucht zu
diesem Zeitpunkt nicht bereitgestellt zu sein, da tatsächlich
dasselbe Programm abläuft. Das umgekehrte Verfahren läuft dann
ab, wenn eine Änderung zu der niederen und stärker unterbrechbaren
Ebene hin erfolgt.
Die Art und Weise, in der das Kennzeichen der spezifizierten
Ebene gesetzt wird, wie dies durch den Block 18 in Fig. 4
veranschaulicht ist, wird nunmehr erläutert. Wie durch Fig. 6
angegeben, kann die Ebene entweder durch eine externe Unterbrechung,
durch eine interne Unterbrechung (LEV-Befehl) oder
durch eine Zeitsperrenfunktion bereitgestellt werden. Diese
Ebenen können
von den Registern 200, 202 oder 204 aufgenommen
werden, wie dies in Fig. 6 gezeigt ist. In Abhängigkeit von
dem Zustand der Unterbrechungsoperation, wie sie in Fig. 4 gezeigt
ist, wird dann eine, von dem entsprechenden Register
über den Multiplexer 208 aufgenommene Ebene dieser Ebenen in
einem Allzweck-Ebenen-Register 210 untergebracht, und zwar
zum Zwecke des Setzens des fraglichen Aktivitätskennzeichenbits.
Die Aktivitätskennzeichenbits sind in dem Register 150
angegeben; ihre Zahl kann z. B. 64 betragen. Ob derartige Bits
gesetzt oder gelöscht (zurückgestellt) werden, hängt von der
Operation ab, die abgelaufen ist. Das Setzen und Löschen erfolgt
in Abhängigkeit von Signalen, die durch Setz-Verknüpfungsglieder
212 und Rückstell-Verknüpfungsglieder 214
freigegeben sind. Diese Verknüpfungsglieder steuern in Abhängigkeit
von der in dem Register 210 enthaltenen Ebenennummer
einen Decoder 216, um ein Signal auf einer der vierundsechzig
Setz-Leitungen 218 abzugeben, die von den Ausgängen
des Decoders 216 zu den Setzeingängen der Elemente in dem
Register 150 hinführen. In entsprechender Weise kann eine
der 64 Rückstelleitungen 220, die zwischen den Ausgängen des
Decoders 216 und dem Register 150 angeschlossen sind, über
die Rückstell-Verknüpfungsglieder 214 aktiviert werden. Ein
Setzzustand wird über den Multiplexer 222 dann angezeigt, wenn
der LEV-Befehl mittels des Detektors 224 ermittelt wird, der
an dem allgemeinen Befehlsregister 226 angeschlossen ist. Dies
entspricht der Operation des Blockes 15 gemäß Fig. 4. Das
Setzen eines der Bits in dem Register 150 erfolgt auch auf
das Setzen des externen Unterbrechungskennzeichens hin (vgl.
Block 311 in Fig. 5. Dieser Logikblock 311 ist so geschaltet, daß
er ein Signal über die Busleitung von einer der Einrichtungen,
die eine Unterbrechungsbedienung wünschen,
aufnimmt. Wie
aus Fig. 5 ersichtlich ist, ist die einzige Einrichtung, die
das Kennzeichen im Block 311 setzen kann, eine Einrichtung
mit einer Ebene, die höher ist als die Ebene, in der in der
Zentraleinheit 402 gerade gearbeitet wird. Eines der Aktivitätskennzeichenbits
in dem Register 150 kann außerdem durch die
Zeitsperrenfunktion gesetzt werden, wie dies durch die Operation
des Blockes 27 in Fig. 4 angedeutet ist, so daß auf die
Aufnahme einer Anzeige einer Zeitsperrenfunktion (TOF = Time-out-Function) durch das
Register 230 das der Ebene der Zeitsperrenfunktion zugehörige
Bit in dem Register 150 gesetzt wird. Die Aktivitätskennzeichenbits
in dem Register 150 werden zurückgestellt,
wenn ein ungültiger Unterbrechungsvektor vorhanden
ist, wie dies durch die Operation des Blockes 26 angegeben
wird. Dieser Vektor bzw. dieses Signal wird über das
ODER-Glied 232 dem Rückstell-Verknüpfungsglied 214 zugeführt.
Das bestimmte Aktivitätsbit wird außerdem dann zurückgesetzt,
wenn die damit verknüpfte Ebene - wie dies durch die
aktuelle Ebene des Registers 206 angegeben ist - ihre Operation
beendet und einen eine Unterbrechung angebenden LEV-Befehl
abgibt. Somit kann das Kennzeichen der spezifizierten
Ebene der Unterbrechung - unabhängig davon, ob es sich um
eine interne oder externe
oder um eine von einer Zeitsperrenfunktion abhängige Unterbrechung
oder um eine im Unterbrechungsbedienungsprozeß erzeugte
Unterbrechung handelt - entweder gesetzt oder zurückgestellt
werden, um die Bedienung der entsprechenden Unterbrechungen
einzutragen, d. h. den Unterbrechungs-Service
einzuleiten.
Nunmehr sei unter Bezugnahme auf Fig. 7 die Art und Weise
erläutert, wie die von dem LEV-Befehl, der externen Unterbrechung
oder der Zeitsperrenfunktion aufgenommenen Bits S, D
und Q generell die durch die Blöcke 20, 23, 24 und 22 in Fig. 4
angedeuteten Operationen ausführen und wie die erforderlichen Steuersignale
erzeugt werden. In Abhängigkeit von der Eigenart der
Unterbrechung werden entsprechende Flipflops, d. h. bistabile S-, D- und Q-Elemente 70, 72
bzw. 74 entweder gesetzt oder zurückgestellt. Für den externen
Unterbrechungszustand und für die Zeitsperrenfunktion, wie
dies durch den Block 56 in Fig. 4 angedeutet ist, werden die bistabilen
S-, D- und Q-Elemente zurückgestellt sein, so
daß an jedem ihrer Null-Ausgänge ein Signal erzeugt wird. Für
eine intern erzeugte Unterbrechung in der Zentraleinheit 402
wird dann in Abhängigkeit von dem LEV-Befehl einer der fünf
Zustände angezeigt, wodurch die entsprechenden Elemente 70, 72
und 74 gesetzt oder zurückgestellt werden. Wie zuvor angegeben,
ist die Operation für den Zustand 1 im wesentlichen dieselbe
Operation, die für die externe Unterbrechung und die Zeitsperrenfunktion
abläuft, und zwar insofern, als die Bits S,
D und Q jeweils durch eine binäre 0 gebildet sind. Demgemäß
werden die Elemente 70, 72 und 74 in Abhängigkeit davon zurückgestellt,
um an jedem ihrer 0-Ausgänge ein Signal zu erzeugen.
Befindet sich jedes dieser Elemente im binären 0-Zustand,
so ist das UND-Glied 76 vollständig freigegeben bzw.
übertragungsfähig gemacht, wodurch seinerseits das UND-Glied 78
vollständig übertragungsfähig gemacht ist. Dieses UND-Glied 78
erzeugt über das ODER-Glied 80 das SHFL-Signal, das anzeigt,
daß die Kennzeichen zum Zwecke der Anzeige der höchsten
Ebene abgetastet werden. Wenn wie in den Zuständen 4 und 5
das S-Bit durch eine binäre 1 gebildet
ist, dann wird das RFCL-Signal erzeugt, das anzeigt, daß das
Kennzeichen der gerade vorliegenden Ebene zurückzustellen
oder zu löschen ist. Darüber hinaus wird in Abhängigkeit vom
Zustand des Q-Elementes, sofern dieses Element gesetzt ist,
dann mit dem durch eine binäre 1 gebildeten S-Bit und mit
dem durch eine binäre 0 gebildeten Q-Bit für den fünften
Zustand das Verknüpfungsglied 82 vollständig übertragungsfähig
gemacht sein, das über das ODER-Glied 84 ein QLC-Signal
oder ein eine schnelle Ebenenänderung betreffendes Signal
erzeugt. Liegt der Zustand 4 vor, wobei das S-Bit eine binäre 1
und das Q-Bit eine binäre 0 ist, so ist das UND-Glied 56 vollständig
übertragungsfähig gemacht und erzeugt über das ODER-
Glied 80 das SHFL-Signal. Dadurch wird eine Abtastung der
Kennzeichen herbeigeführt.
Nachdem die Zustände 1, 4 und 5 sowie externe Unterbrechungen
und TOF-Unterbrechungen beschrieben worden sind, sei bezüglich
des Zustandes 2, bei dem die 1-Ausgänge der S-, D- und Q-Elemente
eine binäre 0 bzw. eine binäre 1 bzw. eine binäre 0 führen,
bemerkt, daß in diesem Fall das UND-Glied 76 vollständig übertragungsfähig
gemacht ist. Mit Rücksicht darauf, daß das
D-Element 72 gesetzt worden ist, erzeugt das vollständig
übertragungsfähig gemachte UND-Glied 88 das FNI-Signal,
welches anzeigt, daß der nächste Befehl aufzurufen ist. Beim
Zustand 3, bei dem der 1-Ausgang des S-Elementes eine binäre 0
führt, bei dem das D-Element sich in irgendeinem Zustand befindet
(der keine Rolle spielt) und bei dem das Q-Element eine binäre
1 führt, wird das Verknüpfungsglied 90 vollständig übertragungsfähig
gemacht, und über das ODER-Glied 84 erfolgt die
Erzeugung eines QLC-Signals, wodurch eine schnelle Ebenenänderung
angezeigt wird.
Nunmehr sei Fig. 8 näher betrachtet, in der die Aktivitätskennzeichenbits,
von denen es 64 geben kann,
in dem Register 150 gezeigt sind. Die höchste Unterbrechungsebene
(niedrigster Nummernwert) ist die Ebene 0, die zum Zwecke der Veranschaulichung
auf der rechten Seite des Registers erscheint.
Die Anordnung gemäß Fig. 8 zeigt die Einrichtungen, durch die
derartige Kennzeichen abgetastet werden, um die höchste
Aktivitätsebene zu bestimmen, wie dies durch den Prozeß
gemäß dem Block 25 in Fig. 4 angedeutet ist. Das SHFL-Signal
wird dazu herangezogen, die Bits in dem Register 150 um eine
Stelle zum Registerausgang hin zu verschieben, und zwar zum
Zwecke der Ermittlung durch den auf binäre Einsen ansprechenden
Detektor 102. Der Ausgang des Registers 150 ist an dessen
Eingang rückgekoppelt; mit dieser Ausführungsform tritt
jedesmal dann, wenn ein SHFL-Signal vorhanden ist, eine vollständige
Verschiebung sämtlicher 64 Bits auf, die aus dem
Register 150 abgegeben und in dieses wieder eingeführt werden.
Zur selben Zeit, zu der die Bits um eine Bitstelle zum Ausgang
des Registers 150 hin verschoben werden, zählt der angeschlossene
Zähler 104 die Anzahl der Verschiebungen. Wenn
durch den Detektor 102 eine binäre 1 festgestellt wird, wird
dadurch das Verknüpfungsglied 106 freigegeben. Dies hat zur
Folge, daß die Unterbrechungsvektoradresse von dem Zähler 104
her über das Verknüpfungsglied 106 abgegeben wird, um den
Unterbrechungsvektorbereich zu adressieren, der in seinem
zur Verfügung gestellten Speicherplatz des Unterbrechungsvektorenregisters 108
enthalten sein kann. Die 64 Aktivitätskennzeichenbits können
tatsächlich in vier 16-Bit-Wort-Speicherplätzen innerhalb
eines dafür vorgesehenen Speicherplatzes ebenfalls in dem Register
oder Speicher 108 abgespeichert werden. In einem solchen Fall würde
zunächst zu dem Wort, welches das höchste Ebenenaktivitätsbit
enthält, ein Zugriff erfolgen, und jedes Bit eines Wortes
würde parallel überprüft werden um festzustellen, ob es ein
1-Bit ist. Ist dies der Fall, so braucht kein Zugriff zu
zweiten, dritten und vierten Aktivitätsbitwörtern hin vorgenommen
zu werden. Wenn bezüglich des Aktivitätsbitwortes
festgestellt worden ist, daß es ein gesetztes Aktivitätsbit
enthält, dann wird der Speicherplatz dieses Bits in derselben
Weise überprüft, wie dies für die gesamten 64 Bits
in der in Fig. 8 dargestellten Weise veranschaulicht ist.
Bei einer derartigen Ausführungsform würde außerdem die
Nummer der Aktivitätsbitwörter, zu denen ein Zugriff erfolgt
ist, erfaßt werden, um nämlich die tatsächliche Unterbrechungsvektoradresse
zu bestimmen. Darüber hinaus kann, wie dies in
Fig. 8 gezeigt ist, der Ausgang des Zählers 104 nicht unmittelbar
die Unterbrechungsvektoren im Speicher 108 über das Verknüpfungsglied
106 adressieren. Vielmehr kann eine Indexadresse benutzt werden,
um auf den ersten für Unterbrechungsvektoren vorgesehenen
Speicherplatz hinzuweisen. Durch die Abtastung des Registers
150 wird, wie dies dargestellt ist, als höchste Aktivitätsebene
die Ebene 20 ermittelt. Dies wird durch einen dort befindlichen
Binärzustand 1 angegeben, der nach einer Verschiebung
zum Ausgang des Registers 150 hin durch den Detektor 102
ermittelt wird. Zusammen mit der durch den Zähler 104 bezeichneten
Zählerstellung führt dies zur Adressierung des Bereiches IV 20
im Unterbrechungsvektorenregister 108.
Jeder der Unterbrechungsvektoren kann einen Zeiger bzw. ein
Hinweissignal auf einen Unterbrechungssicherstellungsbereich (ISA)
enthalten, der an irgendeiner Speicherstelle in dem Speicher
enthalten sein mag. Ist der Unterbrechungsvektor adressiert,
so wird die diesem zugehörige Ebene in ein Register 110 für
die neue Ebene übertragen. Darüber hinaus können eine derartige
Ebene sowie der adressierte Unterbrechungssicherstellungsbereich
einem IV-Gültigkeitsprüfer 112 bereitgestellt werden,
der, wie zuvor angedeutet, eine einfache Prüfung vornimmt um
festzustellen, ob in einem derartigen Unterbrechungsvektor
sämtliche Binärzeichen durch binäre Nullen gebildet sind. In
diesem Fall wird eine Gültigkeits- bzw. Ungültigkeitsanzeige
erzeugt, wodurch das Kennzeichen der entsprechenden Ebene auf
das so erzeugte RFCL-Signal hin zurückgestellt wird. Wenn der
Unterbrechungsvektor gültig ist, dann gibt der Prüfer 112 den
Vergleicher 114 frei. Dieser Vergleicher 114 erhält ein Eingangssignal
von dem für die neue Ebene vorgesehenen Register
110, und an seinem anderen Eingang erhält der betreffende
Vergleicher die von dem Register 116 aufgenommene aktuelle Ebene des
gerade laufenden Programms. Wenn die neue Ebene gleich der
vorhandenen Ebene ist, kann die Operation gemäß dem Block 28
nach Fig. 4 ablaufen, so daß kein QLC-Signal erzeugt wird. Tatsächlich
erfolgt dabei jedoch keine Ebenenänderung, da dieselben
Ebenen vorliegen. Wenn die neue Ebene und die
aktuelle Ebene nicht gleich sind, was der Normalfall ist,
können die alten und die neuen IV-Werte entsprechend miteinander
verglichen werden. Wenn diese Werte gleich sind,
wird ein QLC-Signal abgegeben, bei dem es sich um die Rückkehr
des die Sperroperation betreffenden Signals handelt. Sind
die betreffenden Werte jedoch ungleich, so wird eine Sicherstellungs-
und Wiederabspeicherungsoperation betreffend den
Inhalt der verschiedenen Register auf das Auftreten des
SRCR-Signales, das durch den Vergleicher 114
erzeugt wird, hin ablaufen.
Die Anordnung zur Bereitstellung der Sicherstellungs- und
Wiederabspeicherungsoperation gemäß dem Block 30 nach Fig. 4
ist in Fig. 9 dargestellt; sie bewirkt auf das Auftreten des
SRCR-Signales hin, daß das Unterbrechungs- bzw. Maskenregister
100 seinen Inhalt nach rechts herausschiebt. Das
Maskenregister 100 kann zunächst in dem definierten Unterbrechungssicherstellungsbereich
152 durch die bestimmte Unterbrechungsvektoradresse
untergebracht sein. Der Unterbrechungssicherstellungsbereich
152 enthält zusätzlich zu der Maske die
Kanal-(CAN) und Ebenennummer (LVL) der Unterbrechung sowie Speicherplätze
zur Speicherung des Inhalts des Programmzählers und
weiterer Register, zum Beispiel A bis N. Der Inhalt einiger
Register braucht nicht aufbewahrt bzw. reserviert zu werden;
diese Forderung kann sich dabei bezüglich verschiedener
Ebenen ändern. Die Maske bzw. das Maskenregister 100 wird
benutzt um zu bestimmen, welche der betreffenden Register
hinsichtlich ihres Inhalts reserviert werden, falls bei der
aktuellen Ebene eine Unterbrechung durch eine höhere
Ebene erfolgt. Der betreffende Registerinhalt wird dabei wieder
abgespeichert, sofern die neue Ebene die aktuelle
Ebene unterbricht. Somit wird zunächst das Maskenregister 100
aus dem ISA-Bereich ermittelt, und zwar entweder alle Bits auf einmal
oder bitweise nacheinander. Bei einer Ausführungsform kann die Maske
in dem Register 100 untergebracht sein, und das SRCR-Signal
wird dazu benutzt, den Inhalt des betreffenden Registers in
entsprechender Weise zu verschieben, wie dies bei den
Aktivitätskennzeichenbits 150 gemäß Fig. 8 der Fall war.
Die Verschiebung der betreffenden Bits erfolgt dabei zu
einem auf binäre Einsen ansprechenden Detektor 54 und außerdem
zum Eingang des Registers 100 zurück. Gleichzeitig werden
auf das SRCR-Signal hin 16 Verschiebungen vorgenommen, auf
die hin der Zähler 156 soweit zählt, bis das Verknüpfungsglied
158 durch die Ermittlung einer binären 1 durch den
Detektor 154 übertragungsfähig gemacht ist. Zu diesem Zeitpunkt
wird die Stelle der binären 1 in der Maske zu dem die Übertragungsfreigabe bewirkenden Verknüpfungsglied
160 übertragen, um die Übertragung der Information
entweder von dem Unterbrechungssicherstellungsbereich
zu den generell mit 162 bezeichneten Registern hin oder
von den Registern 162 zu dem Unterbrechungssicherstellungsbereich
152 zu ermöglichen. Die Richtung der Übertragung
wird durch das Übertragungsrichtungssignal bestimmt, das
von dem Verknüpfungsglied 160 aufgenommen wird. Dieses
Richtungssignal kann einfach ein Umschaltsignal sein, so
daß zunächst eine Sicherstellung bewirkt wird, woraufhin
eine Wiederherstellung bzw. Wiederabspeicherung erfolgt.
Jedesmal, wenn eine Sicherstellungs- und Wiederabspeicherungsoperation
bereitgestellt wird, erfolgt eine Übertragung in
beiden Richtungen, so daß zunächst der Inhalt der Register
in dem Unterbrechungssicherstellungsbereich entsprechend der
gerade vorhandenen Ebene reserviert wird, woraufhin die Übertragung
des Inhaltes des die neue Ebene betreffenden Unterbrechungssicherstellungsbereichs
zu den entsprechenden Registern
162 folgt. Wie durch die binären Einsen und Nullen
in der Maske 100 angegeben, wird das Register, auf das die
Stelle 0 der Maske 100 hinzeigt, reserviert, wie dies auch für
die Stellen 1 und 15 der Fall ist. Ein der Speicherstelle 2
entsprechendes Register wird nicht reserviert, da dort eine Null
steht. Demgemäß wird der Inhalt der Maske 100
herausgeschoben, und jeweils dann, wenn eine binäre 1 angezeigt
wird, erfolgt eine Reservierung bzw. Sicherstellung
der Register. Daraufhin erfolgt eine Zurückstellung
bzw. Wiederabspeicherung der Register, wie dies durch
eine weitere Maske für die neue Ebene angegeben wird, die
durch ihren Unterbrechungssicherstellungsbereich 152 angegeben
ist. Es sei somit darauf hingewiesen, daß durch Benutzung
der Maske 100 lediglich mit den Registern, die für
eine bestimmte Ebene reserviert oder wieder abgespeichert
werden müssen, so gearbeitet wird, daß eine Zeitersparnis
auftritt, ohne daß eine andere unnötige Information reserviert
oder wieder zurückgebracht wird.
Eine schnelle Ebenenänderung kann auf das Vorliegen des
Zustandes 3 hin hervorgerufen werden, wie dies durch den
internen Unterbrechungsbefehl LEV angegeben ist, oder in
dem Fall, daß der neue Unterbrechungsvektor gleich dem
alten Unterbrechungsvektor ist. Demgemäß wird die Operation
gemäß dem Block 29 (Fig. 4) bereitgestellt. Dies wird in Fig. 10
veranschaulicht. Das Unterbrechungsvektorenregister 108 enthält
die Unterbrechungsvektoren IV 0 bis IV 63; sie geben somit
64 Unterbrechungsebenen an. Jeder Unterbrechungsvektor IV enthält
ein Hinweissignal oder einen Zeiger auf seinen Unterbrechungssicherstellungsbereich
ISA in irgendeiner Speicherstelle
des Speichers. Dabei muß nicht jeder Unterbrechungsvektor IV
einem bestimmten Unterbrechungssicherstellungsbereich ISA
zugewiesen sein. So weist z. B. der Unterbrechungsvektor IV 10
nicht zunächst auf irgendeinen bestimmten Unterbrechungssicherstellungsbereich
hin. Vielmehr zeigt (262) der betreffende
Vektor, wie noch ersichtlich werden wird, auf Grund einer schnellen
Ebenenänderung auf den Unterbrechungssicherstellungsbereich
ISA 50. Normalweise liefert die vorhandene
Ebene in dem Register 250 eine IV-Adresse, und es erfolgt
eine Adressierung der Unterbrechungsvektoren IV im Register 108 über
das ODER-Verknüpfungsglied 252. Auf diese Weise wird dann
der richtige Unterbrechungssicherstellungsbereich ISA durch den
Zeiger, der in dem Unterbrechungsvektor enthalten
ist, adressiert. Die Zeiger können in Richtung auf die Unterbrechungsvektoren
ISA bei der Inbetriebsetzung des Systems voreingestellt
oder während des Betriebs des Systems dynamisch
geändert werden. Wenn die gerade vorliegende aktuelle Ebene im Register 250 den
Unterbrechungsvektor IV 50 adressiert, dann kann der darin enthaltene
ISA-Zeiger in dem Register 254 gespeichert oder aus
dem Unterbrechungsvektorbereich bei Bedarf abgerufen werden.
Wenn der Befehl eine schnelle Ebenenänderung anzeigt, dann
wird die neue Ebene desselben Programms mittels des Registers
256 angezeigt. Mittels des QLC-Signals,
über das UND-Glied 258 und über das ODER-Glied 252 werden
die Unterbrechungsvektoren
adressiert. Zu diesem Zeitpunkt wird demgemäß auch das
UND-Glied 260 übertragungsfähig gemacht, so daß der ISA-Zeiger
der aktuellen Ebene zu dem Unterbrechungsvektorbereich
der neuen Ebene weitergeleitet wird. Unter
der Annahme, daß die aktuelle Ebene auf den
Unterbrechungsvektor IV 50 hinweist und daß ein derartiger
Unterbrechungsvektor 50 auf den Unterbrechungssicherstellungsbereich
ISA 50 hinweist, wird sodann ein Programm, das
in der Ebene 50 abläuft, eher unterbrechbar sein als ein
in der Ebene 10 ablaufendes Programm. Es kann während des Ablaufes
eines bestimmten Teiles des Programms erwünscht sein,
die Ebenen zu ändern, so daß ein Programm schwerer
zu unterbrechen ist. Wenn es z. B. während einer Operation
in der Ebene 50 erwünscht ist, eine Änderung auf eine
Ebene 10 hin vorzunehmen, wird der Zeiger für die Ebene 50,
der in dem Register 254 gespeichert ist, auf das Auftreten des QLC-
Signales hin die Registerstelle
eingeschrieben, und die neue Ebenenadresse wird
über das Register 256 bereitgestellt. Demgemäß weist der
ISA-Zeiger für den Unterbrechungsvektor IV 10 auch auf den
Bereich ISA 50 über die Leitung 262 hin. Der Unterbrechungsvektor
IV 50 zeigt weiterhin auf den Unterbrechungssicherstellungsbereich
ISA 50, und demgemäß braucht eine
Sicherstellungs- bzw. Reservierungs- und Zurückstellungsfunktion
der verschiedenen Register nicht bereitgestellt zu
werden, da dasselbe Programm weiterläuft. Eine
schnelle Ebenenänderung zu der niederen Ebene zurück, d. h.
zu der Ebene 50 hin, wird in derselben Weise bewirkt. Auf
diese Weise wird also viel Zeit während der schnellen Ebenenänderung
eingespart, indem man den Zeitaufwand für die
Ausführung der Sicherstellungs- und Zurückstellungsfunktion
vermeidet.
Claims (3)
1. Unterbrechungsverarbeitungsanordnung in einem Datenverarbeitungssystem
mit einer Vielzahl an einen Datenbus
(400) angeschlossener Einheiten, die jede für sich Programmunterbrechungen
auszulösen vermögen (402, 404, 408,
406/410, 412), von denen mindestens eine Einheit (Zentraleinheit
402) Einrichtungen zur Ausführung von Programmabläufen
umfaßt, wobei den zur Verarbeitung vorgesehenen
Programmen bestimmte, die Programmunterbrechbarkeit definierende
Nummernwerte (Unterbrechungsebenen) zugeordnet
sind, wobei eine erste Nummer (z. B. Null) die höchste Unterbrechungsebene
und die letzte Nummer (z. B. 63) die niedrigste
Unterbrechungsebene anzeigen und wobei ein in einer
höheren Unterbrechungsebene laufendes Programm weniger unterbrechbar
ist als ein in einer niedrigeren Unterbrechungsebene
laufendes Programm, dadurch gekennzeichnet, daß
- - eine erste Logikschaltungsstufe (310, 318, 322) vorgesehen ist zur Erzeugung eines Ebenenänderungssignals für den in der betreffenden Einheit gerade zur Ausführung gelangenden Programmteil;
- - in der betreffenden Einheit zweite Logikschaltmittel (150, 308) vorgesehen sind, die auf das genannte Ebenenänderungssignal ansprechen und eine Änderung der Ebene, in der der laufende Programmteil gerade abläuft, auf einen anderen Ebenenwert bewirken; und
- - in der betreffenden Einheit Ausführungsschaltmittel (250, 252, 254, 256, 258, 259, 260, 262) vorgesehen sind, welche die Ausführung dieses laufenden Programmteils in der geänderten Ebene bewirken, ohne den in Ausführung befindlichen Ablauf des laufenden Programmteils zu unterbrechen oder für einen Informationstransfer in den Registern dieser Einheit anzuhalten.
2. Unterbrechungsverarbeitungsanordnung nach Anspruch 1,
gekennzeichnet durch
- - ein Unterbrechungsregister (314) zur Aufnahme von Unterbrechungsstatussignalen (S, D, Q) und Unterbrechungsebenensignalen (LVL), die von laufenden Programmen bestimmt und dem Unterbrechungsregister (314) zugeführt werden (312);
- - Unterbrechungssicherstellungs-Speicherbereiche (152); ISA 0-ISA 63), in denen die bei Programmunterbrechung sicherzustellenden, zum Zeitpunkt der Unterbrechung in bestimmten Statusregistern (162) stehenden Programmstatusdaten abspeicherbar sind;
- - ein für jede Unterbrechungsebene eine Registerstelle (IV 0-IV 63) aufweisendes Unterbrechungsvektorenregister (108) mit darin abspeicherbaren Sicherstellungsadressen, die zugeordnete Unterbrechungssicherstellungs-Speicherbereiche (ISA 0-ISA 63) definieren;
und daß zur Veränderung der Unterbrechbarkeitsstufe eines in
der Zentraleinheit laufenden Programms weiterhin vorgesehen
sind:
- - eine Signalgeneratoreinrichtung (310; Fig. 7), die aus den Unterbrechungsstatussignalen (S, D, Q) ein das laufende Programm betreffendes Ebenenänderungssignal (QLC) erzeugt;
- - eine Unterbrechungsebenenänderungs-Logikschaltung (322; Fig. 10), die auf das Ebenenänderungssignal (QLC) hin die dem laufenden Programm zugehörige Ebenennummer in eine neue, den neuen Unterbrechungsebenensignalen (LVL) entsprechende Nummer abändert, und welche die für die Unterbrechbarkeitsstufe des laufenden Programms geltende Sicherstellungsadresse (ISA-Zeiger), die in der der Ebenennummer des laufenden Programms zugeordnete Registerstelle (z. B. IV 50) des Unterbrechungsvektorenregisters (108) steht und sich auf den für das laufende Programm gültigen Unterbrechungssicherstellungs-Speicherbereich (z. B. ISA 50) bezieht, in die der neuen Ebenennummer zugeordnete Unterbrechungsvektoren-Registerstelle (z. B. IV 10 in 108) einschreibt, wobei das laufende Programm zum Zeitpunkt der Ebenenänderung keine Unterbrechung erfährt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/591,966 US3984820A (en) | 1975-06-30 | 1975-06-30 | Apparatus for changing the interrupt level of a process executing in a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2629459A1 DE2629459A1 (de) | 1977-01-27 |
DE2629459C2 true DE2629459C2 (de) | 1990-10-11 |
Family
ID=24368700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19762629459 Granted DE2629459A1 (de) | 1975-06-30 | 1976-06-30 | Datenverarbeitungssystem |
Country Status (8)
Country | Link |
---|---|
US (1) | US3984820A (de) |
JP (1) | JPS526435A (de) |
BE (1) | BE843564A (de) |
CA (1) | CA1075363A (de) |
DE (1) | DE2629459A1 (de) |
FR (1) | FR2316656A1 (de) |
GB (1) | GB1556194A (de) |
HK (1) | HK37780A (de) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4159516A (en) * | 1976-03-23 | 1979-06-26 | Texas Instruments Incorporated | Input/output controller having selectable timing and maskable interrupt generation |
US4074353A (en) * | 1976-05-24 | 1978-02-14 | Honeywell Information Systems Inc. | Trap mechanism for a data processing system |
DE2754890C2 (de) * | 1977-12-09 | 1982-10-28 | Ibm Deutschland Gmbh, 7000 Stuttgart | Einrichtung zur Programmunterbrechung |
US4484271A (en) * | 1979-01-31 | 1984-11-20 | Honeywell Information Systems Inc. | Microprogrammed system having hardware interrupt apparatus |
JPS55112651A (en) * | 1979-02-21 | 1980-08-30 | Fujitsu Ltd | Virtual computer system |
JPS55129838A (en) * | 1979-03-30 | 1980-10-08 | Fujitsu Ltd | Program control system |
JPS5886645A (ja) * | 1981-11-18 | 1983-05-24 | Usac Electronics Ind Co Ltd | 入出力制御方式 |
JPS58222361A (ja) * | 1982-06-18 | 1983-12-24 | Fujitsu Ltd | デ−タ処理システムにおけるアクセス要求の優先順位決定制御方式 |
CA1273114A (en) * | 1985-11-04 | 1990-08-21 | Johannnes H. Den Boef | Multiprocess computer and method for operating same |
US4802087A (en) * | 1986-06-27 | 1989-01-31 | Honeywell Bull Inc. | Multiprocessor level change synchronization apparatus |
JPH0268632A (ja) * | 1988-09-05 | 1990-03-08 | Toshiba Corp | 割込み制御装置 |
DE4037723C2 (de) * | 1990-11-27 | 1995-04-06 | Siemens Ag | Verfahren zum Übermitteln von an mehreren Datenschnittstellen einer prozessorgesteuerten Einrichtung vorliegenden Informationen an deren Prozessoreinrichtung |
US5257357A (en) * | 1991-01-22 | 1993-10-26 | Motorola, Inc. | Method and apparatus for implementing a priority adjustment of an interrupt in a data processor |
JPH0749790A (ja) * | 1993-06-01 | 1995-02-21 | Matsushita Electric Ind Co Ltd | プロセッサにおける割り込み制御方法及び割り込み制御回路 |
US5961585A (en) * | 1997-01-07 | 1999-10-05 | Apple Computer, Inc. | Real time architecture for computer system |
US7043584B2 (en) * | 1997-02-18 | 2006-05-09 | Thomson Licensing | Interrupt prioritization in a digital disk apparatus |
US5919255A (en) * | 1997-03-12 | 1999-07-06 | Texas Instruments Incorporated | Method and apparatus for processing an interrupt |
JP3776653B2 (ja) * | 1999-11-24 | 2006-05-17 | 富士通株式会社 | 演算処理装置 |
DE10062995A1 (de) * | 2000-12-16 | 2002-07-11 | Micronas Gmbh | Unterbrecher-Steuereinrichtung |
DE10062996B4 (de) * | 2000-12-16 | 2005-09-29 | Micronas Gmbh | Unterbrecher-Steuereinrichtung mit Prioritätsvorgabe |
US6799236B1 (en) * | 2001-11-20 | 2004-09-28 | Sun Microsystems, Inc. | Methods and apparatus for executing code while avoiding interference |
US7644409B2 (en) * | 2004-06-04 | 2010-01-05 | Sun Microsystems, Inc. | Techniques for accessing a shared resource using an improved synchronization mechanism |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US7475397B1 (en) | 2004-07-28 | 2009-01-06 | Sun Microsystems, Inc. | Methods and apparatus for providing a remote serialization guarantee |
JP4817834B2 (ja) * | 2005-12-19 | 2011-11-16 | ルネサスエレクトロニクス株式会社 | 割り込み制御装置及び割り込み制御方法 |
JP4971676B2 (ja) * | 2006-04-28 | 2012-07-11 | ルネサスエレクトロニクス株式会社 | 割り込み制御回路及び割り込み制御方法 |
US8214574B2 (en) * | 2006-09-08 | 2012-07-03 | Intel Corporation | Event handling for architectural events at high privilege levels |
WO2014125324A1 (en) * | 2013-02-12 | 2014-08-21 | Freescale Semiconductor, Inc. | A method of and circuitry for controlling access by a master to a peripheral, a method of configuring such circuitry, and associated computer program products |
CN112069020B (zh) * | 2020-08-13 | 2023-09-15 | 中国航空无线电电子研究所 | 基于嵌入式操作***的机载航电设备软件故障监控*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3221309A (en) * | 1961-08-10 | 1965-11-30 | Scam Instr Corp | Priority interrupt monitoring system |
US3286239A (en) * | 1962-11-30 | 1966-11-15 | Burroughs Corp | Automatic interrupt system for a data processor |
US3333252A (en) * | 1965-01-18 | 1967-07-25 | Burroughs Corp | Time-dependent priority system |
GB1240978A (en) * | 1970-03-25 | 1971-07-28 | Ibm | Data processing systems |
IT971304B (it) * | 1972-11-29 | 1974-04-30 | Honeywell Inf Systems | Sistema di accesso a priorita variabile dinamicamente |
US3825902A (en) * | 1973-04-30 | 1974-07-23 | Ibm | Interlevel communication in multilevel priority interrupt system |
US3881174A (en) * | 1974-01-18 | 1975-04-29 | Process Computer Systems Inc | Peripheral interrupt apparatus for digital computer system |
-
1975
- 1975-06-30 US US05/591,966 patent/US3984820A/en not_active Expired - Lifetime
-
1976
- 1976-04-27 CA CA251,164A patent/CA1075363A/en not_active Expired
- 1976-06-29 BE BE168446A patent/BE843564A/xx not_active IP Right Cessation
- 1976-06-29 JP JP51076985A patent/JPS526435A/ja active Granted
- 1976-06-30 GB GB27206/76A patent/GB1556194A/en not_active Expired
- 1976-06-30 FR FR7619885A patent/FR2316656A1/fr active Granted
- 1976-06-30 DE DE19762629459 patent/DE2629459A1/de active Granted
-
1980
- 1980-07-10 HK HK377/80A patent/HK37780A/xx unknown
Also Published As
Publication number | Publication date |
---|---|
HK37780A (en) | 1980-07-18 |
CA1075363A (en) | 1980-04-08 |
JPS526435A (en) | 1977-01-18 |
BE843564A (fr) | 1976-10-18 |
GB1556194A (en) | 1979-11-21 |
DE2629459A1 (de) | 1977-01-27 |
FR2316656A1 (fr) | 1977-01-28 |
FR2316656B1 (de) | 1979-05-18 |
US3984820A (en) | 1976-10-05 |
JPS5750298B2 (de) | 1982-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2629459C2 (de) | ||
DE2714805C2 (de) | ||
DE3048365C2 (de) | ||
DE2645537C2 (de) | ||
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE1499182C3 (de) | Datenspeichersystem | |
DE3780208T2 (de) | Textverarbeitungsapparat zur verarbeitung von texten gemaess verschiedenen ausgewaehlten textformaten. | |
DE2414311C2 (de) | Speicherschutzeinrichtung | |
DE2744531A1 (de) | Elektronische datenverarbeitungsanlage | |
CH619309A5 (de) | ||
DE2719253B2 (de) | Schnittstellenschaltung für Datenverarbeitungsanlagen | |
DE2244402A1 (de) | Datenverarbeitungsanlage | |
CH615521A5 (de) | ||
DE2054830C3 (de) | Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge | |
DE2210325A1 (de) | Datenverarbeitungssystem | |
DE1774870C3 (de) | Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage | |
DE112006002908T5 (de) | Technik für die Kommunikation und Synchronisation von Threads | |
DE1499206B2 (de) | Rechenanlage | |
EP0935214B1 (de) | Chipkarte mit integrierter Schaltung | |
DE19626972A1 (de) | Verfahren und Vorrichtung zur vorläufigen Freigabe für die Anwendung eines von einer elektronischen Kassette geschützten Programms | |
DE3545937A1 (de) | Mikroprozessor | |
DE1909090B2 (de) | Schutzeinrichtung für den Arbeitsspeicher einer Rechenanlage | |
DE1812137A1 (de) | Elektronische Datenverarbeitungseinrichtung | |
DE2723706A1 (de) | Einrichtung zum adressenvergleich | |
DE3410497A1 (de) | Rechneranordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: HONEYWELL BULL INC., MINNEAPOLIS, MINN., US |
|
D2 | Grant after examination | ||
8363 | Opposition against the patent | ||
8339 | Ceased/non-payment of the annual fee |