DE2047095A1 - Elektronisches Datenverarbeitungs system - Google Patents

Elektronisches Datenverarbeitungs system

Info

Publication number
DE2047095A1
DE2047095A1 DE19702047095 DE2047095A DE2047095A1 DE 2047095 A1 DE2047095 A1 DE 2047095A1 DE 19702047095 DE19702047095 DE 19702047095 DE 2047095 A DE2047095 A DE 2047095A DE 2047095 A1 DE2047095 A1 DE 2047095A1
Authority
DE
Germany
Prior art keywords
node
arrangement
memory
message
data processing
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.)
Pending
Application number
DE19702047095
Other languages
English (en)
Inventor
Klaus Juergen Granite NY Berkling (V St A )
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2047095A1 publication Critical patent/DE2047095A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/312List processing, e.g. LISP programming language
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computer And Data Communications (AREA)

Description

IBM Deutschland Internationale Büro-Maschinen Geselleehaft mbH
Anmelderin:
Amtliches Aktenzeichen:
Böblingen, den 10. Sept. 1970
jo-ba
International Business Machines Corporation, Armonk, N.Y. 10504
Neuanmeldung
Aktenzeichen der Anmelderin: Docket YO 968 027
Elektronisches Datenverarbeitungsystem
Die Erfindung betrifft ein elektronisches Datenverarbeitungssystem, das auf der Basis des bekannten Lambda-Algorithmus arbeitet.
Grundlagen 4er Erfindung
In herkömmlichen Computersystemen wird ein Speicher, im allgemeinen ein Kernspeicher, als zentrale Kommunikationseinheit be-"nutzt. Bei dieser Benutzung verbinden Eingabe- Ausgabeoperationen den Speicher mit peripheren Einheiten, und eine oder mehrerer Akkumulatoren stellen die Trennstelle zu Funktionseinheiten des Systems dar, welche Instruktionen ausführen. Wegen der beherrschenden Position des Speichers, die er in einem herkömmlichen System hat, kann die Natur eines solchen Speichers relativ zu seiner Zugriffefunktion als eindimensionale Anordnung gekennzeichnet werden. Eine eindimensionale Anordnung ist die Datenstruktur, die sich sehr leicht in einen Speicher bringen
läßt, während Anordnungen mit mehreren Dimensionen wie Listen-
1 0 L 15/1765
und Verzweigungsstrukturen limner größere Schwierigkeiten auf- ' weisen. Diese Schwierigkeiten werden noch zahlreicher wenn man versucht, einen Ausdruck einer höheren Sprache mit «einer komplizierten Verknüpfung von Ausdrücken, Bereichen, Funktionen und Unterroutinen in eine lineare eindimensionale Instruktionsfolge zu fassen, die notwendigerweise durch die Datenstruktur eines Kornspeichers vorgeschrieben wird.
Ein konventioneller Computer befaßt sich in erster Linie mit linearen strukturen, wobei unter linearer Struktur ein Satz von Elementen verstanden wird, durch welche nur eine nachfolgende Funktion definiert ist. so ist ein Satz von ganzen Zahlen und die Funktion "Addiere Eins" ein Beispiel für eine lineare Struktur. Ein weiteres Beispiel ist ein Satz von Seitintervallen und die Funktion "Warte".
Die einzige Möglichkeit, eine Rechenstruktur in einem herkömmlichen Computer zu fassen, besteht in der Adreßarithmetik, die lediglich eine Anhäufung der Funktion "Addiere Eins" und mehrerer indirekter Ebenen ist, die eingeführt werden# wenn Adressen von Speicherstellen und nicht baten in bestimmte Speicheretellen geladen werden.
So umfaßt ein Programm z. B. einen Satz von Speicherstellen« Der Computer bestimmt die Stelle einer Instruktion, die irgendeiner anderen Instruktion folgt, entweder, indem er den Instruktionszähler vorschaltet oder den Inhalt einer Speicheretelle als Adresse, Übertragsinstruktion und Unterbrechung nimmt. Bei diesem Vorgang wird die Programmstruktur, die für den durch die Speicherstellen gebildeten Raum ausgelegt ist« in eine streng lineare Zeitstruktur umgeformt. Das Programm kann jetzt als eine Folge von Zeitabschnitten betrachtet werden, von denen jeder mit einer Instruktion bezeichnet ist. Der Computer führt diese Instruktion in den entsprechenden Zeitabschnitten au».
Durch die bedingten Übertragungen existiert für geschriebene
109 015/1765
Docket YO 968 027
Programme eine Klasse von Folgen In der Zeltdomäne, die durch Änderungen in den Eingangsdaten geschaffen ist. Mit dieser Klasse von Folgen muß sich der Programmierer beschäftigen. Wenn der Programmierer eine Instruktion in ein Programm aufnimmt, muß er folgende Punkte berücksichtigen:
1. die Stellung des Systemes unmittelbar vor Ausführung der Instruktion. Die Stellung ist im allgemeinen ein Produkt aller Vorläufer in einer gegebenen Zeitdomäne,
2. eine Klasse von Zeitfolgen,
3. der Zustand des Systemes nach Ausführung der Instruktion, im allgemeinen alle Nachfolger (wobei unter alle in diesem Zusammenhang der Zeitraum zwischen dem Ein- und dem Ausschalten des Stromes zu verstehen ist.
Für einen Benutzer eines Computers ist es selbstverständlich schwer, immer ein klares und vollständiges Bild dessen vor Augen zu haben, was eich effektiv ergibt, wenn ein Instruktion oder eine Anweisung in ein Programm aufgenommen werden.
Aus der Anordnung einer Progranmstruktur in einem Zeitbereich f ergeben sich verschiedene Vorteile. Die Zelt läuft ziemlich frei ab und irgendwelche Versager in Programm verlängern lediglich die Laufzeiten. Die räumlichen Anforderungen sind bei der Anordnung in einem Zeitbereich sehr bescheiden und können durch den Instruktionszähler und die Decodierregister leicht erfüllt werden.
Im Gegensatz daxu bringt die Natur der Zeit jedoch auch sahireiche Nachteile mit sich. Sine Programstruktür in einen Zeitbereich kann nur in den relativ kleinen Zeitraum zwischen dem vorhergehenden und den folgenden Bereich adressiert werden. Wenn irgendetwas zu einem bestimmten Zeitpunkt erfolgen soll und der Zugriffs-Zeitraum liegt hinter diesem Zeitpunkt, dann führt kein
10 -/1765
Weg su diesem Punkt surück. Ein Eingangekanal, der sum richtigen Zeltpunkt keinen Spelchersyklus erhHlt, kann seinen Zweck nur verfehlen. Wenn in Irgendeinem Proses eine Einheit sofort gebraucht wird, müssen andere Tätigkeiten auf dleaer Einheit unterbrochen werden. Nenn ein System mehrere Zeitbereichsfolgen gleichseitig behandeln kann, kann man nur durch die Einführung von Warteseiten derartige Polgen suelnander in Besiehung setsen, d. h. Positionen in verschiedenen Polgen su einem bestimmten Zeitpunkt susammenfallen lassen.
DaA die obengenannten Schwierigkeiten in Verbindung mit dem Betrieb herkömmlicher Computer bestehen, geht klar aua der Tatsache hervor, da6 Programmiersprachen mit Rücketeilstapeln sur Laufselt existieren, welche eine teilweise Darstellung einer Programmatruktur in einem linearen Raum gestatten. Pur aufiergewOhnliche Programmstrukturen reicht der Zeltbereich alleine offensichtlich nicht aus.
Ein Computer, dessen Maschinensprache nach dem Lambdaalgorlthmus ausgerichtet 1st, selgt Programmatrukturen in einem ausgewählten Raum, d. h. in einem vorhergehenden Raum mit einer baumartigen Verswelgungsstruktur.
Ein Hauptsiel der vorliegenden Erfindung besteht daher in einem Computer, dessen Maschinensprache Lambdaalgorlthmus 1st.
Ein weiteres Ziel der Erfindung 1st ein Computer, der gemlB obengenanntem Ziel, la der Lege 1st, Rechenstruktüren su verarbeiten, die als Versweigungsstruktüren dargestellt werden.
Pur das vorgeschlagene Datenverarbeltungssystem besteht die Erfindung darin, da· eine erste Einrichtung für die Erstellung des Lambdaalgorlthmus als Maschinensprache dea Systems and eine swelte Einrichtung sur Verarbeitung der Daten im System «es*· dem Lambdaalgorlthmus vorgesehen 1st.
H' / 1 7 6 E
20Λ7095
Weitere Merkmale, vorteilhafte Weiterbildungen und Ausgestaltun-* gen der Erfindung sind den Unteransprüchen zu entnehmen.
Ein Ausführungsbeispiel der Erfindung ist in den Figuren dargestellt und wird im folgenden näher beschrieben. Es zeigen:
Fig. 1 das Darstellungskonzept der Abbildung eines gegebenen Programmes in der Tafel des erfindungsgemäßen Computers,
Fig. 2 die wesentlichen Knotenpunkte zur Darstellung
eines Beta-Redex,
Fig. 3 das Blockschaltbild eines Ausführungsbeispiels
eines erfindungsgemäßen Eingabekanales,
Fig. 4 ein Blockschaltbild eines Ausführungsbeispieles eines erfindungsgemäß aufgebauten Computers,
Fig. 5a - 5f (zusammengesetzt nach Fig. 5) eine isometrische Darstellung des Kommunikationsblockes, Fig. 6 das grundlegende Zeitschema im Computer, Fig. 7a u. 7b (zusammengesetzt nach Fig. 7) eine Assoziativ-
speicherebene in der in Fig. 4 gezeigten Tafel,
Fig. 8 ein AusfUhrungebeispiel des assoziativen Lese-/ Schreib-Speicherelementes;
Fig. 9 ein Schaltbild des Assoziativspeicher-Freibit-Speicherelementes und
Fig. 10 «ine fragmentarisch· Ansicht eines Assoziativ-
sp«icher*l*»ent·· aur Darstellung des Überganges in d«r Tafel (Fig. 4) au den in Fig. 8 ge-
10: rs/1765
zeigten assoziativen Lese-/Sehreib-Speicherelement.
Die Erfindung betrifft ein Rechnersystem, dessen theoretische Grundlage durch die Forraalsysteme geliefert wird, die so ausgelegt sind, daB sie die auf Rechnung bezogenen Konzepte formulieren. Die Systemkonstruktion der Erfindung zeigt eine gröBere Abweichung von herkömmlichen Systemen und Konzepten wie "Instruktion", "Instruktionsstrom", "Prozessor", "Mehrfachverarbeitung* und "Mehrfachprogrammierung", die in dem System der Erfindung keine Bedeutung haben, obwohl das System Einheiten enthält, die bis zu einem gewissen Grade das ersetzen, was die obigen Konzepte umfassen.
Die Konzeption des erfindungsgemäßen Systemes basiert auf dem Lambdaalgorithmus, einem Formalismus, der eine Anzahl von Konzepten ausdrückt, die mit der Operation der Funktionsanwendung zusammenhängen. Die Sprache der regulären Ausdrücke ("wellformed" formulae) des Lambdaalgorithmus ist die Maschinensprache des vorgeschlagenen Systems. Die theoretischen Eigenschaften des Lambdaalgorithmus werden im System angewendet und demzufolge kann das System alle berechenbaren Funktionen durch- und ausrechnen wobei lediglich Raum und Zeit die Begrenzungsfaktoren darstellen.
Vor der Erfindung wird nachfolgend zunächst der Lambdaalgorithkurz beschrieben.
Der Lambdaalgorithmus ist ein Formalsystem, dessen beabsichtigte Interpretation in den Konzepten der Funktion und der Anwendung einer anderen Funktion auf die Argumente der zuerst genannten Funktion beruht. Eine Formel des Algorithmus ist eine bestimmt· Folg· von Zeichen von einem bestimmten festgelegten Alphabet und bestimmte Formeln find als reguläre Ausdrücke unterschieden. Eine Menge vo* t^prmwgfrpgaj^ ^jrorj^*|^j|^4ie die Transformation einer Formal,, «in*· Α*11*!»^
101 15/1765 ORJGiNALlNSPECTED
dere gestattet.
Es sind mehrere Lambdaalgorithmen vorhanden, die sich durch ihre Alphabete und/oder die Menge von Umformungsregeln unterscheiden, die sie zulassen.
Nachfolgend ist zuerst ein sogenannter reiner Lambdaalgorithmus beschrieben, das aus einem sehr begrenzten Alphabet und zwei Umformungsregeln aufgebaut ist.
In einem derartigen Algorithmus sind die in einer Formel zulässigen Symbole:
λ, (,), Veränderliche,
wobei die Veränderlichen Zeichenfolgen sind, die nach geeigneten Konventionen gebildet werden. Wenn also z. B. F, A, M und N als intuitive Veränderliche (die nicht zum System gehören) zur Bezeichnung einer Formel betrachtet werden, dann ist eine reguläre Formel definiert durch die folgenden Bedingungen:
1. Wenn ein Zeichen χ eine Veränderliche ist, ist es eine reguläre Formel und das Auftreten von χ in dieser Formel ist | frei.
2. Wenn F und A regulär sind, ist auch (FA) regulär, wobei im folgenden statt "regulär" "wohlgeordnet" gesagt wird. Die Eigenschaften der Veränderlichen, die in F oder A frei oder gebunden sind, werden in (FA) erhalten.
3. Wenn M wohlgeordnet ist und mit χ mindestens einmal frei auftritt, dann ist (XxM) wohlgeordnet und χ darin gebunden.
Wenn der Ausdruck [ti/x) M für die Formel steht, die sich durch Substitution von N für χ bis M ergibt, ist diese Formel wohlgeordnet mit Ausnahme der Fälle, in denen χ in M gebunden ist
10i 15/1765
und N keine Veränderliche darstellt.
Für wohlgeordnete Formeln werden die folgenden beiden Umformungsregeln eingeführt:
a) M —► [y/xj M
a) χ ist nicht frei in M
b) y.tritt in M nicht auf.
B) UxM)Nf=>|N/x]M
a) (XxM)N ist wohlgeordnet;
die gebundenen Veränderlichen von M sind verschieden von
b) x; und
c) den freien Veränderlichen von N.
Die oben gezeigte Alpha-Umformung formalisiert z. B. die Irrelevanz des zur Bezeichnung des Summenzeichens in einer Formel verwendeten Symbols in einer Summenformel. Die Beta-Umformung ist das formale Korrelat zur Operation der Anwendung der Funktion (XxM) auf ein Argument N.
Im folgenden Text wird der Teil einer Umformungsregel, der vor dem Pfeil steht, als Redex und der Teil hinter dem Pfeil als seine Kontraktion bezeichnet. Eine Formel wird als in der Beta-Normalform befindlich betrachtet, wenn sie keinen Beta-Redex enthält. Ein Grundtheorem (Church-Rosser) stellt fest, daß die Normalform einer Formel eindeutig ist bis zur Anwendung der Alpha-Konversion, wenn diese überhaupt existiert. Erhält man die Normalform einer Formel durch Anwendung von Umformungsregeln, so reflektiert das das intuitive Konzept der Funktionsauswertung.
Sind sie einmal soweit entwickelt, können arithmetische Funktionen definiert werden. Wenn also die ganzen Zahlen durch die For-
1 : XaXb(ab)
2 : XaXb(a(ab))
3 : XaXb(a(ab)))
dargestellt werden, dann wird die ganzzahlige Potenzierung, nra, z. B. definiert durch die Formel
XxXy (yx)
in dem Sinne, daß, wo n, ra für die Formeln stehen, die jeweils die ganzen Zahlen η und m darstellen,
((Xx((Xy(yx))n))m)
sich umwandelt in die Formel, die die ganze Zahl nm darstellt. In diesem Sinne ist jede teilweise rekursive Funktion positiver ganzer Zahlen "Lambda-definierbar".
Die Rechnung des auf diese Weise aufgebauten Lambdaalgorithmus besitzt die Eigenschaft der "Vollständigkeit". In dieser Form ist sie jedoch zu umständlich, um als Modell für eine praktische Computerkonstruktion dienen zu können. Der Formalismus, aus welchem sie aufgebaut ist, ermöglicht zwar Argumente über das System, läßt jedoch auch lange und undurchsichtige Rechnungen im System entstehen. Wenn er also die Basis für die Konstruktion eines wirksamen Computers bilden soll, muß der Formalismus erweitert werden.
Derartige Erweiterungen erreicht man auf verschiedene Arten. Zuerst wird die Menge der primitiven Ausdrücke vergrößert. Das bedeutet, daß die nur Veränderliche im reinen Kalkül enthaltenden Ausdrücke so erweitert werden, daß sie primitive Konstanten enthalten. Diese Konstanten sind als Konstantennamen für bestimmte FormeLn zu betrachten. Zusätzliche Umformungsregeln bewirken die
1 ' / ' 7 H 5
Auswertungen der aus solchen Namen gebildeten Formeln. Diese zusätzlichen Üiswandlungsregeln liefern das Formaläquivalent der Anwendung von Alpha- und Beta-Umformung Algorithmus auf Formeln, in denen die Namen durch das ersetzt wurden, wofür sie stehen.
So werden z. B. als primitive Notierungen für die ganzen Zahlen sowie für die gebräuchlichen arithmetischen Funktionen von ganzen Zahlen mit ganzen Zahlen wie Addition, Subtraktion, Multiplikation und Division eingeführt. Mit der Einführung dieser Konstanten wird auch die Menge der Umformungsregeln so erweitert, daß sie für alle ganzen Zahlen η und m die folgenden Formeln umfaßt:
für alle ganzzahligeη η, m, ((• + 'nj'ra) *-♦■
(C-'nJ'ii) ♦♦
((Vn)1In) ++ '(n/m)
worin ' + , '-, '■*, ' + , die primitiven Konstanten sind, die die arithmetischen Funktionen Addition, Subtraktion, Multiplikation und die Division von ganzen Zahlen darstellen und 'n die primitive Konstante ist, die die ganze Zahl η darstellt.
Bei der oben gezeigten Erweiterung des Lambdaalgorithmus, im folgenden auch Kalkül der Lambdaumformung genannt, übernehmen die primitiven Konstanten eine ähnliche Rolle wie die wohlgeordneten Formeln in der Normalform ohne freie Veränderliche des reinen Kalküls.
Bei einer zweiten Variation wird das System verstärkt und umfaßt auch Definitionen. Die Bedeutung einer Definition liegt darin, daß ein zu definierendes Symbol die Abkürzung einer definierenden komplexeren Formel ist oder diese darstellt. Als er-
1 (i ./1765
20A7095
-liste Folge wird daher die Menge primitiver Ausdrücke, die jetzt aus Veränderlichen und Konstanten besteht, so vergrößert, daß sie zu definierende Symbole umfaßt. Diese Symbole sind ähnlich den konstanten, während deren Bedeutung jedoch implizit ist, erfordert ein zu definierendes Symbol eine explitzite Erklärung durch die definierende Formel. Nur die definierende Formel muß wohlgeordnet sein, wobei eine Formel noch als wohlgeordnet betrachtet wird, wenn ein wohlgeordneter Teil dieser Formel durch ein zu definierendes Symbol ersetzt wird. In diesem Sinne sind rekursive Definitionen zulässig, d. h., eine als definierende λ Formel erscheindende Formel kann jedes zu definierende Symbol einschließlich der Formel selbst enthalten.
An diesem Punkt kann jetzt ein Problem durch eine zusätzliche Liste von Definitionen festgelegt werden, was bisher nur durch eine einzige Formel möglich war. Die Auswertung der Formel verläuft wie bisher. Ein zu definierendes Symbol muß jedoch nur durch eine Kopie seiner definierenden Formel aus der Liste der Definitionen ersetzt werden, wenn dieses zu definierende Symbol ein aktiver oder passiver Teil eines Substitutionsverfahrens ist, was z. B. bei der Anwendung bestimmter Umformungsregeln erforderlich werden kann. Eine derartige Folgegestaltung ist notwendig, da die Rekursion zulässig ist, die besagt, daß man ^ von einem Verfahren, welches alle zu definierenden Symbole ersetzt, zuerst nicht erwarten kann, daß es endet.
Eine Menge von Funktionen, die so gestaltet ist, daß das zu definierende Symbol der Name der Funktion wird, kann jede Untergruppe von wechselseitig rekursiven Funktionen enthalten, wenn das so gewünscht wird. Dieses Definitionsschema ermöglicht die Benutzung der wechselseitigen Rekursion.
Die Sprache der wohlgeordneten Formel des Lambda-Kalküls wird zur Maschinensprache des erfindungsgemäßen Systems im nachfolgenden Sinne.
10 '-/1765
In dem System entspricht eine Bitreihe jedem primitiven Ausdruck einer Formel. Die Bitreihe entspricht den Zuständen physikalischer Einheiten (Speicherzellen). Eine physikalische Einheit stellt intern einen leeren Raum auf dem Papier dar, in welchen ein Symbol hineinzuschreiben ist. In dem System wird eine bestimmte Speicherzelle gewählt und indirekt adressiert. Abhängig von der Ausführung des Speichers, interpretiert das System für diesen Zweck eine Bitreihe (Adresse, Bezeichnung, Stelle) die physikalisch zu dieser Speicherzelle gehört.
Demzufolge werden in der Maschinensprache vier Symbolklassen unterschieden, und zwar:
1. Veränderliche
2. zu definierender Wert
3. Konstante
4. Stelle
Da die Kenntnis der Symbolklasse in gewissem Ausmaß auch die Kenntnis der Funktion einer Symboles einschließt, besteht ein Konstruktionsmerkmal des erfindungsgemäßen Systemes in der Verbindung einer Bezeichnungs (eine Bitreihe) zur Bezeichnung der in einem Wort codierten Symbolklasse mit jedem Wort (eine zweite Bitreihe) im System. Die interne Darstellung einer Formel umfaßt eine Sammlung derartiger Maschinenwörter für alle vier Klassen. Um eine solche Sammlung von Maschinenwörtern aus einer Formel zu erhalten, ist einer Übersetzereinrichtung vorgesehen, die eine nach dem folgenden grairanatikalischen Gerücht erzeugte Sprache übersetzt:
s ·*■ (s)
s ■*■ (ss)
s ·+ (sss)
s -♦■ {primitiver Ausdruck}
1 0 ,'!765
Die Menge primitiver Ausdrücke ist für diese Grammatik die Menge der Anschlußsymbole. Es ist außerdem die Menge aller wohlgeordneten Wörter relativ zur Grammatik, die die Konstruktion der Symbole für Veränderliche, Konstanten, Stelle und zu definierende Symbole bestimmt. Diese Grammatik wird bei der übersetzung angewendet, die die Reihe von Eingangsζeichen in primitive Ausdrücke analysiert und sie in Maschinensprache durch ein Wort für jedes Zeichen darstellt. Die Anordnung dieser Wörter im Speicher setzt die Struktur der ursprünglichen Formel wieder zusammen. Die Maschine wertet die Formel durch die Manipulation ä der entsprechenden Maschinenwörter und nicht durch die Ausführung eines Programmes aus.
Der Beta-Redex kann z. B. durch die primitiven Ausdrücke λχ, χ, +, 3 entsprechend dem grammatischen Skelett in folgender Art gebildet werden:
(Ux(x+x))3)
Es wurde oben gesagt, daß bekannte Speicher in bezug auf ihre Zugriffsfunktion als eindimensionale Anordnungen bezeichnet werden können. Nach dem Erfindungsgedanken ist ein Speicher vorgesehen, der ungewöhnliche Datenstrukturen aufnehmen kann. Dieser ' Speicher wird nachfolgend als "Tafel" bezeichnet. Eine Menge von Speichereinheiten herkömmlicher Größe, Geschwindigkeit und Zugriff sme cn nismen bilden diese Tafel.
Die Eingangswerte gelangen in das System in Form einer Zeichenfolge (character sequence). Die Zeichenfolge wird in eine "Zeichen-Folge" (token sequence) umgewandelt, wobei der Ausdruck "Zeichen" ein Glied in der Menge bezeichnet, die aus primitiven Ausdrücken und Begrenzungen besteht. Diese "Zeichenfolge" befindet sich aufgrund ihres linearen Charakters im Kernspeicher.
In der folgenden als Beispiels dienenden Formel sind primitive Ausdrucke durch alphabetische Buchstaben bezeichnet. Die Formel
1 0 f.; i 1 f> / 1 7 6 5
lautet in der durch das grammatische Skelett definierten Sprache wie folgt:
<(a<b,c,d) (e
Eine Folge von Maschinenwörtern in aufeinanderfolgenden Speicherstellen entspricht im Verhältnis 1 : l der Folge von Symbolen in der Formel.
Durch die Anordnung der Klammern in der Formel wird eine Baumstruktur gebildet. Es liegt z. B. eine Knotenpunktverzweigung nach a,(b,c,d), und (e,f) vor und der Sinn ist der, daß "a" als Operand betrachtet wird, der auf das Ergebnis von (b,c,d) und (e,f) angewandt wird. Um also mit diesen Baumstruktüren arbeiten zu können ist der Tafelspeicher entsprechend mit Zugriffsfunktionen ausgelegt. Die Tafel besteht im wesentlichen aus einer Reihe von Hochgeschwindigkeitsregistern, von denen jedes groß genug ist, um einen primitiven Ausdruck zusammen mit seiner Bezeichnung aufzunehmen. Die Verzweigungs- oder Knotenpunkte eines durch eine Formel gegebenen Baumes entsprechen den Zeilen in der Tafel und die von diesen Knotenpunkten ausgehenden Verzweigungen den Spalten in der Tafel. Nach dem grammatischen Gerüst hat die Tafel drei Spalten für die Verzweigungen und kann eine vierte Spalte aufweisen, die die Verzweigungsadressen der Knotenpunkte enthält. Die assoziative Speichertechnik gestattet die Adressierung einer Reihe bei einer Übereinstimmung mit dem Inhalt der Daten- oder Bezeichnungsfelder einer oder mehrerer Spalten.
Die Grund-Informationseinheit besteht aus den Inhalt einer kompletten Zeile der Tafel und diese Einheit wird der Einfachheit halber ala Nachricht bezeichnet. Die Tafel fungiert als zentrale Kommunikationseinheit und steht mit Funktionseinheiten, Speichereinheiten und Eingabe- Ausgabeeinheiten in Verbindung. Die zuletst genannten Einheiten geben und empfangen Nachrichten oder mischen sie mit vorhandenen Nachrichten, wenn die Einheiten Zu-
109315/1765
griff zur Tafel erhalten. Nachrichten werden so in die Einheiten eingetastet, daß eine Einheit nur Zugriff zu den entsprechenden Nachrichten erhält. Das System berücksichtigt entweder den Zugriff durch die Einheiten der ganzen Tafel eine nach der andern in einer festen Reihenfolge oder den Zugriff durch jede Einheit zu nur einem Untersatz der Tafel, wobei in der zuletzt genannten Situation alle Einheiten gleichzeitig verschiedene Untersätze adressieren. Um alle Nachrichten allen Einheiten zur Verfügung zu stellen werden alle Nachrichten umlaufen gelassen, d. h. durch die ganze Tafel verschoben. j
Eine erste Funktionseinheit arbeitet wie ein herkömmlicher Instruktionszähler und überträgt eine Folge von Maschinenwörtern aus z. B. einem Kernspeicher in die Zeilen der Tabelle. Die anderen Funktionseinheiten entsprechen den Anwendungen der Umformungsregeln des zugrundeliegenden Formalsystemes und seinen Erweiterungen.
Eine Baumadressierungsanordnung manipuliert die Reihen der Tabelle analog zur Aufzeichnung der Beziehungen im Inhalt der Zellen in einem linear aufgebauten Speicher durch Adreßrechnungen mit ganzzahligen Rechnungen.
Bei der Betrachtung des oben gesagten muß berücksichtigt werden, daß eine lineare Struktur gekennzeichnet sein kann, als eine Menge N von Elementen und einer Folgefunktion s, die bei Anwendung auf ein Element N seinen Nachfolger ergibt. Ein Beispiel von N ist die Menge der natürlichen Zahlen, die die Adressen der Zellen in einem linear aufbauten Kernspeicher bilden können, während die Ganzzahladressenarithmetik durch die Funktion s definierbar ist.
Eine Baumstruktur ist jedoch gekennzeichnet als eine Menge T von Elementen und zwei oder mehr Folgefunktionen rl, r2 usw. rk, wodurch sich verschiedene Nachfolger für jedes Element der Menge T ergeben. Unter den Elementen einer Menge besteht eine Ordnung,
10 · / 1 7 K C
die für jedes Paar von Elementen a und b der Menge so definiert ist, daß
a b folgt, wenn die wiederholte Anwendung der Folgefunktion von b nach a führt.
Die obige Definition ergibt eine lineare Ordnung für die Menge N und eine Teilordnung für die Menge T. Das besagt, daß genau eine der folgenden Feststellungen über die Ordnungsbeziehung für eines von zwei Elementen a, b, e, T gilt:
1. a folgt b
2. b folgt a
3. es folgt weder a dem b noch folgt b dem a
4. a ist dasselbe Element wie b.
Die Knotenpunkte eines Baumgraphen bilden z. B. eine Menge T, während die Zahl der Verzweigungen von jedem Knotenpunkt der Anzahl von Folgefunktionen entspricht.
Eine Anordnung ist vorgesehen zum Aufbau von Bezeichnungen (Bitreihen) für die Zeilen in der Tafel um wiederzugeben, daß sie mit den Knotenpunkten eines Rechenbaumes verbunden sind. Adreßrechnungen werden durch Funktionen in Ausdrücken der Folgefunktionen rl bis rk durchgeführt und nicht durch Ganzzahlarithmetik.
Um die Entsprechung zu einer Baumstruktur zu erhalten, werden die Knotenpunktbezeichnungen wie folgt aufgebaut: Zuerst werden die von einem Knotenpunkt ausgehenden Verzweigungen von unten beginnend von links nach rechts nummeriert. Diese Richtung ist eindeutig bestimmt durch die Schreibrichtung in bezug auf die Originalformel. Als nächstes erhält man eine Bezeichnung für einen Knotenpunkt durch Verkettung der Nummern dieser Verzweigungen, die den Weg von der Wurzel des Baumes bis zu diesem Knotenpunkt bilden. Das führt jedoch zu der Wurzel in der leeren - - — 1t) 1/17 6 5
Reihe -/\_ . Daher steht vor jeder Knotenpunktbezeichnung ein Dezimalpunkt. An diesem Punkt stellt eine allein aus dem Dezimalpunkt bestehende Reihe eine leere Reihe dar. Es ist zu beachten, daß diese Symbolreihen nicht mit Zahlen verwechselt werden. Da die Tafel sehr leicht als ein assoziativer im Inhalt adressierbarer Speicher angesehen werden kann, liegen die Baumbezeichnungen in deren vierter Spalte gemäß obiger Beschreibung, wodurch sie den Hauptmechanismus für die Adressierung einer Zeile in der Tafel bilden.
Drei Bezeichnungen werden z. B. manipuliert, um die Bezeichnun- J gen eines unmittelbar vorhergehenden Knotenpunktes zu erhalten oder Teilordnungsbeziehungen zu bestimmen. Eine derartige Manipulation entspricht den Adreßberechnungen in einem herkömmlichen Computer wie z. B. der Erhöhung des Inhaltes eines Instruktionszählers um die Stelle der nächsten Instruktion zu erhalten. Zu diesem Zweck wird ein Satz primitiver Funktionen eingeführt, die entweder Aussagen sind oder durch Folgefunktionen definiert werden können. Diese Funktionen sind:
(Wurzel, x) : Prädikat
worin χ eine Baumbezeichnung darstellt. Die Funktion führt den
echten Wert "richtig" für χ = _/V_ und sonst "falsch" zurück. ™
(x - y) : Prädikat
worin χ und y für Baumbezeichnungen stehen. Die Funktion führt den echten Wert "richtig", wenn die Reihen χ und y aus denselben Zeichen in derselben Reihenfolge bestehen und sonst führt sie den Wert "falsch".
(S , k, η) : Folgefunktion s^
(P /Π) : vorhergehende Funktion
(fa , η) : Verzweigungsfunktion
1Oi:-: 15/1765
worin η eine Baumbezeichnung und k ein Element der Menge 1, 2, 3 ... i ist. Die Funktion s hängt die Zahl k an die Baumbezeichnung η an und die Funktion b liefert diese letzte Zähl bei Anwendung auf n. Die Funktionen b und ρ können durch die Folgefunktion mittels der Gleichung
(s, (b,n) , (p,n)) = η
Aus diesen Primitiven wird als Beispiel einer Funktion "pred" zusammengesetzt/ die bei Anwendung auf die Bezeichnung eines Knotenpunktes die Bezeichnung des ersten Vorläufers liefert, für die ein Prädikat pr um diesen Knotenpunkt richtig ist.
pred ::= (Xx(cond
(wenn (Wurzel x) dann Undefiniert sonst (pred2 (p,x)) ))
pred2 ::= (Xy(cond
(wenn pr,
sonst (pred y) ))
(wenn pr dann y)
Das Prädikat pr bezeichnet den Inhalt der anderen Spalten in der Zeile der Tabelle mit der Bezeichnung y.
In Fig. 1 ist das folgende Beispiel in Maschinensprache gezeigt:
((a(b,c,d) (e,f))
Die Zeiger bezeichnen die ursprüngliche Baumstruktur, die jetzt in den Baumbezeichnungen in Spalte 0 erhalten bleibt. Am Rand der Tafel (der keinen Teil der Tafel bildet) ist ein Beispiel dafür angegeben, wie die Bezeichnung des entsprechenden Knotenpunktes in Ausdrücken des vorhergehenden und nachfolgenden Kno tenpunktes mit den Funktionen 8 und ρ ausgedrückt werden kann.
Ein Knotenpunktübersetzer bewirkt die Übertragung einer Formel
10S-M5/1765
aus dem linearen Kernspeicher in die Tafel. Diese Einheit ersetzt in gewissem MaBe die bekannten Anordnungen zum übertragen eines Instruktionswortes nach dem anderen in das Decodierregister. Eine enge Entsprechung besteht für primitive Konstanten und Veränderliche, d. h., sie veranlassen den Knotenpunktübersetzer zur Abgabe einer Speicheranfrage nach der nächstfolgenden Stelle. Eine Formel besteht jedoch aus zu definierenden Symbolen und aus Klammern. Diese Symbole werden während einer der Verarbeitung vorausgehenden Abtastung durch Stellensymbole ersetzt. Als annähernde Beschreibung kann festgestellt, daß ein zu definierendes Synbol in einen Zeiger auf seinen Definitor J übersetzt wird und daß eine linksstehende Klammer in einen Zeiger auf das unmittelbar der rechtsstehenden Klammer folgendes Symbol übersetzt wird.
Ein Zeiger kann den Knotenpunktübersetzer dazu veranlassen, mehr als eine öder überhaupt keine Speicheranfrage abzugeben. In dieser Verbindung wird angenommen, daß z. B. in der Stelle i eine linksstehende Klammer steht. Da übereinstimmende Klammern den Text einschließen, der den Unterbaum darstellt, kann die Adresse i + 1 als eine Verzweigung zu diesem Unterbaum interpretiert werden, während der Zeiger für das Symbol hinter der übereinstimmenden rechtsstehenden Klammer auf das nächste Element des laufenden Knotenpunktes zeigt. Die Adresse i + 1 kann eine Ver- f zweigungsknotenadresse genannt werden und das nächste Element des laufenden Knotenpunktes eine normale Knotenpunktadresse. Der Knotenpunktübersetzer, unterrichtet durch den Bezeichner für das nächste Stellensymbol, gibt Speieheranfragen für beide Adressen ab.
Eine formale Beschreibung dieser Vorgänge kann in Form von Nachrichten gegeben werden. Der Inhalt einer Eingangsnachricht für den Knotenpunktübersetzer besteht aus:
0 -*· n, der laufenden Knotenpunktbezeichnung
1 ■»■ k, der Verzweigungsnummer
1Oi 15/1765
ORIGINAL INSrECTEO
2 ■+■ ra, einer Kernspeicheradresse
3 ·*· c(m) , dem Inhalt der durch m adressierten
Zelle in den vier Spalten einer Zeile in der Tafel.
Der Knotenpunktübersetzer verarbeitet so eine Nachricht, nachdem, was der Bezeichner von c(m) angibt.
Wenn c(m) eine primitive Konstante ist, gibt der Knotenpunktübersetzer zunächst folgende Ausgangsnachricht:
0 «- η
1 ·*■ wenn k = 1 ■* c (m) sonst R
2 *■ wenn k = 2 ->· c(m) sonst R
3 «- wenn k = 3 ·*■ c(m) sonst R
Die c(m) in der Spalte k der mit η bezeichneten Zeile (in Spalte O) bringt und den Inhalt der anderen Spalten in dieser Zeile reproduziert (R). Als zweites gibt der Knotenpunktübersetzer eine Speicheranfrage ab, d. h. eine erste Eingangsnachricht für die Speichereinheit:
0 <- η
1 <- k+1
2 «■ m+1
3 ·*- Block
Diese Aktion ersetzt ziemlich genau die Aktion eines herkömmlichen Instruktionszählers und daher wird die Einheit Knotenpunktübersetzer genannt, da ein nur aus primitiven Konstanten bestehender Knotenpunkt in eine Zeile der Tafel gesetzt wird.
Wenn c(m) eine Veränderliche ist, kann die Ausgangsnachricht dieselbe Form haben wie oben. Wie jedoch nachfolgend näher erklärt wird, wird die Veränderliche nicht in die durch η und k bestimmte Stelle gesetzt. Stattdessen wird eine Nachricht und eine neue
109315/1765
Betriebsart mit der Bezeichnung (s, k, n) beschaffen. Die Funktion s führt die Folgefunktion s, auf η aus.
0 «- (s,k,n)
1 *■ c (m)
2 + Block
3 ■*- Block
Wenn c(m) ein Stellungssymbol ist, muß zwischen verschiedenen Möglichkeiten unterschieden werden. Eine Eingangsnachricht mit einem Stellungssymbol enthält grundsätzlich zwei ganze Zahlen m und c(m), von denen neue Adressen wie m + c(m) gebildet werden können.
Wenn c(m) die interne Darstellung einer rechtsstehenden Klammer ist, wird die Eingangsnachricht gelöscht. Das bedeutet, daß keine Ausgangsnachricht erzeugt wird und der Knotenpunktübersetzer in den Empfangszustand zurückkehrt.
Wenn c(m) die interne Darstellung einer linksstehenden Klammer ist, gibt c(m) die Stelle nach der übereinstimmenden rechtsstehenden Klammer an, und zwar entweder absolut oder relativ als eine Erhöhung. Die dem Unterbaum entsprechende Verzweigungs-Ausgangsnachricht enthält eine neue Knotenpunktbezeichnung, die den folgenden Knotenpunkt entsprechend der Verzweigungszahl, eine erhöhte Kernspeicheradresse und die Rückstellung der Verzweigungsnummer auf 1 darstellt.
0 ·*■ (s,k,n)
1 «- 1
2 + m + 1
3 «- Block
Die Ausgangsnachricht für den Normalbetrieb entspricht den anderen Verzweigungen/ stammt aus dem laufenden Knotenpunkt, enthält die Beaeichnungdes laufenden Knotenpunktes, den Zeigen auf
109" I h/176 5
ORIGINAL INSPECTED
die erste Stelle nach dem Text, dör zu dem Ünterbäüm gehört und eine erhöhte Verzweigungshummer.
O 1 2 3
k +
f (c(m) ,m)
Block
Wenn c(m) die interne Darstellung eines zu definierenden Symboles ist, gibt c(m) die Stelle der definierenden Größe an. Die Ausgangsnachrichten sind in diesem Fälle:
Verzweigungsbetreb:
0 «- (s, k, ri)
1 t-
2 «- c(m)
3 <■ Block
Normalbetrieb:
O 1 2 3
k + m + Block
Diese Anordnung für Definitionen enthält virtuell die definieren de Größe in einer Formel für das Auftreten des zu definierenden Symboles in dieser Formel.
Die in Fig. 2 gezeigte Tabelle faßt die Arbeitsweise des Knotenpunktübersetzers in tabellarischer Form zusammen. Wenn angenommen wird, daß irgendeine Verschiebung des Textes in einem linear gebauten Speicher die Zeiger weiterschreibt, können im linearen Speicher absolute Zeiger enthalten sein und ein Zweiwegaddierer ist im Knotenpunktübersetzer nicht erforderlich.
109 «15/1765
Somit kann nach dem Bezeichnungsfeld des Inhaltes c(m) der Spalte 3 die Verarbeitung einer Nachricht aus 5 Grundoperationen bestehen:
1. Einsetzen von Blocks
2. Einsetzen von R's
3. Verschiebung von Spalte zu Spalte
4. Lineare Folgefunktion: plus eins
5. Baunifolgefunktionen: (s, k, n) , und alle
Felder der Ausgangsnachrichten können gleich- g
zeitig verarbeitet werden.
Aus dem Obengesagten ist zu ersehen, daß der Knotenpunktübersetzer allgemein als Instruktionszähler bezeichnet werden kann. Der Übersetzer transformiert voll eingeklammerten linearen Text in Baumstrukturen durch Übertragung von Daten aus einem linear gebauten Speicher in einen inhaltlich adressierbaren Speicher. Der Übersetzer ordnet Registerraum für die Baumknotenpunkte zu und erzeugt die entsprechenden Baumbezeichnungen um eine Adressierung der Knotenpunkte zu ermöglichen.
Wenn eine Formal einmal in der Tafel steht kann die Auswertung der Baumstruktur beginnen. Mit Auswertung ist gemeint, daß eine f Formel in die Normalform gebracht wird. Eine Formel wird als in der Normalform stehend betrachtet, wenn keine Umwandlungsregel mehr vorliegt, die angewendet werden könnte. Wenn die Tafel im entsprechenden physikalischen Zustand steht, erfolgt kein weiterer Austausch von Nachrichten.
Die Auswertung beginnt mit der Substitution der Werte für die Veränderlichen. Dieses Verfahren wird durch die Beta-Umwandlungsregel des Lambda-Kalküls geregelt. Die Beta-Konversion wird in der Erfindung durch eine Einheit ausgeführt, die Beta-Einheit genannt ist.
In der Beschreibung der Beta-Einheit wird eine Formel ((XxM)N),
1 0 ■ '17Rt;
20A7095
für die Beta-Reduzierung als Beta-Redex bezeichnet. In Fig. 3 sind die wesentlichen Knotenpunkte gezeigt, die einen einfachen Beta-Redex darstellen. Der Ausdruck Block in einem Feld besagt, daß dieses Feld nicht verwendet wird. Der Vorsatz "Lambda" macht eine Veränderliche zu einer gebundenen Veränderlichen, was intern angezeigt wird durch die Bezeichnung des entsprechenden Wortes. Die jeweilige Anordnung der Knotenpunkte wurde so gewählt, daß sie mit der Notierung ( vM) eine auf das Argument N angewandte Funktion ist, so daß (f, N) gilt, wo f sonst irgendwo gebunden ist an ( v, M). In der Formel M, d. h. in den dem Knotenpunkt n'l folgenden Knotenpunkten, wobei n1 einen Knotenpunkt in einer größeren Baumstruktur bezeichnet, können sich Knotenpunkt einer bestimmten Art finden, die der Knotenpunktübersetzer erzeugt, wenn er auf Veränderliche stößt. Somit kann die Existenz der folgenden Tafelreihe angenommen werden.
0 «- n, wobei n'l η vorausgeht
1 ■*■ ν
2 ■*■ Block
3 «- Block
Es wird daher die Eingangsnachricht für die Beta-Einheit gebildet, die sie durch eine oder mehrere Ausgangsnachrichten ersetzt, um sie Substitution des Argumentes N für die Veränderliche ν zu erhalten. Um die Information für die Nachrichten zu erhalten, würde die Einheiteine Kopie der Knotenpunktbezeichnung η für die Ausgangsnachrichten zurückbehalten und versuchen, durch wiederholte Anwendung der vorhergehenden Funktion ρ auf η den vorhergehenden Knotenpunkt herauszufinden, der die gebundene Veränderliche λν in der Spalte 1 enthält. Gemäß Darstellung in Fig. 3 erscheint dieser Knotenpunkt in der Form:
0 + n'l
1 + Xv
2 ■*■ leer
3 ■*■ Block
1 ° ' '■ η 7 6 5
Um eine erste annähernde Beschreibung des Verfahrens zu ermöglichen wird angenommen, daß die Argumentenformel N bereits zu einer primitiven Konstanten ausgewertet wurde. In dem jetzt betrachteten einfachen Fall findet sich diese primitive Konstante in der Spalte 2 der mit (p, n'l) = n1 bezeichneten Zeile. Durch Verwendung des Ausdruckes C(x,k) für den Inhalt der Spalte k in der mit χ bezeichneten Tabellenzeile ist die allgemeine Form der durch die Beta-Einheit für den betrachteten einfachen Fall erzeugten Ausgangsnachricht folgende:
0 + (p, n)
1 ·*■ wenn (b, n) = 1, dann C((p, n1) , 2), sonst R
2 ■*■ wenn (b, n) = 2, dann C((p, n'l), 2), sonst R
3 ·*- wenn (b, n) = 3, dann C((p, n'l), 2), sonst R
Die Nachricht setzt den Wert der Veränderlichen in den durch die Eingangsnachricht bestimmten Knotenpunkt, d. h. sie bewirkt die Substitution nach der Beta-Umwandlung.
Im allgemeinen Fall kann der einzusetzende Wert jedoch selbst eine Baumstruktur sein. In diesem Fall bringt das Substitutionsverfahren das Kopieren der Knotenpunkte eines Unterbaumes mit g sich, während die Knotenpunktebenen entsprechend verändert werden. Es muß daher auch der Fall betrachtet werden, in welchem man keinen Wert erhält, da die Formel von der Art (...(λχ,Μ)) ist. Hier ist die Formel (λχ, M) ein Funktionsargument, das für f in eine Formel der Form (f, A) eingesetzt werden muß. Weitere Komplikationen entstehen, wenn Listen gebundener Veränderlicher und mit einem Index versehener Veränderlicher vorgesehen sind.
Um den Regeln des Lambdakalküls nachkommen zu können, müssen die Unterbäume unbedingt kopiert werden, wenn sie für Veränderliche eingesetzt werden sollen. Es entsteht dabei jedoch das Problem der sogenannten kollidierenden Veränderlichen, wenn eine Formel, die freie Veränderlich· enthalt, in eine andere Formel eingesetzt wird, wo diese freien Veränderlichen irrtümlichen gebunden wer-
109 ri 15/1765
2Ü47095
den. Dieses Problem kann dadurch gelöst werden, daß die Substitution einer Formel vermieden wird, die freie Veränderliche enthält. Wenn beim Kopieren eines Unterbaumes z. B. eine nicht markierte Veränderliche auftritt, wird erst weiterkopiert, wenn ein Wert für die aufgetretene Veränderliche gefunden wird oder diese Veränderliche markiert wird. Dadurch wird eine bestimmte Reihenfolge eingeführt, dieses Verfahren ist jedoch durch die Existenz eines Grundtheorems gerechtfertigt, welches zur Normalform einer Formel führt, wenn diese überhaupt existiert, ungeachtet der Reihenfolge, in welcher die Urawandlungsregeln angewandt werden.
Wie oben bereits gesagt wurde, werden bestimmte einheitliche wohlgeordnete Formeln, wie z.B. rechnerische Konstanten durch primitive Konstanten ausgedrückt. Im allgemeinen ist für jeden primitiven Operanden eine Funktionseinheit vorgesehen, die die durch die primitiven Konstanten benannten Formeln auswertet. Die Eingangsnachricht für diese Einheiten, die nachfolgend als s-Einheiten bezeichnet werden, hat folgende allgemeine Form:
0 -*■ η
1 ■*■ pr Operator
2 ·*■ Operand
3 -*■ Operand
worin pr" die Bezeichnung für primitive Konstanten ist. Im allgemeinen sind die Operanden ebenfalls primitive Konstanten, Formeln sind jedoch als Operanden zulässig.
Die f-Einheit wird auf die zugehörige Eingangsnachricht durch den pr-Operator und die Bezeichnung der Operanden getastet. Eine derartige Eingangsnachricht ist erst nach Ankunft der Operanden vollständig.
Die f-Einheit erzeugt als Ergebnis entweder eine Formel oder eine primitive Konstante. Zm suletxt genannten Fall setzt die Aus-
109 3 15/1765
gangsnachricht das Ergebnis in den unmittelbar vorhergehenden Knotenpunkt, d. h.:
0 «- (p, n)
1 ■*- wenn (b, n)
2 ■*- wenn (b, n)
3 ■*- wenn (b, n)
1, dann Resultat, sonst R
2, dann Resultat, sonst R
3, dann Resultat, sonst R
Der vorhergehende Knotenpunkt kann jetzt eine Eingangsnachricht für eine andere f-Einheit bilden. Daraus ist zu ersehen, daß ein Maximum gleichzeitiger Aktionen in der Baumstruktur erfolgen kann, während die notwendige Reihenfolge aufrechterhalten wird.
Die oben beschriebene Baumstruktür kann auch in einer binären Baumstruktur entsprechend einer Tafel mit drei Spalten arbeiten. In diesem System werden Recheneinheiten zu f-Einheiten. Im allgemeinen kann auf diese Weise jede herkömmliche Instruktion verwendet werden, die eine neue Bitreihe aus einer oder mehreren gegebenen Bitreihen erzeugt.
Um das Obersetzungsverfahren als eine Formel in Ausdrücken des Systemoperators zu schreiben, ist eine Menge von primitiven Operatoren anzuwenden. Eine solche Menge setzt sich zweckmäßigerweise aus den fünft Grundfunktionen zusammen, nämlich cons, car, cdr, eq und atom, die Wortreihen in den Linearspeicher als Operanden nehmen.
Wie bereits gesagt, kann die Beta-Umwandlung die Substitution einer Formel für eine Veränderliche erfordern. In bezug auf die betroffenden Baumstrukturen ist das gleichwertig mit der Erzielung eines Unterbaumes für einen durch die Veränderliche bezeichneten Knotenpunkt. Das allgemeine Problem besteht in der Bewegung des Unterbaumes η (Ursprung), d. h. in der Bewegung der Menge von Knotenpunkten, die η und alle nachfolgenden bis zum Knotenpunkt n. (Ziel) enthalten.
10: -./1765
Der Algorithmus hierfür ist durch den Inhalt der Zeilen in der Tafel ausgedrückt. Eine annäherende rekursive Formulierung ist folgende. Wenn angenommen wird, daß in der Tafel ein Unterbaum mit der Bezeichnung η und ein Zielknotenpunkt mit der Bezeichnung n. stehen, dann wird in die Tafel eine Kopie der Zeilen mit der Bezeichnung η gesetzt, in welcher η durch n. ersetzt wird. Das Verfahren wird dann auf die Unterbäume mit der Bezeichnung (s, k, η ) und die Knotenpunkte (s, k, n. ) für alle k-Werte so
S 1C
angewandt, daß C(n , k) gleich leer ist.
Das Verfahren wird jetzt anhand von Eingangs- und Ausgangsnachrichten beschrieben. Die das Gruppieren der Unterbäume übernehmende Einheit nimmt als Eingangsnachricht eine Zeile der nachfolgenden Form:
O ■»■ ns
1 ·+· Kopie
2 ■»■ nt
3 ■» Block
Die gelieferte Information veranlaßt die Einheit zum Destruktiven Lesen des Knotenpunktes η aus der Tafel. Die Einheit er-
zeugt eine Kopie dieser Zeile mit der Bezeichnung n, und schreibt beide Zeilen, die Originalzeile und die Kopie, neu. Es wurde die Information über Leerstellen und nichtleere Spalten in der Zeile erhalten. Die Einheit erzeugt dann die folgende Ausgangsnachricht für jede Leerstelle in der Spalte k:
0 ■*· (b, k, η )
1 4- Kopie
2 ■*· (s, k, nt)
3 «- Block
Da die zuletztgenannten Ausgangsnachrichten Eingangsnachrichten
10 -''17BS
für die Einheiten sind, kann die folgende Veränderung eingeführt' werden, d. h., die Ausgangsnachricht mit dem größten k wird intern zur Eingangsnachricht für die Einheit, die nicht in die Tabelle eingreift. Die übrigen Ausgangsnachrichten werden später aufgenommen, nachdem die Einheit einen spitzen Knotenpunkt kopert hat, der keine Leerstellen enthielt. Wenn jedoch verschiedene Einheiten zur Verfügung stehen, können mehrere kopierte Nachrichten gleichzeitig verarbeitet werden, was zu einer Erhöhung der Kopiergeschwindigkeit führt.
Die Regeln der Beta-Umwandlung erfordern, daß bestimmte veränderliche Knotenpunkte entsprechend den freien Veränderlichen im Sinne des Lambdakalküls des Kopieren unterbrechen, bis ein Wert angekommen ist. Somit bringt die Kopiereinheit nur die verängerlichen Knotenpunkte in die Tafel zurück und geht dann in den Wartezustand über. Ein ähnlicher Vorgang ergibt sich, wenn eine Kopiereinheit versucht, einen Knotenpunkt zu lesen, der momentan nicht in der Tafel steht.
Innerhalb einer gewählten Konstruktion der Tafel ist es möglich, gleichzeitig alle Knotenpunkte eines Unterbaumes zu löschen, d. h., man kann alle Knotenpunkte löschen, deren Bezeichnungen einen gemeinsamen Vorsatz haben. Anderweitig kann die Kopierein- ™ heit durch eine weitere kleine Änderung zu einer Löscheinheit umgewandelt werden. Wenn man die Zielbezeichnung in der kopierten Nachricht in Spalte 3 wegläßt, unterdrückt die Einheit das Schreiben sowohl des Originales als auch der Kopie des Knotenpunktes und löscht ihn dadurch.
Das "reine" Lambdakalkül sieht keine bedingten Einheiten vor. Um vorhandene Prograrnmiersprachen an das System der Erfindung anzupassen, kann darin die elementare Bedingungsform angewendet werden, wie sie in der Druckschrift "A Basis for a Mathematical Theory of Computation", by J. McCarthy, on pages 33 70 of "Computer Programming and Formal Systems", edited by P. Braffort and D. Hirschberg, North Holland, Amsterdam, 1962 ver-
10 l, / 1 7 6 5
- 3Q-
öffentlicht ist;. Die formalen Eigenschaften der Konditionalfor>men sind in dieser Druckschrift gegeben. Die Anwendung würde f-Einheiten erfordern» die den ümformungsregeln der nachfolgenden Form entsprechen: ,
(richtig M N) ^M ' (falsch M N) -► N
worin falsch und richtig echte Werte sind - eingeteilt als primitive Konstanten und M und N intuitive Veränderliche, die für wohlgeordnete Formain stehen. Ein elementarer bedingter Redex erscheint in der Tabelle als die Wurzel der drei Unterbäume, die sich gleichzeitig in der Tabelle entwickeln. Der erste Unberbaum sollte sich zu einem echten Wert entwickeln. Sobald dieser Wert im Redex erscheint, kann der überflüssige Unterbaum durch assoziativen Zugriff zu den Elementen des ersten Unterbaumes in der Tafel entfernt werden.
Es ist möglich, Bäume in Verbindung mit zusätzlichen echten Werten wie etwa "undefined" und "don't care" zu manipulieren.
Eine Menge primitiver Funktionen, die in geeigneter Weise als Prädikate bezeichnet sind und echte Werte zurückbringen, kann dazu verwendet werden, um die Symbole im System in Klassen zu unterteilen und zueinander in Beziehung zu setzen.
Das System der Erfindung gestattet zahlreiche Verallgemeinerungen und Erweiterungen. Wenn man also den Unterschied in den Arbeitsgeschwindigkeiten zwischen einem Rückgriffspeicher und der Tafel betrachtet, kann mehr als ein Knotenpunktübersetzer verwendet werden, um die Tafel in vollem Ausmaß zu benutzen und dadurch die gleichzeitige Verarbeitung verschiedener Programme zu gestatten. Abhängig von der Struktur der Programme kann die Rechengeschwindigkeit durch Zusatz weiterer Rechen- und Funktionseinheiten gesteuert werden, ohne daß Änderungen in der Struktur des Systems notwendig sind.
10?;» 15/1768
Aus der Wiederholung des Obengesagten geht hervor, daß die Tafel die allgemeine Koramunikationseinheit zwischen den verschiedenen Quellen des Systems ist. Eingabe/Ausgabekanäle, Rückgriffspeicher-Einheiten, Funktionseinheiten, Recheneinheiten und der Programm- und Knotenpunkttibersetzer bilden die Quelleneinheiten des Systems, während die Tafel die Verriegelung, Reihenfolgeordnung und die Herstellung von Verbindungen zwischen den Quelleneinheiten Obernimmt.
Das System gestattet die Verwendung schnellerer und kleinerer ä Kompilierer, da die Maschinensprache selbst auf einer ziemlich hohen Ebene steht. Das bedeutet, daß zahlreiche durch die Programmiersprachen gegebenen Möglichkeiten bereits in den Bauteilen enthalten sind und nicht aus primitiven Instruktionen zusammengesetzt werden müssen.
Um eine höhere Flexibilität des assoziativen Zugriffs zu erreichen und eine Maskierung zu vermeiden, können in der Tafel vorteilhaft vierwertige Verknüpfungsschaltungen verwendet werden. Außer den binären Werten 1 und O können noch weitere Verknüpfungswerte wie "don't care" und "undefined" benutzt werden, um eine Übereinstimmung entweder für O oder 1 zu erhalten bzw. jegliche Übereinstimmung zu vermeiden. ™
Aus der Betrachtung der obigen Ausführungen geht hervor, daß der beschriebene Computer so verwendet werden kann wie er kommt, ohne daß besondere Änderungen, Zusätze und Einstellungen notwendig sind. Die Ziele, die ein derartiger Computer erreicht, sind folgende:
1. Explizite schaltkreisgestützte Bindung Veränderlicher (Namen oder Bezeichnungen für Daten in gegenwärtig bekannten Computern) an Werte.
2. Nichtlineare Programmstruktur (direkt von den Bauteilen verarbeitet) .
10 ■;/ 1 765
3. Verteilte Decodierung.
Um diese Verbesserungen verstehen zu können, müssen sie in die Perspektive bekannter Computeraufbauten gebracht werden. Wenn also der Grundmechanismus zur Ausführung einer linearen Folge von Befehlen einer nach dem andern gegeben ist, so erhebt sich das erste Argument welche Gruppe von Befehlen anzuwenden ist. Es ist z. B. klar, daß Recheninstruktionen Einheiten bilden, die fraglos erwünscht sind. Eine äußerst gefährliche Aktion in einem Computer ist jedoch die Neuschreibung des Inhaltes einer Speicherstelle. In diesem Zusammenhang ändert fast jede Instruktion in diesem Sinne die Umgebung, in welcher ihre Folgeinstruktion ausgeführt wird. Somit wird die Auswirkung einer Instruktion zwangsläufig abhängig von all ihren Vorläufern. Dadurch wird eine Maschinensprache fehleranfällig und schwierig zu ändern wegen der Schleifen und der bedingten Übertragungen. Ein Ziel hochstehender Programmier- und übersetzersprachen ist die Unterstützung des Programmierers in der expliziten Steuerung der Umgebung, in welcher einige Feststellungen ausgewertet werden oder bei der Steuerung der Werte, auf welche sich die Namen (Tafeln, Veränderliche in dieser Feststellung) beziehen.
An diesem Punkt ist es wichtig, den Unterschied zwischen einer funktionellen Programmiersprache und einer Verfahrensprogrammiersprache zu verstehen. Eine funktionelle Programmiersprache benutzt Funktionsdefinition und Funktionszusammensetzung als grundlegende Mittel zum Aufbau von Algorithmen. Eine Verfahrens-Programmiersprache verwendet die einzelnen Verfahrensschritte von einer Feststellung zur anderen als Mittel zum Aufbau von Algorithmen.
In dem Computer der Erfindung wird im Bauteil der Bindemechanismus angewendet, wie er im Lambdakalkül formalieiert ist.
Im Zusammenhang mit dem Ziel; die direkte Handhabung von nichtlinearen Programmstruktüren durch den Computer zu erreichen,
. 1(Hn 'i /176 5
muß man beachten, daß bisher bekannte Computer sich hauptsächlich mit linearen Strukturen befassen, bei denen ein Programm mit seiner strengen Reihenfolge von Instruktionen das beste Beispiel liefert. Verschiedene Versuche sind unternommen worden, um die Geschwindigkeit der Programmausführung zur erhöhen, indem man diese strenge Reihenfolge unterbricht. Beispiele für diese Versuche sind die Voarausschau, die Mehrfach-Instruktionszähler und die Mehrfunktionseinheiten. Da der Informationsursprung jedoch eine Reihenfolge von Instruktionen bleibt, sind ausgefeilte Verriegelungsschemata erforderlich, um die Information in Λ der Instruktionsfolge zu erhalten. Besonders bei Mehrfach-Instruktionszählern, wo Instruktionsströme verzweigen und wieder zurückkehren, ist es schwierig festzustellen, welche Umgebung für welche Verzweigung gültig ist und wie die Verzweigungsumgebungen am Wiedervereinigungspunkt zu konsolidieren sind.
Eine lineare Struktur kann abstrakt durch die Eigenschaft charakterisiert werden, daß alle Bestandteile nur einen Nachfolger haben. Diese abstrakte Kennzeichnung führt bei Verallgemeinerung sich selbst zu Baumstrukturen, d. h. eine binäre Baumstruktur ist gekennzeichnet durch zwei Nachfolger für jedes Element und ein n-fächer Baum hat meistens η Nachfolger für jedes Element.
Die Fassung einer Rechenstruktur in eine Baumstruktur bietet zahlreiche Vorteile. So kann ein Baum leicht in Unterbäume aufgeteilt werden. Eine Richtung ist bei einem Baum zwangsläufig gegeben, da alle Elemente mit einer Ausnahme nur einen Vorgänger haben, eventuell aber eine Anzahl von Nachfolgern und da es in einem Baum leicht ist, Blätter zu ersetzen. Um somit die direkte Verarbeitung nichtlinearer Strukturen durch den Computer zu erreichen, wird ein Baumadreßsystern angehängt, welches die Fassung von Rechenstrukturen in Baumstrukturen vorsieht. Der Baum wird entwickelt, indem man bei der Wurzel beginnt und bis zu den Blättern fortschreitet. Ergebnisse bewegen sich von den Blättern zur Wurzel und bringen dadurch den Baum zum Einsturz. Um Schleifen und Rückläufe zu erleichtern, werden Blätter durch
10i: Vl R/1765
Unterbäume ersetzt.
Um eine verteilte Decodierung zu erreichen muß die große Bedeutung der Decodierregister und Instruktionszähler in bekannten Computern entsprechend gewürdigt werden. Im allgemeinen muß eine Instruktion zur Ausführung zuerst einmal in das Decodierregister gebracht werden. Wenn es also in einem herkömmlichen Computer nötig wird, einen Schritt auszuführen, der nicht durch den laufenden Instruktionsstrom bestimmt ist, müssen Unterbrechungen und Anzapfeinheiten verwendet werden. Das bedeutet: um die Decodiereinheiten für ein anderes Programm zu befreien, muß der laufende Instruktionsstrom angehalten werden und die Umgebung und/oder der Zustand des Computers müssen aufbewahrt werden.
Ein erfindungsgemäß gebauter Computer umfaßt verschiedene Funktionseinheiten, die im allgemeinen im Aufnahmezustand stehen, d.h, nach ihrer speziellen Natur nehmen sie Nachrichten nacheinander auf, verarbeiten sie, geben Nachrichten für andere Einheiten ab und kehren in den Aufnahmezustand zurück, wobei die Einheiten nicht gebunden oder an irgendein Programm geknüpft sind. Die Nachricht ist in sich selbst gefaßt und trägt zu diesem Zweick einen expliziten Code für ihre Umgebung mit sich. Mehr als ein Programm kann dieselbe Gruppe von Funktionseinheiten teilen. Steuerprogramme zur Verwaltung der Instruktionsdecodierung sind nicht erforderlich.
Als besonderes Konstruktionsmerkmal wird für die Grundstruktur des Computers nach der Erfindung ein fünf Byte umfassendes Wort gewählt. Das erste Byte eines Wortes dient der Beschreibung der Art der Daten, die das Wort enthält, und wird als Beschreibungsbyte bezeichnet. Es werden also verschiedene Datenarten durch ihre Beschreibungsbytes unterschieden und nicht durch die mit ihnen durchgeführten Funktionen. Die Grundbestandteile des Computers sind folgende:
109 0 15/1765
1. eine Eingabeeinheit und ein Eingabekanal, die die hereinkommenden Eingangsdaten zu einer Zeichenfolge sammeln und sie in sinnvolle Wortlängen unterteilen, welche Zeichen genannt werden. Die Eingabeeinheit verarbeitet diese Daten, nimmt kleine Änderungen in den Zeichen vor und ordnet den ' meisten Daten eine Stelle im linearen Speicher zu.
2. ein großer konventioneller Linearspeicher, in welchem jeder 'adressierbare Teil ein Wort lang ist. Eine Kopie des Programmes befindet sich während der Ausführung des Programmes im Linearspeicher.
3. ein Assoziativspeicher als Grundmerkmal des Computers wird als Tafel bezeichnet. Nur die Teile des Programmes, die in der Tafel stehen, können ausgeführt werden. In der Tafel nimmt das Programm die Form eines n-teiligen (im Ausführungsbeispiel eines 3teiligen) Baumes an. Diese Form läßt sich erreichen, da die im Computer benutzten Programme voll geklammerte Ausdrücke sind wie z. B.
(a (b c d) (e f) )
wo ein Klamraernpaar zwei oder drei Unterausdrücke einschließen muß. Diese Ausdrücke entsprechen zwangsläufig den Bäumen, Der obige Ausdruck entspricht z. B, dem Baum
13
b 121
132
Die Tafel besteht aus einer Gruppe von Hochgeschwindigkeitsregistern mit einer Länge von je einem Wort. Die Knotenpunkte an einem Baum, der durch irgendein Programm gegen ist,
10. i b / 1 7 6 E
entsprechen den Zellen In der Tafel und die von den Knotenpunkten ausgehenden Verzweigungen den Spalten in der Tafel. Eine Tafeleintragung oder Zelle setzt sich aus vier Wörtern entsprechend dem Ausführungsbeispiel zusammen. Das erste Wort enthält die Bezeichnung des Knotenpunktes, für den die Eintragung gilt. Das zweite und dritte Wort enthält die primitiven Zeichen unter dem Knotenpunkt für die, die unmittelbare ünterausdrücke sind. Für den oben gezeichneten Knotenpunkt 12 ergibt sich z. B. folgende Tafeleintragung:
(121) (122) (123)
N t 12 I b ι c I d
worin N die Bezeichnung des Knotenpunktes ist. Wenn einer der Punkte unter dem Knotenpunkt selbst ein Verzweigungspunkt ist, erfolgt kein Zeicheneingang an seiner Stelle und für ihn muß eine Zeile vorgesehen werden. Nach dem oben gezeigten Baumbeispiel hat die Zeile für den Knotenpunkt 1 die Form:
(11) (12) (13)
I 1 L
und Eintragungen für die Knotenpunkte 12 und 13 müssen in der Tafel vorgenommen werden. Die Assoziativtechnik gestattet den Zugriff zu einer Zeile bei einer Übereinstimmung mit dem Inhalt der Daten- oder Beschreibungsfelder einer oder mehrerer Spalten. Eine Zeile ist immer die Grundinformationseinheit, wenn die Tafel betroffen ist. Eine Zeile braucht keinen Baumknotenpunkt darzustellen (die Bezeichnung des ersten Wortes braucht nicht N zu sein). Der Eingangskanal erzeugt z. B. Tafeleintragungen, die dann durch einen Speicher aufgenommen werden, der eines der Wörter der Tafel-
1 0 ι S / 1 7 6 5
eintragung in die Stelle im linearen Speicher setzt, die durch eines der anderen Wörter in der Tafeleintragung angegeben wird. Deshalb wird hier der Ausdruck Nachricht zur Beschreibung einer Tafeleintragung verwendet, bei der die Grundfunktion der Tafel darin besteht, die zentrale Kommunikationseinheit zwischen allen Funktionseinheiten zu sein.
4. Die übrigen Teile des Systems sind lauter geeignet bezeichnete Funktionseinheiten. Diese Einheiten suchen Nachrichten, d. h. Tafeleintragungen für sich, holen sie wieder heraus, ^ verarbeiten sie und setzen neue Nachrichten in die Tafel.
Ein Addierer würde z. B. eine Nachricht in der Form
nk
herausholen, 3 und 5 addieren und eine Nachricht in die Tafel setzen, die einer anderen Einheit anzeigt, daß diese die Antwort, nämlich 8, in die k-te Spalte der Eintragung mit der Knotenpunktbezeichnung η setzen soll. Die zuletzt genannte Einheit würde diese Nachricht herausholen, die Bezeichnung η des Vorläufers des Knotenpunktes nk errechnen, die Eintragung des Knotenpunktes η herausholen, diese verändern und dann in die Tafel zurücksetzen.
Anschließend wird die als Eingabe durch den Computer akzeptierte Sprache beschrieben. Die Eingabe besteht aus Reihen von Symbolen, die in logische Gruppen unterteilt sind und Zeichen benannt sind. Jedes Zeichen besteht aus drei Teilen, und zwar (1.) einem Beschreiber, der die Art des Zeichens beschreibt, (2.) dem Rumpf des Zeichens und (3.) einem Begrenzer, der das Ende des Zeichens angibt. In dem Zeichen I2345# ist beispielsweise I ein Besohreiber, welcher angibt, daß das Zeichen eine ganze Zahl ist, 2345 ist der Rumpf des Zeichens und # ein Symbol, welches angibt, daß eine Leerstelle der verwendete Begrenzer für das Ende des Zeichens ist. Die Klammerzeichen {, (F, und) dienen gleichzeitig
. . 1 0 ε -: ι S/ 176 5
als Beschreiber, Rümpfe und Begrenzer, während andere Zeichen separate Beschreiber, Rümpfe und Begrenzer benötigen. Das Leerzeichen wird als Begrenzer für alle Zeichen mit Ausnahme der Klammern verwendet.
Anschließend werden die verschiedenen Arten von Begrenzungszeichen (Begrenzer) und somit die verschiedenen Zeichenarten beschrieben. Die verwendeten Notierungen für ein Zeichen sind anschließend in eckigen Klammern dargestellt:
1. Ganze Zahlen, Gleitkommazahlen, Oktalzahlen [i] , [t] , [o] .
2. Echte Werte [tr] .
Der Rumpf solcher Zeichen ist T oder F. Die Notierung T (F) bezeichnet das Echtwertzeichen mit dem Rumpf T (F jeweils).
3. Funktionskonstanten P .
Die Funktionskonstanten sind in drei verschiedene Kategorien unterteilt: (1) Funktionen von Zahl zu Zahl wie Addition, Multiplikation, Substration, Vorzeichenwechsel, Quotientrest, Erhebung in eine Potenz (die entsprechend dargestellt sind durch + , -, QT, R, PR); (2) Funktionen von Zahlen zu echten Werten wie "gleich", "kleiner als", "kleiner als oder gleich", "größer als", "größer als oder gleich" (entsprechend dargestellt durch die Zeichen », <, «,, >, >); (3) Funktionen von echten Werten zu echten Werten wie "nicht", "und", "oder", "impliziert", "ist gleichwertig mit" entsprechend dargestellt durch die Zeichen , t, ODBR, 5.
4. Namen der Ausgabeeinheiten(odJ . Jede Ausgabeeinheit hat einen anderen Namen, der den Rumpf des Zeichens bildet.
5. Veränderliche Namen [y]
6. Bindende Veränderlich· [λν]
109 3 15/1765
7. Definitionsbezeichnungen (pef f]
8. Definierte Ausdrucksnamen ßSf]
9. Bedingter Zeiger Qf]J. Außer der Anzeige einer bedingten Feststellung funktiert dieses Zeichen als linke Klammer.
10. Linke Klammer j(]
11. Rechte Klammer [}]
Die Schreibweise η bezeichnet irgendeines der Zeichen 1, t oder ο (d. h. Zahl). Die Zeichen der Art 1 und 2 werden Grundkonstanten genannt und gemeinsam durch c bezeichnet. Die Zeichen der Art 1 bis 3 werden Konstanten genannt und gemeinsam durch c bezeichnet. Wenn ν und λν in demselben Zusammenhang geschrieben werden, wird angenommen, daß die Zeichen dieselben Rümpfe haben.
Dasselbe gilt für Def, f und 6f. Sie werden benutzt, um ( und (F gemeinsam zu bezeichnen.
Die."wohlgeordneten Ausdrücke" - wfe - der Sprache sind wie folgt definiert:
a) Jede Grundkonetante, Veränderliche, oder jeder definierte Ausdruck ist ein wfe.
b) Wenn e eine Funktionskonstante oder ein wfe und e2 und e_ wfe's sind, dann sind auch Ce1, e~) und (e., e«, e.) wfe18.
c) Wenn λν eine bindende Veränderliche und e ein wfe ist, dann ist auch (λν β) ein wfe.
d) Wenn e, e^ und e2 wfe's sind, ist auch (f e e. e.) ein wfe.
e) Die einzigen wfe's sind die durch die Regeln a bis d gege-
1 0 f ■ i; / 1 7 6 5
ben.
Anschließend wird gezeigt, wie ein wfe als ein dreifacher Baum betrachtet werden kann, d. h. als ein Baum mit höchstens drei Verzweigungen an"einem Knotenpunkt. Wenn man einen Ausdruck der Form
((ab(cd))(efg)) 12 3 322 21
betrachtet, worin a, b, c, d und e Zeichen sind, die nicht in Klammern stehen, dann entspricht ein derartiger Ausdruck dem folgenden Baum:
Die Höhe eines Knotenpunktes auf dem Baum kann definiert werden als der Abstand des Knotenpunktes von der Spitze des Baumes, wobei der Abstand zwischen je zwei Punkten eine Einheit bildet. In dem oben gezeichneten Beispiel eines Baumes sind die Höhen die numerische Notierung am Rand. Es ist zu beachten, daß Klammern so numeriert werden können (einer linksstehenden Klammer wird eine Eins zugeordnet und die Zahl der letzten nicht übereinstehenden linksstehenden Klammer, einer rechtsstehenden Klammer die Zahl der letzten nicht übereinstimmenden linksstehenden Klammer) daß ein in einer nummerierten linken Klammer stehendes η einen Ausdruck von Elementen auf der Höhe η öffnet und ein in einer nummerierten rechten Klammer stehendes η das Ende einer Gruppe von Ausdrücken auf der Höhe η anzeigt, wobei alle unter demselben Knotenpunkt des Baumes liegen.
Docket YO 968 027 L^
Ein Programmelement ist eine Reihe der Form Def f. e. oder der Form OD e, worin Def f. eine Definitionsbezeichnung ist (e. ist die Definition des mit f^ bezeichneten wfe) und OD der Name einer Ausgabeeinheit. Ein Programm ist eine Reihe von Programmelementen in Klammern wie z. B.
( Def f. e. Def f~ e~ ... Def f e OD e ) Ii ζ ζ η η
worin alle f^'s verschieden sind, d. h. die Rümpfe der Zeichen des f. sind unterschiedlich. Ein OD Element muß als letztes \ auftreten und der wfe e muß gegeben sein durch b, c oder d. Der Baum des Programmes ist ein dreiteiliger Baum entsprechend dem wfe e.
Ein Programm hat man sich wie folgt vorzustellen: Ein Ausdruck der Form ( (λν e.) e~) stellt das Ergebnis dar, was man erhält, wenn e.. eine Funktion von ν ist, angewendet auf e2« Das erhält man durch Substitution von e« (oder das durch vollständige Auswertung erhaltene Ergebnis) für jedes Auftreten von ν im Ausdruck e . Ein Ausdruck der Form (F e e. e-) bedeutet e,, wenn das Ergebnis der Auswertung von e T ist, e,/ wenn das Ergebnis bei Auswertung von e F ist und in anderen Fällen e1, wobei e1 g das Ergebnis der Auswertung von e" ist. Wenn ein Name für einen definierten Ausdruck 6f. in einem Ausdruck gefunden wird, wird er durch seine Definition ersetzt, die durch Def f. bezeichnet ist. Somit bringt eine Programmauswertung den Versuch mit sich, den Wert des Ausdruckes e zu erhalten mit Hilfe der Definitionen <5f, ... <Sf . Das Ergebnis wird auf die vorgeschriebene Ausl η
gabeeinheit geleitet, wenn keine weitere Auswertung vorgenommen werden kann. So sind z. B.
( & 3 » 3 4 > 7 ) ( (λ b ( + 3b) ) 7 )
Ausdrücke (mit den Werten F bzw. 10). (OD(F1T 3 O)) ist ein Programm, durch welches die drei als Ausgangssignal auf die Einheit
10' l V 1 7 6 5 Docket YO 968 027
OD gegeben wird.
Vorläufige Verarbeitung des Einganges
Das Eingabeprogramm wird im Eingabekanal vorläufig verarbeitet, bevor es in den Linearspeicher gesetzt wird. Das Endergebnis dieser Operation besteht im wesentlichen darin, daß die Eingangszeichen im Linearspeicher in aufeinanderfolgende© Speicher-Wörtern erscheinen. Dabei treten jedoch die folgenden Änderungen auf. ■ ' ' - .
1. Die Definltions-Bezeichnungszeichen des F. sind verschwunden. An deren Stelle steht je eine Eintragung in der Tafel in nachfolgender Form:
■ 1 6 t f i \
u I I u I ■ 1 6 t f i \ I »
In diesem Fall ist zu beachten» daß der Beschreiber 2u einem definierten Ausdrucksnamenbeschreiber umgewandelt wurde. Die Zahl m ist jetzt die Anfangsstelle der Definition e. von f. im Linearspeicher. Die Schreibweise η stallt ein sogenanntes nicht verwendetes Wort dar. Diese Wortart hat einen bestimmten Beschreiber. Mit der Bezeichnung u wird außerdem der Rumpf eines nicht verwendeten Wortes dargestellt.
2. Mit Ausnahme der rechten KianBaer wird ein einer rechten Klammer folgendes Zeichen mit einem Strich versehen und da- ' mit angezeigt, daß durch dieses Zeichen ein wfe (eine Gruppe von Ausdrücken aus derselben EbeaeJ beendet wird. Ein Bitschalter im Beschreiber des Zeichenwortes im Linearspeicher wird hierfür benutzt.
3. Rechte Klammer werden eliminiert.
4. Mit einer linken Klammer oder einem bedingten Anzeiger wird
109815/1765
Docket YO 968 027
die Stelle des Zeichens im Linearspeicher gespeichert, die seiner übereinstimmenden rechten Klammer folgt, wenn ein solches Zeichen vorhanden ist und wenn es keine rechte Klammer ist. Somit wird in dem Ausdruck
für die erste linke Klammer keine Stelle gespeichert, die 'Stelle von c wird jedoch mit der zweiten linken Klammer gespeichert. Dadurch wird folgendes erreicht. Die Ausdrücke ύ (a b) und c sind beides Ausdrücke auf derselben Ebene und bilden zusammen ein wfe, wenn sie in Klammern eingeschlossen werden. Die mit der linken Klammer gespeicherte Stelle beginnt das erste wfe des Paares und zeigt an, wo das zweite Element des Paares beginnt. Ein Bitschalter wird in dem Beschreiber der linken Klammer ausgeschaltet, wenn zu ihm eine solche Adresse gehört. Wenn keine derartige Adresse vorhanden ist, wird die Klammer oder der bedingte Anzeiger mit einem Strich versehen und es wird geschrieben (* oder (F'. Das OD-Zeichen tritt im Linearspeicher nicht auf. Es ist jedoch eine Eintragung in der Tafel der folgenden Form enthalten
I m , t OD
u I
wobei das erste Wort der Beschreiber für eine leere Knotenpunk tbezeichnung ist. Hier ist das erste Wort diese leere Knotenpunktbezeichnung, die durch das Symbol _Λ notiert wird. Die Zahl m ist die Adresse des Anfanges des Programmausdruckes im Linearspeicher.
Es folgt eine kurze Beschreibung der vorläufigen Verarbeitung des Einganges. Diese Verarbeitung besteht aus drei Operationen, und zwar:
1. Der Eingangskanal sammelt Eingangszeichen und formt sie zu
1ü · / 1765
anderen Zeichen um.
2. Der Eingangskanal verarbeitet dann dieses so umgeformte Zeichen und das Ergebnis ist eine Eintragung in die Tafel.
3. Die Speichereinheit ruft die Tafeleintragungen der Form
_L
ST . m
[Zeichen
wieder ab und speichert das im vierten Wort der Eintragung gefundene Zeichen in die Stelle m des Linearspeichers.
Die Eingabeeinheit kann mit einer Tastatur mit Sondertasten für den Beschreiber und die Begrenzer ausgerüstet sein. Die übrigen Tasten (im wesentlichen alphabetisch und numerisch) werden zur Bildung des Rumpfes der Zeichen benutzt. Außerdem sind geeignete spezielle Start-, Rückstell·- und Ausgabetasten vorgesehen. Die Starttasten werden zum Löschen der Maschinen vor Beginn der Eingabe einer Programmes benutzt, die Rückstelltasten zum Auswischen eines teilweise geformten Zeichens, in welchem ein Fehler gemacht wurde und die Ausgabetasten für eine Ausgabe während der Ausführungsphase.
In Fig. 3 sind die wesentlichen Bestandteile des Eingabekanals gezeigt. Die Grundfunktionen dieser Bauteile sind folgende:
Ein Eingabezeichen gelangt in das Eingaberegister Σ wenn der Begrenzer angetroffen wird und die Tastatur ist verriegelt, bis das Zeichen verarbeitet ist. Der Abschnitt Σ des Registers Σ_
■" R
enthält die Adresse im Linearspeicher, zu welcher das Zeichen laufen soll. Diese Adresse wird nach der Verarbeitung eines Zeichens erhöht, das eine Stelle im Linearspeicher aufnimmt. Nach der Verarbeitung laufen alle Zeichen mit Ausnahme der Zeichen ( und (F zum Register S zusammen mit der Adresse im Linearspeicher, zu der sie zu laufen haben, wobei die Adresse im Teil Fv steht. Im Register S empfangen die Zeichen einen Apostrophstrich,
1 I . '-α :
wenn das nächste Zeichen eine rechte Klammer ist. Der ST Beschreiber/ der der Speichereinheit den Auftrag gibt, das Zeichen im Linearspeicher zu speichern, wird im Register S für Def f und OD Zeichen benutzt, für welche der NOP Beschreiber (keine Operation für Speichereinheit) verwendet wird, wodurch die Tafeleinträge für dieses Zeichen von der Speichereinheit ignoriert werden. Die Def f Einträge bleiben in der Tafel als eine Tafel von Definitionsstellen und die OD Eintragung bleibt in der Tafel als oberster Knotenpunkt des Programinbaumes. Das Tafel-Kommunikationsregister TR ist das Einteilungsregister der Tafel, . λ wo eine Tafeleintragung von S oder L gebildet wird. Der Rückstellstapel wird dazu verwendet, die Zeichen ( und (F zu halten, bis die Stelle der nicht rechtsstehenden Klammer nach ihrer Übereinstimmung mit der rechtsstehenden Klammer, wenn eine solche überhaupt vorhanden ist, bekannt ist. Wörter gelangen in den Rückstellstapel und verlassen diesen nur über das Register Z.
Der Abschnitt L- des Registers S hält die Information für das letzte Zeichen (oder (F1, für welche die übereinstimmende rechte Klammer gefunden wurde. Wenn das Zeichen nach dieser rechten Klammer keine rechte Klammer ist, wird seine Adresse (2L in den Abschnitt Ln des Registers S gesetzt und das Strichbit im Be- f
tv
schreiber, dem zweiten Wort von L abgeschaltet. Wenn die nächste rechte Klammer angetroffen wird, wird L dazu benutzt, eine .Tafeleintragung der nachfolgenden Form zu bilden:
or
ST , m
(F1, m1
worin m die Stelle für die Linksklamme im Linearspeicher und im Strich die Adresse des Zeichens ist, welches hinter der übereinstimmenden rechten Klammer folgt. Der Wert m1 fehlt, wenn kein Nicht-Klammerzeichen der rechten zur linken Klammer gehö-
1 0 S B I 8 / 1 7 6 5
rigen Klammer folgt. Das gilt z. B. für alle linken Klammern
in dem nachfolgenden Ausdruck
Der Schalter g zeigt an, wenn die vorhergehende übereinstimmende Eintragung eine rechte Klammer war.
Es folgt eine genauere Beschreibung der Arbeitsweise des Eingabekanals. Der Ausdruck Z bezieht sich in dieser Beschreibung auf das n-te Byte von Z usw. Wenn der Startknopf gedrückt wird, werden im Betrieb S, ER, L , LR und Z leer gemacht und die Adresse O nach Στ gesetzt. Die Tastatur wird dann freigegeben und es beginnt das Einlesen der Eingabe nach En. Wenn ein Begrenzer
auftritt, wird die Tastatur verriegelt und der Eingabekanal beginnt das Zeichen in Σ zu verarbeiten. Diese Verarbeitung findet folgendermaßen statt:
A Prüfe ob l„ eine linke Klammer enthält. Wenn nicht, prüfe B. sonst:
1. Setze Z im Rückstellstapel um eines herunter.
2. Setze Σ_ und den Beschreiber von Σ1, d. h., Σ, - Σ_, nach Z.
3. Wenn q «* q. ist, setze Σ_ nach LR, schalte Strichbit in L6 aus und mache q » qQ.
4. Erhöhe Στ um eins.
Xj
5. Tastatur freigeben.
Durch diese vier Schritte wird folgendes erreicht: Die Schritte 1 und 2 setzen das Zeichen für die linke Klammer mit der Stellenbezeichnung im Linearspeieher in den Rückstellstapel. Wenn
1 0 & . j 'j / ϊ 7 6 5
das unmittelbar vorhergehende Zeichen des Einganges eine rechte Klammer war (q = q ) , wird die Adresse des laufenden Zeichens
nach LR gesetzt, welches die Information über die linke Klammer enthält, die zu dieser rechten Klammer gehört. Der Schalter für die rechte Klammer wird ausgeschaltet (q ·*■ qQ) . Mit Schritt 4
wird der Inhalt des Stellenzählers für den Linearspeicher erfüllt.
B Prüfe ob Σ_ die Rechte Klammer enthält. Wenn nicht, prüfe
κ
weiter bei C, sonst: Λ
1. Setze L , L in Tafel Kommunikationsregister TR bei TR TR2, TR11 bis TR2O* tfbertra9e Inhalt des Registers TR auf Tafel, wenn Register TR nicht lauter Leerstellen enthält.
2. Prüfe ob der Rest des Rückstellstapels leer ist, Z jedoch nicht. Ist das der Fall (Endbedingung), gehe weiter nach
3. Wenn keine Endbedingung vorliegt, Fortsetzung wie folgt.
(a) Setze Z nach LL·
(b) Setze Inhalt oben im Rückstellstapel nach Z.
(c) Setze q » q .
(d) Setze Strich in S (Beschreiberbyte von SR).
(e) Tastatur freigeben.
Durch die oben unter Nummer 2 genannten 5 Schritte wird folgendes erreicht. Durch Schritt wurde die Information für die linke Klammer, die zur vorhergehenden rechten Klammer gehörte, in die Tafel gesetzt. Jetzt wird bei Schritt 2a die Information über
die linke Klammer, die zu der rechten Klammer gehört, nach L
gesetzt. Im Schritt b wird der laufende Inhalt ganz oben im
Rückstellstapel nach Z gesetzt. Bei Schritt c wird der Schalter
10· 15/1765
q eingeschaltet und zeigt an, daß das gerade angetroffene Zeichen eine rechte Klammer war. Im Schritt d wird das letzte nicht aus einer Klammer bestehende Zeichen im Register S mit einem Strich markiert und dadurch angezeigt, daß es hinter einer rechten Klammer stehtI
3. Für die Endbedingung:
a) Setze S und S in den Abschnitt TR bis TR- und TR bis
20 des Registers TR. übertrage den Inhalt des Registers TR auf die Tafel, vorausgesetzt, daß dieser Inhalt nicht aus lauter Leerstellen besteht.
b) Setze N 1 nach S . Setze L_ nach S_ bis S_, des Registers
2 5
S. Mache SA1 zum ersten Byte von S_.
a.
c) Wiederhole Schritt a.
In der obigen Folge wird im Schritt a das letzte Programmzeichen ausgesetzt. Schritt B führt die Tafeleintragung durch, die die Programmausführung einleitet. In dieser Situation ist N der Knotenpunktbeschreiber, SA1 eine Nachricht für die Speichereinheit, die nachfolgend noch genauer erklärt wird und der Abschnitt L_ enthält die Stelle des ersten Programmzeichens, welches eine linke Klammer sein muß.
C Prüfe ob Ix. Def f. ist. Ist das nicht der Fall, fahre fort mit der Prüfung D. Wenn die Prüfung zeigt, daß Zn Def f. ist, sind folgende Schritte zu durchlaufen:
1. Setze S0 und S in die Stellen TR1 bis TR2 und TR11 bis TR20 und übertrage den Inhalt des TR Registers auf die Tafel unter der Voraussetzung, daß dieser Inhalt nicht aus lauter Leerstellen besteht.
2. Setze Σ in die Stellen S2 bis S,Q des Registers S. Mache
10 : :.v/ 1 7 6 5
ORIGINAL
dann das erste Byte des Registers S zu einem NOP und das ' sechste Byte zu einem definierten Ausdrucksnamenbeschreiber sowie SQ = OO (was für zwei Halbbytes von Nullen steht).
3. Mache 9 = 90.
4. Tastatur freigeben.
Bei den oben aufgeführten Schritten wird im ersten Schritt das letzte Programmzeichen ausgesetzt. NOP und 00 im zweiten Schritt bilden die Tafeleintragung für die Definition von f.. Es ist zu beachten, daß Στ nicht erhöht wird, wodurch die Definition e. mit f. läuft und in der linearen Speicherstelle beginnt, die in der Tafeleintragung gegeben ist.
D Prüfe ob Σ_. = OD ist. Ist das nicht der Fall, fahre fort mit E. Ist es der Fall, sind folgende Schritte auszuführen:
1. Setze S0 und S in die Stellen TR1 bis TR2 bzw. TR11 bis
n des Registers TR. Übertrage den Inhalt des Registers TR unter der Voraussetzung auf die Tafel, daß er nicht aus lauter Leerstellen besteht.
2. Setze N in S0 und den NOP-Code in das erste Byte des Registers S.
3. Wiederhole Schritt 1.
4. Tastatur freigeben.
Bei den obigen Schritten wird die Information für das Zeichen im Register 8 ausgesetzt und dann in den obersten Knotenpunkt im Baum wie oben beschrieben gesetxt.
K Heim bei der obigen Prüfung D festgestellt wurde, daA Z. ver-
109015/1785
schieden von OO ist, sind folgende Schritte auszuführen. 1. Setze S0 und S in die Stellen TR1 bis TR2 bzw. TR bis
^ des Registers TR. Der Inhalt des TR Registers 1st unter der Voraussetzung in die Tafel zu übertragen, daß er nicht aus lauter Nullen besteht.
2. Setze Σ nach S, Mrf nach S .
3. Wenn g * q1 ist, setze L in die letzten vier Bytes von Ln und mache q » q-..
4. Erhöhe Σ. um Eins.
Jj
5. Tastatur freigeben.
In den obigen Schritten werden die übrigen Zeichen, wie z. B. Konstanten, Veränderliche und bindende Veränderliche behandelt. Ihre Funktion und Operation sind dieselben wie bereits oben erklärt wurde.
Ausführungr
Nachdem das Programm seine erste Verarbeitung erfahren hat und in den Linearspeicher gesetzt wurde, beginnt die Ausführungsphase. Während dieser Seit prüfen alle Punktionseinheiten die Tafel laufend auf eine Nachricht, die ihnen irgendeinen Auftrag gibt. Die Speiehereinheit sucht nach Nachrichten in der formt "
1 ι BgI SUC, . m 1 U t j . ')
worin SOC ein Operationscode für die Speiehereinheit ist, m eine Adresse, im Linearspeicher und N eine Inotenpunktbeteichnung. Der Ausdruck BP stellt einen ittokwärtsself·* dar, dtssen ledeu* tttng noch erklärt wird. r *
54 im-
ORJQINAL ^4SPECTEO
Beim Antreffen einer Nachricht liest der Speicher destruktiv diese Nachricht aus der Tafel, holt den Inhalt der Stelle η wieder aus dem Linearspeicher und setzt eine Nachricht in die Tafel, die dann die folgende Form hat:
I I I
Ν. ,BP NOC , m
. C(m)
In diese Nachricht N werden BP und m aus der ürsprungsnachricht übernommen, der Ausdruck NOC stellt einen Operationscode für den Knotenpunkt-Assemblierer und man erhält ihn durch Ändern der ersten vier Bits des Operationscodes SOC. "
Im folgenden finden sich weiterhin Stellen, wo der Operationscode für den Knotenpunkt-Assemblierer durch χ gekennzeichnet ist. In diesem Fall wird der Speicher-Operationscode, der sich nur in den ersten vier Bits unterscheidet, mit x1 gekennzeichnet. Der Ausdruck SA1 stellt einen Operationscode für die Speichereinheit dar, der einem Operationscode für den Knotenpunkt-Assemblierer mit der Bezeichnung "Stop Zuordnung" entspricht.
In den folgenden Beschreibungen wird der Einfachheit halber angenommen, daß das erste Beschreiberbyte in einer Nachricht für den Knotenpunkt-Assemblierer oder die Speichereinheit ein Kno- · | tenpunktbezeichner ist.
Die Hauptfunktion eines Knotenpunktübersetzers ist der Aufbau eines Programmbaumes, d. h. die Zusammensetzung der Knotenpunkte des Baumes in der Tafel.
Im einfachsten Falle ergibt sich aus einer Operation des Knotenpunkts-Assemblierers eine Nachricht in der folgenden Form:
I . P 1 , Cl
worin P eine Funktionskonstante, C1 und C2 zwei der Funktion angemessene Konstanten sind. Es kann z. B. der Fall eintreten,
10 /17 6 5
ORIGINAL INSPECTEO
daß P = +, C1 = 3 und C2 = 127,5 ist. Eine derartige Nachricht gilt für die Sonderfunktionseinheit, die zu P gehört. Diese Einheit würde die Nachricht aus der Tafel holen, P für C. und C„ auswerten und in die Tafel zurücksetzen, wobei die Nachricht folgende Form hat:
N j n UP , .._u_ I ι η
und R = "P(C Cj" das Ergebnis der Auswertung von P für das Argument C , C_ ist.
Letzteres ist eine Nachricht für die UP-Einheit. Wenn η verschieden von 1 ist, hat η die Form nk, worin η eine ganze Zahl und k eine Ziffer ist. In diesem Fall holt die UP-Einheit die Nachricht aus der Tafeleintragung, die die Form
(D
(2)
hat, wobei das erste Wort die Knotenpunktnummer η ist. Hier bezeichnen die Zahlen 1, 2 und 3 die Spalten in der Tafel. Die UP-Einheit gibt eine Nachricht an die Tafel zurück, die sich von der Nachricht für den Knotenpunkt η nur dadurch unterscheidet, daß das Wort in der k-ten Spalte ersetzt wird durch
R = "P(C1C9)"
Wenn η gleich 1 ist, ist "P(C C)" das Endergebnis des Programmes und die UP-Einheit setzt eine Nachricht für eine Ausgabeeinheit in die Tafel. Diese Nachricht hat die folgende Form:
OD
worin χ das ehemalige vierte Wort in der Nachricht in der UP-Einheit des Beispieles "P(C1C2)" bezeichnet.
In der Ausführungsphase der Operation eines erfundenen Computers
1 0
7 65
2CU7095
wird außerdem Knotenpunkt-Assemblierer und einer UP-Einheit auch eine Beta-Einheit verwendet, deren Funktion darin besteht, Veränderliche durch ihre Werte zu ersetzen. Bei der Ausführung ei-
2 nes Programmes, welches z. B. das Polynom 5y + 3OY at 25, viz.
( ( Xy(+(*5C*y y )) (*'3O y) ) )25 )
auswertet, bewirkt die Beta-Einheit die Substitution von y durch den Wert 25 im obigen Ausdruck. Dann vervollständigen die Funktionseinheiten für + und ·* zusammen mit der UP-Einheit die Aus- Λ Wertung des Ausdruckes. Die gegenseitige Beeinflussung von Knotenpunkt-Assemblierer, UP-Einheit und Beta-Einheit werden nachfolgend genauer beschrieben.
Der Knotenpunkt-Assemblierer
Die vom Eingabekanal in die Tafel gesetzte Nachricht zur Bezeich nung dafür, daß der Kanal alle Eingangsdaten verarbeitet hat, hat bekanntlich die Form:
N , 1 U I SA m u .
worin N der Knotenpunktbeschreiber, SA der Beschreiber der Spei chereinheit, m eine Adresse im Linearspeicher und die u's unbenutzte Wörter bezeichnen.
Durch diese Nachricht wird die Speichereinheit veranlaßt, den Inhalt C(m) der Stelle m im Linearspeicher aufzunehmen, wobei es sich hier um die Stelle des ersten Zeichens des Programmes handelt, welches eine linke Klammer sein muß. Außerdem wird die Speichereinheit dadurch veranlaßt, eine Nachricht für den Knotenpunkt-Assemblierer in folgender Form in die Tafel zu setzen:
1Ü' /17 6 5
N , 1 u I SA ι m , C(m)
Die Speichereinheit fährt mit diesem Verfahren fort, solange Nachrichten für sie vorhanden sind.
In der allgemeinen Form einer Nachricht für den Knotenpunkt-Assemblierer ist das erste Wort der Nachricht die Knotenpunktbezeichnung, welcher das Zeichen C(m) entspricht. Knotenpunktbezeichnungen sind im allgemeinen Reihen von Zahlen 1, 2 und und entsprechen der Stelle eines Zeichens oder Ausdruckes im Programmbaum. Das Programm, welches jetzt ein Ausdruck ist, hat die Knotenpunktnummer 1.
Ein Knotenpunkt des Programmbaumes ist eine Eintragung in der Tafel mit folgender Form:
N , η
Jil
.*3
In dieser Nachricht ist η die Bezeichnung für den Knotenpunkt 1 und X1, X0 und X, entsprechend den Knotenpunkten nl, n2 und n3. Wenn alle X. Konstanten sind, treten sie im Knotenpunkt η auf. Wenn X. ein komplexer Ausdruck ist und daher in Klammern stehen muß oder eine Veränderliche, enthält die i-te Spalte von η im allgemeinen einen "leeren" Beschreiber und die Adresse des ersten Zeichens von X. im Linearspeicher, um X. in einem anderen Teil des Baumes noch einmal ausführen zu können und eine Wiedergewinnung zu ermöglichen. Eine Eintragung mit dem Knotenpunktbeschreiber ni wird für die Teile von X1 erzeugt. Der Knotenpunktübersetzer erzeugt einen solchen neuen Knotenpunkt an der Stelle, wo der Anfang seines ersten Unterteiles behandelt wird. Wenn also ein Programm die Form hat:
( + ( - 3.5) 7 ) hätte der erste Programmknotenpunkt die Eintragung:
1765
N , 1 1 + I t 7
Der Knotenpunkt 12 würde erzeugt, wenn der Knotenpunkt-Assemblierer die folgende Nachricht von der Speichereinheit empfängt:
Die Nachricht stellt einen Operationscode für einen Knotenpunkt-Assemblierer dar, welcher anzeigt, daß eine Zeile zugeordnet werden muß. Dieser Code wird nach der Behandlung der linken Klammer durch den Knotenpunkt-Assemblierer erzeugt und zeigt den Anfang eines Unterausdruckes an.
Für den Knotenpunkt-Assemblierer gibt es zwei Hauptoperationscodes mit den Bezeichnungen R und C. Der Code R besagt, daß kein Knotenpunkt (Tafeleintragung) für das gerade aus dem Linearspeicher geholge Zeichen existiert, wodurch der Knotenpunkt-Assemblierer jetzt eine Zeile erzeugen muß. Der Code D besagt, daß ein Knotenpunkt bereits in der Tafel mit einer Spalte für das aufgenommene Zeichen vorliegt und die Daten des Zeichens können in diese Spalte gesetzt werden.
Wenn einer der beiden Codes R und D mit einem wiedergewonnenen Eingabesymbol angetroffen wird, beginnt der Knotenpunkt-Assemblierer (a) die übersetzung des nächsten Ausdruckes in derselben Gruppe auf derselben Ebene und (b) sendet einen leeren Beschreiber, wenn der gelesene Ausdruck komplex ist oder aus einer Veränderlichen besteht.
Wenn der Knotenpunkt-Assemblierer ein Zeichen mit einem Knotenpunkt-Assemblierercode wiedergewinnt, d. h., der Knotenpunkt-Assemblierer hat eine Nachricht wie die folgende aufgenommen:
1 Nn
BP
NOC . m
C(m)
in welcher η ein Knotenpunktbeschreiber ist, dann ist BP leer
20A7095
oder ein Rückwärtszeiger, m die Adresse im Linearspeicher, wo das Zeichen C(m) gefunden wurde und NOC (Knotenpunkt-Assemblierer-Operationscode) ist D oder R.
Wenn N eine Reihe von Zahlen ist, die bei i endet, kann η durch si bezeichnet und χ zur Bezeichnung von η verwendet werden, wobei seine letzte Zahl weggelassen wird.
1. Der Beschreiber von C(m) ist (.
a) Wenn C(m) keinen Strich aufweist und dadurch anzeigt, daß hinter der zu dieser linken Klammer gehörenden rechten Klammer ein Zeichen folgt, so daß C(m) die Adresse dieses Zeichens hat, nämlich m1 in den letzten vier Bytes, erzeugt der Knotenpunkt-Assemblierer die Nachricht
BP
m1
und setzt sie in die Tafel. Diese Nachricht veranlaßt den Knotenpunkt-Assemblierer dazu, den nächsten Ausdruck auf derselben Eben wie η zu behandeln. So führt z. B. der Ausdruck (+(-37)5) beim Lesen der zweiten linken Klammer als infrage kommende Nachricht dazu, daß die 5 gelesen wird, wobei D1 anzeigt, daß bereits für diese Daten eine Tafeleintragung vorliegt.
b) Außer der im Schritt a erzeugten Nachricht setzt der Knotenpunkt-Assemblierer die folgende Nachricht in die Tafel
nl
BP
R1 . m+1
Durch diese Nachricht wird das Zeichen hinter der linken Klammer gelesen und angezeigt, daß für seine Daten eine Zeile zugeordnet werden muß.
'' '765
c) Wenn der Knotenpunkt-Assenbüerercode außerdem gleich R ist, wird folgende eine Zeile erzeugende Nachricht in die Tafel gesetzt:
N ι η I # ι m+1 u ( Uj
Das Wort # m. + 1 besagt, daß der erste Teil des Ausdruckes mit der Bezeichnung η ein komplexer und noch nicht ausgewerteter Ausdruck ist, welcher bei der Adresse m + 1 im Linearspeicher beginnt. Die u's bezeichnen Leerstellen, d. h. Nullen. Dieser Schritt zeigt die besondere Fähigkeit der Assoziativspeicher, einen ersten Inhalt in einem Wort adressieren zu können.
d) Wenn der Knotenpunkt--Assemblierercode gleich D ist, wird außerdem die folgende Nachricht in die Tafel gesetzt:
N , η
UP
m+i
Diese Nachricht gilt für die üP-Einheit und wird nach- * folgend genauer erklärt. Durch diese Nachricht setzt die UP-Einheit das Wort }6 m+1 in die Spalte des χ Knotenpunktes, wodurch angezeigt wird, daß der Ausdruck für diese Stelle komplex und noch nicht ausgewertet ist.
2. Der Beschreiber von C(m) ist (F.
a) Wie oben unter la beschrieben.
b) Wie oben unter Ib beschrieben, jedoch ist hier der Speicher-Operationscode im dritten Wort der Nachricht IFC, der "Wenn-Code".
10 9^15/1765
2ÜA7095
c) Wie oben unter lc beschrieben.
d) Wie oben unter Id beschrieben.
3. Der Beschreiber von C(m) ist ein veränderlicher Beschreiber.
a) Wenn C(m) nicht mit einem Strich versehen ist, bedeutet das, daß hinter der Veränderlichen keine rechte Klammer stand und somit eine Gruppe von Ausdrücken auf derselben Ebene nicht beendet ist, und dann wird die folgende Nachricht in die Tafel gesetzt:
N t(x(i+l)j , BP [ D1 , m+1 j u
Diese Nachricht unterscheidet sich von den Nachrichten la und 2a dadurch, daß das zugehörige nächste Zeichen in der Gruppe auf der Ebene χ eich bei der Adresse m + 1 findet, wenn η gleich xi ist.
b) Außer der Nachricht von a setzt der Knotenpunkt-Assemblierer in die Tafel folgende Nachrichten:
N j n 1 , ν I m BP
In dieser Nachricht ist ν der Rumpf von C(m), d. h. die Veränderliche selbst, das Zeichen ? ist -ein Beschreiber, welcher besagt, daß der Wert der Veränderlichen aufgesucht werden muß, ra ist die Stelle im Linearspeicher, an welcher die Veränderliche gefunden wurde und BP ist der durch die Knotenpunkt-Assemblierernachricht geleitete Rückwärtezeiger.
c) Wie oben unter Ic beschriebben.
d) Hie oben unter Id beschrieben.
1OS ·Π 5/ 1 7 65
Es ist zu beachten, daß eine Veränderliche ν trotz eines aus einem Zeichen bestehenden Ausdruckes wie ein komplexer Ausdruck und nicht wie eine Konstante behandelt wird.
4. C(m) ist eine Konstante C.
a) Wie oben unter 3a beschrieben.
b) Wenn der Code R ist, wird folgende Nachricht in die Tafel gesetzt:
N ι χ I C I u , u I
Das i in xi muß 1 sein, da der Code R verwendet wurde. Diese Eintragung erzeugt den mit χ bezeichneten Knotenpunkt, wobei C(m) in der ersten Spalte steht.
c) Wenn der Code D ist, wird folgende Nachricht in die Tafel gesetzt:
N . η UP , u I ι c
Dadurch ersetzt die UP-Einheit die i-te Spalte der Tafeleintragung mit der Knotenpunktbezeichnung χ durch die Konstante C.
5. C(m) ist ein definierter Ausdrucksname 6f.
a) Wie unter 3a beschrieben.
b) Wenn der Code R ist, wird in der Tafel eine Zeile mit der folgenden Nachricht erzeugt:
U I u I
Ji ι m+1
10
''1765
C) Eine Übereinstimmung wird in der Tafel herbeigeführt, um die Tafeleintragung der nachfolgenden Form wiederzugewinnen.
u, I u , 6 , f I m' .
Hier bezeichnet m' die Stelle, an welcher die Definition von f beginnt und eine Kopie der Nachricht wird in die Tafel zurückgesetzt.
d) Wenn der Code R ist, wird folgende Nachricht in die Tafel gesetzt:
N j n ,BP SA1 - m1 U I
Dadurch wird die Definition von f gelesen, ohne daß ein Leerzeichen gesendet wird (da die Nachricht 5b bereits eines hat), wenn es komplex ist, und ohne daß versucht wird, den nächstfolgenden Ausdruck derselben Ebene zu assemblieren.
e) Wenn der Code D ist, wird folgende Nachricht in die Tafel gesetzt:
BP
TC1
m'
Auch bei dieser Operation wird die Definition von f wieder assembliert, ohne daß,versucht wird, den nächstfolgenden Ausdruck derselben Ebene zu assemblieren. Leerstellen werden jedoch gesetzt.
6. C(m) ist eine bindende Veränderliche λν.
Wenn die bindende Veränderliche in einer Operatorposition steht, was in einem Ausdruck der Form ( (λν e )e') der Fall ist, was aus der Tatsache hervorgeht, daß η in zwei Einsen endet, er-
H! /17 6 5
zeugt der Knotenpunkt-Assemblierer einen Knotenpunkt der folgenden Form:
N ι η
BP
worin die zweite Spalte reserviert ist für e1, den Wert von ν und die dritte Spalte einen Rückzeiger BP enthält. Dann beginnt das Lesen von e, wobei die Knotenpunktbezeichnung n3 einen neuen Rückzeiger η benutzt.
Wenn die bindende Veränderliche nicht in der Operatorposition steht, erzeugt sie einen Knotenpunkt der folgenden Form:
Γ N , η j λ , ν I t * I ,BP"
und beginnt das e in ( λν e ) für n2 jedoch mit einem neuen Rückzeiger η zu lesen.
Durch dieses Verfahren soll der Computer die Möglichkeit erhalten, mit Hilfe der Rückzeiger die entsprechenden Knotenpunkte mit bindenden Veränderlichen rückwärts zu verfolgen, um herauszufinden, ob einen Veränderliche einen Wert hat. Die 6-Knotenpunkte reduzieren im wesentlichen einen reduzierbaren Ausdruck ( (λν e ) e1), sobald feststeht, daß der Ausdruck reduzierbar ist. In diesem Zusammenhang kann der Code η betrachtet werden
η
I I
n3
worin η lediglich ein Informationsknotenpunkt ist, die Knotenpunkte η und n2 die Information tragen und der Rumpf des Programmbaumes in n3 fortgesetzt wird.
Bei der Suche nach einer bindenden Veränderlichen in Operator-
10 ./1765
2 04 7 0 9
position ist zu beachten, daß das λν in dem Ausdruck
(((Xw (λν e))
)e2 )
auch nach der Reduzierung für Xw in Operatorposition steht. Somit müssen auch die Dreien nach rückwärts verfolgt werden, die als Ergebnis der Operation der ε-Knotenpunkte vorliegen, welche die zwei Einsen trennen können, die anzeigen, daß die bindende Veränderliche in Operationsstellung steht.
Für den Informationsknotenpunkt der Veränderlichen entspricht die zweite Spalte immer dem Wert der Veränderlichen. Somit läuft der Baum für den obigen Ausdruck durch die in der nachfolgenden Skizze gezeigten Umformungen. In dieser Skizze stehen die Teile unter der gestrichelten Linie, die nicht in der Tafel stehen.
λw
λν'
λν e
Hier lief der Rückwärtszeiger bis zu e durch und zeigt auf den Knotenpunkt εν, und der Rückwärtszeiger in diesem Knotenpunkt zeigt auf den Knotenpunkt ew.
Das nachfolgende Flußdiagramm hilft beim Verständnis der im Zusammenhang mit einer bindenden Veränderlichen notwendigen Schritte.
10: s / 1 7 6 5
JA b (R) JA b (R)
JA b (R)
P(n) 2 2
? 1 <■
P(R) ? 2
Wiedergewinnung Knotenpunkt R
Kopie Kn.punkt R in Tafel zurücksetzen
Knpkt. R ? ε-Knpkt. JA
"* Nachrichten in Tafel setzen:
Ni P (n) λ I v D1 ι m U BP
N ι P (n)2 |P(n) ! m+1 I
R * p(R)
Wiedergewinnung Knotenpunkt R V ·*■ Rumpf 2. Wort d. Knotenpunktes R S «■ 3. Wort des Knotenpunktes R Nachrichten in die Tafel setzen:
I R e I V D1 I S U JjMT
I R3 I R I m+1 I
10
/17 6 5
In dem in der Tabelle gezeigten Beispiel werden zwei Funktionen · ρ und b so verwendet, daß p(n) = χ und b(n) = i ist, wenn η xi ist. In der Tabelle werden diese Prüfungen durch Fragezeichen markiert und ein Pfeil besagt, daß die Information vorübergehend in ein Speicherregister gesetzt wird. Die Bewegung verläuft immer nach unten, wobei eine von einem Prüfergebnis ausgeschobene Folge ausgenommen ist. Dieselbe Notierung wird für ein Register und seinen Inhalt verwendet. So bedeutet z. B. R ■*- p(n) , daß die Zahl p(n) in das Register R gesetzt wird. Der Ausdruck b(R)? 2 bezeichnet eine Prüfung daraufhin, ob das Ergebnis der Anwendung der Funktion b auf dem Inhalt des Registers R = 2 ist. 'Knotenpunkt Rl: ist die Tafeleintragung mit der Knotenpunktbezeichnung, d. h., der Inhalt von R im ersten Wort. Ein doppelter Schrägstrich am Ende einer Zeile bezeichnet die Beendigung einer Knotenpunkt- Assembliereraktion.
Bisher wurden mögliche Aktionen des Knotenpunkt-Assemblierers besprochen, wenn dieser eine für ihn bestimmte Nachricht mit einem Operationscode R oder D wiedergewinnt. In diesem Zusammenhang wird daran erinnert, daß beim Auftreten eines Zeichens (F, aus dem Linearspeicher Stelle m die nachfolgende Nachricht ausgesetzt wurde:
N . nl
BP
IFC . m+1
Der Code IFC ist der "Wenn-Code". Dieser und andere Codes werden bei der Benutzung von bedingten Befehlen gebraucht.
Bei der allgemeinen Betrachtung der Operationsauswirkungen des Knotenpunkt-Assemblierers wird festgestellt, daß ein bedingter Ausdruck die Form
(F B1 B2 e3 )
hat, worin e ein Prädikat ist, e„ der Wert des Ausdruckes zu sein hat, wenn das Prädikat nach T auswertet und e_ der Wert des
10 -'1765
Ausdruckes sein muß, wenn das Prädikat nach F auswertet. Der Computer beginnt die Assemblierung und Auswertung von e.. Ist e^^ keine Konstante, wird der zu diesem Zeitpunkt eine Nachricht in die Tafel mit einem SC (Stopcode) und die Stelle von e2. Mit e2 oder e. wird Keine Operation vorgenommen, bis e. ausgewertet ist. Zu diesem Zeitpunkt wird e2 mit der Knotenpunktnummer η gelesen, wenn der Wert T ist, und der spezielle TC (echter Code) verhindert die Einleitung des Lesevorganges von e_. Wenn der Wert von βχ F ist, wird e2 mit einem FC (falscher Code) gelesen, welcher besagt, daß e, übersprungen werden muß. Der Knotenpunktassemblierer nimmt diese Operation vor und liest dann e_ mit einem PC.
Zur Erklärung dieser Operation des Knotenpunkt-Assemblierers wird angenommen, daß er eine Nachricht mit dem IFC wie folgt empfangen hat:
N j nl
BP j IFC ! m
C(m)
Die verschiedenen Äktionsmöglichkeiten hängen von der Art des C(m) ab. Diese Arten werden unten aufgezeigt.
1. C(m) ist eine linke Klammer. Diese linke Klammer darf keinen Strich haben, d. h., C(m) enthält auch die Stelle m1 nach der zugehörigen rechten Klammer.
a) Die folgende Nachricht wird auf die Tafel gegeben:
N . η
BP SC . m' u
Diese Nachricht enthält die Stelle e~, bis e. ausgewertet ist.
b) Die folgende Nachricht wird auf die Tafel übergeben:
N t nil
tBP IR1 tm+l
/17 6 5
2Ü47095
Diese Nachricht startet das Lesen des komplexen Ausdrukkes e^, der mit der linken Klammer begann, zu der eine Übereinstimmung gefunden wurde und dadurch angezeigt wurde, daß für ihre Daten eine Zeile geschaffen werden muß.
2. C(m) ist (F.
a) Es gilt dasselbe wie für la.
b) Es gilt dasselbe wie für Ib mit dem Unterschied, daß der Operationscode dieser Nachricht IFC1 ist.
3. C(m) ist eine Veränderliche v.
a) Die folgende Nachricht wird auf die Tafel gegeben:
N t η
BP
SC * t ra+1
Diese Nachricht enthält die Stelle e2, bis der Wert von βχ, nämlich die Veränderliche bestimmt ist.
b) Die folgende Nachricht wird in die Tafel gegeben:
N nl
BP
Diese Nachricht führt dazu, daß der Wert der Veränderlichen aufgesucht wird.
4. C(m) ist eine Konstante c.
a) Die folgende Nachricht wird in die Tafel gesetzt:
N . η
BP
SC . m+1 [ u
b) Die folgende Nachricht wird in die Tafel gesetzt:
10; i S / 1 7 6 5
nl
UP1
Die OP-Einheit veranlaßt die Behandlung dieser Nachricht, als ob e ein komplexer Ausi
stanten C ausgewertet wäre.
als ob e ein komplexer Ausdruck wäre, der bis zur Kon-
5. C(m) ist ein definierter Ausdruck mit dem Namen 6f.
a) Es gilt dasselbe wie für 3a.
b) Die folgende Nachricht wird aus der Tafel entnommen.
u I U I δ , f I m
Diese Entnahme ermöglicht es, die Stelle m der Definition von f zu erhalten. Diese Nachricht wird dann in die Tafel zurückgesetzt und hat dann folgende Form:
N , nl I BP I »"
Die Nachricht leitet die Auswertung des Ausdruckes f ein. Es ist zu beachten, daß C(m) in diesem Fall keine bindende Veränderliche sein kann.
Anschließend werden die sich ergebenden Ergebnisse betrachtet, wenn die Codes TC, FC oder SA in den Nachrichten für den Knotenpunkt-Assemblierer auftreten.
1. Der Knotenpunkt-Assembliererpunkt ist TC.
Alle Fälle von C(m) sind ähnlich wie die, wenn der Code D ist, unterscheiden sich jedoch von diesen dadurch, daß die neue Nachricht mit dem Code D (der das nächste Element auf derselben Ebene zu lesen beginnt, was in diesem Falle e- sein würde) nicht geschaffen wird. Wenn ein definierter Ausdruck auftritt,, erhält der Knotenpunkt-Assemblierer seine Stelle und beginnt
/ 1
ν 6 B
2CH7Ü95
-- 68 -
dann das Lesen dieses Ausdruckes mit einem TC.
2. Der Knotenpunkt-Assemblierercode ist FC.
Wenn C(m) eine linke Klammer ist oder (F, und wenn weiterhin m* die Stelle nach der zugehörigen rechten Klammer ist, wird folgende Nachricht in die Tafel gesetzt:
BP
TC m*
Sonst wird die folgende Nachricht in die Tafel gesetzt:
N . η
. BP TC, m+1 u
3. Der Knotenpunkt-Assembliererpunkt ist SA.
In diesem Fall wird die folgende Nachricht in die Tafel gesetzt:
N , nl ι BP SA ( m* C(Hl*)
Diese Nachricht wird zu drei verschiedenen Zeitpunkgen in die Tafel gesetzt und zwar wenn das Programm als Knotenpunkt 1 zu lesen ist, wenn ein definierter Ausdrucksname mit einem R-Code wiedergewonnen wird und der Knotenpunkt-Assemblierer dann eine Zeile für η schafft und mit der Assemblierung der Definition mit dem SA-Code beginnt und schließlich wenn ein definierter Ausdrucksname mit einem IFC-Code gelesen wird. Nachfolgende werden die Fällt für C von m betrachtet.
a) C(m*) ist eine linke Klammer. Dann wird folgende Nachricht in die Tafel gesetzt:
nil
BP
R'
m*+l| u
1 I
■' 17 G 5
2 O Λ 7 O 9 5
b) C(m*) ist (F.
Die folgende Nachricht wird in die Tafel gesetzt:
N . nil
IFC1
c) C(m*) ist eine Variable v.
Die folgende Nachricht wird in die Tafel gesetzt:
N , nl
BP
d) C(m*) ist eine Konsante c.
Die folgende Nachricht wird in die Tafel gesetzt:
N , nl UP1 U i C
e) C(m*) ist ein definiertet Ausdruck Sg. Dabei wird folgende Nachricht aus der Tafel entnommen und dann wieder zurückgesetzt:
u ι u ι , m**
Die folgende Nachricht wird in die Tafel gesetzt:
N . nl
BP
SA1, πΓ
Es ist zu beachten, daß bei den Codes TC, FC und SA ein Fehler vorliegt/ wenn C(m) eine bindende Veränderlich ist.
Faßt man die Arbeitsweise des Knotenpunkt-Assemblierers zusammen (ausgenommen bindende Veränderliche), so sind verschiedene Aktionen bei der Rückführung einer Nachricht folgender Form erforderlich:
1 Ü ' '/1765
2ÜA7Ü95
N , η ,BP
J " I ι
NOC . m . tk
1 m I ι
worin η eine Knotenpunktbezeichnung, BP eine Leerstelle oder ein Rückwärtszeiger, NOC einer der Knotenpunkt-Assemblierer-Operationscodes RD, IFC, SC, TC, FC oder SA, m ist eine Stelle im .Linearspeicher und tk (zeitweise auch durch C(m) bezeichnet) ist das aus dem Speicher von der Stelle M wiedergewonnen Zeichen.
Die Operation des Knotenpunkt-Assemblierers besteht darin, in die Tafel abhängig von der Kombination von NOC und tk verschiedene Nachrichten zu setzen. Die verschiedenen Formen, welche die Nachrichten annehmen können, sind in der nachfolgenden Tabelle aufgeführt.
1 0 V, \] 1 5 / 1 7 6 5
2ÜA7095
- 7i -
Wort 1 Wort 2 BP Wort 3 Wort 4 U BP Anmerkungen rbei ( FC springt über ( )
la Pin) BP se! τ U U Hält bei Adresse von T bei c, ν Benutzt mit 6f
Ib Pin) m+1
T
se; m+i U oder 6f FC springt über c, v, fif
2
3
Pin)
Pin)
I
I
U
U
U
U
U Ordnet [ eine Zeile zu
Ordnet L eine Zeile zu
C, ν oder <Sf
Weiter in niedrigerer Gruppe
4 η JPi U #j m+l U Sendet # Veränderlicher Knotenpunkt
5 η jp; BP U T U Sendet Daten
6 a(n) BP D1! T
U Holt nächstes Ele
ment herein
7 a(n) D1? m+l
«
Gleiche Gruppe ,
BP
8a η BP TC1? T
8b η BP in'
9 η BP TC1! m+l
I
10 nl T ■» m+l
15 η ?;
I
{
m
Wenn hierin η die Zahl xi enthält, wobei χ eine Reihe von Einsen, Zweien und Dreien ist und ist 1, 2 oder 3, dann ist p(n) = x, a(n) = x(i+l) und nl ist xil.
In der obigen Tabelle stellen die durch eine gestrichelte Linie abgetrennten Teile der Nachricht die Beschreiberteile der Wörter dar. Der Ausdruck Ji : m+l bezeichnet ein Wort mit dem leeren Beschreiber (damit wird gesagt, daß dieses Wort für das Ergebnis der Auswertung eines komplexen Ausdruckes reserviert ist) und der Zahl m+l als Rumpf. Das Sternzeichen in der Tabelle besagt, daß
10
diese Nachricht mit verschiedenen Beschreibern in der Sternzeichen-Position gebildet werden kann. Die Zahl m1 wird verwendet, wenn ein 6f das Eingangssymbol tk ist. Es ist die Adresse der Definition von f, wie sie in der Tafeleintragung mit nachfolgender Form gefunden wird:
U I U j δ , f ι m'
Die folgenden Tabellen geben die Nachrichten an, die durch den Knotenpunkt-Assemblierer unter verschiedenen Kombinationen von NOC und T erzeugt werden (die Behandlung von bindenden Veränderlichen ist dabei ausgelassen). In den Tabellen sind die Zeilen für möglicherweise erzeugte Nachrichten vorgesehen und die Spalten für den Knotenpunkt-Assemblierercode, mit welchem die Veränderliche wiedergewonnen wurde. Wenn eine Notierung am Schnittpunkt eines Knotenpunktes und einer Spalte vorliegt, bedeutet das, daß die Nachricht in die Tafel gesetzt wird, wenn das spezielle Eingangssignal mit dem Knotenpunkt-Assemblierercode dieser Spalte wiedergewonnen wird. Wenn die Nachricht einen Beschreiber für eine Sternzeichen-Position erfordert, erscheint der Beschreiber in dem Schnittpunkt zwischen Zeile und Spalte, andernfalls erscheint an dieser Stelle ein Kreuz. Es ist zu beachten, daß die Erzeugung einiger Nachrichten von der Existenz eines Striches abhängt, was ebenfalls am Schnittpunkt angezeigt wird. In diesem Zusammenhang wird noch einmal verwiesen, daß der Strich an einer linken Klammer ( oder das Bedingungssymbol (F, bezeichnet durch die Symbole C1 und (F' besagen, daß dort kein Ausdruck derselben Ebene hinter der einleitenden rechten Klammer folgt und der Strich an dem anderen Zeichen besagt, daß hinter dem Zeichen eine rechte Klammer stand und somit die Gruppe von Elementen auf dieser Ebene abgeschlossen ist.
1 ι
Ί Pv f>
wjichrichteniiununer
NOCJa lb 2 3J 5 6 7 8a 8b 9 10
R X X O X R'
D O R1
IFC X R1
TC R1
FC
SA R1
__2..-JL.JL _5_ j O 8a__8_b 9 10
R K O
D X
IFC X X
TC X
FC X
SA X
la lb_ 2 _ 3__ 4___5 6 7__8a 8b__ 9 10
RX O IFC1
D XO IFC
IFC X IFC1 (F7 (F1
TC X IFC'
FC X
SÄIFC'
C, C
10 / ι 7 B 5
21H7095
Nachrichtennuinmer Eingabesymbol
la Ib 2 3 4 5 6 7 8a 8b 9 IO 13
R X 0 X
D X O X
IFC X X
TC X X
FC X
SA X
ν,, ν
O: kein Strich
NOC la Ib 2 3 4 5 6 7 8a 8b 9 10
R X O SA1
D O TC
IFC X SA1 5f, of1
TC TC
FC X
SA SA1
Wenn Teile des Progranunbaumes als Ergebnis der Operation des Knotenpunkt-Assemblierers einmal in der Tafel stehen, können andere Funktionseinheiten die Auswertung des Programmausdruckes beginnen. Für jede Funktionskonstante P wie z. B.
+, -, =, δ UND, ODER)
sind Funktionseinheiten vorhanden, die die Tafel auf Nachrichten der folgenden Form hin absuchen:
10'. ι S / 1 7 6 5
N '· η . Ρ ι a
In dieser Nachricht haben a und b Beschreiber, welche besagen, daß es sich hierbei um die zu P gehörigen Argumente handelt, da (b vollkommen leer sein kann, wenn P eine eindeutige Funktion ist. Wenn eine Einheit für P eine derartige Nachricht wiedergewinnt, wertet sie die Funktion bei den gegebenen Argumenten aus und setzt in die Tafel folgende Nachricht;
N t η UP , U . I C .
worin c das Ergebnis der Funktionsauswertung ist. In diesem Zusammenhang sei erwähnt, daß die UP-Einheit diese Nachricht aufnimmt und C "nach oben" in die i-te Spalte des Knotenpunktes χ setzt, wenn u = xi ist.
Zur Auswertung gehört die gegenseitige Beeinflussung von Beta-Einheit, die die Veränderliche auswertet, und UP-Einheit. Anschließend wird die Beta-Einheit beschrieben.
Die Beta-Einheit
Die Beta-Einheit such im Speicher veränderliche Knotenpunkte folgender Form:
BP
Die Beta-Einheit hat die Funktion, den Wert der Veränderlichen V aufzusuchen, indem sie die Rückzeiger durchgeht. Die Operation wird in Verbindung mit dem nachfolgenden Flußdiagramm beschrieben. Für dieses Diagramm wird angenommen, daß zwei je vier Wörter große Register R und W vorhanden sind. Diese vier Wörter werden durch die Notierungen RO, Rl, R2 und R3 entsprechend N, B, M und D wiedergegeben. Wenn die Operation der Beta-Einheit eingeleitet wird, setzt das Wortregister R die Nachricht für den
10
176E
veränderlichen Knotenpunkt zusammen, die aus der Tafel wiedergewonnen wurde.
Wenn in der Tabelle X ein Wort bezeichnet, dann bezeichnet X// den Beschreiber (erstes Byte) von X// und //X bezeichnet den Rumpf, d. h. die letzten vier Bytes von X.
1 ü ' i f, / 1 7 6 5
~ 77 —
10 UQ
13 - 14 15 . IU
—+ ηΛ " „Λ._ ; -j_ ,.Fehler .
Knpkt. R3 wiedergewinnen und in R setzen' Kopie von R3 in Tafel zurücksetzen ·
NO //RJ ■■« //]* '
.„„J1O Rl // I λ (Pv- I , ί
Jx_Ll?LJ_ js?*. J
Folgende Nachricht in Tafel setzen:
;Z„L
Rl// ^ t
-,·... Fehler '
R2// ώ γ, (R«
Folgende llachricht in Tafel setzen:
:■!" IJ JP^f ι P 2 jm*+3. ί ^'I
Ί-
//,·■■■»■■
Λ-Jzfe.LüÜ
Folgende ITayhricht in 'l'afol setzen: *
_1
ΠΡ
v.J.
/7
i;«ic;hr.i«Jit :in Tafel .-ί-,-Ί-κοη: . >.,
■^.J "..f.
·-, ι '.7 176
BAD ORIGINAL
20 A 7 0 95
Aus der obigen Tafel geht hervor, daß nach dem ersten Schritt die Register R und W folgende Information enthalten:
N1 η
m+1
BP
Das Register W hält diese Information fest.
In Schritt 2 wird untersucht, ob die Rückzeigerstelle leer ist. Die Notierung __Λ__ ist die Leer-Bezeichnung für den Knotenpunkt. Das kann nur für eine Veränderliche auftreten, die nicht durch eine bindende Veränderliche mit demselben Rumpf gebunden ist. Diese Situation wird als Fehler aufgefaßt. Ist das nicht der Fall, beginnt die Beta-Einheit rückwärts durch sämtliche Knotenpunkte die bindenden Veränderlichen zu suchen, die ν binden können. In dieser zuletzt genannten Umwandlung ist die erste Veränderliche mit dem Rumpf v, die gefunden wird, diejenige, welche ν bindet. .
Im dritten Schritt wird der erste ε,oder λ-Knotenpunkt (der nächste usw. bei Wiederholung dieser Schritte), dessen bindende Veränderliche ν binden kann, wiedergewonnen. Der Rückzeiger wird zur Knotenpunkt-Bezeichnung dieses Knotenpunktes.
Da die Tafel destruktiv gelesen wird, wird im Schritt 4 eine Kopie des Knotenpunktes in die Tafel zurückgesetzt. .
Im fünften Schritt wird untersucht, ob die bindende Veränderliche und die Veränderliche übereinstimmen, d. h. dieselben Rümpfe haben. Ist das nicht der Fall, kehrt die Operation zum Schritt 2 zurück um diie Suche durch die Rückwärts zeiger fortzusetzen. Wenn Veränderliche und bindende Veränderliche jedoöh denselben Rumpf haben, gilt der gefundene KnotenpunktTfür die die Veränderliche ν bindende Veränderliche.
Im sechsten Schritt wird festgestellt, ob-es sich, bei dem Knotenpunkt und einen λ-Knotenpunkt handelt. Ist das der Fall, hat
1 0 \> ■) 1 B / 1 7 6 5
die Veränderliche keinen Viert und die Beta· Einheit setzt folgende Nachricht in die Tafel:
UP
In dieser Nachricht ist η* die Knotenpunktnummer der bindenden Veränderlichen und ν ist ein Beschreiber, welcher sagt, daß das Wort für eine Veränderliche ohne laufenden Wert gilt. Damit ist die Aktion der Beta-Einheit in diesem Falle abgeschlossen.
Handelt es sich nicht um einen λ-Knotenpunkt, muß ein ε-Knotenpunkt der folgenden Form vorliegen:
RO
Rl
R2
R3
N - n* v I ι EP ·
worin R2 das für den Wert von ν reservierte Kort und R3 für einen Teil des Programmbaumes reserviert ist und außerdem den Rückwärtszeiger für n* enthält. Schritt neun prüft, ob es sich um einen ε-Knotenpunkt handelt.
Im zehnten Schritt wird geprüft, ob das Wort R2 einen leeren Beschreiber enthält. Das ist der Fall, wenn R2 assembliert und/ oder ausgewertet wird. Dann hat R2 die Form Jrf m*+l, wobei m der Anfang des Wertes von y im Linearspeicher ist.
In dieser Situation setzt die Beta-Einheit im Schritt Il folgende Nachrichten in die Tabelle:
N j n UP , n i Jrf >m*+l
N η 4 BP*- I UP2 j m*+l N1 nH
Die erste Nachricht setzt das Wort # m +1 in die Spalte für die Veränderliche v, wodurch das Wort die Stelle +1 enthält, wo der
10
7 6 B
2ÜA7095
Wert im Linearspeicher zu finden ist. Die zweite Nachricht bleibt in der Tabelle und besagt, daß der Knotenpunkt η den Wert der Veränderlichen benötigt, der ε-Knotenpunkt η ist. Wie nachfolgend gezeigt werden wird, benutzt die UP-Einheit diese Nachricht. Die Tätigkeit der Beta-Einheit endet, wenn der Ausdruck der Veränderlichen nicht ausgewertet ist.
Wenn der £-Knotenpunkt für eine Veränderliche gilt, der Wertausdruck assembliert und ausgewertet wurde, jedoch einen Unterausdruck mit einer freien ungebundenen Veränderlichen enthält, die noch keinen Wert hat (das ist der Fall, wenn der Wertausdruck gerade eine Veränderliche ist, die noch keinen Wert hat), dann wird der Beschreiber von R2 mit dem Ausdruck "expr" bezeichnet und der Rumpf von R2 wird gebildet durch die Stelle öl m^+l des Wertes, wo der Wertausdruck im Linearspeicher beginnt. Im Schritt 14 wird dieser letzte Fall untersucht. Wenn ein solcher Fall eine Eins erhält, setzt die Beta-Einheit in die Tabelle die folgenden Nachrichten:
I N \ nl IUP , BP* U ,m^l U I ■'- I
N I . I R1
Die erste dieser Nachrichten setzt in die Spalte für die Veränderliche den Stellenwert +1 der Stelle, wo der Wert im Linearspeicher beginnt. Die zweite Nachricht veranlaßt den Knotenpunkt Assemblierer, den Wertausdruck direkt nach der ersten linken Klammer zu lesen, wobei er mit der Auswertung eines Ausdruckes beginnen muß. Der Code R wird dazu verwendet, anzuzeigen, daß eine Zeile mit der Knotenpunktbezeichnung m geschaffen werden muß. Es ist zu beachten, daß hier der im ε-Knotenpunkt gefundene Rückzeiger verwendet wird.
Wenn der Wert der Veränderlichen bekannt und kein Ausdruck ist, muß es eine Konstante sein. Diese Konstante c steht im Wort R2. In dieser Situation weist die Beta-Einheit die UP-Einheit an,
1 f' ... ; / 17BS
Docket YO 968 027
die Spalte für die Veränderliche zu ersetzen (im Knotenpunkt x, wenn η gleich xi ist). Diese Aktion wird durch die folgende Nachricht ausgelöst:
. N
UP
In der UP-Einheit sind wiederum zwei Form Wortregister R(RD, Rl, R2, R3) und W(W, B, M, D) enthalten. Es wurde oben gezeigt, daß die anderen Einheiten Nachrichten der folgenden drei Arten für die UP-Einheit erzeugen.
N I η UP I U ι I C
N I η UP I U I )ζί ι m+1
N I η UP I U ν . ri*
Darin ist C in der ersten Nachricht eine Konstante. Die zweite Nachricht sendet die Information zum Knotenpunkt X (wenn η = xi ist, welche besagt, daß der der i-ten Spalte entsprechende Ausdruck eine Veränderliche oder ein komplexer Ausdruck ist, der ausgewertet werden muß. In der dritten Nachricht ist ν ein Beschreiber für eine Veränderliche ohne einen laufenden Wert, n* die Stelle der bindenden Veränderlichen, die zur Erzeugung der Nachricht führte. Wenn die Operation der UP-Einheit beginnt, steht eine Nachricht in einer der obigen Formen im Register R.
Im Zusammenhang mit der Operation der UP-Einheit wird zunächst die folgende Tabelle A betrachtet.
Docket YO 968 027
/17 6 5
1 2 3 4
5 6
TABELLE A
W ·»- R -» RO «- ρ (RO)
Knotenpunkt RO wiedergewinnen u. in R setzen
NEIN RO 2 _Λ_ (oberer Knotenpunkt =
NOP f OD
Bringe in Tafel folgende Nachricht:
F JL , OD U ! ι D
-» R2// ? SC JA.
-> Tabelle D
Rl// 2 NEIN
-tTabelle C
b (n) ? 3 JHEIIL
_> Tabelle B
Folgende Nachricht in Tafel bringen:
, RO ι R1 , R2
Aus Tabelle A ist zu ersehen, daß im ersten Schritt die Qriginalnachricht der UP-Einheit im Register W gespeichert wird. Im zweiten Schritt wird die Knotenpunktbezeichnung im Register R(n,pder xi) ersetzt durch ihren Vorläufer, die Knotenpunktbezeichnung x. In dieser Verbindung ist zu beachten, daß die Information in die i-te Spalte des Knotenpunktes χ gesetzt wird. Im dritten Schritt wird der vorlaufende Knotenpunkt aus der Tabelle wiedergewonnen. Im vierten Schritt wird festgestellt, ob dieser Knotenpunkt der oberste Knotenpunkt des Programmes ist, der die Form
OD
Docket YO 968 027
1 Ü J : 1 h I 1 η 6
hat, worin Λ für eine vollkommen leere Knotenpunktbezeichnung steht, d. h. das erste Bytes des Wortes ist der Knotenpunktbezeichnungsbeschreiber und die übrigen Formbytes des Wortes sind leer.
Wenn Register R den obersten Knotenpunkt enthält, wird in Schritt 5 die folgende Nachricht in die Tafel gesetzt, wobei D die gesendete Information bezeichnet. Hierbei handelt es sich um eine Nachricht für die Ausgabeeinheit mit der Bezeichnung OD.
N ι _A_
OD
Gilt die Information nicht für den obersten Knotenpunkt, wird in Schritt 7 geprüft, ob es zu einem Knotenpunkt mit der Bezeichnung "Kopie stoppen" (SC) geht, der durch einen bedingten Ausdruck erzeugt wurde. Die in diesem Fall durchlaufenen Schritte werden nachfolgend in Zusammenhang mit der Tabelle D erklärt.
Wenn ein solcher Knotenpunkt mit der Bezeichnung "Kopie stoppen" vorliegt, wird im Schritt 8 festgestellt, ob die Information zu einem ε-Knotenpunkt gesandt wird. Ist das nicht der FAlI, handelt es sich um einen gewöhnlichen Teil des Programmbaumes und die in diesem Fall zu unternehmenden Schritte werden in Verbindung mit Tabelle C nachfolgend erklärt.
Im obigen Fall handelt es sich um einen ε"Knotenpunkt und es wird dann in Schritt 9 festgestellt, ob die Information auf die dritte Spalte gesendet wird (anderfalls wird sie auf die zweite Spalte gesendet). Wenn sie auf die dritte Spalte gesendet wird, bezieht sich die Information auf einen Programmbaum und nicht auf den Wert der Veränderlichen, die der ε-Knotenpunkt darstellt.
Im zuletzt genannten Fall wird im Schritt 11 der ε-Knotenpunkt in die Tafel zurückgesetzt und es erfolgt eine Rückverzweigung zum Schritt 2, um die Information auf den nächsthöheren Knotenpunkt im Programmbaum zu senden. Bei dieser Umwandlung muß er-
Dock YO 968 027 ■ · u «
2ÜA7095
wähnt werden, daß die e-Knotenpunkte nur die Information für die umgebenden Knotenpunkte halten. Es ist zu beachten, daß der mit dem Knotenpunkt η beginnende Baum nicht zerstört wird. Wenn eine Konstante gesendet wird, würde das gewünscht. Wenn etwas anderes gesendet wird, z. B. expr, ¥> oder eine veränderliche Information, soll diese Information nicht zerstört werden, da sie von der Ausgabeeinheit benutzt werden kann, wenn das Programm nicht zu einer Konstanten ausgewertet wird.
Es wird jetzt die Situation betrachtet, die auftritt, wenn eine Information in die zweite Spalte eines ε-Knotenpunktes gesendet wird, d. h., wenn die gesendete Information sich auf einen Wert der Veränderlichen bezieht, über welche der Knotenpunkt geschaffen war. Es wird angenommen r daß der ε-Knotenpunkt übereinstimmte, d. h. jetzt im Register R in folgender Form gehalten wird:
N j n* e , ν Jd , m+1 j BP*
RO
Rl
R2
R3
Die jetzt ablaufenden Aktionen sind in der Tabelle B gezeigt.
Docket YO 968 027
7 ß £
OFUGlNAL INSPECTED
204709S
TABELLE B
folgende Nachricht in die Tafel setzen;
12 JA// ? expr 13
ι D , BP-*
ε ι ν
Ubereinstiitimung in Tafeleintrag, mit UP2 im 11. Byte, n* im vierten Wort, setze Übereinstimmung in R. Erfolgreiche Übereinstimmung innerhalb der Zeit t? JSEIiI ^ //
(R enthält jetzt:
Setze in Tafel folgende Nachricht:
I n ι«* UP2 j m*+l |ri*"
η UP
-> Setze in Tafel folgende Nachricht:
axpr (m*+l
BP*|
Übereinstimmung in Tafeleintrag, mit UP2 im 11. Byte, n* im vierten Wort, setze Übereinstimmung in R. NEIN Erfolgreiche überinstimmung innerhalb der Zeit t?
(R enthält jetzt;
Setze in Tafel folgende Nachricht:
UP2 ! m*+l
,BP"*
nl
R'
U|
-♦Übereinstimmung destruktiv auf Tafeleintragung, deren
Knotenpunkt mit η 2 beginnt
Übereinstimmung erfolgreich innerhalb der Zeit t? J
10.
Docket YO 968 027
/17 6 5
Gemäß Darstellung in Obiger Tabelle wird im Schritt 12 geprüft, ob die gesendete Information der Wertausdruck für die Veränderliche ist und zu einem komplexen Ausdruck ausgewertet wird, da sich in ihm eine Veränderliche ohne laufenden Wert befindet. Ist das nicht der FaIJ, muß die entstehende Information eine Konstante oder ein wertloses Veränderlichenwort sein, nämlich C oder ν n"** .
In diesem Fall wird in Schritt 13 der ε-Knotenpunkt mit dem Wert in der zweiten Spalte in die Tafel zurückgesetzt.
Danach werden in den Schritten 15 bis 18 alle Nachrichten aufgenommen, die in die Tafel als Ergebnis davon gesetzt wurden, daß der Wert einer durch die bindende Veränderliche des ε-Knotenpunktes gebundenen Veränderlichen, die vor Bestimmung des Wertes aufgesucht wurde, bestimmt wurde. In diesem Zusammenhang führt die Nachricht
N ι η UP ι I D
dazu, daß der gerade gefundende Wert für eine Veränderliche eingesetzt wird, d. h., der Wert wird auf die Spalte und den Knotenpunkt einer Veränderlichen gegeben, die eine Suche nach diesem Wert ausgelöst hatte.
Wenn die entstehende Information der Wert ist, der zu einem Ausdruck bestimmt wurde, wird im Schritt 19 der ε-Knotenpunkt zusammen mit der Information in die Tafel zurückgesetzt, daß sein Wert ein Ausdruck ist.
In den in Tabelle B gezeigten Schritten 21 bis 24 werden die von Veränderlichen, deren Werte vor der Wertbestimmung: aufgesucht wurden, hinterlassenen Nachrichten aufgenommen. Für jede derartige Veränderliche wird folgende Nachricht erzeugt:
[ N , nl| t BP»(, R't m»+ll ut ~[
Docket YO 968 027 * °'■>·· ' VJ 7£6
Diese Nachricht veranlaßt den Knotenpunktassemblierer mit dem Lesen seines Wertes aus dem Linearspeicher direkt hinter der Klammer zu beginnen, mit welcher er anfangen muß.
Nachdem all diese Veränderlichen behandelt wurden, wurde in den Schritten 25 und 26 der Baum erzeugt, während die versuchte Auswertung der Veränderlichen begrenzt wurde. Dadurch können grundsätzlich Unterbäurae ausgewischt werden.
Jetzt soll noch einmal die Programmauswertung mit Veränderlichen Λ zusammengefaßt werden. Der Knotenpunkt- Asseroblierer beginnt mit ^ der Erzeugung des Programmbaumes, bildet ε-Knotenpunkte oder Umgebungsknotenpunkte/ wenn er eine bindende Veränderliche in einer solchen Position findet, daß ihr Wert bekannt ist. Die. Beta Einheit sucht nach Werten von Veränderlichen die Rückzeiger ab. Wenn ein "einfacher Wert" bekannt ist (Veränderliche oder Konstante) , wird die einen Wert anfordernde Veränderliche durch ihren Wert ersetzt. Wenn bekannt ist, daß ein Viertausdruck nicht zu seinem einfachen Wert ausgewertet werden kann, wird der Ausdruck für den Wert aus dem Linearspeicher an die Stelle der Veränderlichen gelesen. In seiner neuen Position kann der Ausdruck auf seinen einfachen Ausdruck hin ausgewertet werden. In dem Programm Λ
( (Xy ( γ 5)) Qx χ))
läßt sich der Ausdruck ( λχ x ), welcher den Wert der Veränderlichen y darstellt, nicht auf einen einfachen Ausdruck auswerten. Nachdem das bekannt ist, wird der ganze Ausdruck ( λχ χ ) aus dem Linearspeicher gelesen um den Wert y zu ersetzen. An diesem Punkt erhält man (( Xx χ )5), welches sich zum einfachen Ausdruck 5, dem Endwert des Programmes auswertet.
Ein Ausdruck wird nicht immer so in eine Position gelesen, daß der auswertbar wird. In diesem Falle ergibt sich wieder die Information "expr". Diese Information wird wieder gesetzt und kann
10 / ι 7 β Ε
Docket YO 968 027
- 88 -
wieder durch einen Wert (Spalte) in einen ε-Knotenpunkt laufen. In einer derartigen Situation wird der Baum wieder ausgewischt und der ganze Vorgang wiederholt. Die Information "expr" kann jedoch an die Spitze des Programmes aufsteigen, ohne durch eine Wertspalte in einem ε-Knotenpunkt zu laufen und in diesem Fall wird der Wert des Programmes als ein Ausdruck betrachtet und die Ausgabeeinheit benutzt den ganzen Programmbaum in der Tafel, um das zu erhalten, was sie auszugeben wünscht.
An diesem Punkt der Beschreibung ist die nachfolgende Tabelle C zu betrachten, in welcher im einzelnen die Vorgänge beim Absenden einer Information in einen Knotenpunkt betrachtet sind, der weder ein ε-Knotenpunkt noch ein SC-Knotenpunkt ist.
ι (j · ι ·'
Docket YO 96 8 027
2U47095
TABELLE C
NEIN D // ? expr Ri // "♦■ expr
-» Ri «- D
-) Folgende Nachricht in Tafel setzen:
31 JA EZ I RO j Rl j R2 ι R3
32 JA Rl // ?
33 JA R2 SI H- ι '/
W W
34
JA R3 // ?
35 JA Rl // 2
36 JA Rl expr
37 R2 // 2 V
38 R2 // 2 expr
39 R3 // 2 V
40 R3 // ι expr
41 D Il - V
42 expr
Weiter in Tabelle A, Schritt 2
Docket YO 968
10
'■/1765
Es ist zu beachten, daß die Schritte in Tabelle C erreicht werden vom Schritt 8 in Tabelle A aus. Zu diesem Zeitpunkg steht folgende ursprüngliche UP-Einheitsnachricht im Register W.
ι ι n ι up T f
. ι »ι ι T
NBMD
Die nach oben gesendet Information steht in D. Wenn η gleich xi ist, steht der dem n-Knotenpunkg vorausgehende Knotenpunkt im Register R und die Information wird für die i-te Spalte nach oben gesendet.
Der in Tabelle C aufgezeichnete Schritt 27 stellt fest, ob eine Ausdrucksinformation kommt. Ist das der Fall, verändern die Schritte 28 und 30 das Beschreiberbyte in der i-te Spalte nach "expr" und setzen den vorhergehenden Knotenpunkt zurück in die Tafel. Handelt es sich nicht um eine Information "expr", dann wird die ganze Spalte durch die kommende Information ersetzt, wie es im Schritt 29 gezeigt ist, und der Knotenpunkt wird in die Tafel zurückgesetzt.
Durch die Schritte 31 bis 40 wird festgestellt, ob die Ausdrucksinformation weiter nach oben gesandt werden soll. Das geschieht wenn vom Knotenpunkt χ jetzt bekannt ist, daß er zu einem Ausdruck ausgewertet wurde. Die Bedingungen, unter welchen das geschieht, sind folgende:
1. Keine Spalte wartet noch auf ihren Wert, d.h. in keiner Spalte steht ein Beschreiber "Ji" (Schritte 32 bis 34) .
2. Einige Spalten enthalten "expr" oder einen Beschreiber "wertlose Veränderliche" (Schritte 35 bis 40).
Wenn obige Bedingungen erfüllt sind, wird im Schritt 41 "expr" zum Beschreiber von D.
10 9 15/1765
Docket YO 968 027 °p
Im folgenden Schritt 42 erfolgt eine Rückkehr zum Schritt 2 in Tabelle A.
Schließlich ist noch die Aktion der UP-Einheit zu betrachten, wenn eine Information an einen SC-Knotenpunkt gesendet wird. Diese Information muß das Ergebnis der Auswertung eines Prädikates eines bedingten Ausdruckes sein. Die einzelnen Vorgänge dieser Aktion sind im einzelnen in der folgenden Tabelle D dargestellt.
10 / 1 7 6 E
Docket YO 968 027
TABELLE D
NEIN D // ? expr
Weiter in Tabelle A, Schritt 2 > D // 2 ν
NEINi D // + expr
Weiter in Tabelle A, Schritt 2
STEIN
in* I BP SC ι m u I
NEIN D ? T (richtig)
R2 // «- TC
D 2 F "*" (Fehler)
R2 // <- FC
-♦Folgende Nachricht in Tafel setzen;
n1
BP
R2
-»Weiter in Tabelle A, Schritt 2.
Docket YO 968 027
i li / 1 7 6 S
Bei Betrachtung der Tabelle D ist zu beachten, daß eine "expr"-Information weiter nach oben gesendet wird, wenn das Prädikat sich zu einem Ausdruck oder einer wertlosen Veränderlichen auswertet (Schritte 43 bis 47).
In einem anderen Fall hat sich das Prädikat zu einer Konstanten ausgewertet. Wenn die Konstante T ist, wird in den Schritten 48, 49 und 52 die folgende Nachricht in die Tabelle gesetzt:
N t nl
BP'
TC ι m
In dieser Nachricht ist η = xi. Die Ausdrücke nl, BP und m korn- J men von der SC-Nachricht. Tatsächlich muß nl * χ und m die Stelle von e2 in den nachfolgenden ausgewerteten Ausdruck sein.
Wenn die Konstante F ist, wird eine Nachricht wie die obige erzeugt, der Code ist jedoch FC anstelle von TC (Schritte 50 bis 53). Für jede andere Konstante wird im Schritt 45 diese weiter nach oben gesendet. Dadurch wird der Wert des ganzen bedingten Ausdruckes als eine solche Konstante aufgefaßt.
In einer Ausgabeeinheit befinden sich zwei vierwort-große Register R(RO, Rl, R2, RC) und W(N, B, M, D) und ein Drucker. Alle aus der Tafel geholten Nachrichten werden im Register R festgehalten.
Die Opeartion der Ausgabeeinheit wird in Verbindung mit der nachfolgenden Tabelle beschrieben. In dieser Tabelle bezeichnet der Ausdruck "Wiedergewinnen" sowohl die Wiedergewinnung als auch die Rücksetzung einer Copie. Durch einen Ausdruck wie z.B. "Wiedergewinnen Code B" wird die Wiedergewinnung des Knotenpunk-
Docket YO 968 027 1 Ü : - l■ / 1 7 6 £
tes η* bezeichnet, wenn der Knotenpunkt B z. B. enthält
ν·
Drei Funktionen werden verwendet, und zwar: s(i, RO), welches die Knotenpunktbezeichnung ist, die man durch Anhängen von i an die KNotenpunktbezeichnung in RO erhält, wenn RO die Knotenpunktbezeichnung xi enthält, ist b(R0) gleich i und ρ(RO) ist x. Es wird ein Ein-Byte-Zähler verwendet.
Die Operation der Ausgabeeinheit beginnt mit folgender Nachricht im Register R;
N , _A_ j OD u I
D ist der nach oben gesendete "Programmwert". Die Tabelle für die Ausgabeeinheit ist folgende:
Docket YO 968 027
1Oi)M 5/1 766
r«K ? ο ,ja
NEIN
K? 1 JA
NEIN
K ? 2 JA
NEIN
K ? 3
NEIN
FEHLER
JA
- 95 -
JA
B// ? expr
NEIN B// 2 V
Wiedergew. -H· Knpkt. B nach R
//B «- //Rl ———Ausgang B
M// ? expr-
NEIN M// 2 ν
Wiedergew.-H Knpkt.M nach R
//VL - //R2 Ausgang M
D// ? expr
NEIN D// 2 ν
Wiedergew.·*Knpkt.D nach R
//D * //R3 Ausgang D
Ausgang ) JA
-N ? 1
K -»- b(N) RO ■*■ ρ (N)
R3// ? expr Ausgang R3// RO + 1
I __
RO
S(1,N)
RO «■ S (2,N) I
Ί I
RO
S (3,N)
Wiedergewinnung -Knotenp.RO nach R
JA-
Ri// 2 e
W ^R
Ausgang (
Wiedergew. Ή Knpkt.RO nach RK W «- R
Rl 2ε
Docket 'YO 968 027
/ 17 6 E
Rechts oben in der Tabelle ist die erste Aktion der Ausgabeeinheit gezeigt. Wenn der Programmwert kein Ausdruck ist, ist es eine einzelne Konstante. Diese Konstante ist Ausgabe und die Einheit stoppt dann den Betrieb. Andernfalls beginnt die Einheit den Programmbaum auszulesen, beginnend mit Knotenpunkt 1. Die ε-Knotenpunkte werden übersprungen, da sie keine zu druckende Information enthalten. Während der Operation hält das Register W den ausgegebenen Knotenpunkt und das Register' k die Anzahl -1 des auszugebenden Teiles des Knotenpunktes. Sobald ein Teil ein Ausdruck ist, muß die Ausgabeeinheit auf die nächstniedere Ebene zurückgehen, um den dem Unterausdruck entsprechenden Knotenpunkt zu erhalten.
Wenn ein Unterausdruck ganz ausgedruckt ist, prüfen die ganz links unten in der Tabelle angegebenen Schritte, ob das ganze Programm ausgegeben worden ist. Ist das nicht der Fall, veranlassen diese Schritte die Ausgabeeinheit dazu, eine Ebene oder mehrere Ebenen, wenn ε-Knotenpunkte zu überspringen sind, nach oben zurückzugehen. Wenn die Knotenpunktebene in N gleichzusetzen ist dem Wert xi, ist zuerst der Knotenpunkt xi (xil, xi2, xi3) gedruckt worden. Wenn keine ε-Knotenpunkte vorkommen, wird ks gleichgesetzt dem Wert i (die Zahl -1 des nächsten Teiles des zu druckenden x-Knotenpunktes) und der Knotenpunkt χ wird so wiedergewonnen, daß die Ausgabe für ihn weiterlaufen kann.
Es wird daran erinnert, daß eine wertlose Veränderliche in einem Knotenpunkt mit y n* bezeichnet wird, wobei n* die Knotenpunktbezeichnung des λ-Knotenpunktes ist, der die zu der wertlosen Veränderlichen gehörende bindende Veränderliche enthält. Der Rumpf dieser bindenden Veränderlichen muß aufgesucht, um sie ausdrucken zu können.
Es ist zu beachten, daß R3 manchmal ein unbenutztes Wort sein kann, weil eindeutige Funktionen zugelassen sind. In einem solchen Fall bewirkt die Linie in der Tabelle "Ausgabe R3" keine Aktion.
Docket YO 968 027 ' " **
20A7095
Es kann wünschenswert sein, die nicht zusammensetzbaren aber auch nicht auswertbaren Knotenpunkte zu drucken, die durch Fehlerbedingungen erzeugt wurden, wobei ein solcher Knotenpunkt die folgende Form haben kann:
N , η I |5 ι 9 I + ,
In einem solchen Fall kann jede Prüfung auf "expr" auf der Ausgabekarte ersetzt werden durch eine Prüfung auf "expr" oder "Jrf".
Wenn am Ende des Programmes noch bedingt Befehle übrigbleiben, deren Prädikate sich noch zu Ausdrücken auswertenf werden die teilweise ausgewerteten Prädikate und ihre zwei möglichen WErte durch Einschieben von Prüfungen auf SC-Knotenpunkte nach den Prüfungen für ε-Knotenpunkte (auf der Ausgabetabelle unten) ausgegeben. In diesem Fall müßte anstelle der linken Klammer der Ausdruck (F aufgedruckt werden.
Das in Fig. 4 gezeigte Blockdiagramm stellt die Organisation des Systems dar. Die Nabe des Systems bildet der Kommunikationsblock, der hier als Tafel bezeichnet wird. Die Tafel ist das effektive Nervenzentrum des Systems und alle anderen Einheiten stehen mit ihr in Verbindung. Wie nachfolgend genauer erklärt wird, kann die mit Eingabeeinheit bezeichnete Stufe nur Informationen an die Tafel senden. Die anderen in Fig. 4 gezeigten Einheiten des Systems, wie z.B. die Speichereinheiten 1 bis N, der Knotenpunkt-Assemblierer, die UP-Einheit, die Beta-Einheit, die Recheneinheiten 1 bis N und die Ausgabeeinheit können sowohl Informationen von der Tafel empfangen als auch Informationen an die Tafel zurückgeben.
Jede Einheit steht mit der Tafel über die für sie vorgesehene Speicherebene in Verbindung. Zur Darstellung wurden für die Tafel vier Wörter in jeder Speicherebene vorgesehen, von denen jedes 161 Bits umfaßt, wobei das äußerste linke Bit in einem Wort für ein "Leerbitri reserviert ist, was weiter unten genau-
Docket YO 968 027 '/176S
er erklärt wird. An diesem Punkt genügt die Feststellung, daß ein auf Null gesetztes Leerbit bedeutet, daß das Wort leer ist und ein auf Eins gesetztes Bit, daß das Wort gültig ist. Jedes Wort enthält vier Felder mit je 40 Bits, d. h. fünf 8 Bit große Bytes pro Wort, und diese Felder sind mit RO, Rl, R2 und R3 bezeichnet.
TAFEL
Ein Ausführungsbeispiel der Tafel ist in den Fign. 5A bis 5F, zusammengelegt gemäß Fig. 5, dargestellt. Wie aus diesen Figuren zu sehen ist, sind vier Schichten von Flip-Flops und Toren vorgesehen. Die hinterste Zeile in der obersten Schichte umfaßt ζ. B. die Flip-Flops 136, 137 und 138. Gemäß obigen Ausführungen über das Ausführungsbeispiel des Systemes wird ein Wort mit einer Größe von 161 Bits verwendet. In entsprechend umfaßt jede Zeile der Tafel 161 Flip-Flops, von denen der Einfachheit halber nur die drei oben erwähnten dargestellt sind.
Wie später noch genauer erklärt wird, besteht der gewählte Maschinenzyklus aus zwei Phasen, die als Schiebephase und Kommunikatonsphase bezeichnet werden. Während der Schiebephase wird die Information in einer Flip-Flopreihe als echte in der Tafel bezeichnet und auf die nächste Flip-Flopreihe verschoben. Somit wird in der Schiebephase die Information in der obersten Schicht der Flip-Flops in der Reihe mit den Flip-Flops 132, und 134 verschoben in die Zeile, die die Flip-Flops 124, 125 und 126 umfaßt und die Information in der vordersten Zeile der Endzeile in der oberen Schicht, d. h. in der Zeile mit den Flip-Flops 114, 115 und 116 wird verschoben in die Zeile in der zweiten Schicht mit den Flip-Flops 140, 141 und 142.
Die Schiebephase selbst verläuft in zwei Stufen. Dazu sind zwei Taktimpulse mit den Bezeichnungen Sl und S2 gemäß Darstellung in Fig. 6 vorgesehen. Der Impuls Sl wird zuerst auf die Tor-
1Of Π 5/176'S
Docket YO 968 027
Schaltungen der Tafel gegeben um eine Information zu leiten, die in den echten Zeilen der Flip-Flops steht, und zwar auf die Zeilen von Flip-Flops, die als Zwischenzeilen bezeichnet sind. Der Impuls S2 wird dann auf die Torschaltungen gegeben, um die Information aus den Zwischenzeilen auf die nächsten echten Zeilen zu leiten. Somit stellt die Tafel effektiv ein zweistufiges Schieberegister dar, in welchem sich eine Information bei Betrachtung der Figuren von rechts nach links in der Oberschicht, von links nach rechts in der zweiten Schicht, von rechts nach links in der dritten Schicht und wieder von links nach rechts in der untersten Schicht verschieben läßt. Aus dieser letzten Schicht wird die Information in die oberste Schicht zurückgeführt.
Wie bereits gesagt, gehört zu jeder Einheit im System eine Vertikalebene der Tafel. Ein Beispiel dafür ist definiert durch die Vertikallinie 144 und die Horizontallinie 118. Diese Ebene umfaßt vier Schichten, von denen jede eine Zeile mit 161 Flip-Flops enthält. Die Vertikalebene kann nach dem Konzept als Assoziativspeicher betrachtet werden, der vier Wörter mit je 161 Bits umfaßt.
Die in Fig. 5 gezeigt Tafel umfaßt Flip-Flops und Torschaltungen, d. h. die Schiebeschaltungen, die die Information durch die Tafel verschieben. Die Tafel ist vereinfacht dargestellt und in Wirklichkeit gehören zu jedem Flip-Flop in der Tafel noch entsprechende Schaltungen. Ein typsiches Flip-Flop der Tafel wie z. B. das Flip-Flop 141 in Fig. 5c ist mit seiner zugehörigen Schaltung in Fig. 10 gezeigt.
Um diese zugehörige Ebene besser zu verstehen wird auf die Fign, 6 bis 10 verwiesen. Fig. .6 zeigt die zeitliche Beziehung der Impulse M, Sl und S2 in der Verschiebungsphase, der Taktimpulse CA-I bis CA-3 und CB-I bis CB-3 in der Kommunikationsphase. Die Eign. 7A und 7B zeigen ein Ausführungsbeispiel der Assoziativebene, welches mit Ausnahme der Eingabeeinheit für alle Einhei-
Docket YO 968 027 /17 6 5
ten verwendet wird. Nach der Darstellung in diesen Figuren steuern die Taktimpulse CA-I bis CA-3 und CB-I bis CB-3 die Operation. In Fig. 7A sind die Flip-Flops 146, 14 8, 150 und 152 Übereinstimmungsanzeiger und werden erst durch die auf der Leitung 162 erscheinenden Impulse zur Zeit CE-I auf 1 gesetzt, wobei der Impuls CB-I der Assoziationsimpuls ist. Wenn bei Anlegen des Assoziationsimpulses in der assoziativen Spei cherebene keine Übereinstimmung auftritt, werden alle zuletzt genannten Flip· Flops zurückgestellt. Für jedes Wort, für das eine Übereinstimmung gefunden wird, wird jedoch das entsprechende der Flip-Flops 146 bis 152 auf 1 belassen. Wenn also ein Impuls auf der Leitung 166 zur Zeit CA-3 erscheint, wird die oberste Übereinstimmung gefunden, wenn eine solche vorliegt, und es folgt die gewünschte Lese- oder Schreiboperation.
Die Fign. 8 und 10 zeigen das typische Flip-Flop der Assoziativspeicherebene mit der zugehörigen Schaltung.
Fig. 9 zeigt eine Schaltung ähnlich wie ciie Fign. 20 und 22 und die Anordnung für das Vakanzbit- Flip-Flop. Diese schaltung wird für die Verbindung mit einer Leerstelle und für die Anzeige verwendet, daß ein Wort gültig ist. In diesem Zusammenhang ist zu beachten, daß beim Schreiben eines Wortes ein Vakanzbit auf 1 gesetzt wird, durch den Impuls auf der Schreibwahlleitung. Wenn ein Wort auf der Assoziativebene gelesen wird, wird das Vakanz'Flip-Flop auf Null durch den Impuls auf der Lesewahlleitung gesetzt. Das erste in Fig. 9 gezeigte Rückstellsignal wird dazu verwendet, all Leerstellenbits auf Null zu setzen, bevor das System gestartet wird.
Die Assoziativebene kann somit als ein vier Wörter großer destruktiver Speicher betrachtet werden. Nur bestimmte Spalten in der assoziativen Ebene erfordern das Assoziativmerkmal. Für die Spalten, die dieses Merkmal nicht erfordern, sind die in Fig. 10 gezeigten Assoziativschaltungen nicht erforderlich und können weggelassen werden.
Docket YO 968 027 /Lv-

Claims (19)

  1. - 1Ü1 -
    PATENTANSPRÜCHE
    1, Elektronisches Datenverarbeitungssystem, dadurch gekennzeichne t. daß eine erste Einrichtung für die Erstellung des Lambda Algorithmus als Maschinensprache des Systems (Fig. 4), bestehend aus Informationseingabe zum Empfang von Information und deren Umformung, aus einem Linearspeicher.· aus einer zentralen Kommunikationsanordnung und aus einem Steuerspeicher und eine zweite Einrichtung zur Verarbeitung der Daten im System gemäß dem Lambda-Algorithmus vorgesehen ist.
  2. 2. Elektronisches Datenverarbeitungssystem nach Anspruch 1, dadurch gekennzeichnet- daß die erste Einrichtung aus einer Anordnung zum zeichenserialen Empfang von Eingangsinformation für das System in Form von voll in Klammern gesetzten Ausdrücken, wobei die Ausdrücke jeweils Programme darstellen aus einer Eingabeanordnung zur Umformung der zeichenserialen Eingangsinformation in aussagefähige (Symbol ) Zeichen, die einen Beschreiberteil, einen Rumpf und einen Begrenzerteil zur Angabe des Zeichenendes besitzen,, aus einem Linearspeicher zur Speicherung der (Symbol-)Zeichen in Programmform, aus einer zentralen Komrnunikationsanordnung, aus Speichereinheiten zur Steuerung der Speicherung und des Abrufs von Daten aus den Speichern, aus Knotenpunkt- Assemblierern zur Umbildung der Klammerausdrücke in Programmbäume in der zentralen Koranunikationsanordnung, wobei die Bäume jeweils Knotenpunkte unterschiedlichen Niveaus besitzen, denen η Nachfolgefunktionen folgen und schließlich einer Anordnung zur Auswertung variabler Knotenpunkte, besteht.
  3. 3. Elektronisches Datenverarbeitungssystem nach Anspruch 1 Docket YO 968 027 10' : ; / 1 7 6 5
    und 2, dadurch gekennzeichnet, daß die zweite Einrichtung zur Verarbeitung der Daten im System gemäß dem Lambda-Algorithmus aus einer arithmetischen und logischen Einheit, die die arithmetischen und logischen Operationen im System durchführt und aus einer Ausgäbeanordnung besteht, die die Ergebnisse der Datenverarbeitung im System nach außen abgibt.
  4. 4. Elektronisches Datenverarbeitungsystem nach einem oder mehreren der Ansprüche 1 bis 3, dadurch gekennzeichnet, * daß der Linearspeicher eine Kopie eines Programms während seiner gesamten Ausführung enthält.
  5. 5. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß in den (Symbol-)Zeichen der Beschreiberteil eine Klassifizierung nach ganzen Zahlen, wahren Werten, Funktionskonstanten, die Funktionen von Zahlen zu Zahlen umfassen, Funktionen von Zahlen zu wahren Werten und von Funktionen von wahren Werten zu wahren Werten, Namen von Ausgangsgeräten, Namen von Variablen, bindenden Variablen, Definitionsbezeichnungen, definierten Namen von Ausdrücken, konditionellen Indikatoren, linken Klammern und rechten Klammern enthält.
  6. 6. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 5/ dadurch gekennzeichnet, daß die zentrale Kommunikationsanordnung aus einem Assoziativspeicher besteht, der aus einer Registeranordnung aufgebaut ist und dieses Register selbst eine Wortlänge umfaßt, wobei die Knotenpunkte eines Baumes durch eine Formel gegeben sind, die den Zeilen in der zentralen Kommunikatiosanordnung entspricht und die Zweige, die von den Knotenpunkten ausgehen, ihren Spalten entsprechen, daß ferner eine Tafelzeile für die Eingabe einer Tabelle vorgesehen ist, die ein erstes plus η folgeijT$örter umfaßt,
    Docfcet YO 968 027 10* - 1 5 / 1 7 6 S
    um einen η-Baum zu bilden, wobei das erste Wort die Knotenbezeichnung desjenigen Baumknotens enthält, der hierfür ein Eingang ist und wobei die weiteren η Wörter (Symbol-) Zeichen unter diesem Knotenpunkt enthalten.
  7. 7. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Eingabeanordnung aus einem ersten Register zum zeichenserialen Empfang eines Eingangs-(Symbol-)Zeichens und zur Speicherung der Adresse im Linearspeicher, zu der das Zeichen übertragen wird aus einem zweiten Register zuTi Empfang von (Symbol-) Zeichen, mit Ausnahme von linken Klammern und konditioneilen Indikatoren und ihrer jeweiligen Speicheradresse vom ersten Register, wobei unter der Voraussetzung daß das nächste (Symbol-)Zeichen eine rechte Klammer ist- dieses (Symbol-)Zeichen eine Priem im zweiten Register empfängt, aus einem dritten Register zur Bildung eines Eingabemittels für die zentrale Kommunikationsanordnung, aus einem Stapelspeicher zur Aufbewahrung linker Klammern-- und konditioneller Indikator-(Symbol-)Zeichen bis der Speicherbereich der Nicht-rechten- Klammern-Zeichen. die ihrem passenden rechten Klammerzeichen folgen, bekannt ist, aus einem vierten Register zum Empfang von Wörtern von und zur Abgabe von Wörtern an den Stapelspeicher und schließlich aus einer, fünften Register zur Aufbewahrung der Information der letzten linken Klammer oder konditioneilen Indikators für die die passende rechte Klammer gefunden wurde.
  8. 8. Elektronisches Datenverarbeitungssystera nach einen oder mehreren der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß der Knotenpunkt-Assemblierer aus Anordnungen besteht, die auf für ihn bestimmte Nachrichten in der zentralen Kommunikationsanordnung ansprechen, wobei die Nachricht eine Knotenpunktbezeichnung, eine Leerstelle oder einen Rückwärts zeiger.- einen Knotenpunkt· Assemblierer-Opera-
    10 / 1 7R *
    Docket YO 968 027 *
    - 104 -
    tionscode, einen Bereich im Linearspeicher und ein (Symbol) -Zeichen, das von der irn Linearspeicher ausgewählten Position für die Eingabe von Nachrichten in die zentrale Komraunikationsanordnung in Abhängigkeit von der Kombination des Knotenpunk- Assemblierer-Operationscodes und eines (Symbol)-Zeichens in der Nachricht für den Knotenpunkt-Assemblierer enthält, wobei Nachrichten von dem Knotenpunkt· Assemblierer in der zentralen Kommunikationsanordnung in Zeilen dieser zentralen Kommunikationsanordnung eingegeben werden.
  9. 9. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die Eingabeanordnung für den zeichenserialen Empfang von abgewogenen, in Klammern gesetzten, Formeln und für die Wiederassemblierung dieser Zeichen in aussagefähige Zeichenketten vorgesehen ist daß weiter der Linearspeicher zur Speicherung der Zeichen der Formeln in jeweils aufeinanderfolgenden Bereichen vorgesehen ist, wobei die Zeichen in den Speicher eingegeben sind, um die erwähnten Formeln zu bilden, daß ferner die Eingabeanordnung vorgesehen ist, um Nachrichten in die zentrale Kommunikationsanordnung 'einzugeben, daß weiterhin Speicheranordnungen vorgesehen sind für die Speicherung von Information, wobei sie Nachrichten in die zentrale.Kommunikationsanordnung senden und von ihr empfangen,, relativ zum Speichern und Abrufen von Informationen aus dem Speicher ,· daß ferner ein Knotenpunkt-Assemblierer vorgesehen ist, für das Sammeln einer Formel als Programmbaum, der aufeinanderfolgende Niveauknoten in der zentralen Kommunikationsanordnung besitzt, wobei der Knotenpunkt Assemblierer dazu dient, Nachrichten in die zentrale Kommunikationsanordnung zu senden und von ihr zu empfangen, daß ferner eine Beta-Umwandlungsanordnung vorgesehen ist, für die Durchführung der Beta-Umwandlung von Elementen in dem Baum gemäß den Beta-Umwandlungsregeln des Algorithmus,
    Docket YO 968 027 " u
    ·- 105 -
    wobei die Beta-Umwandlungsanordnung dazu dient, Nachrichten in die zentrale Kommunikationsanordnung zu senden und von ihr zu empfangen und daß schließlich eine Sendeanordnung vorgesehen ist, zur Aufwärtssendung von Information in die Knotenpunkte,- wobei auch diese Sendeanordnung dazu dient, Nachrichten in die zentrale Kommunikationsanordnung zu senden oder von ihr zu empfangen.
  10. 10*. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 9. dadurch gekennzeichnet, daß die arithmetische und logische Einheit die arithmetischen und logischen Operationen ausführt und Nachrichten zu der zentralen Kommunikationsanordnung sendet und von dieser empfängt und daß die Ausgabeanordnung Ausgangssignale der Ergebnisse bereitstellt, die in der Verarbeitung der jeweilicjen Ausdrücke gewonnen wurden, wobei sie ebenfalls Nachrichten zu der zentralen Kommunikationsanordnung sendet und von dieser empfängt.
  11. 11. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß der Eingang in das System eine Formel in ausgewogener Klammerform ist, wobei die Formel aus Ketten von Symbolen besteht, die jeweils logische Gruppen, ({Symbol-) Zeichen) bilden, wobei jedes (Symbol)-Zeichen aus einem Beschreiberteil für die Angabe der Art des-(Symbol-)Zeichens, einem Rumpf und einem Begrenzer besteht/ der das Ende des (Symbol-)Zeichens angibt.
  12. 12. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß die Beschreiber ganze Zahlen, Gleitkommazahlen, Zahlen ausgewählter numerischer Systeme, wahre Werte umfassen, und die Rümpfe wahre Wertbeschreiber besitzen, die richtig (T) oder falsch (F), Punktionskonstanten, die
    1 0 Γ. ! S / 1 7 6 S
    Docket YO 968 027 'i/o-
    Funktionen von Zahlen zu Zahlen, Funktionen von Zahlen zu wahren Vierten und Funktionen von wahren Werten zu wahren Werten., die Bezeichnungen von Ausgabegeräten, Variablenbezeichnungen, bindende Bezeichnungen, Definitionsbezeichnungen, definierte Ausdrucksbezeichnungen, konditionierte Indikatoren, linke Klammern und rechte Klammern sein können.
  13. 13. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß die Beta-Umwandlungsanordnung Anordnungen für die Abtastung der zentralen Kommunikationsanordnung nach Variablen Knotenpunkten und Anordnungen für das Aufsuchen des Wertes einer Variablen mittels Rückwärtszeigern besitzt.
  14. 14. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 13, dadurch gekennzeichnet, daß die Sendeanordnung Anordnungen zur Sicherstellung der Baumposition der Knoten in einer Programmforrael und für die Prüfung ob der Wertausdruck einer Variablen sich zu einem Komplexausdruck evaluiert, besitzt,
  15. 15. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 14, dadurch gekennzeichnet, daß eine Anordnung zur Verarbeitung von Programmen und Daten in Baumform vorgesehen ist, die den Durchlauf« die Transformation und Kopieerstellung von Bäume» bewirkt/ wodurch diese zusammenschrumpfen und wachsen und daß ei-* ne Anzahl von Funktionseinheiten zur Durchführung der ge~ nannten Verarbeitungsoperationen vorgesehen iat,
  16. 16. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 15, dadurch gekennzeichnet, daß eine Einrichtung zur Durchführung allgemeiner Substitutions verfahr en vorgesehen ist, um eine rekursive Street* zung der Endpunkte von Zweigen von Bäumen gemäß des Lasabcla-
    Docket YO 968 027 1 ° " ' 1 5 ' 1 7 6 S
    - 1O7 -
    Algorithmus zu bewirken, wobei Unterbäume angegeben werden, die die Endpunkte ersetzten, indem Variablen gemäß dem Lambda-Algorithmus verwendet werden.
  17. 17· · Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 16, dadurch gekennzeichnet, daß eine Anordnung für die Erzeugung linearer Ketten von Symbolen von Bäumen, daß eine Anordnung zur Erzeugung von Bäumen von linearen Eingangsketten, daß eine Anordnung zur Speicherung eines Baumes, wobei Baumstrukturen in den Adressen von Knotenpunkten enthalten sind und ein Assoziativspeicher die Baumadressen enthält, um koordinierte Speicheradressen als Baumadressen zu interpretieren, daß ein Schieberegister und daß eine Anordnung zur Errechnung von vorhergehenden und nachfolgenden Funktionen an den erwähnten Baumadressen mit Hilfe des Schieberegister, vorgesehen sind.
  18. 18. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 17, dadurch gekennzeichnet, daß die zentrale Koituiiunikationsanordnung aus einer Registermatrix besteht, bei der jedes Register η Wörter zu m Bytes aufnehmen kann und die Register in k horizontalen Ebenen angeordnet sind, wobei die Ebenen eine gleiche Anzahl von Registern enthalten und die Register die Zeilen der Ebenen definieren, daß ferner entsprechende Bits in den Registern die Spalten in den Ebenen definieren, wobei einander entsprechende Register in jeder der k Ebenen untereinander angeordnet sind und jede Zeile der Matrix eine vertikale ebene Anordnung darstellt, die aus k Registern besteht und daß ferner eine Anordnung für die übertragung einer Information durch die Matrix von Register zu Register in jeweils entgegengesetzten Richtungen in benachbarten Ebenen vorgesehen ist, wobei die Informaton durch die Matrix· Serpentinenförmig durchgeschleust wird, um ein mehrreihiges Schieberegister zu bilden.
    10. ./17Ri;
    Docket YO 968 027 . t, -
  19. 19. Elektronisches Datenverarbeitungssystem nach einem oder mehreren der Ansprüche 1 bis 18, dadurch gekennzeichnet, daß die zentrale Kommunikationsanordnung weiter eine Assoziativschaltungsanordnung besitzt/ um jeder der vertikalen Ebenen von Registern die Funktion als Assoziativspeicher zu ermöglichen.
    Docket YO 968 027
    ° /17 6 5
    Leerseite
DE19702047095 1969-09-24 1970-09-24 Elektronisches Datenverarbeitungs system Pending DE2047095A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US86047369A 1969-09-24 1969-09-24

Publications (1)

Publication Number Publication Date
DE2047095A1 true DE2047095A1 (de) 1971-04-08

Family

ID=25333297

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19702047095 Pending DE2047095A1 (de) 1969-09-24 1970-09-24 Elektronisches Datenverarbeitungs system

Country Status (5)

Country Link
US (1) US3646523A (de)
JP (1) JPS52342B1 (de)
DE (1) DE2047095A1 (de)
FR (1) FR2060937A5 (de)
GB (1) GB1266993A (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3978452A (en) * 1974-02-28 1976-08-31 Burroughs Corporation System and method for concurrent and pipeline processing employing a data driven network
US4156903A (en) * 1974-02-28 1979-05-29 Burroughs Corporation Data driven digital data processor
JPS557940U (de) * 1978-06-30 1980-01-19
EP0069525B1 (de) * 1981-06-30 1986-04-16 Fujitsu Limited Datenverarbeitungssystem
US4447875A (en) * 1981-07-07 1984-05-08 Burroughs Corporation Reduction processor for executing programs stored as treelike graphs employing variable-free applicative language codes
US4747072A (en) * 1985-08-13 1988-05-24 Fairchild Camera And Instrument Corporation Pattern addressable memory
US5099450A (en) * 1988-09-22 1992-03-24 Syracuse University Computer for reducing lambda calculus expressions employing variable containing applicative language code
IE920032A1 (en) * 1991-01-11 1992-07-15 Marconi Gec Ltd Parallel processing apparatus
US8739137B2 (en) * 2006-10-19 2014-05-27 Purdue Research Foundation Automatic derivative method for a computer programming language
US10331947B2 (en) 2017-04-26 2019-06-25 International Business Machines Corporation Automatic detection on string and column delimiters in tabular data files

Also Published As

Publication number Publication date
GB1266993A (de) 1972-03-15
US3646523A (en) 1972-02-29
FR2060937A5 (de) 1971-06-18
JPS52342B1 (de) 1977-01-07

Similar Documents

Publication Publication Date Title
DE69726339T2 (de) Verfahren und Apparat zur Sprachübersetzung
DE2364408C3 (de) Schaltungsanordnung zur Adressierung der Speicherplätze eines aus mehreren Chips bestehenden Speichers
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
CH633643A5 (de) Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage.
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE2047095A1 (de) Elektronisches Datenverarbeitungs system
DE2814078A1 (de) Addierschaltung mit zeitweiliger zwischenspeicherung des uebertrags
DE2221693A1 (de) Anordnung zur Ausfuehrung einer Multiplikation in einem Rechner
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE3144563C2 (de)
DE2747304C3 (de) Einrichtung zur Mikrobefehlssteuerung
DE2245284B2 (de) Datenverarbeitungsanlage
DE2165730A1 (de) Rechensystem
DE3000012A1 (de) Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage
DE2459476C3 (de)
DE2433377A1 (de) Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen
DE10103845B4 (de) Rechnersystem
DE2265696C2 (de) Rechenanordnung
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten
DE2936801C2 (de) Steuereinrichtung zur Ausführung von Instruktionen
DE2525795C3 (de) Rechner
DE3411168A1 (de) Das assoziative feld
WO2017178222A1 (de) Gerät und verfahren zur bearbeitung eines binärkodierten strukturdokuments
DE2259702A1 (de) Verfahren und schaltung zur codierung von zeichen variabler laenge mit minimaler redundanz unter verwendung bekannter binaerer codebaumstrukturen
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten