DE2722099C2 - - Google Patents
Info
- Publication number
- DE2722099C2 DE2722099C2 DE2722099A DE2722099A DE2722099C2 DE 2722099 C2 DE2722099 C2 DE 2722099C2 DE 2722099 A DE2722099 A DE 2722099A DE 2722099 A DE2722099 A DE 2722099A DE 2722099 C2 DE2722099 C2 DE 2722099C2
- Authority
- DE
- Germany
- Prior art keywords
- interception
- area
- tsa
- interrupt
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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 betrifft ein Verfahren gemäß Gattungsbegriff des
Anspruchs 1 zum Durchführen einer Abfangprozedur in einer
Datenverarbeitungsanlage. Sie
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 Unterbrechungsstrukturen, 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 Funktionsmö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 geben 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, also asynchron sind, beispielsweise
externe Ereignisse oder Geräte, welche eine Leistung
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 Zentraleinheitsoptionen
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äts-
oder Unterbrechungsrang des laufenden Prozesses zuzuordnen, ist
eine Flexibilität in bezug auf die Benutzung solcher vorgegebener
Speicherbereiche wichtig.
Aufgabe der Erfindung ist die Schaffung eines verbesserten Verfahrens
zum Durchführen einer Abfangprozedur, das wirkungsvoll
auf Abfangzustände reagiert, welche direkt oder indirekt durch
den Prozeß bei seiner Ausführung in der DV-Anlage hervorgerufen
werden. Darüber hinaus soll für die Abfangprozedur möglichst
wenig Speicherraum beansprucht werden.
Ausgehend von einer aus "pdp 11/45 processor handbook" DEC
1971, Seite 9 bis 24 bekannten DV-Anlage wird diese Aufgabe gelöst
durch die im Anspruch 1 gekennzeichnete Erfindung. Dieses
Verfahren ist besonders geeignet für die Bearbeitung von Abfangzuständen
in DV-Anlagen, in welchen Unterbrechungszustände
unterschiedlicher Priorität vorkommen und ihrer jeweiligen
Priorität entsprechend verarbeitet werden. Vorteilhafte
Weiterbildungen der Erfindung ergeben sich aus den
Unteransprüchen. Speicherraum wird in erster Linie dadurch
eingespart, daß nicht für jeden Unterbrechungsrang Platz für
die maximal mögliche Anzahl gleichzeitig benötigter
Abfangsicherungsbereiche bereitgehalten werden muß, sondern
durch die Gruppenbildung für alle Unterbrechungsränge zusammen
eine Bereitstellung der maximal benötigten Anzahl von
Abfangssicherungsbereichen ausreicht.
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 Zentralprozessors,
Fig. 3 ein Blockschaltbild der im Zentralprozessor gemäß
Fig. 2 eingesetzten Mikroprozessorlogik,
Fig. 4 die Firmware-Routinen im Steuerspeicher des
Zentralprozessors gemäß Fig. 2,
Fig. 5 den Aufbau eines Firmware-Wortes in einem solchen
Steuerspeicher,
Fig. 6 in Form eines Blockdiagramms verschiedene Systemstrukturen
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über hinaus können mehrere periphere
Steuereinrichtungen angeschlossen sein, wie beispielsweise zum
Steuern eines Band- oder Plattenspeichers, von Nachrichtenübertragungsgeräten,
Zusatzeinrichtungen, wie wissenschaftlichen und
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 Zentralprozessors
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
Zentralprozessors 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 Zentralprozessor umfaßt ferner
eine Register- und Logikeinheit RALU 12, welche im folgenden 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ßt 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.
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 Unterbrechungsprioritä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
Rangnummer des laufenden Prozesses, wobei die niedrigste
Rangnummer einen Prozeß oder ein Gerät bezeichnet, welches am
wenigsten unterbrochen werden darf. Eine solche Unterbrechungsstruktur
ist im prioritätsälteren US-Patent 39 84 820
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 Programmzä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 Speicheradreßregister,
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 Kanalnummer
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 Prozessors
dient. Der Ausgang dieses Registers 32 ist sowohl an die interne
Sammelschiene 28 als auch an die Decoderlogik 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 Decoderlogik
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 (Zwillingslogik 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 61 (Zwillingslogik 61) hat ähnliche Eigenschaften.
Die Steuerlogik 48 (interne Sammelschienen-Steuerung) 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 (Multiplexer) auf die interne Sammelschiene 28 zu geben. Bestimmte
Gatterschaltungen dieser Steuerlogik 48 sind in der älteren Anmeldung
gemäß DT-OS 26 29 401 dargestellt. Der Multiplexer 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 Prüflogik 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 (Folgeadressenlogik) zur Erzeugung
der nächsten Adresse weitergegeben. Der Prozessor verwendet
für die Erzeugung der nächsten Firmware-Adresse eine von
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 abdressieren 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 Registern des Prozessors verwendet. Speicheradressen
und Daten werden auch über die interne Sammelschiene 28 zur externen
Sammelschiene übertragen. Das Sammelschienenadreßregister 56
hat beispielsweise einen Umfang von 16 Bit und wird zur Ü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 zum Modifizieren der Registerdatei-Auswahl durch die LS-
und RS-Felder benutzt werden, d. h. durch das linke Auswahlfeld
LS und das rechte Auswahlfeld RS des Steuerspeicherworts im Steuerspeicher
10. Die SM-Logik 58 schaltet die Bits 1 bis 3, 10 bis 11
und 13 bis 15 oder 12 bis 15 in Abhängigkeit von der Konfiguration
der Steuerspeicherbits 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
der Auswahlmodifizierlogik 58 sowie den Inhalt der Steuerspeicherbits
0 bis 3 oder 4 bis 7 zur Registerauswahl. Die Steuerspeicherbits
0 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-/Ausgabeübertragung
und Unterbrechung. An die externe Sammelschiene
können der Zentralprozessor, eine Speichereinheit, Peripheriegerätesteuerungen,
Übertragungssteuerungen und dergl. angeschlossen
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 70 umfaßt
Datenregister D1 bis D7, Arbeitsregister D0 (oder D) und B0 (oder 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 Befehlsregisters
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.
Die Basisregister haben darüber hinaus 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 (Q) 76 dient für Doppeloperandenverschiebungen.
Daten können um 1 Bit nach links oder rechts zwischen
den Multiplexern 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 E-Register (B0) einen Indexwert enthält.
Die arithmetische Logik besteht aus zwei 16-Bit-Verriegelungsschaltungen
84 und 86, zwei 2-Zu-1-Multiplexern 88 und 90, zwei
16-Bit-Invertern 92 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 R102 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
Multiplexer 88 empfängt Daten über den Eingang D104 von der internen
Sammelschiene 28 und von den mit dem Eingang L100 verbundenen
Verriegelungsschaltungen 84. Der rechte Multiplexer 90
empfängt über den Eingang Q106 Daten vom Q-Register 76 sowie
von den dem Eingang R102 zugeordneten Verriegelungsschaltungen
86. Die Ausgangssignale dieser beiden Multiplexer werden über
Inverter 92 bzw. 94 den Eingängen L und R des Addierers 96 zugeleitet.
Außer den beiden Eingängen L und R ist ein weiterer Eingang
für das Steuerspeicherwortbit 16 zur Übertrageingabe vorhanden.
Das Ausgangssignal des Addierers 96 gelangt zum Ausgangsmultiplexer
98 sowie zur Eingangsmultiplexer-Verschiebelogik 80
und 82. Der Ausgangsmultiplexer 98 bildet den Hauptausgang des
Mikroprozessors 12. Daten vom Ausgang des Multiplexers 98 gelangen
zur internen Sammelschiene 28, um über diese innerhalb des Prozessors
verteilt zu werden.
Im folgenden werden der Prozessor und die Betriebsweise weiter
anhand der Fig. 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
Speicheradreßregister, 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 Prüflogik 50 verwendet, welche bei
Firmware-Verzweigungsentscheidungen mitwirkt. Die Information in
solchen Bits aus der internen Sammelschiene 28 kann in verschiedenen
Steuer-Flip-Flops der Hardware-Steuerung 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-Auswahlregisters
(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
Folgeadressenlogik 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 Prüflogik 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.
Eine Verzweigung in die Firmware, d. h. den Steuerspeicher, wird
von der Prüflogik 50 festgestellt, welche den Inhalt der internen
Zustands-Flip-Flops der Hardware-Steuerung 54, den Zustand der internen Sammelschiene 28
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 Folgeadressenlogik.
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-Registers 36. Beispielsweise
basiert eine XE-Verzweigung fast ausschließlich auf
dem Operationscode des Befehls und wird durch die Operationscodebits
im F-Register 36 aktiviert. Die XW-Verzweigung, welche darüber
entscheidet, in welcher Art der Operand in den Speicher
zurückgeschrieben wird, wird auf der Basis des Operationscodetyps
sowie durch die internen Zustands-Flip-Flops der Hardware-Steuerung 54 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 28 verdoppeln bzw. verzweigen
können. Mit der Zwillingslogik 44 am Eingang kann man entweder die
16 Bits der internen Sammelschiene unmittelbar zum Mikroprozessor
12 leiten oder man kann statt dessen die acht linksstehenden,
also höchstwertigen Bits duplizieren auf beide Bytepositionen
eines Worts im Mikroprozessor 12. In ähnlicher Weise ist eine
Zwillingslogik 61 am Ausgang des Mikroprozessors 12 vorgesehen,
mit dem die interne Sammelschiene 28 mit beiden Seiten oder Hälften
des Mikroprozessorausgangssignals 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.
Eine Verschiebeoperation im Indexregister wird bestimmte Arten
von Adressierungen verwenden und durch Verschieben des im Indexregister,
üblicherweise dem E-Register, gespeicherten Wertes
erreicht. Während des Indizierens werden Bits entweder nach
links oder rechts herausgeschoben je nach Art der Operation.
Die Steuer-Flip-Flops, d. h. die Flip-Flops in der Hardware-Steuerung 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 Prüflogik 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 76
oder die Verschiebung des Ausgangssignals des Addierers 96 um
ein Bit nach links oder nach rechts durchführen kann. Die
Multiplexer-Verschiebelogik 80 ist direkt an die Register in der Registerdatei 70
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 E-Register in der
Registerdatei 70 hält die Indexwerte aufrecht.
Die Linksauswahllogik 60 (LS), die Rechtsauswahllogik 62 (RS) und die Auswahlmodifizierlogik
58 (SM), welche aus Logikschaltungen 72 und 74 besteht,
umfaßt auch einen Teil der Steuerlogik des Mikroprozessors 12.
Das Ausgangssignal der Auswahlmodifizierlogik 58 bestimmt zusammen
mit den Steuerspeicherbits Null bis 7 das Ausgangssignal der
Links- und der Rechtsselektoren 60 bzw. 62. Die Steuerspeicherbits
8 bis 15 steuern die folgenden Bereiche 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 Ausgangsmultiplexer 80, 82 und 98.
Wie bereits erwähnt, enthält der Steuerspeicher 10 mehrere
Firmware-Worte 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 110 (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 eingetroffen
ist, wird er in das F-Register 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 Adreßsilbenteils 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-Routine 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 Halbwort-
oder ein Ganzwort-Operand 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 Abfangszustand oder jene
Befehle, welche den Zustand des Realzeittaktgebers oder des
Überwachungszeitgebers beeinflussen.
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 Überwachungszeitgeber- und Realzeittaktgeberroutine
130 (WDT/RTC) läuft alle paar Millisekunden, beispielsweise alle 8,33 ms
an, wenn entweder der Überwachungszeitgeber oder der Realzeittaktgeber
eingeschaltet ist. Eine weitere dieser Routinen ist
die Qualitätslogiktestroutine 132 (QLT), welche einen grundlegenden
Zuverlässigkeitstest der Prozessorlogik durchführt.
Somit werden die sechs Hauptverzweigungen, d. h. die Verzweigungen
XF, XA, XG, XR, XE und XW wie folgt benutzt: die XF-Verzweigung
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 Decodieren
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.
Das LS-Feld dient der Auswahl eines der 16 Register in der Registerdatei 70 im Mikroprozessor
12. Die Auswahl durch das LS-Feld wird durch das
Selektormodifizierfeld SM modifiziert. Das LS-Feld wird nur bei
Leseoperationen eingesetzt. Das Rechtsselektorfeld RS wird genauso
benutzt, wie das LS-Feld und wählt dasselbe Register oder ein
anderes Register der 16 Mikroprozessorregister in der Registerdatei 70 aus. Das RS-
Feld 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-Register 32, dem
Überwachungszeitgeber und dem Realzeittaktgeber sowie verschiedenen
Hardware-Steuer-Flip-Flops verbunden sind. Die dritte
Gruppe wird im Zusammenhang mit Operationen des Steuerpults eingesetzt.
Das Selektor-Modifizierfeld SM umfaßt die Bits 24 und 25 des
Firmware-Wortes und benutzt darüber hinaus Bit 20 aus dem GC-Feld.
Falls die beiden SM-Bits gleich "0" 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
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 Unterbrechungsanforderung, 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über hinaus können Unterbrechungsanforderungen
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 vom Zentralprozessor 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
der des ablaufenden Programms. Ein Rang gleich Null hat die
höchste Priorität, und je höher die Rangnummer ist, um so 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 0
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 ablaufendes Programm unterbrochen wird, wird sein
Kontext, d. h. seine im Zusammenhang stehenden Daten, im entsprechenden
Unterbrechungssicherungsbereich gespeichert. Der Kontext
des unterbrechenden Prozesses wird vom Unterbrechungssicherungsbereich
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 ein 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
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 "0", 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ätsanzeigebits.
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 Unterbrechungsprozedur sich auf Aktionen bezieht,
welche der Zentralprozessor ausführt, 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
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 zu
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 Unterbrechungsprozedur 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 Abfangprozedur
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.
Sobald der Abfangzustand auftritt, wird der mit dem Abfangpunkt
in Verbindung stehende Kontext in einem Abfangsicherungsbereich
TSA 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. 6
erläutert.
Es gibt vier im Weg von Datenstrukturen des Speichers 15 einführbare
Elemente, welche vom Zentralprozessor 13 zur Unterstützung der
Abfangfunktion verwendet werden. Das erste dieser Elemente ist
ein Abfangsicherungsbereich TSA 200, von denen mehrere
existieren. Jeder Abfangsicherungsbereich 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 Abfangsicherungsbereichen 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önnen,
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
65. Kette besteht aus leeren TSA-Blöcken, welche für zukünftige
Abfangvorgänge bereit ist. Sie wird als TSA-Gruppe 210 bezeichnet.
Die anderen sieben Speicherplätze können Plätze für den Kontext des
I-Registers 16 eines der Datenregister (z. B. D3); 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 die TSA-Gruppe 210
leerer TSA-Blöcke 200. Dies sind zugängige Bereiche, welche von
Haltepunkten benutzt werden können, die irgendeinem Unterbrechungsrang
oder irgendeinem Abfangtyp zugeordnet sind. Diese
TSA-Gruppe 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
ISA 204, 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
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über hinaus 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 Unterbrechungssicherungsbereiches 204 sind Unterbrechungsvektoren
IV0 bis IV63 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
IV30 der laufende Unterbrechungsvektor.
Das vierte Element der Abfangprozedur ist eine Gruppe von Abfangvektoren
206 (TV1 bis TVN), von denen jeder eine Startadresse einer unterschiedlichen
Prozedur enthält. Jede dieser Prozeduren verarbeitet durch
unterschiedliche Abfangpunkte hervorgerufene Zustände. Solche
Prozeduren hängen nicht vom Prozeß oder Rechenprogramm ab, sondern
sind für die Abfangklasse spezifisch. Alle Prozesse bei
jedem beliebigen Unterbrechungsrang benutzen die gleiche Gruppe
von Abfangverarbeitungsprozeduren, und jede Klasse von Abfangpunkten
ruft eine unterschiedliche Prozedur auf. Wie bereits erwähnt,
können mehrere Abfangklassen, beispielsweise neun, vorhanden
sein. Jeder Abfangvektor kann eine Startadresse in einer
Tabelle enthalten, die die Startadressen für folgende Abfangverarbeitungsprozeduren
umfaßt: Einen sogenannten Überwachungsaufrufbefehl,
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 Beispiel einer Abfangprozedur
gemäß der Erfindung. Die TSA-Gruppe 210 mit den Abfangsicherungsbereichen
200 enthält im Beipiel 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 von der TSA-Gruppe 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
Abfangsicherungsbereiche 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 der Gruppe 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 ersten Speicherplatz in
einem Unterbrechungssicherungsbereich enthält beispielsweise
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 IV30
auf dem Unterbrechungssicherungsbereich ISA30 hinweist, der seinerseits
wiederum auf drei Abfangsicherungsbereiche hinweist. So
weist die Hinweisadresse TSAP im Unterbrechungssicherungsbereich
ISA30 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 der TSA-Gruppe 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 man, daß während dieses Emulationsvorganges in
der Abfangverarbeitungsprozedur ein Paritätsfehler festgestellt
wird, so tritt ein anderer Anfangzustand auf und ein anderer
Abfangsicherungsbereich wird mit dem Unterbrechungssicherungsbereich
FSA30 gekoppelt, um den Kontext zu speichern, an dem Punkt,
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
die TSA-Gruppe 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 der TSA-Gruppe 210 verbunden
ist. Hierauf folgend wird der Abfangsicherungsbereich mit dem
Unterbrechungssicherungsbereich verbunden, dem er nunmehr zugeordnet
ist. Nachdem der Abfangsicherungsbereich seine Aufgabe erfüllt
hat, müssen die obengenannten Vorgänge in umgekehrter Reihenfolge
abgewickelt und der Abfangsicherungsbereich in die TSA-Gruppe
210 eingegliedert werden. Sobald einmal der Kontext im Abfangsicherungsbereich
sichergestellt ist, wird zum Adressieren eines
der Abfangvektoren 206 (TV1 bis TVN) eine Abfangvektoradresse benutzt, welche
auf der Abfangpunktnummer beruht. Es gibt mehrere Abfangvektoren,
von denen jeder auf eine andere Abfangverarbeitungsprozedur hinweist,
die ihrerseits unterschiedliche Arten 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 0 oder
63 ablaufender Prozeß. Die zum Adressieren einer der Abfangvektoren
206 (TV1 bis TVN) 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 Abfangnummern
erzeugt werden und dabei die Abfangvektoren adressieren,
kann ähnlich derjenigen sein, welche zur Bildung eines Bitcodes
für die Adressierung der Unterbrechungsvektoren dient. Die spezielle
Anwendung einer solchen Erzeugung einer Abfangvektoradresse
ist nur insoweit von Bedeutung, als unterschiedliche
Abfangnummern für unterschiedliche Abfangzustände eingehen. Im
Anschluß an das Adressieren eines der Abfangvektoren enthält
dieser die Adresse seiner zugeordneten Abfangprozedur 214 (THP), die
dann adressiert wird. Nach Ablauf dieser Prozedur wird der zugeordnete
Abfangsicherungsbereich wieder in die TSA-Gruppe 200
eingegliedert.
Nunmehr soll anhand von Fig. 7 die Folge der bei Feststellung
eines Abfangzustands ablaufenden Operationen erläutert werden.
Der Abfangsicherungsbereich 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
NAPSAP 202 bezeichnete Abfangsicherungsbereich ist
als Element 300 bezeichnet. Der Einfachheit halber sind nur zwei
Sicherungsbereiche 300 und 302 in der TSA-Gruppe 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 der TSA-Gruppe 210 und sein Ankoppeln
an den Kopf der Kette von denjenigen Kontextsicherungsbereichen,
welche dem Unterbrechungsskontext-Sicherungsbereich des
Unterbrechungsranges des laufenden Prozesses zugefügt sind. Dies
erfolgt durch einen dreieckfö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
IVc 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
des Abfangzustandes erzeugte Abfangnummer zur Adressierung des
geeigneten Abfangvektors TVN (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 ausgezogenen Linien in Fig. 8 wiedergegeben. Diese Figur zeigt
außerdem, wie der Abfangsicherungsbereich in die TSA-Gruppe 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 so lange 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 IVc
(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 Abfangsicherungsbereich
mit diesem Unterbrechungsrang verbunden ist. In
bezug auf den Bereich TSA 302 heißt es, daß keine weiteren Abfangsicherungsbereiche
200 im TSA-Pool 210 vorhanden sind. Ein
solcher Zustand wird festgestellt, und es kann eine Prozedur anlaufen,
welche weitere Abfangsicherungsbereiche TSA bildet zwecks
Ersatz in der TSA-Gruppe. Diese können für weitere Zwecke entsprechend
der Erfindung eingesetzt werden.
Bei Abschluß der Abfangprozedur, d. h. wenn diese zur Rü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
entkoppelt und den Sicherungsbereich an die TSA-Gruppe 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, welche beispielsweise in
der Hardware-Steuerung 54 gemäß Fig. 2 enthalten sein können.
Das Entkoppeln des Abfangsicherungsbereiches und seine Rückkehr
zur TSA-Gruppe 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 der TSA-Gruppe 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
Flußdiagramm gemäß Fig. 9 wiedergegeben. Es stellt die Firmware-
Steuerspeicherworte dar, die zur Sicherstellung des Kontext und
zum Entkoppeln des Abfangsicherungsbereiches aus der TSA-Gruppe 210
der Bereiche 200 benutzt wird. Eine Rückkehr aus dem Abfangsicherungsbereich
in die TSA-Gruppe würde in ähnlicher Weise
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-Registers
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ächstzugä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 Benutzung
des Kontext im Abfangsicherungsbereich abgeschlossen ist,
wird dieser Bereich in die TSA-Gruppe 210 zurückgeführt. Damit ist
die Rückkehr aus der Abfangprozedur abgeschlossen.
Claims (8)
1. Verfahren zum Durchführen einer Abfangprozedur in einer
Datenverarbeitungsanlage mit einem Zentralprozessor (13),
einem Speicher (15) und mehreren Datenverarbeitungsgeräten
(17, 19, 21, 23), welche zur Datenübertragung zwischen den
einzelnen Geräten an eine gemeinsame Busleitung (11)
angeschlossen sind; wobei für jedes der genannten Geräte
jedem Unterbrechungsrang ein bestimmter, die relative
Verarbeitungspriorität des Unterbrechungszustands
bestimmender Unterbrechungsvektor (IV0 bis IV63) zugeordnet und in
einem Register (212) gespeichert ist und ein
Unterbrechungsrang erster Priorität ein vorrangiges
Verarbeitungsrecht gegenüber einem Unterbrechungsrang
zweiter Priorität hat, usw.; dadurch gekennzeichnet,
daß
- a) im Speicher (15) mehrere Abfangsicherungsbereiche (TSA) vorgesehen sind, in denen beim Auftreten eines Abfangbefehls vom Zentralprozessor (13) in diesem dann gerade vorhandene Informationen über vorgegebene Quellen sowie der Inhalt bestimmter dem zu unterbrechenden Prozeß zugeordneter Arbeitsregister (16, 20, B3) gespeichert werden;
- b) diese Abfangsicherungsbereiche (TSA) untereinander zu einer Gruppe (210) verbunden werden, wobei in jedem Abfangsicherungsbereich (TSA) eine auf den jeweils nächsten Bereich hinweisende Hinweisadresse (TSAP) abgespeichert ist;
- c) ein auf einen Abfangzustand ansprechender, im Zentralprozessor (13) befindlicher Mikroprozessor (12) die gemäß Merkmal (a) sicherzustellenden Informationen in einen Abfangsicherungsbereich (TSA) im Speicher (15) lädt und dann diesen Speicherbereich von der Gruppe (210) der übrigen Abfangsicherungsbereichen abkoppelt; und
- d) der die sicherzustellenden Informationen enthaltende Speicherbereich an denjenigen Prozeß angekoppelt wird, welcher den durch ein Register (30) angegebenen Unterbrechungsrang aufweist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß der die Information aufnehmende
Abfangsicherungsbereich (TSA) der erste in der Gruppe ist
und ein zweiter Verbindungsbefehl eine Hinweisadresse
(TSAP) auf den ersten Abfangsicherungsbereich enthält.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß jedem Unterbrechungsrang ein
Unterbrechungssicherungsbereich (ISA) zugeordnet ist, in
dem Informationen, welche bei Eingang einer
Unterbrechungsanforderung von dem Gerät benötigt werden,
gespeichert sind, und daß im
Unterbrechungssicherungsbereich (ISA) Speicherplatz für
die Hinweisadresse (TSAP) auf den Abfangsicherungsbereich
(TSA) enthalten ist.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet,
daß die Hinweisadresse gleich Null ist,
falls keiner der Abfangsicherungsbereiche (TSA) mit dem
die Hinweisadresse aufweisenden Unterbrechungssicherungsbereich
(ISA) gekoppelt ist.
5. Verfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet,
daß die Hinweisadresse (TSAP)
eine Adresse für einen anderen Abfangsicherungsbereich
(TSA) und die Hinweisadresse im anderen
Abfangsicherungsbereich eine Adresse für einen weiteren
Abfangsicherungsbereich enthält.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch
gekennzeichnet, daß mehrere
Abfangprozeduren verfügbar sind, von denen jede für die
Verarbeitung einer bestimmten Art Abfangzustand dient und
daß eine auf eine erste Zustandsart ansprechende
Vorrichtung eine zugeordnete Prozedur unabhängig vom
Unterbrechungsrang in Gang setzt, der dem Prozeß zur Zeit
des Auftretens des Abfangzustandes zugeordnet ist.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß beim Empfang
eines am Ende der Abfangprozedur gelieferten
Abfangrückkehrsignals der während der Abfangprozedur
benutzte Sicherungsbereich (TSA) abgekoppelt und wieder in
die Gruppe verfügbarer Sicherungsbereiche eingereiht wird.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß beim Auftreten des Rückkehrsignals
die im Abfangsicherungsbereich (TSA) befindliche Information in
den Zentralprozessor und die Arbeitsspeicher
zurückübertragen wird.
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 DE2722099A1 (de) | 1977-12-08 |
DE2722099C2 true 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 |
US5327567A (en) * | 1989-11-16 | 1994-07-05 | Texas Instruments Incorporated | Method and system for returning emulated results from a trap handler |
US5463778A (en) * | 1989-11-16 | 1995-10-31 | Texas Instruments Incorporated | User controlled 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 |
US6952711B2 (en) * | 2001-06-01 | 2005-10-04 | Microchip Technology Incorporated | Maximally negative signed fractional number multiplication |
US20020184566A1 (en) * | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US6934728B2 (en) * | 2001-06-01 | 2005-08-23 | Microchip Technology Incorporated | Euclidean distance instructions |
US7020788B2 (en) * | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
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 |
US7003543B2 (en) * | 2001-06-01 | 2006-02-21 | Microchip Technology Incorporated | Sticky z bit |
US20030005269A1 (en) * | 2001-06-01 | 2003-01-02 | Conner Joshua M. | Multi-precision barrel shifting |
US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
US7467178B2 (en) * | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
US20030028696A1 (en) * | 2001-06-01 | 2003-02-06 | Michael Catherwood | Low overhead interrupt |
US20030023836A1 (en) * | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
US6975679B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Configuration fuses for setting PWM options |
US20030005268A1 (en) * | 2001-06-01 | 2003-01-02 | Catherwood Michael I. | Find first bit value instruction |
US6937084B2 (en) * | 2001-06-01 | 2005-08-30 | Microchip Technology Incorporated | Processor with dual-deadtime pulse width modulation generator |
US6976158B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
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 |
Family Cites Families (10)
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 |
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 |
SU1274634A3 (ru) * | 1975-06-30 | 1986-11-30 | Ханивелл Информейшн Системз Инк (Фирма) | Устройство дл приоритетного подключени источника информации к общей магистрали |
-
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 FR FR7715779A patent/FR2353102A1/fr active Granted
- 1977-05-23 BE BE177816A patent/BE854924A/xx not_active IP Right Cessation
- 1977-05-24 GB GB21739/77A patent/GB1547312A/en not_active Expired
- 1977-05-24 JP JP52060346A patent/JPS5911943B2/ja not_active Expired
-
1980
- 1980-07-10 HK HK372/80A patent/HK37280A/xx unknown
Also Published As
Publication number | Publication date |
---|---|
JPS52144243A (en) | 1977-12-01 |
DE2722099A1 (de) | 1977-12-08 |
BE854924A (fr) | 1977-09-16 |
JPS5911943B2 (ja) | 1984-03-19 |
FR2353102A1 (fr) | 1977-12-23 |
HK37280A (en) | 1980-07-18 |
GB1547312A (en) | 1979-06-06 |
CA1084170A (en) | 1980-08-19 |
US4074353A (en) | 1978-02-14 |
FR2353102B1 (de) | 1984-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2722099C2 (de) | ||
DE2714805C2 (de) | ||
DE60217157T2 (de) | Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts | |
DE1449529C3 (de) | Unterbrechungseinrichtung für ein Datenverarbeitungssystem | |
DE2416609C2 (de) | Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen | |
DE1524209A1 (de) | Leitwerk fuer eine Rechenanlage | |
DE2456578C2 (de) | Datenverarbeitungsanlage | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE102007025397B4 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE3638572C2 (de) | ||
DE60224774T2 (de) | Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit | |
DE2657848A1 (de) | Steuereinheit fuer ein datenverarbeitungssystem | |
DE2907181A1 (de) | Befehlssatz-modifizierregister fuer einen datenprozessor | |
DE2902465A1 (de) | Datenverarbeitungsanordnung | |
DE4011745A1 (de) | Taskverfolgungseinrichtung | |
CH654943A5 (de) | Pruefeinrichtung fuer mikroprogramme. | |
DE2251876B2 (de) | Elektronische datenverarbeitungsanlage | |
DE2718051A1 (de) | Datenverarbeitungsanlage mit einrichtungen zur wechselnden bearbeitung mehrerer aufgaben | |
DE4313594A1 (de) | Mikroprozessor | |
DE1279980B (de) | Aus mehreren miteinander gekoppelten Datenverarbeitungseinheiten bestehendes Datenverarbeitungssystem | |
DE2629266A1 (de) | Ein/ausgabe-system | |
EP0010185A1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
DE2054830B2 (de) | Informationsverarbeitungsanlage mit mitteln zum zugriff zu speicher-datenfeldern variabler laenge | |
DE2721623A1 (de) | System zur bearbeitung eines zielsystemprogrammes | |
DE2461592C3 (de) | Anordnung zur Durchführung von Wartungsoperationen bei einem Datenverarbeitungssystem |
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 |