DE2425380C2 - Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen - Google Patents

Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen

Info

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

scher und/oder logischer Operationen vorgesehen sind, denen über eine geeignete Auswahlschaltung von dem das Programm enthaltenden Speicher Befehle zugeführt werden (Harold Lorin: »Parallelism in Hardware and Software: Real and Apparent Concurrency«, Prentice-Hall, 1972, Seiten 69-96). Die Anordnung kann auch so getroffen sein, daß beispielsweise 10 spezielle Funktionseinheiten an die Auswahlschaltung angeschlossen sind. Die Programmbefehle werden durch Mehrfachzugriff aus dem Speicher entnommen und in Pufferspeichern aufbewahrt, bis durch die Auswahlschaltung eine Verteilung auf freie, zur Ausführung der Befehle geeignete Funktionseinheiten erfolgen kann. Diese Anordnung ist um so wirksamer, je mehr Programmbefehle zur gleichen Zeit ausführbar sind. Sie enthält aber keine Einrichtungen, die dafür sorgen, die Zahl der ausführbaren Befehle durch Vorausschau zu vergrößern, sondern beschränkt sich darauf, nicht ausführbare Befehle so lange zwischenzuspeichern, bis sich ihre Ausführbarkeit mit Fortschreiten des Programmablaufs ergibt.
Aufgabe der Erfindung ist es, eine Datenverarbeitungsanlage nach dem Oberbegriff des Anspruchs 1 anzugeben, die mit relativ geringem Einrichtungsaufwand durch eine verbesserte Feststellung und Vorbereitung der parallel ausführbaren Operationen in erhöhtem Maße Parallelarbeit bei der Ausführung von Verarbeitungsoperationen gestattet, die einer sequentiellen Programmstruktur gehorchen. Die Merkmale zur Lösung dieser Aufgabe sind im Patentanspruch 1 gekennzeichnet. Die Unteransprüche geben verschiedene vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung an.
Nachfolgend ist ein Ausführungsbeispiel der Erfindung anhand von Zeichnungen erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer erfindungsgemäß ausgebildeten Datenverarbeitungsanlage,
Fig. 2 u. 3 Flußdiagrammc eines Anwendungsbeispiels für die Datenverarbeitungsanlage von Fig. 1.
Fig. 4 u. 5. Beispiele für die Speicherbelegung in der Datenverarbeitungsanlage von F i g. 1 bei der Ausführung des Anwendungsbeispiels gemäß Fig. 3,
Fig. 6 ein Blockdiagramm des Befehlsverteilers der Datenverarbeitungsanlage in Fig. 1,
Fig. 7 ein Blockdiagramm einer Funktionseinheit, wie sie in der Datenverarbeitungsanlage von Fi g. 1 verwendbar ist,
Fig. 8 ein Blockdiagramm eines Ausführungsbeispiels der Ersetzungseinheit in der Anlage von Fig. 1, Fig. 9 ein Blockdiagramm eines Teiles der Steuerschaltungen für den Anweisungsspeicher in der Datenverarbeitungsanlage von Fig. 1,
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.
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 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 Eingaberegistem und Ausgaberegistern erheblich größer sein, wenn dies der Anfall der zu verarbeitenden Daten geboten erscheinen läßt.
Der Befehlsverteiler erhält verarbeitungsbereite
so 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 25 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 31 vorgeschaltet ist, dem Datenausgabespeicher 32 zugeleitet werden.
Die im Speicher 27 gespeicherten Programme und Unterprogramme bestehen aus Befehlsfolgen, wie sie nun anhand eines Verarbeitungsbeispiels erläutert werden soll.
Ais Beispiel sei
zu berechnen, wobei .Wein beliebiger positiv ganzzahliger Wert sein kann und die Quadratwurzel aus jc mit einer Fehlergenauigkeit von/zu bestimmen ist. Diese Aufgabe kann in bekannter Weise unter Verwendung des aus F i g. 2 ersichtlichen Algorithmus gelöst werden. Hierin sind Feine Hilfsvariable und π ein Laurwert zur Zählung der Iterationsdurchläufe, der am Beginn der Verarbeitung auf 1 voreingestellt wird. Dieser Algorithmus wird zur Ausführung in der dargestellten Daten-
b5 vearbeitungsanlage entsprechend der aus F i g. 3 ersichtlichen Weise umgeformt, indem zusätzliche Hilfsvariable v, w, p, q eingeführt werden. Die Darstellung gemäß Fig. 3 kann durch folgendes Programm aus-
7 8
gedrückt werden (die entsprechende Programmumformung ist nicht Gegenstand dieser Erfindung).
V:: = {read/[fromÄl];read/V[fromÄ2];n: = 1;^: = O;S[n,f,yoN;y); write>-[to Wl]\ (Ul)
S[n,f,y„.N;y]:: = {x0: = n; ä[jc0, «,/; x];yi: = yo + xü q: = n = N; Q(q)[n,f,yh N:y]) (U 2)
R[x0, n,f:x)y. = Jv0: = x0 2; v,: = %-n\w: = 2xo;F: = v,/*;*,: = X0-F; ν: = F; ρ: = v</; Ρ(ρ)[χι, «,/; χ]}
PiP) Ix0. ruf: x]::-
ρ=1-{χ:=Λ·0} (U4)
(U 5)
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/[from R I]«. Dies bedeutet, daß der Fehlergenauigkeitswert/von der Adresse R1 des Eingabespeichers 28 zu lesen und der Verarbeitung zuzuführen ist. Dementsprechend stellt der Befehl »write [yto Wt]« einen Ausgabebefehl dar, der besagt, daß der Resultatwert y auf die symbolisch bezeichnete Adresse W\ im Ausgabespeicher 32 zu übertragen ist.
Die Befehle der Form n: = 1 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,/, jfo, N: y] bezeichnenden 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 β beinhalten jeweils zwei Alternativen, deren Wahl von einer hinter den Prozedurnamen in Klammern stehenden Eingabevariablen abhängt Im Falle der Prozedur β ist dies die Variable q und im Falle der Prozedur i*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
Das oben angegebene Programm hat die Eigenschaft, daß ;n ihm jede Variable höchstens einmal beschrieben wird. Die Anzahl der Lesevorgä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 Speicherstelle, wo dieser Wert während der Verarbeitung benötigt wird. Derartige Übertragungen, die neben einem Lesevorgang auch einen Schreibvorgang
jo umfassen, können im Programm durch Übertragungsbefehle ausgedrückt werden.
Eine solche Wertübertragung läßt sich in einfacher Weise dadurch verdeutlichen, daß die Verwendungsstellen von ein und derselben Variablen ν durch Umbenennungen vi, ... , v„ voneinander unterschieden werden. Dementsprechend wird dem Programm ein Verteilerbefehl V1,..., v„: = ν hinzugefügt wird, der die Bedeutung hat, daß der Wert von ν nach den Speicherstellen von Vi,..., 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: =/(*) und der Prozedur E [a: c] 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': =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.
Das oben bei Ul bis U 5 angeführte Programm kann durch Einführung γοη Verteilerbefehlen und Piifferbefehlen der erläuterten Art in die folgende form umgeschrieben werden:
9 10
:: = {read/[fromAl];reädMfrörnÄ2];n: = l;jt,: = Q;S[n,f,yoN:y];wnttyito Wi]) Ay0, N: y]:: = {x0, n„n2,/I3: = H-J1J2: = f;NhN2: = JV; X01: =xo;«u: = "w/il· =/i;
i: = n2 = /V1; n31: = «3;/21: = f2;yu: = .V|:/V21·. = A2;
R[X0, η,f: χ):: = {xhX2,X3: = χοι1: = η;/,,/2: = /;»b: =*?; V1: = Hj-Πι; >ν: = 2χ2; F: = ν,/κ>; (U8) F1, F2: - F; X1: = X3-F1; ν: = F2; ρ: = ν</,; X11: = X1; π21: = π2;/21: = /2; Ρ(ρ) [X11, «2„/2i: *)}
ρ = 1 - {χ: = χοί
(U 9)
= 1
{y:
{η:
Die so erhaltenes 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, 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 "7J) eines Basisbefehls (Zuweisungs-, oder Lese- oder Schreibbefehl) vor. In diesem Falle wird die am Ort der (UlO)
Definition im Programm stehende Variable durch die relative Adresse der Stelle ersetzt, an der die Variable im Programm »rechtsseitig« auftritt. Dies wird beispielsweise durch 'S: = f(b) und c: = g(a) bezeichnet, wobei 3" eine Adresse darstellt und α 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 hochgestelltem Pfeil dargestellt sind (durch Unterstreichung im Adressvektor sind ferner solche Eingabevariablen gekennzeichnet, die innerhalb des Programmtextes
so wiederum als Parameter auftreten; sie werden als indirekte Eingäbevariablen von den direkten, nicht unterstrichen, unterschieden):
V:: = {read/[fromÄl];readtf[fromÄ2];n: = l;^:=0; [S n,f,yl N1S]; write y[toWl]j S :: = [n,f, 5b, N1S] tfo, «i, «2, "3- = "-,TiJi- =f;N\, N2: = N; X0^:= X0; nu: = «,;/„: =/,; , "\uf\\·· *il;7\·- =Λ+*ι;«Γ: = "2 = ^1; n31: = n3;/21: =/2;ΛΓ. =yüNn: = N2;
(Uli)
(U 12)
R:: = [X0, Xf: x] {x„ X1, x3: = X0; ιζ, /ξ: = nJ}J2: =/; %: = χ,2; ν. = V0 - B1; w: = 2x2; F: = V1Iw; (U 13) F1, F2: = F; X10: = X3 -F1; r. = |F2|; p: = v</i;
h.\i fi\'·χ])
P=I-
P = 2-
^r: χ] ix:
(U 14)
(U 15)
q = 2 -
My~] {/f: =
, W:
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 Prozeduraltemative 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: fT] hat und der formale Adressenvektor mit den absoluten Adressen durch [?: 7] dargestellt ist dann wird die Adresse ? auf den Speicherplatz mit der Adresse <f Überträgen. Bei indirekten Eing^ngsvariablen und Ausgangsvariablen erfolgt der Übertragungsvorgang in umgekehrter Richtung. Dementsprechend wird in obigem Beispiel die Adresse b auf den Speicherplatz mit der Adresse 7 ü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 Patenyerarbejtungsanlage von Fig. 1 geschieht Die obei» srjäuterten Progra.mmumsetzungen können unter Verwendung eines geeigneten Übersetzerprogramms (Compilers) erfolgen, 4er nicht Gegenstand vorliegender Erfindung ist
Die Funktion 4er Spejchereinhejten 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 U11 bis UIS bezeichnete Programm. In diesem Speicher befindet sich für jede Prozedur oder Prozeduraltemative ein Eintrag, der
2c aus einem Prozedurnamen, z.B. P, einer Zahl, die die Prozeduraltemative angibt einen Adressenvektor und dem Text des Programms. In F i g. 4 ist ein Beispiel eines Eintrags im Speicher 27 dargestellt, das der Prozeduraltemative Pl des oben erläuterten Rechenbeispiels entspricht Die Adressen im Adressenvektorfeld sind relativ zum jeweiligen Programmtext angegeben, der jeweils mit der Adresse 0 beginnt. Der Speicher 27 kann in für sich bekannter Weise als Assoziativer Speicher ausgebildet sein, der eine Inhaltsadressierung über die den Prozedumamen enthaltende Speicherfeldspalte gestattet. Sofern dagegen der Speicher 27 als wahlfrei adressierbarer Speicher ausgebildet ist, kann er mit dem Eingabespsicher 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 noch zu beschreibender Weise Programmbefehle in den Anweisungsspeicher 25 übertragen.
Diese Befehle sind entweder Zuweisungsbefehle (z. B. T: = vl/W) oder Eingabe/Ausgabebefehle (z. B. read/ [from R I]) oder Expansionsbefehle
(P(b) t?n, /ζ,,/21 : ST)).
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
so 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:
<Π» = 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 JD durchgeführt, wird, werden alle verarbeitungs-
bereiten Befehle dem Speicher entnommen und dem Befehlsverteiler 15 zugeführt.
Der Befehlsverteikr 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: Programme, 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 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 [a, F], worin F eine Adresse des Dateneingabespeichers 28 ist und ZT eine Adresse des Anweisungsspeichers 25 ist, aufweiche 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 3" die Adresse Z1 und für F die Adresse R1. 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 Befehlsverteikr 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, üf] ab. In diesem Wertepaar stellt ν einen Resultatwert dar, der zum Speicher 32 zu übertragen ist, und ~a ist eine Adresse im letztgenannten Speichsr. üas 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 von einem Verteilerbefehl unterscheidender Zuweisungsbefehl ist, dann wird von Befehlsverteiler 15 eine der Leitungen 46 bis 48 zu einer dem Typ dieses 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 ieigt ein Beispiel für den Aufbau des Befehlsverteilers 15. Er besitzt ein Befehlsregister 120
is bzw. einen Satz derartiger Register. Der Ausgang des Registers 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 Vielfachtorschaltung 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 Befehls 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 mit den Sammelleitungen 46,47 und 48 in Verbindung stehen. Letztere Sammelleitungen stellen die Eingänge der Register 16, 17 und 18 in F i g. 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. Zum Beispiel 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 Bitstellen im Register 128 weist eine Ausgangsleitu.ig auf, die jeweils dann signalführend ist, wenn in die betreffende Bitstelle
so 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ählei geschaltet und erhält Taktsignale Γ15 zugeführt. Hierzi dient eine mit den Ausgängen der UND-Schaltun gen 126 verbundene ODER-Schaltung 131, eine Inver terschaltung 132 und eine Torschaltung 133, wenr keine der UND-Schaltungen 126 ein Ausgangssigna erzeugt. Befindet sich beispielsweise die äußerst! rechte Bitstelle des Besetzt-Registers 128 im Frei Zustand und der Abtastzähler 127 in seiner äußerstei rechten Abtastposition, dann ist die UND Schaltung 130 geöffnet und liefert ein Steuersignal zu
b5 Torschaltung 129. Hierdurch wird der im Befehlsein gaberegister 120 befindliche Befehl über die Sammel leitung 123, die Vielfach-Torschaltungen 124 und 12 und die Sammelleitung 46 zum Eingangsregister 16 de
Funktionseinheit 11 übertragen.
Der untere Teil der Schaltung von Fig. 6 dient somit zur laufenden Abtastung der Funktionseinheiten 11 bis 13 und zur Übertragung des im Register 120 stehenden Befehls zu einer freien Funictionseinheit Wenn eine Funktionseinheit ihre Operation beendet hat, erzeugt sie jeweils auf der Frei/Besctzt-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 52 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 nä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.
Die Funktionseinheiten 12 und 13 in Fig. 1 sind ähnlich aufgebaut wie die in Fi g. 6 dargestellte Funktionseinheit U, 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 16 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 23 gelieferten Resultatsignale bestehen jeweils aus einem Wertepaar [S v], wobei α 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 Ersetongseinheit3S verarbeitet Felder der Art [au... "Sn v], worin die verschiedenen Werte ~a Adressen des Anweisungsspeichers 25 und ν ein zu verarbeitender Wert sind. Die Funktion der Ersetzungseinheit 38 besteht darin, den Wert ν auf die angegebenen Anweisungsspeicheradressen ei,... ^, zu übertragen. Hierbei kann die Zahl der angegebenen Adressen α zwischen 1 und der Zahl η liegen, die durch die Stellenzahl in den Eingangsregisiern 21, 22, 23, 37, 45 und 58 der Erset-ο zungseinheit 38 begrenzt ist Die F i g. 8 zeigt ein vereinfachtes Blockschaltbild der Ersetzungseinheit Die Ersetzungseinheit umfaßt ein Zeigerregister 61, das gis 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 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 Torschaltungen 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 S des Belegungsbeispiels für den Speicher 25 handeln, das die F i g. 5 zeigt. Die Speicherzyklussteuerung liefert nacheinander auftretende und sich zyklisch wiederholende Taktimpulse Π, TL und Γ3. Die Taktimpulse Π dienen dazu, den Inhalt des Zeigerregisters 61 jeweils um 1 inkrementieren, um damit die jeweils nächste Adresse ~3 im Register 62 zu adressieren. Die Taktimpulse Tl dienen zur Übertragung der adressierten Adresse aus dem Register 62 in das Adressenregister 66. Vor Beginn der Taktimpulszyklen Tl, Tl wurde durch einen Anfangstaktimpuls TO die Torschaltung 64 geöffnet zur Übertragung des Wertes ν im Register 68 in das Speichereingangsregister 67. Die Taktimpulse Γ3 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 S zur Adressierung des Speichers 25 benutzt worden ist, wird
so 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 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 U, 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
es 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 F i g. 7 schematisch dargestellte Sammelschaltung 69 züge-
fü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 Verarbeitungsgeschwindigkeit 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 F i g. 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 Anzeigeschaltungen 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. -dekrementierung, um eine Adressenkonstante Z., 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;', an welcher der Ei setzungswert 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 81 öffnet uiid 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 Adresseninkrcmentier-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 Kennzeicljen in der ersten Bytestelle des Registers 71 festgestellt wird, erzeugt die Schaltung 73 ein Abtastung-Ende-Signal, das eine weitere Inkrementierung der Adresse im Register 66 unterbindet. Wenn zu diesem Zeitpunkt die EXKLUSIV-ODER-Schaltung 76 ein Ausgangssignal erzeugt, so ist die 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 Ausgangssignal 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 "/on einem Zeichengenerator 88 bereitgestellten Verarbeitbarkeitskennzeichens ID in die erste Bytestelle des Registers 71. Hiermit wird das bisherige Verarbeitbarkeitskennzeichen Λί/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.
!n 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 üugefü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 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äß Fig. 3 auftritt. Der 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 Herstel-
M) lung 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,
bi der mit der gleichnamigen Prozedur U 12 (siehe 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 iK 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 5 auftreten (vgl. hierzu den Ausdruck U11). Das Feld 95 besteht aus Speicherstellen, 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 Sammel'eitung 35 zugefuhrten Signalen nur die Felder 92, 93 und 94 belegt. Das Feld 91 ist anfänglich stets auf LU gesetzt, während das Feld 95 anfangs Leerstellen 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 51. Diese Entnahme geschieht in der oben beschriebenen Weise, indem mit dein Inhalt der Felder 92,93 im Speicher 27 ein assoziativer Zugriff zur Prozedur 5 1 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 ist 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 25 übertrafen. Dabei werden die in öer 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 hinzuad<1iert, 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 Variablen n, /, usw. (vgl. oben U 12). 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 Oneration der Ladeeinheit 26 besteht darin, den formalen Adressenvektor im Feld 95 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, /, λ, N, y. Die relativen Adressen der Leerstellen dieser Variablen werden in echte Speicheradressen des Anweisungsspeichers 25 in der oben beschriebenen 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 Ladeeinhe-t 26 weist ferner eine Schaltung auf zur Feststellung, ob der zu lad nde 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 Parameterstellen Adressen aufweist. Dies geschieht durch eine Schaltung, die der in Fig. 9 dargestellten ähnlich ist. Durch entsprechende Anzeigeschaltungen werden die Leerstellen, das Befehlsende und der Ort der Verarbeitbarkeitskennzeichenstelle festgestellt. Wenn es sich um eine verarbeitbare Instruktion handelt, wird das Verarbeitbarkeitskennzeichen auf »/D« 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 Anweisungsspeicher 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.
•to 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
4> tatsächliche Adressenvektor befindet sich im Feld 9»4 dieses Speichers und kann beispielsweise die folgende Form haben
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
[ei <v ~d\ Z]-
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
b5 95 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:
[ah q) für direkte Eingangsvariable
\Cj, β)] für indirekte Eingangsvariable und
[dk, i>J für Ausgangsvariable
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. 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 U 15 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 94 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 Eingangsregister 58 zugeführt, das zur Aufnahme einer Vielzahl derartiger Adressenpaare eingerichtet ist. Der Inhalt des Registers 58 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 Beispie! angegebenen Adresse η vektoren wird beispielsweise die Adresse c{ auf die Speicheradresse aj eingespeichert, die Adresse /T1 wird auf die Adresse 3j eingespeichert, und die Adresse ~a„ wird auf die Adresse Tn 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 iOl 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 94 mit Auftreten eines Taktsignals 7"eine Inkrementierung des Inhaltes des Registers 101 vornimmt als Vorbereitung für die Entnahme des nach rechts folgenden Eintrags. In dergleichen Weise dient das Register 102 zur Adressierung des Feldes 95 unter Mitwirkung einer !nkrernentiereinheit 104. Mit Hilfe der Register 101 und 102 werden im Speicher 34 jeweils 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 Wt;se, 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 95 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 nicnt dargestellte Mittel zur Aufnahme aufeinanderfolgende 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 Befehlsverteiler über eine Sammelleitung 41 Adressenpaare der Form [öT T] zugeführt als Folge eines Lesebefehls, der im Befehlsverteiler 15 auszuwerten ist. Hierin ist <? eine Adresse des Anweisungsspeichers 25 und F eine Adresse des Dateneingabespeichers 28. Diese Adressenpaare werden der Eingabeeinheit 44 zugeleitet, die daraufhin einen Wert ν von der angegebenen AdressejT
liest und in dem ihr zugeführten Wertepaar [a, S] ersetzt, so daß dieses Wertepaar die Form [a, v] 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 Leseregistcr 42 gelöscht.
Das Schreibregister 31 erhält über eine Sammelleitung 45 vom Befehlsverteiler 15 Wertepaare der Form [v, o"] zugeführt, worin ν ein Resultat und a" eine Adresse des Datenausgabespeichers 32 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 die weiterbehandelnden bzw. ausführenden Einheiten 11 bis 13, 26, 34, 38, 44 weiterzuleiten. Auf Unterprogramme bezogene Befehle (Unterprogrammaufrufbefehle 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 Anwei-
sungsspeicher 25. Diese Befehle werden wiederum auf Ausführbarkeit geprüft.
Der Anweisungsspeicher 25, der Befehlsverteiler 15, der Expansionsspeicher 34 und die Ladeeinheit 26 bil-
den somit eine Befehlsladeschleife zur laufenden Erweiterung und Auffüllung des Inhalts des Anweisungsspeichers 25.
In Verbindung mit diesen AufFülloperationen werden auch die Übertragungseinheit 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 Eingabeeinheit 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 Ausfuhrungsschleife 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 beschriebenen Einheiten der Anlage von F i g. 1 arbeiten im wesentlichen selbständig und weitgehend unabhängig voneinander. Jede der dargestellten Speicher und sonstigen Einheiten teilt der ihr in Pfeil-
richtung nachgeschalteten Einheit durch ein entsprechendes Bereitschaftssignal mit, daß für sie ein 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 Fig. 1 weitgehend asynchron je nach Anfall verarbeitbarer Daten. Durch die Art der zugeführten Programme (vgl. die Ausdrücke U H-U 15) ist eine hochgradige Unabhängigkeit bei der Ausführung von Verarbeitungs-
aufgaben gewährleistet.
Im folgenden wird die Operation der Anlage von Fig. 1 bei der Ausführung des Anwendungsbeispiels gemäß Fig. 3 und den obigen Ausdrucken U 11-U 15 erläutert. Der Anfangszustand der Anlage ist durch fol-
gende Speicherbelegungen gegeben: Der Dateneingabespeicher enthält für/den Wert 0,1 an der Adresse R1 und für N den Wert 2 an der Adresse R 2. Der Expansionsspeicher 34 enthält als einzige Eintragung <Li/>V;. Der Programmspeicher 27 enthält alle Proze-
duren 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
'l '2 '3
<RU> read [from Al]; <RU> read ^ [from Rl]; <RU>l_l. = 1;
<RU>
0; <Π)> SIi3, /„ /4, i2 : I5]; <RU>
Hierin sind die im Programmtext auftretenden relativen Adressen mit Adressensymbolen /" bezeichnet, das gleiche trifft zu für die relativen Adressen der Variablen-Leerstellen, die durch ein über die betreffende Position gesetztes Adressensymbol ik gekennzeichnet sind. Wie die Verarbeitbarkeitskennzeichen der geladenen
<LU>SlIhJu U,
[L
[to WI];
Befehle erkennen lassen, ist lediglich der Expansionsbefehl S ausführbar, der unter Wirkung des Befehlsverteilers 15 zu folgender Eintragung im Expansionsspeicher 34 führt (der ursprüngliche Inhalt des Speichers 34 wurde vor Entnahme der Prozedur aus dem Speicher 27 gelöscht):
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 Anweisungsspeichers um folgende Befehle erweitert:
/6
<RU> Z10, Z12, h, '20: =,
4, '22 : = ^; <RU> 'ig, '26 =
'Ίο
'11
'12
'14
R I'
<RU> /24 :=,
J16
hl '18
'19
'20
'21
'22
'23
'25 '26
'28
<RU> Oi1-1) Vw, hu hi, hs:,__,];
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> Sl[Z3, /,, I4, I2 : I5] [Z6, /7, Zi5, Z8 : Z28]
Hiernach kann die Übertragungseinheit 70 zu arbeiten beginnen. Diese Einheit erzeugt gemäß der obigen Beschreibung folgende Eintragungen in ihrem Ausgangsspeicher 112:
<RU>[h, Z6]; <RU>[iu Z7]; <Ät/>[/4, Z15]; <RU>[ih Z8]; <RU>[Z28,Z5]
Der Eintrag im Expansionsspeicher 34 wird daraufhin gelöscht. Mit den von der Übertragungseinheit 70 über das Eingangsregister 58 der Erseteungseinheit 38 zur Verfügung gestellten Wertepaaren werden folgende Ersetzungen im Anweisungsspeicher 25 vorgenommen:
<ID> read Z7 [from R1]; </D> read Z8 [from R 2]; <ID> Z6: = 1;
</D>i15: = 0;...<RU>write ,
'7 '8
<RU>iX4, Z22 :=,_,; <Λί/>ι18, Z26: = ,_,
<*{/>,_:=,_,; <n»R[i9, /„,Z13: Z16];
'17 '18 '19 '20
[Ιο»Ί];<Λ(/>Ζ10, Z12, Ζ17:
'9 '10
Ίΐ
'12
'21
'15 '16
'22 '23
'24
'25 '26 '27
: = ^ ; <RU>Q() [Z19, Z21, Z23, Z25 : Z5];
Hierin sind wiederum alle Instruktionen mit dem Verarbeitkeitskennzeichen <ID> ausführbar. Die Verarbeitung von <ID> read Z8 [from R 2] ergibt beispielsweise, neben dem Löschen dieses Befehls im Anweisungsspeicher 25, den Eintrag [Z8, R 2] im Leseregister 42. Dieser Eintrag veranlaßt die Eingabeeinheit 44, eine Wertentnahme im Speicher 28 auszuführen und als Resultat desselben das Wertepaar [Z8, 2] zum Eingangsregister 45 der Ersetzungseinheit 38 zu übertragen.
Im weiteren Verlaufe ergeben sich
Z10, zt2, i^j2o- = i;
<ID> Zj8, Z26: = 2
und nach weiteren Schritten schließlich
<E» i21: = 1=2
als Eintragungen im Anweisungsspeicher 25. Der letztere Befehl wird vom Befehlsverteiler als logische Vergleichsoperation erkannt und in der Form Z27, =, [1,2] 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 [Z27,2] im zugehörigen Ausgangsregister 21,22 oder 23 eingespeichert, wobei 2 vereinbarungsgemäß den Wahrheitswert »falsch« bzw. »nein« repräsentiert.
Auf die gleiche Art und Weise läuft die weitere Operation ab, bis schließlich im Anweisungsspeicher 25 der Befehl </D> write 2,417 [to Wl) erscheint, der vom Befehlsverteiler 15 als Schreibbefehl erkannt und über die Leitung 45 dem Schreibregister 31 zugeführt wird.
5(i 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äß F i g. 3 beendet. Die Anlage von F i g. 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
Hierzu 4 Blatt Zeichnungen

Claims (10)

Patentansprüche:
1. Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen entsprechend einer Folge von Befehlen, mit einem Befehlsspeicher zur Aufnahme von verarbeitbaren und zur Verarbeitung vorzubereitenden Befehlen, mit mehreren Funktionseinheiten zur Ausführung der Befehle und mit einem mit dem Ausgang des to Befehlsspeichers verbundenen, die Befehle nach ihrer Art unterscheidenden Befehlsverteiler, von dem mehrere Ausführungspfade ausgehen, denen zur zeitlich überlappt und unabhängig voneinander erfolgenden Verarbeitung Befehle zugeführt werden und die Funktionseinheiten zur Ausführung arithmetischer und/oder logischer Operationen enthalten, dadurch gekennzeichnet, daß mit dem Eingang des Befehlsspeichers (Anweisungsspeicher 25) eine Einsetzschaltung (Ersetzungseinheit 38) verbunden ist, an der Ausführungspfade (35, 36, 41 und 46 bis 48) münden und vermittels der jeweils ein in Ausführung eines Befehls über einen der Pfade zugeführter Wert (Parameter, Resultat, Adresse) auf wenigstens eine vom 3efehl mitgeführte Adresse im Befehlsspeicher übertragen wird, daß ein Teil der Ausfuhrungspfade (41,49) Eingabe- oder Ausgabeeinheiten (44, 30) enthält und daß ein weiterer Teil der Ausführungspfade (35,36) Vorbereitungsschaltungen (34, 26, 70 und 38) zur Ausführung von Befehlen enthält, die zur Zuführung neuer Befehlsfolgen zum Befehlsspeicher sowie zur Zuordnung und Verteilung von Adressen und Parametern zu den zur Ausführung vorzubereitenden, noch nicht als verarbeitbar markierten Befehlen dienen.
2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, dab ein die Ausführung von Parameter-Verteilbefehlen betreffender Pfad (36) vom Befehlsverteiler direkt zur Einsetzschaltung (Ersetzungseinheit 38) führt, die einen im Befehl enthaltenen Parameter (z. B. einen variablen Operandenwert) einer oder mehrerer ebenfalls im Befehl enthaltener Adressen des Befehlsspeichers (Anweisungsspeicher 25) zuweist.
3. Datenverarbeitungsanlage nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß ein den Aufruf neuer Befehlsfolgen betreffender Pfad (35) einen Befehlszwischenspeicher (Expansionsspeicher 34) enthält, der einerseits eine Befehlsteilfolgen-Ladeschaltung (Ladeeinheit 26) des Befehlsspeichers steuert und zum anderen eine Zuoidnerschaltung (Übertragungseinheit 70) speist, die aus jeweils auf den Befehlsspeicher (Anweisungsspeicher 25) bezogenen Parameteradressen des Aufrufbefehls und aus Adressen der gleichnamigen Parameter in der neu geladenen Befehlsfolge Adressenpaare bildet, für die die Einsetzschaltang jeweils die eine Adresse auf dem Speicherplatz der anderen Adresse im Befehlsspeicher (Anweisungsspeicher 25), speichert. t>o
4. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß als Teil des Befehlsspeichers (Anweisungsspeicher 25), eine Befehlsabtast- und Markierschaltung (Fig. 9) vorgesehen ist, die bei einer Befehlsteilfolgen- t>5 Lacieoperation sowie nach einer Operation der Einsetzschaltung (Ersetzungseinheit 38) den bzw. die betreffenden Befehle darauf abtastet, ob alle zur Ausführung benötigten Parameter und Parameteraaressen enthalten sind, und die den Befehl als verarbeitbar markiert, wenn dies der Fall ist
5. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß eine jede Datenvariable eines Befehls so viele Speicherplätze im Befehlsspeicher (Anweisungsspeicher 25) besitzt, wie für die Datenvariable Verwendungsorte innerhalb der im Befehlsspeicher enthaltenen Befehlsfolgen existieren.
6. Datenverarbeitungsanlage nach Anspruch 3 oder Anspruch 3 und einem der Ansprüche 4 oder 5, dadurch gekennzeichnet, daß der Befehlszwischenspeicher (Expansionsspeicher 34) zwei separat und parallel adressierbare Bereiche (94, 95) enthält, wobei der eine Speicherbereich (94) zur Aufnahme von Adressen der Variablen eines im Befehlsspeicher (Anweisungsspeicher 25) enthaltenen Aufrufbefehls und der zweite Speicherbereich (95) zur Aufnahme von Adressen derjenigen Speicherplätze dient, in die die Parameter der aufgerufenen Folge von Anweisungen im Befehlsspeicher (Anweisungsspeicher 25) eingegeben werden, daß die Zuordnerschaltung (Übertragungseinheit 70) eine Adressierschaltung (101 bis 104) für beide Pufferspeicherbereiche (94, 95) aufweist, die zur Paarung einander entsprechender Adresseneinträge dient, und daß der Ausgang der Zuordnerschaltung mit der Einsetzschaltung (Ersetzungseinheit 38) verbunden ist, die eine der Adressen des gebildeten Paares auf den von der anderen Adresse dieses Paares bezeichneten Platz im Befehlsspeicher (Anweisungsspeicher 25) speichert.
7. Datenverarbeitungsanlage nach einem der Amsprüche 1 bis 6, dadurch gekennzeichnet, daß die Funktionseinheiten (30,38,44 und 11 bis 13) in den Ausführungspfaden Eingangs- und/oder Ausgangsregister (31, 37, 42 und 16 bis 18) zur Pufferung ausführbarer Befehle aufweisen, so daß diese Einheiten weitgehend unabhängig voneinander, asychron und in zeitlicher Überlappung zur Ausführung einer oder mehrerer Verarbeitungsaufgaben im Betrieb sind.
8. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Einheiten (z. B. 11) Frei/Besetzt-Anzeigeleitungen (z. B. 56) aufweisen, über die der jeweils vorgeschalteten Einheit (z. B. 15) der Frei/ bzw. 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.
9. Datenverarbeitungsanlage nach Anspruch 3 oder Anspruch 3 und einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, daß der Befehlszwischenspeicher (Expansionsspeicher 34) Befehlsfolgen-Adressen für einen Programmspeicher (27) an die Befehlsteilfolgen-Ladeschaltung (Ladeeinheit 26) liefert, die diese zum Laden der Befehle eines Unterprogramms in den Befehlsspeicher (Anweisungsspeicher 25) benutzt.
10. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß der Befehlsverteiler (15) einen durch Schreibbefehle
aktivierten Ausgang (49) aufweist, an dem über eine Ausgabeeinheit (30) ein Datenausgabespeicher (32) angeschlossen ist, der zur Aufnahme von nicht weiter zu verarbeitenden Resultatwerten die at.
Die Erfindung betrifft eine Datenverarbeitungsanlage nach dem Oberbegriff des Anspruchs 1.
Programme für bekannte Datenverarbeitungsanlagen sehen vor, daß eine Datenverarbeitungsaufgabe in eine Sequenz von Einzeloperationen zerlegt wird. Diese zumeist sehr zahlreichen Einzeloperationen werden nacheinander ausgeruhn, 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 21; 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 Datenverar- r> beitungsanlage dieser Art besteht aus mehreren selbständigen Verarbeitungseinheiten und mehreren selbständigen Speichereinheiten, die als assoziative Speicher ausgebildet sind (deutsches Patent 14 74 047). Bei dieser Datenverarbeitungsanlage werden die Befehls- so Wö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 a binären Programmbaum definiert. In einer der eigentlichen Programmaustü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. Mit den ibgeleiteten 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 Auf- bo nähme und Ausführung verarbeitungsbereiter Programmbefehle vorhanden sind, erfolgt die Programmierung wenigstens teilweise parallel. Dabei werden parallel ausführbare Programmbefehle automatisch ermittelt und in Verarbeitung genommen. es
Die bekannte Datenverarbeitungsanlage hat den Nachteil, daß sie die Verwendung von teuren assoziativen SDeichem erfordert. Außerdem ist die Erkennung von parallel ausführbaren Operationen auf di« 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 Verarbeitungsaufgabe häufig durchlaufen werden, kann eine Parallelität jeweils nur innerhalb eines Schleifendurchlaufes 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 Offcnlegungsschrift 20 04 886). Aus den zu übersetzenden Befehlsfolgen wird eine Verfügbarkeitsmatrix abgeleitet, deren Zeilendimension den Befehlsausgängen und deren Spaltendimensionen den einzelnen Befehlen der Folge zugeordnet sind. Desgleichen wird für die Eingabebefehle eine Eingangsanforderungsmatrix gebildet, die der Verfügbarkeitsmatrix ä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.
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 Programmstruktur 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.
Es sind ferner Rechnerstrukturen bekannt, die nach dem First-in-first-out-Konzept sowie nach dem Pipeline-Prinzip arbeiten (Elektronische Rechenanlagen, 1971, Heft 6, Seiten 241-249). Zu diesem Zweck weist der Rechner bestimmte Funktionseinheiten mehrfach auf, von denen jede vom Befehlswerk eine Reihe von Aufträgen zugewiesen erhält, die in der Reihenfolge der Zuweisung abgearbeitet werden. Die Funktionseinheiten können so ausgebildet sein, daß die Arbeit an einem neuen Auftrag bereits begonnen werden kann, bevor der vorausgegangene Auftrag beendet ist (Pipeline-Prinzip). Dies gilt jedoch unter der Einschränkung, daß für den auszuführenden Auftrag keine Wartebedingungen existieren. Auch bei dieser Anordnung ist die Parallelarbeit auf Programmabschnitte beschränkt. Es werden jeweils lediglich aufeinanderfolgende mathematische Ausdrücke auf mögliche Parallelarbeit untersucht.
Es sind auch Datenverarbeitungsanlagen bekannt, die eine Mehrfachverarbeitung dadurch gestatten, daß mehrere Funktionseinheiten zur Ausführung arithmeti-
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 DE2425380A1 (de) 1975-02-27
DE2425380C2 true 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)

Families Citing this family (8)

* 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
JPS57155666A (en) * 1981-03-20 1982-09-25 Fujitsu Ltd Instruction controlling system of vector processor
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 プログラマブルコントロ−ラ
WO1986007174A1 (en) * 1985-05-20 1986-12-04 Shekels Howard D Super-computer system architectures
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

Also Published As

Publication number Publication date
FR2241109B1 (de) 1976-10-22
JPS546335B2 (de) 1979-03-27
AT335202B (de) 1977-02-25
DE2425380A1 (de) 1975-02-27
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
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE1951552C3 (de) Speichereinrichtung mit Sicherung durch Schutzschlüssel
DE3151745C2 (de)
DE2714805C2 (de)
DE3424962C2 (de)
DE2339636C2 (de) Einrichtung zur Adressierung eines schreibbaren Mikroprogrammspeichers
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE1915818B2 (de) Steuerschaltung für ein elektronisches Datenverarbeitungssystem
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE1499182B2 (de) Datenspeichersystem
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
DE2425380C2 (de) Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen
DE2617485C3 (de) Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen
DE3501903A1 (de) Im pipelinebetrieb arbeitende datenverarbeitungseinrichtung
DE2245284A1 (de) Datenverarbeitungsanlage
DE1774421B1 (de) Mehrprogramm datenverarbeitungsanlage
DE1957600C3 (de)
DE1499286B2 (de) Datenbearbeitungsanlage
DE2419836C3 (de) Schaltungsanordnung zur Durchführung von Unterprogramm-Sprungbefehlen in Datenverarbeitungsanlagen
DE1296427B (de) Datenbearbeitungssystem
DE2150292C2 (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage mit überlagerter Ausführung und Entnahme von Befehlen
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten
DE2816838C2 (de) Verfahren und Prioritätssteuereinheit zum Zuordnen von Prioritäten
DE1774866C3 (de) Schaltung zur Bestimmung der Adresse einer in einem Speicher einer Datenverarbeitungsanlage enthaltenen, gesuchten Information

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