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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Description

Die Erfindung 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.
DE19772722099 1976-05-24 1977-05-16 Abfangeinrichtung fuer ein dv-system Granted DE2722099A1 (de)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
DE2722099A1 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320455A (en) * 1978-01-09 1982-03-16 Honeywell Information Systems Inc. Queue structure for a data processing system
US4339796A (en) * 1978-06-30 1982-07-13 International Business Machines Corporation System for generating a plurality of different addresses for a working memory of a microcontroller during execution of certain instructions
US4435758A (en) 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4589065A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system
US4654789A (en) * 1984-04-04 1987-03-31 Honeywell Information Systems Inc. LSI microprocessor chip with backward pin compatibility
US4677548A (en) * 1984-09-26 1987-06-30 Honeywell Information Systems Inc. LSI microprocessor chip with backward pin compatibility and forward expandable functionality
US4719565A (en) * 1984-11-01 1988-01-12 Advanced Micro Devices, Inc. Interrupt and trap handling in microprogram sequencer
JPS6362039A (ja) * 1986-09-03 1988-03-18 Mitsubishi Electric Corp 計算機
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor
US5297383A (en) * 1989-03-13 1994-03-29 Binda Nominees Pty Ltd. File clip, apparatus and installation method
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3562717A (en) * 1968-02-23 1971-02-09 Gen Electric System protection apparatus
US3614740A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
GB1312504A (en) * 1970-05-20 1973-04-04 Ibm Control unit for serial data storage apparatus
US3639911A (en) * 1970-06-10 1972-02-01 Incoterm Digital processor having automatic conflict-resolving logic
GB1410631A (en) * 1972-01-26 1975-10-22 Plessey Co Ltd Data processing system interrupt arrangements
US3878513A (en) * 1972-02-08 1975-04-15 Burroughs Corp Data processing method and apparatus using occupancy indications to reserve storage space for a stack
US3900834A (en) * 1972-09-05 1975-08-19 Bunker Ramo Memory update apparatus utilizing chain addressing
US3858182A (en) * 1972-10-10 1974-12-31 Digital Equipment Corp Computer program protection means
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 Ханивелл Информейшн Системз Инк (Фирма) Устройство дл приоритетного подключени источника информации к общей магистрали

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