DE2516909C2 - Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme - Google Patents
Datenverarbeitungsanlage zur Verarbeitung verschachtelter ProgrammeInfo
- Publication number
- DE2516909C2 DE2516909C2 DE2516909A DE2516909A DE2516909C2 DE 2516909 C2 DE2516909 C2 DE 2516909C2 DE 2516909 A DE2516909 A DE 2516909A DE 2516909 A DE2516909 A DE 2516909A DE 2516909 C2 DE2516909 C2 DE 2516909C2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- block
- correction
- register
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/14—Error detection or correction of the data by redundancy in operations
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking using recovery blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
- Programmable Controllers (AREA)
Description
Die Erfindung betrifft eine Datenverarbeitungsanlage zur Verarbeitung von Programmen mit einer Anzahl
von verschachtelten Programmblöcken nach dem Oberbegriff des Anspruchs 1.
Eine Datenverarbeitungsanlage dieser Gattung ist aus der US-PS 37 36 566 bekannt.
45 Im Zuge der Verarbeitung verschachtelter Programme muß Immer damit gerechnet werden, daß wahrend der
Verarbeitung einzelner Programmblöcke ein Verarbeitungsfehler auftritt bzw. an Irgendeiner Stelle des
Programms eine vorgenommene Zustandsprüfung nicht befriedigend erfüllt wird. Dann ist es wünschenswert,
daß der Ausgangszustand jederzeit wieder hergestellt werden kann, um die Verarbeitung auf der Basis des
fehlerfreien früheren Zustands nochmals beginnen zu können.
$ 50 Eine Konservierung des Ausgangszustands 1st dadurch möglich, daß der Inhalt eines Arbeltsspeichers ciupll-K-* ziert und In einem Aufbewahrungsspeicher aufbewahrt wird. Nach dieser Weise wird beim Gegenstand der US-
$ 50 Eine Konservierung des Ausgangszustands 1st dadurch möglich, daß der Inhalt eines Arbeltsspeichers ciupll-K-* ziert und In einem Aufbewahrungsspeicher aufbewahrt wird. Nach dieser Weise wird beim Gegenstand der US-
i;;j PS 37 36 566 verfahren. Hierbei findet beim Einspeichern einer Information In einen Speicherplatz eines Arbelts-
U Speichers (erster Speicher) gleichzeitig eine Einspeicherung der gleichen Information In den entsprechenden
V' Speicherplatz eines Aufbewahrungsspeichers (zweiter Speicher) statt, wobei außerdem ein die Belegung dieses
- 55 Speicherplatzes des Aufbewahrungsspeichers anzeigendes Bit In einem zusätzlichen Speicher gesetzt wird. Diese
Einspeicherung In den Aufbewahrungsspeicher erfolgt In jedem Falle beim ersten Einspeichern einer Information
in den Arbeltsspeicher, unabhängig davon, ob der Speicherinhalt des Arbeitsspeichers später überhaupt
verändert wird, und das die Belegung des betreffenden Speicherplatzes Im Aufbewahrungsspeicher anzeigende
Bit ein Besetzzeichen für den betreffenden Speicherplatz des Aufbewahrungsspeichers, das die nochmalige
im Einspeicherung einer Information auf den gleichen Speicherplatz sperrt. Im Aufbewahrungsspeicher befindet
sich also stets der ursprüngliche Inhalt des entsprechenden Speicherplatzes des Arbeltsspeichers, auch wenn der
Inhalt des Arbeitsspeichers während des laufenden Programmabschnitts dann beliebig oft verändert wird.
Diese Verfahrenswelse bei der bekannten Datenverarbeitungsanlage erfordert natürlich, daß dort der Aufbewahrungsspeicher
von seinem notwenigen Speicherumfang her Identisch mit dem Arbeitsspeicher sein muß.
'■ r.< Außerdem Ist In einem Speicherplatz des Aufbewahrungsspeichers Immer nur der Ursprungszustand der Information
bei deren Einspeichern In den entsprechenden Speicherplatz des Arbeitsspeichers vorhanden, also der
Ursprungszustand des laufenden Programmblocks, während bei mehrfach verschachtelten Programmen frühere
Ursprungsstufen aus früheren Programmblöcken nicht aufbewahrt werden, so daß also stets nur auf den letzten
Ursprungszustand der Information, nicht aber auf welter zurückliegende Ursprungsstufen zurückgegriffen
werden kann.
Der Erfindung liegt demzufolge die Aufgabe zugrunde, eine Datenverarbeitungsanlage nach dem Oberbegriff
des Anspruchs I derart auszubilden, daß bei geringem Aufwand ein Zurückgreifen auf jede frühere Ursprungsstufe des Programmablaufs mehrfach verschachtelter Programme ermöglicht wird.
Diese Aufgabe wird gemäß der Erfindung durch die im kennzeichnenden Teil des Anspruchs 1 angegebene
Anordnung gelöst.
Bei der erfindungsgemaßen Datenverarbeitungsanlage findet also im Gegensatz zu der bekannten Anlage eine
Einspeicherung des Informationsinhalts eines Speicherplatzes des ersten Speichers (Arbeltsspeicher) in einen
Speicherplatz des zweiten Speichers (Aufbewahrungsspeicher) jeweiis nur dann statt, wenn die betreffende Information
im ersten Speicher verändert werden soll. Erst dann wird auch die Anzeige im zusätzlichen Speicher
gesetzt. Damit hat die Im zusätzlichen Speicher gegebenenfalls gesetzte Anzeige bei der erfindungsgemäßen
Datenverarbeitungsanlage eine andere Bedeutung als das Belegt-Blt bei der bekannten Anlage. Bei der erfindungsgemäßen
Anlage zeigt diese Anzeige nämlich an, daß die betreffende Information während des laufenden
Programmblockes bereits verändert worden ist, während das Belegt-Bit bei der bekannten Anlage lediglich
anzeigt, daß der betreffende Speieherplatz (im Aufbewahrungsspelcher wie im Arbeitsspeicher) überhaupt besetzt
ist, ohne daß sich daraus eine Aussage darüber ableiten läßt, ob der Speicherinhalt des betreffenden Speicherplatzes
des Arbeitsspeichers während des laufenden Verarbeitungsabschnittes schon einmal verändert worden ist
oder nicht.
Gegenüber der bekannten Anlage !st also die erfindungsgemäße Datenverarbeitungsanlage ir- ihrem Aufbau ^o
einfacher und erfordert weniger Datenflbertragungsvorgänge, was Verarbeitungszeit spart. UnnöUge Datenübertragungsvorgänge
werden vor allem dadurch eingespart, daß bei der erfindungsgemäßen Anlage die im zusätzlichen
Speicher gespeicherte Anzeige nicht nur den Zugang zum betreffenden Speicherplatz versperrt, sondern
einen nochmaligen Übermittlungsvorgang als ganzen unterbindet.
Außerdem ermöglicht die bekannte Anlage, wie schon erwähnt, immer nur die Aufbewahrung des Ursprungs- -S
zustands des einzelnen laufenden Programmblockes, ohne daß auf davorliegende frühere Ursprungszustände
zurückgegriffen werden könnte. Bei der erfindungsgemäßen Anlage kann dagegen bei Bedarf nicht nur der
Anfangszustand des gerade laufenden Programmblockes wieder hergestellt werden, sondern, falls erforderlich,
kann auch auf jede frühere Ursprungsstufe des Programmablaufs bei mehrfach verschachtelten Programmen
zurückgegriffen werden. Dies Ist bei der erfindungsgemäßen Anlage unproblematisch, da jeweils nur die
Ursprungszustände geänderter Daten, nicht aber diejenigen der ungeänderten Daten pufbewahrt werden und die
Daten der einzelnen Programmblöcke im ersten wie Im zweiten Speicher durch Trennungszeichen getrennt sind,
die anhand von in besonderen Registern gespeicherten Adressen jederzeit zugänglich sind. Damit ist es ohne
weiteres möglich, auf die Ursprungsdaten jedes beliebigen Verschachtelungsgrades des Programmes zurückzugreifen.
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche, Dabei stellen die Ausbildungen
nach den Ansprüchen 2 und 3 zwei Alternativen für die Ausbildung des zusätzlichen Speichers für die
Übertragungsanzeige dar, wovon die Gestaltungsmöglichkeit nach Anspruch 2, für sich allein genominen, nus
der US-PS 37 36 566 an sich bekannt Ist.
Die Erfindung wird nachstehend zum besseren Verständnis mit Bezug auf die anliegenden Zeichnungen -to
beispielsweise in ihren Einzelheiten beschrieben. In den Zeichnungen stellen dar:
Fig. 1 eine schematische Darstellung eines Teils einer Programmstruktur, bei welcher die Erfindung anwendbar
Ist,
die Fig. 2 bis 10 Blockdiagramme, welche die Zustände der verschiedenen Speicher in verschiedenen Zeitpunkten
während der Ausführung des in Flg. 1 dargestellten Programmes zeigen, Fig. 11 Jin Blockschaltbild einer Datenverarbeitungsanlage gemäß einer Ausführungsform der Erfindung,
Flg. 12 ein mehr ins einzelne gehende Blockschaltbild eines Teils der In Fig. 11 dargestellten Anlage,
Flg. 13 ein Blockschaltbild einer alternativen Ausführungsform einer Datenverarbeitungsanlage nach der
Erfindung,
Flg. 14 ein schematisches Diagramm eines Teils einer Programmstruktur, bei welcher die Erfindung anwendbar
Ist, und
die Fig. 15 bis 17 Blockdiagramme, welche die Zustände der verschiedenen Speicher an verschiedenen Stellen
des in Flg. 14 dargestellten Programms zeigen.
Ein Rechnerprogramm mit Maßnahmen zur Fehlerkorrektur Ist aus einer Anzahl von erkennbaren Operationen
zur Fehlerkorrektur aufgebaut, von denen viele aus kleineren Operationen bestehen. Eine Anzahl von
Operationen, die zum Zwecke der Ermöglichung der Fehlerkorrektur zusammengefaßt sind, wird nachstehend
als »Fehlerkorrekturblock« bezeichnet. Jeder Fehlerkorrekturblock muß einen Hauptblock und einen Aufnahmetest
enthalten. Zusätzlich muß er einen oder mehrere Ersatzblöcke aufweisen. Jeder Haupt- oder Ersatzblock
kann seinerseits einen Fehlerkorrekturblock bilden oder enthalten, welch letzterere wiederum mindestens einen
Hauptblock und einen Aufnahmetest enthält.
Flg. 1 zeigt einen Fehlerkorrekturblock I mit einem Aufnahmetest If. Er enthält einen Hauptblock la end
einen Ersatzblock Ιό. Der Hauptblock Ia enthält einen Fehlerkorrekturblock II mit einem Aufnahmetest II/,
einem Hauptblock Πα und zwei Ersatzblöcke 116 und Hc. Der Ersatzblock I* enthält zwei Fehlerkorrekturblöcke
III und IV. Der Korrekturblock III enthält einen Aufnahmetest HIr, einen Hauntblock IHa und einen Ersatzblock
IUb. Der Konrkturblock IV weist einen Aufnahmetest IV/ und einen Hauptbiock IVo auf. Zum leichteren
Verständnis geben die doppelten Vertlkalilnlen die Ausdehnungen der Fehlerkorrekturblöcke an, während die
einfachen Vertikallinien ('.Ie Ausdehnung der Haupt- und Ersatzblöcke angeben.
Jeder Aufnahmetest Ist ein Programmabschnitt, der am Ausgang eines Haupt- oder Ersatzblockes aufgerufen
wird. Er stellt einen binaren Entschluß her, der angibt, ob die erforderliche Operation des Korrekturblockes für
das betreffende Programm, welches den Korrekturblock umfaßt oder aufruft, befriedigend abgelaufen Ist. Für
jeden Korrekturblock Ist ein Aufnahmetest vorgesehen, der beim Ausgang des Hauptblockes und auch beim
Ausgang Irgendeines Ersatzblockes, falls ein solcher erforderlich Ist, aufgerufen wird. Wird der Hauptblock eines
Fehlerkorrekturblockes zurückgewiesen, muß das Programm einen Ersatzblock durchlaufen. Bei Beendigung
dieses Ersatzblockes werden die Ergebnisse dem gleichen Aufnahmetest zugeführt, und falls der Test erfüllt
wird, läuft das Programm unter Verwendung des vom Ersatzblock hergestellten Ergebnisses welter. Wird der
Aufnahmetest wiederum nicht erfüllt, wird ein weiterer Ersatzblock versucht. Sollten sämtliche Ersatzblöcke
versucht worden sein und alle den Aufnahmetest nicht erfüllt haben können, so muß der gesamte Korrektur-(0 block als verfehlt betrachtet werden. Dies erfordert die Zurückweisung des den Korrekturblock aufrufenden
Blockes. Der Wechsel- bzw. Ersatzblock zu diesem Block muß statt dessen versucht werden.
Der Aufnalimetest liegt nicht Innerhalb des Hauptblockes und kann folglich zu eigenen Variablen des Haupt-
oder Ersatzblockes keinen Zugriff haben. Es besteht kein Grund, daß lokale Vereinbarungen In einem Ersatzblock die gleichen wie lokale Vereinbarungen im zugehörigen Hauptblock sein müssen. Wahrend eines Blockes
" getroffene lokale Vereinbarungen müssen, ob ein Aufnahmetest erfüllt oder nicht erfüllt worden Ist, ausgeworfen werden, um das System In den gleichen Zustand zu bringen, welches es bei Beginn dieses Blockes eingenommen hatte, so daß der Ersatzblock In einer herkömmlichen Welse eingeschrieben werden kann, da der
Aufbau des Ersat7.hloclces nicht durch d-e vorhergegangene, nicht zufriedenstellende Ausführung des üaupiblockes oder durch Änderungen der Werte von Variablen wahrend der Ausführung des Hauptblockes beeinflußt
2« werden soll. Wenn also ein Ersatzblock eingegeben wird, so Hegt er mit genau der gleichen Umgebung vor, wie
es beim Eingeben des entsprechenden Hauptblockes der Fall war. Alle Operationen des Hauptblockes sind dann
rückgangig gemacht worden und alle Variablen, die durch den Hauptblock geändert worden sind, sind auf Ihre
ursprünglichen Werte zurückgestellt. Eine weltergehende Erörterung der Anforderungen an ein derartiges
Fehlerkorrektursystem findet sich In »Research On Computing System Reliability at the University of
Newcastle-upon-Tyne. 1972/73« von B. Randell, Technical Report 57, Computing Laboratory, Universität von
Newcastle-upon-Tyne, Januar 1974.
Eine Anwendung der Erfindung, welche nachstehend belsple· i'velse beschrieben wird, liegt bei der Anordnung von Mitteln, mittels welchen die von einem Haupt- oder Ersatzblock veränderten Variablen mit annehmbaren Aufwand auf Ihre ursprünglichen Werte zurückgestellt werden können. Kurz zusammengefaßt, erfolgt
■*> dies durch Aufzeichnung der Kennzeichen der von einem Haupt- oder Ersatzblock veränderten Variablen
zusammen mit den Werten dieser Variablen vor der ersten Modifikation In einem besonderen Speicher, der
nachstehend als Aufbewahrungsspeicher bezeichnet wird. Die Kennzeichen sind so ausgebildet, daß sie genügend Information enthalten, um bestimmen zu können, zu welcher Variablen jeder aufgezeichnete Wert gehört,
und können beispielsweise die Adressen oder die wesentlichen Adressen dieser Variablen enthalten. Bei der
nunmehr beschriebenen Ausführungsform der Erfindung sind sowohl der Hauptspeicher (erster Speicher) als
auch der Aufbewahrungsspeicher (zweiter Speicher) als Stapelspeicher organisiert. Da nur dl? hejm Eintr!» In
einen Korrekturblock vorhandenen Werte der Variablen aufbewahrt zu werden brauchen, ist es nicht erforderlich, irgendwelche Zwischenwerte von Variablen, die sich während eines Korrekturblockes mehr als einmal
ändern, aufzubewahren. Jedem Wort Im Hauptspeicher ist ein Indikator oder ein Boolesches Kennzeichen zuge-
«o ordnet, welches anzeigt, ob der zugehörige Wert Im Aufbewahrungsspelcher bereits gespeichert worden Ist oder
nicht.
Die Fig. 2 bis 9 zeigen den Zustand des Hauptspeichers und des Aufbewahrungsspeichers während des
Durchlaufens eines Hauptblockes Io und dem Beginn eines Ersatzblockes Ib nach Flg. 1. Die angegebenen
besonderen Werte der Variablen dienen nur als Beispiele.
Fig. 2 zeigt die Situation vor dem Eintritt in den Fehlerkorrekturblock I. Die Variable N 1st festgelegt und Ihr
ist der Wert 1 zugeordnet. Der Vorgang der Festlegung der Variablen ordnet ihr eine Adresse am Boden des
Hauptspeichers 10 zu. Zu diesem Zeltpunkt ist der Aufbewahrungsspelcher 12 leer.
Fig. 3 zeigt die Situation während des Hauptblockes Ic. Zuerst werden Im Hauptspeicher 10 und im Aufbewahrungsspeicher 12 Stapelkennzeichen 14 und 16 gesetzt. Diese Stapelkennzeichen zeigen den Beginn eines
5'< Korrekturblock·« an. Während des Programmablaufs des Hauptblockes la sei angenommen, daß die Variable M
festgelegt und ihr der Wert 2 zugeordnet wird. Der Wert 2 wird bei der Adresse der Variablen M, welche sich
Über dem Stapelkennzeichen 14 befindet, in den Hauptspeicher 10 eingegeben. Weiter sei angenommen, daß
während des Programmablaufs des Blockes la der Variablen N ein neuer Wert 3 zugeordnet wird. Die Adresse
der Variablen N Im Hauptspeicher 10 und Ihr ursprünglicher Wert werden Ober der Stapelmarke 16 in den
5< Aufbewahrungsspelcher 12 eingegeben, und an der Adresse der Variablen N im Hauptspeicher 10 wird das
Boole'sche Kennzeichen gesetzt, welches durch ein Sternchen angedeutet ist.
Stapeimarken wie beispielsweise 14 und 16 zeigen den Beginn von einem Korrekturblock zugeordneten Bereichen des Hauptspeichers und des Aufbewahrungsspeichers an. Irgendwelche über der obersten Stapelmarke
befindliche Aufzeichnungen im Hauptspeicher 10 oder Im Aufbewahrungsspeicher 12 müssen während des
laufenden Blockes erfolgt sein.
Während eines Zeitpunkts des Programmablaufs des Hauptblockes la wird ein Korrekturblock II eingegeben,
und Fig. 4 zeigt die Situation während des Hauptblockes Ua dieses Korrekturblockes II. Bei Beginn des Korrekturblockes II werden weitere Stapelmarken 18 bzw. 20 Im Hauptspeicher 10 und im Aufbewahrungsspelcher 12
gesetzt und das Boole'sche Kennzeichen zur Variablen N Im Hauptspeicher 1st gelöscht^ da nun kein Wert für
ft5 die Variable Λ' mehr im Aufbewahrungsspelcher 12 über der obersten Stapelmarke vorhanden 1st. Es sei angenommen, daß während des Hauptblockes Ua eine Variable J festgelegt und ihr der Wert 3 zugeordnet wird.
Dieser Wert wird über der Stapelmarke 18 In den Hauptspeicher 10 eingegeben.
Unter Bezugnahme auf Fig. 5 sei nun angenommen, daß während des Hauptblockes Πα der Variablen M der
Wert 4 zugeordnet wird. Diese Variable M war vor dem Beginn des laufenden Blockes vereinbart worden und
befindet sich folglich Im Hauptspeicher 10 unter der Stapelmarke 18, welche den Beginn des Korrekturblockes
Il bezeichnet. Sowohl die Adresse als auch der ursprüngliche Wert der Variablen M werden über der Stapelmarke
20 In den Aufbewahrungsspeicher 12 eingegeben und der neue lokale Wert 4 der Variablen M wird In
den Hauptspeicher 10 eingegeben. Außerdem wird bei der Adresse M Im Hauptspeicher 10 das mit einem
Sternchen angedeutete Boole'sche Kennzeichen gesetzt.
Gfnäß Flg. 6 sei angenommen, daß ebenfalls während des Programmablaufes des Hauptblockes Πα der Variablen
M der Wert M+ 1 zugeordnet wird. Die Adresse und der unmittelbar vorhergehende Wert der Variablen N
werden In den obersten Teil des Aufbewahrungsspeichers 12 eingegeben. Der lokale Wert der Variablen /V wird
In den Hauptspeicher 10 eingegeben und das Boole'sche Kennzeichen wird entsprechend gesetzt. ι«
Sodann sei unter Bezugnahme auf Flg. 7 angenommen, daß während des Programmlaufes des Hauptblockes
Ha eine weitere lokale Zuordnung, beispielsweise des Wertes 6, zur Variablen M erfolgt. Die Tatsache, daß dies
nicht die erste Zuordnung durch eine Operation während dieses Blockes Ist, wird durch das Vorhandensein des
gesetzten Boole'schen Kennzeichens an der Adresse der Variablen M Im Hauptspeicher 10 angezeigt. Folglich
wird der neue Wert für die Variable M In den Hauptspeicher 10 eingegeben, jedoch wird der unmittelbar υ
vorhergehende Wert dieser Variablen nicht In den Aufbewahrungsspeicher eingebracht, da dort bereits ein
früherer Wert eingegeben worden Ist. Die Eingabe dieses Wertes wird durch das Vorhandensein eines Boole'
sehen Kennzeichens bei der Adresse 17 verhindert. Das Boole'sche Kennzeichen bleibt natürlich gesetzt.
Flg. 8 zeigt die Zustände, nachdem am Ende des Hauptblockes Ua der Aufnahmetest Hf ausgeführt worden
Ist und ergeben hat, daß der Test erfüllt Ist. Der Stapel Im Hauptspeicher 10 wird an der obersten Stapelmarke -ü
18 abgeschnitten, welche den Beginn des Korrekturblockes II angezeigt hat, so daß die lokale Variable J
gelöscht ist. Alle Kennzeichen werden gelöscht, sodann werden die Kennzeichen für Variable gesetzt, welche Im
zweltobersien Bereich (zwischen den Stapelmarken 16 und 20) des Aufbewahrungsspeichers 12 Eintragungen
haben. Diese Eintragungen Im Aufbewahrungsspeicher wurden vor Beginn des Korrekturblockes II Im Korrekturblock
I gemacht. Dadurch wird die Aufzeichnung wieder hergestellt, aus welcher Variable bereits aufbewahrt
worden sind, als der gegenwärtige Korrekturblock II eingegeben worden Ist. Alle Eintragungen Im Aufbewahrungsspeicher
12 über der Stapelmarke 16 werden dann verarbeitet. Diejenigen Eintragungen, deren Adressen
angeben, daß sie lokalen Variablen des übergeordneten Blockes I zugeordnet sind, d. h. die Adressen über der
Stapelmarke 14, werden gelöscht, beispielsweise die Eintragung M, 2. Diejenigen Eintragungen, welche Variablen
entsprechen, für welche Im zweitobersten Bereich des Aufbewahrungsspeichers 12 bereits Eintragungen -1"
existieren, werden gelöscht, da diese Variablen Im übergeordneten Korrekturblock I bereits aufbewahrt worden
sind, beispielsweise die Eintragung JV, 3. Wenn über der Stapelmarke 20 noch weitere Eintragungen wären,
würden sie nach unten in den zweitobersten Bereich des Aufbewahrungsspeichers 12 gebracht werden, so daß
sie die nächsten Speicherwörter einnehmen, beginnend mit demjenigen, das vorher von der Stapelmarke 20
eingenommen worden Ist. Für jede derartige Eintragung, die nicht gelöscht wird, beispielsweise die Eintragung
JV, 1, wird das Boole'sche Kennzeichen entsprechend der mit der wesentlichen Adresse bezeichneten Variablen
gesetzt, was anzeigt, daß diese Variablen tatsächlich auch Im übergeordneten Korrekturblock I aufbewahrt
worden sind. Wenn der Rücksprung vom laufenden Korrekturblock II zum übergeordneten Korrekturblock I
erfolgt, wird der zweitoberste Bereich (über der Stapelmarke 16) des Aufbewahrungsspeichers 12 zum obersten
Bereich. Da der Aufnahmetest Hf erfüllt worden Ist, geht das Programm nunmehr vom Hauptblock Ia aus zum ■»"
Aufnahmetest If, welcher, was beispielsweise angenommen sei, nicht erfüllt wird. Die Einrichtung muß die
Werte der Variablen wiederherstellen, als ob der Block la überhaupt nicht durchlaufen worden wäre. Die Variable
M ist eine lokale Variable des Blockes Ia und wird deshalb gelöscht. Die Variable /V Ist während des Blokkes
Ia geändert worden und Ihr ursprünglicher Wert Ist Im Aufbewahrungsspeicher aufgezeichnet. Dieser
ursprüngliche Wert (1) wird wieder hergestellt und das Kennzeichen für die Variable N wird gelöscht. Die ·»>
Stapelmarken 14 und 16 werden aus dem Hauptspeicher 10 und dem Aufbewahrungsspeicher 12 entfernt. Die
Zustände der Speicher 10 und 12, wie sie in Flg. 9 dargestellt sind, sind nun genau so, als ob der Block Ia
überhaupt nicht eingegeben worden wäre, d. h. sie sind genau gleich demjenigen gemäß Fig. 2.
Da der Aufnahmetest If nicht erfüllt worden Ist, fährt das Programm mit dem Ersatzblock 16 fort. Die Situation
entspricht nun Jer Darstellung In Flg. 10. Im Hauptspeicher 10 und im Aufbewahrungsspeicher 12 so
werden Stapelmarken 14 bzw. 16 gesetzt. Es wird eine Variable L festgelegt und es wird dieser Variablen der
Wert 7 zugeordnet und In den Hauptspeicher 10 eingegeben. Die Operationen laufen dann analog dem oben mit
Bezug auf den Hauptblock Ia beschriebenen Ablauf ab.
Flg. 11 zeigt einen sogenannten Aufbewahrungsmechanismus zur Realisierung des oben beschriebenen
Systems. Der Mechanismus wird In Verbindung mit einer Informationsverarbeitungseinrichtung wie belsplelsweise
einer Zentraleinheit 30 verwendet und weist einen Hauptspeicher 32 (erster Speicher), der ein Wort breit
ist, einen Bitspeicher 34 (zusätzlicher Speicher), der ein Bit breit Ist und so viele Bits aufweist, wie der Hauptspeicher
Wörter enthält, und einen Aufbewahrungsspeicher 36 (zweiter Speicher) auf, der breit genug ist, um
eine Hauptspeicheradresse und ein Hauptspeicherdatenwort In jedem Aufbewahrungsspeicherwort aufzunehmen.
Der Aufbewahrungsspeicher 36 entspricht dem Aufbewahrungsspeicher 12 der Fig. 2 bis 10, und der Haupt- <·"
speicher 32 zusammen mit dem Bitspeicher 34 entspricht dem Hauptspeicher 10 der Fig. 2 bis 10. Jeder der
drei Speicher 32, 34 und 36 weist drei Steuerleitungen auf, nämlich eine Leseleitung zur Ausführung einer
Leseoperation, eine Schreibleitung zur Ausführung einer Schreiboperation und eine »Breit«-Leltung, um anzuzeigen,
daß der betreffende Speicher eine vorhergehende Lese- oder Schreiboperation beendet hat.
Die Daten werden zwischen der Zentraleinheit 30 und den verschiedenen Speichern 32, 34 und 36 über eine
Datenvlelfachleltung 38 übertragen, welche acht Datenwege enthält, die jeweils ein Wort breit sind. Jeder
Daienweg führt ein ihm zugeordnetes Signal P, Q, E, S, F, U, V und G, und diese Signale sind an den Eingängen
von sechs Registern R, E, A, H. C und D und einem Registerblock G verfügbar.
Gemäß Flg. 12 Ist jedes der Register R, E, A, H, C und D als doppelreihiges Register 40 ausgebildet, welches
ein Wort breit Ist. Der Eingang des Registers 40 Ist mit dem Ausgang eines Multiplexers 42 mit acht Eingangen
verbunden. Jeder ein Wort breite Eingang Ist mit einem entsprechenden Datenweg der Datenvielfachleltung 38
(Flg. 11) verbunden. Die Tätigkeit des Multiplexers 42 wird über eine Leitung 44 durch Signale von der Steuer-
logik der An'age gesteuert. Die Leitung 44 liefert auch eine Steuerwellenform, die mit einem Signal eines Taktgebers 47 In einem UND-Glied 46 kombiniert wird, um eine Signalauswertewellenform für das Register 40 zu
erzeugen. Die vordere Flanke der Signalauswertewellenform bewirkt, daß das Register 40 das vom Multiplexer
42 kommende Eingangssignal liest, und die hintere Flanke dieser Wellenform bewirkt, daß dieser neue Zustand
am Ausgang des Registers 40 erscheint.
Gemäß Flg. U weist der Registerblock G ebenso wie der Multiplexer 42 einen von der Datenvielfachleltung
38 kommenden Multlplexerelngang auf. Außerdem enthält dieser Registerblock fünf Innere Register CM, CN.
CO. CP und CQ und besitzt einen Wähleingang, an welchen Signale »Wähle CM«, »Wähle CN«, »Wähle COu,
»Wähle CPv. und »Wähle CQ« angelegt werden können. Das gewählte Register wird gesetzt, wenn Daten In den
Registerblock G eingelesen werden und bietet seinen Inhalt am Ausgang des Registerblockes G dar, wenn Daten
auszulesen sind.
Das Register CM wird zur Aufnahme der Adresse der obersten Stapelmarke (Trennungszeichen) Im Aufbewahrungsspeicher 36 verwendet. Diese Stapelmarke enthält die Adresse der nächsten darunterliegenden Stapelmarke usw. Die unterste S'.apeim.arkc enthSii eine Adresse, welche sie als solche erkennen !sßt.
Das Register CP enthält die Adresse des leeren Wortes Im Aufbewahrungsspeicher 36, welches unmittelbar
über dem höchsten, gegenwärtig benützten Wort Hegt, d. h. also der nächsten verfügbaren Adresse Im Aufbewahrungsspeicher 36. Das Register CN enthält eine Kopie des Im Register CP gespeicherten früheren Wertes,
d. h. der letzten benutzten Adresse im Aufbewahrungsspeicher 36. Diese wird während der »Ausgang«-Operatlon verwendet.
Das Register CO enthält die Adresse eines Wortes Im obersten Bereich des Aufbewahrungsspeichers 36 und
wird während der dritten Stufe der »Ausgang«-Operatlon zum Abfragen des obersten Bereiches des Aufbewahrungsspeichers benutzt, wie nachstehend erklärt wird.
Das Register CQ enthält die Adresse des höchsten, für den Gebrauch verfügbaren Wortes des Aufbewahrungsspeichers.
Das Register R hält ein Datenwort fest, welches in die Zentraleinheit 30 zurückgegeben werden muß. Das
3» Register E hält die Adresse der obersten Stapelmarke Im Hauptspeicher 32 fest. Die oberste Stapelmarke enthält
die Adresse der nächsten Stapelmarke usw. Die unterste Stapelmarke enthält eine Adresse, welche es ermöglicht, diese Marke als unterste Stapelmarke zu erkennen. Das Register A bewahrt die gegenwärtige Hauptspeicheradresse auf. Sie wird zum Adressleren sowohl des Bitspeichers als auch des Hauptspeichers verwendet und
seine Inhalte können In eine Seite des Aufbewahrungsspeichers eingeschrieben werden.
Die Ausgänge des Registers E und des Registers A sind mit einem Vergleicher 48 verbunden, der ein
Ausgangssignal Y erzeugt, wenn das Ausgangssignal das Registers A größer als dasjenige des Registers £ 1st.
Folglich zeigt das Signal Y an, daß die Adresse, die sich nun im Register A befindet, höher als die höchste
Stapelmarke Ist, und daß folglich die durch die Adresse Im Register A adressierte Variable lokal dem gerade
ablaufenden Korrekturblock zugehört.
Das Register C bewahrt die Adresse auf, die für den Aufbewahrungsspeicher zu verwenden Ist. Zusätzlich Ist
sein Ausgang mit dem Eingang einer Zunahme/Abnahme-Einheit 50 verbunden, die einen Steuereingang FUN
zum Empfang eines von vier Steuersignalen aufweist, um zu bewirken, daß die Einheit ein Ausgangssignal F
erzeugt, welche auf ihr Eingangssignal C bezogen Ist, wie In der nachstehenden Tafel I angegeben ist.
Tafel I
FUN
5" ZUNAHME C+ 1
ABNAHME C - 1
GLEICHHEIT C
NULL 0
.....--■■
Das Register D hält einen Teil der Daten fest, die In den Aufbewahrungsspeicher 36 einzuschreiben sind. Der
andere Teil dieser Daten befindet sich im Register A.
Die Ausgänge der Register C und C sind zusätzlich mit einer Glelchheltseinhelt 52 verbunden, welche ein
Signa; Z erzeugt, wenn die Werte In den beiden Registern C und D gleich sind.
ω Zusätzlich zum Register R enthält die Schnittstelle mit der Zentraleinheit 30 zwei Datenwege P und Q. Der
Datenweg P führt die Hauptspeicheradresse, zu welcher die Zentraleinheit Zugang sucht, und der Datenweg Q
führt die Daten, welche die Zentraleinheit 30 speichern will oder weiche In die Register der Anlage einzugeben
sind. Ein Datenweg R, der durch den Ausgang des Registers R gebildet Ist, führt die Daten, die der Zentraleinheit 30 zugeführt werden.
Die Steuerlogik der Anlage wird nachstehend mehr Im einzelnen beschrieben. Es ist jedoch zweckmäßig, an
dieser Stelle zuerst die Steuersignale zu beschreiben, welche zwischen der Steuerlogik der Anlage und der
Zentraleinheit 30 auftreten. Die Einrichtung weist zwei Steuersignale auf, welche der Zentraleinheit 30 zugeführt werden können. Das Signal »Bereit« zeigt an,, daß. die Anlage die von der Zentraleinheit 30 verlangte
ti Operation beendet hat, und dtss Signal »Fehler« zeigt einen Fehlerzustand an.
μ. Die Zentraleinheit 30 Ist In herkömmlicher Welse aufgebaut, so daß wahrend des Verlaufs von Ausführungs-
:; anwelsut.gen Steuersignale erzeugt werden, welche herkömmliche Speicher anweisen, Lese- und Schrelboperatlo-
!,'; nen auszuführen. Außerdem enthält die Zentraleinheit Mittel zur Erzeugung von Steuersignalen, aufgrund
'■'■: welcher die in Flg. 11 dargestellte Einrichtung zusätzliche Operationen ausführt, welche die Verwendung von
g Korrekturblöcken und Aufnahmetests In Programmen betreffen. Die Einrichtung kann folglich eines von 13
fi Steuersignalen von der Zentraleinheit empfangen, welches die Ausführung einer der folgenden Opsratlonön
£ bewirkt:
ii »Lesen«: Einbringen des Wertes des zu lesenden Wortes aus dem Hauptspeicher 32 mit der geeigneten
: tatsächlichen Adresse; -
»Schreiben«: Aufzeichnen eines neuen Wertes für eine Variable;
»Eingang«: Eingang In einen Fehlerkorrekturblock;
»Eingang«: Eingang In einen Fehlerkorrekturblock;
»Rückführen«: Dieses Steuersignal Ist erforderlich, wenn ein Aufnahmetest einen Block zurückweist;
»Ausgang«: Bei erfolgreichem Beendigen eines Aufnahnretests;
»Rückstellen«: Rückstellen des Mechanismus in den Ausgangszustand, aus welchem die Zentraleinheit mit
dem Ablauf eines neuen Programms beginnt; und
sieben weitere Operationen, die ermöglichen, daß das Arbeltssystem der Zentraleinheit Zugang zu den
verschiedenen Registern E, CM. CP und CQ erhalten kann, beispielsweise bei Programmverzahnung.
Die Sicücricg'ik des in Fig. 11 uargesteiiten Aufoewahrungsmechanlsmus wird nachstehend anhand der Tafel
II als Zustandselnhelt beschrieben. Die Zustandsdarstellung definiert jeden Zustand, welchen die Steuerlogik w
einnehmen kann. Diese Zustande sind In der linken Spalte der Tafel Il numeriert.
: Für jeden Zustand bestimmt die mittlere Spalte der Tafel die zu erzeugenden Steuerwellenformen, wenn sich
die Steuerlogik In diesem Zustand befindet. Die Steuersignalformen, welche die Signalauswertung in den
verschiedenen Registern steuern, sind In der Form P-A angegeben. Dies gibt an, daß Signalformen zu erzeugen
sind, welche sowohl das Eingeben von Daten In das Register A als auch das Wahlen des P-Elngangs durch den
zugehörigen Multiplexer bewirken.
Der nächste Zustand, welchen die Steuerlogik einnehmen muß, Ist in der rechten Spalte der Tafel II gekennzeichnet.
Wenn In dieser Spalte eine einzige Zahl erscheint, so Ist dies die Nummer des nächsten Zustands, der
unter allen Umständen einzurahmen Ist. Soll die Steuerlogik verschiedene Zustände einnehmen können, welche
jeweils vom Vorhandensein oder NichtVorhandensein von, von der Steuerlogik abzutastenden Signalformen JO
abhängen, so wird dies In der Art des folgenden Beispiels angegeben:
Z-3, Z-2,
was anzeigt, daß, wenn die Wellenform Z gilt, der nächste Zustand der Zustand 2 Ist, während, falls die
Wellenform Z falsch 1st, der nächste Zustand der Zustand 3 sein muß.
Die Steuerlogik springt in regelmäßigen Intervallen, welche vom Taktgeber 47 (Fig. i2) bestimmt werden,
von einem Zustand zum nächsten Zustand. Die Steuerlogik ist so ausgebildet, daß sie beim Einschalten den
Zustand 1 einnimmt.
(,: Tafel II
Zustand Funktion nächster Zustand
[■ Anfangs- und Endzustände: «
•I 1 LESEN »11
ί SCHREIBEN » 13
Ϊ RÜCKSTELLEN » 21
; SETZEN £ »-31
LESENS »32
; SETZEN CP » 33
LESEN CP »34 ^
, SETZEN CM »35
LESENO/ »36
% SETZEN CQ »37
EINGANG »41 M
; RÜCKFÜHREN » 51
■ AUSGANG »61
'■■ andere Signale oder kein Signal »1
FEHLER RÜCKSTELLEN »2 «
RÜCKSTELLEN »21
BEREIT ι
| Zustand | Funktion | P >A,Q >H |
| Lesen: | WÄHLE CP, G »C | |
| 11 | P >A | LESEN A ■ LESEN B, S |
| 12 | LESEN^S *R | |
| Schreiben: | ||
| 13 | ||
| 14 |
nächster Zustand
RÜCKETZEN
SETZEN
SETZEN,
F »C
WÄHLE CQ, G *D
21 NULL, WÄHLE CAi F » G, F » E
22 NULiL, WÄHLE CN, F » G
23 NULlI,, WÄHLE CP, F » G
24 NULL, WÄHLE CQ, F ► G, BEREIT
31 32 33 34 35 36 37
BEREIT
*R
WÄHLE CR Q WÄHLE CP, G WÄHLE CM, Q
WÄHLE CM, G WÄHLE Ca Q
G, BEREIT R
> C, BEREIT »/?
► G, BEREIT
41 Q ► E, WÄHLE CM, G ► C
42 WÄHLE CP, G *D
43 ZUNAHME,/· »C
45 LESEN C, U »A
46 SCHRIiIBEN B, RÜCKSETZEN
47 WÄHLE CM, G >D
48 SCHFJiIiBEN C, GLEICHHEIT, WÄHLE CM, F ► C, F » G
■12 •
•14 15
BEREIT A ■ BEREIT B -BEREITyI · BEREIT B-
Y »16.Ϋ - X »17
Y + X »18
»17 »
BEREITE · BEREIT £ BEREIT A ■ BEREIT B
»18
BEREIT A ■ BEREIT B ■ BEREIT C
»19
42 43 44 Z-
-45, Z-
BEREIT C-BEREIT B -
48
BEREIT C-
—»47
► 45, BEREIT C-
' 46, BEREIT B -
'48, BEREIT C-
Fortsetzung
Zustand Funktion
nächster Zustand
ZUNAHME, WÄHLE CP, F-
Rückffihren:
Q »£, WÄHLE CM, G-
WÄHLE CP, G-ABNAHME, F » C
>D
► C
LESEN
SCHREIBEN V4, SCHREIBEN B,
RÜCKSETZEN
ZUNAHME, WÄHLE CP, F » G,
BEREIT
BEREIT C-BEREIT A
BEREIT A
1
BEREIT A
1
► 55, Z »57
—»55, BEREIT C-
BEREIT B » 56
BEREIT B »53
► 56
| Ausgang: | WÄHLE CM G | »C, G »D, Q | »C | »C | -»£62 | »69 | 68 |
| 61 | GLEICHHEIT, | WÄHLE CO, F » G | 63 | -»67, BEREITC » | 65 | ||
| 62 | WÄHLE CP, G- | » C GLEICHHEIT, | ->A | -♦A | 64 | -» 68, BEREIT B » | 70 |
| 63 | F >G | RÜCKSETZEN | SETZEN | -»69, BEREITC ► | |||
| WÄHLE CiV, GLEICHHEIT, F » G | LESEN C1 WÄHLE CM, V » G, V | »C | 65 | ||||
| 64 | ABNAHME, F- | ABNAHME, F- | » C, WÄHLE CN, | 66 | »74 | 73 | |
| 65 | Z »67, Z- | -»72, BEREITC » | 70 | ||||
| 66 | LESEN C, U— | LESEN C, U— | WÄHLE CO, F » G | BEREIT C | -» 73, BEREIT B » | ||
| cn | SCHREIBEN B, | SCHREIBEN B, | »Λ, V >D | BEREIT B | |||
| 68 | WÄHLE CO, G | -» D BEREIT C | |||||
| 69 | ZUNAHME, F- | 71 | |||||
| 70 | G *D | ► C, SCHREIBEN B, | Z »72, Z- | »73 | 78 | ||
| 71 | GLEICHHEIT, | BEREITC | -»77, BEREITC » | 79 | |||
| 72 | Lesen C, U | BEREIT B | -♦ 78, BEREIT B ► | ||||
| 73 | LESEN B | ZUNAHME, WÄHLE CP, F » G | 75 | ,X+ Y »75 | r> | ||
| 74 | 76 | -»80, BEREITS ► | |||||
| 75 | WÄHLE CP, G- | 82 | |||||
| SETZEN | Z »77, Z- | -»81, BEREIT C » | |||||
| 76 | SCHREIBEN C | BEREITC | |||||
| 77 | BEREIT B | ||||||
| 78 | X+ Y »80 | ||||||
| 79 | BEREIT B | ||||||
| 80 | |||||||
| BEREITC | |||||||
| 81 | 74 | ||||||
| 82 | |||||||
Der Zustand 1 stellt die 13 Steuersignale von der Zentraleinheit fest und leitet die geeignete Funktion ein.
Der Zustand 2 Ist ein Fehlerzustand, der das Rückstellen der Zentraleinheit 30 bewirkt.
Die Zustande 11 und 12 bewirken die Leseoperation. Die Adresse wird während des Schrittes 11 von der
Zentraleinheit 30 dem Register A zugeführt und der Hauptspeicher 32 wird abgelesen und sein Ausgangssignal
gelangt während des Zustands 12 In das Register R. Falls der Hauptspeicher 32 nicht sofort antwortet, verbleibt
die Steuerlogik im Zustand 12, bis eine Antwort erhalten worden Ist.
Der Zustand 3 wird be! vielen Funktionen verwendet, um eine »Fertig«-A nt wort zur Steuereinheit 30 zu
leiten und um In den Zustand I zurückzuspringen.
Die Zustände 13 bis 20 bewirken die Schreiboperation. In den Zuständen 13 und 14 werden das Bltkennzelchen
des zu schreibenden Wortes und auch seine Inhalte in das Register D eingelesen, fails dieses Wort Im
Aufbewahrungsspeicher 36 aufbewahrt werden muß. Der Zustand 15 stellt fest, ob das adressierte Wort lokal Ist
(nächster Zustand 16), oder bereits aufbewahrt wird (nächster Zustand 17) oder zum ersten Mal während des
laufenden Korrekturblockes zugeordnet wird (nächster Zustand 18). Der Zustand 18 zeichnet auch den früheren
Wert des Wortes und seine Adresse Im Aufbewahrungsspeicher 36 auf, erhöht den Wert der Hinwelsadresse des
Aufbewahrungsspeichers und führt diesen in das innere Register CP im Registerblock G zurück. Die Zustände
19 und 20 prüfen den Gebrauch des letzten Wortes des Aufbewahningsspeichers und können ein Fehlersignal
erzeugen, falls ein Fehler existiert.
Die Zustände 21 bis 24 betreffen das Einbringen von Werten In die innere Register des Registerblockes G.
Die Schritte 31 bis 37 sind der Übertragung von Daten in die Zentraleinheit und aus der Zentraleinheit 30 zugeordnet.
Die Schritte 41 bis 49 bewirken den Eingang in den Fehlerkorrekturblock. Die Zustände 41 und 42 setzen die
Grenzen des obersten Bereiches des Aufbewahrungsspeichers in den Registern C und D. Die Zustände 43 bis 46
stellen eine Schleife dar, welche Im Register C eine Aufsummierung vornimmt, um den obersten Bereich des
ίο Aufbewahrungsspeichers abzutasten, und welche den Adressenteil jedes Aufbewahrungsspeichereingangs liest,
um das Bitkennzeichen jedes zugehörigen Hauptspeicherwortes zurückzustellen. Da bei einem Wort das Bit nur
gesetzt werden kann, wenn für dieses Wort eine Aufzeichnung Im obersten Teil des Aufbewahrungsspeichers
vorhanden ist, werden dadurch alle Bitkennzeichen Im Bitspeicher 34 zurückgestellt. In den Zuständen 47 bis
49 werden die vorhandenen Inhalte der inneren Register CM in den Aufbewahrungsspeicher 36 eingeschrieben,
um eine Stapelmarke zu bilden und neue Werte für die Adressen der obersten Stapelmarke im Aufbewahrungsspelcher
(in das Register CM eingegeben) und den obersten Teil des Stapels (in das Register CP eingegeben) zu
erzeugen.
Die Zustände 51 bis 57 bewirken die Rückführungsoperation für den Eingang in einen Korrekturblock und
werden zur Wiederherstellung der ursprünglichen Werte von Variablen benützt, welche nach der Nichterfüllung
eines Aufoshmetests im Korrekturblock modifiziert worden sind. Diese Zustände bilden eine Schleife, die Im
wesentliche» ähnlich derjenigen der Zustände 41 bis 46 !st, mit der Ausnahme, daß die Aufbewahrungsspeicher-
werte, die im obersten Teil des Aufbewahrungsspeichers 36 aufgezeichnet sind, wieder In den Hauptspeicher
eingeschrieben werden, so daß die Auswirkungen des fehlerhaften Blockes gelöscht werden. Der Zustand 57
stellt die Hinwelsadresse für den obersten Teil des Aufbewahrungsspeicherstapels ein, die im Register CP
gespeichert ist.
Die Zustände 61 bis 82 bewirken die Ausgang-Operation nach erfolgreichem Durchlaufen eines Aufnahmetests.
Die Zustände 61 bis 64 bewahren in den Registern CiV und CO Kopien der existierenden Eintragungen In
den Registern CP und CM für den nachfolgeöden Gebrauch auf. Die Zustände 61 bis 64 setzen im Register CP
auch die Inhalte des Reglste.-s CM, um anzuzeigen, wo sich die Spitze des Stapels befindet, wenn der oberste
Bereich entfernt worden ist. Die übrigen Zustände weisen drei Schleifen auf. Die Zustände 65 bis 68 dienen
dem Abtasten des obersten Aufbewahrungsspeicherbereiches von der Spitze aus nach unten, wobei die Kennzeichnungsbits
sämtlicher Wörter, die im obersten Bereich des Aufbewahrungsspeichers 36 gespeichert sind,
d. h. alle Ire Bitspeicrwr 34 fcssetzten Kennzeichnungsbits, zurückgesetzt werden. Beim Zustand 69 wird die
Aufbewahrungsspeichersupclmarke zwischen den beiden obersten Bereichen des Aufbewahrungsspeichers 36
ausgelesen und als nächste Stapvjnarke In das Register CAi eingelesen und auch in das Register D eingebracht
um den Boden des zweiten Bereiches des Aufbewahrungsspeicherstapels anzuzeigen. Die Zustände 70 bis 73
führen die Abtastung nach unten durch den zweiten Bereich des Aufbewahrungsspeichers fort, wobei die Kennzelchnungsblts
der im zweiten Bereich des Aufbewahrungsspeichers gespeicherten Wörter im Bitspeicher 34
gesetzt werden, d. h. die Kennzeichnungsbits, die bei der früheren Eingangsoperation entfc.nt worden sind
•»η Während der Zustände 74 bis 79 wird rückwärts nach oben bis zur Spitze des Aufbewahrungsspeicherstapels
abgetastet, um festzustellen, ob die Im obersten Bereich aufgezeichneten Elemente lokal (durch die Signalform
Y angezeigt) oder bereits im zweiten Bereich vorhanden (durch die Slgnalforci X angezeigt) sind oder aus dem
obersten Bereich des Aufbewahrungsspeicherstapels in den zweiten Bereich kopiert werden müssen. Das Register
CO hält eine Hinwelsadresse fest, die um 1 kleiner als die Adresse der nächsten zu prüfenden Eintragung
im obersten Bereich Ist, um das Register OV enthält eine Hinwelsadresse, die um 1 größer als die Adresse der
obersten Eintragung im obersten Bereich 1st. Falls der Test Im Schritt 79 feststellt, daß die Aufzeichnung Im
Aufbewahrungsspeicher weder lokal noch bereits In dieser Stufe gespeichert ist, so wird diese Eintragung In den
Schritten 80 bis 82 mit der durch die Aufbewahrungsspeicherstapelspitze gegebenen Adresse (Register CP), die
dann erhöht wird, wieder In den Aufbewahrungsspeicher 36 eingeschrieben. Das Kennzeichnungsbit des el'ngespeicherten
Wortes wird ebenfalls gesetzt.
Die Zustandseinhelt kann als äquivalente logische Maschinenausrüstung ausgeführt werden, wie In »1 heory
and Design of Digital Machines« von T. C. Bartee, McGrew Hill, 1962, beschrieben Ist. Alternativ dazu kann
die Zustandssteuerung als Mikroprogramm ausgebildet werden, wie In »Microprogramming, Principles and Practice«
von S. S. Husson, Prentice Hall, 1970, beschrieben 1st.
-« Bei einer alternativen Ausführungsform der Erfindung Ist ein zusätzliches Register vorgesehen, welches eine
Zahl speichert, welche die gegenwärtige »Korrekturstufe« angibt, d. h. die gegenwärtige Tiefe der dynamischen
Verschachtelung der Korrekturblocks, oder, Ir. anderen Worten, die Anzahl der Bereiche des Aufbewahrungsspeichers (die durch Stapelmarken getrennt sind), die gegenwärtig In Gebrauch sind. Der Inhalt dieses Registers
wird jeweils beim Eingang und beim Ausgang eines Korrekturblockes um 1 erhöht bzw. verringert. Der Bltspel-M'
eher 34 der in Flg. 11 dargestellten Ausführungsform der Erfindung Ist durch einen Korrekturstufenspeicher
ersetzt, der für jeden Im Hauptspeicher 32 aufgezeichneten Wert eine Korrekturstufe speichert. Wenn eine Variable
in den Aufbewahrungsspeicher 36 eingegeben wird, werden sowohl der Wert als auch die Korrekturstufe
des zugehörigen Wortes Im Korrekturstufenspeicher aufgezeichnet, so daß bei Aufbewahrung einer Variablen,
d. h. beim Speichern dieser Variablen und Ihres Kennzeichens Im gegenwärtig obersten Bereich des Aufbewah-M
rungsspelchers 36, aufgezeichnet wird, wann die Variable früher In den Aufbewahrungsspeicher eingegeben
worden oder als lokale Variable vereinbart worden ist.
Wenn eine Variable festgelegt und Ihr ein Platz Im Hauptspeicher 32 zugewiesen worden Ist, wird die gegenwärtige
Korrekturstufe In den zugehörigen Teil des Korrekturstufenspeichers eingegeben. Beim Eingang eines
ί Korrekturblockes wirr! das Korrekturstufenregister um 1 erhöht und im Aufbewahrungsspeicher wird eine neue
c; Marke gesetzt. Bei dem im Hauptspeicher gespeicherten Datenstapel findet keine Operation statt.
b> Bei Zuordnung eines neuen Wertes zu einer Variablen wird zuerst eine Untersuchung angestellt, um zu
sehen, ob die Korrekturstufe der im Hauptspeicher gespeicherten Variablen gleich der gegenwartigen Korrektur-
:* stufe ist. Falls ja, wird der neue Wert In den Hauptspeicher eingegeben und keine Aufbewahrung bewirkt. Der s
Y: Korrekturstufenspeicher verbleibt ebenfalls unverändert. Falls die Korrekturstufe der Variablen nicht dem
H gegenwärtigen Korrekturniveau entspricht, wird eine neue Eintragung Im Aufbewahrungsspeicher hergestellt.
- Diese neue Eintragung Jm Aufbewahrungsspeicher besteht aus der Kennzeichnung, dem früheren Wert und
dem früheren Korrekturniveau dieser Variablen, wie er Im Korrekturstufenspeicher gespeichert war. Der neue
\. Wert wird nunmehr In den Hauptspeicher eingegeben und die Korrekturstufe im Korrekturstufenspeicher wird i"
-:■ gleich dem gegenwärtigen Korrekturniveau gesetzt.
;; Bei Zurückweisung durch einen Aufnahmetest werden die Aufzeichnungen im obersten Bereich des Aufbe-
wahrungsspeichers eine nach der anderen verarbeitet, wobei Ihre Wert- und Korrekturstufenfelder in die Speicherplätze
des Hauptspeichers zurückkopiert werden und der Korrekturstufenspeicher durch Ihre Kennzeichen
■ entsprechend bezeichnet wird. Der Aufbewahrungsspeicher wird bis zur Stapelmarke für diesen Korrekturblock,
)! jedoch nicht einschließlich dieser Stapelmarke, zurückgesetzt. Die gegenwärtige Korrekturstufe verbleibt unver-
■ ändert.
Nach der Annahme durch einen Aufnahmetest wird die gegenwärtige Korrekturstufenzählung um 1 vermin-
':: dert. Die Eintragungen im obersten Bereich des Aufbewahrungsspeichers werden eine nach der anderen verar-
■:!■ beitet. Die Korrekturstufen in den Korrekturstufenspeicherwörtem, welche den tatsächlichen Adressen der
~l Eintragungen Im obersten Bereich des Aufbewahrungsspeichers entsprechen, werden gleich de; gegenwärtigen
Korrekturstufe gesetzt. Wenn dann die Korrekturstufe der Aufbewahrungsspeichereintragung gleich Jem gegen-
Ii wältigen Korrekturniveau ist, wird diese Eintragung gelöscht. Anderenfalls wird die Eintragung nach unten in
■' den nächsten Aufbewahrungsspeicherbereich transportiert.
iy Fig. 13 zeigt ein Blockschaltbild einer Einrichtung, welche der oben beschriebenen Ausführungsform
: entspricht und mit Korrekturstufen arbeitet und dem Biockdlagrarr. ά nach F i g. 11 äquivalent ist.
Die in Fig. 13 dargestellte Einrichtung dient dem Gebrauch in Verbindung mit einer Informatlonsverarbei-
i■'. tungselnrichtung wie beispielsweise einer Zentraleinheit 70. Die Einrichtung weist einen Hauptspeicher 72, der
f[ ein Wort breit ist, einen Korrekturstufenspeicher 74, der breit genug ist, um eine Korrekturstufenzahl und
■ ebenso viele Wörter wie der Hauptspeicher aufzunehmen, und einen Aufbewahrungsspeicher 76 auf, der breit 3»
V genug ist, um ein Hauptspeicherwort, eine Hauptspeicheradresse und eine Korrekturstufenzahl aufzunehmen.
Jeder dieser Speicher 72, 74 und 76 weist drei Steuerleliungen auf, nämlich eine Leseleitung zur Einleitung von
: Leseoperationen, eine Schreibieitung zur Ausführung von Schreiboperationen und eine »Bereit«-Leitung, die
anzeigt, daß der Speicher die vorhergegangene Lese- oder Schreiboperation vollständig ausgeführt hat.
Die Daten werden zwischen der Zentraleinheit 70 und den verschiedenen Speichern 72, 74 und 76 über eine -"
Datenvielfachleitung 78 übertragen, welche zehn Datenwege enthält, die jeweils ein Wort breit sind. Jeder
Datenweg führt ein ihm zugeordnetes Signal F, Q, S, T, E, F, U, V, W und G, und diese Signale sind an den
Eingängen von sieben Registern R, A, H, E, K, C, D und eines Registerblockes G verfügbar.
Die Register R. A, H, E, K, C und D sind von der In Flg. 12 dargestellten Bauart, mit der Ausnahme, daß der
Multiplexer anstatt für acht Eingänge für zehn Eingänge ausgelegt Ist.
Wie bereits erläutert, wird die Notwendigkeit zur Aufbewahrung einer Variablen durch die relativen Werte
der gegenwärtigen Korrekturstufenzahl und der Korrekturstufenzahl der in Frage stehenden Variablen bsstimmt.
Das Register E enthält die gegenwärtige Korrekturstufenzahl. Der darin enthaltene Wert wird auf Null gesetzt,
wenn die Einrichtung am Beginn eines Programmabschnittes zurückgestellt wird, und wird automatisch beim
Eingang eines Korrekturblockes und beim Ausgang ohne Hinzuziehung der Zentraleinheit 70 nachbestellt. Das
Register K enthält die KorrektursUffenzahl einer Variablen Im Hauptspeicher 72 oder im Aufbewahrungsspeicher
76, wenn ein Aufbewahrungsentschluß für eine solche Variable oder eine Beibehaltung Ihrer Aufbewahrungsspeichereintragung
vorzunehmen 1st.
Die Ausgänge der Register E und K sind an eine Glelchheltseinhelt 80 angeschlossen, die ähnlich der Einheit
52 In Flg. 11 ist und ein Ausgangssignal Y erzeugt, wenn die In den Registern E und K gespeicherten Werte 5»
einander gleich sind.
Ebenso wie bei der In Fig. U dargestellten Einrichtung enthält der Registerblock G fünf innere Register CM,
CN, CO, CP und CQ. Die Funktionen dieser Register sind denjenigen der entsprechenden Register des Registerblockes
G In FI g. 11 ähnlich und ergeben sich aus der folgenden Beschreibung. Das Register CO wird jedoch
zusätzlich währenci der Rückführungsoperation benützt, um den Wert der gegenwärtigen Korrekturstufenzahl
aufzubewahren.
Die Register R, A, H, C und D haben ähnliche Funktionen wie die entsprechenden Register der In Fig. 11
dargestellten Einrichtung, wobei das Register R ein Datenwort bildet, welches In die Zentraleinheit 70 zurückzuführen
Ist, wobei welter das Register A die Hauptspeicheradresse enthält, <is Register H ein in den Hauptspeicher
72 einzuschreibendes Datenwort enthält, wobei ferner das Register C eine Adresse enthält, die für den ω
Aufbewahrungsspeleher 76 verwendet wird, und wobei das Register D In den Aufbewahrungsspelcher 76 einzuschreibende
Daten enthält.
Der Ausgang des Registers C ist mit dem Eingang einer Zunahme/Abnahme-Einheit 82 verbunden, die
ähnlich der Einheit 50 der In Flg. 11 dargestellten Einrichtung 1st. Die Einheit 82 weist einen Steuereingang
FUN für den Empfang eines von vier Steuersignalen auf, welche bewirken, daß d.e Einheit ein Ausgangssignal F <>'
erzeugt, welches entsprechend der obigen Tafel I auf Ihr Eingangssignal C bezogen Ist.
Das Register D hält e'jien Teil der In den Aufbewahrungsspelcher 36 einzuschreibenden Daten fest, der
andere Teil dieser Daten befindet sich In den Registern A und K.
Die Ausgänge der Register C und D sind zusätzlich mit einer Glelchheltselnhelt 84 verbunden, welche el
Ausgangssignal Z erzeugt, wenn die Werte In den beiden Registern C und D gleich sind.
Zusätzlich zum Register R weist die Schnittstelle mit der Zentraleinheit 70 zwei Datenwege P und Q auf. De
Datenweg P führt die Hauptspeicheradresse, zu welcher die Zentraleinheit Zugang erlangen will, und der Daten
weg Q führt dl« Daten, welche die Zentraleinheit 70 speichern will oder welche In die Register der Elnrlchtun
einzubringen sliadl. Ein Datenweg R, der durch den Ausgang des Registers R gebildet Ist, führt die der Zentral
einheit 70 zuzuführenden Daten.
Die Steuerlogtk des In Flg. 13 dargestellten Aufbewahrungsmechanismus wird nachstehend als Zustandsein
helt gemäß Tafel III beschrieben. Die Zustandsdarstellung definiert jeden Zustand, welchen die Steuerelnhel
einnehmen kann. Diese Zustände sind In der linken Spalte der Tafel nummeriert.
Für jeden Zustand bestimmt die mittlere Spalte der Tafel die Steuersignalformen, welche erzeugt werden
wenn die Steueiilogik sich In diesem Zustand befindet. Diese Signalformen, welche die Signalauswertung In dei
verschiedenen Registern steuern, sind In der Form />-»A gekennzeichnet. Dies bedeutet, daß Slgnalformei
erzeugt werden, die sowohl das Einbringen von Daten In das Register A als auch das Wählen des P-Elngang
durch den zugehörigen Multiplexer bewirken.
Der nächste Zustand, welchen die Steuerlogik einnehmen muß. Ist In der rechten Spalte der Tafel III angege
ben. Wenn in dieser Spalte eine einzige Zahl erscheint, so Ist dies die Nummer des nächsten Zustands, de
unter allen Umständen einzunehmen Ist. Falls die Steuerlosllc verschiedene Zustande einnehmen kann, die von
Vorhandensein oder Nlchtvorhandensein von Signalformen, welche die Steuerlogik abtasten kann, abhängen, si
wird dies In der durch das folgende Beispiel erläuterten Welse angezeigt:
2-3. Z-2
was angibt, daß, falls das Signal Z gilt, der nächste einzunehmende Zustand der Zustand 2 1st. während, fall:
die Signalform Z falsch ist, der nächste einzunehmende Zustand der Zustand 3 Ist.
Die Steuerlogik springt in regelmäßigen Intervallen die von elftem den Registern R bis G zugeordneten Takt
geber ähnlich dem Taktgaber 47 (Flg. 12) bestimmt werden, von '.''nem Zustand zum nächsten. Die Steuerloglt
Ist so ausgebildet, daß sie beim Einschalten den Zustand 1 einnimmt.
Tafel III
Zustand Funktion
nächster Zustand
Anfangs- und Endzustände: 35 1
2 FEHLER
3 BEREIT
Lesen:
11 P -+A
12 LESEN A, S ■
LESEN >19
c ./-ί τ η r? τ o cm - η
J^IIIU-IUL1Ii * IJ
RÜCKSTELLEN »21
SETZEN £ »31
LESENf »32
SETZEN CP »33
LESEN CP ► 34
SETZEN CM >35
LESEN CM * 36
SETZEN CQ »37
EINGANG ► 41
RÜCKFÜHREN »51
AUSGANG * 61
andere Signale oder kein Signal
RÜCKSTELLEN »2
RÜCKSTELLEN ► 21
12
BEREIT A BEREIT A
•12 • 3
Schreiben:
13 P >A,Q *H
WÄHLE CP, G >C
14
12
Fortsetzung
nächster Zustand
LESEN A, LESEN B, S >D, T >K
SCHREIBEN A
SCHREIBEN A, SCHREIBEN B, SCHREIBEN C
ZUNAHME, WÄHLE CP, F
F >C
WÄHLE CQ, G >D
G,
Aufbewahrungssteuerung:
21 NULL, F >E
22 NULL, WÄHLE CM, F > G
23 NULL, WÄHLE C^ F >
G
24 NULL, WÄHLE CP, F > G
25 NULL, WÄHLE CQ, F > G, BEREIT
Zentraleinheit Eingang/Ausgang:
31 Q >£, BEREIT
32 E >R
33 WÄHLE CP, Q > G, BEREIT
34 WAHLECP1G >R
35 WÄHLE CM, Q * G, BEREIT
36 WÄHLE CAi G > R
37 WÄHLE Ca Q » G, BEREIT
Korrekturblockeingang:
41 E *C
42 ZUNAHME, F > E, F >
K
43 WÄHLE CP, G > C
44 WÄHLE CAi G >D
45 SCHREIBEN C, GLEICHHEIT, WÄHLE CAi F * G
46 ZUNAHME, WÄHLE CP, F > C,
F
*G
Rückführen:
51 WÄHLE CO, E * G
52 WÄHLE CAi G * D
53 WÄHLE CP, G * C
54 ABNAHME, F > C
56 SCHREIBEN C, U > A, V * H,
W
>E
57 SCHREIBEN A, SCHREIBEN B
58 ZUNAHME, WÄHLE CP, F » G
BEREIT A ■ BEREIT B BEREIT A ■ BEREIT B
Y >16,
•14 ■15
•17
BEREIT A BEREIT A
16 3
BEREIT A ■ BEREIT B ■ BEREIT C-
BEREIT,* · BEREITS · BEREIT C-
17 18
BEREIT C-BEREIT C-
►45 ►
►56 ►58
BEREIT C-BEREIT C-
►
►
BEREIT A BEREIT A
BEREIT B BEREIT B-
►
►
Zustand Funktion
nächster Zustand
15
20
JO
35
45
50
65
59 Ausgang:
in 62 63 64 65 66
67 6«
WÄHLE CO, G *E
E
>C
ABNAHME, C >E
WÄHLE CM, G >C
69
70
71 72 73
74 75 76
LESEN C, U
A, V
D, W-
WÄHLE CP, G *C
WÄHLE CO, G >C
| BEREIT C | »66 |
| BEREIT C | »67 |
| 68 | |
| Z >69, | |
| Z >3 | |
| BEREIT C | »69 |
| BEREIT C | »70 |
| Ir—>7i | |
| Y »76 | |
| 72 | |
| 73 | |
| BEREIT C | »73 |
| BEREIT C | »74 |
| 75 | |
| 76 |
BEREIT B BEREIT B
>76 ■68
Die Zustände 13 bis 19 bewirken die Schreiboperation. Beim Zustand 14 werden die Inhalte des zu schreibenden
Wortes und die zugehörige Korrekturstufenzahl in die Register D und K eingelesen, falls das Wort aufbewahrt
werden muß. Der Zustand 15 bestimmt, ob das Wort aufbewahrt werden muß (nächster Zustand 17) oder
nicht (nächster Zustand 16). Im Zustand 18 werden der neue Wert des Wortes und die gegenwärtige Korrekturstufenzahl
In den Hauptspeicher bzw. den Korrekturstufenspelcher eingeschrieben und der frühere 'Vert, die
zugehörige Hauptspelchsradresse und die frühere Korrekturstufenzahl werden In den Aufbewahrungsspeicher
eingeschrieben. Die Hinwelsadresse für den Aufbewahrungsspeicher wird erhöht und In das Register CP Im
Registerblock G zurückgegeben. Die Zustände 18 und 19 prüfen die Benutzung des letzten Wortes des Aufbewahrungsspeichers
und können ein Fehlersignal erzeugen, wenn ein Fehler vorhanden Ist.
Die Zustände 21 bis 25 betreffen das Einbringen von Werten in die Inneren Register des Registerblockes G
und das Auslösen des Registers E für den gegenwärtigen Korrekturstand. Die Zustände 31 bis 37 betreffen die
Übertragung von Daten in die und aus der Zentraleinheit.
Die Zustände 41 bis 46 bewirken den Korrekturblockeingang. Die Zustände 41 und 42 erhöhen die gegenwärtige
Korrekturstufenzahl und setzten ihren neuen Wert in den Registern E und K. Die Zustände 43 bis 46
bewirken das Einschreiben der existierenden Inhalte des Inneren Registers C und M und des Registers K In den
Aufbewahrungsspeicher, um eine Stapelmarke zu bilden und neue Werte für die Adressen der obersten Stapelmarke
(in das Register CM eingebracht) und des obersten Teils des Aufbewahrungsspeichers (im Register CP)
zu erzeugen.
Die Zustände 51 bis 59 ergeben die Rückführungsoperation und werden dazu verwendet, die Werte von Variablen
wiederherzustellen, welche nach der Nichterfüllung eines Aufnahmetests im Korrekturblock modifiziert
worden sind. Der Zustand 51 bewahrt den Wert des Registers E für den gegenwärtigen Korrekturstand im Inneren
Register CO auf. Die Zustände 54 bis 57 bilden eine Schleife zur Abtastung des obersten Bereiches des
Aufbewahrungsspeichers. In den Zuständen 56 und 57 werden für jedes Wort im obersten Bereich des Aufbewahrungsspeichers
die Hauptspeicheradresse der Variablen, ihr früherer Wert und ihre frühere Korrekturstufenzahl
In die Register A. H und E eingelesen und der frühere Wert und der frühere Korrekturstand in den Hauptspeicher
bzw. den Korrekturstufenspeicher eingeschrieben. Jm Zustand 58 wird die Hinweisadresse für die Spitze
des Aufbewahrungsspeicherstapels (im Register CP gespeichert) korrigiert. Der Zustand 59 stellt den Wert des
gegenwärtigen Korrekturstandes Im Register E wieder her.
Die Zustände 61 bis 76 bewirken die Ausgang-Operatioa nach der erfolgreichen Beendigung eines Aufnahmetests.
Die Zustände 6! und 62 vermindern dabei die gegenwärtige Korrekturstufenzahl im Register E. Die
Zustände 63 und 64 bewahren im Register CN die vorhandene Eintragung Im Register CP für den nachfolgenden
Gebrauch auf. Die Zustände 65 und 66 bewirken das Lesen der Hinweisadresse der obersten Aufbewah-
rungsipeicherstapelmarke und bringen sie In das Register CM als diejenige Adresse ein, welche die oberste
Stapelmarke des Aafbewahrungsspsichers nach Beendigung der Ausgang-Operation haben wird.
Der Zustand 67 bringt In das Register CP die Adresse ein, welche die Spitze des Aufbewahrungsspeicherstapels
nach Entfernen des obersten Bereiches hat. Die Zustände 68 bis 76 bilden eine Schleife zur Abtastung des
obersten Bereiches des Aufbewahrungsspeichers von unten nach oben. Im Zustand 69 wird ein Wort aus dem >
obersten Bereich des Aufbewahrungsspeichers ausgelesen, und die Hauptspeicheradresse der Varlallsn. Ihr
früherer Wert und Ihre frühere Korrekturstufenzahl werden In die Register A bzw. D bzw. K eingebracht. Im
Zustand 70 wird die frühere, im Register K befindliche Korrekturstufenzahl mit der Korrektarstufenzahl des
betreffenden Korrekturblockes verglichen, dessen Ausgang-Operation stattfindet. Falls die Korrekturstufenzahlen
In den Registern K und E gleich sind (durch die Signalform Y angezeigt), wird die untersuchte Eintragung ι»
des Aufbewahrungsspeichers gelöscht (nächster Zustand 76). Falls die beiden Korrekturstufenzahlen einander
nicht gleich sind, muß die Eintragung des Aufbewahrungsspeichers vom obersten Bereich in den zweitobersten
Bereich kopiert werden (nächster Zustand 71). Das Register CO enthält eine Hinweisadresse für die gegenwärtig
untersuchte Eintragung des Aufbewahrungsspeichers, und das Register CN enthält eine Hinwelsadresse, die um
1 größer aiä die Adresse der obersten Eintragung Im obersten Aufbewahrungsspeicherbereich Ist. Wird bei dem ι?
Test Im Schritt 70 festgestellt, daß die Korrekturstufenzahl der untersuchten Eintragung nicht gleich der
Korrekturstufenzahl des Korrekturblockes Ist, für welchen die Ausgang-Operation stattfindet, so werden in den
Zuständen 72 bis 74 die Inhalte der Register A. D und K (d. h. eine Kopie der untersuchten Aufbewahrungsspeichereintragung)
mit der Adresse, welche durch die Aufbewahrungsspelcherstapelspltze (Register CP) gegeben
ist. In den Aufaewahrungsspelcher eingeschrieben. Die genannte Adresse wird dann erhöht. Im Zustand 76 wird 2»
der KorrekJurstand des betreffenden Korrekturblockes In das Korrekturstufenspelcherwort eingeschrieben,
welches der Variablen zugeordnet Ist, deren Aufbewahrungsspeichereintragung gerade verarbeitet wird. Dabei
wird die Tatsache aufgezeichnet, daß die Auswirkung des betreffenden Korrekturblockes auf diese Variable eine
Zuordnung Im übergeordneten Korrekturblock ist.
Die Zustandselnhelt kann als äquivalente logische Maschinenausrüstung ausgeführt sein, wie in »Theory and ^
Design of Digital Machines« von T.C. Bartee, McGraw Hill, 1962, beschrieben Ist. Alternativ dazu kann die
Zustandssteuerung In ein Mikroprogramm umgesetzt werden, wie In »Microprogramming, Principles and Practice«
von S.S.Husson, Prentrlce Hai), 1970, beschrieben 1st.
Die obige Einrichtung ist vollständig mit Bezug auf die Zuordnung von Werten von Variablen zu Speicherplätzen
beschrieben worden. Dte.se Werte sind einfach durch Rückführungen dieser Zuordnungen wieder herge- ■"">
stellt worden. Viele Programmoperationen erzeugen Ergebnisse auf andere Welse als durch Zuordnungen oder
müssen einige Ergebnisse sogar dann aufbewahren, wenn die Ausführung dieser Operation abgebrochen und
eine andere Operation versucht wird. Typische Beispiele sind Operationen, weiche Dateizugriff und Eingangs-Ausgangs-Schnittstellen,
Abrechnungsprogramme, Diagnostikaufzeichnungen und wechselwirkende Benutzerschnittstellen
mit sich bringen. Es Ist charakteristisch für solche Programme, daß die Fehlerkorrektur komplexer Ji
als die automatische Umkehrung von Zuordnungen Ist, und es muß für den Programmierer eine Möglichkeit
vorgesehen sein, eine geeignete Korrekturfunktion zu kennzeichnen.
Dieses Erfordernis kann dadurch erfüllt werden, daß die eine spezielle Korrekturfunktion erfordernden Operationen
In Prozessen angeordnet werden, die nachstehend als korrekturfähige Prozesse bezeichnet werden. Ein
korrekturfähiger Prozeß Ist nicht selbst ein Kon-ekturblock mit einem Aufnahmetest und Ersatzblöcken, jedoch «
kann sein Ablauf einen oder mehrere Ko-- ^blöcke enthalten. Ein solcher Prozeß kann eigene Variable
vereinbaren, deren Werte von der Elnrlchtu..o im Falle eines Fehlers nicht automatisch gemäß der Erfindung
zurückgestellt werden, sondern die durch einen Programmteil Innerhalb des korrekturfähigen Prozesses wiederherstellbar
sind. Mehrere korrekturfähige Prozesse können einander zugeordnet werden und eine Gruppe 'in
eigenen Variablen gemeinsam benutzen. -'S
Ein korrekturfähiger Prozeß besitzt drei Eingangspunkte. Wenn ein korrekturfähiger Prozeß das erste Mal
innerhalb eines Korrekturuiuckes aufgerufen wird, bewirkt die erfindungsgemäße Einrichtung, daß der Prozeß
an seinem »Erhaltungs«-Eingangspunkt begonnen wird, dessen Zweck darin Hegt, den Prozeß in die Lage zu
versetzen, eine im Falle eines Fehlers Im aufrufenden Korrekturblock wiederherzustellende Information aufzubewahren.
Der korrekturfähige Prozeß schreitet dann zu seinem »normalen« Eingangspunkt fort, dessen Zweck
darin besteht, die vom aufrufenden Programmteil geforderte Funktion des Prozesses zu erfüllen. Bei nachfolgenden
Anzeigen eines korrekturfähigen Prozesses Innerhalb eines Korrekturblockes bewirkt die Einrichtung, daß
der Prozeß an seinem »normalen« Eingangspunkt begonnen wird. Der dritte Eingangspunkt ist der sogenannte
»Umkehrungse-Eingangspunkt. Dieser dient dazu, die Wiederherstellung von Informationen zu ermöglichen,
die während des ersten Aufrufs innerhalb des Korrekturblockes aufbewahrt worden sind, wenn die Einrichtung
feststellt, daß das Ergebnis des korrekturfähigen Prozesses gestrichen werden muß.
Ein Beispiel eines korrekturfähigen Prozesses wird nachstehend mit Bezug auf die in Fig. 11 dargestellte
Ausführungsform der Erfindung beschrieben, weiche einen Bitspeicher benützt, jedoch ist einzusehen, daß
korrekturfähige Prozesse ebenso in Verbindung mit einer Einrichtung anwendbar sind, welche mit den oben
beschriebenen alternativen Mitteln arbeitet. ω
Fig. 14 zeigt einen Korrekturblock V, der einen weiteren Korrekturblock VI und einen korrekturfähigen
Prozeß VII enthält, welch letzterer eine eigene Variable W und noch einen weiteren Korrekturblock VIII
aufweist.
Die Fig. 15 bis 17 sind den Fig. 2 bis 10 ähnlich und zeigen den Zustand des Hauptspeichers 10 und des
Aufbewahrungsspeichers 12 an verschiedenen Stellen des Korrekturblockes V. ^
Flg. 15 zeigt die Situation am Beginn des Korrekturblockes V. Im Hauptspeicher und im Aufbewahrungsspeicher
sind Stapelmarken 60 bzw. 62 festgelegt.
Wenn ein Programm in den Gültigkeitsbereich eintritt, innerhalb welchem der korrekturfähige Prozeß VII
festgelegt ist, so wird gemäß Fig. 16 ^in Zugriff zu dem Prozeß ermöglichende Beschreibung in den Hauptspei
eher eingeschrieben, ebenso die eigene Variable W des Prozesses. Ein korrekturfähiger Prozeß kann natürllcl
mehr als eine eigene Variable haben, wobei dann die Namen aller dieser eigenen Variablen zu diesem Zeitpunk
in den Hauptspeicher 10 eingeschrieben werden. Beim Eingang in den Korrekturblock VI werden weitere Stapel
marken 64 und 66 im Hauptspeicher 10 bzw. im Aufbewahrungsspeicher 12 gesetzt.
Wenn der korrekturfähige Prozeß VII zum ersten Mal (im Korrekturblock VI) aufgerufen wird, so ergibt siel
gemäß Fig. 17, daß das dem Wort im Hauptspeicher 10, welches die Beschreibung bzw. den Namen de
Prozesses enthält, entsprechende Kennzeichen frei ist, was anzeigt, daß der Prozeß noch nicht Innerhalb diese
Korrekturblockes benutzt worden ist. Der Aufbewahrungsmechanlsmus setzt nun das Kennzeichen entspre
i1' chend dem Namen VII im Hauptspeicher 10 und zeichnet den Namen und sein Kennzeichen im Aufbewah
rungsspeicher 12 auf. Der Aufbewahrungsmeehanlstnus bewirkt nun den Eingang in den korrekturfähige!
Prozeß an dessen »Erhaltungsc-Elngang. Der korrekturfahige Prozeß erhält nun einen weiteren Aufbewahnings
bereich des Aufbewahrungsspeichers 12, innerhalb welchem seine Korrekturinformation aufgezeichnet wird. De
korrekturfahige Prozeß VII tritt nun in seine inneren Korrekturblocks ein, welche die Erhaltung der Korrektur
information und die Ausführung der vom Prozeß geforderten Funktion bewirken.
irgendwelche nachfolgenden Aufrufe des korrekturfähigen Prozesses Innerhalb des Korrekturblockes V flndei
das Kennzeichen am Namen bereits gesetzt. Der Eingang In den korrekturfähigen Prozeß erfolgt dann an
normalen Eingangspunkt ohne spezielle Funktion. Ist das Programm jedoch in einen weiteren Korrekturblocl
innerhalb des Korrekturblockes VI eingetreten, bevor der korrekturfähige Prozeß VII wieder aufgerufen wird, si
?» ist das Kennzeichen am Namen des korrekturfähigen Prozesses gelöscht worden und es muß eine weiten
Gruppe von Korrekiurinformationen im Aufbewahrungsspeicher 12 aufgezeichnet werden, um dem neuei
Korrekturblock zu entsprechen. Innerhalb welchem die Korrektur erforderlich sein kann.
Bei erfolgreichem Ausgang aus einem Korrekturblock werden der Name und der zugehörige Aufbewahnings
bereich Im Aufbewahrungsspeicher vom Aufbewahrungsmechanlsmus genau so wie jede andere Im Aufbewah
rungsspeicher aufgezeichnete Variable behandelt. Sie werden deshalb von einem Aufbewahrungsspelcherberelcl
in den nächsten Bereich Obertragen, wobei das Namenskenczeichen des Hauptspeicherstapels zurflckgestell
wird, bis sie entweder lokal werden, oder der Name ist in diesem Aufbewahrungsspeicherbereich bereits vorhan
den. Innerhalb der Korrekturblocks innerhalb des korrekturfähigen Prozesses werden die eigenen Variablen de!
Prozesses und die im Aufbewahrungsbereich im Aufbewahrungsspeicher befindlichen Variablen als nicht loka
:■*> betrachtet und können im Falle eines Fehlers ebenso wie jede andere Variable wieder hergestellt werden, jedoct
werden diese Variablen, sofern der Aufnahmetest des Korrekturblockes VIII einmal erfüllt worden Ist, währenc
des Ausgangs aus diesem Korrekturblock als lokal innerhalb des nächsten Korrekturblockes betrachtet, unabhängig von der Position im Hauptspeicher 10, und Ihre aufbewahrten früheren Werte werden daher gelöscht
Der Ausgang aus dem korrekturfähigen Prozeß VII ergibt daher bleibend eine Zuordnung zu den eigenen Vari
ablen und eine nachfolgende Korrektur kann nur durch das Korrekturprogramm erfolgen, welches In derr
len Variablen, entweder direkt oder durch einen Parametermechanismus, werden jedoch normal behandelt unc
können folglich durch den Aufbewahrungsmechanlsmus rückgängig gemacht werden.
■to verarbeitet, und wenn der Name für den korrekturfähigen Prozeß gefunden wird, ruft der Aufbewahrungsmechanismus den Rückführungseingangspunkt des Prozesses auf. Der RückfOhrungseingangspunkt kann einer
Korrekturblock, weitere Prozeßaufrufe und Korrekturblocks und irgendwelche anderen Verarbeitungsvorgänge
nach sich ziehen, die zur Wiederherstellung der eigenen Variablen mit den richtigen Werten notwendig sind.
In der obigen Beschreibung Ist angenommen worden, daß die verschiedenen Informationselemente eine dei
Wortlänge des Hauptspeichers entsprechende Größe haben. Die Erfindung ist jedoch auch In den Fällen
anwendbar, in welchen die Informationselemente kleiner als die Wortlänge sind, wobei eine Zuordnung sogar zu
einer einzigen Informationseinheit die Aufbewahrung des ganzen Wortes bewirkt. Außerdem Ist die Erfindung
anwendbar, wenn ein Informationselement größer als ein Wort Ist, wobei In diesem Falle mehr als ein Wort
aufbewahrt werden mud, um den Wert eines Informationselements zu speichern.
Claims (4)
1. Datenverarbeitungsanlage zur Verarbeitung von Programmen mit einer Anzahl von verschachtelten
Programmblöcken, mit
a) einem ersten Mehradreßspelcher zum Speichern der jeweils gegenwärtigen Zustände von Informatlons-
Ij elementen,
Ij b) einem zweiten Mehradreßspeicher zum Aufbewahren jeweils ursprünglicher Zustände solcher Informa-
Ii tionselemente und ihrer Speicheradresse des ersten Speichers,
t| 10 c) Mitteln zur Übertragung des jeweils ursprünglichen Zustands und der Speicheradresse eines Informa-
Sj tlonselements vom ersten Speicher in den zweiten Speicher,
ψ d) einem zusätzlichen Speicher mit einer Anzahl von Speicherplätzen, von denen jeder einem Speicherplatz
,;ä des ersten Speichers zugeordnet Ist und zum Speichern einer Anzeige dient, die anzeigt, ob das betref-
% fende Informationselement während des laufenden Verabeitungsabschnitts bereits einmal in den zweiten
Il 15 Speicher übertragen worden Ist, und in diesem Fall eine daß nochmalige Einspeicherung sperrt,
S dadurch gekennzeichnet.
» e) die Übertragung des ursprünglichen Zustandes eines Informatlonselements vom ersten Speicher {32, 72)
1Jf, in den zweiten Speicher (36, 76) nur Lm Falle einer Änderung dieses Zustandes des Informatlonsele-
g) ments erfolgt und die Im zusätzlichen Speicher (34, 74) gespeicherten Anzeiger Im Falle einer nochmall-
j| 20 gen Zustandsänderung jeweils eine Übertragung des vorhergehenden Zustandss des Informationseie-
j| ments vom ersten in den zweiten Speicher während der Ausführung des laufenden Programmblocks
b} sperren,
% f) Im ersten Speicher (32, 72) Trennungszeichen vorgesehen sind, welche die Grenzen zwischen aufeinan-
\ß derfolgenden Programmblöcken anzeigen, und ein Register (E) zum Speichern der Adresse des zuletzt
H 25 eingegebenen Trennungszeichens im ersten Speicher vorgesehen ist, und
?! g) im zweiten Speicher (3fc, 76) ebenfalls Trennungszeichen vorgesehen sind, welche die Grenzen zwischen
[]: aufeinanderfolgenden Programmblöcken anzeigen, und ein Register (G) zum Speichern der Adresse des
:>i zuletzt eingegebenen Trennungszeichens Im zweiten Speicher vorgesehen 1st.
K'
2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, daß der zusätzliche Speicher (34)
Sj 30 ein Bitspeicher zum Speichern eines Booleschen Zeichens für jeden Speicherplatz des ersten Speichers (32)
I ISt(FIg. Ii;.
■?1
3. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, daß der zusätzliche Speicher (74)
ίί ein Wortspeicher zum Speichern einer dem jeweiligen Verschachtelungsgrad des laufenden Programmblocks
fs Im Programm entsprechender. Verarbeitungsstufenzahl für jedes In den zweiten Speicher übertragene Infor-
I 35 mationselement 1st (Flg. 13).
§,
4. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß der erste
t< Speicher (32, 72) und der zweite Speicher (36, 76) jeweils als Stapelspeicher ausgebildet sind.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB16766/74A GB1509193A (en) | 1974-04-17 | 1974-04-17 | Computer systems |
| GB2649774 | 1974-06-14 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE2516909A1 DE2516909A1 (de) | 1975-10-30 |
| DE2516909C2 true DE2516909C2 (de) | 1986-01-09 |
Family
ID=26252228
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE2516909A Expired DE2516909C2 (de) | 1974-04-17 | 1975-04-17 | Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme |
Country Status (4)
| Country | Link |
|---|---|
| JP (1) | JPS5836372B2 (de) |
| DE (1) | DE2516909C2 (de) |
| FR (1) | FR2268306A1 (de) |
| NL (1) | NL7504595A (de) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0163096B1 (de) * | 1984-04-26 | 1988-11-17 | BBC Brown Boveri AG | Einrichtung zur Rettung eines Rechnerzustandes |
| JPH0682336B2 (ja) * | 1986-04-28 | 1994-10-19 | 日本電気株式会社 | ブロック閉塞を用いたロールバックリカバリシステム |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3736566A (en) * | 1971-08-18 | 1973-05-29 | Ibm | Central processing unit with hardware controlled checkpoint and retry facilities |
-
1975
- 1975-04-16 FR FR7511821A patent/FR2268306A1/fr active Granted
- 1975-04-17 JP JP50046929A patent/JPS5836372B2/ja not_active Expired
- 1975-04-17 DE DE2516909A patent/DE2516909C2/de not_active Expired
- 1975-04-17 NL NL7504595A patent/NL7504595A/xx not_active Application Discontinuation
Also Published As
| Publication number | Publication date |
|---|---|
| FR2268306B1 (de) | 1980-07-04 |
| DE2516909A1 (de) | 1975-10-30 |
| JPS5836372B2 (ja) | 1983-08-09 |
| NL7504595A (nl) | 1975-10-21 |
| FR2268306A1 (en) | 1975-11-14 |
| JPS50144352A (de) | 1975-11-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69432332T2 (de) | Verfahren und Gerät zum Konvertieren von übertragenen digitalen Daten | |
| DE2645537C2 (de) | ||
| DE69230452T2 (de) | Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen | |
| DE3908459C2 (de) | Netzwerkserver | |
| DE3786410T2 (de) | Verfahren zur Wahl von Ersatzleitungen in einer zweidimensionalen redundanten Matrix. | |
| DE3416939A1 (de) | Verfahren zur steuerung von betriebseinrichtungen | |
| DE3751949T2 (de) | Verfahren zum Starten eines Untersystems in einem verteilten Verarbeitungssystem | |
| DE69126057T2 (de) | Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung | |
| EP1190324B1 (de) | Verfahren zum gesicherten schreiben eines zeigers für einen ringspeicher | |
| DE3842289C2 (de) | Verfahren zur Entwicklung von Programmen für ein verteiltes Datenverarbeitungssystem | |
| DE2424820B2 (de) | Einrichtung zur Durchsuchung eines Datenspeichers | |
| DE1499182B2 (de) | Datenspeichersystem | |
| DE3850444T2 (de) | Progammverwaltungsverfahren für verteilte Verarbeitungssysteme und angepasste Vorrichtung. | |
| DE3855494T2 (de) | Abfragevorrichtung und -methode | |
| DE69610785T2 (de) | Verbesserter Wiederherstellungsprozess | |
| DE3689217T2 (de) | Datenverarbeitungseinrichtung mit einer Schaltung zur Prüfung der Adressgrenzen in einem virtuellen Speicher. | |
| DE2554502B2 (de) | ||
| EP3516519A1 (de) | Watchdog zur überwachung eines prozessors | |
| DE2516909C2 (de) | Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme | |
| DE69032835T2 (de) | Prozedurzustandsdeskriptorsystem für digitale Datenprozessoren | |
| WO2001006347A1 (de) | Operandenstapelspeicher und verfahren zum betreiben eines operandenstapelspeichers | |
| DE102016015756B4 (de) | Verfahren zum Betrieb eines Watchdog umfassend eine Mustererkennung für wiederkehrende Lastsituationen mit zweifacher Bewertung | |
| DE69130400T2 (de) | Netzwerk und Verfahren zur Datenübertragung zwischen einem programmierbaren Steuergerät und mehreren Verarbeitungseinheiten | |
| EP1099172B1 (de) | Verfahren, anordnung und satz mehrerer anordnungen zur behebung mindestens einer inkonsistenz in einer datenbankmenge, die eine datenbank sowie mindestens eine kopiedatenbank der datenbank aufweist | |
| EP2149844B1 (de) | Verfahren und Computerprogrammprodukt zum automatischen Einfügen von Daten aus einem Datenbanksystem in eine Datenstruktur |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8110 | Request for examination paragraph 44 | ||
| 8128 | New person/name/address of the agent |
Representative=s name: HOLZER, R., DIPL.-ING. GALLO, W., DIPL.-ING. (FH), |
|
| D2 | Grant after examination | ||
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |