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
Application number
DE2629459A
Other languages
English (en)
Other versions
DE2629459A1 (de
Inventor
Philip E. Westboro Mass. Us Stanley
William E. Natick Mass. Us Woods
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Bull Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Bull Inc filed Critical Honeywell Bull Inc
Publication of DE2629459A1 publication Critical patent/DE2629459A1/de
Application granted granted Critical
Publication of DE2629459C2 publication Critical patent/DE2629459C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task 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.
DE19762629459 1975-06-30 1976-06-30 Datenverarbeitungssystem Granted DE2629459A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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