DE2516909C2 - Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme - Google Patents

Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme

Info

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
Application number
DE2516909A
Other languages
English (en)
Other versions
DE2516909A1 (de
Inventor
James Jay Willowdale Ontario Horning
Ronald Whitley Bay Northumberland Kerr
Hugh Conrad Newcastle-upon-Tyne Lauer
Peter Michael Heddon Banks Northumberland Melliar-Smith
Brian Newcastle-upon-Tyne Northumberland Randell
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Research Development Corp UK
Original Assignee
National Research Development Corp UK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB16766/74A external-priority patent/GB1509193A/en
Application filed by National Research Development Corp UK filed Critical National Research Development Corp UK
Publication of DE2516909A1 publication Critical patent/DE2516909A1/de
Application granted granted Critical
Publication of DE2516909C2 publication Critical patent/DE2516909C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1489Generic software techniques for error detection or fault masking through recovery blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing 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-
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 H hält die In den Hauptspeicher 32 einzuschreibenden Daten fest.
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;
»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 ι
Fortsetzung
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
SCHEIBEN A, SCHREIBEN B,
RÜCKETZEN
SCHREIBEN A, SCHREIBEN B,
SETZEN
SCHREIBEN A, SCHREIBEN B,
SETZEN,
SCHIILEIBEN C ZUNMIME, WÄHLE CP, F » G
F »C
WÄHLE CQ, G *D
Aufbewahningsüitßuening:
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, FG, BEREIT
Zentraleinheit Hingang/Ausgang:
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
Korrekturblockeingang:
41 QE, 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
BEREIT A ■ BEREIT B »16 BEREIT A- BEREIT £ »
»17 »
BEREITE · BEREIT £ BEREIT A ■ BEREIT B
BEREITE · BEREITE - BEREITC
»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
► 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
Zustand Funktion
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-
Fortsetzung
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 CP, G > C, G > D WÄHLE CN, GLEICHHEIT, F > G
WÄHLE CM, G >C
LESEN C, WÄHLE CM, V ► G WÄHLE CP, GLEICHHEIT, FG ZUNAHME, F f C
69
70
71 72 73
74 75 76
LESEN C, U
A, V
D, W-
WÄHLE CO, GLEICHHEIT, F > G
WÄHLE CP, G *C
SCHREIBEN C ZUNAHME, WÄHLE CP, F > G
WÄHLE CO, G >C
WÄHLE CW, GD, SCHREIBEN B
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 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
Kcrrefctüiföhigeri Prozeß enthalten ist. Irgendwelche von dem PfözcS hergesieiiien Zuordnungen zu nicht loka
len Variablen, entweder direkt oder durch einen Parametermechanismus, werden jedoch normal behandelt unc können folglich durch den Aufbewahrungsmechanlsmus rückgängig gemacht werden.
Nach eimern Fehler wird der oberste Bereich des Aufbewahrungsspeicherstapels In herkömmlicher Weise
■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.
Hierzu 7 Blatt Zeichnungen

Claims (4)

Patentansprüche:
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.
DE2516909A 1974-04-17 1975-04-17 Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme Expired DE2516909C2 (de)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3566314D1 (en) * 1984-04-26 1988-12-22 Bbc Brown Boveri & Cie Apparatus for saving a calculator status
JPH0682336B2 (ja) * 1986-04-28 1994-10-19 日本電気株式会社 ブロック閉塞を用いたロールバックリカバリシステム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
NL7504595A (nl) 1975-10-21
JPS50144352A (de) 1975-11-20
FR2268306B1 (de) 1980-07-04
JPS5836372B2 (ja) 1983-08-09
FR2268306A1 (en) 1975-11-14
DE2516909A1 (de) 1975-10-30

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
DE3786410T2 (de) Verfahren zur Wahl von Ersatzleitungen in einer zweidimensionalen redundanten Matrix.
DE3416939A1 (de) Verfahren zur steuerung von betriebseinrichtungen
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung
DE102005008520A1 (de) Verfahren zum Überwachen eines Verzeichnisses in einem Computersystem, Computerprogramm-Produkt und Computersystem zum Ausführen dieses Verfahrens
DE3842289C2 (de) Verfahren zur Entwicklung von Programmen für ein verteiltes Datenverarbeitungssystem
DE2424820B2 (de) Einrichtung zur Durchsuchung eines Datenspeichers
EP1190324B1 (de) Verfahren zum gesicherten schreiben eines zeigers für einen ringspeicher
DE2740105A1 (de) Optische zeichenerkennungseinrichtung
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.
DE2516909C2 (de) Datenverarbeitungsanlage zur Verarbeitung verschachtelter Programme
EP3516519A1 (de) Watchdog zur überwachung eines prozessors
DE69032835T2 (de) Prozedurzustandsdeskriptorsystem für digitale Datenprozessoren
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
DE102016015756B4 (de) Verfahren zum Betrieb eines Watchdog umfassend eine Mustererkennung für wiederkehrende Lastsituationen mit zweifacher Bewertung
DE102005008519B4 (de) Verfahren zum Überwachen eines Verzeichnisses in einem Drucksystem, Computerprogramm-Produkt und Drucksystem zum Ausführen dieses Verfahrens
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