DE2425380A1 - Verfahren und datenverarbeitungsanlage zur parallelen ausfuehrung von verarbeitungsoperationen - Google Patents

Verfahren und datenverarbeitungsanlage zur parallelen ausfuehrung von verarbeitungsoperationen

Info

Publication number
DE2425380A1
DE2425380A1 DE19742425380 DE2425380A DE2425380A1 DE 2425380 A1 DE2425380 A1 DE 2425380A1 DE 19742425380 DE19742425380 DE 19742425380 DE 2425380 A DE2425380 A DE 2425380A DE 2425380 A1 DE2425380 A1 DE 2425380A1
Authority
DE
Germany
Prior art keywords
memory
address
instruction
command
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19742425380
Other languages
English (en)
Other versions
DE2425380C2 (de
Inventor
Gernot Dr Ing Urschler
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 DE2425380A1 publication Critical patent/DE2425380A1/de
Application granted granted Critical
Publication of DE2425380C2 publication Critical patent/DE2425380C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

Böblingen, 17. Mai 1974
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
Amtl. Aktenzeichen: . Neuanmeldung Aktenzeichen der Anmelderin: GE 972 502
Verfahren und Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen
Die Erfindung betrifft ein Verfahren zur parallelen Ausführung von Operationen in einer Datenverarbeitungsanlage mit einer Anzahl von Funktionseinheiten, die eine zeitlich überlappte Verarbeitung von Daten entsprechend einer vorgegebenen Befehlsfolge gestatten. Die Erfindung betrifft ferner eine Datenverarbeitungsanlage zur Ausführung dieses Verfahrens.
Programme für bekannte Datenverarbeitungsanlagen sehen vor, daß eine Datenverarbeitungsaufgabe in eine Sequenz von Einzeloperationen zerlegt wird. Diese zumeist sehr zahlreichen Einzeloperationen werden nacheinander ausgeführt, ggf. in zeitlicher Verschachtelung mit anderen Programmen (Multiprogramming) oder parallel zum Operationsablauf anderer Programme (Multiprocessing), sofern die benutzte Datenverarbeitungsanlage mehrere parallel ansprechbare Verarbeitungseinheiten besitzt.
Jedes dieser Programme hat ungeachtet seiner sequentiellen Struktur die Eigenschaft, daß wenigstens ein Teil der im Programm enthaltenen Einzeloperationen parallel ausführbar ist. Es sind bereits Datenverarbeitungsanlagen bekanntgeworden, die diesem Umstand Rechnung tragen. Eine bekannte Datenverarbeitungsanlage
509809/0678
dieser Art besteht aus mehreren selbständigen Verarbeitungseinheiten und mehreren selbständigen Speichereinheiten, die als assoziative Speicher ausgebildet sind (deutsches Patent 1 474 047). Bei dieser Datenverarbeitungsanlage werden die Befehlswörter des Programms in beliebiger Reihenfolge in die Speichereinheiten eingegeben. Jedes Befehls- und Datenwort enthält ein Kennfeld, das durch assoziativen Aufruf zugänglich ist und dessen Codierung die Position des betreffenden Befehls- oder Datenwortes im binären Programmbaum definiert. In einer der eigentlichen Programmausführung vorausgehenden Ladephase werden die zu verarbeitenden Datenwörter mit den Kennfeldern der ihre Verarbeitung steuernden Befehle geladen. Die auf diese Weise vorbereiteten Datenwörter werden mit einem Verarbeitungsbereit-Kennzeichen versehen. Während der Verarbeitung werden die Speichereinheiten laufend nach verarbeitungsbereiten Datenwörtern durchsucht. Werden solche Datenwörter gefunden, so gelangen sie zur zugeordneten Verarbeitungseinheit, die eine Bewertungsschaltung aufweist, welche das Programmbaum-Kennfeld des betreffenden Datenwortes auswertet. Aus diesem Kennfeld wird das Programmbaum-Kennfeld des zugehörigen, die Verarbeitung des betreffenden Datenwortes steuernden Befehlswortes sowie das Kennfeld eines weiteren Datenwortes abgeleitet, das gemeinsam mit dem erstgenannten Datenwort zu verarbeiten ist. Hit den . abgeleiteten Kennfeldern erfolgt ein assoziativer Speicherzugriff zur Entnahme des Befehlswortes und des zweiten Datenwortes, wonach die Verarbeitung erfolgt.
Bei dieser Datenverarbeitungsanlage werden die einzelnen Programmbefehle asynchron und abweichend von,einer vorgegebenen Programmschritt-Sequenz ausgeführt. Da mehrere Verarbeitungseinheiten zur Aufnahme und Ausführung verarbeitungsbereiter Programmbefehle vorhanden sind, erfolgt die.Programmausführung wenigstens teilweise parallel. Dabei werden parallel ausführbare Programmbefehle automatisch ermittelt und in Verarbeitung genommen.
509809/0678
Die bekannte Datenverarbeitungsanlage hat den Nachteil, daß sie die Verwendung von teuren assoziativen Speichern erfordert. Außerdem ist die Erkennung von parallel ausführbaren Operationen auf die Zahl der im Programm enthaltenen Befehle beschränkt. Bei innerhalb der Befehlsfolge auftretenden Iterationsschleifen/ die eine vorgegebene Operationsfolge aufweisen und während der Ausführung einer Verarbeitungsaufgäbe häufig durchlaufen werden, kann eine Parallelität jeweils nur innerhalb eines Schleifendurchlauf es festgestellt werden.
Eine andere bekannte Datenverarbeitungsanlage weist ein Operationsfolgesteuerwerk auf, das zur Feststellung und Steuerung der Parallelität während einer Übersetzungsphase dient, bevor die eigentliche Programmausführung beginnt (deutsche Offenlegungsschrift 2 004 886). Aus dem zu übersetzenden Befehlsfolgen wird eine Verfügbarkeitsmatrix abgeleitet, deren Zeilendimension den Befehlsausgangen und deren Spaltendimension den einzelnen Befehlen der Folge zugeordnet sind. Desgleichen wird für die Eingabebefehle eine Eingangsanforderungsmatrix gebildet, die der Verftigbarkeitsmatrix ähnlich ist. Aus den Verzweigungsbefehlen werden jeweils Hauptbefehlsfolgen ausgewählt, die dem Programmablauf zugrunde gelegt werden. Die Einträge in den beiden vorgenannten Matrizen werden miteinander kombiniert, und das Resultat wird mit den Einträgen der Hauptzweige zu einer Reihenfolgematrix verknüpft, welche die gleichzeitig ausführbaren Operationen bestimmt. Zur Bildung, Speicherung und Verarbeitung der Matrizen dienen Matrixeinrichtungen, die mit Spalten- und Zeilen-Vektorregistern verbunden sind. Die Spalten- und Zeilenzahl der Matrixeinrichtungen und die Stellenzahl der Vektorregister muß dabei jeweils der Anzahl der im zu behandelnden Programmteil enthaltenen Befehle entsprechen.
Bei dieser Einrichtung erfolgt die Steuerung der Operationsfolge in Abhängigkeit von Matrizen, die zusätzlich zu den Programmbefehlen zur Feststellung der Ausführbarkeit, zur Vorbereitung der Ausführung und zur Steuerung der Ausführung gebildet werden.
509809/0678
Erzeugung, Speicherung und Umformung dieser Matrizen erfordern ebenso wie die unter ihren Einfluß stehenden Folgesteuerwerke einen erheblichen Einrichtungsaufwand. Außerdem ist auch diese Anlage in der Feststellung der Parallelität auf die jeweilige Programmstruktür und die Anzahl der in ihr enthaltenen Befehle beschränkt. Eine vorausschauende Erfassung der Parallelität über mehrere Iterationsschleifen hinweg ist auch bei dieser Anlage nicht möglich.
Die Erfindung hat die Aufgabe, eine Datenverarbeitungsanlage anzugeben, die eine parallele Ausführbarkeit von einer sequentiellen Programmstruktur gehorchenden Verarbeitungsoperationen gestattet und die einen verminderten Einrichtungsaufwand erfordert sowie eine höhere Wirksamkeit bei der Feststellung und Vorbereitung der parallel ausführbaren Operationen aufweist.
Die Erfindung und verschiedene vorteilhafte Weiterbildungen derselben sind in den Patentansprüchen gekennzeichnet.
Nachfolgend ist ein Ausführungsbeispiel der Erfindung anhand von Zeichnungen erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer erfindungsgemäß ausgebildeten Datenverarbeitungsanlage,
Fign. 2 u. 3 Flußdiagramme eines Anwendungsbeispiels für das
erfindungsgemäße Verfahren und die Datenverarbeitungsanlage von Fig. 1,
Fign. 4 u. 5 Beispiele für die Speicherbelegung in der Datenverarbeitungsanlage von Fig. 1 bei der Ausführung des Anwendungsbeispiels gemäß Fig. 3,
Fig. 6 ein Blockdiagramm des Befehlsverteilers der
Datenverarbeitungsanlage in Fig. 1,
509809/0678
Flg. 7 ein Blockdiagramm einer Funktionseinheit, wie
sie In der Datenverarbeitungsanlage von Flg. 1 verwendbar 1st,
Flg. 8 ein Blockdiagramm eines Ausführungsbeispiels der Ersetzungeeinheit In der Anlage von Flg. 1,
Flg. 9 ein Blockdiagramm eines Teiles der Steuerschaltungen für den Anweisungsspeicher in der Datenverarbeitungsanlage von Fig. lr
Fig. 10 ein Belegungsbeispiel für den Expansionsspeicher
in der Anlage von Fig. 1,
Fig. 11 ein Blockdiagramm einer Ausführungsform der
Ubertragungseinheit, wie sie in der Anlage von Fig. 1 verwendbar ist, und
Fign. 12A u. 12B die Darstellung eines Ablaufgraphen, zur Erläuterung der in der Anlage von Fig. 1 stattfindenden Operationsschritte bei der Ausführung der Datenverarbeitungsaufgabe gemäß Fig. 3.
Die in Fig. 1 dargestellte Datenverarbeitungsanlage weist eine Anzahl Funktionseinheiten 11 bis 13 auf, die voneinander unabhängig und parallel tätig sein können. Diese Funktionseinheiten sind zur Ausführung von Operationen geeignet, die von den Befehlen im zu verarbeitenden Programm gesteuert werden. Die Funktionseinheiten 11 bis 13 können untereinander identisch und zur Ausführung von arithmetischen Operationen, wie Addition, Subtraktion, Multiplikation und Division, sowie zur Ausführung logischer Verknüpfungen, wie Vergleichsoperationen, UND-, ODER-, EXKLUSIV-ODER-Verknüpfungen, eingerichtet sein. Die Funktionseinheiten 11 bis 13 können aber auch voneinander abweichende Einheiten sein, von denen jede zur Ausführung einer speziellen Operation oder einer bestimmten Klasse von Operationen ausgebildet
509809/0878
ist. Jede der Funktionseinheiten kann ferner auch in Sektionen unterteilt sein, die unabhängig voneinander zur parallelen Ausführung unterschiedlicher arithmetischer oder logischer Operationen betrieben werden können. So kann z.B. eine Funktionseinheit eine Sektion zur Ausführung von Additionen und eine andere Sektion zur Ausführung von Multiplikationen enthalten, die beide unabhängig voneinander, jedoch in zeitlicher Überlappung arbeiten.
Die Funktionseinheiten 11 bis 13 erhalten Befehle zusammen mit den zu verarbeitenden Operanden von einem Befehlsverteiler 15 über Eingaberegistersätze 16 bis 18 zugeführt. Die in den Funktionseinheiten -erzeugten Resultate gelangen zu Ausgaberegistersätzen 21 bis 23. Im erläuterten Ausführungsbeispiel sind der einfachen Darstellung halber nur drei Funktionseinheiten mit je einem Satz Eingaberegister, z.B. 16, und je einem Satz Ausgaberegister, z.B. 21, dargestellt. In der Praxis kann die Zahl der an den Befehlsverteiler 15 angeschlossenen Funktionseinheiten mit zugehörigen Sätzen von Eingaberegistern und Ausgaberegistern erheblich größer sein, wenn dies der Anfall der zu verarbeitenden Daten geboten erscheinen läßt.
Der Befehlsverteiler erhält verarbeitungsbereite Befehle und Operanden von einem Anweisungsspeicher 25 zugeführt, der über eine Ladeeinheit 26 mit einem Programmspeicher 27 verbunden ist. Dieser Speicher enthält alle Programme und Unterprogramme, die zur Ausführung einer bestimmten Verarbeitungsaufgabe notwendig sind. Die zu verarbeitenden Daten werden aus einem Dateneingabespeicher 28 erhalten, und die bei der Ausführung ermittelten Resultatdaten werden einem Datenausgabespeicher 32 zugeführt. Beide Speicher 28 und 32 stehen über noch zu beschreibende Einheiten mit dem Befehlsverteiler 15 bzw. dem Anweisungsspeicher in Verbindung, wo die zu verarbeitenden Daten den die Verarbeitung steuernden Befehlen zugeordnet werden und von wo die Resultatdaten über eine Ausgabeeinheit 30, der ein Satz Ausgaberegister vorgeschaltet ist, dem Datenausgabespeicher 32 zugeleitet werden.
509809/0678
Die im Speicher 27 gespeicherten Programme und Unterprogramme
bestehen aus Befehlsfolgen, wie sie nun anhand eines Verarbeitungsbeispiels erläutert werden sollen.
N'
Als Beispiel sei y = J χ zu berechnen, wobei N ein beliebiger
x=l
positiv ganzzahliger Wert sein kann und die Quadratwurzel aus χ mit einer Fehlergenauigkeit von f zu bestimmen ist. Diese Aufgabe kann in bekannter Weise unter Verwendung des aus Fig. 2 ersichtlichen Algorithmus gelöst werden. Hierin sind F eine Hilfsvariable und η ein Laufwert zur Zählung der Iterationsdurchlaufe, der am Beginn der Verarbeitung auf 1 voreingestellt wird. Dieser Algorithmus wird zur Ausführung in der dargestellten Datenverarbeitungsanlage entsprechend der aus Fig. 3 ersichtlichen Weise umgeformt, indem zusätzliche Hilfsyariable v, w, p, q eingeführt werden. Die Darstellung gemäß Fig. 3 kann durch folgendes Programm ausgedrückt werden (die entsprechende Programmumformung ist nicht Gegenstand dieser Erfindung).
V:: = jread f [from Rj ; read N [from R2 ]; η: = 1; y_: = O;
S[n,f,yo,N; y]; write y [to WlJ ' (ül)
S[n,f,yo,N; y]:: = [xQ: = n; R[xQ,n,f; x, ];
Y1'- = yo +xT' q;=n=N; Q(q) [η,ί^,Ν; y l]
RlxQ,n,f: x]: := {vo:=x£; VjI-Vq-π; w:=2xq; Ft
X1I=X0-F; v:= F ; p:=v<f; P(p) [χ^η,ί; χ]]
P(p) Ix0,n,f; x]: :«= ·
P=I ■*- fx J=X0] (Ü4)
p=2 + {R[xo,n,f; x]}
Q(q) ino,f,yo,N: yji:«
q=i * {y:=y0]
q=2 ♦ [n:=no+l; S[n,f,yo,N; y]}
509809/0678
Hierin bezeichnen V das Hauptprogramm (Hauptprozedur) und S, R, P, Q Unterprogramme (Subroutinen). Jeder Befehl (Instruktion) ist in bekannter Form durch ein Semikolon begrenzt. Die Befehle zur Eingabe von Daten haben die Form "read f[from Rl]". Dies bedeutet, daß der Fehlergenauigkeitswert f von der Adresse Rl des Eingabespeichers 28 zu lesen und der Verarbeitung zuzuführen ist. Dementsprechend stellt der Befehl "write[y to Wl]" einen Ausgabefehl dar, der besagt, daß der Resultatwert y auf die symbolisch bezeichnete Adresse Wl im Ausgabespeicher 32 zu übertragen ist.
Die Befehle der Form n:=l sind Wertzuweisungsbefehle, die veranlassen, daß der rechts vom Zeichen ":=" angegebene Wert oder das Resultat der dort stehenden Werteverknüpfung in eine Speicheradresse zu übertragen ist, die durch das links vom Zeichen ";=" stehende Symbol bezeichnet ist. Befehle des Typs S[n,f,y_,N; y] bezeichnen Prozeduren (Unterprogramme, Subroutinen), die innerhalb der Hauptprozedur, wie im Falle S, oder innerhalb einer anderen übergeordneten Prozedur zu verarbeiten sind (Fig. 3). Hierbei sind die zwischen den eckigen Klammern stehenden Buchstaben die Namen für die innerhalb der Hauptprozedur oder der jeweiligen übergeordneten Prozedur zu verarbeitenden Variablen. Die innerhalb der eckigen Klammern vor dem Doppelpunkt stehenden Variablen sind sogenannte Eingabevariable, d.h. Variable, die für die auszuführende Berechnung als Eingabewerte dienen, während die hinter dem Doppelpunkt stehenden Variablen sogenannte Ausgabevariable sind, d.h. Variable, die die errechneten Resultatwerte repräsentieren.
Die Prozeduren P und Q beinhalten jeweils zwei Alternativen, deren Wahl von einer hinter den Prozedurnamen in Klammern stehenden Eingabevariablen abhängt. Im Falle der Prozedur Q ist dies die Variable q und im Falle der Prozedur P ist dies die Variable p. Die beiden Alternativen sind mit 1 und 2 bezeichnet, wobei der Wert 1 einer Ja-Entscheidung und der Wert 2 einer Nein-Entscheidung entspricht.
5098Ö9/0678
I I ■ I ·
Das oben angegebene Programm hat die Eigenschaft, daß in ihm jede Variable höchstens einmal beschrieben wird. Die Anzahl" der Leeevorgänge von ein und derselben Variablen ist hingegen keiner Beschränkung unterworfen. Hierbei bedeutet "Lesen einer Variablen" das übertragen des Wertes der betreffenden Variablen an eine Speichereteile, wo dieser Wert während der Verarbeitung, benötigt wird. Derartige Übertragungen, die neben einem Lesevorgang auch einen Schreibvorgang umfassen, können im Programm durch Übertragungsbefehle ausgedrückt werden.
Eine solche Wertübertragung läßt sich in einfacher Weise dadurch verdeutlichen, daß die Verwendungsatellen von ein und derselben Variablen ν durch Umbenennungen V1,*..,ν voneinander unterschieden werden. Dementsprechend wird dem Programm ein Verteilerbefehl ν.,...,ν :«v hinzugefügt wird, der die Bedeutung hat, daß der Wert von ν nach den Speicherstellen von v.,...,v hin zu übertragen ist. Durch Einführung der Verteilerbefehle wird eine eindeutige Beziehung zwischen der Definition einer Variablen innerhalb des Programms und dem Ort ihrer Verwendung bei der Programmausführung angegeben. Bei der gleichzeitigen Ausführung der Befehle eines Programms kann es vorkommen, daß eine Variable gleichzeitig zur Ausführung von zwei Befehlen benötigt wird. Beispielsweise kann zwischen dem Befehl a:«f(b) und der Prozedur E[a: c]
a der Fall auftreten, daß/gleichzeitig sowohl für die Wertzuweisung ' als auch für die Ausführung der Prozedur E benötigt werden kann.
Durch Einführung von Pufferbefehlen läßt sich eine Unabhängigkeit in der Ausführung derartiger Befehle erreichen. Diese Pufferbefehle haben z.B. die Form:
a:=f(b); a';=a; E[a': c]
Durch diesen Vorgang sind die zu puffernden Instruktionen völlig unabhängig voneinander geworden, was für die Ausführbarkeit der einzelnen Befehle von Bedeutung ist, wie in einem späteren Abschnitt beschrieben wird. Falls ein eine Eingabevariable definierender Befehl bereits ein einfacher Übertragungsbefehl der Art a:=b ist, erübrigt sich die Einführung eines Pufferbefehls.
509809/0678
Das oben bei Ul bis 175 angeführte Programm kann durch Einführung von Verteilerbefehlen und Pufferbefehlen der erläuterten Art in die folgende Form umgeschrieben werden;
V::» [read £[from Rl]; read N[from R2]; n:=l; Y0J=O; (U6) S[nff,y0,N: y], write y[to Wl]]
S[n,f,yQfN: y] ::» (x^n^n^n^-n; f^f^-f; (U7)
Rtxoi'nii'fn: xi5> yi:myo+xi;
?V 2i2 iriWV
n31,f21,y11#N21: y]}
R[xQ,n,fj x]::- ^xlfx2,x3:«x0; nlfn2:=n; f^f^f; (U8)
2
V0:"Xly Vl
FlfF2:»F; X1I-X3-F1^ Vi-F3 ; pj Xir"Xl? "211^'* f21!eV P(P)[xll'n21'f21
,η,ίϊ χ]::- (U9)
p-l * 0]
p«2 ■*■ (R[xo,n,f: x]]
Q(q) [no,ffyo,N: yl::» (UlO)
q-1 ♦ (yi-Yq] q-2 ♦ (n:-no+lj n^.ti; βίη^,γ^Ν: yl)
Die so erhaltene Programmform erlaubt es, die Variablen durch Speicherplätze zu ersetzen. Zu diesem Zweck wird jedem Auftreten einer Variablen eine bestimmte Speicheradresse zugeordnet. Diese Adresse ist jeweils relativ zum Anfang der entsprechenden Prozedur oder Prozeduralternative zu verstehen. Außerdem wird jeder Prozeduralternative ein formaler Adressenvektor vorangestellt,
509809/0678
der für die einzelnen externen Parameter (Variable innerhalb eines Unterprogramms oder einer Prozeduralternative, denen Variable aus der betreffenden Hauptprozedur oder übergeordneten Prozedur zugewiesen werden, innerhalb der die Subroutine oder Prozeduralternative auszuführen ist) entweder die Adresse der Speicherstelle angibt, an welcher der Parameter im Programmtext auftritt, oder der durch eine Leeradresse anzeigt, daß der betreffende Parameter in dieser Prozeduralternative nicht vorkommt.
Alle anderen von externen Parametern verschiedenen Variablen treten in einer Prozeduralternative jeweils paarweise auf, es können die folgenden beiden Fälle unterschieden werden:
Die Variable (z.B. a) kommt einmal auf der linken Seite (z.B. a:=f(b) oder read a [from R ]) und einmal auf der rechten Seite (z.B. c:=g(a) oder write a [to W] ) eines Basisbefehls (Zuweisungs-, oder Lese- oder Schreibbefehl) vor. In diesem Falle wird die am Ort der Definition im Programm stehende Variable durch die relative Adresse der Stelle ersetzt, an der die Variable im Programm "rechtsseitig" auftritt. Dies wird beispielsweise durch a:=f(b) und c:»g(a) bezeichnet, wobei a eine Adresse darstellt und a die Bedeutung der dieser Adresse entsprechenden platzhaltenden Leerstelle hat.
Der zweite Fall besteht darin, daß die Variable einerseits als interner Parameter und andererseits als rechter oder linker Teil eines Basisbefehls auftreten kann. In diesem Falle wird der interne Parameter durch die Adresse des Ortes ersetzt, an dem der Parameter im entsprechenden Basisbefehl auftritt. Auch hier wird es sich anfangs um eine platzhaltende Leerstelle handeln.
Insgesamt ergibt sich für das obige Programm die folgende Darstellung, in der Speicheradressen jeweils durch einen über dem betreffenden Variablensymbol befindlichen nach rechts gerichteten Pfeil markiert und Leeradressen durch einen freien Platz mit
509809/0678
hochgestelltem Pfeil dargestellt sind (durch Unterstreichung im Adressvektor sind ferner solche Eingabevariablen gekennzeichnet, die innerhalb des Programmtextes wiederum als Parameter auftreten; sie werden als indirekte Eingabevariablen von den direkten, nicht unterstrichen, unterschieden):
7 ::= jread f Efrom Rl ]; read N Jfrom R2 ]; n;=l; yo:=O; fc "n, f*,y^ ,ftf: y"]j write y fco Wl ];}
S::= jn,i,yQ,U: y] [χ^,ή^,η^,η^-η; ^,f^^f;
-► -»■
Ni'N2:a=N; xoi!=xo; ηιι:=ηι; fn:=fi?
^rT11 ,^11:X1 3; γχ -'
; q": =n 2 =Ni'
n31!=n3; £21!=f2; V11:=V1; N21:=N2; Q(q) ^,^rY^r^ Y l]
(Uli)
(U12)
R::= [χ ,n,f: x] * 2 +
vo* χι' νι
xn:=x10; n21:=n2; f21:=f2; P (p)
(U13)
p=2 Q(q) : :·
q=2
fx:=xo]
[Rixo,n,f: x]j
Y0, 9
> Y0
lff,y0,N: y]]
509809/0678
(Ü14)
(U15)
Im obigen Programm ist ein Basisbefehl ausführbar, wenn diejenigen Stellen eines solchen Befehls, die Werte zugewiesen erhalten, durch Adressen dargestellt sind, und wenn diejenigen Stellen eines solchen Befehls, die eine Wertzuführung veranlassen, durch Werte dargestellt sind. Befehle, die eine Erweiterung der laufenden Prozedur durch eine Prozeduralternative bewirken, sind ausführbar, wenn die Eingabevariablen des betreffenden Befehls mit einem Wert und alle Parameter des Befehls mit Adressen versehen sind. Derartige Befehle werden im folgenden auch Erweiterungsbefehle genannt, da sie eine Prozedur jeweils um eine von zwei Prozeduralternativen erweitern.
Ein Basisbefehl wird ausgeführt, indem der auf der rechten Seite des Befehls befindliche Ausdruck ausgewertet (berechnet) wird und der sich dabei ergebende Resultatwert an die auf der linken Seite des Befehls angegebene Speicheradresse übertragen wird. Die Ausführung eines Erweiterungsbefehls geschieht in der folgenden Weise:
Aufgrund des Wertes der Eingabevariablen wird die entsprechende Prozeduralternative ausgewählt, und es wird ihr ein bestimmter Speicherplatz zugewiesen. Dabei erfolgt eine Ersetzung der im Programmtext auftretenden relativen Adressen durch absolute Adressen, die sich aus der tatsächlichen Speicherung im Anweisungsspeicher 25 ergeben. Der entsprechende formale Adressenvektor wird ebenfalls mit absoluten Adressen gefüllt, die aus der Einspeicherung der Befehle in den Anweisungsspeicher 25 erhalten werden.
Die durch den formalen Adressenvektor gegebenen absoluten Adressen der direkten Eingangsvariablen werden auf die Adressen übertragen, die den Parametern entsprechen, welche von dem aufrufenden Erweiterungsbefehl angegeben werden. In anderen Worten, wenn ein Erweiterungsbefehl die Form E[a:b]hat und der formale Adressenvektor mit den absoluten Adressen durch [£:<$] dargestellt ist, dann wird die Adresse c auf den Speicherplatz mit
509809/0678
der Adresse a übertragen. Bei indirekten Eingangsvariablen und Ausgangsvariablen erfolgt der Übertragungsvorgang in umgekehrter Richtung. Dementsprechend wird in obigem Beispiel die Adresse b auf den Speicherplatz mit der Adresse α übertragen.
Durch die oben erläuterte Modifizierung des als Anwendungsbeispiel angegebenen Programms ergibt sich, daß die Ausführbarkeit von Befehlen völlig lokal ohne Bezugnahme auf an anderen Stellen gespeicherte Werte festgestellt werden kann, wie es beim Betrieb der Datenverarbeitungsanlage von Fig. 1 geschieht..Die oben erläuterten Programmumsetzungen können unter Verwendung eines geeigneten Obersetzerprogramms (Compilers) erfolgen, der nicht Gegenstand vorliegender Erfindung ist.
Die Funktion der Speichereinheiten und der übrigen Einheiten der.in Fig. 1 dargestellten Datenverarbeitungsanlage wird nachfolgend unter Bezugnahme auf das Beispiel-Programm näher erläutert. Der Programmspeicher 27 enthält das oben mit Uli bis Ul5 bezeichnete Programm. In diesem Speicher befindet sich für jede Prozedur oder Prozeduralternative ein Eintrag, der aus einem Prozedurnamen, z.B. P, einer Zahl, die die Prozeduralternative angibt einen Adressenvektor und dem Text des Programmes. In Fig. 4 ist ein Beispiel eines Eintrags im Speicher 27 dargestellt, das der Prozeduralternative P 2 des oben erläuterten Rechenbeispiels entspricht. Die Adressen im Adressenvektorfeld sind relativ zum jeweiligen Programmtext angegeben, der jeweils mit der Adresse O beginnt. Der Speicher 27 kann in für sich bekannter Heise als Assoziativer Speicher ausgebildet sein, der eine Inhaltsadressierung über die den Prozedurnamen enthaltende Speicherfeldspalte gestattet. Sofern dagegen der Speicher 27 als wahlfrei adressierbarer Speicher ausgebildet ist, kann er mit dem Eingabespeicher 28 zu einem einheitlichen Speicher vereinigt sein, in dem ein Bereich für die Dateneingabe und ein anderer Bereich für die Programmspeicherung reserviert ist.
über die Ladeeinheit 26 werden aus dem Programmspeicher 27 in GE 972 502 509 809/06 7 8
noch zu beschreibender Weise Programmbefehle in den Anweisungsspeicher 25 übertragen. Diese Befehle sind entweder Zuweisungsbefehle (z.B. ih=vl/W) oder Eingabe/Ausgabebefehle (z.B. read f [from Rl]) oder Expansionsbefehle (P(b) Ix11^2I'^21 ; ^* Die angegebenen Adressen sind absolute Adressen des Anweisungsspeichers 25. Diese Adressen werden bei der übertragung der Befehle in den Speicher 25 gebildet und an den zuvor durch die Adressensymbole bezeichneten Plätzen gespeichert. Die durch eine solche Adresse bezeichnete Speicherstelle ist zunächst leer und wird erst dann gefüllt, wenn eine WertZuweisung erfolgt. Die im Speicher 25 zu speichernden Einträge werden nach ausführbaren und nicht ausführbaren Befehlen unterschieden. Zu diesem Zweck wird jedem Befehl ein Steuerfeld vorangestellt, das ein Kennzeichen für die Ausführbarkeit oder Nichtausführbarkeit enthält. Im Ausführungsbeispiel wird folgende Kennzeichnung benutzt:
<ID>= ausführbar
(ru>= nicht ausführbar.
Das Steuerfeld dient zur Entnahme der im Speicher 25 enthaltenen Einträge. Wenn ein Zugriff zu den im Speicher 25 enthaltenen Einträgen mit dem Suchargument ID durchgeführt wird, werden alle verarbeitungsbereiten Befehle dem Speicher entnommen und dem Befehlsverteiler 15 zugeführt.
Der Befehlsverteiler 15 interpretiert die ihm zugeführten Befehle und verteilt diese je nach Befehlsart an nachgeschaltete Einheiten. Es werden folgende Fälle unterschieden:
a) Wenn es sich um einen Expansionsbefehl handelt, erfolgt eine übertragung dieses Befehls zu einem Expansionsspeicher 34 in Form eines Eintrages, der aus folgenden Elementen besteht: Programmname, Alternativennummer, tatsächlicher Adressenvektor und einem zunächst nur Leerstellen enthaltenden Feld für die Aufnahme des formalen Adressenvektors. Die Steuerung geht daraufhin an die Ladeeinheit 26 über, die
509809/0678
entsprechend dem Eintrag im Speicher 34 eine erneute Entnahme einer Prozedur aus dem Programmspeicher 27 zur übertragung in den Anweisungsspeicher 25 durchführt.
b) Handelt es sich bei dem dem Befehlsverteiler 15 zugeführten Befehl um einen Verteilerbefehl der Form a.,...,a :=v, so wird dieser Befehl über ein Eingaberegister 37 einer Ersetzungseinheit 38 zugeführt und die Steuerung an diese Einheit abgegeben.
c) Handelt es sich um einen Lesebefehl, so bildet der Befehlsverteiler 15 ein Adressenpaar der Form [«£,£], worin £ eine Adresse des Dateneingabespeichers 28 ist und a eine Adresse des Anweisungsspeichers 25 ist, auf welche der aus dem Dateneingabespeicher 28 zu entnehmende Wert zu übertragen ist. Beide Adressen werden dem jeweiligen Lesebefehl entnommen.
Im Belegungsbeispiel für den Speicher 25 gemäß Fig. 5 wären dies beim Lesebefehl des ersten Eintrags für a die Adresse i und für b die Adresse Rl. Dieses Adressenpaar wird über eine Leitung zu einem Leseregister 42 übertragen. Daraufhin wird die Steuerung an eine Eingabeeinheit 44 abgegeben, welche eine entsprechende Datenentnahme im Speicher 28 veranlaßt.
d) Ist der dem Befehlsverteiler 15 zugeführte Befehl ein Schreibbefehl, wie er beispielsweise in Zeile 6 des Speicherbelegungsbeispiels von Fig. 5 dargestellt ist, so leitet der Befehlsverteiler aus dem Befehl ein entsprechendes Wertepaar [v,a] ab. In diesem Wertepaar stellt ν einen Resultatwert dar, der zum Speicher 32 zu übertragen ist, und a ist eine Adresse im letztgenannten Speicher. Das Wertepaar wird über eine Leitung 49 dem Schreibregister 31 übertragen, wonach die Steuerung an die Ausgabeeinheit 30 abgegeben wird, die daraufhin eine Werteintragung im Datenausgabespeicher 32 vornimmt.
e) Wenn der dem Befehlsverteiler 15 zugeführte Befehl ein sich
509809/0678
t I • I till
- 17 -
von einem Verteilerbefehl unterscheidender Zuweisungsbefehl ist, dann wird von Befehlsverteiler 15 eine der Leitungen 46 bis 48 zu einer dem Typ diese* Befehls entsprechenden Funktionseinheit der Funktionseinheiten 11 bis 13 ausgewählt. Die auszuwählende Funktionseinheit muß aufnahmebereit und in der Lage sein, den Befehl auszuführen, über die ausgewählte Leitung 46, 47 oder 48 wird ein Eintrag im zugeordneten Eingangsregister 16, 17 oder 18 vorgenommen, der aus einer Zieladresse, dem Operationscode und den zu verarbeitenden Operanden besteht. Ein Beispiel für einen derartigen Eintrag zeigt die Fig. 7 in Form eines Belegungsbeispiels für das Eingaberegister 16. Anschließend wird die Steuerung an die ausgewählte Funktionseinheit abgegeben zur Ausführung des Befehls.
In allen obengenannten Fällen a) bis e) wird anschließend an die Operation des Befehlsverteilers 15 der dieser Einheit zugeführte Befehl im Anweisungsspeicher 25 gelöscht. Die Unterscheidung, um welchen Befehlstyp es sich handelt, trifft der Befehlsverteiler mit Hilfe einer Decodier-Logik, welcher das zu interpretierende Befehlsformat zugeführt wird.
Die Fig. 6 zeigt ein Beispiel für den Aufbau des Befehlsverteilers 15. Er besitzt ein Befehlsregister 120 bzw. einen Satz derartiger Register. Der Ausgang des Register 120 ist über eine Leitung 123 an eine Gruppe von Torschaltungen 121 und an einen Befehlsformat-Decodierer 122 angeschlossen, der das Format des aus dem Anweisungsspeicher 25 in das Register 120 übertragenen Befehls analysiert und dementsprechend Signale auf seinen Ausgangsleitungen 134 erzeugt. Die jeweils signalführende Leitung der Ausgangsleitungen 134 öffnet eines der Tore 121, das als Vielfalchtorschaltung ausgebildet ist, so daß der im Register 120 enthaltene Befehl über eine der Sammelleitungen 35, 36, 41 oder 49 zu den Speichern 34, 37, 42 oder 31 übertragen werden. Welche dieser Leitungen ausgewählt wird, legt der Decodierer 122 entsprechend dem Format des im Register 120 enthaltenen
509809/0 6 78
Befehle fest. Wenn es sich dabei um einen Zuweisungsbefehl handelt, liefert der Decodierer 122 ein Signal zum öffnen der Vielfach-Torschaltung 124. An den Ausgang dieser Torschaltung ist eine Gruppe von Torschaltungen 125 angeschlossen, die ausgangsseitig nit den Sammelleitungen 46, 47 und 48 in Verbindung stehen. Letztere Sammelleitungen stellen die Eingänge der Register 16, 17 und 18 in Fig. 1 dar. Die Torschaltungen 125 stehen unter Steuerung eines Abtastzählers 127 und eines Frei/Besetzt-Registers 128. Letzteres Register erhält von den Funktionseinheiten 11, 12 und 13 Besetzt-Anzeigesignale, wenn die betreffende Einheit mit der Ausführung einer Verarbeitungsaufgabe beschäftigt ist. Jede Bitstelle des Registers 128 ist einer der Funktionseinheiten 11 bis 13 zugeordnet. Z.B. ist die Funktionseinheit 11 über eine Frei/Besetzt-Anzeigeleitung 56 (Fig. 7) an die äußerste rechte Bitstelle des Frei/Besetzt-Registers 128 angeschlossen. Jede der Bitsteilen im Register weist eine Ausgangsleitung auf, die jeweils dann signalführend ist, wenn in die betreffende Bitstelle kein Besetzt-Anzeigesignal von der zugehörigen Funktionseinheit eingespeichert wurde. Diese Ausgangssignale bilden zusammen mit Abtaststeuersignalen vom Abtastzähler 127 die Eingänge von UND-Schaltungen 126. Der Abtastzähler 127 ist als Ringzähler geschaltet und erhält Taktsignale T15 zugeführt. Hierzu dient eine mit den Ausgängen der UND-Schaltungen 126 verbundene ODER-Schaltung 131, eine Inverterschaltung 132 und eine Torschaltung 133, wenn keine der UND-Schaltungen 126 ein Ausgangssignal erzeugt. Befindet sich beispielsweise die äußerste rechte Bitstelle des Besetzt-Registers 128 im Frei-Zustand und der Abtastzähler 127 in seiner äußersten rechten Abtastposition, darin ist die UND-Schaltung 130 geöffnet und liefert ein Steuersignal zur Torschaltung 129. Hierdurch wird der im Befehlseingaberegister 120 befindliche Befehl über die Sammelleitung 123, die Vielfach-Torschaltungen 124 und 129 und die Sammelleitung 46 zum Eingangsregister 16 der Funktionseinheit 11 übertragen.
Der untere Teil der Schaltung von Fig. 6 dient somit zur laufenden
509809/0678
Abtastung der Funktionseinheiten 11 bis 13 und zur übertragung des im· Register 120 stehenden Befehls zu einer freien Funktionseinheit. Wenn eine Funktionseinheit ihre Operation beendet hat, erzeugt sie jeweils auf der. Frei/Besetzt-Anzeigeleitung ein Rückstellsignal, das die zugeordnete Bitstelle im Register 128 in den Frei-Zustand setzt, in welchem diese dann ein Ausgangssignal zu der zugeordneten UND-Schaltung 126 liefert.
Die Fig. 7 zeigt ein Beispiel für den Aufbau der Funktionseinheiten 11 bis 13, die unter Steuerung des Befehlsverteilers 15 im oben erläuterten Falle e) zum Einsatz kommen. Die Funktionseinheit 11 besteht aus einem Operationsdecodierer 51, der mit dem Operationscode-Feld des Eingaberegisters 16 verbunden ist. In Abhängigkeit.von den Ausgangssignalen des Decodierers 51 wird eine von vier Verknüpfungseinheiten 52 bis 55 ausgewählt. Jede dieser Einheiten ist zur Ausführung einer bestimmten arithmetischen Operation oder zur Ausführung von logischen Verknüpfungsoperationen eingerichtet. Die Einheit 52 ist ein Addier-/Subtrahierwerk, das zusammen mit dem Auswahlsignal vom Operationsdecodierer 51 auch ein Additions-/Subtraktionssteuersignal zugeführt erhält. Die Einheit 53 ist ein Multiplizierwerk, und die Einheit 54 führt Divisionen aus. Die Einheit 55 ist eine logische Verknüpfungsschaltung, die z.B. Vergleiche, UND-Verknüpfungen, ODER-Verknüpfungen oder EXKLUSIV-ODER-Verknüpfungen ausführt entsprechend zusätzlich vom Operationsdecodierer 51 zugeführten Operationssteuersignalen. Der Schaltungsaufbau der Einheiten 52 bis 55 ist für sich .bekannt, so daß es sich erübrigt, hier nnäher darauf einzugehen. Die Operandeneingänge der Einheiten 52 bis 55 sind an das Operandenfeld des Eingangsregisters 16 angeschlossen. Die Resultatausgänge der Einheiten 52 bis 55 sind mit dem Resultatfeld des Ausgangsregisters 21 verbunden. In dieses Register wird auch die Zieladresse aus dem Register 16 übertragen. Jede der Einheiten 52 bis 55 liefert, während sie mit einer Verknüpfung von Operanden beschäftigt ist, ein Besetzt-Signal, das über eine Leitung 56 zum Befehlsverteiler 15 gelangt.
509809/0678
Die Funktionseinheiten 12 und 13 in Fig. 1 sind ähnlich aufgebaut wie die in Fig. 6 dargestellte Funktionseinheit 11, obwohl es nicht notwendig ist, daß jede dieser Funktionseinheiten zur Ausführung aller Verknüpfungsoperationen in der Lage ist, wie dies für die Funktionseinheit 11 angegeben wurde. Die Funktionseinheiten 11 bis 13 können parallel zueinander zur Ausführung von Befehlen tätig sein, die sie aus dem Anweisungsspeicher 25 über den Befehlsverteiler 15 und die Eingangsregister 16 bis zugeführt erhalten. Die Tätigkeit der Funktionseinheiten 11 bis 13 ist auch unabhängig von der Operation der restlichen Einheiten der Datenverarbeitungsanlage von Fig. 1.
Die von den Funktionseinheiten zu den Ausgaberegistern 21 bis gelieferten Resultatsignale bestehen jeweils aus einem Wertepaar £a,vj, wobei a die Zieladresse ist, die in dem dem Befehlsverteiler 15 aus dem Anweisungsspeicher 25 zugeführten und in das jeweilige Eingangsregister 16, 17 oder 18 übertragenen Befehl vorgefunden wird, und wobei ν den eigentlichen Resultatwert darstellt. Das Wertepaar wird im jeweiligen Ausgaberegister 21 bis 23 festgehalten. Die Beendigung einer Operation in den Funktionseinheiten 11 bis 13 wird der Ersetzungseinheit 38 gemeldet.
Die Ersetzungseinheit 38 verarbeitet Felder der Art £a.,...a , vj ,
ti η Adressen des AnweisungsSpeichers
25 und ν ein zu verarbeitender Wert sind. Die Funktion der Ersetzungseinheit 38 besteht darin, den Wert ν auf die angegebenen Anweisungsspeicheradressen "^1,.. ."aV zu übertragen. Hierbei kann die Zahl der angegebenen Adressen a zwischen 1 und der Zahl η liegen, die durch die Stellenzahl in den Eingangsregistern 21, 22, 23, 37, 45 und 58 der Ersetzungseinheit 38 begrenzt ist. Die Fig. 8 zeigt ein vereinfachtes Blockschaltbild der Ersetzungseinheit. Die Ersetzungseinheit umfaßt ein Zeigerregister 61, das als Binärzähler ausgebildet ist und zur Adressierung der einzelnen Adressenstellen im Adressenteil des Registers 62 dient. Die Ersetzungseinheit umfaßt ferner Torschaltungen 63, 64 und eine
509809/0678
I I I I I
ill·
- 21 -
Speicherzyklus-Steuereinrichtung 65. Durch eine geeignete Auswahlschaltung wird jeweils ein geladenes Eingangsregister 21, 22, 23, 37, 45 und 58 mit den Registern 62 und 68 verbunden. Die Ausgänge dieser Register sind mit den iüorschaltungen 63 und 64 verbunden, die ihrerseits über die Sammelleitung 59 an ein Adressenregister 66 und ein Speichereingangsregister 67 angeschlossen sind, die beide Teil des Anweisungsspeichers 25 sind. Der letztere Speicher wird durch den Inhalt des Registers 66 adressiert zum Einschreiben des im Speichereingangsregister 67 befindlichen Wertes auf einen Platz, welcher der jeweiligen im Register 66 befindlichen Adresse a entspricht. Hierbei kann es sich z.B. um die Adresse I3 im Eintrag von Zeile 5 des Belegungsbeispiels für den Speicher 25 handeln, das die Fig. 5 zeigt. Die Speicherzyklussteuerung liefert nacheinander auftretende und sich zyklisch wiederholende Taktimpulse Tl, T2 und T3. Die Taktimpulse Tl dienen dazu, den Inhalt des Zeigerregisters 61 jeweils um 1 inkrementieren, um damit die jeweils nächste Adresse a im Register 62 zu adressieren. Die Taktimpulse T2 dienen zur übertragung der adressierten Adresse aus dem Register 62 in das Adressenregister 66. Vor Beginn der Taktimpulszyklen Tl, T2 wurde durch einen Anfangstaktimpuls TO die Torschaltung 64 geöffnet zur übertragung des Wertes ν im Register 68 in das Speichereingangsregister 67. Die Taktimpulse T3 dienen zur Auslösung eines Einschreibzyklus im Speicher 25, während dem der Inhalt des Speichereingangsregisters 67, also der Wert v, auf die jeweils durch den Inhalt des Adressenregisters 66 bezeichnete Speicherstelle eingeschrieben wird.
Nachdem auf diese Weise die letzte Adresse a zur Adressierung des Speichers 25 benutzt worden ist, wird der Inhalt des Registers 62 und 68 gelöscht. Die Eingangswerte zu diesen Registern werden je nach Bedarf von den Registern 37, 45 oder 58 erhalten. Die Ersetzungseinheit 38 empfängt ferner Eingangssignale von den Ausgaberegistern 21, 22 und 23 der Funktionseinheiten 11, 12 und 13. Diese Eingangssignale werden in der gleichen Weise verarbeitet, wie es oben beschrieben wurde. Wenn eines der Register 21 bis 23, 37, 45 oder 58 mit Signalen geladen worden ist, die durch die
509809/0678
Ersetzungseinheit 38 zu verarbeiten sind, so wird dies der Übersetzungseinheit durch diejenige Einheit angezeigt, die für das Laden des betreffenden Registers verantwortlich ist. Dies sind die Einheiten 11, 12, 13 für die Register 21, 22 und 23, der Befehlsverteiler 15 für das Register 37, die Eingabeeinheit 44 für das Register 45 und eine noch zu beschreibende Übertragungseinheit 70 für das Register 58. Der Inhalt der Register 21 bis 23, 37/ 45 und 58 wird den Registern 62 und 68 über eine in Fig. 7 schematisch dargestellte Sammelschaltung 69 zugeführt. Durch für sich bekannte Mittel wird sichergestellt, daß bei gleichzeitiger Belegung mehrerer Register die Zuführung nacheinander mit einer zeitlichen Rate erfolgt, die von der Verarbeitungsgeschwindigigkeit der Ersetzungseinheit 38 abhängig ist.
Wenn durch eine der von der Einheit 38 durchgeführten Ersetzungen ein Befehl ausführbar wird, geht die Steuerung an den Befehlsverteiler 15 über. Dies ist der Fall, wenn durch die vorgenommenen Ersetzungen im betreffenden Befehl keine Leerstellen mehr enthalten sind. Ein solcher Zustand kann durch eine Schaltung festgestellt werden, wie sie in Fig. 9 angegeben ist.
Die Schaltung von Fig. 9 ist Teil des AnweisungsSpeichers 25. Dieser Speicher besitzt ein Speicherausgangsregister 71, in das die dem Speicher entnommenen Befehlswörter zwischengespeichert werden. Die Entnahme aus dem Speicher erfolgt wortweise, wobei jedes Wort ein Element, z.B. eine Variable oder eine Adresse, eines im Speicher 25 enthaltenen Befehls darstellt. An den Ausgang des Registers 71 sind Anzeigeschaltungen 73, 74 und 75 angeschlossen. Die Anzeigeschaltung 73 liefert ein Ausgangssignal, wenn sich im Datenregister eine Befehlsende-Markierung befindet, die im Speicherbelegungsbeispiel von Fig. 5 durch ein Semikolon dargestellt ist. Die Anzeigeschaltung 74 dient zur Anzeige einer Leerstelle, d.h. einer noch nicht von einem Wert besetzten Speicherstelle. Die Anzeigeschaltung 75 dient zur Anzeige der Verarbeitungskennzeichen-Speicherstelle, die jeweils die erste Speicherstelle eines Befehls ist. Die Anzeigeschal-
609809/0678
tungen 73 bis 75 sind so eingerichtet, daß der jeweilige Anzeigezustand aufrechterhalten wird, bis die Analyse des betreffenden Befehls beendet ist. Der Speicher 25 wird durch das oben erläuterte Adressenregister 66 adressiert. Dem Adressenregister 66 sind eine Adresseninkrementierschaltung 78 und eine Adressendekrementierschaltung 79 zugeordnet. Beide Schaltungen bewirken jeweils eine Adresseninkrementierung bzw. -dekremen tJsrung, um eine Adressenkonstante L, die der Wortlänge eines Elementes in dem im Speicher 25 enthaltenen Befehlen entspricht. L kann z.B. den Wert 1 haben, wenn die Speicheradressierung byteweise erfolgt. Nach einer Ersetzungsoperation befindet sich im Register 66 die Adresse der Speicherstelle i, an welcher der Ersetzungswert eingespeichert worden ist. Danach wird durch ein Steuersignal auf der Leitung 80 die Dekrementierschaltung 79 wirksam, die in aufeinanderfolgenden Zyklen eine Dekrementierung des Inhaltes des Adressenregisters 66 bewirkt. Nach jeder Dekrementierung erfolgt ein Speicherentnahmezyklus, und der dem Speicher entnommene und in das Register 71 eingegebene Wert wird von der Anzeigeschaltung 75 auf das Vorhandensein des Verarbeitbarkeits-Kennzeichens geprüft. Wenn auf diese Weise der Anfang des Befehls erreicht worden ist, und in der ersten Bytestelle des Registers 71 sich das Verarbeitbarkeits-Kennzeichen befindet, liefert die Anzeigeschaltung 75 ein Ausgangssignal, das eine Torschaltung öffnet und die zu diesem Zeitpunkt im Register 66 enthaltene Adresse in ein Anfangsadressenregister 82 überträgt. Das die Torschaltung 81 öffnende Steuersignal veranlaßt auch eine Löschung der Anzeigeschaltung 73 und 74. Danach wird durch ein Steuersignal auf einer Leitung 83 die Inkrementierschaltung 78 wirksam zur Durchführung von Adresseninkrementier-Zyklen. Nach jeder Adresseninkrementierung erfolgt ein Speicherentnahmezyklus, und der in das Register 71 übertragene Wert wird von den Anzeigeschaltungen 73 und 74 auf das Vorhandensein einer Leerstelle bzw. auf das Vorhandensein eines Befehlsende-Kennzeichens untersucht. Wenn das letztere Kennzeichen in der ersten Bytestelle des Registers 71 festgestellt wird, erzeugt die Schaltung 73 ein Abtastung-Ende-Signal, das eine weitere Inkrementierung
509809/0678
der Adresse im Register 66 unterbindet. Wenn zu diesem Zeitpunkt die EXKLüSIV-ODER-Schaltung 76 ein Ausgangssignal erzeugt, so ist dies eine Anzeige dafür, daß im betreffenden Befehl noch weitere Ersetzungen durchzuführen sind und daß dieser Befehl daher noch nicht verarbeitbar ist. In diesem Falle bleibt das Verarbeitbarkeitskennzeichen "RU" unverändert. Wenn dagegen zum Zeitpunkt "Abtastung Ende" am Ausgang der EXKLUSIV-ODER-Schaltung 76 kein Augangssignal anliegt, liefert die Inverterschaltung 85 ein Ausgangssignal, das einerseits dem Befehlsverteiler meldet, daß ein verarbeitbarer Befehl vorhanden ist. Zum anderen öffnet das Ausgangssignal der Inverterschaltung 85 die Torschaltung 84, wodurch die Befehlsanfangsadresse aus dem Register 82 in das Adressenregister 66 gebracht wird. Es folgt daraufhin ein Speicherentnahmezyklus, durch den das Verarbeitbarkeitskennzeichen in die erste Bytestelle des Registers 71 gebracht wird. Das Ausgangssignal der Inverterschaltung 85 gelangt außerdem über eine Verzögerungsschaltung 86 zu einer Torschaltung 87, die hierdurch geöffnet wird zur übertragung des von einem Zeichengenerator 88 bereitgestellten Verarbeitbarkeitskennzeichens ID in die erste Bytestelle des Registers 71. Hiermit wird das bisherige Verarbeitbarkeitskennzeichen RU des betreffenden Befehls durch ID ersetzt und der Befehl als verarbeitbar markiert. Die im Adressenregister 82 enthaltene Anfangsadresse des Befehls kann sichergestellt werden für einen Zugriff zu dem verarbeitungsbereiten Befehl, um diesen zum Befehlsverteiler ID zu übertragen, wo er in der beschriebenen Weise weiterbehandelt wird.
In den folgenden Abschnitten wird die Funktion des Expansionsspeichers 34 und der übertragungseinheit 70 erläutert. Der Expansionsspeicher 34 dient jeweils zur Aufnahme eines Expansionsbefehls, den dieser Speicher vom Befehlsverteiler 15 zugeführt erhält. Der Speicher 34 ist somit ein Zwischenspeicher für einen Expansionsbefehl während die durch diesen Befehl bezeichnete Prozedur mittels der Ladeeinheit 26 aus dem Programmspeicher 27 in den Anweisungsspeicher 25 übertragen wird und während im Anschluß hieran durch die übertragungseinheit 70 eine entsprechende Paarung
509809/0678
zwischen den Adressen des tatsächlichen Adressenvektors und des formalen Adressenvektors stattfindet.
Die Fig. 10 zeigt ein Belegungsbeispiel für den Expansionsspeicher 34, wie es in noch zu beschreibender Weise bei der Verarbeitung des Anwendungsbeispiels gemäß Pig*. 3 auftritt, per Speicher 34 umfaßt fünf Felder 91 bis 95. Das Feld 91 dient zur Aufnahme eines Verarbeitungskennzeichens, das angibt, ob der Eintrag im Speicher 34 von der Ladeeinheit 26 zur Entnahme einer Prozedur aus dem Speicher 27 benutzt wird oder von der Übertragungseinheit 70 zur Herstellung von Adressenpaarungen benutzt wird. Das Feld 92 dient zur Aufnahme des Befehlsnamens, der mit dem Namen einer zugehörigen Prozedur im Speicher 27 identisch ist. Im Belegungsbeispiel von Fig. 9 handelt es sich hierbei um den Befehl S in der Prozedur Uli, der mit der gleichnamigen Prozedur U12 Csiehe oben) identisch ist. Das Feld 93 nimmt die jeweilige Prozeduralternative auf, deren Bedeutung im einzelnen oben erläutert wurde. Das Feld 94 dient zur Aufnahme des tatsächlichen Adressenvektors, bestehend aus den Adressen von Lesevariablen (vor dem Doppelpunkt) und von Schreibvariablen (hinter dem Doppelpunkt). Die Adressen im Feld 94 sind symbolisch mit i bezeichnet. Hierdurch ist zum Ausdruck gebracht, daß es sich um Adressen des AnweisungsSpeichers 25 handelt, die beim Laden des betreffenden Befehls S in diesen Speicher den Variablen zugewiesen wurden, die im Befehl S auftreten (vgl. hierzu den Ausdruck Uli). Das Feld 95 besteht aus SpeichersteIlen, deren Anzahl der Anzahl der Speicherstellen im Feld 94 entspricht. Die Speicherstellen des Feldes 95 dienen in der nachfolgend zu beschreibenden Weise zur Aufnahme des formalen Adressenvektors, der aus weiterer Adressen des Anweisungsspeichers 25 besteht, die zugeordnet werden, wenn die dem Befehl im Speicher 34 entsprechende Prozedur aus dem Speicher 27 in den'Speicher 25 übertragen wird. Von den Feldern 91 bis 95 werden durch die vom Befehlsverteiler 15 über die Sammelleitung 35 zugeführten Signalen nur die Felder 92, 93 und 94 belegt. Das Feld 91 ist anfänglich stets auf LU gesetzt, während das Feld 9 5 anfangs Leerstellen
509809/0678
aufweist. Die Größe der einzelnen Speicherfelder ist entsprechend der maximalen Anzahl von Positionen in den Befehlen bemessen. Durch das Steuerfeld 91 wird die Ladeeinheit 26 davon in Kenntnis gesetzt* daß eine Prozedur aus dem Programmspeicher 27 zu entnehmen ist. Im dargestellten Beispiel handelt es sich dabei um die Prozedur Sl. Diese Entnahme geschieht in der oben beschriebenen Weise, indem mit dem Inhalt der Felder 9 2, 93 im Speicher ein assoziativer Zugriff zur Prozedur Sl erfolgt, die daraufhin in den Speicher 25 übertragen wird. Die Ladeeinheit 26 hat dabei die Funktion einer Steuereinheit zur Durchführung des assoziativen Zugriffes und der anschließenden Speicherentnahme. Eine derartige Funktion 1st für sich bekannt, so daß sich an dieser Stelle eine detaillierte Erläuterung erübrigt.
Beim Laden der dem Programmspeicher 27 entnommenen Prozedur in den Anweisungsspeicher 25 werden alle innerhalb der Prozedur auftretenden relativen Adressen durch absolute Adressen des AnweisungsSpeichers 25 ersetzt. Dies geschieht entsprechend der Zuweisung von Adressen im Speicher 25 zu den relativen Adressen der Variablen in der zu ladenden Prozedur. Die Befehle der zu ladenden Prozedur werden Position für Position in aufeinanderfolgende freie Speicherstellen des Anweisungsspeichers übertragen. Dabei werden die in der Prozedur enthaltenen relativen Adressenwerte durch echte Adressenwerte des Speichers 25 ersetzt. Dies geschieht in für sich bekannter Weise, indem jeweils die Anweisungsspeicheradresse, bei der die Ladeoperation beginnt (letzte besetzte Adresse im Anweisungsspeicher 25 vor dem Laden der neuen Prozedur), in einem nicht dargestellten Register zwischengespeichert wird. Der zwischengespeicherte Adressenwert wird daraufhin zu jeder in der Prozedur auftretenden relativen Adresse hinzuaddiert, bevor diese in die für sie vorgesehene Speicherstelle des Anweisungsspeichers 25 eingeschrieben wird. Das gleiche trifft zu für die relativen Adressen der Variablen, die innerhalb der Befehle der Prozedur zunächst nur durch Leerstellen vertreten sind, wie z.B. in der Prozedur S die Va-
509809/0678
riablen n,f, usw. (vgl. oben U12). Diese Variablen werden im jeweiligen Unterprogramm in der oben beschriebenen Weise nur durch platzhaltende Leerstellen ausgedrückt, die durch eine relative Adresse bezeichnet ist.
Eine weitere Operation der Ladeeinheit 26 besteht darin, den formalen Adressenvektor im Feld 9 5 des ExpansionsSpeichers 34 mit echten Adressenwerten des AnweisungsSpeichers 25 aufzufüllen. Es handelt sich dabei um die relativen Adressen der Leerstellen innerhalb der Prozedur, die für die Aufnahme der Eingabe- und Ausgabevariablen (Lese- und Schreibvariablen) dieser Prozedur vorgesehen sind. Wie oben bereits erläutert, sind diese Adressen der zu ladenden Prozedur in Form eines Adressenvektors vorangestellt. Im Falle der Prozedur S sind es die Variablen n,f,yQ,N,y. Die relativen Adressen der Leerstellen dieser Variablen werden in echte Speicheradressen des Anweisungsspeichers 25 in der oben beschrieben Weise durch Hinzuaddieren der Prozedur-Anfangsadresse gewonnen. Daraufhin wird diese echte Adresse an den der betreffenden Variablen zugeordneten Platz im Feld 95 des Expansionsspeichers 34 übertragen.
Die Ladeeinheit 26 weist ferner eine Schaltung auf zur Feststellung, ob der zu ladende Befehl ausführbar ist oder nicht. Es wird insbesondere festgestellt, ob die innerhalb der zu ladenden Prozedur auftretenden Expansionsbefehle am Ort der Lesevariablen einen Wert und an den ParametersteIlen Adressen aufweist. Dies geschieht durch eine Schaltung, die der in Fig. 9 dargestellten ähnlich ist. Durch entsprechede Anzeigeschaltungen werden die Leerstellen, das Befehlsende und der Ort der Verarbeitbarkeitskennzeichenstelle festgestellt. Wenn es sich um eine verarbeitbare Instruktion handelt, wird das Verarbeitbarkeitskennzeichen auf "ID" gesetzt, andernfalls auf "RU". Das Verarbeitbarkeitskennzeichen wird zusammen mit dem zu ladenden Befehl dem Anweisungsspeicher 25 durchgeführt.
Im Anschluß an die Operation der Ladeeinheit 26 wird der Anwei-
509809/0678
sungsspeicher 25 auf verarbeitbare Befehle durchsucht, indem
nacheinander alle im Speicher 25 enthaltenen Befehle entnommen
werden und ihr Verarbeitbarkeitskennzeichen auf Anwesenheit von "ID" geprüft wird. Verarbeitbare Befehle werden an den Befehlsverteiler 15 weitergeleitet.
Unabhängig hiervon wird der im Expansionsspeicher 34 enthaltene Eintrag von der Übertragungseinheit 70 weiterbehandelt. Die Einheit 70 bildet Adressenpaare aus dem tatsächlichen Adressenvektor und dem formalen Adressenvektor des Eintrags im Speicher 34. Der tatsächliche Adressenvektor befindet sich im Feld 94 dieses Speichers und kann beispielsweise die folgende Form haben [a.,...,a* :
b.,...,b J. Der formale Adressenvektor, der in der vorausgehend beschriebenen Weise mit echten Adressen des Speichers 25 gefüllt worden ist, befindet sich im Feld 95 und kann die folgende Form haben [c.,,..., c : cf.,... ,a J . Hierin stellen die jeweils hinter dem Doppelpunkt befindlichen Adresseneinträge die Adressen von
Ausgabevariablen dar. Die Paarung der Adresseneinträge erfolgt
dadurch, daß in fortlaufender Folge jeweils ein Eintrag aus dem Feld 94 und ein Eintrag aus dem Feld 9 5 entnommen wird und beide einander zugeordnet werden. Dies geschieht unter Bezugnahme auf die vorgenannten Beispiele für den aktuellen Adressenvektor und den formalen Adressenvektor in folgender Form:
für direkte Eingangsvariable
für indirekte Eingangsvariable und
für Ausgangsvariable
»•aifCi
Es ist ersichtlich, daß die Reihenfolge der Werte innerhalb
der Paare umgekehrt ist, wenn es sich um indirekte Eingangsvariable oder um Ausgangsvariable handelt.
Direkte Eingangsvariable sind solche, die innerhalb einer
Prozeduralternative direkt angesprochen sind, indem sie z.B,
509809/0678
auf der rechten Seite eines Zuweisungsbefehls (Basisbefehl) auftreten. Indirekte Eingangsvariable treten dagegen wiederum als Eingangsvariable in einem Expansionsbefehl auf. In der obigen Darstellung Uli bis U15 sind die indirekten Eingangsvariablen durch Unterstreichungen markiert. Diese treten lediglich in den Prozeduren P und Q auf.
Eine Paarung wird nur dann vorgenommen, wenn die einander in der Reihenfolge entsprechenden Positionen der Felder 9 4 und 95 auch tatsächlich besetzt sind. Für den Fall, daß eine dieser Positionen nicht besetzt ist, (ausgedrückt durch eine Leeradresse) wird eine Paarbildung für diese Position unterlassen und es wird zur nächsten Position fortgeschritten. Die gebildeten Adressenpaare werden als Einträge dem Eingängsregister 58 zugeführt, das zur Aufnahme einer Vielzahl derartiger Adressenpaare eingerichtet ist. Der Inhalt des Registers 5 8 wird in der beschriebenen Weise von der Ersetzungseinheit 38 verarbeitet, indem jeweils der im Paar rechtsstehende Adressenwert auf die linksstehende Adresse übertragen wird. Für die als Beispiel angegebenen Adressenvektoren wird beispielsweise die Adresse "c£ auf die Speicheradresse ~ä*, eingespeichert, die Adresse b. wird auf die Adresse dj^ eingespei—
chert, und die Adresse 1? wird auf die Adresse c_ eingespeichert.
In Fig. 11 ist eine Schaltung dargestellt, wie sie als Übertragungseinheit 70 innerhalb der Anlage von Fig. 1 verwendet werden kann. Die Schaltung weist zwei Adressenregister 101 und 102 auf, die zur Adressierung des Ersetzungsspeichers 34 dienen. Das Register 101 wird zur Adressierung der Adresseneinträge im Feld 94 benutzt. Dieses Register ist mit einer Adresseninkrementiereinheit 103 verbunden, die nach jeder Entnahme eines Adresseneintrags aus dem Feld 9 4 mit Auftreten eines Taktsignals T eine Inkrementierung des Inhaltes des Registers 101 vornimmt als Vorbereitung für die Entnahme des nach rechts folgenden Eintrags. In der gleichen Weise dient das Register 102 zur Adressierung des Feldes 95 unter Mitwirkung einer Inkremeritiereinheit 104. Mit Hilfe der Register 101 und 102 werden im Speicher 34 jeweils
509809/0678
paarweise Entnahmezyklen ausgeführt. Die entnommenen Adresseneinträge werden in einem als Decodierer ausgebildeten Leerstellenanzeiger 105 auf das Vorhandensein von Leerstellen geprüft. Ergibt sich eine Leerstelle, so werden Torschaltungen 107, 108 über eine Inverterschaltung 109 gesperrt, wodurch eine Weiterleitung der dem Speicher 34 entnommenen Werte unterbunden wird. Spricht der Leerstellenanzeiger 105 nicht an, so erfolgt über die dann geöffneten Tore 107 und 108 eine übertragung der entnommenen Adressenwerte über zu diesem Zeitpunkt ebenfalls geöffnete Tore 110 und 111 in einen Ausgangsregistersatz 112 der Übertragungseinheit "70. Die Einspeicherung der dem Expansionsspeicher 34 entnommenen Werte in die Register 112 erfolgt in der Weise, daß Wertepaare eingespeichert werden, wobei die Einträge aus dem Feld 94 links und die Einträge aus dem Feld 95 rechts stehen. Liefert eine Anzeigeschaltung 113, die auf das Auftreten eines Doppelpunkt-Zeichens oder eines eine indirekte .Eingangsvariable markierenden Unterstreichungssymbols in der in den Feldern 94 und gespeicherten Adressenfolge anspricht, ein Ausgangssignal, so werden die Torschaltungen 110 und 111 über eine Inverterschaltung 114 gesperrt und zusätzliche Torschaltungen 115 und 116 geöffnet, über die letztgenannten Torschaltungen erfolgt eine Umkehrung der Stellenordnung innerhalb der in die Ausgangsregister 112 einzuspeichernden Adressenpaare. So werden die Einträge des Feldes 95 über die Torschaltung 116 der linken Seite und die Einträge aus dem Feld 94 über die Torschaltung 115 der rechten Seite des Ausgangsregistersatzes 112 zugeführt. Der Ausgangsregistersatz 112, der über nicht dargestellte Mittel zur Aufnahme aufeinanderfolgender Adressenpaare adressiert wird, ist mit dem Eingangsregister 58 verbunden und veranlaßt eine übertragung der gespeicherten Adressenpaare in das Register 58, wenn dieses eine Frei-Anzeige liefert.
Die Beschreibung der verschiedenen Teile der Anlage von Fig. 1 soll durch eine Erläuterung der Eingabeeinheit 44, des Leseregisters 42, der Ausgabeeinheit 30 und des Schreibregisters 31 vervollständigt werden. Das Leseregister 42 erhält vom Befehls-
509809/0678
verteiler über eine Sammelleitung 41 Adressenpaare der Form a,bj zugeführt als Folge eines Lesebefehls, der im Befehlsverteiler 15 auszuwerten ist. Hierin ist a eine Adresse des Anweisungsspeichers 25 und b eine Adresse des Dateneingabespeichers 28. Diese Adressenpaare werden der Eingabeeinheit 44 zugeleitet, die daraufhin einen Wert ν von der angegebenen Adresse b liest und in dem ihr zugeführten Wertepaar £"a,bj[ ersetzt, so daß dieses Wertepaar die Form \Jbl,vJ annimmt. Dieses Wertepaar wird dem Eingangsregister 45 der Ersetzungseinheit 38 zugeführt und dort in der oben beschriebenen Weise verarbeitet. Im Anschluß an die Entnahme aus dem Speicher 28 wird der Eintrag im Leseregister 42 gelöscht.
Das Schreibregister 31 erhält über eine Sammelleitung 45 vom Befehlsverteiler 15 Wertepaare der Form [v,iTj zugeführt, worin ν ein Resultatwert und a eine Adresse des Datenausgabespeichers ist.
Diese Wertepaare werden von der Ausgabeeinheit 30 benutzt, um den Wert ν auf die angegebene Adresse im Speicher 32 zu übertragen. Im Anschluß hieran wird der Eintrag im Speicher 31 gelöscht.
Bei der oben erläuterten Datenverarbeitungsanlage von Fig. 1 wird somit folgendes Konzept verwirklicht: Aus dem Programmspeicher 27 in den Anweisungsspeicher 25 geladene Befehle werden auf Ausführbarkeit geprüft. Ausführbare Befehle werden dem Befehlsverteiler 15 zugeführt, der eine Weichenstellung je nach Befehlsart vornimmt, um die Befehle zu den sie weiterbehandelnden bzw. ausführenden Einheiten 11 bis 13, 26, 34, 38, 44 weiterzuleiten. Auf Unterprogramme bezogene Befehle (ünterprogrammaufrufbefehle oder Expansionsbefehle) werden vom Befehlsverteiler 15 dem Expansionsspeicher 34 zugeführt, der die Adressierungssignale für die Ladeeinheit 26 liefert zur Übertragung der Befehle des aufzurufenden Unterprogramms aus dem Programmspeicher 27 in den Anweisungsspeicher 25. Diese Befehle werden wiederum auf Ausführbarkeit geprüft.
509809/0678
Der Anweisungsspeicher 25, der Befehlsverteiler 15, der Expansionsspeicher 34 iind die Ladeeinheit 26 bilden somit eine Befehlsladeschleife zur laufenden Erweiterung und Auffüllung des Inhalts des Anweisungsspeichers 25.
In Verbindung mit diesen Auffülloperationen werden auch die tibertragungselnheit 70 und die Ersetzungseinheit 38 wirksam. Unter Steuerung dieser Einheiten werden Adressenersetzungen in den im Speicher 25 geladenen Befehlen vorgenommen, um diese Befehle ausführbar zu machen. Die Ersetzungseinheit 38 dient außerdem zur Ersetzung von Leerstellen in den Befehlen im Speicher 25 durch Werte, die von den Funktionseinheiten 11 bis 13 als Resultatwerte errechnet oder von der Eingabeeinheit 44 als Dateneingabewerte bereitgestellt wurden. Der Anweisungsspeicher 25, der Befehlsverteiler 15 jeweils eine Funktionseinheiten 11, 12 oder 13 und die Ersetzungseinheit 38 bilden somit je eine Ausführungsschleife für Zuweisungsbefehle. Ebenso wird für Eingabebefehle eine Ausführungsschleife durch den Anweisungsspeicher 25, den Befehlsverteiler 15, die Eigabeeinheit 44 und die Ersetzungseinheit 38 gebildet. Dementsprechend erfolgt auch die verarbeitung von Expansionsbefehlen in der Ausführungsschleife: Anweisungsspeicher 25, Befehlsverteiler 15, Expansionsspeicher 34, Übertragungseinheit 70 und Ersetzungseinheit 38. Für alle diese Ausführungsschleifen dient der Befehlsverteiler 15 als Weiche, die je nach Befehlsart den auszuführenden Befehl der betreffenden Ausführungsschleife zuleitet.
Der vorausgehend erläuterte Kreislauf setzt sich fort, bis alle Befehle eines Programms ausgeführt worden sind und die erzielten Resultatwerte sich im Ausgabespeicher 32 befinden.
Die oben bsschriebenen Einheiten der Anlage von Fig. 1 arbeiten im wesentlichen selbständig und weitgehend unabhängig voneinander. Jede der dargestellten Speicher und sonstigen Einheiten teilt der ihr in Pfeilrichtung nachgeschalteten Einheit durch ein entsprechendes Bereitschaftssignal mit, daß für sie ein
509809/0678
verarbeitbarer Eintrag bereitsteht. Die nachgeschaltete Einheit ruft den betreffenden Wert ab und verarbeitet ihn entsprechend ihrer Funktion. Insofern arbeiten die verschiedenen Einheiten und Speicher der Anlage von Flg. 1 weitgehend asynchron je nach Anfall verarbeitbarer Daten. Durch die Art der zugeführten Programme (vgl. die Ausdrücke U11-U15) ist eine hochgradige Unabhängigkeit bei der Ausführung von Verarbeitungsaufgaben gewährleistet.
Im folgenden wird die Operation der Anlage von Fig. 1 bei der Ausführung des Anwendungsbeispiels gemäß Fig. 3 und den obigen Ausdrücken UIl-Ul5 erläutert. Der Anfangszustand der Anlage ist durch folgende Speicherbelegungen gegeben: Der Dateneingabespeicher enthält für f den Wert 0,1 an der Adresse Rl und für N den Wert 2 an der Adresse R2. Der Expansionsspeicher 34 enthält als einzige Eintragung ^Lu)y;. Der Programmspeicher 27 enthält alle Prozeduren und Prozeduralternativen in der oben erläuterten Form, bestehend aus Prozedurname, Alternativnummer, Adressenvektor und Programmtext. Alle anderen Speicher sind anfänglich leer.
Die Operation beginnt mit einem Ladevorgang der vom Expansionsspeicher 34 angegebenen Prozedur V nach dem Anweisungsspeicher 25. Dies resultiert in der folgenden Belegung des Speichers 25
1I
rom Rlj ; ^Rt^read^ (from R2j j
<Id)s fig,^,i4,i2sij ; (R^write^fto WlJ;
Hierin sind die im Programmtext auftretenden relativen Adressen mit Adressensymbolen i bezeichnet, das. gleiche trifft zu für die relativen Adressen der Variablen-Leerstellen, die durch ein über die betreffende Position gesetztes Adressensymbol i. gekennzeichnet sind. Wie die Verarbeitbarkeitskennzeichen der geladenen Befehle erkennen lassen, ist lediglich der Expansionsbefehl S ausführbar,
509809/0678
der unter Wirkung des BefehlsVerteilers 15 zu folgender Eintragung im Expansionsspeieher 34 führt (der ursprüngliche Inhalt des Speichers 34 wurde vor Entnahme der Prozedur aus dem Speicher 27 gelöscht):
<LU> S 1
Unter Steuerung des Expansionsspeichers 34 führt die Ladeeinheit 36 ein Laden der Prozedur s aus dem Programmspeicher 27 in den Anweisungsspeicher 25 aus. Damit wird die oben angegebene.Belegung des Anweisungsspeichere um folgende Befehle erweitert:
lg
<Ru)i10,112Ii1JjL20:=^; RU
ig
1IO 1Il
<W)u_-i.:»u_J.; (vn\ ,:«, .? (iD/RJi9 ,I11A13^1
12O i21 i22 :=t Li <RU>, ti=, .'.
i23 A24 Χ25 ^26 i27 i28
Die im Expansionsspeicher 34 enthaltene Eintragung wird im Anschluß an die Ladeoperation durch die Ladeeinheit 26 in der oben beschriebenen Weise modifiziert, indem der formale Adressenvektor mit echten Speicheradressen aufgefüllt wird. Es ergibt sich damit für den Speicher 34 die folgende Belegung:
(RU) S 1 3,iltiA,i2:i^ [W^S'V
Hiernach kann die Übertragungseinheit 70 zu arbeiten beginnen.
509809/0678
Diese Einheit erzeugt gemäß der obigen Beschreibung folgende Eintragungen in ihrem Ausgangsspeieher 112:
<RU>fi3,i6]; <RU> [ilfi7
Der Eintrag im Expansionsspeicher 34 wird daraufhin gelöscht. Mit den von der Übertragungseinheit 70 über das Eingangsregister 58 der Ersetzungseinheit 38 zur Verfügung gestellten Wertepaaren werden folgende Ersetzungen im Anweisungsspeicher 25 vorgenommen:
read i7ffrom Rl]]; ^Iü)read ig[from R2J ; (id)i6:=1; i15:=0;... <RU>write<_j[to Wl];
7 A22:=^; (Bü)i18fi26«-Lif
1IO 1Il
i14 1IS
i20 i21 i22 i23
i26 i27
Hierin sind wiederum alle Instruktionen mit dem Verarbeitkeitskennzeichen ^ID^ ausführbar. Die Verarbeitung von (iD^read ig[from R2] ergibt beispielsweise, neben dem Löschen dieses Befehls im Anweisungsspeicher 25, den Eintrag T"ig,R2j im Leseregister 42. Dieser Eintrag veranlaßt die Eingabeeinheit 44,
509809/0678
eine Wertentnahme im Speicher 28 auszuführen und als Resultat desselben das Wertepaar Ti«,2j zum Eingangsregister 45 der Ersetzungseinheit 38 zu übertragen.
Im weiteren Verlaufe ergeben sich
18fi26:=2 und nach weiteren Schritten schließlich 27:=l=2 als Eintragungen im Anweisungsspeicher 25. Der letztere Befehl wird vom Befehlsverteiler als logische Vergleichsoperation erkannt und in der Form !__,=,^1,2J in eines der Eingangsregister 16 bis 18 eingetragen, von dessen Funktionseinheit 11, 12 oder 13 im Befehlsverteiler 15 ein Frei-Signal vorliegt und von dem dem Befehlsverteiler bekannt ist, daß die nachgeschaltete Funktionseinheit zur Ausführung von Vergleichsoperationen in der Lage ist. Als Resultat der Vergleichsoperation wird von der betreffenden Funktionseinheit 11, 12 oder 13 das Wertepaar ΓΙ27'2/ im zugehörigen Ausgangsregister 21, 22 oder 23 eingespeichert, wobei 2 vereinbarungsgemäß den Wahrheitswert "falsch11 bzw. "nein" repräsentiert.
Auf die gleiche Art und Weise läuft die weitere Operation ab, bis schließlich im Anweisungsspeicher 25 der Befehl ^ID^write 2,417jto WlJ erscheint, der vom Befehlsverteiler 15 als Schreibbefehl erkannt und über die Leitung 45 dem Schreibregister 31 zugeführt wird. Die Ausgabeeinheit 30 veranlaßt ein Einschreiben des Wertes 2,417 an der Adresse Wl im Datenausgabespeicher 32. Damit ist die Operation zur Verarbeitung der Aufgabe gemäß Fig. 3 beendet. Die Anlage vcn Fig. 1 hat zu diesem Zeitpunkt folgenden Zustand: Der Inhalt des Programmspeichers 27 ist unverändert. Ebenso ist der Inhalt des Dateneingabespeichers 28 unverändert. Der Datenausgabespeicher 32 enthält den Wert 2,417 an der Adresse Wl, während alle anderen Speicher leer sind. Es kann somit ein neuer Verarbeitungsvorgang erfolgen, sobald auf nicht dargestellte Weise eine neue Eintragung im Expansionsspeicher 34 vorgenommen worden ist.
In Fig. 12 sind für das Anwendungsbeispiel gemäß Fig. 3 und den
509809/0678
obigen Ausdrücken U11-U15 anhand eines Ablaufgraphen angegeben, welche Operationen parallel ausführbar sind. Den Zusammenhang der in der Graphendarstellung verwendeten Symbole mit den Operationen der Ausdrücke U11-U15. zeigt die folgende Tabelle für einen Teil (Anfangsphase und Endphase) der im Ablaufgraphen von Fig. 12 dargestellten Operationen:
Tabelle 1
Operationen read Qf[ S Resultat RIj ; read Yo Ao
QNjfrom R2]f; Qn:=l;
O BO A'AS P
from
0 0 O'O ' zo
_y]; write ^yfto WlJ
read Q"f | 1 12 xo Rl]; read QN£from R2J ; ^i=If
SO B0 Qo
Al!=lN
em
from
S0 S0
nl'l*2'ln3
CO
:=0"; ΐζ'1^2*"θ£;
ti
0
1*01 iaW 1η11ί=1η1; lfllielflJ
ν lyl* CHO lXlf
ln31:eln3f 1Ε21· 1Χ2· lyll· lYlf
lq)Un31'l Q
"^ -♦ ·? "^l
f Y /N · -,y J; Z
2,Q<
509809/0678
XO'YOfAO'BO/RO
sn,sf,sN ο ο ο
3O
1XO1:"1XO;
RX
Ro
Ro
R,
2X1'2X2'2X3:~1XO1; 2nl'2 21'
f 2 Γ2
2F1'2F2:~2F; 2X1O:~2X3~2F1; I*''''
; 2X11:=2X1O? 2n21:=2n2i 2f21!=2f2?
-» -* -> X11,2n21,2f21;
Q^; Q^; Q0; 2Q ' Lo;
ιχοιίβ1? ιηιι:=1?
; G0; R^; Hq; xnff
'"0»1' V* Ro; Ro; Do; Eo;
Jq; pJ; P^; P^; Pq; Kq;
.1; Q^; !N21:=2; Q0; ZQ
509809/0678
co'RofRo/Lo
r:
.-ι . ί t .-η *~ 21 '22* ~ *
DO;
FG; GO; RO; HO; '* JO; PO; PO; PO; PO;
V. V
Qo'
' z
509809/0678
H2
:=l,5-0,083; 6"v: = fO,O83|; J3; P*; P^;
; P; P
P2; K1; (φ O0;
J2 P2
H2,I2 6p:=0,08340,1; 6Xll:=l,417; F^;
0O'* Z0
J2 PP2'· P2
; QJ; O0; ZQ
P^ P?
2 ^ 2
:=1,417; :=
; q3; O0; Zq
2 P2, P2'P2 4"ζ:-1,417| Κχ;
509809/0678
κι 3
#^.-1+1,4171 QJ; O0; ZQ
κι λΥλλ -'2,417; OQ; ZQ
0O Ql οΥ:=2,417; ZQ
2O write 2,417 to Wl
Bei der Graphendarstellung von Flg. 11 und In der Tabelle 1 wurde von den Eingabewerten f=0,l und N=2 ausgegangen. In der Tabelle wird oberhalb der Befehle jeweils die symbolische Bezeichnung angegeben, die für gleiche Operationen im Flußdiagranm von Fig. 3 und in der Graphendarstellung von Fig. 12 benutzt wird. Sofern ein Befehl keiner Änderung unterliegt, ist er in Tabelle ausschließlich in symbolischer Form angeführt. Die Parallelität bei der Ausführung der einzelnen Operationen ist aus den parallelen Zweigen des Graphen von Fig. 12 erkennbar. Der dort wiedergegebene Programmablauf ergibt sich dann, wenn alle Befehle eine annähernd gleiche Ausführungszeit benötigen. Zur Symbolik von Fig. 12 ist noch zu bemerken, daß bei den die einzelnen Operationsschritte bezeichnenden großen Buchstaben die tiefgestellten Indizes die Zahl der Wiederholungen für die gleiche Operation angeben. Z.B. ist S. der zweite Aufruf der Prozedur S, die zum erstenmal bei SQ aufgerufen wird. Eine ähnliche Symbolik wird auch bei den im rechten Teil der Tabelle 1 stehenden Symbolen der Variablen benutzt. Dort sind zur Unterscheidung von den
509809/0678
diesen Symbolen ohnedies zugeordneten rechten tiefgestellten Indizes zusätzliche linke tiefgestellte Indizes eingeführt.
509809/0678

Claims (1)

  1. GE 972 5O2 PATENTANSPRÜCHE
    Verfahren zur parallelen Ausführung von Operationen in einer Datenverarbeitungsanlage mit einer Anzahl von Funktionseinheiten, die eine zeitlich überlappte Verarbeitung von Daten entsprechend einer vorgegebenen Befehlsfolge gestatten, dadurch gekennzeichnet, daß zur Umsetzung der Befehlsfolge in parallel ausführbare Einzelanweisungen bei der Übertragung aus einem Befehlsfolgenspeicher in einen Anweisungsspeicher jeder Datenvariablen so viel Adressen im Anweisungsspeicher zugewiesen werden, wie diese Verwendungsorte innerhalb der ausführbaren Befehlsfolge besitzt, daß für Befehle zum Aufruf von Befehlsteil folgen, die innerhalb der Befehlsfolge alternativ auszuführen sind, den Parametern der Befehlsfolge zugeordnete und den Ort des Auftretens in der Befehlsfolge bezeichnende relative Adressen in Adressen des AnweisungsSpeichers umgeformt werden, auf die nach Entnahme der betreffenden Befehlsteilfolge aus dem Befehlsfolgenspeicher die Adressen der Parameter dieser Teilfolge eingespeichert werden,. und daß diejenigen Befehle im Anweisungsspeicher, deren Positionen vollständig mit Werten und oder Wertadressen versehen sind, ohne Berücksichtigung der ursprünglich vorgegebenen Folge über einen Verteiler den Funktionseinheiten zur Ausführung zugeleitet werden.
    Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß jedem im Programmspeicher enthaltenen Unterprogramm ein Adressenvektor vorangestellt wird, der zu den Parametern des Unterprogramms die relativen Adressen für den Ort ihres Auftretens im Unterprogramm enthält, daß dieser Adressenvektor beim Laden des Unterprogramms in den Anweisungsspeicher in echte Anweisungsspeicheradressen umgewandelt wird, und daß aus den Einträgen des Adressenvektors und den Adressen der Variablen im Unterprogramm-
    509809/0678
    Aufrufbefehl Adressenpaare gebildet werden, worin die eine Adresse den Speicherplatz bezeichnet, auf den die andere Adresse geladen wird.
    Verfahrens nach Anspruch 1 und 2, dadurch gekennzeichnet, daß der Dateneingabe und Datenausgabe die Bildung von Wert/Adressen-Paaren vorausgeht, worin der Wert das ein- oder auszugebende Datenwort und die Adresse den Platz dieses Wortes in einem externen Eingabe- oder Ausgabespeicher angibt.
    Datenverarbeitungsanlage zur Ausführung des Verfahrens nach Anspruch 1 bis 3, dadurch gekennzeichnet, daß ein Expansionsspeicher (34) vorgesehen ist, der die zur Entnahme einer Befehlsfolge benötigte Programmspeicheradresse enthält und der eine Ladeeinheit (26) steuert, die eine adressierte Befehlsfolge in den Anweisungsspeicher (25) überträgt, daß der Expansionsspeicher für jede aufgerufene Befehlsteilfolge (Unterfolge, Subroutine) einen Eintrag aufnimmt, der in Zuordnung zu den Anweisungsspeicheradressen, auf denen die durch die Teilfolge zu verarbeitenden Variablen der Hauptfolge gespeichert sind, diejenigen Adressen des Anweisungsspeichers zugeführt erhält, auf denen die Parameter (Variable in der Teilfolge) beim Laden der Teilfolge im Anweisungsspeicher gespeichert worden sind, daß eine Übertragungseinheit (70) vorgesehen ist, die aus den Variablenadressen und den entsprechenden Parameteradressen Adressenpaare bildet, die einer Ersetzungseinheit (38) zugeführt werden, welche im Anweisungsspeicher die jeweilige Parameteradresse auf den Speicherplatz der Variablenadresse überträgt, wobei hierdurch ausführbar gewordene Befehle markiert werden, und daß ein Instruktionsverteiler (15) zur Weiterleitung verarbeitungsbereiter.Befehle aus dem Anweisungsspeicher zu einer Funktionseinheit (11 bis 13) dient, wozu jeweils der Operationscode der betreffenden Befehle zur Adressie-
    509809/0678
    rung einer zur Ausführung geeigneten freien Funktions- , einheit herangezogen wird.
    5. Datenverarbeitungsanrage nach Anspruch 4, dadurch gekennzeichnet, daß eine Übertragungseinheit (70) vorgesehen ist, die aus einem ersten Adressenvektor, der einem Unterprogramm-Aufrufbefehl zugeordnet ist, und einem zweiten Adressenvektor, der dem aus dem Programmspeicher (27) in den Anweisungsspeicher (25) zu übertragenden Unterprogramm zugeordnet ist, Anweisungsspeicher-Adressenpaare bildet, womit unter Steuerung einer Ersetzungseinheit (38) für direkt zu verarbeitende Eingangsvariable jeweils eine Adresse aus dem zweiten Adressenvektor auf eine entsprechende Adresse aus dem ersten Adressenvektor geladen wird, für Ausgangsvariable jeweils eine Adresse aus dem ersten Adressenvektor auf eine entsprechende Adresse aus dem zweiten Adressenvektor geladen wird und für Eingangsvariable, deren Verarbeitung den Aufruf eines weiteren Unterprogramms erfordert, jeweils eine Adresse aus dem ersten Adressenvektor auf eine entsprechende Adresse aus dem zweiten Adressenvektor übertragen wird.
    6. Datenverarbeitungsanlage nach Anspruch 4 und 5, dadurch gekennzeichnet, daß der Anweisungsspeicher (25) eine Abtastschaltung (73 bis 76) aufweist, die beim Laden der Befehle aus dem Programmspeicher (27) und nach jeder Ersetzungsoperation der Einheit (38) feststellt, ob im betreffenden Befehl alle Adressen- und Wertepositionen besetzt sind, und daß ein Kennzeichengenerator (88) vorgesehen ist, der dem Befehl im Anweisungsspeicher ein Verarbeitbarkeitskennzeichen hinzufügt, wenn diese Bedingung erfüllt ist.
    7. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß der Anweisungsspeicher (25)
    509809/0678
    mit dem Befehlsverteiler (15) zur übertragung der als verarbeitbar markierten Befehle verbunden ist, und daß der Befehlsverteiler eine Interpretationsschaltung (122) .aufweist, deren Ausgangssignale die Befehle zusammen mit den ihnen zugeordneten Operanden zu verfügbaren Verarbeitungs- und Funktionseinheiten (30, 34, 38, 44; 11 bis 13) weiterleitet.
    8. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis 7, dadurch gekennzeichnet, daß die Verarbeitungs- und Funktionseinheiten (30, 38, 44 und 11 bis 13) je einen Eingangsregistersatz (31, 37, 42 und 16 bis 18) zur Pufferung ausführbarer Befehle aufweisen.
    9. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, daß die Ersetzungseinheit (38) sowohl zur Steuerung von Adressen/Adressen-Ersetzungen als auch zur Steuerung von Adressen/Wert-Ersetzungen im Anweisungsspeicher (25) dient und an die Ausgänge der Übertragungseinheit (70) der Funktionseinheiten (11 bis 13) und einer mit dem Dateneingabespeicher (28) verbundenen Eingabeeinheit (44) angeschlossen ist.
    10. Datenverarbeitungsanlage nach Anspruch 9, dadurch gekennzeichnet, daß die Ersetzungseinheit (38) mit dem Befehlsverteiler (15) verbunden ist und von diesem Variablen-Einsetzbefehle (Verteilerbefehle) zur Verarbeitung zugeführt erhält.
    11. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis 10, dadurch gekennzeichnet, daß die Steuereinheiten (z.B. 44), die Funktionseinheiten (z.B. 11) und sonstige Verarbeitungseinheiten (z.B. 70) über Pufferregister (Eingangs/Ausgangsregister, z.B. 16), derart miteinander verbunden sind, daß diese Einheiten weitgehend unabhängig voneinander, asynchron und in zeitlicher Überlappung
    509809/0678
    zur Ausführung einer oder mehrerer Verarbeitungsaufgaben im Betrieb sind.
    12. Datenverarbeitungsanlage nach einem der Ansprüche .4 bis
    11, dadurch gekennzeichnet, daß die Einheiten (z.B. 11) Frei/Besetzt-Anzeigeleitungen (z.B. 56) aufweisen, über die der jeweils vorgeschalteten Einheit (z.B. 15) den Freibzw. Besetzt-Zustand der betreffenden Einheit (z.B. 11) angezeigt wird, so daß die anzeigende Einheit beim Auftreten von neuen Verarbeitungsaufgaben in der vorgeschalteten Einheit berücksichtigt oder übergangen werden kann.
    13. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis
    12, dadurch gekennzeichnet, daß eine aus dem Anweisungsspeicher (25), dem Befehlsverteiler (15), dem Expansionsspeicher (34) und der Ladeeinheit (36) bestehende Befehlsladeschleife vorgesehen ist, in welcher der Expansionsspeicher über den Befehlsverteiler Unterprogramm-Aufrufbefehle zugeführt erhält und aus diesen die Unterprogrammadressen für den Programmspeicher (27) ableitet sowie der Ladeeinheit zum Laden dieser Befehle in den Anweisungsspeicher zuführt.
    14. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis 13, dadurch gekennzeichnet, daß mehrere aus dem Anweisungsspeicher (25), dem Befehlsverteiler (15), je einer Steueroder Funktionseinheit (11, 12, 13 oder 44) und der Ersetzungseinheit (38) bestehende Ausführungsschleifen vorgesehen sind und daß der Befehlsverteiler (15) eine Weichenstellung zu jeweils einer der Ausführungsschleifen entsprechend der zu verarbeitenden Befehlsart einnimmt.
    15. Datenverarbeitungsanlage nach Anspruch 14, dadurch gekennzeichnet, daß eine der Ausführungsschleifen den Expansionsspeicher (34) und die Übertragungseinheit (70) einschließt und zur Ausführung von Adressen/Adressen-Ersetzungen dient.
    509809/0678
DE2425380A 1973-08-13 1974-05-25 Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen Expired DE2425380C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT707573A AT335202B (de) 1973-08-13 1973-08-13 Datenverarbeitungsanlage zur parallelen ausfuhrung von verarbeitungsoperationen

Publications (2)

Publication Number Publication Date
DE2425380A1 true DE2425380A1 (de) 1975-02-27
DE2425380C2 DE2425380C2 (de) 1984-04-12

Family

ID=3592491

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2425380A Expired DE2425380C2 (de) 1973-08-13 1974-05-25 Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen

Country Status (5)

Country Link
JP (1) JPS546335B2 (de)
AT (1) AT335202B (de)
DE (1) DE2425380C2 (de)
FR (1) FR2241109B1 (de)
GB (1) GB1456941A (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0061096A1 (de) * 1981-03-20 1982-09-29 Fujitsu Limited Datenverarbeitungssystem für parallele Verarbeitung
WO1986007174A1 (en) * 1985-05-20 1986-12-04 Shekels Howard D Super-computer system architectures

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2325985A1 (fr) * 1975-09-26 1977-04-22 Anvar Machine informatique electronique destinee a l'execution parallele d'un langage post-fixe
US4456958A (en) * 1982-06-08 1984-06-26 Burroughs Corporation System and method of renaming data items for dependency free code
DE3233360A1 (de) * 1982-09-08 1984-03-08 Siemens AG, 1000 Berlin und 8000 München Prozessoreinheit eines rechners
JPS59154564A (ja) * 1983-02-24 1984-09-03 Hitachi Ltd プログラマブルコントロ−ラ
JPH0355752Y2 (de) * 1985-07-27 1991-12-12
JPH07219913A (ja) * 1994-01-28 1995-08-18 Fujitsu Ltd マルチプロセッサシステムの制御方法及び装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3541516A (en) * 1965-06-30 1970-11-17 Ibm Vector arithmetic multiprocessor computing system
US3611307A (en) * 1969-04-03 1971-10-05 Ibm Execution unit shared by plurality of arrays of virtual processors
US3560934A (en) * 1969-06-10 1971-02-02 Ibm Arrangement for effecting vector mode operation in multiprocessing systems
US3614745A (en) * 1969-09-15 1971-10-19 Ibm Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof
US3648253A (en) * 1969-12-10 1972-03-07 Ibm Program scheduler for processing systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DE-Z.: Elektronische Rechenanlage 13(1971), H. 6, S. 241 bis 249 *
Us-Buch: Harold Lorin, Parallelism in Hardware and Software: Real and Apparent Concurrency, Prentice-Hall, 1972, S. 69 bis 96 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0061096A1 (de) * 1981-03-20 1982-09-29 Fujitsu Limited Datenverarbeitungssystem für parallele Verarbeitung
WO1986007174A1 (en) * 1985-05-20 1986-12-04 Shekels Howard D Super-computer system architectures

Also Published As

Publication number Publication date
FR2241109B1 (de) 1976-10-22
DE2425380C2 (de) 1984-04-12
JPS546335B2 (de) 1979-03-27
AT335202B (de) 1977-02-25
FR2241109A1 (de) 1975-03-14
ATA707573A (de) 1976-06-15
GB1456941A (en) 1976-12-01
JPS5040243A (de) 1975-04-12

Similar Documents

Publication Publication Date Title
DE1928202C3 (de) Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen
DE1901343C3 (de) Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen
DE1499193A1 (de) Datenverarbeitungsanlage
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1424732A1 (de) Elektronische Ziffernrechenmaschine
DE2758830A1 (de) Rechenvorrichtung
DE1925428A1 (de) Anordnung zur Zeichenerkennung
DE3338345A1 (de) Vektor prozessor
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE1215964B (de) Programmwerk fuer Rechenmaschinen
DE1549498A1 (de) Rechenanlage
DE2133638C3 (de) Verfahren zum Betrieb eines lernfähigen Systems aus in Kaskade geschalteten, zur nicht linearen Datenverarbeitung geeigneten lernfähigen Datenverarbeitungseinheiten
DE3518818C2 (de)
DE2425380A1 (de) Verfahren und datenverarbeitungsanlage zur parallelen ausfuehrung von verarbeitungsoperationen
DE2617485C3 (de) Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen
DE2245284A1 (de) Datenverarbeitungsanlage
DE2459476C3 (de)
DE2644180C3 (de) Datenverarbeitungssystem
DE1957600C3 (de)
DE2057587A1 (de) Inhaltsadressierter Speicher
DE2459476A1 (de) Schaltungsanordnung fuer nichtzyklische datenpermutationen
DE2419836C3 (de) Schaltungsanordnung zur Durchführung von Unterprogramm-Sprungbefehlen in Datenverarbeitungsanlagen
DE2022921A1 (de) Verarbeitungseinheit fuer Buchungsmaschinen

Legal Events

Date Code Title Description
OD Request for examination
8125 Change of the main classification

Ipc: G06F 9/38

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee