DE2425380C2 - Datenverarbeitungsanlage zur parallelen Ausführung von Verarbeitungsoperationen - Google Patents
Datenverarbeitungsanlage zur parallelen Ausführung von VerarbeitungsoperationenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting 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
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)
(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-
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.
<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
[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
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];
<*{/>,_:=,_,; <n»R[i9, /„,Z13: Z16];
'17 '18 '19 '20
[Ιο»Ί];<Λ(/>Ζ10, Z12, Ζ17,Ζ2Ο:
'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
<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)
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-
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)
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)
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 |
-
1973
- 1973-08-13 AT AT707573A patent/AT335202B/de not_active IP Right Cessation
-
1974
- 1974-05-25 DE DE2425380A patent/DE2425380C2/de not_active Expired
- 1974-06-20 GB GB2730874A patent/GB1456941A/en not_active Expired
- 1974-07-25 FR FR7426329A patent/FR2241109B1/fr not_active Expired
- 1974-08-01 JP JP8757074A patent/JPS546335B2/ja not_active Expired
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 |