DE2722099A1 - Abfangeinrichtung fuer ein dv-system - Google Patents
Abfangeinrichtung fuer ein dv-systemInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving 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 dergLan9escnl°ssen
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.
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.
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-
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.
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)
- HONEYWELL INFORMATION SYSTEMS INC. 13. Mai 1977200 Smith Street 5101503 GeWaltham, Mass., USA 2722099Abfangeinrichtung für ein DV-SystemPatentansprüche:Oy Abfangeinrichtung für ein DV-Systern, gekennzeichnet durcha) 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. 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. Einrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der die Information aufnehmende Abfangsicherungsbereich der erste in der Gruppe ist.
- 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. 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. 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. Einrichtung nach Anspruch 6,dadurch gekennzeichnet, daß die Zahl gleich Null ist.
- 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. 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. 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. 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. Einrichtung nach einem der Ansprüche 1 bis 11, gekennzeichnet durchf) 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. 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. 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
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)
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)
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)
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 |
-
1976
- 1976-05-24 US US05/689,014 patent/US4074353A/en not_active Expired - Lifetime
-
1977
- 1977-03-11 CA CA273,734A patent/CA1084170A/en not_active Expired
- 1977-05-16 DE DE19772722099 patent/DE2722099A1/de active Granted
- 1977-05-23 BE BE177816A patent/BE854924A/xx not_active IP Right Cessation
- 1977-05-23 FR FR7715779A patent/FR2353102A1/fr active Granted
- 1977-05-24 JP JP52060346A patent/JPS5911943B2/ja not_active Expired
- 1977-05-24 GB GB21739/77A patent/GB1547312A/en not_active Expired
-
1980
- 1980-07-10 HK HK372/80A patent/HK37280A/xx unknown
Patent Citations (2)
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)
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 |