DE2364323A1 - Unterbrechungssystem fuer eine datenverarbeitende maschine - Google Patents
Unterbrechungssystem fuer eine datenverarbeitende maschineInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial 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
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.
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.
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.
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-
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
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)
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
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
(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
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
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)
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)
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)
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 |
-
1973
- 1973-01-02 US US00320081A patent/US3828324A/en not_active Expired - Lifetime
- 1973-07-24 GB GB3517373A patent/GB1409350A/en not_active Expired
- 1973-08-14 IN IN1876/CAL/73A patent/IN139255B/en unknown
- 1973-12-19 JP JP14338973A patent/JPS5729741B2/ja not_active Expired
- 1973-12-22 DE DE2364323A patent/DE2364323C2/de not_active Expired
-
1981
- 1981-07-20 JP JP56114312A patent/JPS57114951A/ja active Granted
Patent Citations (2)
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 |