DE2364323A1 - Unterbrechungssystem fuer eine datenverarbeitende maschine - Google Patents

Unterbrechungssystem fuer eine datenverarbeitende maschine

Info

Publication number
DE2364323A1
DE2364323A1 DE2364323A DE2364323A DE2364323A1 DE 2364323 A1 DE2364323 A1 DE 2364323A1 DE 2364323 A DE2364323 A DE 2364323A DE 2364323 A DE2364323 A DE 2364323A DE 2364323 A1 DE2364323 A1 DE 2364323A1
Authority
DE
Germany
Prior art keywords
interrupt
program
register
memory
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.)
Granted
Application number
DE2364323A
Other languages
English (en)
Other versions
DE2364323C2 (de
Inventor
Jun Ralph W Armstrong
Stephen L Billard
Joel T Oropesa
Jacob F Vigil
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.)
Unisys Corp
Original Assignee
Burroughs Corp
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 Burroughs Corp filed Critical Burroughs Corp
Publication of DE2364323A1 publication Critical patent/DE2364323A1/de
Application granted granted Critical
Publication of DE2364323C2 publication Critical patent/DE2364323C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Description

BURROUGHS CORPORATION, eine Gesellschaft nach den Gesetzen des Staates Michigan, Burroughs Place, Detroit, Michigan 48232 (Vereinigte Staaten von Amerika)
Unterbrechungssystem für eine datenverarbeitende Maschine
Die Erfindung befaßt sich allgemein mit einem Verfahren und mit einer Vorrichtung an datenverarbeitenden Maschinen, insbesondere mit einem Unterbrechungsbehandlungssystem. In einer programmierbaren Datenverarbeitungsanlage speichert ein Speicher ein Maschinen-Sprachen-Programm, seine Eingabe-Daten, sowie Daten in der Form von Zwischenergebnissen und Ausgabe-Daten. Ein Daten-Prozessor führt das Maschinenprogramm in einer Reihe von Stufen aus.und speichert dabei die Zwischenergebnisse und die Ausgabe-Daten in den Speicher.
Bekannte, von der Anmelderin vertriebene Datenverarbeitungsanlagen sind durch Maschinenprogramme programmierbar, die in Programmsegmenten angeordnet sind, von denen jedes mehrere Programmbefehle enthält. Die Maschinenprogramme wurden aus anderen, in höheren Programmiersprachen
HZ/gs
409827/0785
geschriebenen Programmen, beispielsweise ALGOL 60, kompiliert. Spezielle Programme, genannt die Compiler-Programme, werden hierfür verwendet. Die Compiler erzeugen Programmsegmente, so kodiert sind, daß sie wiederverwendbar sind. Dies bedeutet unter anderem, daß die Programmbefehle während ihrer Ausführung nicht modifiziert werden. ,
Jede der erwähnten, bekannten Datenverarbeitungsanlagen, insbesondere der Anlagen B 5000, B 5500 und B 6500, enthält einen Datenprozessor, der mit einem Stapelmechanismus, (Keller-Prinzip) arbeitet. Die Kombination aus wiederverwendbarer (english: re-entrant) Kodierung der Programmsegmente mit dem Stapelmechanismus erleichtert die Ausführung der Programme, in welchen die Unterprogramme rekursiv verwendet werden. Hierzu wird auf das von D.W. Barron geschriebene Buch "RECURSIVE TECHNIQUES IN PROGRAMMING", veröffentlicht 1968 von American Elsevier Publishing Company Inc. sowie auf die US-Patentschriften 3 461 434, 3 546 677 sowie 3 548 384 bezug genommen.
Ein Merkmal beispielsweise der Datenverarbeitungsanlage B 6500 besteht in ihrer Fähigkeit, Unterbrechungsbearbeitungs-Prozeduren rekursiv aufzurufen. Die Ausführung des Unterbrechungs-Bearbeitungsprogramms selbst ist unterbrechbar und mehrere aufeinanderfolgende Unterbrechungsbedingungen können festgestellt und mit Zuteilung durch eine einzige Kopie des Re-Entrant-Codes, der das Unterbrechungsbearbeitungsprogramm bildet, behandelt werden. Ein weiteres Merkmal bekannter Datenverarbeitungsanlagen besteht in der Fähigkeit von Datenprozessoren in dem System, gleichzeitig das gleiche Unterbrechungsprogramm ausführen zu können·. Somit gibt es kein Abhängigkeitsverhältnis unter den Prozessoren wie bei fιüheren Mehrprozessor-Systemen
409827/0785
und es gibt daher natürlich keine nutzlosen Aufenthaltszeiten für einen abhängigen Prozessor, während der übergeordnete Prozessor eine Unterbrechungsbedingung bearbeitet.
Bei Datenverarbeitungsanlagen mit derartigen Einrichtungen zur rekursiven Verarbeitung von Unterbrechungsbedingungen ergibt sich jedoch ein besonderes Problem. Es kann häufig passieren, beispielsweise aufgrund eines FehlVerhaltens eines Speicherteiles, daß der Datenprozessor immer wieder vergeblich versucht, das Unterbrechungsprogramm zu benutzen, Jedesmal, wenn der Datenprozessor die Benutzung eines Unterbrechungsprogramms versucht, wird ein Unterbrechungssignal erzeugt, und der Datenprozessor versucht erneut, in das Unterbrechungsprogramm einzutreten. Dadurch ergibt sich eine endlose Schleife, die nur bei manueller Intervention gestoppt werden kann. Weiterhin tritt noch folgender Umstand auf, daß der Stapelmechanismus mehrere Wörter in dem Speicher aufsammelt, ehe der Datenprozessor mit der Verwendung des Unterbrechungsprogramms beginnt. Der Zweck hierfür liegt darin, dem Unterbrechungsprogramm Information zugänglich zu machen, beispielsweise die die Art der maßgebenden Unterbrechungs-Bedingungs-Art' bezeichnenden Parameter sowie den Rückkehrpunkt bezeichnende Information, von welchem die weitere Ausführung des unterbrochenen Programms nach Beendigung der Unterbrechungs-Bedingungs-Bearbeitung fortgeführt werden sollte. Somit werden jedesmal, wenn der Datenprozessor vergeblich versucht, das Unterbrechungsprogramm zu benutzen, mehrere Wörter in dem Speicher aufgesammelt, die niemals verwendet werden. Das Endergebnis ist Schließlich, daß der gesamte Speicher überschrieben ist und daß sämtliche Information,, die' in ihm für die spätere Verwendung gespeichert worden war, zerstört ist.
409827/0785
Aus der US-Patentschrift 3 492 654 ist ein Datenprozessor bekannt, der in einem Normal-Zustand sowie in einem Steuer-Zustand A und einem Steuerzustand B arbeiten kann. In seinem Normalzustand führt der Prozessor Objektprogramme aus. In seinem Steuerzustand A führt der Prozessor Unterbrechungsprogramme auss die in einer ersten Tabelle lokalisiert sind,, In seinem Steuerzustand B führt der Prozessor spezielle,, sogenannte Hilfs-Unterbrechungs-Programme aus, die in einer zweiten Tabelle lokalisiert sind.
Der Prozessor weist ein Unterbrechungsregister sowie ein Unterbrechungs-Maskenregister auf9 von denen jedes soviele Flip-Flops enthält,, wie den verschiedenen Unterbrechungsbedingungen entspricht ο Jedes von dem Prozessor empfangene Unterbrechungssignal läßt eines der Flip-Flops in dem Unterbrechungsregister setzeno Der Zustand des entsprechenden Flip-Flops in dem Unterbrechungs-Masken-Register bestimmte ob der Prozessor die Unterbrechungsbedingung annimmt- oder ignorierte In einem Zwei—Prozessor-System sind die beiden Unterbrechungs-Maskenregister so eingestellt^ daß getrennte Untersysteme zur Unterbrechungsbearbeitung gebildet werden»
Die verschiedenen Zustände des Prozessors werden auf folgende Weise angenommene In den Mormal-Zustand wird in Abhängigkeit von einem Unterbrechungs-Rüclckehr—Signal eingetreten das nach erfolgreichem Abschluß eines Unter-= brechungsprogramms erzeugt wirdo Der Steuersustand A wird nur von dem Normalzustand aus in Abhängigkeit von einem angenommenen Unterbrechungssignal erreichte Menn in den Steuerzustand A eingetreten i-jurdej, wird, die Ausführung des Objektprogramms unterbrochen^ Der Steuergustand B wird aus dem Steuerzustand A ie Abhängigkeit von dem
■40 9"8 2 7/07
ersten Unterbrechungssignal erreicht, das von dem Prozessor während seines SteuerzuStandes A angenommen wurde. Wenn in den Steuerzustand B eingetreten wurde, wird die Ausführung der Unterbrechungstabelle für den Steuerzustand A abgeschlossen und wird niemals wieder an der Abschlußstelle erreicht. Vielmehr wird in die Unterbrechungstabelle des Steuerzuständes A nur von ihrem Beginn her und dann nur aus dem Normalzustand eingetreten. Aus alledem ergibt sich, daß das in der genannten Patentschrift beschriebene Unterbrechungssystem nicht an dem.Problem leidet, das oben bezüglich erfolgloser Versuche zum rekursiven Eintritt in ein Unterbrechungsprogramm erläutert wurde; andererseits ist dieses System nicht so leistungsfähig, daß es imstande wäre, in ein Unterbrechungsprogramm rekursiv einzutreten.
Demgegenüber richtet sich die Erfindung auf ein sogenanntes
Fail-Soff-Unterbrechungssystem für eine Datenverarbeitungsanlage unter Verwendung eines zweiten Unterbrechungsprogramms, das dazu dienen soll, die rekursive oder wiederholte Verwendung eines ersten Unterbrechungsprogramms, die auf ein Fehlverhalten des Systems durchzuführen ist, zu beenden. Dazu werden erfindungsgemäß mehrere aufeinanderfolgende Unterbrechungsbedingungen für den Eintritt und den erneuten Eintritt (re-entry) in das gleiche erste Unterbrechungsprogramm wahrgenommen. Das erste Unterbrechungsprogramm ist wiederholt verwendbar (engl.:re-entrant) kodiert, so daß die Erfindung die sich aus der re-entrant-Kodierung ergebenden Vorteile ausnutzt, also beispielsweise Einsparung von Speicherraum, gleichzeitige Verwendung der gleichen Prozedur durch mehrere Prozessoren, o.v.m. Bei der Erfindung wird weiterhin das oben erwähnte und dargestellte Problem des erfolglosen Versuchs, in ein erstes Unterbrechungsprogramm rekursiv einzutreten, eliminiert.
409827/0785
Die erfindungsgemäße Vorrichtung ist insbesondere Teil einer programmierbaren Datenverarbeitungsanlage· Ein Speicher der Anlage speichert erste und zweite Unterbrechungsprogramme. Signalgeber erzeugen mehrere Unterbrechungssignale. Jedes Unterbrechungssignal zeigt das Vorlegen einer von mehreren Unterbrechungsbedingungen an. In Abhängigkeit von mehreren, in zeitlichem Abstand auftretenden UnterbrechungsSignalen benutzt ein Datenprozessor rekursiv das erste Unterbrechungsprogramm, um die Unterbrechungsbedingungen zu verarbeiten. Unter diesen möglichen Unterbrechungsbedingungen befindet sich eine, die ein Fehlverhalten darstellt, und aufgrund welcher der Datenprozessor wiederholt vergeblich die erste Unterbrechungsprozedur zu verwenden sucht. Jedesmal, wenn der Datenprozessor eine Verwendung des ersten Unterbrechungsprogramms versucht, wird ein Unterbrechungssignal erzeugt, und der Datenprozessor versucht· erneut, das Unterbrechungsprogramm zu verwenden. Hierzu sind Einrichtungen für die Beendigung der Verwendungsversuche des ersten Unterbrechungsprogramms vorgesehen, und die dafür sorgen, daß der Datenprozessor die zweite Unterbrechungsprozedur ausführt. Die Beendigungseinrichtung spricht auf die Koinzidenz eines Unterbrechungssignals mit einer Statusan— zeige an, die von einem Maschinen-Unterbrechungspegel-Register erzeugt wird, während sie sich in einem Zustand einer vorbestimmten höheren Ordnung befindet. Das Pegel-Register ist so einstellbar, daß es einen von mehreren angeordneten Zuständen annehmen kann und eine entsprechende Vielzahl von Statusanzeigen abgibt. Weitere Einrichtungen sind dafür vorgesehen, das Pegelregister auf
seinen niedrigsten Zustand einzustellen, wenn nämlich keine Unterbrechungsbedingungen fortdauernd vorliegen. Eine Einstelleinrichtung setzt das Pegelregister auf den vorbestimmten höherrangigen Zustand, nachdem eine
403827/0785
Folge von UnterbrechungsSignalen erzeugt wurde, wobei für jede Folge der Datenprozessor vergeblich das erste Unterbrechungsprogramm zu verwenden suchte. Die Einstelleinrichtung spricht auf jedes Unterbrechungssignal an und setzt das Pegelregister auf einen Status von höherer Ordnung als der Status, den es unmittelbar vor dem Unterbrechungs signal inne hatte.
Bevorzugte Weiterbildungen der Erfindung sind in folgender Richtung möglich: Der Speicher weist mehrere Speichermoduln auf, wobei das erste und das zweite Unterbrechungsprogramm in verschiedenen Moduln gespeichert sind. Somit kann ein Fehlverhalten der Art, daß der Speichermodul, in welchem das primäre Unterbrechungsprogramm gespeichert ist, nicht gelesen werden kann, nicht verhindern, daß der Datenprozessor das zweite Unterbrechungsprogramm ausführt. Ein weiteres, bevorzugtes, wichtiges Merkmal betrifft die programmgesteuerte Abfrage und Steuerung des Status1 des Pegelregisters durch das erste Unterbrechungsprogramm. Somit weist in einer bevorzugten Weiterbildung der Erfindung das erste Unterbrechungsprogramm Adressfelder enthaltende Prdgrarambefehle auf, ivobei die Adressfelder auf Stellen zeigen, die Stapelwörter speichern. Ein derartiger Programmbefehl dient dazu, in den Stapel den Status des Pegelregisters zu speichern. In Anbetracht der von der programmatischen Abfrage des Pegelregisters gewonnenen Information sowie in Anbetracht weiterer, in ähnlicher Weise zur Verfügung stehender Information unternimmt das erste Unterbrechungsprogramra die geeigneten weiteren Maßnahmen. Beispielsweise kann ein anderer Programmbefehl ausgeführt werden, der das Pegelregister in einen anderen Status setzen läßt.
Die Erfindung wird nachstehend unter Bezugnahme auf die beigefügten Zeichnungen beschrieben Im einseinen zeigen:
409"827/078S
Fig. 1 ein Blockdiagramm einer mit den Merkmalen der Erfindung ausgestatteten Datenverarbeitungsanlage;
Fig. 2 das Format mehrerer verschiedener Worttypen, die in der Datenverarbeitungsanlage verwendet werden;
Fig. 3 ein spezielles Beispiel der Art, in der die Wörter in den Modul-Speicher der Datenverarbeitungsanlage angeordnet sind; '
Fig. 4 ein Flußdia.granun der Operationsfolge beim Speichern eines IMSCM aus Figa2 in den Modul-Speicher;
Fig. 5 ein Flußdiagramm der Operationsschritte beim Speichern eines IRM aus Pig«, 2 in den Modul-Speicher?
Fig. 6 ein.Flußdiagramm der Arbeitsschritte bei der Ausführung eines Pseudo-EHTER-Befenls;
Fig. 7 ein Flußdiagramm der Arbeitsschritte bei der Ausführung eines EXXT-Befehls; und
Fig. 8 ein Flußdiagramm<, aus dem unter ,anderem die Art und Weise hervorgeht«, auf welche in ein zweites- oder Hilfs-Unterbrechungsprogramm eingetreten wird*
Allgemeine Beschreibung
Gemäß Figo 1 weist eine programmierbare Datenverarbeitungsanlage 1 einen Speicher 3 sowie einen Stapel-organisierten Datenprosessor 5 auf9 der die in dem Speicher gespeicherten Programm ausführt und Ausführungs—Auf-= zeichnungen (Figo3) in die Stapelspeicherfelder in dem Speicher stapelte Signalgeber erzeugen mehrere Unterbrechungssigna Ie9 von denen jedes das Vorliegen einer Unter= brechungsbedingung anzeigt und den Typ der vorliegenden Unterbrechungsbedingung bezeichnete Beispielsweise erzeugt ein Alarm-Unterbrechungs~Signalgeber 21 ein Alasmynter= brechungssignal und seigt damit as, daß.eine Pehlwsrhalten aufgetreten ist, das einen versuchten Daten-Transfer zwischen dem Da-tenprozessor und dem Speicher verhinderteo
Der Datenprozessor spricht auf mehrere, in zeitlichem Abstand auftretende Unterbrechungssignale an und benutzt rekursiv ein erstes Unterbrechungsprogramm. Das bedeutet, jede Ausführung des ersten Unterbrechungsprogramms ist unterbrechbar.
Falls bestimmte Ausfall-Arten auftreten, wird jedesmal, wenn der Datenprozessor das erste Unterbrechungsprogramm zu verwenden versucht, ein Alarm-Unterbrechungssignal erzeugt. Beispielsweise tritt manchmal ein Fehlverhalten in einem Teil des Speichers auf, der ein einleitendes Programmwort (Fig.3) des ersten Unterbrechungsprogramms speichert. In diesem Fall versucht der Datenprozessor das erste Unterbrechungsprogramm zu verwenden, kann dieses Ziel jedoch nicht erreichen. Weiter wird als Ergebnis des Versuches ein Alarm-Unterbrechungssignal erzeugt und der Datenprozessor versucht wiederum, das erste
Unterbrechungsprogramm zu benutzen. Bei den oben erwähnten bekannten Datenverarbeitungsanlagen führte diese Ausfallerscheinung zu einer endlosen Schleife, die nur durch manuelle Intervention angehalten werden konnte. Dagegen überwindet die Erfindung dieses Problem durch ein Verfahren, gemäß dem eine Zählung in einem Maschinen-Unterbrechungs-Pegel-Register (IML 85) aufgezeichnet wird, so daß dann, wenn der Datenprozessor eine Anzahl von erfolglosen Versuchen zur Benutzung des primären Unterbrechungsprogramms ausführt, das IML 85-Register einen vorbestimmten Status erreicht; weiter wird nach dem erfindungsgemäßen Verfahren die Koinzidenz eines Unterbrechungssignals mit einem vorbestimmten Status des Registers IML 85 festgestellt und in Abhängigkeit von dieser Feststellung der Versuch beendet, das primäre Unterbrechungsprogramm zu verwenden, und die Ausführung des zweiten Unterbrechungsprogramms begonnen.
409827/0785
Beschreibung der Einzelheiten
Der Speicher 3 besitzt mehrere adressierbare Speicherstellen zum Speichern von Wörtern verschiedener Arten. Das Format jedes dieser Wörter zeigt Fig.. 2. Vorzugsweise besitzt jedes Wort ein Markierungsfeld, dessen Inhalt die Wortart bezeichnet (vgl.US-Patentschrift 3 593 312). Ein Programmwort umfaßt sechs Felder von je acht Bitlänge, die Silben genannt werden. Ein Programmbefehl (der im wesentlichen gleich einer Programmanweisung ist) umfaßt eine oder mehrere Silben. Als ein relativ einfacher Programmbefehl, der den Prozessor anweist, zwei Operanden zu addieren, besteht aus einer einzigen Silbe. Andererseits kann ein Programmbefehl so kompliziert sein, daß er in vollständiger Weise nur durch Verketten der Silben von mehreren Programmwörtern dargestellt werden kann. Der hier verwendete Begriff "Programmbefehl" entspricht mehr dem englischen Ausdruck "program operator" anstelle dem vertrauteren Begriff "program instruction", weil die erfindungsgemäßen Programmbefehle während ihrer Ausführung keine Modifizierung erleiden, wohin gegen die "program instructions" bei bekannten Anlagen Felder enthalten, die im Laufe der Ausführung modifiziert werden.
In der nachfolgenden Beschreibung werden noch folgende, vielleicht als erläuterungsbedürftig empfundene Ausdrücke verwandt: Der Ausdruck "Zeiger" (pointer) bedeutet ein Adressenfeld, aus dem die absolute Adresse einer Speicherstelle abgeleitet werden kann. Somit subsummieren sich unter dem Ausdruck "Zeiger" direkte Adressen, relative Adressen und indirekte Adressen. Die Wendung "ein Register zeigt auf" bedeutet, daß das Register einen Zeiger speichert. Der Begriff "adressenmäßig folgende Stelle"
409827/0 7 85
bezieht sich auf die eineindeutige Wechselbeziehung zwischen einer geordneten Menge von Adressen und einer Menge von Speicherstellen. Zwei Adressen, die sich nur um ein Inkrement (i.a. der Wert eins) voneinander unterscheiden, bezeichnet zwei' adressenmäßig folgende Stellen. Da weiterhin mehrere Programmbefehle in einer einzigen Speicherstelle zusammengepackt werden können, wird der Term "adressenmäßig folgende Felder" verwendet werden. Der Ausdruck schließlich "Programmkette" bedeutet mehrere Programmbefehle, die in adressenmäßig aufeinanderfolgenden Feldern gespeichert sind.
Wie auch in dem System der B 6500,in welchem die eben erläuterten Begriffe verwendet werden, übersetzt ein Compiler ein in einer höheren Programmsprache geschriebenes Programm in ein Maschinenprogramm, das aus mehreren Programmsegmenten besteht.
Die Grundlage, auf der der Compiler das Programm segmentiert, steht mit der Blockstruktur der Programmiersprachen, beispielsweise "ALGOL" in Beziehung. Ein in ALGOL geschriebenes Programm ist in Blöcken angeordnet. Ein Block weist eine oder mehrere Anweisungen auf, die bestimmte Handlungen beauftragen, Vereinbarungen von Namen festlegen und die Klammerausdrücke "Begin" und "End" enthalten, die die Grenzen des Blockes markieren.
Der Zweck eines Blockes besteht in der Einführung einer neuen Ebene der Nomenclatur mit Hilfe der Vereinbarungen über die Namen. Eine neue Nomenciaturebene wird dadurch eingeführt, daß ein Block dann in einen anderen Block eingebettet wird. Derartige eingeschlossene Blöcke stehen " untereinander als lokale und globale Blöcke in Beziehung. Nach den Regeln der ALGOL Programmiersprache kann ein Marne in einem Lokalblock die gleiche Bedeutung haben, wie
409827/078S
• 23S4323
in seinem globalen Block» Andererseits besitzt ein Name eine vollkommen andere Bedeutung in dem lokalen Block, wenn der Name in ihm erneut festgelegt wurde. Dies ist ein sehr leistungsfähiges Prinzip der ALGOL-Spräche, weil es dem Programmierer die -Verwendung bequemer, suggestiver Namen innerhalb des Blockes erlaubt, den er ohne Sorge vor einem unbeabsichtigten Eingriff in einen anderen Block niederschreiben kann=
Jedem Block eines in ALGOL geschriebenen Programms ist eine lexikographische Stufe zugeordnet» Beispielsweise ist dem äußeren Block eines Programms eine erste lexikographische Stufe,, etwa di@ Stufe Mull zugeordnet, während der innerste Block eisten höheren lexikographischen Stufenwert5 beispielsweise Vier zugewiesen erhältα In diesem Fall gibt es Zwischenblöcke 9 die Unterblöcke des äußeren Blockes sind und gleichzeitig globale Blöcke des innersten Blockes sindo Diese zi-n. sehen! iegenden Blöcke tragen die lexikographischen Pegelwerte 1,2 und 3O Andere Blöcke können innerhalb des äußeren Blockes eingebettet sein, die zu dem innersten Block nicht global su sein brauchen«, Dementsprechend erlaubt ALGOL die Anordnung von Programmen in einer baumartig verzweigenden Struktur„ Die relativen lexikographischen Pegels die den verschiedenen Blöcken zugeordnet sind9 sind insofern statisch, als sie beim Niederschreiben des Programms festgelegt werden o
Eine der zulässigen Vereinbarungen bei. ALGOL ist die Vereinbarung PROCEDUREο Eine Prozedur ist verwandt mit einem Unterprogrammο Bsi der ÄLGOL=Sprache kann eine Prozedur ein Programrnblock -(in welchem Fall die -Vereinbarungen in ihm getroffen werden), oder lediglich sine zusammengesetzte Anweisung sein {doho eine Ansammlung von Zuordsurags=Än~ itfeisungen9 die von den Ausdrücken "BEGIM und EWD singe=
409827/078
klammert ist). Die Vereinbarung einer Prozedur ist zu unterscheiden von dem Aufruf nach einer Prozedur. Ihre Vereinbarung ist ihrer Natur nach eine Definition; d.h. sie enthält eine Liste von Ausführungsschritten. Ein Aufruf nach einer Prozedur verlangt, daß die Prozedur an einer bestimmten Stelle in dem Programm ausgeführt werden soll und bezeichnet die Parameter, mit denen die P.rozedur arbeiten soll· Ein zentrales Merkmal von ALGOL besteht in den Regeln, die eine rekursive Verwendung der Prozeduren (=Programme) erlauben. Beispielsweise kann eine Prozedur so definiert sein, daß sie.mit einer Prozedur als ein-Parameter arbeitet, und die Prozedur kann aufgerufen werden und sich selbst als ein Parameter behandeln.
Bei dem B6500 System übersetzt der Compiler jeden Block eines ALGOL-Programms in ein Programmkode-Segment. Während die Regeln von ALGOL zwischen solchen Prozeduren, die lediglich zusammengesetzte Anweisungen sind, und Prozeduren unterscheiden, die Blöcke darstellen, behandelt der Compiler jede Prozedur so, als wäre sie ein Block. Wegen der engen Beziehung zwischen einer in hoher Programmiersprache geschriebener Prozedur und einem Maschinensprachen-Programmkodesegment werden im folgenden diese beiden Ausdrücke in austauschbarer Weise verwendet, solange keine Mißverständnisse entstehen können.
Jedes der Kodesegmente enthält mehrere Zwischenprogrammbefehle, sowie einen Programmanfangsbefehl und einen Programmendbefehl, die jeweils vor bzw. nach sämtlichen Zwischenprogrammbefehlen bei jeder vollständigen Ausführung des Programmkodesegments auszuführen sind. Der Programmabschlußbefehl jedes Segments ist entweder ein EXIT-Befehl oder ein RETURN-Befehl. Der Compiler übersetzt den Klammerausdruck END, der am Ende einer prozedurmäßigen
409827/078B
zusammengesetzten Anweisung oder eines Prozedurblockes auftritt, in den RETURN-Befehl und übersetzt den Klammerausdruck END, der am Ende aller anderen Programmblöcke auftritt, in den EXIT-Befehl. Der Compiler übersetzt eine ALGOL-Handlungs-Anweisung, die die Ausführung einer Prozedur beinhaltet, in eine aufrufende Sequenz von Programmbefehlen· Der letzte Programmbefehl in der aufrufenden Sequenz wird ein ENTER-Befehl genannt. Bei der Ausführung des ENTER-Befehls liest der Datenprozessor den Anfangsprogrammbefehl des Kodesegments aus, der der aufgerufenen Prozedur entsprichtβ Polglich kann man davon sprechen, daß in das Programmsegment eingetreten wurde·
Der Speichermodeul 7 speichert Programmprozeduren eines Hauptsteuerprogramms (MCP). Das MCP ist eine Programmart, die häufig entweder ein Executiv-oder ein Überwachungs-Programm genannt wird, Programme von der Art des MCP werden gewöhnlich von dem Hersteller der Datenverarbeitungsanlage geliefert. Das MCP hat viele Funktionen, beispielsweise das Einplanen der Ausführung anderer Programme, der Zuweisung von Speicherraum, u.v.m. Aus diesem Grunde ist das MCP relativ kompliziert und enthält sehr viele verschiedene Prozeduren. Das Speichern des gesamten MCP in dem Modulspeicher würde eine große Anzahl von verfügbaren Speicherstellen konsumieren. Demgemäß ist nur ein Teil des MCP in dem Modulspeicher gespeichert, während die Datenverarbeitungsanlage sich in einer typischen Betriebslage befindet. Andere Teile des MCP sind irgendwo in Mengenspeichern, beispielsweise in Plattenspeichern, gespeichert. Auf Bedarf,können diese anderen Teile aus dem Mengenspeicher in ,den Modulspeicher übertragen werden.
Vorzugsweise wird ein Teil des MCP im wesentlichen dauernd in dem Modulspeicher gespeichert· Dieser Teil ist ein erstes Unterbrechungsprogramm bzw. eine erste Unterbrechungs-
409827/0785
behandlungsprozedur (PIHP). Die Funktion des PIHP besteht darin, den Datenprozessor so zu programmieren, daß er verschiedene Arten von Unterbrechungsbedingungen verarbeiten kann. Das System 1 enthält Signalgeber zur Erzeugung mehrerer Unterbrechungssignale, von denen jedes das Vorhandensein einer Unterbrechungsbedingung anzeigt und die Art der jeweils vorliegenden Unterbrechungsbedingung bezeichnet. Beispielsweise liefert ein externer Unterbrechungssignalgeber 11 externe Unterbrechungssignale, die das Vorliegen von Unterbrechungsbedingungen anzeigen, die sich aus dem Betrieb anderer •Einheiten in dem System 1 ergeben. In dem erwähnten B6500-System werden die externen Unterbrechungssignale durch eine Schaltung erzeugt, die in einer nicht dargestellten Ein/Ausgabe-Multiplexer-Einheit enthalten ist«
Eine ein Hauptteil des Stapels bezeichnete Liste von Wörtern ist ebenfalls im wesentlichen dauernd in dem Modulspeicher gespeichert. Der Hauptteil des Stapels ist eine Informationen-Tabelle, die in erster Linie bei der Ausführung des MCP gebraucht wird. Die US-Patentschrift 3 546 677 befaßt sich unter anderem mit der Verwendung eines Deskriptor-Wortes in einem derartigen Haupt'teil eines Stapels, mit dem eine Verknüpfung zu anderen in dem Speicher gestapelten Stapeln gewonnen wird, die mit dem Hauptteil de$ Stapels nach rückwärts verbunden sind, so daß sich ein baumartig strukturierter Stapel ergibt.
Eine Speichersteuereinheit (MCU 13) ist zwischen dem Prozessor 5 und dem Modulspeicher eingeschaltet a Ein' Speicherinformationsregister (MIR 15) ist in der MCU enthalten* Das MIR 15 enthält wie euch andere noch weiter unten beschriebene Register mehrere bitspeichernde Vorrichtunaen (beispielsweise F lip-Flop^Schalfcungen), die im einzelnen nicht dargestellt sindo Jede derartige
Flip-Flop-Schaltung umfaßt konventionelle Eingangs- und Ausgangsgatterschaltungen. Bei jedem Register sprechen derartige Eingangsgatterschaltungen auf noch weiter unten erläuterte Steuersignale an und speichern in den bit- - speichernden Vorrichtungen des Registers Datensignale, die auf Gruppen von Signalleitungen, genannt Sammelleitungen, geführt werden. Weiter sprechen bei jedem Register die Ausgangsgatterschaltungen auf Steuersignale an und geben in den bitspeichernden Vorrichtungen des Registers gespeicherte Datensignale auf zugehörige Sam-, raelleitungen aus. Beispielsweise weist das MIR15 insgesamt 51 bitspeichernde Vorrichtungen auf, in denen 51 Bit-Wörter speicherbar sind«,
In der MCU13 ist ferner ein Speicher-Adressregister MAR enthalten. Das MAR17 enthält beispielsweise 20 bitspeichernde Vorrichtungen, in denen absolute Adressen iron 20 Bitumfang speicherbar sindD Jedesmal,, wenn ein Wort zwischen dem Prozessor und dem Modulspeicher übertragen wird,, wird eine absolute Adresse in den MAR17 gespeicherte Daraufhin greift die MCU13 auf die von der absoluten Adresse bezeichnete Speicherstelle zu, und ein Wort tdL'rd zwischen der angesteuerten Speicherstelle und dem MIR15 übertragen»
Die MCU13 enthält übliche Lese/Sch-reibsteuerschaltungen mit Signalqebern- (MAOF 19), die ein Signal MAOS abgeben,, das anzeigt, daß eine SpeicherZugriffsanforderung angenommen wurde und daß MIR 15 das an dem Speicherzugriff beteiligte Wort enthält o Gelegentlich-lcomrat es vor5 beispielsweise aufgrund eines Fehlverhaltens in einem Speichermodul9 daß MCUt3 nicht imstande ist5 ein Wort zwischen MIR15 und einer adressierten Speicherstelle zu übertragene Dafür ist in der MCU13 ein Alanmanterbrechungssigna!geber 21 vorgesehen, der ein Alarsnunterbrechungssignal erzeugt»
40 9 8 27/0-7
Im Großen und Ganzen ist der Prozessor 5 ähnlich wie in der US-Patentschrift 3 566 364 beschrieben, aufgebaut. Somit ist derjenige Teil der Prozessor-Schaltung, der an der Bildung der Zeitgeber-und Steuersignale beteiligt ist, auf mehrere Steuereinheiten aufgeteilt. Unter diesen Steuereinheiten befindet sich eine Steuereinheit FC25 für das Holen eines Programmwortes, eine Steuereinheit IC27 für die Unterbrechung, sowie Steuereinheiten OEC29 für die Befehlsausführung und den Stapel. Obgleich nicht im einzelnen dargestellt, enthält jede Steuereinheit einen Schrittzähler, eine den Zustand des Schrittzählers entschlüsselnde Schaltung, mehrere Gatter, die durch die Dekodierschaltung erzeugte Signale gesteuert wird sowie andere Schaltungen in dem Prozessor. Diese Gatter erzeugen die Zeitgeber-und Steuersignale, die für die Mikro-Befehle und zur Steuerung der Zählstände des Seguenzzählers benötigt werden.
Ein Programmregister 31 speichert jedes Programmwort, nachdem es aus dem Modulspeicher geholt wurde. Im weiteren Verlaufe der Beschreibung wird jedes in dem Programmregister gespeicherte Programmwort als das augenblickliche Programmwort bezeichnet. Eine Auswahlschaltung 33 für Befehlssilben und ein Befehlsentschlussler 35 arbeiten zur Dekodierung des augenblicklichen Programmbefehls in dem Programmwort zusammen. Die erste Silbe jedes Programmbefehls zeigt, aus wieviel Silben der Programmbefehl besteht. Dazu ist der Ausgang des Befehlsentschlüsslers zurück auf die Auswahlschaltung 33 für die Befehlssilbe gekoppelt,·so daß sie die geeignete Anzahl von Silben auf den Dekodierer geben kann. Der Ausgang des Befehlsentschlüsslers 35 ist weiterhin an OEC29 angeschlossen. Ein Programmsilbenregister PSR37 zeigt auf die erste Silbe des ^rogrammbefehls, der sogleich nach dem augenblicklichen Befehl ausgeführt werden soll. Nach Abschluß der Ausführung
409827/0786
eines Programmbefeh'ls liefert OEC29 ein Silbenausführungs-Abschlußsignal SEGL. Ein Gatter 38 nimmt SECL auf. Unter Steuerung eines NI-Signals aus IC27 spricht das Gatter 38 auf SECL an und bringt PSR37 auf den neuesten Stand, wonach es auf die erste Silbe des nächsten Programmbefehls zeigt.
Jedes Programmwort wird aus einer Stelle in dem Modulspeicher 3 geholt. Ein Adressenaddierer 39 berechnet eine absolute Adresse für jedes zu holende Programmwort. Die Eingangssammelleitungen 40 und 41 führen dem Adressenaddierer Information zu. Jede von dem Adressenaddierer berechnete absolute Adresse eines Programmwortes wird auf eine Sammelleitung 42 gegeben, die dem Prozessor 5 mit MAR17 verkoppelt. Ein Programmbasisregister PBR43 sowie ein Programmindexregister PIR45 ergeben eine Basissowie eine Relativ-Adresse, wobei der Adressen-Addierer beide addiert und die absolute Adresse eines Programmwortes liefert. Nachdem MCU13 das Programmwort aus der adressierten Stelle erhalten hat, zeigt das MAOS-Signal an, daß MIR15 ein Programmwort enthält. Eine Speicherschnittstellenschaltunq 47 in dem Prozessor 5 ist an MIR15 über eine Sammelleitung 49 angeschlossen. Diese Schaltung enthält Abschluß-Impedanzen und Verstärker, die üblicherweise dazu dienen, verläßlichen Empfang digitaler Datensignale von hohen Frequenzen zu garantieren. Die Speicherschnittstellenschaltung gibt das aus MIR15 empfangene Wort auf eine Sammelleitung 51. Wenn das von der Sammelleitung 51 geführte Wort ein Programmwort ist, spricht die Hol-Steuerung (FC25) auf MAOS an und erzeugt ein Steuersignal TO, das das Programmwort in das Programmregister weiterführt·
409827/0785
Jedes Wort, mit Ausnahme eines geholten Programmwortes, das von der Speicherschnittstellenschaltung 47 auf die Sammelleitung 51 gegeben wird, kann in ein A-Register 55, ein B-Register 57 oder ein C-Register 59 gelangen· Jedes in einem dieser drei Register gespeicherte Wort kann auf die Sammelleitung 51 zur Übertragung in MIR15 gegeben und in dem Modulspeicher gespeichert werden.
Die Sammelleitung 51 wird außer zur Übertragung eines Wortes zu oder von dem Speicher von Zeit zu Zeit auch zur Übertragung eines Wortes zwischen Registern in dem Prozessor verwendet. Beispielsweise führt ein Steuersignal Tl ein Wort in dem Α-Register auf die Sammelleitung 51. Ein Steuersignal T2 gibt das von der Sammelleitung 51 geführte Wort in das B-Register» Wenn demzufolge die Steuersignale Tl und T2 gleichzeitig erzeugt werden, wird ein Wort aus dem Α-Register in das B-Register übertragen. Dies wird ausgedrückt durch die Schreibweise Β?"~Α. Die spezielle Handlung, die durch das Steuersignal Tl bewirkt wird, kann geschrieben werden als 51 (50:51) «f- B 150:51). Dies bedeutet, daß die in sämtlichen 51 bitspeichernden Vorrichtungen des Registers B gespeicherten Bits, die von 0 bis 50 durchnumeriert sind, auf die entsprechenden Signalleitungen der Sammelleitung 51 gegeben werden. Die Tabelle II am Ende der Beschreibung führt die weiter unten erwähnten Steuersignale auf und erklärt die von ihnen bewirkten Handlungen.
Während der Ausführung einer Programmkette werden Informationsposten in der Art von Zwischenergebnissen erzeugt. Derartige Informationsposten oder Zwischenergebnis—Wörter müssen zeitweise gespeichert werden, solange,
40S827/0785
bis sie in einer nachfolgenden Bearbeitungsstufe gebraucht werden. Die Aufgabe, derartige Zwischenergebniswörter zu speichern, umfaßt gewisse Teil-Aufgaben. Beispielsweise muß ein Speicherplatz für das Speichern zugewiesen und dann, wenn er. nicht langer gebraucht .wird, in. anderer Weise zugeteilt werden. Weiterhin müssen die Zwischenergebniswörte-r so gespeichert werden, daß sie lokalisierbar bleiben für den FaIl9 daß sie benötigt werden« Die Maschinenprogramme für das System 1 sind in der Weise kompiliert, daß die Zwischenergebniswörter im allgemeinen in einer Reihenfolge benötigt werden, die umgekehrt zu der Erzeugungs-Reihenfolge ist» Dies ist eine Folge der polnischen Notation für die Ausdrücke der Zuordnungs-Anweisungen'c Eine in polnischer Schreibweise ausgedrückte Zuordnungs-Anweisung ist klammerfrei und besteht aus einer Folge von Operanden und Befehlen. Dabei ist eine Konvention dahin getroffen, daß jeder arithmetische Befehl auf zwei unmittelbar vorhergehende Operanden sich bezieht., Man betrachte beispielsweise die polnische Notationskette ABC-fXo Die beiden dem Pluszeichen vorangehenden Operanden sind B und C, so daß das Pluszeichen anzeigt, daß B und C zur Bildung eines einzigen neuen Operanden (B-s-C) zu kombinieren sindo Jetzt werden die dem Multiplikationszeichen vorangehenden beiden Operanden zu (B+C) und A3 Daher zeigt das Multiplilcationszeichen an, daß die beiden Operanden A und (BfC),zur Bildung eines einzigen neuen Operanden (A) χ (B+C) zu kombinieren sindo
Ein Maschinenprogramm, das diesem beispielhaften Aus= druck in polnischer Notation entspricht, enthält eine Kette von Programmbefehlen, d.ie den Prozessor 5 anweisen, die Operanden A,B und C in dieser' Reihenfolge zu holeno
Diese Operanden müssen vorübergehend aufbewahrt werden. Das Maschinenprogramm enthält weiter einen Programmbefehl, der den Prozessor anweist, die beiden zuletzt aufgesammelten Zwischenergebniswörter (d.h. C und B) zu addieren. Schließlich weist ein Programmbefehl den Prozessor 5 an, die verbleibenden aufgesammelten Ergebniswörter (d.h. A und B + C) zu multiplizieren.
Der Datenprozessor 5 enthält einen Stapelmechanismus, mit dem die Aufgabe des Aufsammeins derartiger Zwischenergebniswörter erleichtert wird. In der weiteren Beschreibung wird ein Zwischenergebniswort in einfacher Weise als "Stapelwort" bezeichnet.
Stapelwörter, etwa in der Form von Operanden, die in dem A-Register 55 und dem B-Register 57 gespeichert sind, können auf eine arithmetische und logische Einheit A/L60 weitergegeben werden. Sammelleitungen 61 und 62 führen die aus dem Register A bzw.B ausgegebenen Wörter auf die Eingänge von A/L60. Man betrachte als Beispiel einen ADDIERE-Befehl. Vor der Ausführung eines ADDIERE-Befehls wird ein Operand in dem Register A gespeichert und ein Operand wird in dem B-Register gespeichert. Auf den ADDIERE-Befehl hin werden die beiden Operanden A/L60 zugeführt, wo sie addiert werden. Die von A/L60 erzeugte Summe gelangt über die Sammelleitung 62 in das Register B und wird dort gespeichert.
Der Stapelmechanismus sammelt die Stapelwörter in einem Stapelspeicher auf. Die aufgesammelten Stapelwörter bilden eine verkettete Liste, die ein baumartig strukturierter Stapel genannt wird. Der Stapelspeicher weist mehrere addressierbare Speicherstellen in dem Modulspeicher
409827/0785
3 auf und enthält die Register A und B.
Der baumartig strukturierte Stapel besteht aus mehreren Stapeln, von denen einer der Hauptteil des Stapels ist. Jedem Stapel ist eine Stapelnummer zugeordnet. Der Modulspeicher 3 speichert ein Feld von Deskriptoren, die einen Stapelvektor bilden. Jeder Deskriptor in dem Stapelvektor zeigt auf einen anderen Stapel. Der Stapelhauptteil enthält einen Deskriptor, der auf den Stapelvektor zeigt.
An der Basis jedes Stapels befi'ndet Sich entweder eine Spitze des Stapelsteuerwprtes (TOSCW) oder ein Operandenwort, das ein Identifizierungsfeld I.D. enthält, das anzeigt, daß ein Datenprozessor in dem Stapel Information aufsammelt. Man bemerke, daß bei vielen Ausfuhrungsformen der Erfindung mehrere Datenprozessoren verwandt werden, obgleich in Fig. 1 nur ein Datenprozessor in dem Blockdiagramm angedeutet ist.
Ein Stapel, der an seiner Basis ein Operandenwort anstelle eines TOSCW hat, wird ein aktiver Stapel genannt. Ein Stapel, der an seiner Basis ein TOSCW hat, wird ein inaktiver Stapel genannt. Der Datenprozessor 5 enthält ein Stapelnummer-Register 5NR63, das die dem aktiven Stapel zugeordnete Nummer speichert (d.h. einen solchen Stapel, der ein I.D.Feld hat, das den Datenprozessor 5 anzeigt.
Jeder Stapel hat ein Stapelkopfwort. Bei einem aktiven Stapel kann das Stapelkopfwort entweder in dem Register A, oder in dem Register B oder in einer Stelle in dem Modulspeicher gespeichert sein. Ein Teil des aktiven Stapels (d.h. seine Stapelwörter, die nicht die in dem
409827/0 7 85
Register A oder B gespeicherten Wörter sind), wird als Speicherstapel bezeichnet. Wenn das Register A und das Register B ein Stapelwort zu einem Zeitpunkt speichern, wenn ein weiteres Stapelwort aufgesammelt werden soll, wird eine Runter-Schieber-Operation ausgeführt. Dadurch wird das in dem B-Register enthaltene Wort in eine Stelle in dem Modul-Speicher geschrieben und das in dem Α-Register enthaltene Wort in das B-Register übertragen. Als Ergebnis der Runter-Schiebe-Operation ist das A-Register.zum Speichern des aufzusammelnden Stapelwortes zur Verfügung, das das neue Stapelkopfwort wird. Als weiteres Ergebnis der Runter-Schiebe-Operation ergibt sich, daß das in den Modulspeicher aus dem B-Register überschriebene Wort zu dem Speicherstapelkopfwort wird. Jede Runter-Schiebe-Operation führt dazu, daß ein Stapelwort zu dem Speicherstapel hinzugefügt wird, oder, was gleichbedeutend ist, daß die Gesamtzahl der Speicherstapelwörter zunimmt.
Der Stapelmechanismus liest das Speicherstapelkopfwort aus dem Modulspeicher und speichert es in das B—Register während einer sogenannten Hervorhol-Operation. Jede Hervorhol-Operation führt dazu, daß ein Stapelwort aus dem Speicherstapel entnommen wird oder, was gleichbedeutend ist, daß die Gesamtzahl der Speicherstapelwörter abnimmt.
Somit dehnt sich ein Speicherstapel aus, wenn eine Runter-Schiebe-Operation ausgeführt wird, und schrumpft zusammen, .wenn eine Hervorhol-Operation ausgeführt wird.
Der Stapelmechönismus weist weiter Einrichtungen auf, die verfolgen, wo sich das Stapelkopfwort befindet. Dazu weist der Stapelmechanismus ein S-Register 64 auf, das auf die Speicher stelle zeigt, die das Speicherstapelkopf-
wort enthält. Dies ist das Wort, das durch die letzte, oder, was gleichbedeutend ist, durch die -zuletzt abgelaufene Runter-Schiebe—Operation dem Speicherstapel
hinzuführt wurde, und das noch nicht durch eine Hervorholoperation aus dem Speicherstapel entfernt wurde. Weiter umfaßt der Stapelmechanxsmus dazu eine Besetzungsanzeigeeinrichtung, die dem Register A und dem Register B zugeordnet ist. Wenn das Stapelkopfwort in dem B-Register 57 gespeichert ist, befindet sich ein diesem
zugeordnetes Flip-Plop BROF 65 in einem "1"-Zustand und liefert eine 1 als ein BRO-Signale. Zur gleichen Zeit
befindet sich ein dem A-Register zugeordnetes Flip-Flop (AROF65) in einem "O"-Zustand und liefert eine Null als ein ARO-Signal. Wenn das Stapelkopfwort in dem A-Register 55 gespeichert ist, ist sowohl ARO wie auch BRO jeweils gleich 1. Wenn das Stapelkopfwort in keinem der beiden Register, sondern in dem Modulspeicher gespeichert ist, sind sowohl ARO wie auch BRO jeweils gleich 0.
Die Stapelwörter sind zu unterscheiden von einer Liste, die nach dem Prinzip aufgesammelt wurde, daß der zuerst erhaltene Posten zuletzt ausgegeben wird (LIFO-Basis). Der Ausdruck "runterschieben" wird oft im Zusammenhang mit einem Speicher benutzt, der auf einer reinen LIFO-Basis arbeitet. Barron beschreibt einen Stapel in dem oben erwähnten Buch wie folgt: "Der Ausdruck Stapel wird gewöhnlich für solche Speicher verwendet, bei denen zusätzlich zu dem Zugreifen auf den an der Spitze befindlichen Posten die im Inneren befindlichen Posten berücksichtigt werden. In genauerer Formulierung ist ein Stapel ein Speicher, der auf dem Runterschieb-Prinzip insofern arbeitet, als das Hinzufügen und die Wegnahme von Posten betroffen sind, und in welchem die nicht an der Spitze stehenden Posten dadurch zugreifbar sind, daß ihre Stellung relativ zu einem von wenigen Zeigern angegeben wird."
Eine derartige "kleine Anzahl von Zeigern" liegt in dem Datenprozessor 5 in Form der 32 Anzeigeregister DO, Dl... und D31 ( von denen nicht alle dargestellt sind ) vor, unter Einschluß eines Stapelbasisregisters BOSR 68 und eines F-Registers 69. Jedes der Anzeigeregister zeigt auf ein Steuerwort, das als ein Stapelsteuerwort MSCW bezeichnet wird. Das F-Register zeigt ebenfalls auf ein Steuerwort, das entweder ein unvollständiges Stapelsteuerwort IMSCW oder ein MSCW sein kann. Die Formate des IMSCW und des MSCW sind in Fig. 2 wiedergegeben.
Jedes MSCW ist in den Stapel zur Markierung des Anfangs eines Stapelfeldes eingefügt, an welchem die Ausführungsaufzeichnung einer Prozedur (=eines Programms) beginnt. Jedes MSCW enthält ein LL-FeId, das den lexikographischen Pegel des Programms anzeigt, dessen Ausführungsaufzeichnung mit jenem MSCW beginnt. Ein LL-Register 71 ist in
409827/0785
dem Datenprozessor zum Speichern des lexilcographischen Pegelwertes des in Ausführung befindlichen Programms vorgesehen.
Die US-Patentschrift 3 461 434 beschreibt im einzelnen die Art und Weise, in der die in den Anzeigeregistern gespeicherten Zeiger in Verbindung mit speziellen Programmbefehlen verwendet werden, um die absoluten Adressen von StapelWörtern abzuleiten· Dabei enthält der Datenprozessor 5 ein Anzeigeregister-Auswahlregister DRSR 73 und eine Auswahlmatrix SM 75 zur Adressierung der Anzeigeregister. In der US-Patentschrift 3 548 384 ist im einzelnen beschrieben, auf welche Weise die Zeiger in den Anzeigeregistern gespeichert werden.
Man betrachte jetzt die Wortarten, die in einem Stapel gespeichert sind. Die Tabelle I gibt eine Erklärung der verschiedenen Symbole, die zur Bezeichnung der Felder in den Wörtern aus Fig. 2 verwendet werden.
TABELLE I Symbol Symbolbeschreibung
TAG Bezeichnet die Wortart
ADDRESS Dies ist eine vollständige absolute
Adresse. Tn einerr Fer-ment-Descriptor zeigt dieses Feld auf den Anfang eines Programmsegments. In einem Daten—Des— • criptör zeigt dieses Feld auf .den Anfang eines. Feldes.
DF Ein Differenz-Wert, der die Anzahl von
StapelWörtern anzeigt, die während der Ausführung eines Programmsegments
409827/0785
aufgesammelt wurden. Die Adresse des Wortes, in welchem das Feld angetroffen wird, minus dem Inhalt dieses Feldes gibt die Adresse eines MSCW. Die DF-Felder dienen dazu, die MSCWs untereinander zu verbinden und eine Stapel-Aufbauliste zu liefern. Irn einzelnen verbindet jedes DF-FeId das Wort, zu dem es gehört, mit dem aufbaumäßiq früheren IMSCW oder MSCW.
DISP Ein Verschiebungsfeld oder ein Zuwachs
wert, der bei Addition zur Basisadresse die Adresse eines MSCW ergibt. Die mit dem DISP-FeId in einem speziellen MSCW verwendete Basisadresse ist die Adresse der Stelle, die zum Speichern des TOSCW für den Stapel zugewiesen ist, dem die gleiche Nummer wie.das STKNR-FeId aus dem speziellen MSCW zugeordnet ist. Die DISP Felder dienen zur Verkettung der MSCWs untereinander und bilden eine Adressenumgebungsliste. Im einzelnen verbindet jedes DISP-FeId das MSCW, zu dem es gehört, mit einem MSCW, das ein inkrementell kleineres LL-FeId hat und das die Ausführungs-Aufzeichnung eines globalen Blockes markiert.
• LL Ein Wert, der den lexikographischen Pegel
eines Programmsegments anzeigt. In einem M§CW zeigt dieses Feld den lexikographischen Pegel des Programmsegments an, dessen Ausführungsaufzeichnung durch das MSCW markiert ist. In einem RCW zeigt
409827/078$
dieses Feld den lexik'ographischen Pegel des Programmsegments an, das von anderen Feldern in denr RCW angezeigt wird.
STKNR Ein Stapelnummerfeld, das eine relative
Adresse darstellt. Sie wird kombiniert mit der Basisadresse eines StapelVektorfeldes und ergibt die Adresse eines Datendescriptors, der auf einen Stapel zeigt.
DS Ein weiteres Stapelfeld. Dieses Feld wird
geprüft, während die Anzeigeregister auf den neuen Stand gebracht werden. Wenn DS gleich Null ist, ist die in Verbindung mit dem DISP-FeId zu verwendende Basisadresse bereit in BOSR68 gespeichert. Wenn DS gleich 1 ist, muß die Adresse durch Verwendung des STKNR Feldes erst gewonnen werden.
SDI Ein Segmentdescriptor-Index. Dies, ist
eine relative Adresse, die auf einen . 'Segment—Descriptor zeigt. Ein Ein—Bit-Teilfeld des SDI zeigt an, ob die Basisadresse für diese relative Adresse die DO oder die in Dl gespeicherte Adresse ist.
E Ein Umgebungsanzeiger. Dies ist ein Ein-
Bif-Feld, das anzeigt, ob das Wort, zu dem es gehört, ein IMSCVJ oder ein MSCW ist.
PIR, PSR Werte, die zur Einstellung der Register
PIR und PSR dienen, so daß sie auf den ersten Programmbefehl zeigen, der auszuführen ist, wenn die Steuerung eineist anderen Programmsegment übertragen isto
409827/078S
11, £ Dies stellt eine Adressenkopplung dar.
Der 11-Teil ist der lexikoaraphishe Pegel eines speziellen Postens und zeict auf ein spezielles Anzeigeregister. Der
<f—Teil ist ein Zuwachswert oder eine relative Adresse,<f kann zur Adresse der in dem Anzeigeregister gespeicherten Adresse addiert werden, auf die durch 11 gezeigt wird, um eine absolute Adresse -"κ* > zu erhalten.
DSF Eine relative Adresse, die bei Addition
zur Adresse des TOSCW, zu dem sie gehört, die Adresse des Kopfwertes jenes Stapels ergibt.
DFF Eine relative Adresse, die bei .'TubtrakHon
von einem Stapelkopfwort die Adresse des obersten MSCW in dem stapel ergibt.
SYL Dies ist eine Programms übe.
Der Programmbefehlsvorrat des Systems 1 weist Brogrammbefehle auf, die Wertaufrufe VALC, Namenaufrufe NAMC, Stapelmarkierung MKS sowie die bereits erwähnten Befehle ENTER, EXIT und RETURN heißen. Der VALC-Befehl und die Art seiner Ausführung ist im einzelnen in Fig. 3 der US Patentschrift 3 546 677 beschrieben. Danach weist der VALC-Befehl ein Adressen-Kopplungsfeld auf, das sich auf eine Stelle in dem Stapel bezieht, und enthält ein Feld, das 0EC29 anweist, ein Wort in der in bezug genommenen Stelle herauszuholen und in das A-Register 55 zu bringen. Fig. 5 zeigt die Sequenz der Arbeitsschritte bei der Ausführung des NAMC-Befehls. Der NAMC-Befehl enthält ein Adressenkopplungsfeld und enthält ein Feld, das OEC29 anweist, dieses Adressenkopplungsfeld in einen Teil des A-Registers 55 zu speichern.und ein IRW-Zeichen in einen
OWGINAL INSPECTED
409827/0785
anderen Teil des A-Registers 55 zu speichern. Auf diese Weise bewirkt der NAMC-Befehl, daß IRW an den Kopf des Stapels gebracht wird. Fig. 4 zeigt die Sequenz der Arbeitsschritte für die Ausführung des MKS-Befehls. Der MKS-Befehl beauftragt OEC29, ein IMSCW an den Kopf des Stapels zu bringen. Man betrachte nun Fig. 3 der vorliegenden Anmeldung, in der mehrere Speicherfelder des Modulspeichers 3 in Form einer Spalte dargestellt sind. Jedes Rechteck in der Spalte repräsentiert eine bestimmte adressierbare Speicherstelle.
In Fig. 3 zeigt ,ein Buchstabe oder ein Acronym und ein daneben befindlicher Pfeil, der auf ein Rechteck zeigt, daß ein Register auf die dargestellte Speicherstelle zeigt. Beispielsweise zeigt in Fig. 3 der Pfeil neben dem Acronym DO auf das mit MSCWO bezeichnete Rechteck. Das bedeutet, daß das Anzeigeregister DO einen Zeiger speichert, der auf eine Speicherstelle eines MSCW zeigt.
Fig. 3 erläutert einen speziellen Betriebszustand. Unter anderem erläutert Fig. 3 den Hauptteil eines Stapels, ein StapelVektorfeld, ein Segment-Wörterbuch sowie einen Arbeitsstapel, jeweils entsprechend der US-Patentschrift 3 546 677. . '
Der S.tapelhauptteil (der identisch zur Control Table'aus der US-Patentschrift 3 546 677 ist) besitzt an seiner Basis ein Stapelkoof-Steuerwort TOSCWO. Fig. 2 zeigt das Format eines TOSCW. Der Stapelhauptteil ist in Speicherstellen des Speichermoduls 7 gespeichert. In diesem Beispiel ist TOSCWO en einer Stelle gespeichert, deren Adresse gleich 0 ist.
In dem Stapelhauptteil sind gespeichert ein MSCW (MSCWO),
ORIGINAL INSPECTED
- ' - 409827/Ό7 8 6
ein Datendescriptor DDV, ein PCW (PCWl) sowie ein Segment-Descriptor SDl. In diesem Beispiel ist MSCWO an einer .Stelle mit einer Adresse gleich 20 gespeichert. Das Anzeigeregister DO zeigt auf MSCWO. Die absolute Adresse der DDV speichernden Speicherstelle ist gleich der Summe aus 2 und der in dem Anzeigeregister DO Gespeicherten absoluten Adresse, in diesem Beispiel also qleich 22. DDV enthält ein Adressenfeld, das die Basisadresse des Stapelvektorfeldes bezeichnet. Dementsprechend wird DDV der Stapelvektor-Descriptor bezeichnet. In diesem Beispiel ist das Adressenfeld gleich 4000. Die absolute Adresse der Speicherstelle, die PCW 1 speichert, ist gleich der Summe aus 3 und der in dem Anzeigeregister DO gespeicherten absoluten Adresse, die in diesem Beispiel gleich 23 ist. PCWl enthält verschiedene Felder, die eine Information über das primäre Unterbrechungsproqramm PIHP qeben. Dementsprechend wird PCWl bezeichnet als PIHP PCW. Das Stapelnummerfeld SN ist gleich 0, wodurch angezeigt ist, daß dieses PCW in einem Stapel gespeichert ist, der die Nummer 0 trägt. Die PSR und PIR-Felder sind jeweils 0, wodurch angezeigt wird, -daß der Anfangsprogrammbefehl- des PIHP die erste Silbe des Proqrammwortes enthält, das an der Basisadresse eines Feldes von Speicherstellen gespeichert ist, die das PIHP speichern.
Das N—Feld ist gleich 1, wodurch anctezeigt wird, daß das PIHP in dem Steuerzustand statt im Normalzustand ausgeführt werden soll. Das SDI-FeId besitzt zwei Teile (d.h. 0^5). Der erste Teil zeigt an, daß der zweite Teil als eine relative Adresse bezüglich einer Basisadresse zu verwenden ist, die durch das Anzeigeregister DO gegeben ist, statt bezüglich einer Basisadresse, die durch das Anzeigeregister Dl gegeben ist. In diesem Beispiel zeigt das SDI-FeId auf eine Speicherstelle, die eine Adresse
409827/0785
gleich 25 hat und SDl speichert (der Segmentbezeichner für PIHP).SD 1 enthält ein Adressenfeld, das gleich 5000 ist. Das StapelVektorfeld besitzt an seiner Basis (bei einer Adresse von 4000) einen Datendescriptor (DDO), der ein Adressenfeld gleich 0 enthält. Somit zeigt DDO auf TOSCWO an der Basis des Stapel-Hauptteiles. An einer Speicherstelle mit einer Adresse 4001 steht ein Datendescriptor DDl, der ein Adressenfeld gleich 6988 enthält, das die absolute Adresse eines TOSCW 1 ist. An einer Speicherstelle mit einer Adresse gleich 4002 steht ein Datendescriptor DD2, 'der ein Adressenfeld von 29.988 enthält, was die gleiche Adresse ist, die auch in BOSR68 gespeichert ist.
Das PIHP ist in einem Feld von Speicherstellen gespeichert, das eine Basisadresse 5000 hat, auf die von dem Segmentdescriptor SDl bei 25 gespeichert, gezeigt wird.
Das Segment-Wörterbuch enthält■TOSCWl, das b ei 6988 gespeichert ist; ein MSCW (MSCWl), das bei 7000 gespeichert ist; einen Segment-DescriDtor, der bei 7.030 gespeichert ist und ein Adressenfeld gleich 60.000 enthält; sowie einen Segment-Descriptor, der bei 7.040 gespeichert ist und ein Adressenfeld gleich 70.000 enthält.
In diesem Beispiel wurde der Arbeitsstapel in Speicherstellen über derjenigen Speicherstelle (29.988) aufgesammelt, auf die von dem BOSR68 gezeigt wird. Ein Programmcode-Segment A ist das Code-Segment, daß dem äußeren- Block eines Objektprogramms entspricht. Ein Feld von Speicherstellen mit einer Basis icresse aleich 60.000 speichert ein Anfangs-Programmwort, ein End-Programmwört sowie mehrere Zwischen-Programmwörter, die zusammen das Programm-Code-Segment A bi]den.
ORIGINAL INSPECTED
4ÖSB27/078S
In diesem Beispiel wurde das Programm-Code-Soqment A teilweise ausgeführt. Während einer derartigen Teil-Ausführung bewirkte eine Programmaufrufsequenz, die einen Teil des Programmsegments A bildet, den Eintritt in ein Programm-Code-Segment B. Ein Speicherstellenfeld mit einer Basisadresse von 70.000 speichert ein Anfangs-Programmwort, ein End-Programmwort und mehrere Zwischenprogrammwörter, die zusammen das Proqrammcode-Segment B bilden.
Die Ausführungsaufzeichnung der Programmcode-Seqmente A und B ist in dem Arbeitsstapel gespeichert. An einer Speicherstelle mit einer Adresse von 30.000 ist ein MSCW gespeichert, das den Beginn der Ausführunqsaufzeichnung bzw. des Ausführungssatzes von Segment A markiert. An einer Speicherstelle mit der Adresse 30.015 ist ein MSCW gespeichert, daß den Anfang des Ausführungssatzes ( = Ausführungs-Aufzeichnung) des Segmentes B markiert und die folgenden Felder enthält. Seine verschiedenen Stapel-(DS) und Stapelnummer-(SN) Felder sind jeweils 0 und 2. Das Verschiebungsfeld (DISP) is gleich 12. Man bemerke, daß 12 plus 29.988 (gespeichert in BOSR68) gleich ist 30.000,der Adresse des MSCW, das den Beginn des Ausführungssatzes von Segment A markiert. Sein LL-FeId ist 3, wodurch angezeigt wird, daß das Segment B auf dem lexikographischen Pegel 3 abläuft. Sein DF-FeId ist 15. Man bemerke, daß 30.015 die Adresse des MSCW, das den Anfang des Ausführungssatzes von Segment B bezeichnet, minus 15 gleich 30.000 ist, die Adresse des vorherigen MSCW.
An eine Speicherstelle mit der Adresse 30,016 ist ein RCW- gespeichert, daß die folgenden Felder enthält. Seine PSR und PIR Felder sind jeweils 0 bzw. 30.
40 9827 /07 8 S ohonal inspected
Diese Felder zeigen den Rückkehrpunkt an, wo die Ausführung des Segments A fortgeführt werden soll, nachdem das Segment B verlassen oder aus diesem zurückgekehrt wurde. Sein SDI-FeId ist 1,30. Dieses Feld zeigt an, daß der Segment-Descriptor in dem Segment-Wörterbuch an der relativen Adresse 30 gespeichert ist. Man bemerke, 30 plus 7.000 ( die Adresse von MSCW 1 ) gleich 7.030 (die Adresse des auf das Segment A zeigenden Segment-Descriptors) ist.
In diesem Beispiel wurde die Ausführung des Segments B unterbrochen. Demzufolge hat eine mit der Hardware hergestellte Aufrufsequenz den Eintritt in das TIHP veranlaßt. Wenn solche ein fabrikatorisch hergestellter Aufruf erfolgt, erzeugt die Steuereinheit des Datenprozessors intern Pseudo-Programmbefehle, die eine programmatische Aufrufsequenz nachbilden. Eine ins einzelne gehende Beschreibung der Art und Weise, in der eine Rechner—Steuereinheit intern Pseudo-Programmbefehle erzeugen kann, findet sich in der US-Patentschrift 3 566 364.
Als Ergebnis aus einer cerart vorfabrizierten Aufrufsequenz ergibt sich, daß an einer Speicherstelle mit der Adresse 30.025 ein MSCW sich befindet, daß den Anfang eines Ausführunqssatzes (der erste rekursive Pegel) des PIHP markiert. Das S-Register 69 und das Anzeigeregister Dl zeigen jeweils auf diese Stelle. Dieses MSCW besitzt die folgenden Felder. Sein DS- und sein SN-FeId sind jeweils 1 bzw. 0 und zeigen dadurch an, daß sein DISP-FeId nicht relativ zur gegenwärtigen Einstellung des BOSR68 zu nehmen ist. Sein DISP-FeId ist 20. Man bemerke, daß PO plus 0 (die Adresse des TOSCWO) gleich 20 (die Adresse des MSCWO) ist. Sein LL-FeId ist 1 und zeigt dadurch an, daß aas PIHP auf einem lexikographi-
409827/078S
sehen Peqel von 1 läuft. Sein DF-FeId ist 10. Man bemerke, daß 30.025 (die Adresse dieses MSCW) minus 10 gleich 30.015 (die Adresse des aufbaumäßig früheren MSCW) ist. An einer Stelle mit der Adresse 30.026 findet sich ein RCW, daß die folgenden Felder enthält.-Seine PSR- und PIR-Felder sind Null bzw. 50 und zeigen dadurch den Rückkehrpunkt an, an dem die Ausführung des Segments B weitergeführt werden sollte. Sein FL-FeId ist 3 und zeigt dadurch an, daß nach der Wiederaufnahme das Segment B auf einem lexikographischen Pegel von 3 laufen sollte. Sein SDI-FeId ist 1,40 und zeigt dadurch an, daß der Segment-Descriptor für das Segment B in dem Segment-Wörterbuch sich an der relativen Adresse 40 findet.
Die Ausführung des PIHP ist teilweise abgeschlossen und das oberste Wort seines Ausführungssatzes ist an einer Stelle mit der Adresse 30.035 gespeichert. Das S-Register 64 zeigt auf diese Speicherstelle.
In diesem Beispiel wird ein Unterbrechungssignal von der Unterbrechungsteuerung·IC 27 an der Stelle festgestellt, an der das bei 5025 gespeicherte Programmwort gerade geholt werden soll. Nach Feststellung des Unterbrechungssignals erzeugt IC 2 7 eine Aufrufsequenz, die einen Eintritt in das PIHP verlangt. Die vorgefertigte Aufrufsequenz bildet die programmatische Aufrufsequenz nach, die beim Eintritt in irgendeine Prozedur (Programm) beteiligt ist. So enthält die Aufrufsequenz einen MKS-Befehl, einenNAMC-Befehl, eine Reihe von VALC-Befehlen und einen ENTER-Befehl.
,Man betrachte nun Fig. 4, in welcher das Flußdiagramm die Abfolge der Arbeitsschritte erläutert, die bei Ausführung des MKS-Befehls auftreten. Die MKS-Operation besitzt zwei Phasen. Die erste"Phase ist eine Stapelein-
ORiaiNAL
403827/0785
richtphase (STK ADJ (0,O)). In dieser ersten Phase -werden die Wörter, wenn überhaupt Wörter in den Registern A und B gespeichert sind, in den Speicherstapel runtergeschoben. In der zweiten Phase wird IMSCW in den Speicher stapel runtergeschoben und das F-Register wird so auf den neuesten Stand gebracht, daß es auf dieses neue IMSCW zeigt.
Während der ersten Phase bildet OEC29 in Abhängigkeit von den ARO-und BRO-Signalen die notwendigen Steuersignale zur Einstellung des Stapels. Das Steuersignal Tl gibt das in dem A-Register 55 gespeicherte Wort auf die Sammelleitung 51 und stellt AROF 66 zurück. Das Steuersignal T2 gibt das Wort aus der Sammelleitung 51 in das B-Register 47 und setzt BROF 65. Wenn also die Steuersignale Tl und T2 gleichzeitig erzeugt werden, wird ein in dem Α-Register gespeichertes Wort in das B-Register übertragen. Dies wird ausgedrückt in der Form A<$—B, AROF<ζ— 0, und BROF <— 1.
Sodann wird das Steuersignal T3 auf das S-Register 64 gegeben^ das auf das Speicherstapelkopfwort zeigt. In der bevorzugten Ausführungsform der Erfindung befindet sich in dem S-Register ein Auf-/Abzähler, und der Zeiger, den es speichert, ist eine vollständige absolute Adresse. Jedes mal, wenn ein Wort in dem Speicherstapel runtergeschoben wird, wird'das Signal T3 auf das S-Register zum Hochzählen (U) gegeben. Das Steuersignal T4 gibt die absolute Adresse die von dem S-Register gespeichert wird, auf die Sammelleitung 42, die die absolute Adresse zu deitiMARl? führt. Ein Schreibsteuersignal (W) löst einen Schreibzyklus in ■ dem Modulspeicher aus. Das Steuersignal T5 gibt ein in dem
403827/018S'
B-Register gespeichertes Wort auf die Sammelleitung 51 und stellt BROF65 zurück. Wenn dementsprechend das Steuersignal T3 erzeugt wird und danach die Steuersignale T4, W und T5 gleichzeitig erzeugt werden, wird ein in dem B-Register gespeichertes Wort in den Modulspeicher eingeschrieben und wird das neue Wort am Kopf des Speicherstapels. Dies wird geschrieben in der Form S<r-S+1 und M(S)-(Sr- B und BROF<^-O. Die an der ersten Phase beteiligten Steuersignale werden in zyklischer Weise erzeugt, bis die Signale ARO und BRO jeweils gleich 0 sind, zu welchem Zeitpunkt die erste Phase abgeschlossen ist. Man betrachte nun wiederum Fig. 3 und nehme an, daß die Register A und B jeweils ein Wort speichern, zu dem Zeitpunkt, an dem das Unterbrechungssignal festgestellt wurde. In diesem Fall veranlaßt OEC29 in Abhängigkeit von dem Pseudo MKS-Signal, das von IC27 erzeugt wird, während dieser ersten Phase, daß diese beiden Stapelwörter in den Adressen 30 036 und 30 037 gespeichert werden und daß das S-Register derart auf den neuesten Stand gebracht wird, daß es auf 30 037 zeigt.
Während der zweiten Phase wird das Steuersignal T3 erneut erzeugt, wodurch die in dem S-Register enthaltene Adresse um eine Einheit weitergestellt wird. OEC29 erzeugt als nächstes die Steuersignale T6, T7 und SUB. Diese Signale beauftragen den Adressenaddierer 39, die Adresse des DF-Feldes für das neue IMSCW zu berechnen. Das Steuersignal T6 gibt die in dem S-Register gespeicherte Adresse auf die Eingangssammelleitung 40, und das Steuersignal T7 gibt die in dem F-Register gespeicherte Adresse auf die EingangsSammelleitung 41. Das SUB-Signal gibt das berechnete DF-FeId auf einen Teil der Sammelleitung 51. Außerdem erzeugt OEC29 ein IMSCW-Bezeichnungsfeld (TAG-FeId) und ein Steuersignal T8. Das erzeugte tag-Feld wird von einem Teil
40 9827/0786
— 3b —
der Sammelleitung 51 mitgeführt. Das Steuersignal T8 gibt das erzeugte tag-Feld in einen Teil und das DF-FeId in einen anderen Teil des C-Registers. Dies wird ausgedrückt durch C^-IMSCW. Man betrachte nun wiederum das Beispiel aus Fig. 3, wobei die Weiterstellung um eine Einheit von dem Steuersignal T3 erzeugt, das S-Register auf 30 038 zeigen läßt und daher ist das berechnete DF-FeId gleich 13 (d.H. 30 038 - 3O 025).
Nachdem das IMSCW in das C-Register gespeichert wurde, erzeugt OEC29 die Steuersignale T9, T4 und W gleichzeitig. Das Steuersignal 9 läßt das IMSCW in dem C-Register auf die Sammelleitung 51 gelangen, die das IMSCW nach MIR15 führt. Das Steuersignal T4 gibt die absolute Adresse in dem S-Register auf die Sammelleitung 42, die die absolute Adresse auf MAR 17 gibt. Das Steuersignal W leitet einen Schreibzyklus des Modulspeichers ein. Somit wird das IMSCW in den Modulspeicher eingeschrieben und wird ein neues Wort am Kopf des Stapels. Dies wird ausgedrückt in der Form M(S)<c— C. Schließlich werden die Steuersignale T4 und TlO gleichzeitig erzeugt. Das Steuersignal T4 gibt die absolute Adresse in dem S-Register auf die Sammelleitung 42 und das Steuersignal TlO gibt die absolute Adresse in das F-Register 69. Dies wird ausgedrückt in der Form F<£~S. Als Ergebnis dieser Operation zeigt in diesem speziellen Beispiel das F-Register auf 30 038.
Man betrachte nun Fig. 5, deren Flußdiagramm die Abfolge der Arbeitsschritte bei der Ausführung des hardware-mäßig verdrahteten und erzeugten NAMC-Befehls erläutert, der von IC27 erzeugt wurde, und zwar nach Abschluß der Pseudo-MKS-Operation. Als Einleitungsphase wird STK ADJ·(0,0)-Operation ausgeführt, um sicherzustellen, daß der Register A und B beide leer sind. OEC 29 erzeugt dann ein IRW-tag, ein LL-
409827/078$
Feld mit dem Wert O und ein ό -Feld mit dem Wert 3. Diese drei Felder werden von der Sammelleitung 51 geführt. Außerdem erzeugt OEC29 das Steuersignal T2, das diese drei Felder in das B-Register gibt. Dies wird ausgedrückt in der Form B.TAG <— IRW TAG, B.LL^-O, und B.<T*- 3. Der LL-Wert von O zeigt an, daß die in dem Anzeigeregister D O gespeicherte Adresse als Basisadresse herangezogen werden soll. In dem speziellen Beispiel speichert DO die Zahl 20. Der <P -Wert ist eine relative ■Adresse. Die Summe aus 20 und 3 ergibt 23, was die Adresse von PCWl ist. Somit sieht man, daß diese,NAMC-Sequenz veranlaßt, daß einIRW in dem B -Register gespeichert wird und daß dieses IRW auch PCWl zeigt.
Nachdem das IRW in dem B-Register gespeichert ist, findet der nächste Teil der Aufrufsequenz statt. IC27 ereugt einen Parameter (Pl) und gibt ihn auf die Sammelleitung 51. Gleichzeitig erzeugt OEC29 ein Steuersignal TIl, das Pl in das Α-Register gibt und ferner AROF66 setzt. Danach wird eine Runterschiebeoperation ausgeführt, wodurch das IRW in dem B-Register in den Modulspeicher eingeschrieben wird (bei 30039 in diesem Beispiel)·, und Pl in das B-Register übertragen wird, so daß das A-Register zum Speichern eines weiteren Stapelwortes zur Verfugung steht. Dann erzeugt IC27 einen weiteren Parameter (P2) und speichert ihn in das Α-Register in der bereits oben beschriebenen Weise. Pl und P2 sind auf solche Weise kodiert, daß sie die Art der verbleibenden Unterbrechungsbedingung bezeichnen.
Man betrachte nun Fig. 6, deren Flußdiagramm die Sequenz der Arbeitsschritte bei der Ausführung des hardware-erzeugten Pseudo-ENTER-Befehls erläutert. In der US-Patentschrift 3 548 384 sind im einzelnen die Schritte beschrieben, die
409827/078$
bei der Ausführung des programmatischen ENTER-Befehls beteiligt sind.
Die Ausführung des Pseudo-ENTER-Befehls umfaßt mehrere Phasen. Diese Phasen sehen eine Verwendung des IRW zur 'Gewinnung eines PCW„ die Verteilung verschiedener Felder des PCW in geeignete Register, die Erzeugung eines RCW und das Passieren des RCW in den Stapel, das auf-den-neuesten-Stand-bringen der Adressenumgebungsliste durch Umx-iandeln des IMSCW in ein MSCW, das aufden-neuesten-Stand-foringen der Anzeigeregister, die Verwendung des SDX-Feldes des PCW zur Gewinnung des Segment-Descriptors■für das neue Programmsegment sowie das Setzen des PBR4 3 mit dem Adressenfeld des gewonnenen Segment-Descriptors vor, so daß es auf die Basis des Programmsegments zeigt, in das gerade eingetreten wird.
Wie in*Fig. 6 angedeutet, itfird in der ersten Phase eine Stapeleinricht-Operation ausgeführt, um sicherzustellen, ■ daß die Register A und B beide leer sind. Danach wird das durch die oben beschriebene NAMC-Operation konstruierte IRW aus dem Modulspeicher gelesen und in das C-Register gespeicherte Das bedeutet, daß C<f—M(F+1)„, Dazu erzeugt OEC29 Steuersignale T7, T 12, R und T 8. Das Steuersignal T7 gibt die Adresse in dem F-Register auf den Adressenaddierer über die Sammelleitung 41. Das Steuersignal 12 läßt den Adressenaddierer diese Adresse um 1 vergrößern und die vergrößerte Adresse auf MARl7 über die Sammelleitung 42 geben. Das Steuersignal R löst einen Lesezyklus aus und das IRW wird in das MIRl5 gespeichert. Das Steuersignal· T8 gibt dann das IRW in das C-Register.
Danach erzeugt OEC29 die Steuersignale T13, T14, T15 und ADDo Das Steuersignal T 13 überträgt das LL-FeId d©s
IRW, das in dem C-Register gespeichert ist, in das DRSR73. Eine Sammelleitung 77, die das C-Register mit DRSR verbindet, führt dieses LL-FeId. Die Auswahlmatrix SM75 erzeugt in Abhängigkeit von dem Steuersignal Tl4 und dem LL-FeId in dem DRSR73 ein Leseauswahlsignal DOR, das die in dem Anzeigeregister DO gespeicherte Adresse auf den Adressenaddierer 39 über die Sammelleitung 40 geben läßt. Das Steuersignal T15 gibt das .^ -Feld des IRW in den C-Register auf die Sammelleitung 41, die es zu dem Adressenaddierer 39 bringt. Das ADD-Steuersignal läßt den Adressenaddierer 39 DO+ a berechnen. Danach erzeugt OEC29 das Steuersignal R, um einen Lesezyklus einzuleiten. In diesem Beispiel wird der Inhalt der Speicherstelle mit der Adresse 23 ausgelesen und das darin gespeicherte PCW in das MIR15 übertragen. Danach erzeugt OEW29 das Steuersignal T8, das das PCW in das C-Register weitergibt. Dies wird dargestellt in der Form CF~M(D0+3) .
Die nächste Phase des Pseudo-ENTER-Befehls umfaßt den Aufbau eines RCW und die Verteilung der verschiedenen Felder des PCW in die geeigneten Register.
Zum Aufbau des RCW erzeugt OEC29 ein RCW-tag-Feld und gibt es auf die Sammelleitung 51. Gleichzeitig erzeugt OEC29 Steuersignale T8, T 16, Tl7 und Tl8. Das Steuersignal T8 gibt die von der Sammelleitung 51 geführte Information in das C-Register. Das Steuersignal T 16 gibt die verschiedenen Felder des PCW in dem C-Register auf verschiedene Teile einer Sammelleitung 79. Das Steuersignal T17 gibt die Felder, die von den verschiedenen Teilen der Sammelleitung 79 geführt werden, in die verschiedenen Register. Das Steuersignal T18 gibt die in diesen verschiedenen Registern gespeicherten Felder auf die
409827/0785
Sammelleitung 51 zur übertragung in das C-Register. Im Ergebnis werden die folgenden Informationsfeider ausgetauscht. DasSTKNR-Feld des PCW wird in das SNR-Register 63 übertragen, d.h. SNR<r- CSTKNR. Das PSR-FeId des PCW wird in das PSR-Register 37 übertragen und die frühere Einstellung des PSR-Registers wird ein Teil des aufzubauenden RCW. Dies wird ausgedrückt in der Form PSR "^C. PSR. Das SDI-FeId des PCW wird in das Programmwörterbuch-Register PDR8O übertragen und die vorherige Einstellung des PDR-Registers wird ein Teil des aufzubauenden RCW. Dies wird ausgedrückt in der Form PDR ^ -Das N-FeId des PCW wird in ein Normalzustand/Steuerzustand-Flip-Flop N/C82 übertragen und die vorhergehende Einstellung des N/C82 wird ein Teil des aufzubauenden RCW. Dies wird ausgedrückt in der Form N/C "^CN. Das LL-FeId des PCW wird in das LL-Register 71 übertragen und die vorhergehende Einstellung des LL-Registers wird ein Teil des aufzubauenden RCW. Dies wird ausgedrückt in der Form LL t
Nach Abschluß des Aufbaues des RCW erzeugt OEC29 Steuersignale, die veranlassen, daß das RCW zum Ersatz des in ihm enthaltenen IRW in dem Modulspeicher gespeichert wird, und zwar während der hardware-mäßig hergestellten Aufrufsequenz. Dies wird ausgedrückt in der Form M(F+1)*— C.
In der nächsten Phase der Ausführung des Pseudo-ENTER-Befehls wird das IMSCW in ein MSCW umgewandelt. Dazu wird das IMSCW aus dem Modulspeicher ausgelesen und in das Α-Register gespeichert, d.h. A <rM(F). Um das IMSCW zu vervollständigen,, ist es notwendig, das DISP-FeId zu berechnen. Vor der Berechnung des DISP-Feldes ist es notwendig, die Basisadresse, auf welche sich das DISP-FeId bezieht, zu erhalten. Die Basisadresse für
4 0.9 827/0785
das DISP-FeId eines MSCW, das den Beginn des Ausführungssatezes des PIHP markiert, ist die Adresse des Stapelkopfsteuerwortes (TOSCWO) für den Stapelhauptteil· Dementsprechend ist es notwendig, die Adresse von TOSCWO zu erhalten. Dies wird in zwei Stufen erreicht. Zunächst wird der Stapelvektor-Deskriptor DDV ausgelesen aus dem Speicher und in das C-Register gespeichert. Das bedeutet, C^-M (DO+2). Zum zweiten wird das Adressenfeld von DDP zum Auslesen des Datendeskriptors DDO verwendet, der auf TOSCWO zeigt. Das bedeutet, C*-—M (C.ADDRESS). In dem speziellen Beispiel ist DO+2 gleich 22, was die Adresse von DDV ist. Das Adressenfeld von DDV ist 4000, was die Adresse von DDO ist. Das Adressenfeld von DDO ist 0, was die Adresse von TOSCWO ist. Somit ist in diesem Beispiel die Basisadresse 0 für das DISP-FeId, das berechnet wird.
OEC29 steuert die Ausführung dieser Phase auf folgende Weise. Steuersignale T19 und R werden erzeugt, und die Adresse in dem F-Register auf MAR17 über die Sammelleitung 42 zu geben und zu veranlassen, daß das adressierte IMSCW aus dem Modulspeicher ausgelesen und in MIR 15 gespeichert wird. Das Steuersignal TIl wird zur Übertragung des IMSCW in das Α-Register erzeugt» Danach erzeugt OEC29 ein LL-FeId, das einen Wert von 0 hat und ein J Feld, das einen Wert von 2 hat und gibt diese beiden Felder auf Teile der Sammelleitung 51. Zur gleichen Zeit erzeugt OEC29 das Steuersignal T8, das diese beiden Felder in das C-Register gibt. Danach erzeugt OEC29 Steuersignale T13, T14,T15 und ADD. Diese Steuersignale veranlassen, daß der Adressenaddierer 39 das DO und 2 empfängt und die berechnete Summe in MAR17 speichert. Gleichzeitig erzeugt OEC29 das Steuersignal R und DDV wird ausgelesen und in MIR15 gespeichert. Danach erzeuqt OEC29 das Steuersignal T8 und daraufhin wird DDV in das '!-Register übertragen. Danach
409827/078$
erzeugt OEC29 das Steuersignal T20,das das Adressenfeld von DDV auf die Sammelleitung 42 gibt und erzeugt das Steuersignal R, das einen Lesezyklus einleitet. Dadurch wird DDO aus dem Modulspeicher ausgelesen und in das MIR15 gespeichert. Danach erzeugt OEC29 das Steuersignal T2 und dadurch wird DDO in das B-Register überführt. Das bedeutet B<f—HM<D0+2). Danach erzeugt OEC29 ein LL-FeId mit dem Wert 0 und gibt es auf einen Teil der Sammelleitung 51. Gleichzeitig erzeugt OEC29 das Steuersignal T8, das das LI^-FeId in das C-Register gibt. Danach erzeugt OEC29 die Steuersignal T13 und T14, die die Adresse, die in dem Anzeigeregister DO gespeichert ist, auf den Adressenaddierer über die Sammelleitung 40 gibt. Gleichzeitig erzeugt OEC29 die Steuersignale T21 und SUB, die das Adressenfeld von in dem B-Register gespeichertem DDO auf den Adressenaddierer über die Sammelleitung 41 geben und den Adressenaddierer veranlassen, das DISP-FeId zu berechnen. Das Steuersignal TIl wird wird dann erzeugt, und veranlaßt, daß das berechnete DISP-FeId in das A-Register über die Sammelleitung 51 gespeichert wird. Gleichzeitig erzeugt OEC29 die folgenden Felder und gibt sie auf die Sammelleitung 51, so daß sie ebenfalls, in das Α-Register gelangen': ein neues Stapelfeld DS vom Wert 1, ein Stapelnummernfeld SN vom Wert 0, ein Umgebungsfeld E vom Wert IV Weiter wird gleichzeitig von OEC29 das Steuersignal T22 erzeugt, das das in dem LL-Register 71 gespeicherte LL-FeId auf einen Teil der Sammelleitung 51 gibt. Diese Übertragungen werden ausgelöst in der Form A.DISP^—B.ADDRESS -^ DO» A.DSi"- 1, A.SNifc— 0,.-A.E€—1 und A.LL€—LL. Als Ergebnis dieser Übertragungen ist das in dem Α-Register enthaltene IMSCW in ein MSCW umgewandelt worden.
Bei jetzt -vollständigem M'iCW erzeugt OEC29 Steuersignale, die zum Einschreiben des MSCW in den Mod.ul speicher an-
409827/0788
stelle des IMSCW erforderlich sind, d.h. M (F)*—A.
Die nächste Phase der Ausführung des Pseudo-ENTER-Befehls bezieht sich auf das auf den neuesten Standbringen des Anzeigeregisters Dl, so daß es auf das neue MSCW zeigt. Dies wird dadurch erreicht, daß die in dem F—Register gespeicherte Adresse in das Anzeigeregister Dl gegeben wird, d.h. Dl^-F. Dazu erzeugt OEC29 ein
LL-FeId mit dem Wert 1 und speichert es in das C-Register. Dieses LL-FeId wird dann auf DRSR73 gegeben. OEC29 erzeugt dann Steuersignale T7, und T23. Das Steuersignal T7 gibt die in dem F-Register gespeicherte Adresse auf die Sammelleitung 41. In Abhängigkeit von dem Steuersignal T23 und DRSR73 erzeugt SM75 das Auswahlsignal DlW. Daraufhin wird die in dem F-Register gespeicherte Adresse in das Anzeigeregister Dl gegeben.
Die Abschlußphase in der Ausführung des Pseudo-ENTER-Befehls betrifft die Einstellung des Programmbasis-Registers PBR43, so daß es auf die Basisadresse von PIHP zeigt. Dazu wird der Segment-Deskriptor SDl für das PIHP aus dem Modulspeicher ausgelesen und in das C-Register gespeichert, d.h. C^-M(DO+PDR). Dann wird das Adressenfeld von SDl zur Einstellung von PBR43 verwendet, d.h. PBR^-CADDRESS.
Diese Abschlußphase veranlaßt OEC29, daß die in dem
Anzeigeregister DO gespeicherte Adresse auf die Sammelleitung 40 in der bereits oben beschriebenen Weise gegeben wird. Ferner erzeugt OEC29 Steuersignale T24 und ADD, die die in dem PDR80 gespeicherte Adresse auf die Sammelleitung 41 geben und den Adressenaddierer 39 beauftragen, die Adresse von SDl zu berechnen. Dann wird ein Speicherlese-Zyklus eingeleitet und SDl wird in das C-
409827/0785
. -46-
Register in der bereits oben beschriebenen Weise gespeichert. Schließlich erzeugt OEC29 die Steuersignale T9 und T25, die das Adressenfeld von SDl aus dem C-Register in PBR 43 über die Sammelleitung 51 gelangen lassen.
Man betrachte nun etwas summarisch die Wirkungsweise dieser hardware-hergestellten Aufrufsequenz in einem speziellen Beispiel.
409827/0 785
Die Speicherstellen mit den Adressen 30 036 und 30 037 speichern jetzt Stapelwörter, die den Kopfteil des Ausftihrungssatzes des ersten rekursiven Pegels des PlHP bilden. Die Speicherstelle mit der Adresse 30 038 speichert jetzt ein MSCW, das den Beginn des Ausführungssatzes des zweiten rekursiven Pegels des PTHP markiert. Dieses MSCW besitzt die gleichen Felder wie das MSW, das bei 30 025 gespeichert ist mit der Ausnahme, daß das DF-FeId 13 beträgt* Das F-Register und das Anzeigeregister Dl wurden bereits auf den neuesten stand gebracht. Jedes speichert 30 038 und zeigt dadurch auf das neue MSCW. Die Speicherstelle 30 039 speichert ein RCW. Dieses RCW enthält diejenige Information, die zur Wiederaufnahme der Ausführung des ersten rekursiven Pegels von PIHP benötigt wird. Die Speicherstellen mit den Adressen 30 039 und 30 040 speichern Pl und P2, welche die Parameter sind, die zu dem zweiten rekursiven Pegel von PIHP gegeben wurden. Das S-Register 64 wurde bereits auf den neuesten Stand gebracht. Es speichert 30 040 und zeigt dadurch auf P2, das jetzt das Stapelkopfwort ist. Schließlich wurden die Programmsegment-Zeigeeinrichtungen (PDR41, PBR43, PIR45 und PSR3.7) auf den neuesten Stand gebracht und zeigen auf die Anfangssilbe von PIHP. Das bedeutet, PDR41 speichert das SDI-FeId 0,5; PBR43, speichert 5000, was die Basisadresse von PIHP ist und PIR45 und PSR37 speichern jeweils 0.
Nach der Ausführung des Pseudo-ENTER-Befehls wird das .Anfangsprogrammwort vonPIHP geholt. Dazu berechnet der Adressenaddierer 39 die Summe der Adressen, die in PBR 43 und PIR4 5 gespeichert sind und erzeugt im vorliegenden Beispiel eine absolute Adresse von SOOO. Unter dieser Adresse wird der Modulspeicher ausgelesen und das Anfangsprogrammwort wird in das Programmregister gespeichert. Gleichzeitig wird die in dem PIR43 ent-
409827/0785
haltene Adresse um eins weitergestellt,(durch das Steuersignal T26), so daß sie auf das nächste Programmwort des PIHP zeigt.
Man entnimmt dem Vorstehenden, daß bei Unterbrechung von PIHP eben in dieses PIHP erneut rekursiv eingetreten wird.
Man betrachte nun die Situation, wenn PIHP nicht unterbrochen wird, während der Ausführung seiner zweiten rekursiven Verwendung. In dieser Situation wird PIHP durch eine vollständige logische Ausführung hindurchlaufen und eine Unterbrechungsbedingung verarbeiten. Am Ende dieser vollständigen logischen Ausführung wird das End-Programmwort von PIHP aus dem Speicher geholt werden. Dieses Abschluß-Programmwort enthält einen EXIT-Programmbefehl.
Fig. 7 zeigt ein Flußdiagramm, das die Frequenz der Arbeitsschritte bei der Ausführung des EXIT-Befehls erläutert.
Zu Beginn wird RCW aus dem Modulspeicher ausgelesen und in das C-Register gespeichert, d»h. C<e— M(F+1). Dazu erzeugt OEC 29 Steuersignale T7-, T12 und R sowie T8„ Das Steuersignal T7 läßt die Adresse in dem F-Register auf den Adressenaddierer 39 über die Sammelleitung 41 gelangen. Das Steuersignal T12 beauftragt den Adressen-Addierer 39, eine 1 zu dieser Adresse zu addieren und die Summe auf das MAE17 zu geben» Das R-Signal leitet einen Lesezyklus ein und das Steuersignal T8 gibt das aus der adressierten Speicherstelle ausgelesene RCW in das C-Register«
Die Rückkehrpunkt Information,, die in dem RCW enthalten ist, wird dann auf verschiedene Register verteilt» Das -
bedeutet, PSRt-CPSR, PDRf-SDI, N*f— C.N und LLf-CLL. Die an diesen Übertragungen beteiligten Steuersignale sind die gleichen wie oben in Verbindung mit den gleichen Übertragungen erläutert, die bei der Ausführung des Pseudo-ENTER-Befehles beteiligt sind.
Danach wird das N-FeId des RCW geprüft, das in dem C-Register gespeichert ist. Ein N-FeId von 0 zeigt an, daß das RCW eine Rückkehrpunkt-Information über eine Objekt-Programm-Prozedur·liefert. Das bedeutet, nach der EXIT-Operation wird eine Normal-Zustands-Bearbeitung angenommen. Bei einem N-FeId von 1 wird angezeigt, daß das RCW eine Rückkehr-Punkt-Information über eine Steuerzustands-Programmprodedur liefert.
In Abhängigkeit vom Ergebnis dieser Prüfung wird ein weiter unten im einzelnen erläuterter Schritt entweder ausgeführt oder übergangen, und dann bringt OEC29 das S-Register 64 auf den neuesten Stand, so daß es auf das Speicherstapel-Kopfwort des Ausführungssatzes der Prozedur zeigt, der die Steuerung durch den EXIT—Befehl übertragen wurde. Das bedeutet das S*"—Fl. Dazu erzeugt OEC29 Steuersignale T7,T27 und T24. Das Steuersignal T7 gibt die Adresse in dem F-Register auf die Sammelleitung 41. Das Steuersignal T27 gibt diese Adresse in das S-Register. Danach läßt das Steuersignal T28 das S-Register um eine Einheit herabzählen.
Als nächstes wird dasjenige MSCW, das den Anfang des Aufzeichnungssatzes der Prozedur bezeichnet, aus der die Steuerung übertragen wurde, aus dem Modulspeicher geholt. Das gewonnene MSCW wird in das C-Register gespeichert, d.h. C^—M(F). Dazu erzeugt OEC29 das Steuersignal T19, das die Adresse in dem F-Register auf MAR17 gibt, sowie die Steuersignale R und T8, die das MSCW auslesen und
409827/078S
• -50-
in das C-Register geben.
Danach wird die Adresse des aufbaumäßig vorhergehenden MSCW berechnet. Das bedeutet, C^—F-CDF. Dazu erzeugt OEC29 die Steuersignale T29,T15,SUB und T8. Das Steuersignal T29 gibt in dem F-Register gespeicherte Adresse auf den Adressenaddierer über die Sammelleitung 40. Das Steuersignal T15 gibt das DF-FeId des in dem C-Register gespeicherten MSCW auf den Adressen-Addierer über die Sammelleitung 41. Das SUB-Signal beauftragt den Adressen-Addierer, die Differenz zu berechnen und sie auf die Sammelleitung 51 zu geben. Das Steuersignal T8 gibt die berechnete Differenz in das C-Register.
Danach wird das F-Register mit der berechneten Adresse auf den neuesten Stand gebracht, d.h. F^—C. Dazu erzeugt OEC29 die Steuersignale T20 und TlO, die die Adresse aus dem C-Register in das F-Register über die Sammelleitung 42 geben.
An dieser Stelle wird die Vorbereitung zur Anpassung der Anzeigeregister getroffen. Dazu wird der aus dem RCW erhaltene LL-Wert in das DRSR73 übertragen, d.h. DRSR^-LL. Dazu erzeugt OEC 29 Steuersignale T30 und T31, die den LL-Wert aus dem LL-Register 71 über die Sammelleitung 77 auf DRSR73 geben.
Jetzt wird in eine Schleife eingetreten, deren Zweck in der Anpassung des Inhaltes der Anzeigeregister besteht.
In einem Einleitüngsschritt der Schleife wird die Adresse eines berechneten und in dem C-Register gespeicherten MSCW in das von DRSR7 3 bezeichnete Anzeigeregister geschrieben, d.h. D (DRSR) c. Dazu erzeugt OEC 29 Steuersignale T15 und T23, die die Adresse in dem C-Register in
409827/0785
das ausgewählte Anzeigeregister über die Sammelleitung 41 geben.
Wenn an dieser Stelle DRSR die Zahl O speichert, ist die Schleife abgeschlossen. Wenn,nicht, wird ein Speicherzugriff ausgeführt, um ein MSCW zu erhalten. Man erinnere sich, daß das C-Register die Adresse eines MSCW speichert. Demzufolge wird die in dem C-Register gespeicherte Adresse für den Speicherzugriff verwendet. Das bei diesem Zugriff erhaltene MSCW wird in das C-Register gespeichert, d.h. Cf-M(C). Die an dieser Übertragung beteiligten Steuersignale sind T20,R und T8, die bereits oben beschrieben wurden.
An dieser Stelle wird das andere Stapelfeld (DS) des erhaltenen MSCW geprüft. Wenn DS=O ist, wird die augenblickliche Einstellung des BOSR68 als Basisadresse zur Berechnung der Adresse des nächsten MSCW in der verketteten Liste benutzt. Das DISP-FeId des MSW in dem C-Register dient als relative Adresse. Der Adressen-Addierer 39 berechnet die gewünschte Adresse und speichert sie in das C-Register, d.h. C#-^-BOSR + C.DISP. Dazu erzeugt OEC29 Steuersignale T32, T15,ADD und T8. Das Steuersignal T32 gibt die in BOSR68 gespeicherte Adresse auf den Adressen-Addierer 39 über die Sammelleitung 40. Die übrigen Steuersignale wurden in ihrer Funktion bereits oben beschrieben.
Wenn das DS-FeId gleich 1 ist, wird die Einstellung von BOSR68 nicht verwendet. Statt dessen ist es notwendig, die Adresse eines TOSCW zu erhalten, deren Adresse als Basisadresse zur Berechnung der absoluten Adresse eines MSCW herangezogen wird. Die Adresse des TOSCW wird durch Auslesen des Stapelvektor-Deskriptors erhalten (A^-M (DO+2)), wobei das Adressenfeld des Stapel-Vektor Deskriptors und das Stapelnummernfeld zur Gewinnung der Adresse
09827/07,8.5
eines ausgewählten Datendeskriptors in dem Stapel-Vektor-Feld verwendet werden (Cf=^-CSNR + A.ADDRESS), und dann der gewählte Datendeskriptor erhalten wird (A^-M(C)). An dieser Stelle speichert das Α-Register den Datendeskriptor, der ein Adressenfeld enthält, das als Bäsisadresse dient. Jetzt kann die absolute Adresse des nächsten MSCW berechnet werden (C**-^ A »ADDRESS + CDISP). Das an diesen Schritten allein beteiligte Steuersignal, das nicht bereits früher erläutert wurde, ist das Steuersignal T42, das das Adressenfeld, das in dem A-Register 55 gespeichert ist, über die Sammelleitung 40 auf den Adressen-Addierer 39 gelangen läßt.
Somit sieht man, daß bei DS=I oder bei DSi=O Schritte ausgeführt werden, bei denen in das C-Register die Adresse eines MSCW gespeichert wird.
Als nächstes erzeugt OEC29 das Steuersignal T33, das das DRSR um eine Stufe oder einen Pegel herunterzählen läßt, so daß das1Anzeige-Register des nächst niedrigeren Pegels bezeichnet wird. An dieser Stelle beginnt die Schleife erneut.
Nach Abschluß der Anpassungssequenz für das Anzeigeregister wird der Rest der zur Rückkehr benötigten Information gewonnen. Das bedeutet, daß ein Sequenzdeskriptor geholt wird und sein Adressenfeld zur Einstellung des PBR43 in der oben in Verbindung mit Fig»6 beschriebenen Weise verwendet wird.
Man entnimmt sonach der vorstehenden Beschreibung, daß das System 1 das PIHP rekursiv verwenden kann, um mehrere in zeitlichem Abstand auftretende Unterbrechungsbedingungen zu verarbeiten. Man betrachte nun diejenigen Einrichtungen in dem System ^j, die eine Eliminierung" der eingangs, beschriebenen latenten Probleme in Verbindung mit fruchtlosen
409827/0785
Versuchen zu einem rekursiven Eintritt in das PIHP ermöglichen.
Unter erneuter Bezugnahme auf Fig.3 bemerke man, daß die zweite Unterbrechungsprozedur (SIPH) in dem Speichermodul 9 gespeichert ist· Wenn somit ein Fehler in dem Speichermodul 7 auftritt, der eine Verwendung von PIHP verhindert, kann das System immer noch auf den Speichermodul 9 zugreifen und das SIHP verwenden. Das Einleitungsprogrammwort des SIHP ist in einer Speicherstelle gespeichert, die die Adresse 505000 besitzt. Die zum Eintritt in das SIHP benötigte Information ist vorzugsweise ebenfalls in dem Speichermodul 9 gespeichert. Somit wird ein alternativer Stapelhauptteil und ein alternatives Stapelvektor-Feld in dem Speichermodul 9 im wesentlichen dauernd gespeichert. Wie bereits angegeben, gibt es ein Stapelkopfsteuerwort (TOSCW-S) für den alternativen Stapelhauptteil. Das TOSCW-S ist in einer Speicherstelle mit der Adresse 500 000 gespeichert. Ein Datendeskriptor DDVA ist bei 500 022 gespeichert. DDV enthält ein Adressenfeld, das auf das alternative Stapelvektor-Feld zeigt. Ein Programm-Steuerwort (PCW-S) ist bei 500 023 gespeichert und enthält Felder, die dazu dienen, die Hinweis-Einrichtungen auf das Programmsegment während des Eintritts in das SIHP einzustellen. Über dem alternativen Stapelhauptteil ist ein eigenes Speichergebiet für das Speichern des Ausführungssatzes von SIHP vorqesehen.
Man betrachte nun die Fig.8. Wie bereits angedeutet, erzeugt jedesmal bei Feststellung eines Unterbrechungssignals die Unterbrechunqssteuerung IC27 ein Steuersignal IU und liefert eine 0 als ein NI-Signal. Während NI eine "0" ist, ist das Gatter 38 gesperrt und PSR37 wird nicht durch SECI um eine Stufe weitergestellt. Ein Maschinenunterbrechungs-Pegelregister IML 85 (Fig.l) hat einen
409827/078$
-54- ' v
Weiterzähl-Eingang, der das Steuersignal IU empfängt· IML 85 kann einen von mehreren geordneten Zuständen annehmen, die mit IML-O, IML-I, IML-2, IML-3 und IML-4 bezeichnet sind. Während der Datenprozessor 5 eine Objekt-Programmprozedur ausführt, befindet sich IML85 in dem Zustand IML-O von niedrigster Ordnung. Dies ist eine Folge des Zurücksteilens des IML-Registers während der Ausführung des EXIT-Befehls. Man erinnere sich, daß während einer derartigen Ausführung eine Prüfung des Wertes des N-Feldes des RCW ausgeführt wird. Wenn das N-FeId eine 0 ist, erzeugt OEC29 das Steuersignal Z, das das IMR-Register auf den Zustand IML-O setzt. Jedesmal bei Empfang des Steuersignals T34 ändert sich IML85 aus seinem gegenwärtigen Zustand in aen Zustand der nächst höheren Ordnung. Wenn demzufolge ein Unterbrechungssignal festgestellt wird, während der Datenprozessor 5 eine Objektprogramm-Prozedur ausführt, wird IML-85 auf den Zustand IML-I gesetzt. Wenn darüber hinaus ein Unterbrechungssignal festgestellt wird, während der Datenprozessor das PIHP in einem ersten rekursiven Pegel ausführt, wird das IML85 auf IML-2 gesetzt.
Das IML85 liefert eine Anzeige saines Zustandes an IC27. Wenn nach Erzeugung des Steuersignals IU das IML85 in einem seiner drei niedrigsten Zustände sich befindet (d.h. in den Zuständen IML-O, IML-I oder IML-2), geht der Daten-prozessor 5 dazu über, die bereits oben beschriebene Aufrufsequenz zum Eintritt in das PIHP zu erzeugen.
Wenn kein besonders schwerwiegender Fehler, wie etwa ein Fehler im Speichermodul 7, vorliegt, verläuft der Eintritt in das PIHP erfolgreich. Wenn in das PIHP eingetreten wird, gibt es zwei Paramter Pl und P2, die in es übergehen und die Art der Unterbrechungsbedingung bezeichnen. Das PIHP ist konventionell aufgebaut und .
409827/0785
verwendet die in Pl und P2 enthaltene Information zur Entscheidung darüber, welche Handlungen zur Verarbeitung der die Oberhand behaltenden Unterbrechungsbedxngung erforderlich sind. Beispielsweise enthält das PIHP die oben erwähnten VALC-Befehle (vgl. US-Patentschrift 3 546 677). Diese VALC-Befehle dienen dazu, Pl und P2 je nach Bedarf an den Kopf des Stapels zu bringen. Ein weiterer wesentlicher, dem PIHP zugänglicher Informationsposten ist der Zustand des IML85. Das bedeutet, daß der Zustand des IML85 programmatisch abgefragt werden kann. Darüber hinaus ist der Zustand des IML85 programmatisch .steuerbar. Dazu enthält das Programmbefehls-Repertoir des Systems 1 Programmbefehle, die das Maschinenunterbrechungspegelregister (RIML) lesen und das Maschinenunterbrechungspegelregister setzen (SIML).
Wenn der RIML-Befehl in das Programmregister 31 gespeichert und dekodiert wird, erzeugt OEC29 Steuersignale T34 und TIl, die die von IML85 geliferte Zustandsanzeige in das Α-Register über die Sammelleitung 51 geben. Somit wird die Zustandsanzeige in dem Stapel gespeichert, wo die in ihm enthaltene Information durch das PIHP zur Entscheidung darüber verwendet werden kann, welche Handlung nun unternommen werden soll. Wenn der SIML-Befehl in das Programmregister Gespeichert und entschlüsselt wird, erzeugt OEC29 die Steuersignale T35 und T36, die ein Feld aus dem SIML-Befehl in IML-85 über die Sammelleitung 51 geben.
Die programmatische Abfraqbarkeit und Einstellbarkeit des IML85 hat den folgenden Vorteil. Solange ein Eintritt in das PIHP möglich ist, kann das IML85 programmatisch auf einen seiner Zustände von niedrigerem Pegel gesetzt werden. Demzufolge ist die .rekursive Verwendung von PIHP immer noch erreichbar bis zu irgendeinem notwendigen re-
409827/0786
kursiven Pegel,
Man betrachte nun im Zusammenhang mit Fig.8 eine beispielhafte Situation, die auftreten und einen erfolgreichen Eintritt in das PIHP verhindern kann. Es sei in dem Speichermodul 7 ein Fehlverhalten vorliegend, das es unmöglich macht, die Programmwörter des PIHP auszulesen. Dem Beispiel wird IML85 anfänglich in den Zustand IML-O gesetzt und der Datenprozessor 5 führt ein Objektprogramm aus. Dann wird ein von der Einrichtung 11 erzeugtes internes Unterbrechungssignal von IC27 bemerkt. Daraufhin läßt IC27 das IML85 in den Zustand IMLl gehen. Danach wird eine vorfabrizierte Aufruf sequenz als Versuch eines Eintritts in das PIHP ausgeführt. Wenn jedoch der Pseudo-ENTER-Befehl ausgeführt wird, und auf eine Speicherstelle in dem Speichermodul 7 zwecks Auslesen Zugriffen wird, wird ein weiteres Unterbrechungssignal erzeugt. Dieses Unterbrechungssignal ist ein Alarmunterbrechungssignal, das von der Einrichtung 21 erzeugt wird. Das Alarmunterbrechungssignäl wird bemerkt und IC27 veranlaßt, IML85 in den Zustand IML-2 zu gehen. Wieder wird eine vorfabrizierte Aufruf-Sequenz ausgeführt mit dem gleichen Ergebnis, nämlich der Erzeugung eines weiteren Alarmunterbrechungssignals. Jetzt läßt IC27 das IML85 in den Zustand IML-3 gehen.
Wenn eine Prüfung des Zustandes des IML85 anzeigt, daß es in dem Zustand IML-3 steht, beendet der Daten-Prozessor 5 die Versuche zur Verwendung des PIHP. An dieser Stelle erzeugt OEC29 Steuersignale bei T37 und T38. Diese Steuersignale geben eine in dem alternativen Stapelbasis—Register AB0SR87gespeicherte Adresse über die Sammelleitung 40 auf das BOSR68. Die auf diese Weise übertragene Adresse ist die Adresse eines TÖSCW für einen alternativen Stapelhauptteil. In diesem Beispiel speichert ABOSR87 den Wert
4098277 0.78
500 000 und zeigt auf TOSCW-(S). Gleichzeitig erzeugt OEC29 Steuersignale T39 und T8 und gibt einen Operanden auf die Sammelleitung 51, der den Datenprozessor 5 bezeichnet. Das Steuersignal T39 stellt das SNR-Register 63 zurück. Das Steuersignal T8 läßt den von der Sammelleitung 51 geführten Prozessor-ID in das C-Register übergehen.Als nächstes erzeugt OEC29 Steuersignale T40, R und TIl. Das Steuersignal T40 gibt die Adresse in BOSR68 über die Sammelleitung 42 auf MAE17. Das Steuersignal R löst eine Lesezyklus aus und das TOSCW-(S) wird in das MIR15 gespeichert. Das Steuersignal TIl gibt dieses TOSCW in das Α-Register aus dem .MIR15. Dies wird geschrieben in der Form A*—M(BOSR).
Als nächstes erzeugt OEC29 Steuersignale T40, W und T9, die den Prozessor ID aus dem C-Register in MIR15 übertragen und es in den Modul-Speicher einschreiben. Das bedeutet das M (BOSR)f - C.
Im nächsten Schritt wird das TOSCW aus dem A-Register in das C-Register übertragen, d.h. C^-A. Dazu erzeugt OEC29 die Steuersignale Tl und T8 gleichzeitig.
Im nächsten Schritt wird eine neue Einstellung für das S-Register berechnet, und zwar aus der in dem TOSCW enthaltenen Information. D.h. das S^~~CDSF + BOSR. Dazu erzeugt OEC29 die Steuersignale T32,T15,ADD und T41. Das Steuersignal T32 gibt die in BOSR68 gespeicherte Adresse auf den Adressenaddierer 39 über die Sammelleitung 40. Das Steuersignal T15 qibt das DSF-Feld des TOSCW auf den Adressenaddierer über die Sammelleitung 41. Der Adressen-Addierer 39 spricht auf das ADD-Signal an und berechnet die Summe und gibt die Summe auf die Sammelleitung 42. Das Steuersignal T41 gibt die Summe in das S-Register.
409827/07 85
. -58-
Im nächsten Schritt wird eine neue Einstellung für das F-Register brechnet, d.h. F^—'S-C,DF. Dazu erzeugt OEC29 Steuersignale T6, T15, SUB und T42. Das Steuersignal T6 gibt die in dem S-Register gespeicherte Adresse ' auf den Adressen-Addierer über die Sammelleitung 40. Das Steuersignal T15 gibt das DFF-FeId des TOSCW in dem C-Register auf den Adressenaddierer über die Sammelleitung 41. Der Adressenaddierer spricht auf das SUB-Signal an und berechnet die Differenz und gibt sie auf die Sammelleitung 51. Das Steuersignal T42 gibt diese Differenz in das F-Register.
Im nächsten Schritt werden die Anzeigeregister auf den neuesten Stand gebracht, um die neue Adressenumgebung wiederzugeben. Unter den vorliegenden Umständen, wenn die Steuerung auf.das SIHP übertragen ist, ist nur der unterste lexikographische Pegel beteiligt. Dementsprechend wird nur das Anzeigeregister DO angepaßt, d.h. D(O)^-F. Die Steuersignale, die bei dieser. Übertragung beteiligt sind, wurden bereits oben beschrieben. Gleichzeitig erzeugt das OEC29 das Steuersignal T43, das das LL-Register zurücksetzt, d.h. LLi—Ό.
Im nächsten Schritt -wird eine hardware-mäßig erzeugte Aufrufsequenz ausgeführt, die einen Eintritt in das SIHP veranlaßt.
Falls ein weiteres Unterbrechungssignal bemerkt wird, während das IML-Register in dem Zustand IML-3 ist, wird , das IML-Register in den Zustand IML-4 gesetzt. Dies könnte eintreten, ■ wenn ein Fehler in der MCU-13, beispielsweise von einer Art auftritt, die den Zugriff auf irgendeinen Speichermodul verhindert. Nach der Feststellung, daß das IML-Reqister im Zustand IML-4 ist, veranlaßt in diesem Fall die OEC29, daß der Datenprozessor
409827/0785
die Verarbeitung anhält.
Insgesamt wurde eine programmierbare Datenverarbeitungsanlage beschrieben, die einen Speicher und einen Stapelorganisierten Datenprozessor enthält, der in dem Speicher gespeicherte Programme ausführt und Ausführungssätze der verschiedenen Prozeduren in die Stapelspeicherbereiche des Speichers speichert. Signalgeber erzeugen Unterbrechungssignale, u.a. auch solche, die einen Fehler in dem System anzeigen. Der Datenprozessor spricht auf mehrere im zeitlichen Abstand auftretende Unterbrechungssignale an und benutzt rekursiv eine erste Unterbrechungsbearbeitungsprozedur. Das bedeutet, daß jede Ausführung der ersten Unterbrechungsbearbeitungsprozedur unterbrechbar ist. Der Ausführungssatz oder die Ausführungsaufzeichnung der ersten Unterbrechungs-Behandlungsprozedur wird in ein Stapelfeld aufgestapelt, das gerade der unterbrochenen Prozedur zugeordnet ist. Bei speziellen Arten von System-Befehlen versucht der Datenprozessor jedesmal die erste Unterbrechungsbehandlungsprozedur zu verwenden, wobei ein Unterbrechungssignal erzeugt wird, und versucht daraufhin erneut das erste Unterbrechungsbehandlungsprogramm zu benutzen. Ein Auf/Ab-Zähler notiert die Anzahl der erfolgreichen und nicht-erfolgreichen rekursiven Verwendungen der ersten Unterbrechungsbehandlungprozedur. Wenn der Auf/Ab-Zähler einen vorbestimmten Zählstand erreicht, beendet der Datenprozessor die Versuche, die erste Unterbrechungsbehandlungsprozedur zu verwenden und beginnt die Ausführung einer zweiten Unterbrechungsbehandlungprozedur.
409827/07 85
Tabelle II Steuer-Siqnal
Tl
T2
T3 ·
Τ4
Τ5
Τ6
Τ7
Τ8
Τ9
TlO
TIl
Τ12
T13
T14
Τ15
Τ16
Τ17
Τ18 Τ19 Τ20 Τ21 .
Τ22 Τ23
Τ24 Τ25 Τ26 Τ27 Τ28
Wirkunq
5Κ--Α; Β«- 51; S>—-S + 42<—S 5l£— B; 4θ€—S 4Ii-F
AROF^- BROF^-1
BROF
C 42
42«—(41) + 1 (vgl.Addierer 39) DRSRf—C.LL (vgl.Sammelleitung 77)
lies ein ausgewähltes Anzeige-Register vgl. S.M.75)
PSR, PIR, PDR, N/C,LL{
51" SNR, PSR, PIR, PDR, N/C,LL
42^—C
4 Ii B
514—LL
Schreibe in ein ausgewähltes Anzeige-Register (vgl.SM. 75)
51 PIR<—.PIR +
Tabelle II (Fortsetzung)
Steuer-Siqnal Wirkunq
T 29 4.0 ^-F
T30 DSR<— 79
T31 79£~LL
T32 40<r- BOSR
T33 DRSr4—DRS
T34 5 -14-. -»!ML
T35 5l£-P
T36 IMBfe 51
T37 BOS R^-40
T38 40<—ABOSR
T39 SNRt-O
T40 424 BOSR
T41 S <—42
T42 404—A
- 1
40 9827/0785

Claims (14)

Ansprüche
1. Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage/ dadurch gekennzeichnet, daß
a) in einem Speicher ein Objektprogramm, ein erstes, wieder verwendbar kodiertes Unterbrechungsbehandlungsprogramm sowie ein zweites Unterbrechungsbehandlungsprogramm gespeichert werden;
b) bei Auftreten einer Unterbrechungsbedingung
ein Unterbrechungssignal gebildet wird, das das Vorliegen der Unterbrechungsbedingung sowie ihre Art bezeichnet;
c) rekursiv das erste Unterbrechungsbehandlungsprogramm zur Ausführung, beginnend von seinem Anfang, in Abhängigkeit von mehreren Unterbrechungssignalen aufgerufen wird;
d) die Anzahl der rekursiven Aufrufe für das erste Unterbrechungsbehandlungsprogramm gezählt und die Zählung aufgezeichnet wird, ehe es bei Beendigung verlassen wird;
e) die Koinzidenz eines Unterbrechungssignals
mit einem vorbestimmten Zählstand der rekursiven Aufrufe festgestellt und daraufhin das zweite Unterbrechungsbehandlungsprogramm aufgerufen wird«
4 0 9827/0786
2. Datenverarbeitungsanlage, dadurch gekennzeichnet, daß in einem Speicher (13) ein erstes sowie ein zweites Unterbrechungsbehandlungsprogramm gespeichert sind; daß Unterbrechungs-Signalgeber (11, 21) mehrere Unterbrechungssignale abgeben können, von denen jedes das Vorliegen einer von mehreren Unterbrechungsbedingungen anzeigt; daß ein Prozessor (5) auf mehrere, in zeitlichem Abstand auftretende Unterbrechungssignale anspricht und rekursiv das erste Unterbrechungsbehandlungsprogramm zur Verarbeitung der Unterbrechungsbedingungen benutzt; daß ein Maschinen-Unterbrechungspegel-Register (IML) auf einen von mehreren geordneten Zuständen einstellbar ist und eine entsprechende Vielzahl von Zustandsanzeigen liefert; daß eine Einstelleinrichtung (51) vorgesehen ist, die das Maschinen-Unterbrechungspegel-Register auf seinen Zustand von niedrigster Ordnung setzt, wenn keine Unterbrechungsbedingungen fortbestehen; daß das Maschinen-Unterbrechungspegel-Register auf einen Zustand vorbestimmter, höherer Ordnung gesetzt wird, nachdem eine Folge von Unterbrechungssignalen erzeugt wurde, wobei für jede Folge der Prozessor (5) das erste Unterbrechungsbehandlungsprogramm nicht verwenden konnte, wobei eine auf jedes Unterbrechungssignal ansprechende Einrichtung das Maschinen-Unterbrechungspegel-Register auf einen nächst höheren Zustand setzt und eine auf die Koinzidenz zwischen einer Anzeige der Stufe von höchster Ordnung und einem Unter-
.brechungssignal ansprechende Einrichtung die Verwendungsveρε uche für das erste Unterbrechungsbehandlungsprogramm beendet und die Ausführung des zweiten Unterbrechungsbehandlungsprogramms veranlaßt.
3. Datenverarbeitungsanlage nach Anspruch 2, dadurch gekennzeichnet, daß der Speicher ein Modulspeicher mit mehreren Speichermoduln (7, 9) ist, von d©nen jeder
409827/0785
mehrere adressierbare Speicherstellen enthält; daß mehrere SpeichersteIlen in einem ersten Speichermodul das erste Unterbrechungsbehandlungsprogramm bildendes Kodesegment speichern und mehrere Stellen in einem zweiten Speichermodul ein das zweite Unterbrechungsbehandlungsprogramm bildendes Kodesegment speichern; und daß der zweite Speichermodul unabhängig von einem Fehlverhalten in dem ersten Speichermodul arbeiten kann.
4. Datenverarbeitungsanlage nach Anspruch 3/ dadurch gekennzeichnet, daß das das erste Unterbrechungsbehandlungsprogramm bildende Kodesegment einen vorbestimmten Programmbefehl enthält; auf den hin das Maschinen-Unterbrechungspegel-Register auf einen seiner niedrigeren Zustände gesetzt wird, so daß das erste ünterbrechungsbehandlungsprogramm eine beliebige Anzahl von Malen rekursiv verwendbar ist.
5. Datenverarbeitungsanlage nach einem der Ansprüche 2 -
4, dadurch gekennzeichnet, daß der Speicher mehrere adressierbare Speicherstellen zum Speichern von Wortstapeln aufweist; daß der Prozessor (5) einen Stapelmechanismus zum Lesen und Schreiben von Wörtern in Stapeln aufweist, wobei der Stapelmechanismus auf das Objektprogramm anspricht und die Ausführungsaufzeichnung speichert.
6. Datenverarbeitungsanlage nach Anspruch 5, dadurch gekennzeichnet, daß der Stapelmechanismus ein erstes Register aufweist, das einen Zeiger für das Stapelkopfwort in dem Speicher speichert, und ein zweites Register enthält, das einen als Basisadresse für die relative Adressierung der Stapelwörter dienenden Zeiger speichert; und daß bei Ausführung des zweiten ünterbrechungsbehandlungsprogramms durch den Prozessor in das ©rst© und das zweite Register
Zeiger auf Speicheratellen.des Speichers gespeichert werden.
7. Programmierbare Datenverarbeitungsanlage, gekennzeichnet durch einen Speicher (13) mit Speicherbereichen, von denen jeder mehrere adressierbare Speicherstellen aufweist, wobei in einem Speicherbereich ein erstes Unterbrechungsbehandlungsprogramm und in einem zweiten Speicherbereich ein zweites Unterbrechungsbehandlungsprogramm und in einem dritten Bereich ein Objektprogramm gespeichert sind und jedes Programm eine Programmbefehlskette enthält; durch Signalgeber für mehrere Unterbrechungssignale, die das Vorliegen einer Unterbrechungsbedingung anzeigen; durch einen Prozessor (5) zur Ausführung der Programme ohne ihre Programmbefehle abzuändern während der Ausführung, so daß die Programme rekursiv verwendbar sind, wobei der Prozessor folgende Einrichtungen aufweist:
a) Einen Programmzeiger, der auf einen wählbaren Programmbefehl zeigend eingestellt werden kann und sequenziell die dem gewählten Programmbefehl folgenden Programmbefehle anzeigt;
b) eine Programmhohleinrichtung zum Aiisl«sen einer Programmbefehlskette, auf die durch den Proarammzeiger qezeigt wird ;
c) Verarbeitungseinrichtungen mit einem Stapelmechanismus, der auf die ausgelesener Programmbefehle anspricht und aus den Speichersteilen eines Speicherabschnittes liest und in sie einschreibt nach dem Keller-Prinzip, um während der Ausführung eines Programms anfallende Speicherstapelwörter aufzusammeln, wobei der Stapelmechanismus eine Einrichtung aufweist, die auch das letzte aufzusammelnde
409827/0785
Speicherstapelwort zeigt;
d) durch ein Maschinen-Unterbrechungspegel-Register, das auf einen von. mehreren geordneten Zuständen setzbar ist und eine entsprechende Anzeige abgibt;
e) eine Einstelleinrichtung für das Maschinen-Unterbrechungspegel-Register/ die es auf seinen untersten Zustand setzt/ wenn keine Unterbrechungsbedingung fortbesteht;
f) eine auf mehrere Unterbrechungssignale ansprechende Einrichtung, die den Zustand des Maschinen-Unterbrechungspegel-Registers auf eine höhere Ordnung einstellt;
g) eine Wahleinrichtung für das erste oder zweite Unterbrechungsbehandlungsprogramm, wobei das erste Unterbrechungsbehandlungsprogramm dann ausgewählt wird, wenn das Maschinen-Unterbrechungspegel-Register in seinem untersten Zustand steht und zu rekursiver Verwendung ausgewählt wird, wenn das Maschinen-Unterbrechungspegel-Register in einem seiner weiteren Zustände steht, und wobei das zweite Unterbrechungsbehandlungsprogramm dann ausgewählt wird, wenn das Maschinen-Unterbrechungspegel-Register einen Zustand von vorbestimmter Ordnung angenommen hat;
h) durch eine Einleitungseinrichtung, die die Verarbeitungseinrichtung die Ausführung des gewählten Unterbrechungsbehandlungsprogramms ausführen läßt, wobei auf einen vorbestimmten Programmbefehl des gewählten Unterbrechungsbehandlungsprogramms gezeigt wird.
8. Datenverarbeitungsanlage nach Anspruch?, dadurch gekennzeichnet, daß der Speicher weitere Abschnitte enthält,
409827/0785
von denen jeder mehrere Speicherstellen aufweist·, wo in einem weiteren Bereich ein Stapel-Hauptteil und in einem anderen Speicherbereich ein alternativer Stapel-Hauptteil gespeichert sind; daß der Stapel-Hauptteil ein Steuerwort enthält, dessen Felder auf das erste Unterbrechungsbehandlungsprogramm zeigen und der alternative Stapel-Hauptteil ein Steuerwort enthält, dessen Felder auf das zweite Unterbrechungsbehandlungsprogramm zeigen; und daß bei Einleitung der Ausführung eines Unterbrechungsbehandlungsprogramms das Steuerwort ausgelesen wird, dessen Felder auf das ausgewählte Unterbrechungsbehandlungsprogramm zeigen.
9. Datenverarbeitungsanlage nach Anspruch 8, dadurch gekennzeichnet, daß der Speicher einen weiteren Bereich mit mehreren SpeiehersteIlen enthält, in dem ein Arbeitsstapel gespeichert ist; und daß der Stapelmechanismus in den Speicherstellen des Arbeitsstapels die AusfUhrungssätze des ersten Unterbrechungsbehandlungsprogramms akkumuliert·
10. Datenverarbeitungsanlage nach Anspruch 9, dadurch gekennzeichnet, daß der Speicher mehrere Speiehermodulη (7, 9) enthält, wobei der erste Modul das erste ünterbrechungsbehandlungsprogramm und der zweite Modul das zweite Unterbrechungsbehandlungsprogramm speichern und der zweite Modul unabhängig von dem ersten Modul betreibbar ist.
11. Datenverarbeitungsanlage nach Anspruch 7, dadurch gekennzeichnet, daß das erste Unterbrechungsbehandlungsprogramm einen vorbestimmten Programmbefehl enthält; und daß der Prozessor auf den vorbestimmten Programmbefehl anspricht und das Maschinen-Unterbrechungspegel-Register
409827/0785
auf einen niedrigeren Zustand setzt.
12 ο Datenverarbeitungsanlage nach Anspruch 11, dadurch gekennzeichnet 9 daß d©r vorbestissate Programmbefehl ©in Feld enthält» das den Pegel anzeigt, auf den das Maschinen-Unterbredtaagspsgel-Register gesetzt werden
13 ο Frograeaierbare Bateiwerarbeltangsaniage, gekennzeichnet ctarch ©ia@a Spsiehe^ der ein auszuführendes
and ©la su©it@ss
p uofeüi «aas ©rst@
grsaam aasgeSöhrfe werä@a soll 0 tfeasa di© Anmführung das Obj©ktpröfSanas aat©s"Ibr©eta@sa Isst maü in das ■ wieder eingets@t@a w(&zä@n ksan änzdh S±gaalg@b©r ill» 21) für ünterbreehMngsäiifaale^ v@>n dsaGa j©iä©s am. Vorliegen und die-Art des - vorliefßnä<&n \3at®%bs®dkw&<§mb®ülngwi<g anseigti durch eia@ß Dat@apff®g@@s©^ CS) a^s· Äasfährraag der in dem Speicher gespeichert©» Fs1Ofzsm&q b t=5?©bei d©r Datenprosessor
f ©Iias®
(45) f
©I ©In© Einriehtuags dl© das
führung eines Objektprograasais la" Qi-nesa @j?st®n lnstasid b@I- Peststelluiag ©iaes UntegibffQetaaggsIfBJials ten Zustand ηηύ bei Foststellesn saghg'erGr
sefcst'
409827/07IS
d) durch eine weitere Einrichtung, die den Datenprozessor die Ausführung der Unterbrechungsbehandlungsprogramme beginnen läßt, wobei er in das erste Unterbrechungsbehandlungsprogramm bei Vorliegen jedes Unterbrechungssignals, das während des Intervalls festgestellt wird, eintritt und wobei er in das zweite Unterbrechungsbehandlungsprogramm dann eintritt, wenn das Register sich in dem dritten Zustand befindet, so daß das zweite Unterbrechungsbehandlungsprogramm die Bearbeitung von Unterbrechungsbedingungen steuern kann, wenn dies dem ersten Unterbrechungsbehandlungsprogramm etwa aufgrund eines FehlVerhaltens nicht möglich ist.
14. Datenverarbeitungsanlage nach Anspruch 13, dadurch gekennzeichnet, daß in das Register (45) bei Koinzidenz entweder der ersten oder der zweiten Zustands-Anzeige des Registers und der Feststellung eines Unterbrechungssignals der erste Anfangsprogrammbefehl des ersten Unterbrechungsbehandlungsprogramms übertragen wird; und daß in das Register der erste Programmbefehl des zweiten Unterbrechungsbehandlungsprogramms übertragen wird, wenn das Register (45) auf seinem dritten Zustand steht.
4 0 9827/078S
Leerseite
DE2364323A 1973-01-02 1973-12-22 Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage Expired DE2364323C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US00320081A US3828324A (en) 1973-01-02 1973-01-02 Fail-soft interrupt system for a data processing system

Publications (2)

Publication Number Publication Date
DE2364323A1 true DE2364323A1 (de) 1974-07-04
DE2364323C2 DE2364323C2 (de) 1983-12-22

Family

ID=23244792

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2364323A Expired DE2364323C2 (de) 1973-01-02 1973-12-22 Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage

Country Status (5)

Country Link
US (1) US3828324A (de)
JP (2) JPS5729741B2 (de)
DE (1) DE2364323C2 (de)
GB (1) GB1409350A (de)
IN (1) IN139255B (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575817A (en) * 1983-06-27 1986-03-11 International Business Machines Corporation Switching of programming routine supporting storage stacks
US4847517A (en) * 1988-02-16 1989-07-11 Ltv Aerospace & Defense Co. Microwave tube modulator
JPH0789325B2 (ja) * 1988-05-06 1995-09-27 日本電気株式会社 エラー処理方式
US5875294A (en) 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
JP2000047883A (ja) * 1998-07-31 2000-02-18 Denso Corp タスク制御方法および記録媒体
DE10135285B4 (de) * 2001-07-19 2005-08-04 Infineon Technologies Ag Speichereinrichtung und Verfahren zum Betreiben eines eine Speichereinrichtung enthaltenden Systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3492654A (en) * 1967-05-29 1970-01-27 Burroughs Corp High speed modular data processing system
DE2037506A1 (de) * 1969-08-21 1971-03-04 Burroughs Corp Verfahren und Schaltung zur Einstellung einer Operatorsteuerung in einer Datenver arbeitungsanlage

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3548384A (en) * 1967-10-02 1970-12-15 Burroughs Corp Procedure entry for a data processor employing a stack
US3546677A (en) * 1967-10-02 1970-12-08 Burroughs Corp Data processing system having tree structured stack implementation
US3461434A (en) * 1967-10-02 1969-08-12 Burroughs Corp Stack mechanism having multiple display registers
US3576541A (en) * 1968-01-02 1971-04-27 Burroughs Corp Method and apparatus for detecting and diagnosing computer error conditions
US3533065A (en) * 1968-01-15 1970-10-06 Ibm Data processing system execution retry control
US3564506A (en) * 1968-01-17 1971-02-16 Ibm Instruction retry byte counter
US3566364A (en) * 1968-07-19 1971-02-23 Burroughs Corp Data processor having operator family controllers
US3593312A (en) * 1969-11-14 1971-07-13 Burroughs Corp Data processor having operand tags to identify as single or double precision
US3704363A (en) * 1971-06-09 1972-11-28 Ibm Statistical and environmental data logging system for data processing storage subsystem
JPS4860838A (de) * 1971-11-30 1973-08-25
US3725876A (en) * 1972-02-08 1973-04-03 Burroughs Corp Data processor having an addressable local memory linked to a memory stack as an extension thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3492654A (en) * 1967-05-29 1970-01-27 Burroughs Corp High speed modular data processing system
DE2037506A1 (de) * 1969-08-21 1971-03-04 Burroughs Corp Verfahren und Schaltung zur Einstellung einer Operatorsteuerung in einer Datenver arbeitungsanlage

Also Published As

Publication number Publication date
JPS4999444A (de) 1974-09-19
IN139255B (de) 1976-05-22
GB1409350A (en) 1975-10-08
JPS57114951A (en) 1982-07-17
JPS6236577B2 (de) 1987-08-07
US3828324A (en) 1974-08-06
DE2364323C2 (de) 1983-12-22
JPS5729741B2 (de) 1982-06-24

Similar Documents

Publication Publication Date Title
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE2448690A1 (de) Kellerspeichereinrichtung fuer eine datenverarbeitungsanlage
DE1499193A1 (de) Datenverarbeitungsanlage
DE2424931A1 (de) Datenverarbeitungsanlage, insbesondere mikroprogramm-datenverarbeitungseinheit mit parallelen befehlsstroemen fuer mehrere ebenen von subbefehlsvorraeten
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE2306115A1 (de) Datenprozessor mit ablage-mikrosteuerung
DE2515696A1 (de) Anordnung zum selektiven loeschen von teilen beziehungsweise zum ersatz von daten in einem cache-speicher
DE2364323A1 (de) Unterbrechungssystem fuer eine datenverarbeitende maschine
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE2424810A1 (de) Datenverarbeitungsanlage, insbesondere kleine mikroprogramm-datenverarbeitungsanlage mit mehrsilbenmikrobefehlen
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE2644441A1 (de) Datenverarbeitungssystem
DE2758830A1 (de) Rechenvorrichtung
EP0010186B1 (de) Vorrichtung zum Bearbeiten bezeichneter Hinweise
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE1549531A1 (de) Digitale Rechenanlage
DE3043653A1 (de) Datenverarbeitungsanlage
DE3853985T2 (de) Datenverarbeitungsanlage, geeignet für Hochgeschwindigkeitsverarbeitung.
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen

Legal Events

Date Code Title Description
OD Request for examination
8128 New person/name/address of the agent

Representative=s name: EISENFUEHR, G., DIPL.-ING. SPEISER, D., DIPL.-ING.

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee