DE2722099A1 - Abfangeinrichtung fuer ein dv-system - Google Patents

Abfangeinrichtung fuer ein dv-system

Info

Publication number
DE2722099A1
DE2722099A1 DE19772722099 DE2722099A DE2722099A1 DE 2722099 A1 DE2722099 A1 DE 2722099A1 DE 19772722099 DE19772722099 DE 19772722099 DE 2722099 A DE2722099 A DE 2722099A DE 2722099 A1 DE2722099 A1 DE 2722099A1
Authority
DE
Germany
Prior art keywords
interception
protection area
area
areas
interrupt
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.)
Granted
Application number
DE19772722099
Other languages
English (en)
Other versions
DE2722099C2 (de
Inventor
Kenneth J Izbicki
Steven C Ramsdell
Philip E Stanley
William E 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 Information Systems Italia SpA
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 Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2722099A1 publication Critical patent/DE2722099A1/de
Application granted granted Critical
Publication of DE2722099C2 publication Critical patent/DE2722099C2/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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Description

Die Erfindung bezieht sich auf DV-Systeme mit Verarbeitungsmöglichkeiten für sogenannte Unterbrechungen (interrupt) und Halte- oder Abfangpunkte (trap). Die meisten im Einsatz befindlichen Rechner haben Abfang- und Unterbrechungsstukturen, deren Einführung mehrere Jahre zurückliegt. Wegen der umfangreichen Logikschaltungen und des fehlenden Mikroprogrammierens weisen bekannte Rechner dieser Art jedoch nicht die heute erwartete Funktionsvielfalt solcher DV-Systeme auf. Es ist wichtig, flexible und erweiterte Funktionsmöglichkeiten zu haben, um solche Unterbrechungs- und Abfangmechanismen in solcher Weise integrieren zu können, daß das Programmieren des Rechners vereinfacht und die Arbeitsweise des Systems verbessert wird. Einige der Funktionsmöglichkeiten einer solchen Unterbrechungsstruktur umfassen die Job-Planung, die Vermittlung oder Anpassung sowie die Beendigung, was bisher der Software übertragen war. Beim Abfangmechanismus wird besonders die Weiterleitung von Parametern und Arbeitsraum als erwünschte Funktionsinöglichkeit angesehen.
Es ist wichtig zwischen Halte- oder Abfangpunkten einerseits und Unterbrechungen andererseits hinsichtlich ihrer Funktionalität zu unterscheiden. Abfangpunkte sind Unterbrechungen, welche sich unmittelbar aus der Ausführung von Befehlen im Rechnersystem ergeben. Sie werden vielfach auch als interne oder synchrone Unterbrechungen bezeichnet und befassen sich mit prozeßspezifischen Zuständen,wie Registerüberlauf, Benutzung eines nicht eingeführten Befehls oder Bezugnahme auf einen nicht angeschlossenen Speicher. Abfangdienstroutinen sind Mittel des laufenden aktiven Prozesses und geben nach Beendigung entweder die Steuerung an diesen Prozeß an der Stelle zurück, an der der Aufruf erfolgte, oder sie setzen den Prozeß aus und geber die Steuerung an das System zurück. Unterbrechungen andererseits und insbesondere externe Unterbrechungen, d.h. Unterbrechungsanforderungen, welche von einem zwecks Zusammenarbeit mit dem Prozessor angeschlossenen Gerät empfangen werden, werden durch Zustände aufgerufen, welche in keiner Beziehung zum gegenwärtig laufenden Prozeß stehen, beispielsweise externe Ereignisse oder Geräte, welche eine Leistung
709849/0838
anfordern, oder durch ständige Änderungen des Zustands des laufenden Prozesses in Bezug auf andere Prozesse oder die Aussetzung des laufenden Prozesses bei Abschluß seiner als task bezeichneten Aufgabe oder bei Änderung des Prioritätsranges des laufenden Prozesses. Abfangpunkte unterscheiden sich wesentlich von Unterbrechungen auch hinsichtlich der Art und des Umfangs der sicherzustellenden Daten und Zusammenhänge, ehe die Abfangverarbeitungsprozedur eingeleitet wird.
In einem Abfangmechanismus ist es erwünscht, als Folge eines Abfangzustandes, d.h. beispielsweise bei Adressierung eines nicht angeschlossenen Speichers, eine Befehlsfolge einzuleiten, welche diesen Zustand automatisch verarbeitet und zwar ohne daß jedesmal zeitraubende Tests erforderlich sind, wenn ein solcher Abfangzustand eintritt. Dies gestattet das Schreiben wirkungsvollerer Rechnerprogramme, weil viele mitlaufende Tests entfallen. Es ermöglicht außerdem die Durchführung eines Programms in einem System, welches bestimmte vom Programm benutzte Zentraleinheitoptionen nicht aufweist, weil die Abfangverarbeitungsroutine eine solche Option simulieren kann. Dies erweitert die Systemsicherheit, weil viele Programmfehler festgestellt werden können. Wichtig ist bei der Feststellung eines Abfangzustandes,auf diesen sofort zu reagieren und in möglichst wirksamer Weise eine teilweise Sicherstellung der Information des laufenden Programms in vorgegebenen Speicherbereichen durchzuführen. Es ist weiterhin notwendig, Information, welche den Grund für den Abfangzustand beschreibt, rasch zu speichern und die Steuerung auf ein geeignetes Antwortprogramm zu übertragen. Um den benötigten Speicherraum möglichst klein zu halten und die den gespeicherten Context, d.h. die Information im Zusammenhang, zusammen mit dem Prioritätsoder Unterbrechungsrang des laufenden Prozesses zuzuordnen, ist eine Flexibilität in Bezug auf die Benutzung solcher vorgegebener Speicherbereiche wichtig.
Aufgabe der Erfindung ist es folglich in erster Linie,ein Datenverarbeitungssystem mit verbesserter Abfangstruktur zu schaffen,
709849/0838
um wirkungsvoll auf verschiedene Zustände zu reagieren, v/elche direkt oder indirekt durch einen Prozeß bei dessen Ausführung im DV-System hervorgerufen werden.
Dieses Aufgabe wird gelöst durch die im Anspruch 1 gekennzeichnete Erfindung. Vorteilhafte Weiterbildungen ergeben sich aus den Unteransprüchen.
Die Erfindung wird nachfolgend anhand in den Zeichnungen wiedergegebener Ausführungsbeispiele im einzelnen erläutert. Darin zeigt
Fig. 1 den prinzipiellen Aufbau eines DV-Systems in dem
die Erfindung Anwendung findet;
Fig. 2 ein Blockschaltbild des Datenprozessors; Fig. 3 ein Blockschaltbild der im Datenprozessor gemäß
Fig. 2 eingesetzten Mikroprozessorlogik; Fig. 4 die Firmware-Routinen im Steuerspeicher des
Datenprozessors gemäß Fig. 2; Fig. 5 den Aufbau eines Firmware-Wortes in einem solchen
Steuerspeicher;
Fig. 6 in Form eines Blockdiagramms verschiedene System-Strukturen gemäß der Erfindung;
Fig. 7 in Form eines Blockdiagramms wie das System auf einen sogenannten Abfangszustand reagiert;
Fig. 8 in entsprechender Darstellung den Übergang der
Anordnung aus einem solchen Abfangszustand; und Fig. 9 in Form eines Flußdiagramms die benutzte Firmware.
In Fig. 1 ist die gemeinsame oder externe Datensammelschiene 11, vielfach auch als Busleitung bezeichnet, einerseits an einen Zentralprozessor 13 und auf der anderen Seite an wenigstens einen Speicher 15 angeschlossen. Darüberhinaus können mehrere periphere Steuereinrichtungen angeschlossen sein, wie beispielsweise zum Steuern eines Band- oder Plattenspeichers, von Nachrichtenübertragungsgeräten, Zusatzeinrichtungen, wie wissenschaftlichen und
709849/0838
•"ft —
arithmetischen Recheneinrichtungen sowie andere periphere Einheiten wie Kartenleser. Solche Peripherie-Steuergeräte sind in Fig. 1 beispielsweise in Form der Steuergeräte 17 und 19 dargestellt, welche als Schnittstelle mit irgendwelchen Peripheriegeräten 21 bzw. 23 dienen. Im Blockschaltbild des Datenprozessors gemäß Fig. 2 ist ein Steuerspeicher 10 dargestellt, der beispielsweise 512 Speicherplätze mit jeweils 56 Bits aufweist. Jeder Speicherplatz kann ein Firmware-Wort speichern, wie es zur Steuerung der verschiedenen Hardware-Operationen innerhalb des Datenprozessors verwendet wird. Die Anzahl solcher Speicherplätze und/oder Firmware-Worte und die Anzahl der Bits pro Wort kann auch größer oder kleiner sein. Der Betrieb eines Steuerspeichers und die dabei verwendete Befehlsdecodierung ist in einem Aufsatz "Designing Optimized Microprogrammed Control Sections for Microprocessors" von G.W. Schultz, veröffentlicht beginnend auf Seite 119 in der Zeitschrift "Computer Design" vom April 1974 beschrieben. Der Datenprozessor umfaßt ferner eine Register- und Logikeinheit RALU 12, welche zuweilen als Mikroprozessor bezeichnet wird. Fig. 3 zeigt Einzelheiten eines solchen Mikroprozessors. Er ist in vier Bereiche unterteilt, nämlich eine Registerdatei, eine Verschiebelogik, eine arithmetische Logik und eine Steuerlogik. Die Registerdatei umfaß Datenregister, Arbeitsregister und Basisregister. Die Verschiebelogik wird während der Verschiebeoperationen und der normalen Datenübertragung eingesetzt. Die arithmetische Logikschaltung umfaßt Verriegelungsschaltungen oder Puffer, Multiplexer, Inverter und einen Addierer. Die Steuerlogik des Mikroprozessors enthält eine Auswahllogik zur Auswahl der zu verarbeitenden Daten.
Der Zentralprozessor weist verschiedene Register auf, von denen einige zwar nicht für die Zwecke der vorliegenden Erfindung erforderlich sind, jedoch der Vollständigkeit halber kurz erwähnt werden sollen. Das Zustands/Sicherheitsregister 14 enthält die Systemzustands- und Sicherheitsschlüssel. Dieses Register enthält Bitfelder, welche anzeigen, ob sich das System in einem privilegierten Zustand P oder im Benutzerzustand befindet.
709849/0838
Während des Benutzerzustandes gelangen spezielle Befehle in eine sogenannte Abfangroutine anstatt ausgeführt zu werden. Das Register 14 enthält ferner ein Feld zur Anzeige der dem Prozessor während dieser Systemkonfiguration zugeordneten Nummer. Ferner ist ein Feld zur Anzeige des ünterbrechungsprioritätsranges des Zentralprozessors vorhanden. Alle Geräte, welche Unterbrechungen im System anfordern, geben einen Unterbrechungsrang an. Das im Zentralprozessor ablaufende Programm wird unterbrochen, falls das Gerät eine Rangnummer angibt, welche niedriger ist,als die tatsächliche Rangnuirjner des laufenden Prozesses, wobei die niedrigste Rangnummer einen Prozeß oder ein Gerät bezeichnet, welches am wenigstens unterbrochen werden darf. Eine solche Unterbrechungsstruktur ist in der älteren US-Anmeldung 591 966 vom 30.6.1975 beschrieben.
Das Anzeigeregister (I) 16 enthält die Überlauf- und Programmzustandsanzeige. Dieses Register weist ferner mehrere Felder auf, von denen einige zur Anzeige der Ergebnisse von irgendeinem Vergleich im System dienen und den Zustand des zuletzt angefragten Peripheriegerätes anzeigen sowie ein Feld für den Zustand des zuletzt überprüften Bits. Das MI-Register 18 enthält die Steuerschlüssel für den Abfangaktivierungsmodus mit einem Feld zur Aktivierung eines Verfolgungsabfangpunktes, d.h. eines Abfangpunktes, welcher die Verfolgung der Operation eines Rechnerprogramms unterstützt, und zwar für Sprung und Verzweigungsbefehle. Der Prcgrammzähler (P-Register) 20 ist beispielsweise ein 16-Bit-Register, welches normalerweise die Adresse des gegenwärtig ausgeführten Befehls enthält. Das Y-Register 22, d h. das Speicheradressregister umfaßt beispielsweise ebenfalls 16 Bit und enthält normalerweise die Adresse von im Speicher abrufbaren Daten. Das Sammelschienen-Datenregister 24, genannt auch Bus-Register (BD) kann ebenfalls ein 16-Bit-Register sein, welches Sammelschienendaten aus der Empfängerlogik 26-R enthält, um diese über die interne Sammelschiene 28 im Prozessor zu verteilen. Das Unterbrechungsregister L (30) hat im gezeigten Beispiel ebenfalls 16 Bit und empfängt über die Empfängerlogik 26-R eine Kanal-
709849/0838
nummer sowie den Rang eines die Operation unterbrechenden Gerätes. Das XB-Register 32 kann beispielsweise ein 4-Bit-Register sein, welches zum Bit- und Byte-Indexieren innerhalb des Pnzessors dient. Der Ausgang dieses Registers 32 ist sowohl an die interne Sammelschiene 28 als auch an die Decoderlogic 34 angeschlossen. Das Befehlsregister (F) 36 ist im gezeigten Ausführungsbeispiel ein 16-Bit-Register und hält das von dem an die externe Sammelschiene angekoppelten Speicher empfangene Befehlswort.
Die Konstantengeneratorlogik 40 liefert über den Multiplexer 42 bestimmte Konstanten an die interne Sammelschiene 28. Die Logikschaltung 34 enthält einen 4 bis 26 Bit Decoder zur Erzeugung einer Maske für Bit-Operationen. Dies heißt, eines von 16 Bit wird zwecks Test und/oder Modifikation ausgewählt und durch die Firmware im Steuerspeicher 10 verwendet. Die Eingangsdoppellogik 44 ermöglicht entweder eine Verdoppelung des höchstwertigen (linksstehenden) Zeichens (Byte) oder eine ungeänderte übertragung von der internen Sammelschiene 28 zum Mikroprozessor 12. Die Ausgangsdoppellogik 31 hat ähnliche Eigenschaften.
Die Steuerlogik 48 für die interne Sammelschiene benutzt die Bits 26 bis 31 des Firmware-Worts im Steuerspeicher 10, um den Inhalt des ausgewählten Prozessorregisters über die Drei-Zustandslogik 42 auf die interne Sammelschiene 28 zu geben. Bestimmte Gatterschaltungen dieser Logik 48 sind in der älteren Anmeldung gemäß DT-OS 26 29 401 dargestellt. Die Multiplexerlogik 42 dient der übertragung von Daten zur internen Sammelschiene 28, wobei zu jeder Zeit jeweils nur ein Eingang für die Übertragung aktiviert wird.
Die Testlogik 50 wählt beispielsweise einen von 64 möglichen Testzuständen aus, wobei die Steuerspeicherbits 40 bis 45 Anwendung finden. Je nachdem ob der getestete Zustand in Ordnung oder fehlerhaft ist, wird ein entsprechendes Signal an die Logik 52 zur Erzeugung der nächsten Adresse weitergegeben. Der Prozessor verwendet für die Erzeugung der nächsten Firmware-Adresse eine von
709849/0838
zwei möglichen Methoden. Die erste Methode benutzt die Bits 46 bis 55 des Steuerspeicherwortes, um hieraus die nächste Adresse zu bilden. Diese Bits können beispielsweise ein 10-Bit-Adressenfeld (nächste Adresse NA) umfassen, welches eine der potentiellen 1024 Steuerspeicherplätze unmittelbar adressieren kann. Die zweite Methode entnimmt die nächste Adresse aus einer Logikschaltung, welche mehrere vorher zugeordnete Adressen enthält. Die ausgewählte Adresse wird im Prinzip durch Decodieren des Inhalts des F-Registers 36 und der Ausgangssignale des Steuerspeichers 10 ausgewählt.
Die interne Sammelschiene (BI) 28 hat beispielsweise einen Durchlaß von 16 Bits und wird in erster Linie zur Datenübertragung zwischen den Registers des Prozessors verwendet. Speicheradressen und Daten werden auch über die interne Rammelschiene 28 zur externen Sammelschiene übertragen. Das Sammelschienonadressregister hat beispielsweise einen Umfang von 16 Bit und wird zu übertragung der Adressen für die Eingabe- und Ausgabe- sowie Speicherlese- oder Speicherschreibzyklen an die Logik 26-R und T verwendet. Die Sender/Empfängerlogik 26 (26R und 26T) umfaßt Logikschaltkreise, welche die einzige Schnittstelle zwischen dem Zentralprozessor und der externen Sammelleitung bilden. Alle Daten, Adressen und Unterbrechungssignale müssen durch diese Sende/ Empfängerlogik 26 hindurchlaufen. Eine solche logik und ihr Zusammenarbeiten mit einer externen Sammelschiene ist ebenfalls in der älteren Anmeldung gemäß DT-OS 26 29 401 beschrieben.
Die Auswahlmodifizierlogik (SM) 58 bestimmt, welche Bits des F-Register zunModifizieren der Registerdatei-Auswahl durch die LS- und RS-Felder benutzt werden, d.h. durch das linke Auswahlfeld LS und das rechte Auswahlfeld RS des Steurspeicherworts im Steuerspeicher 10. Die SM-Logik 58 schaltet die Bits 1 bis 3, 1O bis 11 und 13 bis 15 oder 12 bis 15 in Abhängigkeit von der Konfiguraticn der Steurspeicherbits 20, 24 und 25 zur linken oder zur rechten Auswahllogik, d.h. entweder zur LS-Logik 60 oder zur RS-Logik 62 durch. Diese beiden Logikschaltungen benutzen das Ausgangssignal
709849/0838
des Auswahlmodifizierers 58 sowie den Inhalt der Steurspeicherbits O bis 3 oder 4 bis 7 zur Registerauswahl. Die Steuerspeicherbits O bis 3 werden vom linken Selektor und die Steuerspeicherbits 4 bis 7 vom rechten Selektor verwendet.
Die externe Sammelschiene bildet einen gemeinsamen Nachrichtenübermittlungsweg oder eine Schnittstelle für alle Einheiten einschließlich des Speichers, wie dies beispielsweise in der erwähnten älteren Anmeldung beschrieben ist. Die externe Sammelschiene ist im Aufbau asynchron(und Einheiten unterschiedlicher Arbeitsgeschwindigkeit werden wirkungsvoll mit drei Arten von Übertragungen bewerkstelligt, nämlich Speicherübertragung,Ein/Aisgabeübertragung und Unterbrechung. An die externe Sammelschiene können der Zentralprozessor, eine Speichereinheit, Peripheriegerätesteuerungen, übertragungssteuerungen und dergLan9escnssen sein. Die erwähnten Register und dergl. sind beispielsweise im "Honeywell Level 6 Minicomputer Handbook" vom Januar 1976 im einzelnen beschrieben.
Fig. 3 zeigt Einzelheiten des Mikroprozessors RALU 12. Er kann beispielsweise vier sogenannte Mikrocontroller Typ 6701 der Firma Monolithic Memories Inc. aufweisen, wie sie in der zugehörigen Veröffentlichung vom August 1974 beschrieben sind. Der Mikroprozessor 12 ist in vier grundlegende Bereiche unterteilt, nämlich eine Registerdatei, eine Verschiebelogik, eine arithmetische Logik und eine Steuerlogik. Die Registerdatei 10 umfaßt Datenregister D1 bis D7, Arbeitsregister DO (oder D) und E sowie Basisregister B1 bis B7. Die Register D1 bis D7 sind im Beispiel 16 Bitwort-Operandenregister mit dem Bit Null als höchstwertigem Bit. Die Register D und E sind ebenfalls 16-Bit-Register und werden für die Datenbehandlung während der Firmware-Operationen eingesetzt. Das Register D hält eine Kopie des Inhalts des Befehlsregister 36 bereit. Die Basisregister sind im Beispiel ebenfalls 16 Bit-Adressenregister, welche zur Adressenbildung herangezogen werden können, indem auf irgendeine Prozedur, auf Daten oder einen Vermittlungsplatz innerhalb des Systems hingewiesen wird.
709849/0838
Die Basisregister haben darüberhinaus die Fähigkeit, selbsttätig fort- und zurückzuschalten, wodurch die Verwendung dieser Register für Stapel-, Warteschlangen- und Programmschleifen-Operationen erleichtert wird.
Die Multiplexer-Verschiebelogik 80 und 82 umfaßt in erster Linie zwei 16-Bit-Multiplexer, die sowohl für Verschiebeoperationen als auch zur normalen Datenübertragung eingesetzt werden. Ein zusätzliches 16-Bit-Register (A) 76 dient für Doppeloperandenverschiebungen. Daten können um 1 Bit nach links oder rechts zwischen den Maltiplexern und irgendeinem Datenregister innerhalb der Registerdatei 70 verschoben werden. Im vorliegenden Fall enthält das Q-Register 76 normalerweise eine nicht-indizierte Adresse, während das Ε-Register (BO) einen Indexwert enthält.
Die arithmetische Logik besteht aus zwei 16-Bit-Verriegelungsschaltungen 84 und 86, zwei 2-Zu-1 Multiplexern88 und 9O, zwei 16-BLt-Invertern92 und 94, einem Addierer 96 und einem Ausgangsmultiplexer 98. Die dem Eingang L100 zugeordneten Verriegelungsschaltungen empfangen Daten von der Registerdatei entsprechend der Auswahl durch die linke Selektorlogik 60. In ähnlicher Weise empfangen die dem Eingang R 102 zugeordneten Verriegelungsschaltungen Daten von der Registerdatei 70, wie sie von der rechten Selektorlogik 62 ausgewählt wurden. Die Ausgangssignale dieser beiden Verriegelungsschaltungen gelangen sowohl zu den Multiplexern 88 und 90 als auch zum Ausgangsmultiplexer 98. Der linke Mutliplexer 88 empfängt Daten über den Eingang D 104 von der internen Sammelschiene 28 und von den mit dem Eingang L 100 verbundenen Verriegelungsschaltungen 84. Der rechte Multiplexer 9O empfängt über den Eingang Q 106 Daten vom Q-Register 76 sowie von den dem Eingang R 102 zugeordneten Verriegelungsschaltungen 86. Die Ausgangssignale dieser beiden Multiplexer werden über Inverter 92 bzw. 94 den Eingängen L und R des Addierers 96 zugeiäitet. Außer den beiden Eingängen L und R ist ein weiterer Eingang für das Steuerspeicherwortbit 16 zur Ubertrageingabe vorhanden. Das Ausgangssignal des Addierers 96 gelangt zum Ausgangs-
709849/0838
multiplexer 98 sowie zur Eingangsmultiplexer-Verschiebelogik 80 und 82. Der Ausgangsmultiplexer 98 bildet den Hauptausgang des Mikroprozessors 12. Datenvom Ausgang des Multiplexers 98 gelangen zur internen Sammelschiene 28, um über diese innerhalb des Prozessors verteilt zu werden.
Im folgenden wer^jden der Prozessor und die Betriebsweise weiter anhand der Figuren 2 und 3 erläutert. Der Zentralprozessor ist längs einer einzigen internen Sammelschiene 28 angeordnet, welche die meisten der Prozessorlogikschaltungen untereinander und über die Empfänger 26-R und die Sender 26-T mit der externen Sammelschiene verbindet. Wie erwähnt, ist das Y-Register 22 das Speicheradressregister,und das F-Register 36 wird zur Aufnahme eines Befehlswortes während des Befehlsabrufs eingesetzt. Die verschiedenen Bits auf der internen Sammelschiene 28 werden als Eingangssignale zum Testen der Logik 50 verwendet, welche bei Firmware-Verzweigungsentscheidungen mitwirkt. Die Information in solchen Bits aus der internen Sammelschiene 28 kann in verschiedenen Hardware-Steuer-Flip-Flops 54 gespeichert werden. Die interne Sammelschiene 28 bildet ferner einen Eingang für den Mikroprozessor 12. Sie wird gesteuert durch mehrere Elemente, welche unter Firmware-Steuereinfluß stehen, einschließlich des Konstantengenerators 40, des Mikroprozessors 12 und des Byte-Auswahlregister (XB) 32, welches durch eine Verschiebeoperation aus dem Mikroprozessor 12 geladen wird.
Der laufende Befehl ist dynamisch erreichbar am Ausgang des Steuerspeichers 10 und wird mit verschiedenen Logikelementen teilweise decodiert und dann zur Durchführung von Operationen bezüglich der übrigen Elemente des Systems benutzt. Die nächste Adressengeneratorlogik 52 benutzt das nächste Adressenfeld im Steuerspeicherwort, d.h. im Firmware-Wort und erzeugt eine neue Adresse, welche hiervon sowie von den Testzuständen abhängt, welche die Testlogik 50 liefert. Der Steuerspeicher 10 geht bei jedem Prozessor-Taktzyklus einmal zur nächsten Adresse weiter, wobei ein solcher Taktzyklus in der Größenordnung von einigen Hundert Nanosekunden liegt.
7 09849/0838
Eine Verzweigung in die Firmware, d.h. den Steuerspeicher, wird von der Testlogik 50 festgestellt, welche den Inhalt der internen Zustands-Flip-Flops54, den Zustand der internen Sammelschiene und den Inhalt des F-Registers 36 für die Entscheidung verwendet, ob eine Testbedingung erfüllt ist oder nicht. Diese Testbedingung bildet ein Eingangssignal für die nächste Adressengeneratorlogik. Sie wird ferner zur Auswahl von zwei Arten der Adressenerzeugung während der verschiedenen Typen von Verzweigungsoperationen eingesetzt. Die XA-Verzweigung, welche unter den Einsprungstellen in die Firmware für verschiedene Arten der Adressenerzeugung auswählt, trifft eine Entscheidung, welche im wesentlichen auf dem Inhalt des F-Registers 36 beruht. Die XR-Verzweigung, die sich mit dem Abruf von Operanden aus dem Speicher befaßt, entscheidet hinsichtlich der Einsprungstellen in erster Linie über das Operationscodefeld des F-Register 36. Beispielsweise basiert eine XE-Verzweigung fast ausschließlich auf dem Operationscode des Befehls und wird durch die Operationscodebits im F-Register 3 2 aktiviert. Die XW-Verzweigung, v/elche darüber entscheidet, in welcher Art der Operand in den Speicher zurückgeschrieben wird, wird auf der Basis der Operationscodetyps sowie durch die internen Zustands-Flip-Flops54 durchgeführt.
Wie bereits erwähnt, sind der Eingang und der Ausgang des Mikroprozessors 12 mit Schaltungen ausgestattet, welche die Daten von und zur internen Sammelschiene 2 8 verdoppeln bzw. verzweigen können. Mit der Einqangszwillingslogik 44 kann man entweder die 16 Bits der internen Sammelschiene unmittelbar zum Mikroprozessor 12 leiten oder man kann stattdessen die acht linksstehenden, also höchstwertigen Bits duplizieren auf beide Bytepositionen eines Worts im Mikroprozessor 12. In ähnlicher Weise ist ein Zwillingsnetzwerk 61 am Ausgana des Mikroprozessors 12 vorgesehen, mit dem die interne Sammelschiene 28 mit beiden Seiten oder Hälften des Mikroprozessorausgangssignales beaufschlagt werden kann. Die rechte Hälfte dieses Ausgangssignals, d.h. die geringstwertigen Bits, können dupliziert werden auf beide Bytepositionen des auf die interne Sammelschiene 28 übertragenen Wortes.
709849/0838
Eine Verschiebeoperation im Indexregister wird bestimmte Arten von Adressierungen verwenden und durch Verschieben des im Indexregister, üblicherweise dem Ε-Register, gespeicherten Wertes erreicht. Während des Indizierens werden Bits entweder nach links oder rechts herausgeschoben je nach Art der Operationn.
Die Steuer-Flip-Flops, d.h. die Hardware-Flip-Flops 54 sind für die Beschreibung der Wirkungsweise der vorliegenden Erfindung ohne Bedeutung und enthalten mehrere Flip-Flops. Ein Flip-Flop wird benutzt, um festzustellen, ob der gegenwärtig ausgeführte Befehl ein Speicherbezugsbefehl ist oder nicht. Ein anderes Flip-Flop dient der Speicherung des Tatbestandes, ob das Ausgangssignal des Mikroprozessors zu einer zurückliegenden Zeit gleich Null war oder nicht.
Das F-Register 36 ist ein statisches 12-Bit-Register mit einem dynamischen 4-Bit-Zähler. Die vier rechts stehenden Bits des F-Registers, d.h. Bits 12 bis 15 werden als Zähler benutzt, der bis auf Null herabgezählt werden kann und dessen Inhalt für die Benutzung der Erzeugerlogik für die nächste Adresse überprüft werden kann. Dies dient dem Zählen von Verschiebeoperationen, d.h. es ist Teil des F-Registers 36, welches beim Ausführen einer Verschiebeoperation mit dem Verschiebeabstand geladen wird. Es wird ferner verwendet für die Schleifen zur Sicherstellung und Wiederherstellung des Registerinhalts im Speicher, um aufeinanderfolgend die 16 Register in der Registerdatei 70 durchzuzählen. Die Testlogik 50 enthält mehrere Auswahlschaltungen, welche durch verschiedene Steuerspeicher und Operationscodezustände aktiviert werden und führt im allgemeinen jene Tests durch, die für die Entscheidungsfindung während des Firmware-Ablaufs benutzt werden.
Die Logikschaltungen 80 und 82 sind derjenige Teil des Mikroprozessors, der entweder eine übertragung der Ausgangssignale des Addierers 96 in die Registerdatei 70 oder in das Q-Register oder die Verschiebung des Ausgangssignales des Addierers 96 um ein Bit nach links oder nach rechts durchführen kann. Die Logik-
709849/0838
schaltung 80 ist direkt an die Register in der Registerdatei 7O gekoppelt. Wird das Eingangssignal für die Registerdatei 70 entweder um ein Bit nach links oder nach rechts verschoben, so
wird der zugehörige Verschiebeeingangsimpuls von der Steuerlogik zur Verfügung gestellt, um das fehlende Bit zu liefern, während das andere Bit nach außen übertragen wird. Das Ε-Register in der Registerdatei 70 hält die Indexwerte aufrecht.
Die Linksauswahllogik 60, die Rechtsauswahllogik 62 und die AuswäiL-modifizierlogik 58, welche aus LogikschalLungen 72 und 74 besteht, umfaßt auch einen Teil der Steuerlogik des Mikroprozessors 12.
Das Ausgangssignal des Auswahlraodifizierers 58 bestimmt zusammen mit den Steuerspeicherbits Null bis 7 das Ausgangssignal der
Links- und der P.echtsselektoren 60 bzw. 62. Die Steuerspeicherbits 8 bis 15 steuern die folgenden Bereich des Mikroprozessors 12: Die Bits 8 bis 12 steuern den Addierer 96 sowie die Multiplexer und Inverter 88, 90, 92 und 94; die Bits 13 bis 15
steuern die Eingangs- und Ausgansmultiplexer 80, 82 und 98.
Wie bereits erwähnt, besteht der Steuerspeicher 10 aus mehreren Firmware-Worten zur Steuerung verschiedener Operationen innerhalb des Prozessors. Fig. 4 zeigt ein Übersichtsflußdiagramm solcher Firmware und dabei auch die Hauptverzweigungen zwischen den
Haupt-Firmware-Routinen, welche nachfolgend kurz erläutert werden.
Die Einleitungsroutine 11O (Initialisierung) läuft nach einer
Hauptlöschung des Systems an. Sie löscht verschiedene Register
und Flip-Flops im Prozessor und bestimmt ob das Steuerpult verriegelt ist oder nicht, d.h. ob alle Steuerpultschalter abgeschaltet sind. Das Steuerpult ist ein weiteres Element, welches Teil des Prozessors sein kann, welches jedoch für die hier zu
beschreibende Betriebsweise nicht von Bedeutung und deshalb nicht dargestellt ist. Ist das Steuerpult verriegelt, so wird eine
Verzweigung über die Befehlsabrufroutine 112 durchgeführt;
andernfalls wird die Steuerpultroutine 114 in Gang gesetzt. Die Befehlsabrufroutine 112 benutzt man, um den nächsten auszuführenden Befehl zu finden. Sobald dieser Befehl vom Speicher ein-
709849/0838
getroffen ist, wird er in das Befehlsregister 36 sowie in das D-Register geladen. Während der XF-Routine erfolgen Überprüfungen hinsichtlich folgender Zustände: (i) behebbarer Speicherfehler, (ii) ist ein Überwachungszähler oder ein Realzeittakt erforderlich, (iii) Geräteunterbrechung, (iv) Steuerpult entriegelt. Wird irgendeiner dieser Zustände festgestellt, so erfolgt eine Verzweigung zur geeigneten Routine. Andernfalls läuft die Adressierroutine 116 an. Diese wird in erster Linie zum Decodieren des sogenannten Adressilbenteils des Befehls im F-Register 36 benutzt. Durch Decodieren bestimmt man, ob die nächste Routine eine Schreibroutine, eine Ablaufroutine oder eine Gattungsroutine ist. Einige Befehle, beispielsweise Verschiebungsbefehle, werden vollständig innerhalb der Adressierroutine 116 abgewickelt. Nach Durchführung dieser Befehle gelangt man zur XF-Routinc 112, um den nächsten Befehl abzurufen.
Die Leseroutine 118 berechnet die endgültig wirksame Operandenadresse und wählt unter den verschiedenen Plätzen aus, von denen der Operand abzurufen ist. Falls notwendig, wird auch der Operand während dieser Routine entnommen. Einige Befehle werden innerhalb der Leseroutine ausgeführt. Die Ablaufroutine 120 wählt eine der verschiedenen Subroutinen aus, welche zur Vervollständigung des Ablaufs der meisten Zentralprozessorbefehle dient. Die Schreibroutine 122 speichert den Operanden oder das Ergebnis, nachdem der Befehl ausgeführt ist. Diese Routine wird nur begonnen, wenn Befehle ausgeführt werden, welche die Operanden zu einem Speicherplatz zurückführen müssen, der durch eine nach der Durchführung auftretende Adressensilbe bestimmt wird. Fünf Eintrittsstellen stehen für die Schreibroutine zur Verfügung, wobei die jeweils benutzte Eintrittsstelle davon abhängt, ob der Operand zum Speicher oder zu einem Register übertragen wird, ob der Operand ein Adressenoperand ist, oder ob es ein Halbwortoder ein GanzworbOperand ist. Die Gattungsroutine 124 dient der Ausführung verschiedener Befehle, die nicht mit Hilfe der Ablaufroutine durchgeführt werden. Beispielhaft hierfür sind der Haltebefehl,der Befehl zur Rückkehr aus einem Abfangzustand oder jene Befehle, welche den Zustand des Realzeittaktgebers oder des Überwachungszeitgebers beeinflussen.
709849/0838
Die Abfangroutine 126 kann von irgendwelchen Speicherplätzen innerhalb der Firmware aus anlaufen, wenn ein Abfangzustand festgestellt wird. Die Unterbrechungsroutine 128 geht von einer Anzahl von Quellen aus und hängt von der vom Prozessor ausgeführten gerade ablaufenden Operation ab. Solche Quellen können beispielsweise folgende sein: Eine Unterbrechung verursacht durch die Verwendung des letzten Abfangsicherungsbereiches, oder verursacht durch eine programmierte Unterbrechung( oder durch ein externes Gerät verursacht und über die externe Sammelschiene ankommend oder beispielsweise durch einen Stromversorgungsausfall. Die Uberwachungszeitgeber- und Realzeittaktgeberroutine 130 läuft alle paar Millisekunden, beispielsweise alle 8,33 ms an, wenn entweder der Uberwachungszeitgeber oder der Realzeittaktgeber eingeschaltet ist. Eine weitere dieser Routinen ist die Qualitätslogiktestroutine 132, welche einen grundlegenden Zuverlässigkeitstest der Prozessorlogik durchführt.
Somit werden die sechs Hauptverzweigungen, d.h. die Verzweigungen Xft XA, XG, XR, XE und XW wie folgt benutzt: Die XF-Verareigung wird verwendet, um den nächsten auszuführenden Befehl zu erhalten; die XA-Verzweigung dient, wenn nötig, der Decodierung der Adressensilbe im F-Register 36; die XG-Verzweigung tritt auf, wenn es nötig ist, zwischen zwei Gattungsbefehlen auszuwählen; die XR-Verzweigung dient dem Lesen eines Operanden durch Deco- «äferen des F-Registers; die XE-Verzweigung dient der Auswahl unter verschiedenen Subroutinen und der Ausführung der tatsächlichen Prozessorbefehle; die XW-Verzweigung läuft an, wenn es nötig ist, nach der Ausführung eines Befehls einen Operanden zu speichern.
Das Firmware-Steuerwortformat ist in Fig. 5 wiedergegeben und wie man sieht in zwölf Felder unterteilt. Jedes dieser Felder steuert einen anderen Teil der Hardware-Logik. Die die einzelnen Felder bildenden Bits sind in Fig. 5 ebenfalls angegeben. Beispielsweise besteht das Linksselektorfeld LS aus den Bits 0 bis 3 des Firmwareworts, während das sich anschließende Rechtsselektorfeld RS die Bits 4 bis 7 umfaßt.
709849/0838
— 2O —
Das LS-FeId dient der Auswahl eines der 16 Register7O im Mikroprozessor 12. Die Auswahl durch das LS-FeId wird durch das Selektormodifizierfeld SM modifiziert. Das LS-FeId wird nur bei Leseoperationen eingesetzt. Das Rechtsselektorfeld RS wird genauso benutzt, wie das LS-FeId und wählt dasselbe Register oder ein anderes Register der 16 Mikroprozessorregister 70 aus. Das RS-FeId wird jedoch sowohl für Lese- als auch für Schreiboperationen eingesetzt. Die Felder AFC und AF werden zusammen benutzt und dienen der Decodierung für die Steuerung aller Operationen innerhalb des Rechenwerks oder Addierers 96. Das Feld AM steuert den Ausgang der Multiplexer 80, 82 und 98 und damit die Datenbewegung und Verschiebeoperationen innerhalb des Mikroprozessors. Das Feld GC steuert verschiedene Hardware-Operationen, welche in drei Gruppen unterteilt sind. Die jeweils ausgewählte Gruppe wird durch eine Decodierung der Bits 17 und 18 des GC-Feldes bestimmt. Die erste Gruppe steuert die mit dem P-Register 20, dem I-Register 16 und dem F-Register 36 verbundenen Operationen. Die zweite Gruppe steuert Operationen, welche mit der Zwillingslogik 44, dem S-Register 14, dem MI-Register 18, dem XB-R£gister 32, dem Uberwachungszeitgeber und dem Realzeittaktgeber sowie verschiedenen Hardware-Steuer-Flip-Flops verbunden sind. Die dritte Gruppe wird im Zusammenhana mit Operationen des Steuerpults eingesetzt.
Das Selektor-Modifiziererfeld SM umfaßt die Bits 24 und 25 des Firmware-Wortes und benutzt darüberhinaus Bit 20 aus dem GC-FeId. Falls die beiden SM-Bits gleich 11O" sind und anzeigen, daß sie nicht benutzt werden, so wird die von den LS und RS-Feldern durchgeführte Auswahl nicht beeinflußt. Werden jedoch die SM-Bits 24 und 25 benutzt, d.h. sie sind nicht "0", dann werden bestimmte Bits des F-Registers 36 über eine UND-Schaltung logisch verknüpft mit den beiden Eingängen des S-und des RS-Feldes, die ihrerseits zur Auswahl der Registerdatei dienen. Das Intern-Sammelschienensteuerfeld BI (internal bus) wird zur Informationsübertragung an die interne Sammelschiene eingesetzt. Das Extern-Sammelschienensteuerfeld BS dient der Steuerung der Benutzung
709849/0838
der externen Sammelschiene durch den Zentralprozessor. Das Verzweigungstypfeld BR bestimmt die Art der durchgeführten Verzweigung und zwar als Ergebnis spezieller Testzustände. Das Testzustandsfeld TC bestimmt die spezielle Testbedingung, welche in Verbindung mit dem Verzweigungstypfeld Anwendung findet. Das Folgeadressenfeld NA (next address) bestimmt die nächstfolgende Firmware-Wortadresse im Steuerspeicher 10.
Die Unterbrechungsstruktur, welche in Verbindung mit der Abfangsstruktur gemäß der vorliegenden Erfindung Anwendung findet, kann vom Zentralprozessor 13 von irgendeinem der mit der Sammelschiene 11 gekoppelten Geräte empfangen werden. Beispielsweise kann das Steuergerät 17 eine solche Unterbrechungsanforderung erzeugen. Unterbrechungsanforderungen dieser Art werden als externe Unterbrechungen bezeichnet. Darüberhinaus können Unterbrechungsanfrderungen auch innerhalb des Zentralprozessors aufgrund des steuernden Rechenprogramms entstehen. Unabhängig ob die angeforderten Unterbrechungen intern oder extern entstehen, treten sie in jedem Fall asynchron in Bezug auf die Operation des Systems einschließlich des von Prozessor 13 verarbeitenden laufenden Programms auf. Die Unterbrechungen können, wie soeben geschildert, hinsichtlich ihrer Herkunft als intern oder extern bezüglich des Prozessors 13 unterschieden werden. Extern erzeugte Unterbrechungsanforderungen können beispielsweise durch eins der folgenden Ereignisse entstehen: Ein Peripheriegerät fordert einen Dienst an; es ist ein Stromausfall vorhanden; eine vorgegebene Zeitspanne ist abgelaufen, so daß der Überwachungszeitgeber oder der Echtzeittaktgeber angibt, daß die Operation nicht innerhalb der vorgeschriebenen Zeitspanne durchgeführt wurde. Intern erzeugte Unterbrechungen können durch einen speziellen Befehl den sogenannten LEV-Befehl hervorgerufen werden.
Den Unterbrechungsanforderungen des Systems sind verschiedene Prioritätsränge zugeordnet. Jedes Rechenprogramm läuft im Zentralprozessor auf einem Prioritätsrang ab, der durch einen 6-Bit-Rangcode bestimmt ist. Das ablaufende Rechenprogramm kann durch Ereignisse unterbrochen werden,deren Prioritätsrang höher ist als
709849/0838
der des ablaufenden Programms. Ein Rang gleich Null hat die höchste Priorität,und je höher die Rangnummer ist umso niedriger ist die Priorität. In einem System können mehrere Unterbrechungsränge, beispielsweise 64 unterschiedliche Unterbrechungsränge angewandt werden, welche folglich ziffernmäßig vom Rang bis zum Rang 63 laufen, wobei der letztgenannte die niedrigste Priorität hat. Jedem Prioritätsrang ist ein entsprechender Unterbrechungsvektor IV (interrupt vector) zugeordnet und in einem zugewiesenen Speicherplatz abgelegt. Der Unterbrechungsvektor ist eine Hinweisadresse zu einem Unterbrechungssicherungsbereich ISA. Sobald ein etlaufendes Programm unterbrochen wird, wird sein Kontext, d.h. seine im Zusammenhang stehenden Daten, im entsprechenden Unterbrechungssicherungsbereich gespeichert. Der Kontext des unterbrechenden Prozesses wird vom Unterbrechungsslcherungsbereich des unterbrechenden Ranges abgerufen. Dieser unterbrechende Prozeß kann dann auf dem ihm zugeordneten Rang abzulaufen beginnen. Verschiedene Prozesse oder Programme können auf unterschiedlichen Rängen laufen. Außerdem kann einem Prozeß oder Programm mehr als Rang zugeordnet sein. Beispielsweise kann das Programm normalerweise auf einem bestimmten Rang ablaufen und dann wenn es an einem Punkt anlangt, wo es nicht mehr unterbrochen werden soll, ausgenommen beispielsweise im Fall eines Stromausfalls, kann es eine Rangänderung zu einem Rang niedriger Ordnungszahl, also zu einer höheren Priorität durchführen und wird damit weniger unterbrechbar. Den 64 verschiedenen Rängen kann ein Register mit 64 Bits zugeordnet sein, welches beispielsweise im Speicher liegt und anzeigt, welche Ränge gegenwärtig aktiv sind, d.h. welche Ränge und entsprechende Prozesse zur Durchführung bereit sind. Üblicherweise entspricht der Rang des gegenwärtig ablaufenden Prozesses dem gesetzten höchstwertigen Bit. Diese 64 Bits werden als Aktivitätsanzeigebits bezeichnet und von Extern-Unterbrechungsanforderungen gesetzt. Sie werden gesetzt und/oder gelöscht durch den LEV-Befehl, der innerhalb des Prozessors 13 erzeugt wird.
Tritt eine externe Unterbrechungsanforderung auf, so wird der Unterbrechungsvektor für den unterbrochenen Rang herausgezogen
709849/0838
und gibt Zugriff zu seinem Unterbrechungssicherungsbereich, indem die Inhalte ausgewählter Register gespeichert werden, die Teil des Prozessors 13 sein können. Diese Register umfassen z.B. den Programmzähler und andere Spezialregister, wie gemeinsam benutzte Speicherregister sowie andere Generalregister. In Abhängigkeit von der Anzahl solcher Register, deren Inhalt sichergestellt werden muß und unter der beispielsweisen Annahme, daß die Anzahl dieser Register nicht größer als 16 ist, steuert ein 16-Bit-Unterbrechungssicherstellungs-Maskenregister ISM, welches beispielsweise im Sicherstellungsbereich enthalten sein kann, die Untergruppe der sicherzustellenden Registerinhalte. Der Unterbrechungsvektor für den unterbrechenden Rang wird in ähnlicher Weise dazu benutzt, um Zugriff zu seinem Unterbrechungssicherungsbereich zu gewinnen, aus dem die Inhalte der zuvor sichergestellten Speicher erneut in die Register zurückgeladen werden. Die Kennzeichnung des unterbrechenden Kanals wird in einem Speicherplatz seines Unterbrechungssicherungsbereiches abgelegt. Enthält der Unterbrechungsvektor des unterbrechenden Ranges eine falsche Adresse, so bleibt die Unterbrechungsanforderung unbeachtet. Hat der Unterbrechungsvektor beispielsweise an allen Stellen den Wert "O", so kann dies kein ordnungsgemäßer Unterbrechungsvektor sein, denn gemäß Definition muß er zu einem Unterbrechungssicherungsbereich hinweisen, der an einem Speicherplatz beginnt, der von Null verschieden ist. Wird hingegen die Unterbrechungsanforderung beachtet, so erfolgt eine Abtastung der Aktivitätanzeigebits.
Wie man sieht, stehen Unterbrechungen im allgemeinen nicht in Beziehung zum laufenden Programm und sind zumindest hinsichtlich der Operation oder Abwicklung eines solchen Programms asynchron. Abfangpunkte unterscheiden sich von Unterbrechungen dadurch, daß sie synchron, also auf das Programm bezogen sind und in gewissem Sinn durch das ablaufende Programm verursacht werden. Während die Funktion einer Unterbrechungsstruktur sich auf Aktionen bezieht, welche der Zentralprozessor ausf(ihrt;falls ein für ein Programm wichtiges Ereignis im allgemeinen außerhalb des Prozessors stattfindet, steht die Funktion des Abfangmechanismus in Beziehung zur Fähigkeit des Prozessors durch ein ablaufendes
709849/0838
Programm verursachte Zustände zu verarbeiten, sei es ein unzulässiger Befehl, eine nicht zur Verfügung stehende Geräteoption oder ein Versuch, einen nicht vorhandenen Speicher 2u adressieren. Die Funktion des Abfangmechanismus besteht darin, eine Programmfolge anlaufen zu lassen, um solche Zustände selbsttätig zu berücksichtigen und zu verarbeiten, ohne daß bei jedem Auftritt eines solchen Zustandes zeitraubende Tests erforderlich sind. Bezüglich der Unterbrechungsstruktur wird durch Vorgabe einer .angemessenen Anzahl von Unterbrechungsrängen dem Prozessor insofern ein Vorteil eingeräumt, als er die mit Priorität versehene Abläufe von Aufgaben oder Tasks steuert und damit keine umfangreiche Software zur Abwicklung dieser Funktionen erforderlich ist. Der Vorteil der Abfangstruktur hingegen besteht darin, daß sie mehrere wirksame Rechenprogramme zu schreiben ermöglicht, indem das Erfordernis für viele mitlaufende Test beseitigt wird und die Durchführung eines Programms in einem System ermöglicht, welches bestimmte vom Programm benutzte Zentralprozessoroptionen gar nicht aufweist. Der Abfangmechanismus ist in der Lage, solche Optionen zu simulieren.
Die Abfangprozedur aus einem Prozeß, d.h. ein Abgang aus dem normalen Prozeßablauf, der bei Fehlen dieses Zustandes, nämlich des Abfangzustandes nicht aufgetreten wäre, wird im allgemeinen durch eines der folgenden Ereignisse hervorgerufen: Ein Testbefehl, der das Austesten eines Fehlerzustandes verlangt; eine nicht in der Hardware vorhandene wissenschaftliche Option; eine nicht in der Hardware vorhandene arithmetische Möglichkeit; irgendeine andere nicht durch die Hardware gegebene Arbeitsmöglichkeit; eine ungültige Adresse; überlaufzustände, wie sie beispielsweise vom Rechenwerk im Prozessor erzeugt werden; eine unprivilegierte Benutzung einer privilegierten Operation; eine unprivilegierte Bezugnahme auf einen geschützten Bereich eines dem Prozessor zugeordneten Speichers; Bezugnahme auf einen nicht zugängigen Speicherraum; ein Speicherparitätsfehler oder dergl.
709849/0838
Sobald der Abfangzustand auftritt wird der mit dem Abfangpunkt in Verbindung stehende Kontext in einem Abfangkontext-Sicherungsbereich gespeichert, der aus einer Gruppe solcher Bereiche herausgenommen wird. Hiernach wird dieser Bereich dem Kontext des laufenden Prozesses zugefügt und schließlich eine Abfangverarbeitungsprozedur in Gang gesetzt, welche für die Art des Abfangpunktes spezifisch ist. Damit beginnt die Abfangverarbeitung. Eine Rückkehr aus dem Abfangzustand bedeutet im wesentlichen eine Umkehr der Abfangeinstiegprozedur und besteht aus dem aufeinanderfolgenden Zurückladen des Kontext aus dem Abfangsicherungsbereich, aus dem Entkoppeln dieses Bereiches vom Kontext des laufenden Prozesses und schließlich aus der Rückkehr des Abfangsicherungsbereiches in die Gruppe von Sicherungsbereichen. Der Abfangmechanismus wird nachfolgend anhand von Fig. erläutert.
Es gibt vier im Weg von Datenstrukturen des Speichers 15 einführbare Elemente, welche vom Prozessor 13 zur Unterstützung der Abfangfunktion verwendet werden. Das erste dieser Elemente ist ein Abfangkontext-Sicherungsbereich TSA 200, von denen mehrere existieren. Jeder Kontextsicherungsbereich 200 kann beispielsweise einen Achtwortblock im Speicher umfassen, in den der Kontext bei Eintritt in die Abfangprozedur eingegeben und dort sichergestellt wird und von dem der Kontext beim Austritt aus der Abfangprozedur wieder ausgespeichert wird. Der erste Speicherplatz in einem TSA-Block 200 stellt eine zuweilen als TSAP bezeichnete Verbindung zum nächsten TSA-Block innerhalb der Kette von Abfangkontextsicherungsbereichen dar. Handelt es sich um den letzten TSA-Block einer solchen Kette, so ist sein Verbindungsanzeiger TSAP gleich "0". Nur die letzten sieben Speicherplätze werden tatsächlich für die Kontextsicherstellung und die Wiederherstellung ausgenutzt. Es ist von Bedeutung, daß beispielsweise 65 solcher Ketten von TSA-Blocks vorhanden sein kön nen und zwar einer für jeden der 64 Unterbrechungsränge. Hierdurch kann Kontext sichergestellt werden, der aus Abfangvorgängen stammt, die gerade in jedem der Ränge ablaufen. Eine
709849/0838
65. Kette besteht aus leeren TSA-Blöcken, welche für zukünftige Abfangvorgänge bereit ist. Sie wird als TSA-Pool 210 bezeichnet.
Die anderen sieben Speicherplätze können Plätze für den Kontextdes I-Regjsters eines der Datenregister (z.B.D 3); das erste Wort des bei Aufruf des Abfangpunktes gerade ablaufenden Befehls sowie für ein sogenanntes Z-Wort umfassen, welches eine Sammlung von im Zeitpunkt des Abfangaufrufs vorhandenen Systemzustandsanzeiger enthält, solche Zustandsinformation kann sich auf den Privilegzustand des Prozessors 13 vor dem Einstieg in den Abfangpunkt beziehen. Ein 1-Bit-Feld zeigt an, ob dies ein Speicherbezugsbefehl war, ein 4-Bit-Feld zeigt die Anzahl der seit Beginn des gegenwärtigen Befehls abgerufenen Worte an, ein 4-Bit-Feld gibt an, welches Bit oder Byte im Operanden dieses Befehls von Interesse ist usw. Ebenfalls enthalten in diesen Speicherplätzen des TSA-Blocks kann die effektive Adresse des Operanden im Speicher sein, ferner der Inhalt des Programmzählers 20 sowie der Inhalt eines der Basisregister, beispielsweise des Basisregisters B3.
Das zweite der erwähnten vier Elemente ist der TSA-Pool 210, leerer TSA-Blöcke 200. Dies sind zugängige Bereich, welche von Haltepunkten benutzt werden können, die irgendeinem Unterbrechungsrang oder irgendeinem Abfangtyp zugeordnet sind. Dieser TSA-Pool besteht, wie erwähnt, aus der 65. Kette von TSA-Blöcken und wird durch den Inhalt eines Speicherplatzes angewählt mit einer Hinweisadresse, welche nachfolgend als NATSAP 202,also als Hinweisadresse auf den als nächsten zugängigen Abfangspeicherbereich bezeichnet wird.
Das dritte der erwähnten Elemente ist der Unterbrechungskontextsicherungsbereich ISA2O4, von dem ebenfalls mehrere bestehen, beispielsweise 64 entsprechend den 64 Unterbrechungsrängen. Das erste Wort jedes Unterbrechungskontextsicherungsbereiches kann die Hinweisadresse auf den Abfangsicherungsbereich, also TSAP, sein, welche auf die Kette von TSA-Blöcken hinweist. Es sind dies diejenigen TSA-Blöcke, welche den von laufenden Abfangprozeduren
709849/0838
sichergestellten Kontext enthalten und zwar von Abfangprozeduren, welche im Rang ihres zugeordneten Unterbrechungssicherungsbereichs laufen. Der Unterbrechungssicherungsbereich 204 enthält andere als Kontext bezeichnete Datenzusammenhänge, beispielsweise die Kanal- und Rangnummer des unterbrechenden Gerätes sowie Speicherplätze zum Ablegen des Inhalts, beispielsweise des Programmspeichers 20 und darüberhinaus weitere Register, wie Daten- und Basisregister. Außerdem kann im Unterbrechungssicherungsbereich eine Maskeninformation gespeichert sein, welche zum Beispiel zur Bestimmung desjenigen Registers im Prozessor dient,dessen Inhalt sichergestellt werden muß. Die Maske wird zum Sicherstellen des Inhalts verschiedener Register in Abhängigkeit von der Rangnummer verwendet. Der infolge einer Unterbrechung sichergestellte Kontext muß vollständig genug sein, damit der Inhalt des unterbrochenen Prozesses nach der Ausführung eines neuen, nämlich des unterbrechenden Prozesses zurückgeführt werden kann.
Den Unterbrechungssicherungsbereichen 204 sind Unterbrechungsvektoren 212 zugeordnet, von denen beispielsweise ebenfalls 64 vorhanden sein können. Der gerade vorhandene Unterbrechungsrang erzeugt eine Adresse, welche auf den dem laufenden Rang zugeordneten Unterbrechungsvektor hinweist.In Fig.6 ist der Unterbrechungsvektor 30 der laufende Unterbrechungsvektor.
Das vierte Element der Abfangstruktur ist eine Gruppe von Abfangvektoren 206, von denen jeder eine Startadresse einer unterschied lichen Prozedur enthält. Jede dieser Prozeduren verarbeitet durch unterschiedliche Abfangpunkte hervorgerufene Zustände. Solche Prozeduren hängen nicht vom Prozeß oder Rechenprogramm ab, son dern sind für die Abfangklasse spezifisch. Alle Prozesse bei jedem beliebigen Unterbrechungsrang benutzen die gleiche Gruppe von Abfangverarbeitungsprozedurenj und jede Klasse von Abfang punkten ruft eine unterschiedliche Prozedur auf. Wie bereits erwähnt, können mehrere Abfangklassen, beispielsweise neun vor handen sein. Jeder Abfangvektor kann eine Startadresse in einer
709849/0838
— 9ft —
Tabelle enthalten, die die Startadressen für folgende Abfangverarbeitungsprozeduren umfaßt: Einen sogenannten Uberwachungsaufrufbefehl, einen sogenannten Test- oder Verfolgungsbefehl, einen Operationscode mit gleitender Hinweisadresse, einen Undefinierten Operationscode, einen überlaufzustand, eine unprivilegierte Benutzung eines privilegierten Befehls, ein fehlendes Betriebsmittel, einen logischen Programmfehler oder einen Paritätsfehler. Im Bedarfsfall können auch noch weitere Abfangverarbeitungsprozeduren hinzugefügt werden.
Fig.6 zeigt ein typisches Blockschaltbild einer Abfangprozedur gemäß der Erfindung. Der TSA-Pool 210 mit den Abfangsicherungsbereichen 200 enthält im Beispiel N bis N+X Abfangsicherungsbereiche. Die Hinweisadresse NATSAP 202 weist auf den als nächsten adressierbaren Bereich TSAN(200-N) hin, während die Hinweisadresse TSAP im Block TSAN auf den nachfolgenden Block TSAN+1 usw. hinweist. Der nächste auftretende Abfangpunkt entkoppelt den Block TSAN vom TSA-Pool 210, um die zugeordneten sichergestellten Kontextinhalte mit dem Unterbrechungsrang des laufenden Prozesses zu koppeln. Im Anschluß an diese Entkopplung weist die Adresse NATSAP auf den Block TSAN+1. Die Hinweisadresse TSAP im Block TSAN weist dann entweder auf Null, sofern keine vorhergehenden Abfangsicherungsbereich dem Unterbrechungssicherungsbereich des gegenwärtigen Ranges zugeordnet waren, oder sie weist auf den Abfangsicherungsbereich,auf den zuvor im laufenden Unterbrechungssicherungsbereich ISA 204 mit der Hinweisadresse TSAP hingewiesen wurde. Der neue in Besitz genommene Sicherungsbereich 200 aus dem Pool 210 wird zwischen die Unterbrechungssicherungsbereiche ISA und irgendwelche Abfangsicherungsbereiche TSA eingeschaltet, die mit ihm gekoppelt worden sind.
Jedem der Unterbrechungsvektoren kann ein Unterbrechungssicherungsbereich 204 zugeordnet sein. Beispielsweise ist der Unterbrechungsvektor IVO dem Bereich ISAO und der Unterbrechungsvektor IV30 dem Bereich ISA30 zugeordnet. Der erste Speicherplatz in einem Unterbrechungssicherungsbereich enthält beispielsweise
709849/0838 *
eine Abfangsicherungsbereich-Hinweisadresse TSAP, welche auf den letzten mit diesem Unterbrechungsrang benutzten Sicherungsbereich hinweist. Werden gegenwärtig keine Abfangsicherungsbereiche von einem Unterbrechungssicherungsbereich benutzt, so weist die Adresse TSAP auf Null. Es können auch mehr als ein Abfangsicherungsbereich jedem Unterbrechungssicherungsbereich zugeordnet sein. Beispielsweise wurde erwähnt, daß der Vektor auf dem ünterbrechungssicherungsbereich 30 hinweist, der seinerseits wiederum auf drei Abfangsicherungsbereiche hinweist. So weist die Hinweisadresse TSAP im Unterbrechungssicherungsbereich 30 auf den Abfangsicherungsbereich TSA2, während die Hinweisadresse TSAP dieses Bereiches auf den Bereich TSA3 hinweist usw.
Es können mehr als ein Abfangsicherungsbereich erforderlich sein, weil Abfangpunkte selbst auch bei Durchführung einer Abfangverarbeitungsroutine anfallen können. Es sei beispielsweise angenommen, daß der Prozeß auf dem Unterbrechungsrang 30 abläuft und ein Operationscodebefehl festgestellt wird, für dessen Ausführung bestimmte im System nicht vorhandene Elemente notwendig sind. Beispielsweise kann der Operationscode eine bestimmte Arithmetikeinheit benötigen, die nicht vorhanden ist. In diesem Fall tritt ein Abfangzustand auf und der Kontext wird in einen geeigneten Abfangsicherungsbereich aus dem TSA-Pool 210 gespeichert, während der Abfangvektor für diese Art von Abfangpunkt adressiert wird. Dieser seinerseits adressiert eine Abfangverarbeitungsprozedur, welche dazu dient, eine solche Spezialarithmetikeinheit mit den grundlegenden Arbeitseinrichtungen zu unterstützen, beispielsweise mit Hilfe eines Rechenprogramms, welche im Prozessor gemäß Fig. 2 vorhanden ist. Somit läuft der Prozeß im Rang 30 weiter, indem er eine Abfangverarbeitungsprozedur für eine solche nicht angeschlossene Spezialarithmetikeinheit abwickelt. Unterstellt^^cfaß während dieses Emulationsvorganges in der Abfangverarbeitungsprozedur ein Paritätsfehler festgestellt wird, so tritt ein anderer Abfangzustand auf und ein anderer Abfangsicherungsbereich wird mit dem Unterbrechungssicherungsbereich 30 gekoppelt, um den Kontext zu speichern,an dem Punkt,
709849/0838
an dem die Abfangverarbeitungsprozedur für diesen Zustand zur Verarbeitung des Paritätsfehlerzustandes aufgerufen wird. Im Anschluß an die Verarbeitung eines solchen Paritätsfehlerzustandes wird der hierfür benutzte Abfangsicherungsbereich wieder an den TSA-Pool 210 zurückgegeben. Anschließend kann der ursprüngliche Abfangsicherungsbereich für die im Emulationsbetrieb verwendete spezielle Arithmetikeinheit zurückgegeben werden.
Nachdem einmal der Kontext der verschiedenen Register usw. im Abfangsicherungsbereich gespeichert ist, ist es nötig, den Speicherplatz der Abfangverarbeitungsprozedur zu bezeichnen, welche diesen Abfangpunkt verarbeiten soll. Anschließend muß der für die Kontextspeicherung verwendete Abfangsicherungsbereich entkoppelt werden, der noch immer mit dem TSA-Pool 210 verbunden ist. Hierauf folgend wird der Abfangsicherungsbereich mit dem Unterbrechungssicherungbereich verbunden, dem er nunmehr zugeordnet ist. Nachdem der Abfangsicherungsbereich seine Auf gäbe erfüllt hat, müssen die obengenannten Vorgänge in umgekehrter Reihenfeuge abgewickelt und der Abfangsicherungsbereich in den TSA-Pool 210 eingegliedert werden. Sobald einmal der Kontext im Abfangsicherungsbereich sichergestellt ist, wird zum Adressieren eines der Abfangvektoren 206 eine Abfangvektoradresse benutzt, welche auf der Abfangpunktnummer beruht. Es gibt mehrere Abfangvektoren, von denen jeder auf eine andere Abfangverarbeitungsprozedur hinweist, die ihrerseits unterschiedliche Arte von Abfangpunkten bearbeiten und zwar unabhängig vom Unterbrechungsrang. Dies bedeutet, daß ein im Unterbrechungsrang 15 ablaufender Prozeß die gleiche Abfangprozedur verwenden kann wie ein im Rang IVO oder IV63 ablaufender Prozeß. Die zum Adressieren einer der Abfangvektoren 206 benötigte Abfangnummer wird aus der Art des Abfangpunktes abgeleitet. Liegt beispielsweise ein Paritätsfehler vor, so wird dieser festgestellt und erzeugt einen Bitcode entsprechend der Abfangnummer. Die Art und Weise, in der solche Abfangnummer η erzeugt werden und dabei die Abfangvektoren adressieren, kann ähnlich derjenigen sein, welche zur Bildung eines' Bitcodes für die Adressierung der Unterbrechungsvektoren dient. Die Spe zielle Anwendung einer solchen Erzeugung einer Abfangvektor-
709849/0838
adresse ist nur insoweit von Bedueutung, als unterschiedliche Abfangnununern für unterschiedliche Abfangzustände eingehen. Im Anschluß an das Adressieren eines der Abfanqvektoren enthält dieser die Adresse seiner zugeordneten Abfangprozedur 214, die dann adressiert wird. Nach Ablauf dieser Prozedur wird der zugeordnete Abfangsicherungsbereich wieder in den TSA-Pool 200 eingegliedert.
Nunmehr soll anhand von Fig. 7 die Folge der bei Feststellung eines Abfangzustands ablaufenden Operationen erläutert werden. Der Sicherstellungsbereich 200 (in Fig. 7 mit 300 bezeichnet), auf den durch die Hinweisadresse 202 auf den als nächsten zugängigen Abfangsicherungsbereich hingewiesen wird, wird mit den dem Abfangpunkt zugeordneten Kontext geladen. Der durch die Hinweisadresse NAPSAP202 bezeichnete Abfangsicherungsbereich ist als Element 300 bezeichnet. Der Einfachheit halber sind nur zwei Sicherungsbereich 300 und 302 im TSA-Pool 210 angegeben. Der Kontext der verschiedenen Elemente wird im Bereich TSA300 abgelegt. Anschließend wird der Inhalt der Register I, D3 und F, die Zustandsinformation (Eingang Z), die effektive Adresse EA, der Programmzählstand und das Basisregister 3 in die angegebenen Speicherplätze eingeschrieben. Dann erfolgt das Entkoppeln des Abfangsicherungsbereichs 300 aus dem TSA-Pool 210 und sein Ankoppeln an den Kopf der Kette von denjenigen Kontextsicherungsbereichen, welche dem Unterbrechtskontext-Sicherungsbereich des Unterbrechungsranges des laufenden Prozesses zugefügt sind. Dies erfolgt durch einendreieckförmigen Umlauf der Adressen, wie er durch die gestrichelten Linien 304, 306 und 308 angedeutet ist. Die Hinweisadresse auf den Abfangsicherungsbereich TSA 300 ersetzt die Hinweisadresse NATSAP 202, die ihrerseits die Adresse TSAP im Unterbrechungssicherungsbereich 204 ersetzt. Dies ist derjenige Unterbrechungssicherungsbereich,auf den der Unterbrechungsvektor 211 des gegenwärtigen Ranges hinweist. Die Hinweisadresse TSAP im Sicherungsbereich ISA 204 ersetzt die Hinweisadresse TSAP im Sicherungsbereich PSA 300. Anschließend an diesen Umlauf von Adressen wird die als Folge der Feststellung der Art
709849/0838
des Abfangzustandes erzeugte Abfangnummer zur Adressierung des geeigneten Abfangvektors 206.benutzt und dieser in den Programmzähler 20 geladen, wo er auf den Anfang der Abfangprozedur 214 hinweist. Als Ergebnis wird der Abfangsicherungsbereich 300 zwischen den Unterbrechungssicherungsbereich 204 und den Abfangsicherungsbereich 310 eingefügt, der zuvor über seine Hinweisadresse TASP mit dem Unterbrechungssicherungsbereich 204 gekoppelt war. Die sich hieraus ergebende Konfiguration ist durch die ausgezogene Linien in Fig. 8 wiedergegeben. DieseFigur zeigt außerdem, wie der Abfangsicherungsbereich in den TSA-Pool 210 zurückgeführt wird.
Zu beachten ist, daß zum Zeitpunkt eines Abfangzustandes der benutzte Abfangsicherungsbereich Teil des laufenden Prozeßkontextes wird und wenn dieser Prozeß während der Bearbeitung des Abfangzustandes unterbrochen wird, der Abfangsicherungsbereich mit dem Unterbrechungskontextsicherungsbereich solange verbunden bleibt, bis dieser Prozeß wieder aufgegriffen wird. Von da ab wird die Abfangprozedur zu Ende geführt und schließlich der Abfangsicherungsbereich endgültig freigegeben.
Bei Beendigung der Abfangroutine zeigt die Hinweisadresse NATSAP 202 auf den Sicherungsbereich TSA 302. Der Unterbrechungsvektor 212 verweist weiterhin auf den Sicherungsbereich ISA 204, während dessen Hinweisadresse TSAP auf den Sicherungsbereich TSA 300 und dessen Hinweisadresse ihrerseits auf den Bereich TSA 310 hinweist. Somit ist der Sicherungsbereich TSA 300 zwischen die Bereiche ISA 204 und TSA 310 eingeschaltet. Die Hinweisadresse TSAP des Bereichs TSA 310 zeigt ebenso wie diejenige des Bereichs TSA 302 weiterhin auf Null und deutet damit an, daß keine weiteren Abfangsicherungsbereiche vorhanden sind. Bezüglich des Bereichs TSA 310 bedeutet dies, daß kein weiterer Abfangssicherungsbereich mit diesem Unterbrechungsrang verbunden ist. In Bezug auf den Bereich TSA 302 heißt es, daß keine weiteren Abfangssicherungsbereich 200 im TSA-Pool 210 vorhanden sind. Ein solcher Zustand wird festgestellt,und es kann eine Prozedur anlaufen, welche weitere Abfangsicherungsbereicte TSA bildet zwecks
709849/0838
Ersatz im TSA-Pool. Diese können für weitere Zwecke entsprechend der Erfindung eingesetzt werden.
Bei Abschluß der Abfangprozedur, d.h. wenn diese zur Bückkehr in die bei Feststellung des Abfangzustandes gerade laufende Prozedur bereit ist, wird als Folge der Ausführung eines Befehls ein Signal aktiviert, welches einen Teil des sichergestellten Kontext zurücklädt und dann den Abfangsicherungsbereich vom Prozeßkontext
an
entkoppelt und den Sicherungsbereich den TSA-Pool 210 zurückgibt. Bei Rückkehr aus einer Abfangoperation werden die genannten Elemente, d.h. die Register, I, D3, S(P), P und B3 aus den angegebenen Speicherplätzen im Abfangsicherungsbereich 300 zurückgeladen in die genannten Elemente. Dabei zeigt der Anzeiger S(P) die verschiedenen Zustandsregister an, weiche beispielsweise in der Hardware-Steuerung 54 gemäß Fig. 2 enthalten sein können. Das Entkoppeln des Abstandsicherungsbereiches und seine Rückkehr zum TSA-Pool 210 wird dann durch eine dreieckförmige Adressenrotation entsprechend den gestrichelten Linien 320, 322 und 324 in Fig. 8 bewerkstelligt. Die Hinweisadresse TSAP auf den Bereich TSA 310 des TSA-Pools 300 ersetzt die Hinweisadresse TSAP im Unterbrechungssicherungsbereich 204. Hieran anschließend ersetzt dessen Hinweisadresse TSAP, die auf den Bereich TSA 300 zeigt, die Hinweisadresse NATSAP 202, die ihrerseits die ursprüngliche Hinweisadresse TSAP des Bereichs TSA 300 ersetzt. Damit ist nach Rückkehr der Prozedur aus dem Abfangzustand die Konfiguration die gleiche wie zu dem Zeitpunkt vor Eintritt in die Abfangprozedur.
Die Art und Weise, in der die Steuerworte im Steuerspeicher 10 zur Verfügung gestellt werden, um als Folge eines festgestellten Abfangzustandes den Abfangmechanismus in Gang zu setzen, ist im Plußdiagramm gemäß Fig. 9 wiedergegeben. Es stellt die Firmware-Steuer Speicherworte dar, die zur Sicherstellung des Kontext und zum Entkoppeln des Abfangsicherungsbereiches aus dem TSA-Pool der Bereiche 200 benutzt wird. Eine Rückkehr aus dem Abfangsicherungsbereich in den TSA-Pool würde in ähnlicher Weise
709849/0838
erfolgen und zwar in umgekehrter Reihenfolge der Schritte gemäß Fig. 9. Der Mechanismus, mit dem verschiedene Hinweisadressen ausgetauscht und fortgeschrieben werden können, ist beispielsweise in den US 35 46 677, 36 78 461 und 36 14 746 beschrieben. Aus Fig. 9 ist ersichtlich, daß verschiedene Register im Prozessor 13 Verwendung finden können einschließlich des Y-Registerii 22, des Q-Registers im Mikroprozessor 12, des D-Registers ebenfalls im Mikroprozessor 12 und des F-Registers 36. Bei Sicherstellung des Kontext in verschiedenen Speicherplätzen desjenigen Abfangsicherungsbereiches, auf den die Hinweisadresse 202 für den nächst zugängigen Abfangsicherungsbereich zeigt, wird einmal die Startadresse der Abfangprozedur aufgenommen und in das E-Register des Mikroprozessors 12 geladen. Der Unterbrechungsvektor für den laufenden Rang wird entnommen und das Auslagern der Hinweisadressen im dreieckförmigen Umlauf gemäß Fig. 4 beginnt. Bei Abschluß der Abfangprozedur und nachdem die Be-' nutzung des Kontext im Abfangsicherungsbereich abgeschlossen ist, wird dieser Bereich in den TSA-Pool 210 zurückgeführt. Damit ist die Rückkehr aus der Abfangprozedur abgeschlossen.
709849/0833
Leerseite

Claims (14)

  1. HONEYWELL INFORMATION SYSTEMS INC. 13. Mai 1977
    200 Smith Street 5101503 Ge
    Waltham, Mass., USA 2722099
    Abfangeinrichtung für ein DV-System
    Patentansprüche:
    Oy Abfangeinrichtung für ein DV-Systern, gekennzeichnet durch
    a) mehrere Abfangssicherungsbereiche (TSA), von denen jeder mehrere Speicherplätze für Informationen enthält;
    b) eine erste Einrichtung zur Bildung einer Gruppe (pool) von Abfangssicherungsbereichen durch Verbinden dieser Abfangsicherungsbereiche untereinander, indem eine Hinweisadresse in jedem der Bereiche auf den nächsten Bereich hinweist;
    c) eine auf einen vorgegebenen Zustand ansprechende Einrichtung, um die Speicherplätze in einem der genannten Bereiche mit Informationen aus vorgegebenen Quellen zu laden;
    d) eine auf den vorgegebenen Zustand ansprechende Einrichtung zum Abkoppeln des einen Abfangsicherungsbereichs von der Gruppe;
    e) eine zweite auf den vorgegebenen Zustand ansprechende Einrich tung zum Verbinden des abgekoppelten Bereiches mit einem Pro zeß, der im Zeitpunkt des Auftretens des vorgegebenen Zustande eine vorrangige Priorität hat.
  2. 2. Einrichtung nach Anspruch 1, gekennzeichnet durch eine Anzeigevorrichtung für einen von mehreren Unterbrechungsrängen, der einem von mehreren mit dem System koppelbaren Gerät zukommt und die Priorität anzeigt.
    709849/0838
    ORIGINAL INSPECTED
  3. 3. Einrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der die Information aufnehmende Abfangsicherungsbereich der erste in der Gruppe ist.
  4. 4. Einrichtung nach Anspruch 3,dadurch gekennz e i c h η e t, daß die zweite Einrichtung eine Hinweisvorrichtung auf den ersten Abfangsicherungsbereich enthält.
  5. 5. Einrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß jedem Unterbrechungsrang ein Unterbrechungssicherungsbereich (ISA) zugeordnet ist zur Speicherung von Informationen, welche bei Eingang einer Unterbrechungsanforderung von dem Gerät benötigt werden, und einen Speicherplatz für eine Hinweisadresse auf den Abfangsicherungsbereich enthält.
  6. 6. Einrichtung nach Anspruch 5,dadurch gekennzeichnet, daß die Hinweisadresse gleich einer vorgegebenen Zahl ist, falls keiner der Abfangsicherungsbereiche (TSA) mit dem die Hinweisadresse aufweisenden Unterbrechungssicherungsbereich (ISA) gekoppelt ist.
  7. 7. Einrichtung nach Anspruch 6,dadurch gekennzeichnet, daß die Zahl gleich Null ist.
  8. 8. Einrichtung nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet, daß die Hinweisadresse eine Adresse für einen anderen Abfangsicherungsbereich enthält.
  9. 9. Einrichtung nach Anspruch 8,dadurch gekenn zeichnet, daß die Hinweisadresse in dem anderen Abfangsicherungsbereich eine Adresse für einen weiteren Abfangsicherungsbereich enthält.
    709849/0838
  10. 10. Einrichtung nach einem der Ansprüche 1 bis 9, dadurch gekennzei cn net, daß mehrere Abfangprozeduren vorgesehen sind, von denen jede für die Verarbeitung einer bestimmten Art des vorgegebenen Zustandes dient, und daß eine auf eine erste Zustandsart ansprechende Vorrichtung eine zugeordnete Prozedur unabhängig vom Unterbrechungsrang inGang setzt, der dem Prozeß zur Zeit des Auftretens des Zustandes zugeordnet ist.
  11. 11. Einrichtung nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß die Quellen mehrere systemeigene Register umfassen, in denen Informationen bezüglich des adressierten Speicherplcitzes in einem mit dem System gekoppelten Speicher, Zustandsanzeiger sowie Befehls- und Datenübertragungsinformationen speicherbar sind.
  12. 12. Einrichtung nach einem der Ansprüche 1 bis 11, gekennzeichnet durch
    f) eine auf den vorgegebenen Zustand ansprechende Vorrichtung zur Durchführung der durch den Zustand angeforderten Operation;
    g) eine Einrichtung zum Empfang eines von dieser Vorrichtung bei Beendigung dieser Operation gelieferten Abfangrückkehrsignals;
    h) eine auf dieses Rückkehrsignal ansprechende Einrichtung, welche den genannten Sicherungsbereich vom Prozeß abkoppelt und wieder in die Gruppe der Sicherungsbereiche einreiht.
  13. 13. Einrichtung nach Anspruch 12, dadurch gekennzeichnet, daß weiterhin eine auf das Rückkehrsignal ansprechende Vorrichtung zur Rückübertragung der Information aus den Sicherungsbereichen an die Quelle vorgesehen ist.
    709849/0838
  14. 14. Einrichtung nach einem der Ansprüche 3 bis 12, dadurch gekennzei chnet, daß
    i) eine Einrichtung mit ihrem Inhalt auf den ersten Abfangsicherungsbereich hinweist;
    j) von mehreren Unterbrechungssicherungsbereichen je einer jedem Unterbrechungsrang zugeordnet ist und jeweils eine Hinweisadresse auf den Abfangsicherungsbereich enthält;
    k) die Einrichtung zum Abkoppeln und die zweite Einrichtung zum Verbinden der Sicherungsbereiche übertragungsmittel für den Inhalt der Hinweisadresse zum Speicherplatz innerhalb des Unterbrechungssicherungsbereiches mit vorrangiger Unterbrechungspriorität aufweist, ferner übertragungsmittel für die Hinweis 'lirf'ersten Abfangsicherungsbereich an die Hinweiseinrichtung enthält, außerdem übertragungsmittel für eine vorgegebene Zahl in die Hinweisadresse des ersten Abfangsicherungsbereiches aufweist, sofern keine anderen Abfangsicherungsbereichemit dem Unterbrechungssicherungsbereich gekoppelt sind, und schließlich übertragungsmittel für eine Adresse eines mit dem Unterbrechungssicherungsbereich gekoppelten Abfangsicherungsbereiches an die Hinweiseinrichtung des ersten Sicherungsbereiches umfaßt.
    709849/0838
DE19772722099 1976-05-24 1977-05-16 Abfangeinrichtung fuer ein dv-system Granted DE2722099A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/689,014 US4074353A (en) 1976-05-24 1976-05-24 Trap mechanism for a data processing system

Publications (2)

Publication Number Publication Date
DE2722099A1 true DE2722099A1 (de) 1977-12-08
DE2722099C2 DE2722099C2 (de) 1991-02-07

Family

ID=24766723

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19772722099 Granted DE2722099A1 (de) 1976-05-24 1977-05-16 Abfangeinrichtung fuer ein dv-system

Country Status (8)

Country Link
US (1) US4074353A (de)
JP (1) JPS5911943B2 (de)
BE (1) BE854924A (de)
CA (1) CA1084170A (de)
DE (1) DE2722099A1 (de)
FR (1) FR2353102A1 (de)
GB (1) GB1547312A (de)
HK (1) HK37280A (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320455A (en) * 1978-01-09 1982-03-16 Honeywell Information Systems Inc. Queue structure for a data processing system
US4339796A (en) * 1978-06-30 1982-07-13 International Business Machines Corporation System for generating a plurality of different addresses for a working memory of a microcontroller during execution of certain instructions
US4435758A (en) 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4589065A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system
US4654789A (en) * 1984-04-04 1987-03-31 Honeywell Information Systems Inc. LSI microprocessor chip with backward pin compatibility
US4677548A (en) * 1984-09-26 1987-06-30 Honeywell Information Systems Inc. LSI microprocessor chip with backward pin compatibility and forward expandable functionality
US4719565A (en) * 1984-11-01 1988-01-12 Advanced Micro Devices, Inc. Interrupt and trap handling in microprogram sequencer
JPS6362039A (ja) * 1986-09-03 1988-03-18 Mitsubishi Electric Corp 計算機
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor
US5297383A (en) * 1989-03-13 1994-03-29 Binda Nominees Pty Ltd. File clip, apparatus and installation method
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5278985A (en) * 1990-10-31 1994-01-11 Hewlett-Packard Company Software method for implementing dismissible instructions on a computer
US5784550A (en) * 1996-10-29 1998-07-21 Hewlett-Packard Company Method for enhanced functional testing of a processor using dynamic trap handlers
US5828830A (en) * 1996-10-30 1998-10-27 Sun Microsystems, Inc. Method and system for priortizing and filtering traps from network devices
US6253317B1 (en) * 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US6275749B1 (en) 1998-12-22 2001-08-14 Philips Electronics North America Corporation Interrupt-controlled thread processing
US6631463B1 (en) * 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
CA2383832A1 (en) * 2002-04-24 2003-10-24 Ibm Canada Limited-Ibm Canada Limitee System and method for intelligent trap analysis
US20040006619A1 (en) * 2002-07-02 2004-01-08 Fujitsu Network Communications, Inc. Structure for event reporting in SNMP systems
US7770169B2 (en) * 2004-05-17 2010-08-03 Oracle America, Inc. Thread rendezvous for read-only code in an object-oriented computing environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3984820A (en) * 1975-06-30 1976-10-05 Honeywell Information Systems, Inc. Apparatus for changing the interrupt level of a process executing in a data processing system
DE2629401A1 (de) * 1975-06-30 1977-01-20 Honeywell Inf Systems Datenverarbeitungssystem

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3562717A (en) * 1968-02-23 1971-02-09 Gen Electric System protection apparatus
US3614740A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
GB1312504A (en) * 1970-05-20 1973-04-04 Ibm Control unit for serial data storage apparatus
US3639911A (en) * 1970-06-10 1972-02-01 Incoterm Digital processor having automatic conflict-resolving logic
GB1410631A (en) * 1972-01-26 1975-10-22 Plessey Co Ltd Data processing system interrupt arrangements
US3878513A (en) * 1972-02-08 1975-04-15 Burroughs Corp Data processing method and apparatus using occupancy indications to reserve storage space for a stack
US3900834A (en) * 1972-09-05 1975-08-19 Bunker Ramo Memory update apparatus utilizing chain addressing
US3858182A (en) * 1972-10-10 1974-12-31 Digital Equipment Corp Computer program protection means

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3984820A (en) * 1975-06-30 1976-10-05 Honeywell Information Systems, Inc. Apparatus for changing the interrupt level of a process executing in a data processing system
DE2629401A1 (de) * 1975-06-30 1977-01-20 Honeywell Inf Systems Datenverarbeitungssystem

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DIGITAL EQUIPMENT CORPORATION, pdp 11/45 processor handbook, 1971, S. 9 bis 24 *

Also Published As

Publication number Publication date
JPS5911943B2 (ja) 1984-03-19
BE854924A (fr) 1977-09-16
FR2353102A1 (fr) 1977-12-23
CA1084170A (en) 1980-08-19
FR2353102B1 (de) 1984-02-24
GB1547312A (en) 1979-06-06
DE2722099C2 (de) 1991-02-07
JPS52144243A (en) 1977-12-01
US4074353A (en) 1978-02-14
HK37280A (en) 1980-07-18

Similar Documents

Publication Publication Date Title
DE2722099C2 (de)
DE2714805C2 (de)
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE2416609C2 (de) Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE3638572C2 (de)
DE4418892C2 (de) Mikrocomputer
DE4313594A1 (de) Mikroprozessor
DE1524209A1 (de) Leitwerk fuer eine Rechenanlage
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE1279980B (de) Aus mehreren miteinander gekoppelten Datenverarbeitungseinheiten bestehendes Datenverarbeitungssystem
DE2902465A1 (de) Datenverarbeitungsanordnung
DE2517276A1 (de) Datenverarbeitungssystem
DE2210325A1 (de) Datenverarbeitungssystem
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE2054830B2 (de) Informationsverarbeitungsanlage mit mitteln zum zugriff zu speicher-datenfeldern variabler laenge
DE112004002492B4 (de) Verfahren zum Signalisieren eines Befehlsstatus eines PCI/PCI-X-Standart-Hot-Plug-Controllers (SHPC) und Computer-Brücken-Vorrichtung
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE19955776C1 (de) Multitasking-Prozessorsystem
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE2906685C2 (de)

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
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee