DE3586700T2 - Vorrichtung und verfahren zur datenverarbeitung. - Google Patents
Vorrichtung und verfahren zur datenverarbeitung.Info
- Publication number
- DE3586700T2 DE3586700T2 DE8585108952T DE3586700T DE3586700T2 DE 3586700 T2 DE3586700 T2 DE 3586700T2 DE 8585108952 T DE8585108952 T DE 8585108952T DE 3586700 T DE3586700 T DE 3586700T DE 3586700 T2 DE3586700 T2 DE 3586700T2
- Authority
- DE
- Germany
- Prior art keywords
- program
- combinator
- components
- stack
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000006870 function Effects 0.000 claims description 65
- 230000009467 reduction Effects 0.000 claims description 41
- 238000003672 processing method Methods 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 21
- 238000007726 management method Methods 0.000 description 6
- 230000009466 transformation Effects 0.000 description 4
- 230000008571 general function Effects 0.000 description 3
- 238000011946 reduction process Methods 0.000 description 3
- 235000021438 curry Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/311—Functional or applicative languages; Rewrite languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Die vorliegende Erfindung betrifft ein Verarbeitungsverfahren und eine Verarbeitungsvorrichtung für funktionelle Sprachen usw., spezieller ein Berechnungsverarbeitungsverfahren und eine Vorrichtung, die aus mehreren Elementverarbeitungsfunktionen aufgebaut sind, gemäß denen mit trägen Auswertungen (lazy evaluations) verbundene Reduktionsberechnungen zum Realisieren der Auswertung in normaler Reihenfolge usw. wirkungsvoll parallel ausgeführt werden.
- Bisher sind als Grundmodelle für Berechnungen eines wohlbekannt, das dem Prinzip der Turingmaschinen entspricht, und eines auf Grundlage der Λ-Rechenart von Church. Computer auf Grundlage des Prinzips des Turingmaschinentyps werden auch als solche vom "von Neumanntyp" bezeichnet, und sie behaupten die Hauptströmung gegenwärtiger Computerarchitekturen. Andererseits wird der Prozeß der Berechnung auf Grundlage der Λ-Rechenart auch als "Reduktionstyp" bezeichnet. Da auf diese Rechenart beruhende Programmsprachen im allgemeinen keine Seiteneffekte zur Folge haben, werden sie als "funktionelle oder Anwendungsprogrammiersprachen" bezeichnet, von denen Lisp eine typische ist.
- Bei der Λ-Rechenart wird die -Notation verwendet, um Variablen für die Definition einer Funktion deutlich vom Wert der Funktion zu unterscheiden. Z.B. wird in einer Gleichung x + y die Definition einer Funktion, deren Variable x ist, als Λx · x + y ausgedrückt und die Definition einer Funktion, deren Variablen sowohl x als auch y sind, wird als Λx · Λy x + y ausgedrückt. Die Operation zum Erhalten der Funktion Λx · E(x, y) durch Anordnen von Λx vor der Gleichung E(x, y) in dieser Weise wird als Λ-Abstraktion bezeichnet und x wird gebundene Variable genannt, wenn die Variable Λ in den Λ-Termen enthalten ist. Wenn in der folgenden Gleichung 2 für x und 3 für y eingesetzt werden, wird der Rechenprozeß bei der Λ-Rechenart durch die folgenden Transformationen ausgeführt:
- ((Λx · Λy · x + y) (2)) (3) → (Λy 2 + y) (3) → 2+3 → 5
- Dieser Rechenprozeß wird als Reduktion bezeichnet.
- Bei der Λ-Rechenart werden derartige Reduktionen wiederholt ausgeführt bis eine Gleichung erreicht ist, bei der keine weitere Reduktion mehr möglich ist, d. h., bis eine Normalform erreicht ist. Was Gleichungen betrifft, die die Normalform erreichen können, wird eine Reihenfolge, bei der die Reduktionen von der ganz linken und äußersten Gleichung aus ausgeführt werden, als normale Reihenfolge bezeichnet, und eine Reihenfolge, bei der die Reduktionen umgekehrt von der ganz linken und innersten Gleichung aus ausgeführt werden, wird als Anwendungsreihenfolge bezeichnet. Es ist bekannt, daß manche Berechnungsgleichungen, die in der normalen Reihenfolge anhalten, dies in der Anwendungsreihenfolge nicht tun.
- Als Verarbeitungssystem für verschiedene funktionelle oder Anwendungsprogrammiersprachen auf Grundlage der Λ-Rechenart wurde das Turnersystem vorgeschlagen, das kombinatorische Logik verwendet (D. A. Turner: A New Implementation Technique for Applicative Languages: Software - Practice and Experience, Vol. 9, Nr. 1, Seiten 31 - 49, 1979). Andere bekannte Beispiele, die der vorliegenden Erfindung am nächsten liegen, sind: Offizielle Zeitschrift der Japanischen Patentanmeldungsoffenlegungen Nr. 58-8358 und 58-8359.
- Von Schonfinkel und Curry wurden etwa im Jahre 1930 Kombinatoren entdeckt, und den Kombinatoren S, K, I, B, C und W wurden die folgenden Gleichungen zugeordnet. Hier bezeichnen f und g Funktionen mit jeweils einem Argument, und x und y sind Variable.
- S f g x = f x (g x)
- K x y = x
- I x = x
- B f g x = f (g x)
- C f g x = (f x) g
- W f x = (f x) x
- Es ist bekannt, daß unter diesen Kombinatoren die Beziehungen I SKK, B S (KS) K, C S (BBS) (KK) und W 55 (SK) gelten.
- Das Turnersystem unterwirft ein in funktioneller Form beschriebenes Programm einer Abstraktion zum Beseitigen von Variablen durch die Verwendung von Kombinatoren, um so das Programm in einen Ausdruck eines binären Graphen von Kombinatoren umzuwandeln und betrachtet den Graphen als Maschinenanweisungen, die zergliedert und ausgeführt werden. Wenn angenommen wird, daß statt Λx in der Abstraktion mit den Kombinatoren [x] geschrieben wird, gilt das Folgende:
- [x] x = I
- [x] P = K P (x ε P)
- [x] (PQ) = S ([x] P) ([x] Q),
- wobei I, K und S die Kombinatoren und P und Q die funktionellen Gleichungen bezeichnen.
- Im Turnersystem wird eine Funktion f mit mehreren Argumenten in eine Funktion f' höherer Ordnung mit einem Argument transformiert. Diese Transformation wird als Curry- oder Zurichttransformation bezeichnet, die wie folgt definiert ist:
- ) f (x&sub1;, x&sub2;, . . . , xn) => (( . . . (f' (x&sub1;) x&sub2;) . . . xn) (f' (x&sub1;) (x&sub2;) . . . (xn)
- Als ein Beispiel für die Abstraktion gilt für SUC (x) = 1 + x:
- SUC => [x] (plus 1 x&sub0;
- => S ([x] (plus 1)) ([x] x)
- => S (S (K plus) (K 1)) I
- Der sich ergebende Binärgraph ist in Fig. 12 dargestellt. Dieser Graph entspricht den Maschinenanweisungen in einem gewöhnlichen Computer, und tatsächliche Berechnungen werden durch die unten angegebenen Reduktionen ausgeführt.
- Suc 3
- → S (S (K plus) (K 1)) I 3
- → (S (K plus) (k 1)) 3 I 3
- → (K plus) 3 (K 1) 3 3
- → plus 1 3
- → 4
- Von Turner wird festgestellt, daß das System durch einen Stapelmechanismus durch Speichern von Graphen in einem Computer realisiert werden kann.
- Das Turnersystem ist dadurch gekennzeichnet, daß eine Funktion mit mehreren Argumenten zugerichtet und in eine Funktion höherer Ordnung mit einem Argument transformiert wird.
- Dadurch wird ein durch Abstraktion erhaltener Kombinatorgraph redundant und die Anzahl von Schritten im Reduktionsprozeß für die Auswertung nimmt zu. Ein anderer Nachteil ist, daß selbst dann, wenn die Argumente parallel verarbeitet werden können, sie einzeln verarbeitet werden, so daß Parallelverarbeitung schwierig ist. Darüber hinaus ist der Wirkungsgrad beim Kompilieren ungünstig, da die Abstraktion des Entfernens von Variablen aus einem Programm zur Folge hat, daß die Abstraktion für jede Variable über das gesamte Programm ausgeführt wird.
- Eine Vorrichtung, die das Turnersystem unter Verwendung eines binären Graphen realisiert ist in EP-A-0069314 offenbart.
- Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zur Datenverarbeitung anzugeben, die dazu in der Lage sind, Parallelreduktionsberechnungen in z. B. der normalen Reihenfolge auszuführen, wie sie mit träger Auswertung verbunden ist.
- Um die oben angegebenen Schwierigkeiten zu meistern, werden Kombinatorgraphen mit Produktstrukturen eingeführt und ein Auswertungssystem auf Grundlage der Reduktionen derselben wird für funktionelle oder Anwendungsprogrammiersprachen verwendet, um dadurch einen prägnanten Ausdruck und effizienten Lauf eines Programms zu erzielen.
- Das Verfahren und das System gemäß der Erfindung sind in den Ansprüchen 1 bzw. 2 dargelegt.
- Fig. 1 ist ein Flußdiagramm, das die Schritte eines Prozesses bei einem ersten Ausführungsbeispiel der vorliegenden Erfindung zeigt;
- Fig. 2 ist ein Blockdiagramm, das ein Beispiel einer erfindungsgemäßen Rechenvorrichtung zeigt;
- Fig. 3 ist ein Anordnungsdiagramm einer Reduktionsprozessoreinheit, die ein erstes Ausführungsbeispiel der vorliegenden Erfindung ist;
- Fig. 4 ist ein erläuterndes Diagramm, das ein Beispiel zeigt, in dem Kombinatorgraphen bei der vorliegenden Erfindung Fig. 3 zugeordnet werden;
- Fig. 5 ist ein Flußdiagramm, das die Prozesse eines Elementarprozessors bei der vorliegenden Erfindung zeigt;
- Fig. 6 ist ein Flußdiagramm, das die Prozesse allgemeiner Funktionsaufrufe bei der vorliegenden Erfindung zeigt;
- Fig. 7 ist ein Blockdiagramm, das die Anordnung des Elementarprozessors bei der vorliegenden Erfindung zeigt;
- Fig. 8 ist ein Diagramm, das den Inhalt eines Kombinatorworts bei der vorliegenden Erfindung zeigt;
- Fig. 9 ist ein erläuterndes Diagramm, das den Inhalt eines Pakets bei der vorliegenden Erfindung zeigt;
- Fig. 10 ist ein erläuterndes Diagramm, das die Beziehung zwischen dem Stapelverwaltungsdeskriptor und einem Stapelbereich bei der vorliegenden Erfindung zeigt;
- Fig. 11 ist ein erläuterndes Diagramm, das ein System für eine Stapelverwaltung für einen Kombinator T zeigt, der auf eine Mehrfachgruppe bei der vorliegenden Erfindung hinzeigt;
- Fig. 12 ist ein Diagramm, das einen Turnergraphen zeigt, der ein bekanntes Beispiel ist;
- Fig. 13 ist ein erläuterndes Diagramm, das ein Beispiel zeigt, bei dem Fig. 12 unter Verwendung der Mehrfachgruppen dargestellt ist;
- Fig. 14 ist ein erläuterndes Diagramm, das ein Beispiel zeigt, das die Mehrfachgruppen bei der vorliegenden Erfindung verwendet; und
- Fig. 15 ist ein erläuterndes Diagramm, das die Art der Zuordnung zu Prozeßeinheiten bei der vorliegenden Erfindung zeigt.
- Fig. 16 ist ein Diagramm, das einen Kombinatorgraphen auf Grundlage des Turnersystems zeigt;
- Fig. 17 ist ein Flußdiagramm erfindungsgemäßer Programmprozesse;
- Fig. 18 ist ein Diagramm, das einen Produkte verwendenden Kombinatorgraphen zeigt;
- Fig. 19(a) - 19(e) sind Diagramme, die den Verlauf der Reduktionen für suc 3 gemäß dem erfindungsgemäßen System zeigen;
- Fig. 20 ist ein Anordnungsdiagramm, das den Knoten einer Zelle variabler Länge mit einem Kopf zeigt;
- Fig. 21 ist ein Diagramm, das das Format eines Kopffeldes zeigt;
- Fig. 22 ist ein erläuterndes Diagramm, das die interne Form eines V-Graphen zeigt, der max < 3, 5> entspricht;
- Fig. 23 ist ein Flußdiagramm, das einen Reduktionsablauf zeigt;
- Fig. 24(a) - 24(j) sind erläuternde Diagramme, die Stapelabläufe zu Zeitpunkten zeigen, zu denen Reduktionen zum Auswerten von max < 3, 5> ausgeführt werden;
- Fig. 25 ist ein Diagramm, das eine Hardwareanordnung zeigt, die ein Registerarray für Pointercachevorgänge gemäß der vorliegenden Erfindung zeigt; und
- Fig. 26 ist ein Blockdiagramm, das die Anordnung einer Speichervorrichtung zeigt, die für die vorliegende Erfindung besonders geeignet ist.
- Es wird das Prinzip eines ersten Ausführungsbeispiels beschreiben.
- Das System der vorliegenden Erfindung zum Verarbeiten von funktionellen oder Anwendungsprogrammiersprachen verwendet Kombinatoren ähnlich wie das Turnersystem, jedoch ist es ohne Zurichten einer mehrere Argumente enthaltenden Funktion realisiert. Eine Mehrfachgruppen(Tupel)-Struktur, die das arrayförmige Anordnen von Argumenten erlaubt, wird in einen Kombinatorausdruck wie folgt eingeführt.
- Wenn eine Mehrfachgruppe einer Formel x&sub1;, x&sub2;, . . . , Xn mit < x&sub1;, x&sub2;, . . . , xn> bezeichnet wird (auch T-Kombinator genannt), kann eine Funktion mit n Argumenten als f : (x&sub1;, x&sub2;, . . . , xn> ausgedrückt werden. D.h., daß das Grundprinzip der vorliegenden Erfindung darin besteht, daß jede beliebige Mehrargumentfunktion mit mehreren Argumenten als Funktion mit einem Argument behandelt wird, die auf die Argumente der Mehrfachgruppe anwendbar ist.
- Darüber hinaus kann dies auf Mehrfachgruppen von Funktionen f&sub1;, f&sub2;, . . . , fn angewendet werden.
- < f&sub1;, f&sub2;, . . . , fn> : < x&sub1;, x&sub2;, . . . , xn> = < f&sub1; : < x&sub1;, x&sub2;, . . . , xn> ,
- f&sub2; : < x&sub1;, x&sub2;, . . . , xn> ,
- fn : < x&sub1;, x&sub2;, . . . , xn> ,
- fn : < x&sub1;, x&sub2;, . . , xn"
- Nun müssen Kombinatoren für die Mehrfachgruppe < x&sub1;, x&sub2;, . . . , Xn> definiert werden, und die zuvor erwähnten Kombinatoren K, S, I, C, B und W können unverändert verwendet werden, wenn die Mehrfachgruppe als eine Variable betrachtet wird. Ein Kombinator Ji zum Auswählen eines beliebigen Elements aus der Mehrfachgruppe wird neu wie folgt definiert:
- Ji = Ji < x&sub1;, x&sub2;, . . . , xn> = xi (1 ≤ i ≤ n)
- Abstraktionen werden die folgenden:
- [ ] (E&sub1; E&sub2;) S([ ] E&sub1;) ([ ] E&sub2;)
- [ ] = I
- [ ] y = K y (x i ≠ y wenn für i: 1 ≤ i ≤ n)
- [ ] x i = J i (1 ≤ i ≤ n)
- [ ] < y&sub1;, y&sub2;, . . . , ym> = < [x] y&sub1;, [x] y&sub2;, . . . , [x] ym>
- Ein Graph, der durch derartige Abstraktionen unter Verwendung von Mehrfachgruppen erhalten wird, soll als V-Graph bezeichnet werden.
- Der folgende V-Graph (Fig. 13) wird für den oben genannten Ausdruck Suc (x) = 1 ÷ x erhalten.
- Suc => [ ] plus < 1, x>
- => B plus < K&sub1;&sub1; J&sub1;>
- Nachfolgend wird die Überlegenheit des vorliegenden, Mehrfachgruppen verwendenden Systems gegenüber dem Turnersystem erläutert. Als Beispiel wird verwendet:
- func f (x, y: ganze Zahlen) : ganze Zahlen
- = = (x + 1) * (y - 1) end f
- Diese Funktion ergibt in zugerichteter Form:
- mul (add x 1) (sub y 1) (1)
- Der Kombinatorausdruck für (1) wird der folgende:
- S(S(KS)(S(KK)(S(K mul)S(S(K add)I(K 1))))) (K(S(S(K sub)I))(K 1)))
- Wenn die Kombinatoren B und C verwendet werden, wird der Ausdruck weiter der folgende:
- S(BS(BK(B mul(C add 1))))(K(C sub 1))
- Wenn die zwei Variablen x und y enthalten sind, wie in diesem Beispiel, werden sie in der Reihenfolge y und x abstrahiert und demgemäß muß im Prinzip der Text zweimal durchgegangen werden. Darüber hinaus erhält die Länge des zu erhaltenden Kombinatorausdrucks im ungünstigsten Fall die Größenordnungen n², wobei n die Länge eines Quellprogramms bezeichnet.
- Wenn Mehrfachgruppen verwendet werden, wird das Ergebnis beim vorstehend genannten Beispiel (1):
- S(K mul)(S(K add < J&sub1;, K 1> )(S(K(sub < J&sub2;, K 1> )) = B mul < D odd < J&sub1;> K 1> ,
- B sub < J&sub2;, K 1" (2)
- und Abstraktionen sind im Prinzip mit nur einmaligem Textdurchgang möglich.
- Der auf dem Turnersystem basierende Kombinatorausdruck wird durch einen binären Baum gegeben, der Turnergraph genannt wird. Es ist bekannt, daß Berechnungen durch Auswerten des Turnergraphen der normalen Reihenfolge nach unter Verwendung eines Reduktionsstapels vorangebracht werden können.
- Die vorliegende Erfindung schlägt ein Parallelauswertungssystem in normaler Reihenfolge auf Grundlage des auf die Mehrfachgruppen gegründeten V-Code-Ausdrucks vor.
- Der graphische Ausdruck in V-Codes der unter (2) genannten Funktion f wird der in Fig. 14 dargestellte. Wenn angenommen wird, daß . . . f: < 3, 4> . . . auf die Funktion f angewendet werden kann, wird dabei der Reduktionsablauf der folgende:
- B mul < B add < J&sub1;, K 1> ,
- B sub < J&sub2;, K 1"< 3, 4> => mul < B add < J&sub1;, K 1> < 3, 4> ,
- B sub < J&sub2;> K 1> < 3, 4" => mul < add < J&sub1;< 3, 4> , K 1 < 3, 4",
- sub < J&sub2;< 3, 4> , K 1 < 3, 4"> => mul < add < 3, 1> , sub < 4, 1" => mul < 4, 3> => 12
- Wenn dieser Verlauf veranschaulicht wird, wird ein Netzwerk aus Prozeßeinheiten gebildet, wie dies in Fig. 15 dargestellt ist.
- Es ist nicht einfach, dieses Beispiel auf die parallelen Auswertungen von add und sub unter Verwendung des Turnergraphen zu unterwerfen. D.h., daß das Turnersystem die Argumente einer Funktion zurichtet, eine Mehrargumentfunktion in eine Funktion höherer Ordnung mit einem Argument transformiert und die Funktion höherer Ordnung auswertet, wohingegen das vorliegende System eine Mehrargumentfunktion unter Verwendung von Mehrfachgruppen auswertet, und es realisiert im Prinzip leicht eine Parallelauswertung derselben Anzahl, wie sie dem Mehrfachgrad von Argumenten entspricht.
- Das erste Ausführungsbeispiel der vorliegenden Erfindung wird in der Reihenfolge der Hardwareanordnung und der Funktion derselben beschrieben. Prozesse von einem Quellprogramm bis zur Ausführung sind in Fig. 1 dargestellt. Diese Schritte werden durch eine in Fig. 2 dargestellte Vorrichtung verwirklicht. Die Vorrichtung ist so aufgebaut, daß eine Hauptprozessoreinheit 22 (MPU), eine Hauptspeichervorrichtung 23 (MMD), eine Peripherievorrichtung 24 (PD) und eine Reduktionsprozessoreinheit 25 (RPU) über einen Bus 21 miteinander verbunden sind.
- Wie in Fig. 3 dargestellt, ist die Reduktionsprozessoreinheit eine solche, daß Elementarprozessoren (EPs) 21 in Form einer Matrix miteinander verbunden sind. Er ist mit dem externen Bus über Horizontal- und Vertikal-Buscontroller 34, 35 verbunden.
- Wie mit dem Bezugszeichen 11 in Fig. 1 angezeigt, wird das in einer funktionellen Sprache geschriebene Programm in Mehrfachgruppen, Funktionen und Variablen zerlegt und in Kombinatorformen mit der Mehrfachgruppenstruktur transformiert. Z.B. wird das zuvor genannte Quellprogramm:
- func f (x, y: ganze Zahlen) : ganze Zahlen = = (x + 1) * (y - 1) end f
- in die folgenden Kombinatorformen transformiert:
- B mul < B add< J&sub1;, K 1> ,
- B sub> J&sub2;, K 1"
- Der zugehörige Graphikausdruck ist in Fig. 13 dargestellt. Bin Verfahren zum Zuordnen von Fig. 13 zu den EPs wird dadurch realisiert, daß eine Zuordnung der jeweiligen Prozeßeinheiten angenommen wird, wie sie in den Fig. 14 und 15 dargestellt ist. Die in die Kombinatorformen transformierten V-Codes werden in der Hauptspeichervorrichtung abgespeichert und den EPs in einer Stufe vor dem Ausführen zugeordnet. Ein Beispiel für Ergebnisse, wie sie durch Zuordnen des graphischen Ausdrucks von Fig. 13 zu den EPs erhalten werden, ist in Fig. 4 dargestellt.
- Der Austausch von Information zwischen den EPs wird durch später beschriebene Pakete bewerkstelligt, die über den horizontalen oder vertikalen Buscontroller 34 oder 35 in Fig. 3 übertragen werden.
- Fig. 7 zeigt ein detailliertes Blockdiagramm des EP 31. Der EP besteht aus einer Arithmetik/Logik-Einheit 31-1 (ALU), einem Steuerregister 31-2 (CRG), einem Stapelbereich 31-3 (STM) und einem Nurlesespeicher 31-4 (ROM).
- Die Grundoperationsanweisungen des EP sind im ROM gespeichert. Zu den Grundoperationsanweisungen gehören arithmetische Anweisungen add, sub, mul, div, usw. und darüber hinaus Kombinatoranweisungen, bei denen es sich um Anweisungen für Operationen handelt, die S, B, I, K, T, usw. entsprechen. Darüber hinaus wird für die Ergebnisse der Zuordnung der Knoten der V-Codes zu den Prozessoren in jedem Prozessor ein Kombinatorwort 81 (COW) erzeugt, wie in Fig. 8 dargestellt. Adressen in Fig. 8 kennzeichnen die Kennungen der Prozessoren und drücken die Anordnung , j> der Reduktionsprozesoreinheit (RPU) aus.
- Bevor ein Betriebsbeispiel ausgeführt wird, wird die Organisation des Pakets wie auch des Stapelbereichs beschrieben.
- Das Paket 91 weist das Format von Fig. 9 auf. Hier gilt:
- (1) Länge: Länge des Pakets
- (2) Empfänger: Empfangsadresse
- "Adressen" sind die Kennungen , j> der Prozessoren und die Indizes der Stapelverwaltungsdeskriptoren (ISMDTs) die später beschrieben werden].
- (3) Sender: Sendeadresse
- (4) Operation: Forcierte Auswertung, träge Auswertung, Anforderungsauswertung, Ergebnisse
- (5) Datenart: Direkter Wert: Wert selbst Indirekter Wert: An einem Ort gespeicherter Wert, wie er durch eine Adresse (92) angezeigt wird.
- Die Beziehung eines Stapels und des Verwaltungsdeskriptors desselben im Stapelbereich (STM) ist in Fig. 10 dargestellt. Der Stapelverwaltungsdeskriptor 101 (SMD) ist mit Statusinformation und einem Stapelrahmenzeiger ausgestattet.
- Die Statusinformation enthält:
- (1) "verwendetes" Flag: Unter Verwendung durch den Deskriptor.
- (2) Anzahl von Bezugnahmen: Anzahl, mit der der Stapel auf Daten bezug nahm.
- (3) "ausgewertes" Flag: Der Wert wird im Stapel abgespeichert.
- (4) "geradeaus gewertes" Flag: Gerade läuft die forcierte oder träge Auswertung ab.
- (5) anderes.
- Wenn der Stapel aufgefüllt ist, arbeitet ein Speicherbereiniger zum Verdichten von Rahmen innerhalb des Stapels und die Stapelrahmenzeiger werden auf Grundlage der Ergebnisse aktualisiert.
- Ein Stapelrahmendeskriptor wird im entsprechenden Rahmen jedes Mal dann erzeugt, wenn der Stapelrahmen gesichert wird. Im Stapelrahmendeskriptor sind die Größe des Stapelrahmens, empfangene Daten und ein "Ergebnisse erhalten"-Flag gesetzt, letzteres im Fall des Erhaltens mehrerer Ergebnisse. Der Bereich des Rahmens neben dem Deskriptor wird für Ergebnisdaten und als Jobbereich verwendet.
- Prozesse im EP 31 in Fig. 7 sind in Fig. 5 dargestellt. Zunächst wird ein Funktionsaufrufsystem im einzelnen erläutert. Funktionsaufrufe werden in den Fall einfacher Funktionen, die direkt durch Hardware ausgeführt werden können, wie Addition und Subtraktion, und den Fall allgemeiner Funktionen klassifiziert, die durch einen Programmierer definiert wurden.
- Im allgemeinen müssen die Funktionsaufrufe vorab in eine rekursive und parallel ausführbare Struktur eingegeben werden. Das Kombinatorwort (COW), das im Prozessor für den Funktionsaufruf eingestellt wird, ist in Fig. 8 dargestellt.
- Wie in Fig. 10 dargestellt, wird die Beziehung für die Übereinstimmung mit den Anwendungsdaten durch den Index des Stapelverwaltungsdeskriptors (ISMDT) 104 angezeigt. Beim Senden von Daten wird der ISMDT des entsprechenden Prozessors dauernd gesendet und als Ergebnis zurückgegebene Daten werden auf Grundlage des ISMDT überprüft.
- Prozesse im Fall einer einfachen Funktion sind die folgenden:
- Ein empfangenes Paket wird in einem Stapel abgelegt und das Paket mit dem entsprechenden, angefügten ISMDT wird an einen Prozessor geliefert, der durch die Argumentadresse eines Kombinatorworts angezeigt wird. Die Statusinformation dabei ist die forcierter Auswertung.
- Wenn ein Ergebnisargumentwert vom Prozessor der Argumentadresse empfangen wurde, wird der ISMDT des Pakets überprüft und der Wert wird auf den Stapel aufgelegt. Dabei wird der Inhalt eines alten Stapelrahmendeskriptors kopiert und ein Rahmenzeiger wird aktualisiert.
- Danach wird die einfache Funktion auf den Argumentwert angewendet, um ein Paket zu erzeugen, in das der Wert des ausgeführten Ergebnisses eingegeben wird, und das an die Rücksendeadresse gemäß dem Kombinatorwort gesendet wird. Danach wird ein SMDT 102 auf frei gesetzt.
- Der Fall des allgemeinen Funktionsaufrufs wird gemäß einem Flußdiagramm ausgeführt, wie es in Fig. 6 dargestellt ist:
- Ein empfangenes Paket wird in einem Stapel abgelegt und das Paket mit dem entsprechenden, hinzugefügten ISMDT wird an den durch die Verbindungsadresse eines Kombinatorworts angezeigten Prozessor gesendet. Der Status hierbei ist derjenige träger Auswertung.
- Wenn der Hinweis auf forcierte Auswertung für ein Argument empfangen wurde, wird der Sender des Pakets in einen dem ISMDT entsprechenden Stapelrahmendeskriptor eingegeben und den Daten des Stapelrahmens wird eine Argumentnummer zugefügt und sie werden an einen Argumentadressenprozessor gesendet.
- Vom Argumentadressenprozessor zurückgegebene Ergebnisse werden an einen Anforderer für die forcierte Auswertung geliefert.
- Die ausgewerteten Ergebnisse des Funktionskörpers werden erhalten und an einen durch eine Ergebnisadresse angezeigten Bedarfsanmelder gesendet. Darüber hinaus wird zum Beseitigen des Restes der trägen Auswertung auf Grundlage desselben ISMDT ein Paket, das die ISMDT-Information innerhalb des dem ISMDT entsprechenden T-Prozessors löscht, an den durch die Argumentadresse angezeigten T-Prozessor gesendet.
- Schließlich wird das System des T-Prozessors zum Verarbeiten von Mehrfachgruppen erläutert. Um ein rekursives Programm zuzulassen, wird ein Stapel, wie er in Fig. 11 dargestellt ist, ausgewertet. Im allgemeinen werden dann, wenn n Argumente vorhanden sind, die parallelen Prozesse für die Argumente gemäß den einzelnen Auswertungsanforderungen für die jeweiligen Argumente ausgeführt.
- Da Argumentauswertung das System träger Auswertung realisiert, wird überprüft, ob die Auswertung erfolgte. Wenn sie nicht erfolgte, wird die Argumentauswertung ausgeführt.
- Das Ergebnis der Argumentauswertung wird im Stapel abgelegt, ein "ausgewertet"-Flag wird in der Statusinformation gesetzt, und es wird ein Paket für den Ergebniswert erzeugt und an den Bedarfsanmelder für die Argumentauswertung gesendet.
- Sobald die Auswertung eines Funktionskörpers beendet ist, werden die der Anforderung für die Auswertung der Funktion entsprechenden Argumentauswertungsergebnisse vom Stapel entfernt.
- Das insoweit beschriebene Ausführungsbeispiel gibt eine Verarbeitungsvorrichtung für funktionelle Sprachen usw. an, die wirkungsvolles Ausführen von funktionellen oder Anwendungsprogrammsprachen erlaubt, was von herkömmlichen Maschinen vom von Neumanntyp nicht erwartet werden konnte.
- D.h., daß im Gegensatz zu den verfahrensorientierten Programmiersprachen, die derzeit die Hauptrichtung bilden, funktionelle oder Anwendungsprogrammiersprachen verwendet werden können, mit denen leicht Programme mit höherer Produktivität und Zuverlässigkeit entwickelt werden können, und die Erfindung hat gute Wirkung, um den Datenverarbeitungswirkungsgrad auf diesem Gebiet zu erhöhen.
- Es wird nun das Prinzip des zweiten Ausführungsbeispiels der vorliegenden Erfindung beschrieben.
- Das System der vorliegenden Erfindung zum Verarbeiten funktioneller oder anwendungsorientierter Programmiersprachen verwendet ebenso wie das Turnersystem Kombinatoren, jedoch ist es dadurch gekennzeichnet, daß eine Produktstruktur, die die Arrayanordnung von Parametern als ein Objekt behandelt, in einen Kombinatorgraphen eingeführt wird, wodurch eine Mehrparameterfunktion unverändert gehandhabt werden kann, ohne daß sie zugerichtet wird.
- Die Kombinatorgraphen mit Produktstrukturen sind wie folgt definiert und werden nachfolgend als V-Codes bezeichnet:
- (i) Konstanten sind V-Codes.
- (ii) Variablen und Funktionen sind V-Codes.
- (iii) Ein Produkt < V&sub1;, . . . , Vn> (Vi: V-Codes) ist ein Code.
- (iv) Eine Anwendung fV (f: Funktion oder Kombinator, V: V-Code) ist ein V-Code.
- (v) Die Kombinatoren S, K, B, C, W, I und Ji sind V-Codes.
- Hierbei ist Ji durch die folgende Formel definiert:
- Ji< Vl, . . . Vn> = Vi (l ≤ i ≤ n)
- Die anderen Kombinatoren sollen durch dieselben Definitionsformeln wie beim Turnersystem als V-Codes definiert sein.
- Da mit den V-Codes ein Produkt beliebigen Rangs als ein Objekt gehandhabt werden kann, kann der V-Codeausdruck als einer mit einer n-nären Baumstruktur angesehen werden. V-Codes, die als Graph wie ein n-närer Baum ausgedrückt werden, werden als V-Graph bezeichnet.
- Wie in Fig. 17 dargestellt, besteht das erfindungsgemäße Programmverarbeitungsverfahren aus drei Hauptschritten. Der erste Schritt 221 gibt den Quellcode eines Programms ein und Transformiert die gekennzeichnete anwendungsorientierte Struktur in einen entsprechenden V-Code-Ausdruck. Der zweite Schritt 222 gibt den V-Code-Ausdruck enthaltende Variablen ein, wie sie als Ergebnis des Schritts 221 erhalten werden, und unterzieht sie einer Abstraktion, um dadurch alle Variablen zu eliminieren, und um den obigen V-Code-Ausdruck in einen V-Code-Ausdruck umzuwandeln, der keinen Kombinator enthält (keine Variable enthält). Der dritte Schritt 223 gibt den V-Code-Ausdruck, wie er als Ergebnis für den Schritt 222 erhalten wurde (ein Kombinatorgraph, der keine Variable enthält) ein und wertet ihn durch Reduktionen desselben aus.
- Im ersten Schritt 221 wird eine Mehrparameterfunktion f mit n Parametern als Funktion eines Parameters gehandhabt, die auf ein Produkt mit n Parametern anwendbar ist. D.h., daß der V-Code-Ausdruck des durch f (x&sub1;, . . . , xn) gekennzeichneten Programms f < x&sub1;, . . . , xn> wird.
- Der zweite Schritt 222 wird auf solche Weise ausgeführt, daß der dem Körper der Funktion (dem Ausgangswert von Schritt 221) entsprechende V-Code-Ausdruck mit dem formellen Parameter der Einparameterfunktion (eine Variable) oder dem Produkt der formellen Parameter der Mehrparameterfunktion (das Produkt von n Variablen) abstrahiert wird. Die Abstraktion wird durch Ausführen der unten aufgelisteten Abstraktionsregeln ausgeführt. Nachfolgend wird ein zu V abstrahierter - V-Code E als [V] E geschrieben.
- Für x, xi, y: Variable, = < x&sub1;, . . . , xn> und Ei gilt für den V-Code:
- Der dritte Schritt 223 gibt den V-Code-Ausdruck des Programms, wie er als Ergebnis des Schritts 222 erhalten wurde (aus Kombinatoren, einer einfachen Funktion und einem Produkt bestehend) aus und unterwirft ihn Reduktionen in der normalen Reihenfolge, um dadurch das Programm auszuführen. Die Definitionsformeln der jeweiligen Kombinatoren bestimmen die entsprechenden Graphreduktionen. Die Anwendung des Produkts einer Funktion ist durch < f&sub1;, . . . . . . , fn> X = < f&sub1; X, . . . . . . fn> definiert.
- Z. B. wird die zuvor genannte Funktion suc (X) = 1 + X durch den ersten Schritt 221 die folgende:
- suc X = plus < 1, X> .
- Darüber hinaus wird dies durch den zweiten Schritt 222 in folgendes umgeformt:
- suc = [X] (plus < 1, X> )
- = B plus ([X] < 1, X> )
- = B plus < K1, I> ((1))
- Der ((1))) entsprechende V-Graph ist in Fig. 18 dargestellt. Ein mit 231 bezeichneter Knoten T&sub2; in der Figur ist ein Knoten, der eine Produktstruktur vom Grad 2 bezeichnet. Ahnlich wird ein Produkt vom Grad n durch einen Knoten Tn bezeichnet. Wenn bei der vorgenannten Funktion suc das Programm suc 3 ist, ist der V-Code-Ausdruck des Programms, der als Ergebnis des zweiten Schritts 222 erhalten wird der folgende:
- suc 3 = B plus < I, K1> 3 ((2))
- Der ((2)) entsprechende V-Graph ist in Fig. 19(a) dargestellt. Der Anwendungsknoten 241 in dieser Figur wird verwendet, wenn es erwünscht ist, den Applikator deutlich niederzuschreiben. Der dritte Schritt 223 empfängt den durch ((2)) angezeigten V-Code-Ausdruck (d. h. den V-Graphen von Fig. 19 (a)) und führt Reduktionen wie folgt aus:
- ((2)) → plus (< K1, I > 3) ((3))
- → plus < K13, 13> ((4))
- → plus < 1, 3> ((5))
- → 4 ((6))
- und erzeugt das Ergebnis 4 (Bezugszahl 247 in Fig. 19(e)). Die ((3)), ((4)), ((5)), ((6)) entsprechenden V-Graphen sind jeweils in den Fig. 19(b), 19(c), 19(d) bzw. 19(e) dargestellt. Knoten, die Gegenstand der Reduktionen waren, sind ein mit 242 bezeichneter in ((2)) ((3)), ein mit 243 bezeichneter in ((3)) ((4)), mit 244 und 245 bezeichnete in ((4)) ((5)) bzw. ein mit 246 bezeichneter in ((5)) ((6)).
- Nachfolgend wird die Überlegenheit des vorliegenden, produkteverwendenden Systems gegenüber dem Turnersystem erläutert.
- Als Beispiel wird die folgende Funktion angenommen:
- f(x, y) = (x + 1) * (y - 1)
- Beim Turnersystem wird der zugerichtete Ausdruck des Funktionskörpers:
- f x y = mul (add x1) (sub y1)
- schrittweise mit Parametern y und x wie folgt abstrahiert:
- f = [x] ([y] (f x y))
- = [x] ([y] (mul (add x1) (sub y1)))
- = [x] (B (mul (add x1)) (C (B sub 1) 1))
- = C (B B (B mul (C (B add 1) 1))) (C (B sub I) 1) ((7))
- Bei dieser Vorgehensweise ist es im Prinzip erforderlich, einen Text eine solche Anzahl von Malen durchzugehen, wie sie der Anzahl an Parametern entspricht. Darüber hinaus erhält die Länge des zu erzielenden Kombinatorgraphen im ungünstigsten Fall die Größenordnung n², wobei n die Länge des Quellprogramms bezeichnet.
- Wenn dieses Beispiel mit dem vorliegenden, Produkte verwendenden System verarbeitet wird, ergibt sich dank des ersten Schritts 221:
- f< x, y> = mul < add < x, 1> , sub < y, 1"
- und
- f = [< x, y> ] (f< x, y> )
- = [< x, y> ) (mul < add < x, 1> , sub < y, 1")
- = B mul < B add < J&sub1;, K1> , B sub < J&sub2;, K1" ((8))
- wird dank des zweiten Schritts 222 erhalten. Mit dem vorliegenden System wird der Kombinatorgraph im Prinzip mit einem Textdurchgang unabhängig von der Anzahl von Parametern erhalten. Es ist auch zu beachten, daß der Ausdruck ((8)) genauer erhalten wird als das Ergebnis ((7)) des Turnersystems.
- Nun wird das zweite Ausführungsbeispiel der vorliegenden Erfindung in der Reihenfolge der inneren Form des V-Graphen, der Reduktionsverarbeitung des V-Graphen in normaler Reihenfolge und der Hardwareanordnung beschrieben.
- Eine n-näre Baumstruktur, in der jeder Knoten eine variable Anzahl Unterknoten aufweisen kann, wird beim vorliegenden Ausführungsbeispiel als innere Form des V-Codes verwendet. Wie in Fig. 20 dargestellt, wird jeder Knoten durch eine Zelle variabler Länge dargestellt, mit einem Kopf, der aus einem Kopffeld 251 der Länge eines Wortes und Quellenfeldern 252 der Länge von n Worten (n ≥ 0) besteht. Das Kopffeld 251 bezeichnet die Art des Knoten. Die interne Form des Kopffelds 251 ist eine solche, wie sie in Fig. 21 dargestellt ist. Sie besteht aus einem Markierungsbit 261 für Verdichtung wertloser Daten, einem Identifizierungskennzeichen 262, das die Art des Knotens bezeichnet, und einem Feldwertabschnitt 263, dessen Bedeutung abhängig vom Wert des Identifizierungskennzeichens (dem Wert des Identifizierungskennzeichens 262) bestimmt wird. Abhängig von den Werten der Identifizierungskennzeichen (den Werten der Identifizierungskennzeichen 262), werden die Knoten in Konstanten (reelle Zahl, ganze Zahl, Zeichen, logischer Wert), Systemkonstanten (Kombinator enthaltene Funktion), ein Produkt (Spalte) und einen Selektor (Ji) klassifiziert. Feldwerte (die Werte der Abschnitte 263) werden jeweils als Konstantenwert, Systemkonstantennummer, Grad des Produkts und als Wert des Index des Selektors (welcher Selektor auszuwählen ist) abhängig von den Identifizierungskennzeichenwerten (den Werten der Identifizierungskennzeichen 262) ausgelegt. Bei ähnlicher Form des Quellenfeldes entsprechen die erlaubten Identifizierungskennzeichenwerte einer Zeichenkonstanten, einer logischen Konstanten, einer Systemkonstanten, einem Selektor und einem Zeiger. Zum Einführen eines wirkungsvollen Verdichtungssystems für wertlose Daten ist es erforderlich, daß die Größe jedes Knotens (d. h. die Anzahl der Quellenfelder) nur aus dem Inhalt des Kopffelds 251 bestimmt werden kann. Daher wird ein Zeigerwert nicht als Kopffeld 251 zugelassen. Statt dessen wird der Kombinator "Anwenden" verwendet, der klar die Anwendbarkeit einer Funktion kennzeichnet. Statt dessen wird der Kombinator "Anwenden" verwendet, der klar die Anwendbarkeit einer Funktion kennzeichnet. Dieser Kombinator ist definiert durch:
- apply fx = fx
- Als Beispiel sei die interne Form einer Funktion betrachtet, die dazu dient, die größere von zwei Zahlen aufzufinden:
- max (x, y) = if x > = y then x else y endif
- Der erste Schritt 221 liefert den V-Code für max < x, y> = cond < ge < x, y> , x, y > . Hier bezeichnet cond < P, V1, V2> eine Funktion, die dem Bedingungszweig if p then V1 else V2 endif entspricht, und ge bezeichnet ein Prädikat für den Vergleich von Werten. Dieser V-Code wird durch den zweiten Schritt 222 in folgendes umgewandelt:
- max = [< x, y> ) (cond < ge < x, y> , x, y> )
- = B cond < B ge < J&sub1;, J&sub2;> , J&sub1;, J&sub2;>
- Demgemäß wird der V-Code-Ausdruck für ein diese Funktion verwendetes Programm max (3, 5) der folgende:
- max < 3, 5> = B cond < B ge < J&sub1;, J&sub2;> , J&sub1;, J&sub2;> < 3, 5>
- und die interne Form desselben wird ein Graph, wie er in Fig. 22 dargestellt ist. Pfeile 271 in Fig. 22 kennzeichnen Bezugsbeziehungen durch Zeiger.
- In Fig. 23 ist ein Flußdiagramm für Reduktionen dargestellt, die beim vorliegenden Ausführungsbeispiel durch den dritten Schritt 223 ausgeführt werden. Ein Überblick dazu wird erläutert.
- (281) Der aktuell zu reduzierende V-Graph wird auf einen Stapel geschoben, und es folgt (282).
- (282) Solange die Spitze des Stapels durch den Anwendungsknoten gebildet wird, bleibt dessen Funktionsteil (linker Unterbaum) im Stapelspeicher. Dann geht die Steuerung zu (283) weiter.
- (283) Es wird überprüft, ob die Spitze des Stapelspeichers durch einen Kombinatorknoten gebildet wird. Wenn die Bedingung erfüllt ist, geht die Steuerung zu (284) über, andernfalls geht die Steuerung zu (285) über.
- (284) Ein dem Kombinatorknoten an der Spitze des Stapelspeichers entsprechender Graphikablauf (wie durch den Kombinator definiert) wird ausgeführt, woraufhin die Steuerung zu (282) weitergeht.
- (285) Es wird untersucht, ob die Spitze des Stapelspeichers durch einen Knoten für eine einfache Funktion gebildet wird. Wenn die Bedingung erfüllt ist, geht die Steuerung zu (286) weiter, andernfalls geht die Steuerung zu (289) weiter.
- (286) Es wird überprüft, ob ein der einfachen Funktion an der Spitze des Stapelspeichers entsprechender reeller Parameter in einer Form vorliegt, in der die Funktion anwendbar ist. Wenn die Funktion anwendbar ist, geht die Steuerung zu (287) weiter, andernfalls geht die Steuerung zu (288) weiter.
- (287) Die Berechnung für den reellen Parameter der Funktion an der Spitze des Stapelspeichers wird ausgeführt und der entsprechende V-Code wird durch den sich ergebenden Ausdruck ersetzt. Dann wird die Steuerung auf (282) rückgeführt.
- (288) Der reelle Parameter der Funktion an der Spitze des Stapelspeichers wird in den Stapelspeicher eingespeichert und die Steuerung wird auf (282) rückgeführt.
- (289) Es wird überprüft, ob im Stapelspeicher nur die Spitze des Stapelspeichers vorhanden ist (ob der Stapelspeicher durch einen Entnahmezugriff geleert wurde). Wenn die Bedingung erfüllt ist, geht die Steuerung zu (291) über, andernfalls geht die Steuerung zu (290) über.
- (290) Dem Stapelspeicher wird Information entnommen und die Steuerung geht zu (282) über.
- (291) Da das Ergebnis der Reduktionen (in normaler Form) an der Spitze des Stapelspeichers vorliegt, wird sie zum Ausdruck oder Sicherung in einer Datei verarbeitet. Dann enden die Reduktionen des dritten Schritts 223.
- Als Beispiel sind die Statusänderungen des Stapelspeichers und der Inhalte der V-Graphen bei den Reduktionen des V-Graphen von Fig. 22 in den Fig. 24(a), 24(b), . . . und 24(j) dargestellt. In jeder Figur wird der Kombinator oder die Funktion an der Spitze des Stapelspeichers das Objekt der Reduktion.
- Das vorliegende Ausführungsbeispiel wird durch eine Hardwareanordnung realisiert, wie sie in Fig. 25 dargestellt ist. Diese Vorrichtung wird durch eine Hauptprozessoreinheit 301 (MPU), eine Hauptspeichervorrichtung 302 (MMD), einen Stapelspeicher 303 (STM) und ein Registerarray für Zeigercachevorgänge 304 (REG) gebildet. Ein auszuführendes Programm wird in Kombinatorgraphen (V-Codes) mit variablenfreien Produktstrukturen umgewandelt und im MMD 302 in der oben beschriebenen internen Form abgespeichert. Die MPU 301 oder das REG 304 senden die Adresse eines Knotens, auf den Bezug zu nehmen ist, über eine Leitung 305 oder 306 an die MMD 302, wobei der Inhalt der MMD über eine Leitung 307 oder 308 ausgelesen werden kann. Der STM 303 arbeitet wie folgt abhängig von Stapelspeicherbetriebsanweisungen "Push", "Pop", "Tiefe" und "Pushregister", die von der MPU 301 über eine Leitung 309 ausgesendet werden:
- Push: Ein von der MPU 301 über eine Leitung 310 ausgegebener Wert wird auf den Stapel aufgelegt. Anschließend wird der Wert für eine neue Spitze des Stapelspeichers über eine Leitung 312 an das REG 304 gesendet.
- POP: Der Wert von der Spitze des Stapels wird über die Leitung 310 an die MPU 301 gesendet. Anschließend wird Information dem Stapel entnommen und der Wert für die neue Spitze des Stapelspeichers wird über eine Leitung 312 an das REG 304 gesandt. Wenn der Stapelspeicher leer wird, wird diese Situation über eine Leitung 314 an die MPU 301 berichtet.
- Pushregister: Ein vom REG 304 über eine Leitung 313 gesendeter Wert wird auf den Stapel aufgelegt. Anschließend wird der Wert für die neue Spitze des Stapelspeichers über die Leitung 312 an das REG 304 gesendet.
- Tiefe: Die Tiefe des Stapelspeichers zu diesem Zeitpunkt wird über die Leitung 310 an die MPU 301 gesendet. Das REG 304 weist eine große Anzahl von Registern auf, die ganzen Zahlen von 1 bis n in eineindeutiger Beziehung zugeordnet sind.
- Das REG 304 untersucht die jeweiligen Quellenfelder des Knoten eines V-Graphen, der durch den vom STM 303 über die Leitung 312 gesendeten Wert gekennzeichnet wird. Im Fall, daß das Quellenfeld ein Zeigerwert ist (die Adresse eines Unterknotens), sendet das REG die Adresse über die Leitung 306 an die MMD 302, liest den Inhalt über die Leitung 308 und speichert den Wert in das Register derjenigen Nummer ein, die dem Quellenfeld entspricht. Im Fall, daß das Quellenfeld ein anderes als ein solches eines Zeigerwerts ist, gibt das RSG den Wert desselben in das Register der entsprechenden Nummer ein. Nachfolgend sendet das REG den Inhalt des Registers mit der Registernummer, die dem von der MPU 301 über eine Leitung 311 gelieferten Wert entspricht über die Leitung 313 an den STM 303.
- Die MPU 301 führt die unter Bezugnahme auf Fig. 23 erläuterten Reduktionsschritte gemäß Mikrobefehlen aus. Bei dieser Gelegenheit wird der STM 303 für die Stapel für die Reduktionen verwendet. Die Push- und Pop-Vorgänge werden dadurch bewirkt, daß die Befehle "Push", "Pop", usw. über die Leitung 309 an den STM 303 gesendet werden. Speziell dann, wenn der Unterknoten von der Spitze des Stapelspeichers auf den Stapel zu legen ist, wird der "Pushregister"-Befehl statt des "Push"-Befehls über die Leitung 309 an den STM 303 gesendet, während gleichzeitig der Index des Unterknotens (Nummer des Unterknotens) über die Leitung 311 an das REG 304 geliefert wird, wodurch ein vorab durch das REG 304 cacheverarbeiteter Wert auf den Stapel gelegt werden kann und Hochgeschwindigkeitsverarbeitung möglich wird. Die zu reduzierenden V-Graphen werden in die MMD 302 eingespeichert, so daß dann, wenn der Wert des V-Graphen im Verlauf der Reduktion in der MPU 301 benötigt wird, die Adresse des Knotens über die Leitung 305 an die MMD 302 geliefert wird, um den Wert über die Leitung 307 auszulesen. Außerdem wird, wenn es erwünscht ist, die Tiefe des Stapels zu kennen, wie z. B. beim Reduktionsschritt 289, wird der "Tiefe"-Befehl über die Leitung 309 an den STM 303 gesendet und die Tiefe fo des Stapels kann über die Leitung 310 erfahren werden.
- Die obige MMD 302 ist von sehr hohem Wirkungsgrad, wenn sie eine Speichervorrichtung ist, bei der, wie dies in Fig. 26 dargestellt ist, ein Satz eingeschrieben wird und gleichzeitig mehrere Sätze (zwei Sätze in der Figur) ausgelesen werden können.
- Gemäß der Figur sind Leseverstärker S&sub1;&sub1;, S&sub1;&sub2;, S&sub3;&sub2; . . . an Datenleitungen 321 angeschlossen, und Treiberschaltungen W&sub1;&sub1;, W&sub1;&sub2;, . . . , W&sub3;&sub2; . . . sind an Wortleitungen 323 angeschlossen. Nurlese-Torelemente γ&sub1;&sub1;, . . . γ&sub3;&sub3; . . . sind jeweils mit Speicherelementen e&sub1;&sub1; . . . e&sub3;&sub3; . . . verbunden.
- Mit dieser Speichervorrichtung werden Daten in einen Schreibmodus in die Elemente e&sub1;&sub1; . . . e&sub3;&sub3; . . . eingeschrieben und Daten können aus den Elementen γ&sub1;&sub1; . . . γ&sub3;&sub3; parallel zu den Elementen e&sub1;&sub1; . . . e&sub3;&sub3; . . . im Lesemodus ausgelesen werden. Im allgemeinen kann im Fall des Auslesens mehrerer Sätze die Anzahl γnm angeschlossen sein.
- Dank der Hardwareanordnung mit dem oben erläuterten Zeiger- Cacheregisterarray kann die Geschwindigkeit von Prozessen, die den Reduktionsschritten 282 und 288 entsprechen, erhöht werden.
- Wenn das REG 304 und der STM 303 verwendet werden, kann erhöhte Geschwindigkeit auch bei Pipelinesteuerung erzielt werden.
- Gemäß dem zweiten Ausführungsbeispiel der vorliegenden Erfindung können funktionelle oder anwendungsorientierte Programmiersprachen, wie sie für zukünftige Parallelverarbeitungsmaschinen geeignet sind, wirkungsvoll durch Maschinen vom von Neumanntyp verarbeitet werden, die derzeit in großem Umfang verfügbar sind. Dies ist beim Ausweiten von Gebieten wirkungsvoll, wo im Gegensatz zu verfahrensorientierten Programmiersprachen, die derzeit die Hauptrichtung bilden, die funktionellen oder anwendungsorientierten Programmiersprachen verwertet werden können, die dazu in der Lage sind, Programme höherer Produktivität und Zuverlässigkeit zu entwickeln.
Claims (3)
1. Datenverarbeitungsverfahren in einem
Verarbeitungssystem, das eine Speichereinrichtung (23) und eine
Reduktionsprozessoreinheit (25) mit mehreren Elementarprozessoreinheiten
(31) aufweist, umfassend die folgenden Schritte:
Zerlegen eines in der Speichereinrichtung (23)
gespeicherten Programms, das in einer funktionellen oder Anwendungs-
Programmiersprache geschrieben ist, in Komponenten, bei denen
es sich um Kombinatoren, Funktionen, Variable, Konstanten oder
Applikatoren handelt, die Funktionsanwendungen angeben, sowie
in Mehrfachgruppen, die aus einer Direktprodukt-Struktur mit
n, n ≥ 3, der besagten Komponenten bestehen, wodurch die
besagten Komponenten als ein Argument gehandhabt werden,
Abstrahieren des zerlegten Programms und zur Umwandlung
desselben in eine n-näre Kombinatorgraphik mit Knotenpunkten,
die die besagte Direktprodukt-Struktur von n Komponenten
bezeichnen und keine Variable enthalten,
Zuordnen des in die Kombinatorgraphik umgewandelten
Programms in einem in der Reduktionsprozessoreinheit (25)
enthaltenen Speicher zu mehreren Elementarprozessoreinheiten, und
Ausführen des zugeordneten Programms durch Reduktionen in
den in der Reduktionsprozessoreinheit (25) vorhandenen
Elementarprozessoreinheiten (31).
2. Verfahren nach Anspruch 1, wobei das Programm in
Kombinatorgraphik in der Speichereinrichtung (23), die ein
gleichzeitiges Auslesen mehrerer Gruppen der besagten n Komponenten
gestattet, gespeichert und den Reduktionen unterworfen wird.
3. Datenverarbeitungsvorrichtung mit einer
Hauptprozessoreinheit (22), einer mit dieser über einen Bus verbundenen
Speichereinrichtung (23) und einer mehrere
Elementarprozessoreinheiten (31) enthaltenden Reduktionsprozessoreinheit (25),
gekennzeichnet durch
eine Einrichtung (22) zum Zerlegen eines Programms in
Komponenten, bei denen es sich um Kombinatoren, Funktionen,
Variable, Konstanten oder Applikatoren handelt, die
Funktionsanwendungen angeben, sowie in Mehrfachgruppen, die aus einer
Direktprodukt-Struktur mit n, n ≥ 3, der besagten Komponenten
bestehen, wodurch die besagten Komponenten als ein Argument
gehandhabt werden, wobei die Einrichtung (22) ferner das
zerlegte Programm in eine n-näre Kombinatorgraphik umwandelt, die
die besagte Direktprodukt-Struktur von n Komponenten
bezeichnende Knotenpunkte aufweist und keine Variable enthält,
eine Einrichtung (22) zum Zuordnen des in die
Kombinatorgraphik umgewandelten Programms, das in der ein gleichzeitiges
Aus lesen mehrerer Gruppen der Produktstruktur gestattenden
Speichereinrichtung (23) gespeichert ist, zu mehreren der
Elementarprozessoreinheiten, und
eine Einrichtung (25) zum Ausführen des zugeordneten
Programms durch Reduktionen, die für jede die Produktstruktur
aufweisende Mehrfachgruppe mittels Markierregistern (304) und
Stapeln (303) in der Reduktionsprozessoreinheit gleichzeitig
durchgeführt werden.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14682084A JPS61117626A (ja) | 1984-07-17 | 1984-07-17 | プログラム処理方式 |
JP17831784A JPS6158045A (ja) | 1984-08-29 | 1984-08-29 | 計算処理方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3586700D1 DE3586700D1 (de) | 1992-11-05 |
DE3586700T2 true DE3586700T2 (de) | 1993-03-25 |
Family
ID=26477535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8585108952T Expired - Fee Related DE3586700T2 (de) | 1984-07-17 | 1985-07-17 | Vorrichtung und verfahren zur datenverarbeitung. |
Country Status (3)
Country | Link |
---|---|
US (1) | US4734848A (de) |
EP (1) | EP0168827B1 (de) |
DE (1) | DE3586700T2 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61210432A (ja) * | 1985-03-15 | 1986-09-18 | Hitachi Ltd | 計算処理方式 |
US5321606A (en) * | 1987-05-19 | 1994-06-14 | Hitachi, Ltd. | Data transforming method using externally provided transformation rules |
US5134711A (en) * | 1988-05-13 | 1992-07-28 | At&T Bell Laboratories | Computer with intelligent memory system |
US5099450A (en) * | 1988-09-22 | 1992-03-24 | Syracuse University | Computer for reducing lambda calculus expressions employing variable containing applicative language code |
US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
US5175843A (en) * | 1989-10-30 | 1992-12-29 | General Electric Company | Computer-aided design method for restructuring computational networks to minimize shimming delays |
US5210837A (en) * | 1990-06-15 | 1993-05-11 | Digital Equipment Corporation | Methods and apparatus for transforming machine language program control into high-level language constructs by manipulating graphical program representations |
SE9002558D0 (sv) * | 1990-08-02 | 1990-08-02 | Carlstedt Elektronik Ab | Processor |
JPH05265975A (ja) * | 1992-03-16 | 1993-10-15 | Hitachi Ltd | 並列計算処理装置 |
EP0691608A1 (de) * | 1994-07-08 | 1996-01-10 | International Business Machines Corporation | Methode und Vorrichtung zur Aufbereitung von Daten zur deren Verarbeitung |
US6014514A (en) * | 1995-05-15 | 2000-01-11 | Sun Microsystems, Inc. | System for generating and graphically displaying call stack information for processing elements in a parallel processing system |
KR19990077006A (ko) * | 1996-03-01 | 1999-10-25 | 윌리암 피. 워젤 | 유전자 프로그래밍방법 및 시스템 |
US6457004B1 (en) | 1997-07-03 | 2002-09-24 | Hitachi, Ltd. | Document retrieval assisting method, system and service using closely displayed areas for titles and topics |
US20080271000A1 (en) * | 2007-04-25 | 2008-10-30 | Microsoft Corporation | Predicting Conflicts in a Pervasive System |
US9052891B2 (en) * | 2013-05-14 | 2015-06-09 | International Business Machines Corporation | Declarative configuration and execution of card content management operations for trusted service manager |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56164464A (en) * | 1980-05-21 | 1981-12-17 | Tatsuo Nogi | Parallel processing computer |
JPS588359A (ja) * | 1981-07-07 | 1983-01-18 | バロース コーポレーション | 還元プロセサの同時処理回路網および処理方法 |
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 |
US4502118A (en) * | 1981-07-07 | 1985-02-26 | Burroughs Corporation | Concurrent network of reduction processors for executing programs stored as treelike graphs employing variable-free applicative language codes |
US4654780A (en) * | 1984-06-05 | 1987-03-31 | Burroughs Corporation | Parallel register transfer mechanism for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes |
US4644464A (en) * | 1984-06-05 | 1987-02-17 | Burroughs Corporation | Graph manager for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes |
US4615003A (en) * | 1984-06-05 | 1986-09-30 | Burroughs Corporation | Condition concentrator and control store for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes |
-
1985
- 1985-07-15 US US06/754,967 patent/US4734848A/en not_active Expired - Lifetime
- 1985-07-17 EP EP85108952A patent/EP0168827B1/de not_active Expired - Lifetime
- 1985-07-17 DE DE8585108952T patent/DE3586700T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US4734848A (en) | 1988-03-29 |
EP0168827A3 (en) | 1988-08-10 |
EP0168827B1 (de) | 1992-09-30 |
EP0168827A2 (de) | 1986-01-22 |
DE3586700D1 (de) | 1992-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3586700T2 (de) | Vorrichtung und verfahren zur datenverarbeitung. | |
DE69322538T2 (de) | Methode und Prozessor zur Bearbeitung eines Programmes in Parallelbearbeitung | |
DE68925646T2 (de) | Pipeline-multiprozessorsystem | |
DE69428396T2 (de) | Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung | |
DE68921906T2 (de) | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE69021659T2 (de) | Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche. | |
DE69924857T2 (de) | Programm-kode-umwandlung | |
DE69408601T2 (de) | System und Verfahren zur Emulierung von Vielfachprozess-Pipelines in einer Einprozessumgebung | |
DE69328070T2 (de) | Maske zum Auswählen von Kompenenten in einem Verbundoperand | |
DE69521507T2 (de) | System und verfahren zur auf einem modell basierender prüfung von lokalen entwurfsregeln | |
CH633643A5 (de) | Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage. | |
DE102017109239A1 (de) | Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE69229771T2 (de) | Datenverarbeitungsverfahren und -vorrichtung | |
DE69518453T2 (de) | Verfahren und System zum Dynamischen Auswählen eines Kommunikationsmodus | |
EP2386949A1 (de) | Verfahren und Vorrichtung zum zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur | |
DE69230118T2 (de) | Prozessor mit hierarchischer Struktur | |
DE102022106423A1 (de) | Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA | |
DE69712687T2 (de) | Sprachbearbeitende Einheit und Verfahren zur Übersetzung eines Quellprogrammes in einer Objektmoduldatei | |
DE3587517T2 (de) | Paralleler Registertransfermechanismus für Reduktionsprozessor zur Durchführung von Programmen die als binäre Graphen gespeichert sind und die Anwendungssprachenkodes ohne Variablen verwenden. | |
DE69430742T2 (de) | System zur konvertierung von schleifenfunktionen in fortsetzungsübertragungsstil | |
DE10063915A1 (de) | Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt | |
DE102013114508B4 (de) | Blockbasierte Signalverarbeitung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |