DE2321262A1 - Digitalrechner - Google Patents

Digitalrechner

Info

Publication number
DE2321262A1
DE2321262A1 DE2321262A DE2321262A DE2321262A1 DE 2321262 A1 DE2321262 A1 DE 2321262A1 DE 2321262 A DE2321262 A DE 2321262A DE 2321262 A DE2321262 A DE 2321262A DE 2321262 A1 DE2321262 A1 DE 2321262A1
Authority
DE
Germany
Prior art keywords
memory
operators
instruction
parameter
automatically
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE2321262A
Other languages
English (en)
Inventor
John Teesdale Shepherd
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.)
Allard Way Holdings Ltd
Original Assignee
Elliott Brothers London Ltd
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 Elliott Brothers London Ltd filed Critical Elliott Brothers London Ltd
Publication of DE2321262A1 publication Critical patent/DE2321262A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

Pafenicmwälie
Dr.-ing. Wilhelm Beichel
Dipl-Ing. Wdinang Reicliel
6 Frank:, aiia. M. 1
Parksiraße 13
7438
ELLIOTT BROTHERS (LONDON) LIMITED, Chelmsford, England
Digitalrechner
Die Erfindung bezieht sich auf Digitalrechner.
Bei der Weiterentwicklung von in Flugkörpern verwendeten Rechenanlagen kann man zwei Hauptrichtungen erkennen. Dabei handelt es sich
a) zum einen um die Tendenz, den Rechenmaschinen eine kompliziertere Struktur und einen komplizierteren Aufbau zu geben, insbesondere Multiakkumulatoren und kompliziertere Befehlsvorräte zu verwenden, und
b) zum anderen um die Tendenz, hochstufige Programmiersprachen zu benutzen.
Diese Tendenzen sind in einem gewissen Maß unverträglich und sollten auf das Hauptziel abgestellt sein, nämlich eine möglichst kostensparende Rechenanlage zu schaffen.
30 98 4 6/1071 omeiNAi inspected
Die Verwendung einer komplizierten Struktur und wirkungsvoller Befehlsvorräte schafft eine Rechenmaschine, bei der der erforderliche Speicherraum möglichst klein ist, wenn die Programme im Maschinenkode geschrieben sind. Wenn man jedoch für derartige Maschinen keine äußerst verfeinerten hochstufigen Sprachcompiler schreibt, wiegt die sich ergebende Unwirksamkeit in dem vom Compiler erzeugten Kode die Einsparungen auf, die durch eine komplizierte Struktur und wirkungsvolle Befehlsvorräte erzielt werden.
In ähnlicher Weise bedeutet die Tatsache, daß die Maschine einen wirkungsvolleren Befehlsvorrat aufweist, daß dem Programmierer eine größere Anzahl von Auswahlmöglichkeiten zur Verfügung steht, um ein Problem zu lösen. Der Programmierer kann daher eine längere Zeit benötigen, um zur optimalen Lösung zu gelangen. Der Grund für das Obige ist darin zu sehen, daß sich die Bauelement- und Gerätekonstrukteure mit der Herstellung einer Rechenmaschine befassen, die mit einer minimalen Menge von Bauelementen und Geräten auskommt, und daß sich diese Konstrukteure damit befassen, den Maschinenkode des Rechners zu optimieren, um ihr Ziel zu erreichen. Nachdem somit die Programmierer in Verbindung mit den Gerätekonstrukteuren die Entscheidung getroffen haben, daß in einer Rechenmaschine ein besonderer Befehlsvorrat benötigt wird, befassen sich die Konstrukteure nur noch mit der Optimierung der Befehls-, Betriebsart- und Datenformate. Die Compiler für derartige Maschinen sind daher kompliziert Und in der Herstellung teuer sowie gleichzeitig hinsichtlich der Speicherung unwirtschaftlich.
Die Erfindung befaßt sich nun mit einem alternativen Weg, der darauf abgestellt ist, eine Rechenmaschine zu schaffen, die hinsichtlich der Speicherung als auch der Betriebsweise mit einer hochstufigen Sprache leistungsfähig ist.
3 0.9846/ 107 1
Nach der Erfindung zeichnet sich ein Digitalrechner aus durch eine Zentraleinheit, einen Hauptspeicher zur Aufnahme von Digitaldaten in Form von Anweisungen mit Operatoren und Parametern in einer kompakten hochstufigen Sprache, einen Anweisungsspeicher, einen Parameterspeicher, eine automatisch wirksame Einrichtung zum Transferieren von Operatoren oder alternativ von Operatoren und Parametern von dem Hauptspeicher zu dem Anweisungsspeicher, eine automatisch wirksame Einrichtung zum Transferieren von Parametern von dem Hauptspeicher zu dem Parameterspeicher, und zwar in der Reihenfolge, in der die Anweisungen auftreten, eine Folgedekodierlogik zur automatischen Überprüfung der Operatoren in dem Anweisungsspeicher, um deren Prioritätsstufe zu bestimmen, einen Folgespeicher, dem das Ausgangssignal der Folgedekodierlogik zugeführt wird, um die Operatoren in Übereinstimmung mit den ihnen zugeordneten Prioritäten automatisch zu speichern, und eine Mikroprogrammanordnung, die in Abhängigkeit von dem Inhalt des Folgespeichers automatisch gesetzt und wirksam wird, um die Zentraleinheit derart zu steuern, daß sie die Digitaldaten verarbeitet, die ihr unter der Steuerung des Parameterspeichers und in Übereinstimmung mit dem in der Mikroprogrammanordnung aufgestellten Mikroprogramm automatisch zugeführt werden.
Ferner zeichnet sich ein Digitalrechner nach der Erfindung aus durch eine Zentraleinheit, einen Hauptspeicher zur Aufnahme von Digitaldaten in Form von Anweisungen mit Operatoren und Parametern in einer kompakten hochstufigen Sprache, wobei die Operatoren und Parameter mit variabler Länge kodiert sind, die durch den Umfang der Benutzung bestimmt ist, dem die Operatoren und Parameter ausgesetzt sind, und die im allgemeinen in umgekehrter Beziehung zum Umfang der genannten Benutzung steht, ferner durch einen Anweisungsspeicher, einen Parameterspeicher, eine automatisch wirksame Einrichtung zum Transferieren von Operatoren oder von Opera-
309846/1071
toren und Parametern variabler Länge vom Hauptspeicher zum Anweisungsspeicher, eine automatisch wirksame Einrichtung zum Transferieren von Parametern variabler Länge vom Hauptspeicher zum Parameterspeicher in der Reihenfolge, in der diese in der Anweisung auftreten, eine Folgedekodierlogik zur automatischen Überprüfung der Operatoren in dem Anweisungsspeicher, um deren Prioritätsstufen zu bestimmen, einen Folgespeicher zum Empfang des Ausgangssignals der Folgedekodierlogik, um die Operatoren in Übereinstimmung mit den ihnen zugeordneten Prioritäten automatisch zu speichern, und eine Mikroprogrammanordnung, die in Abhängigkeit von dem Inhalt des Folgespeichers automatisch setzbar und automatisch betreibbar ist, um die Zentraleinheit zur Verarbeitung von Digitaldaten zu steuern, die sie unter der Steuerung des Pärameterspeichers und in Übereinstimmung mit dem in der Mikroprogrammanordnung aufgestellten Mikroprogramm automatisch erhält.
Nach einer bevorzugten Weiterbildung weist der Rechner eine Parameterdekodierlogik auf, die wirksam ist, um aufeinanderfolgende Parametereinheiten zwischen Operatoren zu erkennen und somit automatisch die Anzahl der Parametereinheiten zu bestimmen, die zur Bildung eines Parameters benutzt werden.
Unter dem Ausdruck "kompakte hochstufige Sprache" ist hier eine Ableitung einer hochstufigen Grundsprache, wie ALGOL, COBOL, FORTRAN, CORAL oder PL1, zu verstehen, deren ,Informationsinhalt derselbe wie derjenige der hochstufigen Grundsprache ist, die Jedoch bezüglich der Kodierung wesentlich kompakter ist. Im folgenden wird noch ein Beispiel zur Erzeugung einer kompakten hochstufigen Sprache aus einer hochstufigen Grundsprache gegeben.
Es sind zahlreiche hochstufige Sprachen verfügbar, unter denen FORTRAN und ALGOL am bekanntesten sind. PL1 gewinnt zunehmend an Popularität, und CORAL wird für militärische
3098Λ6/1071
Echtzeitberechnungen in zunehmendem Maße vorgeschrieben. Obwohl sich diese Sprachen im einzelnen unterscheiden, stimmen sie in ihren Hauptmerkmalen überein und geben einem Programmierer ein leicht verständliches Mittel in die Hand, um damit Programme zu schreiben. Im allgemeinen sind Jedoch die mit diesen Compilern hergestellten' Programme hinsichtlich des erforderlichen Speicherbedarfs unwirtschaftlich. Dies kann man durch Überprüfen eines äußerst einfachen Programms sehen.
Es sei angenommen, daß der Ausdruck
a«b — c«d
v "~ e»f - g«h
berechnet werden soll, Wenn man nun Rechner mit 1, 2, 4 oder 8 Akkumulatoren in Betracht zieht, müssen die folgenden Instruktionen im Maschinenkode beachtet werden.
Anzahl der
Akkumula
toren ss 1
lade g 2 4 8
1 mult.mit h lade g
in Akk.1
lade g
in Akk.1
lade g
in Akk.1
2 speichere gh mult.mit h
im Akk.1
mult.mit h
im Akk.1
mult.mit h
im Akk.1
3 lade e lade e
in Akk.2
lade e
in Akk.2
lade e
in Akk.2
4 mult. f mult.mit f
im Akk.2
mult.mit f
im Akk.2
mult.mit f
im Akk.2
VJl sub. gh sub.Akk.1
von Akk.2,
gib Antwort
in Akk.1
sub.Akk.1
von Akk.2,
gib Antwort
in Akk.1
sub.Akk.1
von Akk.2
gib Antwort
in Akk.1
6 speichere
(ef - gh)
speichere
Akk.1
lade c
in Akk.2
lade c
in Akk.2
7 lade c lade c
in Akk.1
mult.Akk.2
mit d
mult.Akk.2
mit d
8 mult.Akk.1
mit d
lade a
in Akk.3
lade a
in Akk.3
309846/1071
1 2 4 2321262
O
9 mult, d lade a
in Akk.2
ault.Akk.3
mit b
mult.Akk.3
mit b
10 speichere cd mult.mit b
im Akk.2
sub.Akk.2
von Akk.3»
gib Antwort
in Akk.2
sub.Akk.2
von Akk.3»
gib Antwort
in Akk.2
11 lade a sub.Akk.1
von Akk.2,
. gib Antwort
in Akk.1
teile Akk.2
mit Akk.1
teile Akk.2
mit Akk.1
12 mult, b teile mit
(ef - gh)
speichere '
. Antwort
speichere
Antwort
13 sub. cd speichere
Antwort
14 teile
(ef - gh)
15 speichere
Antwort
Eine Rechenmaschine mit einem einzigen Akkumulator benötigt somit 15 Instruktionen, um die erforderliche Funktion zu berechnen, während unter der Annahme, daß bei den Multiakkumulatormaschinen. keine Aufruf- oder Adressierungsprobleme auftreten, weniger Instruktionen erforderlich sind, nämlich 13 bei der 2-Akkumulatormaschine und ,jeweils 12 bei der 4- und 8-Akkumulatormaschine.
Die gegenwärtigen hochstufigen Sprachen gehorchen den Instruktionen in einer strikten Prioritätsfolge, es sei denn, daß eine andere Folge durch Klammern angedeutet wird.
Die Folge läuft wie folgt ab:
a) Bei Anweisungen in Klammern wird der Ausdruck in den innersten Klammern zuerst berechnet, und die Maschine arbeitet sich von da aus nach außen weiter. ·
b) Wenn eine Reihe von eingeklammerten Anweisungen vorhanden ist, die durch arithmetische Operatoren getrennt sind, werden die eingeklammerten Anweisungen von links nach rechts fortschreitend beachtet.
309846/1071
~7~ 2321252
c) Einer Potenz kommt die höchste Priorität innerhalb eines arithmetischen Ausdrucks zu.
d) Multiplikationen und Divisionen haben die nächsthöhere Priorität.
e) Additionen und Subtraktionen haben die nächsthöhere Priorität.
Unter Beachtung dieser Regeln kann man den Ausdruck
. . ■ a [b - c (d2e - fjj g |h + d (k + ΛΖ) j
in ALGOL wie folgt schreiben y:= a* (b-c*(df2 * e-f)) /g * (h+d * (k+if2)h dabei wird die nachstehende Folge ausgeführt: ' D d2
II) d2e III) (d2e - f) IV) c (d2e - f) .V) b - c (d2e - f) VI) a ί b - c (d2e - f)|
VII) I2
VIII) (k + I2)
IX) d(k + I2)
X) h + J(k + I2)
g [h +
b - c
(d2e - f)]
+ ά (k■+ ι2) j
309 846/1071
Im folgenden wird wieder das erste Beispiel betrachtet:
v =
y e«f - g'h
Diese Beziehung stellt sich in ALGOL wie folgt dar:
y: = (a * b - c * d)/(e * f - g * h);
Unter der Annahme, daß bei Multiakkumulatormaschinen ein
einmal für eine Funktion benutzter Akkumulator nicht erneut
benutzt wird, es sei denn, daß entweder ein Löschbefehl oder ein Speicherbefehl für den Akkumulator vorliegt, ergibt sich die folgende Befehlsfolge bei der übersetzung der ALGOL-Ausdrücke in den Maschinenkode: , , t
Anzahl der Akkumulatoren =
Befehlsnummer
1 lade a lade a lade a Wie
in Akk.1 in Akk.1
2 mult. b mult.Akk.1 Akk.1 χ b für
mit b die
3 speichere axb lade c lade c
in Akk.2 in Akk.2 4-Akku
4 lade c mult.Akk.2 Akk.2 χ d
mit 2 mulator
5 mult, d sub.Akk.2 Akk.1 - maschine
von Akk.1 Akk.2 in
Akk.1
6 speichere speichere lade e
cxd Akk.1 in Akk.3
7 lade lösche Akk.3 x f
axb Akk.2
8 subtrahiere lade e lade g
cxd in Akk.1 in Akk.4
9 speichere mult.Akk.1 Akki4 xh
(ab-cd) mit f
10 lade e lade g Akk.3 - Akk.4
in Akk.2 in Akk.3
309846/1071
1 2 2321262 2
mult. f mult.Akk.2 4 8
11 mit h Akk.1 + Akk.3
speichere Akk.1 - in Akk.1
12 e χ f Akk. 2 speichere
lade g lösche Akk. Akk.1
13 mult. h lade ab-cd
14 in Akk.2
speichere gh Akk.2 +
15 Akk.1
lösche ef speichere
16 Akk. 2
subtrahiere gh
17 speichere
18 (ef-gh)
lade (ab-cd)
19 teile mit
20 (ef-gh)
speichere
21 - (ab-cd)
(ef-gh)
Wenn man nun die maschinenkodierten Ausdrücke mit dem von einem Compiler erzeugten Kode vergleicht, ergibt'sich die folgende Tabelle:
Anzahl der
Akkumula
toren
Anzahl der
Wörter in
einem assemb
lerkodierten
Programm
Anzahl der
Wörter in
einem HLL-
kodierten
Programm
Wirkungsgrad
des
Compilers
1 15 21 7290
2 13 16 81 %
4 12 12 100%
8 12 12 1009έ
Die 4- und 8-Akkumulatormaschinen sind bei dem gegebenen Beispiel leistungsfähig oder wirtschaftlich, da in dem untersuchten Ausdruck nur eine begrenzte Anzahl von Variablen vorhanden ist. Wenn die Anzahl der Variablen zunimmt, wird auch die Unwirtschaftlichkeit der Multiakkumulatormaschinen größer.
309846/1071
Eine hochstufige Sprache benutzt eine Reihe von Sym- ;Λ bolen, die als Grundsymbole bekannt sind. Obwohl das Grundprinzip von allen hochstufigen Sprachen ähnlich ist, soll im folgenden Fall als Beispiel ALGOL betrachtet werden.
Die Grundsymbole von ALGOL sind:
1. Die Groß- und Kleinbuchstaben des Alphabets
2. Die Ziffern 0 bis 9
3. Arithmetische Operatoren +- * / div. r Λ
4. Vergleichsoperatoren = -
5. Logische Operatoren and (und) or (oder) not (nicht) equiv (äquivalent)
6. Folgeoperatoren goto (Sprung nach) if (wenn) then (dann) eise (wenn nicht anders) for (für) do (führe aus)
7. Separatoren, . : ; := stop (stopp) until (bis) while (während) comment (Bemerkung)
8. Klammern () Cjf £? begin (Beginn) end (Ende)
9. Vereinbarungs- und Spezifikationssymbole integer (ganzzahlig) array (Feld) real (reell) switch (Verteiler) procedure (Unterprogramm) own (eigen) boolean (boolesch) label (Marke)" value (Wert) string (Kette)
10. Logikwerte true (wahr) false (falsch)
Die Art der Verwendung dieser Begriffe kann man dem folgenden Beispiel entnehmen.
Es sei angenommen, daß zwei kartesische Koordinaten (x, y) in Polarkoordinaten (r, Θ) umgewandelt werden sollen. Dazu werden die folgenden Beziehungen benutzt:
r -sr vx + y
θ = O wenn χ = O und y = O, θ - 0 wenn x7 0 und y = 0
Tr ■ ■ T*"
θ = »j wenn χ < 0 und y = 0, θ = wenn χ = 0 und y ^ 0
θ = ΤΓ;/2 wenn χ = 0 und y< 0,
θ = arctan (γ/χ) wenn x>0 für alle Werte von y,
309846/1071
θ = Tit + arctan (y/x) wenn x< O und y^O, θ = (TT-- arctan (y/x) ) wenn x< 0 und y< 0,
In ALGOL sieht das Programm wie folgt aus: begin (Beginn) real (reell) x, y, r, theta;
integer (ganzzahlig) i, n;
read (lies) η
for (für) i, = 1 step (Schritt von) 1 until (bis) η do (führe Schleife aus)
begin (Beginn) read (lies) x, y;
r: β sqrt (Quadratwurzel) (x^ 2 + y'fz); theta: = if (wenn) x>0 and (UND) y = 0 then (dann) 0 else(sonst)
if (wenn) x< 0 and (UND) y = 0 then (dann) 3,14159265
eise (sonst)
if (wenn) x= 0 and (UND) y> 0 then (dann) 1,57079633
eise (sonst)
if (wenn) x= 0 and (UND) y< 0 then (dann) 1,57079633
eise (sonst)
if (wenn) x>0 then (dann) arctan (y/x) eise (sonst)
if (wenn) x?0 and (UND) y; 0 then (dann) 3,14159265
+ arctan (y/x) eise (sonst)
if x<0 and (UND) y< 0 then (dann) -(3,14159265-arctan
(y/x)i
end (Ende);
end (Ende);
Beim Lochen des Kodes wird jedes Zeichen durch ein einziges 8-Bit-Byte dargestellt. Obwohl es möglich wäre, den Kode in seiner Gesamtheit im Rechnerspeicher zu speichern, wäre dies äußerst verschwenderisch. Stattdessen kann man den Originalkode in der folgenden Weise kompaktieren, um eine hochstufige Kompaktsprache zu erzeugen: . -..
309846/1071
a) Es sei eine 8-Bit-Byte-Organisation angenommen
b) Von den 256 möglichen Kombinationen eines 8-Bit-Byte werden die ersten 128 für Operatoren und SpezialZeichen verwendet. Auf diese Weise sind alle arithmetischen, regional logischen und sequentiellen Operatoren durch einen 1-Byte-Kode gekennzeichnet. Dadurch wird hinsichtlich der Speicherung eine große Wirtschaftlichkeit erzielt, da beispielsweise then (dann) als ein 1-Byte-Kode anstatt von 8 erforderlichen Bytes gespeichert wird.
c) Die übrigen 128 Kombinationen werden für die Binärzahlen 0 bis 127 benutzt. Da sich diese Kombinationen im oberen Feld des 8-Bit-Byte befinden, bedeutet eine 1 in der höchstwertigen Bitstelle eines Byte, daß der Rest des Byte eine Zahl ist, während eine 0 in der höchstwertigen Bitstelle bedeutet, daß ein Zeichen vorliegt.
d) Bisjetzt wurden lediglich 52 der 128 Zeichenfelder benutzt. Zusätzliche 1-Byte-Zeichen werden daher den Standardsub*- routinen zugeordnet, die normalerweise innerhalb einer hochstufigen Sprache verfügbar sind.
e) Die variablen Zeichen, die am Anfang des Programms stehen, werden derart gehandhabt, daß beim Eintritt in die Maschine jeder Variablen eine absolute Adresse zugeordnet wird. Wenn danach eine variable Marke im Programmkörper festgestellt wird, wird sie durch eine passende Adresse ersetzt. Um den erforderlichen Speicheraufwand so" gering wie möglich zu halten, wird ein Seiten- und Kapitel-System benutzt. Jede Seite umfaßt 128 Wörter, die durch ein einziges Byte gegeben sind. Ein zweites Byte liefert 128 Seiten, während ein drittes Byte den 128 Kapiteln zugeordnet ist. Die gesamte Bytespeichermenge beträgt daher 128 χ 128 χ 128 Bytes = 128 χ 16K-Byte-Kapitel oder 2097152 Bytes. Die Organisation der Maschine ist derart getroffen, daß bei jeder Adressenüberprüfung auch ein Seitenindexregister und ein Kapitelindexregister überprüft werden. Wenn das Seiten- und Kapitelindexregister mit den vorangegangenen Einstellungen identisch sind, wird lediglich die Wortadresse in der An-
309846/1071
Weisung gespeichert. Wenn die Seitenadresse unterschiedlich ist, gibt das erste numerische Byte die Wortadresse und das zweite numerische Byte die Seitenadresse an. Falls sich auch die Kapiteladresse ändert, wird ein drittes numerisches Byte benutzt.
Bei der Speicherung kann man eine noch größere Wirtschaftlichkeit dadurch erzielen, wenn man die Kodierung der Operatoren und Parameter mit variabler Länge vornimmt, und zwar in Abhängigkeit davon, wie oft die Operatoren und Parameter benutzt werden. Je häufiger ein Operator oder Parameter benutzt wird, um so kürzer wird die Kodierung ausgeführt. Dem Operator LOAD (lade), der hier sehr häufig benutzt wird, kann man beispielsweise einen 1-Bit-Kode geben.
Wenn man diese Regeln zum Kompaktieren der hochstufigen Programmiersprachanweisung anwendet, wird die Anweisung als kompakte hochstufige Sprachanweisung in dem Hauptspeicher des Rechners gespeichert.
Eine Anweisung der Form
ρ
alpha = χ + 2bx + c
mit der hochstufigen Sprachdarstellung alpha:= xf2 + 2*b*x+c;
wird wie folgt gespeichert:
alpha, χ, b und c werden in die Speicheradreßplätze dekodiert, die diesen Variablen zugeordnet sind. Wenn sie sich im selben Kapitel und auf derselben Seite wie die von der Maschine gehandhabten vorangegangenen Variablen befinden, wird ihnen eine 1-Byte-Adresse zugeordnet. Wenn sie alle zusammen gegenüber der laufenden Seite auf einer anderen Seite sind, wird alpha eine 2-Byte-Adresse und dem Rest eine 1-Byte-Adresse gegeben. Wenn sie alle auf verschiedenen Seiten sind, erhalten sie alle 2-Byte-Adressen. Unter der Annahme, daß sich die Variablen alle auf derselben Seite befinden, wird die obige Anweisung als eine 14-Byte-Anweisung gespeichert.
309846/1071
Da sich die Länge der Parameter ändern kann, muß man in der Lage sein können, die tatsächliche Länge der Parameter zu bestimmen, die eine Anweisung ausmachen. Die Lösung dieses Problems beruht auf der Tatsache, daß in einem algebraischen Ausdruck die Parameter (Variablen oder Konstanten) stets durch einen Operator getrennt sind, wie es bei der folgenden Beziehung der Fall ist:
ρ
alpha = χ + 2bx + c
In einer hochstufigen Sprache erhält man für diese Beziehung: alpha := χ2 + 2*b*x + Cj
In kodierter Form würde dieser Ausdruck eine Anweisung bilden, die aus,einer Reihe von Operatoreinheiten und Parametereinheiten besteht, deren Längen möglicherweise von einigen wenigen Bits bis zu drei Bytes variieren. Wenn man zwischen einem Operator und einem Parameter (wie zuvor erwähnt) unterscheidet und eine geeignete Logik (eine Parameterdekodierlogik) vorsieht, kann der Rechner die Länge der Parameter dadurch bestimmen, daß er die Parametereinheiten durchschreitet, bis ein Operator festgestellt wird. Die Parameterdekodierlogik kann sich mit der Folgedekodierlogik in gemeinsame Elemente teilen.
Nachdem nun ein Schema zum Speichern einer hochstufigen Sprachanweisung in einer kompakten Form vorgeschlagen ist, sollte die Wirtschaftlichkeit des Speicherschemas untersucht werden. Dies wird dadurch vorgenommen, daß unter Verwendung der verschiedenartigen bisherigen Beispiele der Speicherraum untersucht wird, der von
a) den kompakten hochstufigen Sprachanweisungen und
b) dem Maschinenkode äquivalent eingenommen wird.
Hierzu wird zunächst auf das folgende Beispiel Bezug genommen:
ρ
y = χ + 2bx +c
3 0 9846/1071
In einer kompakten hochstufigen Sprache (CHLL-Form) werden, wie bereits erläutert, 14' Bytes oder 112 Bits benötigt. Im Maschinenkode würde man erhalten:
lies χ
multipliziere mit χ
2 speichere χ
lies χ multipliziere rait b
multipliziere mit
2 addiere χ
addiere c speichere y
Dies sind 9 Wörter, wenn man eine Wortlänge von 16 Bits annimmt, sind 144 Bits erforderlich.
Nun soll das Beispiel mit der folgenden, bereits erwähnten Beziehung betrachtet werden:
_ a«b - c»d J Ä e«f - g«h
In CHLL-Form erhält man:
yjs (a * c*d)/(e*f - g*h); dazu werden 22 Bytes mit jeweils 8 Bits benötigt.
Unter der Annahme, daß die in der vorangegangenen Analyse aufgeführten Wörter 16 Bits einnehmen, ergibt sich die folgende Tabelle:
309846/1071
Anzahl der Anzahl der Anzahl der Anzahl der Anzahl der Akkumula- Wörter im Bits im Wörter im Bits im toren Maschinen- Maschinen- HLL-Kode HLL-Kode kode kode
1 15 240 21 336
2 13 208 16 256 4 12 192 12 192 8 12 192 12 192
CHLL 22 Bytes 176 - -
In dem obigen Beispiel wird angenommen, daß die Multiakkumulatormaschinen eine 16-Bit-Wortlänge und ein Befehlsrepertoir haben, das es jedem Akkumulator ermöglicht, sowohl mit dem Speicher als auch mit den anderen Akkumulatoren in Verbindung zu treten. In der Praxis ist dies nicht möglich, und man benötigt einige zusätzliche Wörter/ um die mit einem 16-Bit-Wort zu berechnende Funktion zu erlangen. Es sollten daher mindestens • 16 weitere Bits den 4- und 8-Akkumulatormaschinen zugegeben werden.
Aus den bisher betrachteten einfachen Beispielen geht hervor, daß das beschriebene Verfahren im Vergleich zu herkömmlichen Maschinen zu einer Verminderung des Speicherbedarfs führt. Diese Verminderung liegt in einem Bereich von 1596 bis 30%.
Da bisjetzt lediglich einfache arithmetische Operationen betrachtet wurden, soll jetzt eine kompliziertere Aufgabe analysiert werden. Diese Aufgabe betrifft die Mechanisierung einer Trägheitsplattformsteuerung und Navigationsgleichungen. In dem 920C-Rechner werden für diese Aufgabe schätzungsweise 805 Wörter ausschließlich von Subroutinen benötigt. Die Subroutinen benötigen weitere 705 Wörter.
Wenn man dieselben Gleichungen in CHLL-Form analysiert, beträgt die minimale Anzahl von Bytes 794. Wenn man annimmt, daß die Hälfte der Daten für einen Seitenwechsel benötigt werden,
3098 46/1071
2321?62
erhöht sich die Anzahl auf 990 Bytes. Wenn man darüberhinaus einen 20%igen Sicherheitsfaktor für Unvorgesehenes einräumt, werden 1190 Bytes benötigt.
Wenn man die Grundanzahl von Wörtern in Betracht zieht, ist in der 920C-Maschine ein Speicherraum von etwa 14500 Bits erforderlich. Wenn man eine 24-Bit-Multiregistermaschine mit indirekter Adressierung zugrundelegt, braucht man etwa das 0,7-fache der Wortanzahl und gelangt somit zu einem Wert zwischen 13500 und 14000 Bits. Wenn man eine Doppelakkumulator-16-Bit-Maschine mit relativer Adressierung verwendet, beträgt die Anzahl der Bits 14700. Diese Zunahme beruht auf der Tatsache, daß, obwohl der Multiakkumulator die Anzahl der erforderlichen Wörter vermindert, die relative Adressierung diesen Parameter erhöht.
Bei der CHLL-Maschine benötigt man 9520 Bits für die Speicherung.
Im Durchschnitt benötigt man daher lediglich 65% des Speichersy wenn man die gestellte Aufgabe mit einer CHLL-Maschine anstatt mit einer herkömmlichen laufend generierenden Maschine löst.
Diese Zahlenangaben stellen den schlechtesten Fall dar, da
a) die Bitanzahl der herkömmlichen Maschine keine Subroutinen umfaßt, während festverdrahtete Subroutinen für die CHLL-Maschine vorgesehen sind, und
b) für die CHLL-Maschine ein Sicherheitsfaktor für Unvorgesehenes einberechnet ist, während dies bei der herkömmlichen Maschine nicht berücksichtigt ist.
Wenn man die obigen Punkte noch in Betracht zieht, gibt die folgende Tabelle die Speichersituation wieder:
300846/1071
Geschätzte Anzahl unvorhergesehenen CHLL-Speicher) . Geschätzte Anzahl
der zur Speicherung Falles der zur Speicherung
benötigten Bits % Speicher- /
einsparung -M -
benötigten Bits
Maschine ohne Subroutinen mit Subroutinen
92OC 14500 27200
24-Bit-Multi-
akkumulator mit
indirekter
14000 26200
Adressierung
16-Bit-Multi-
akkumulator mit 14700 27500
relativer
Adressierung
Durchschnitt bei
herkömmlichen 14400 27000
Maschinen
CHLL-Maschine 9500 9500
CHLL-Mas chine
ohne Berücksich
tigung eines 7900 7900
. χ 100
Speicher 34,1%
45%
65 % mit Berücksichtigung unvorhergesehener Fälle .
70 % ohne Berücksichtigung unvorhergesehener Fälle
Da·alle bisher betrachteten Beispiele grundsätzlich arithmetischer Natur sind, soll eine Reihe logischer Operationen betrachtet werden. Zu diesem Zweck wird das bereits genannte Beispiel zur Umwandlung kartesischer in Polarkoordinaten analysiert.
309848/1071
Das Ergebnis ist, daß man 64 Wörter im Maschinenkode und 117 Bytes im CHLL-System benötigt. Die Anzahl der zur Speicherung benötigten Bits beträgt somit 1024 bzw. 936.
Die folgende Tabelle gibt eine Zusammenfassung der Ergebnisse der oben aufgeführten Beispiele.
Anzahl von Bits
Funktion •Maschinen
kode
CHLL-
kode
Speicher
einsparung
in %
a. einfache arithmetische
Operationen *
352 288 18
b. komplizierte arithmeti
sche Operationen
14400 9500 34
C. komplizierte arithmeti
sche Operationen einschl.
von Subroutinen
27000 9500 65
d. logische Operationen 1024 936 9
Summe aus a+b+d 15776 10724 32
Summe aus a+c+d 28376 10724 62
* Dies ist die Summe der beiden einfachen betrachteten arithmetischen Beispiele
Allgemein kann man sagen, daß das Schreiben in einer hochstufigen Sprache mit herkömmlichen Maschinen eine Zunahme von etwa 3096 des benötigten Speicherraums zur Folge hat. Wenn man daher mit herkömmlichen Maschinen eine hochstufige Sprache compiliert, erhält man die folgenden Zahlen:
309846/1071
Anzahl von Bits Anzahl von Bits Speicherin einer her- im CHLL-System einsparung kömmlichen in %
Maschine mit
einer hochstufigen Programmiersprache
Summe aus a+b+d 20000 10724 46 Summe aus a+c+d 36400 10724 70
Obwohl die obigen Beispiele keineswegs vollständig sind, geht daraus hervor, daß man mit kompakten hochstufigen Sprachen beträchtliche Einsparungen hinsichtlich des benötigten Rechnerspeicherraums erzielt. Diese Einsparungen liegen im Vergleich zu maschinenkodierten Programmen bei etwa 30% und im Vergleich zu hochstufige Sprachen compilierenden Generatormaschinen bei etwa
Nachdem nun ein Speicherkonzept gefunden ist, das einen vernünftigen Speicherungswirkungsgrad vorsieht, muß nun.untersucht werden, wie ein derartiges Konzept gerätetechnisch ausgeführt werden kann.
Unter Bezugnahme auf Fig. 1 ergibt sich das folgende Konzept:
a) Der Datentransfer zwischen den verschiedenen Teilen des Rechners erfolgt über eine Digitalstraße 10, und die Eingabe/ Ausgabe 11 und der Hauptspeicher 12 sind mit dieser Digitalstraße verbunden,
b) Der Hauptspeicher enthält sowohl die Daten als auch die Programme, die in einer kompakten hochstufigen Sprachform gespeichert sind.
c) Eine vollständige CHLL-Anweisung wird vom Hauptspeicher unter der Einwirkung einer Digitalstraßensteueruhg 13 in einen Anweisungsspeicher 14 transferiert. Um die Größe des Anweisungsspeichers 14 klein zu halten, wird die Anzahl der Bytes in der CHLL-Anweisung einer Beschränkung unterworfen. Zu-
309846/1071
nächst sei angenommen, daß entweder 64 oder 128 Bytes die maximale Größe dieser Anweisung darstellen. Es sei bemerkt, daß zusammengesetzte bedingte Anweisungen in der Form wie
if (wenn) and (UND) then (dann) eise (sonst)
if (wenn) usw. als eine Reihe von Anweisungen behandelt werden, wobei das Zeichen eise (sonst) das Ende eines Anweisungszeichens darstellt.
d) Wenn die Anweisung unter der Steuerung eines Speicheradreßregisters 30 von dem Hauptspeicher 12 in den Anweisungsspeicher 14 transferiert wird, werden die in der Anweisung enthaltenen Adressen (nach den Zeichen:= oder if (wenn)) in einen Parameterspeicher 15 transferiert. Alternativ können nur die Operatoren in den Anweisungsspeicher transferiert werden.
e) Die Anweisung im Anweisungsspeicher 14 wird durch die Folgedekodierlogik 16 überprüft, und die Reihenfolge, in der die Anweisung befolgt werden soll, wird in Übereinstimmung mit einer definierten Prioritätsliste bestimmt, die in den Folgedekoder eingebaut ist. Diese Reihenfolge wird in einem Folgespeicher 17 gespeichert.
f) Gleichzeitig mit der Dekodierung der Reihenfolge werden die Daten in den Plätzen des Hauptspeichers 12, deren Adressen im Parameterspeicher 15 enthalten sind, vom Hauptspeicher zu einem Arbeitsdatenspeicher 18 transferiert, und zwar unter der Steuerung des Speicheradreßregisters 30. Dieses ist in der Größe beschränkt, was darauf zurückzuführen ist, daß die Anzahl der Zeichen in einer Anweisung begrenzt ist.
g) Die Anweisung wird dann in der zuvor bestimmten Reihenfolge ausgeführt und in dem Folgespeicher 17 gespeichert. Dies wird mit einem Interpreter 21 ausgeführt, der Jeden Operator in dem Anweisungsspeicher 14 mit Hilfe einer Mikroprogrammanordnung 19 in eine Folge von Mikroprogramminstruktionen interpretiert. Die Mikroprogrammanordnung 19 ist in Abhängigkeit vom Inhalt des Folgespeichers automatisch setzbar und wird automatisch funktionsfähig, um über eine
309846/1071
Takt- und Steuerlogik 31 eine Zentraleinheit 20 zur Verarbeitung der in dem Arbeitsdatenspeicher gespeicherten Daten zu steuern, die unter der Steuerung des Parameterspeichers und in Übereinstimmung mit dem Mikroprogramm der Zentraleinheit 20 zugeführt werden.
h) Nachdem die Anweisung ausgeführt ist, wird das Resultat in der RUckkehradresse gespeichert, die als Adresse vor dem Zeichen:- gespeichert ist.
Im folgenden wird die Reihenfolge der Vorgänge an dem bereits zuvor herangezogenen Beispiel erläutert:
a«b - c*d
y Ä e-f - g.h
Diese Beziehung wird gespeichert als
y: = (a*b - e*d)/(e*f - g*h);
Es wird angenommen, daß y ein 2-Byte-Kode und die übrigen Variablen 1-Byte-Kodes sind, wenn die CHLL-Anweisung 23 Bytes zur Speicherung erfordert.
Der CHLL-Kode wird vom Hauptspeicher 12 zum Anweisungsspeicher 14 transferiert.
Es wird angenommen daß die folgenden Plätze im Hauptspeicher benutzt werden:
30 98 46/ 1071
Adresse Wort 2321262 Seite
Zeichen 1 20
y 2 If
a 3 Il
b 4 Il
C VJl η
d 6 η
e 7 η
f 8 η
g 9 η
h
Wenn man nun anstelle von Binärzahlen die dezimale Schreibweise verwendet, wird in Wirklichkeit die folgende Anweisung transferiert:
1 I 20:= (2*3 - 4*5) / (6*7 - 8*9); (Das Zeichen | wird nicht transferiert oder gespeichert, sondern wird lediglich als Separator in diesem Beispiel verwendet, um das Wort 1 von Seite 20 anzugeben).
Wenn die Anweisung transferiert wird, werden die Adressen in dem Parameterspeicher 15 gespeichert, und den Variablen hinter dem Zeichen:= werden sequentiell Datenspeicheradressen gegeben.
Der Parameterspeicher 15 enthält somit die folgenden Daten:
Datenspeicher- Hauptspeicher Adreß-
adreßnummer wort seite
0 2 20
1 3 20
2 4 20
3 VJl 20
4 6 20
5 7 20
6 8 20
7 9 20
In dem Datenspeicher wird dies wie folgt gespeichert: 220, 3, 4, 5, 6, 7, 8, 9,
309846/10 71
Von diesen Plätzen werden die Daten in die Datenspeicherplätze 0 bis 7 transferiert.
In dem Anweisungsspeicher 14 lautet der Ausdruck nun wie folgt: 20:= (0*1 - 2*3) / (4*5 - 6*7);
Die Folgedekodierlogik 16 tastet diese Anweisung ab, die in dem Anweisungsspeicher die Adressen hat:
Platz Zeichen Platz Zeichen
0 1 12 /
1 20 13 (
2 := 14 4
3 ( 15 *
4 ' 0 16 5
5 * 17
6 1 18 .6
7 - 19 . *
8 2 20 7"
9 * 21 )
10 3 22 ;
11 )
Beim Abtasten erkennt die Logik das Zeichen ( im Platz 3 als Zeichen höchster Priorität. Da vor dem Klammer-zu-Zeichen ) im Platz 11 keine weiteren offenen Klammern vorhanden sind, entscheidet die Logik, daß die Plätze 4 bis 10 zuerst beachtet werden müssen.
Diese Plätze werden abgetastet, und das Zeichen * im Platz hat Jetzt die höchste Priorität. Die Folgedekodierlogik 16 gibt Jetzt den Platz Nr. 5 in den Folgespeicher 17.
309 846/1071
Der Interpreter 21 wird einen Platz davor beginnen und die gesamte Operation in einer noch zu beschreibenden Weise interpretieren.
Die anderen Operationen werden in ähnlicher Weise dekodiert und sequentiell derart geordnet, daß die gespeicherte Reihenfolge wie folgt aussieht:
5 9 7
19 17 12 , 2 22
Der Interpreter 21 ruft die erste Funktion in der Reihenfolge auf, wobei es sich um den Platz 5 handelt. Er untersucht die beiden davorliegenden Plätze, d.h. die Plätze 3 und 4, und entdeckt die Adresse 0 im Platz 4 und die Tatsache, daß der Platz keine Operation enthält. Dies wird wie folgt interpretiert: Lade den Inhalt der Arbeitsspeicheradresse 0 in den Akkumulator der Recheneinheit
Der Platz 5 fordert eine Multiplikation, und im Platz 6 steht eine 1. Dies wird wie folgt.interpretiert: Multipliziere den Inhalt des Akkumulators mit den im Arbeitsspeicherplatz 1 gespeicherten Daten und speichere die Antwort in dem nächsten verfügbaren Arbeitsspeicherplatz.
Dieser neue Speicherplatz wird als eine Adresse im Anweisungsspeicher gespeichert, und da sich kein arithmetischer Operator vor dem Speicherplatz 4 befindet, wird diese Adresse im Speicherplatz 6 gespeichert, während ein Zeichen Null in die Plätze 4 und 5 gebracht wird. Diese Null ist ein Zeichenkode, der dem
309846/1071
Rechner mitteilt, daß er nichts unternehmen soll.
Dieselbe Sequenz wird für den Speicherplatz 9 verfolgt, mit der Ausnahme, daß die Adresse des Datenspeicherplatzes, in dem das Ergebnis gespeichert wird, der Platz 8 ist, da der Interpreter 21 den Operator - im Speicherplatz 7 erkennt, während die Speicherplätze 9 und 10 einen Null-Kode gespeichert haben.
Als Ergebnis der oben beschriebenen Interpretation enthalten somit die ersten elf Anweisungsspeicherplätze die folgenden Zeichen:
Anweisungsplatz Zeichen
0 1
' 1 20
■3 'I'
4 null
5 null' .
6 8
7 -
8 9
" 9 null
10 null
11 )
Als nächster Operator im Folgespeicher wird jetzt der Speicherplatz 7 untersucht.
Der Interpreter 21 untersucht wiederum die Plätze vor dem Operator und interpretiert das Ergebnis in der folgenden Weise:
30 9846/1 071
Lade die Daten im Speicherplatz 8 des Arbeitsspeichers 18 in den Akkumulator, subtrahiere die Daten im Speicherplatz 9 und speichere das Ergebnis im Speicherplatz 10 des Arbeitsspeichers
Mit denselben Argumenten wie zuvor wird die Adresse des Arbeitsspeicherplatzes, in dem sich die Antowrt befindet, im Speicherplatz 8 des Anweisungsspeichers gespeichert.
Dieselbe Prozedur wird für die nächsten Dateneinheiten sequentiell wiederholt, bei denen es sich um die Operationen handelt, die durch die Plätze 15, 19 und 17 des Anweisungsspeichers gegeben sind.
Nach den Operationen hat der Anweisungsspeicher den folgenden Zustand:
Anweisungsspeicherplatz Zeichen
0 1
1 20
2 I =
3 (
4 null
5 " null
6 null
7 null
8 10
9 null
null
)
/
(
null
null
null
null
. 13
309846/1071
Anweisungsspeicherplatz Zeichen
1-9 null
20 null
21 )
22 j
Das Divisionszeichen im Platz 12 ist das nächste in der Reihenfolge, und der Interpreter 21 schreitet im Folgespeicher zurück, um den Datenspeicherplatz 10 zu finden.
Dies wird wie folgt interpretiert: Lade den Akkumulator mit den Daten im Datenspeicherplatz 10.
Dieser wird dann durch die Daten im Datenspeicherplatz 13 dividiert, und die Antwort in den Datenspeicherplatz 13 gegeben und die anderen Plätze nullgesetzt.
Das Zeichen := im Platz 2 ist die nächste in der Reihenfolge zu untersuchende Dateneinheit« Sie wird wie folgt interpretiert: Finde den Datenspeicherplatz, dessen Adresse j.m Anweisungsspeicher verbleibt, und transferiere diese Daten zum Hauptspeicher und bringe sie in den Speicherplatz 1 der Seite
Das Zeichen j im Platz 22 ist das Abschlußzeichen :in der Reihenfolge. Dies wird wie folgt interpretiert; Lies die nächste Anweisung im Amweisisigsspeicher.
Ein Rechner der den oben beschriebenen Vorgang verwirklicht ist in der Fig. 1 dargestellt»
Im -Vorstehenden ist ein Digitalrechner beschriften, eier eine : kompakte Form einer h©e!i§tisfiLgen Sprach© benutzte Di© folgende Beschreibung bezieht sich in Yerbinduag mit Figo 2 auf andere Verfahren zur gerätetecbaisehea DurelaftHärmag ela©s derartigen Rechners.
07 1
Der Datentransfer zwischen den verschiedenen Teilen des Rechners erfolgt wiederum über eine Digitalstraße 10a. Die Eingabe/Ausgabe 11a und der Hauptspeicher 12a sind an diese Digitalstraße angesc4ilossen.
Die kompakte Form der hochstufigen Sprache führt zu Anweisungen in einer hochstufigen Sprache, die entsprechend dem folgenden Beispiel reduziert werden.
Die Anweisung a: =b χ c + d χ e/f - gj wird gespeichert, wobei a, b, c, d, e, f und g durch ein oder mehrere Bytes (mit 8 Bits) ersetzt werden, die die Adresse von diesen Variablen im Hauptspeicher 12a darstellen, während die Operatoren := + - χ / durch einen 1-Byte-Operatorkode ersetzt werden.
Es ist Jetzt erforderlich, die Folge von Adressen und Operatoren .in eine Fora zu ferlegen, die zwecks Verarbeitung für die Logik des Rechners geeignet ist.
Dies wird wie folgt durchgeführts
Wie in der vorangegangenen Beschreibung wird ein Parameterspeicher 15a, ein Anweisungsspeicher 14a und ein Folgespeicher 17a verwendet. Eine Anzahl von Logikschaltungen wird benutzt, um jede Adresse und jeden Operator derart weiterzuleiten, daß die Adressen im Parameterspeicher 15a in derjenigen Reihenfolge erscheinen, in der die Daten benötigt werden, während die Operatoren im Anweisungsspeicher 14a angeordnet werden.
Die Reihenfolge wird unter der Steuerung der Folgedekodierlogik 16a in Übereinstimmung mit den folgenden Regeln bestimmt:
(1) Jedem Operator wird eine Prioritätsstufe gegeben.
(2) Der erste Operator nach dem Operator ;» wird in den Folgespeicher 17a gegeben. Der Einfachheit halber wird dieser Operator durch das Symbol 0s1 gekennzeichnet.
309846/1071
(3) Der nächste Operator in der Anweisung, der ON bezeichnet wird, wird mit Os1 verglichens und falls die. Prioritätsstufe von OsI höher oder gleich der Frioritätsstufe von ON ist, wird 0s1 in den nächsten verfügbaren Platz des Anweisungsspeichers 14a gegeben. ON wird dann in den Folgespeicher 17a gebracht und wird zu 0s1.
(4) Wenn 0s1 eine geringere Priorität als ON hat, wird ON in den Folgespeicher 17a gegeben und wird zu 0s2.
(5) Der nächste Operator ON wird dann mit Osp verglichen, wobei ρ = 1 oder 2 istp und falls die Priorität von Osp höher oder gleich der Priorität von ON ist, wird Osp in den Anweisungsspeicher 14a gebracht und ON mit Os(p-1) verglichen. Falls Os(p-1) eine Priorität hat, die höher oder gleich der Priorität von ON ist, wird Os(p-1) in den Anweisungsspeicher 14a gebracht.
Falls ON eine höhere Priorität als Osp hat, wird er zu Osp+1 im Folgespeicher 17a. Falls ON von einer höheren Priorität als Os(p-1) ist, wird er als Osp in den Folgespeicher gebracht. Dieser Vorgang wird aufeinanderfolgend für jeden Operator wiederholt.
(6) Die Adressen von Variablen nach dem Operator := werden in derjenigen Reihenfolge in den Parameterspeicher 15a gebracht, in der sie auftreten, und ein Lade-Operator wird in den Anweisungsspeicher 14a gegeben. Die Adresse der Variablen vor dem Operator ;■« wird in einen reservierten Platz des Parameterspeichers 15a gegeben. Diese Folge von Operationen wird am besten an Hand eines Beispiels beschrieben. Hierzu wird das folgende, bereits benutzte Bei spiel verwendet:
a: a b χ c + d χ e/f - gj
Die Prioritätsstufe für die Operatoren in ALGOL ist wie folgt gegeben:
3θ'984β/1071
Stufe Operatoren C ( ϊ ϊ= else (sonst) then (dann) begin (Beginn) < if (wenn) goto (Sprung nach) ] ) end (Ende)> ΞΞϋΞ 3 V A
> << + ' χ /
Die Schritte der Sequenzbildung sind dass ι Unter der Annahme, daB A, B$ Cs B9 E, F und G die Adressen der Variablen a, b, c, d, e, £ wad g sind, wird die Anweisung wie folgt gespeichert; A :=BxC + Dx E/F - G ; A wird untersucht, und da es sich vor := befindet, wird es in den reservierten Platz im Parameterspeicher 15a gebracht.
Die übrige Folge lautet:
B χ C + D χ E/F - Gf B wird in den Parameterspeicfeer 15te gebracht, Lade (L) wird in UQn Anwelsisiigsspeicher 14a gegeben und χ kommt In den Folgespeicher 17a.
Die Situation ist somit die folgende: 309848/1071
Parameterspeicher B A(in einem reservierten Platz) Anweisungsspeicher L
Folgespeicher χ
C wird in den Parameterspeicher und L in den Anweisungsspeicher gebracht. + wird mit χ verglichen, und da es eine geringere Priorität als χ hat, wird der x-Operator in den Anweisungsspeicher gebracht. + kommt in den Folgespeicher. Die Situation ist dann die folgende:
Parameterspeicher BC A
Anweisungsspeicher LL χ
Folgespeicher +
D kommt in den Parameterspeicher und L in den Anweisungsspeicher. Da χ eine höhere Priorität als + hat, kommt χ in den Folgespeicher. E wird in den Parameterspeicher und L in den Anweisungsspeicher gebracht.
Es ergibt sich dann die folgende Situation:
Parameterspeicher BCDE A Anweisungsspeicher LLxLL
Folgespeicher +x
/ wird mit χ verglichen, und da χ von gleicher Priorität ist, wird χ in den Anweisungsspeicher gegeben. / wird dann mit + verglichen, und da + eine geringere Priorität hat, wird / in den Folgespeicher gebracht.
Die Situation ist dann wie folgts
Parameterspeicher BCDE A
Anweisungsspeicher LLxLL χ
Folgespeicher + /
F wird in den Parameterspeieher und L in den Anweisungsspei- " eher gegeben. - wird mit / verglichen t und da / eine höhere Priorität hat,-kommt / in den ikm*©igungsspeich<§2V - wird dann mit + verglichen, und da -fr-di© gleiefe© Priorität wie - hat, kommt + in den AnweisungsspeieSaero ~ wird daaa -in den Folgespeicher gebracht,
30 98 48 / 1 0.7 1
Es ergibt sich somit die folgende Situation:
Parameterspeicher BCDEF A
Anweisungsspeicher LLxLLxL/+
Folgespeicher -
G wird in den Parameterspeieher und L in den Anweisungsspeicher gegeben. ; wird verglichen mit -f und da - eine höhere Priorität, als ; hat, wird - in den Anweisungsspeicher gegeben. ; ist das letzte Zeichen in der Anweisung, und sobald der Folgespeicher leer ist, wird ; in den Anweisungsspeicher gegeben.
Man erhält dann die folgende Situations
Parameterspeicher BCDEFG A
Anweisungsspeicher LLxLLxL/+L-j Folgespeicher
Ein anderes Verfahren besteht darin, den Parameterspeicher 15a wegzulassen und die Adresse in den Anweisungsspeicher zu geben.
Wenn dies getan wird, enthält der Anweisungsspeicher den folgenden Ausdruck:
BCxDExF/+G-;A
Dies ist die sog. umgekehrte polnische Schreibweise für den Ausdruck.
Eine weitere Alternative besteht darin, ein Rechenprogramm zur Ausführung der obigen Folge von Operationen zu verwenden und die sich ergebende Zeichenkette in der kompakten Form zu speichern.
Nachdem die erforderliche Folge von Instruktionen erzeugt ist, wirken diese wie folgt auf die Recheneinheit 20a ein:
1. Die in dem Anweisungsspeicher 14a enthaltene Operatorfolge wird sequentiell untersucht.
309846/1071
~ 34~ 23212B2
2. Wenn ein Lade-Operator (L) festgestellt wird, werden die nächsten Daten, die unter der nächsten Adresse im Parameterspeicher 15a gespeichert sind, siam nächsten verfügbaren Platz im Arbeitsspeicher 18a transferiert.
3. Wenn anstelle eines Lade-Operators ein anderer Operator nachgewiesen wird, benutzt die Recheneinheit 20a die Daten im zweiten vom letzten und im letzten benutzten Platz im Arbeitsspeicher 18a und gibt die Antwort in denjenigen Platz, der ursprünglich als der zvreite vom zuletzt benutzten Platz im Arbeitsspeicher 18a bezeichnet ist.
4. Wenn der Operator f festgestellt wird, interpretiert dies der Interpreter 21a dahingehend, daß das Ergebnis in dem Hauptspeicherplatz gespeichert werden soll, der in dem reservierten Platz im Parameter speicher 15a gehalten wird.
Die oben beschriebene Folge ergibt sich, wenn man beispielsweise die bereits oben genannte .Operatorkette betrachtet. Hierbei liegen die Verhältnisse wie folgt:
Parameter speicher BCDEFG A
Anweisungsspeicher LLxLLxL/ + L-;
Unter der Annahme, daß S^, Sg» S* ... Sn Plätze im Arbeitsspeicher sind, ergibt sich die folgende Reihenfolge:
Operator
L
L
Parameter
speicher
B
Rechen
einheit
S1
b
b
S2
C
71 Sx Wirkung
b(enthalten im
Platz B) kommt in
c kommt in S0
χ b χ c bc b wird multipli
ziert mit c und
die Antwort
kommt in S^
:L D be d d kommt in S^
L E bc d e e kommt in S,
30.9 8 46 /10
Operator Parameter- Rechen-Speicher einheit
L
/
d χ e be
be de de/f bc ae/t
Wirkung
d wird multipliziert mit e und die Antwort kommt in Sp
f f kommt in S3
de wird dividiert durch f und die Antwort kommt in
bc+de/f bc+de/f
bc+de/f g bc+de/f fec+de/f
de/f wird mit be addiert und die Antwort kommt in S1
g kommt in S2
g wird von
bc+de/f subtrahiert und die Antwort kommt in S.
die Daten in
(bc+de/f) werden in den Hauptspeicherplatz A gebracht
Bisjetzt wurden lediglich arithmetische Anweisungen betrachtet. Logische Anweisungen werden in der gleichen Weise behandelt.
Als Beispiel wird dia folgende logische Anweisung herangezogenj
y ΞΞ aAbVcA Γ d ;
Nach der Dekodierung wird daraus:
Parameterspeicher ABCD
AnweisurtessBeicfeer
Bie Behandlung in dsr Secheneinheit ist die gleiche wie oben beschrieben, mit der Ausnahme, daß anstatt ein dyadisciier Operator ein monadisciier Operator ist, der lediglich auf D üds
3093 48/1071
Unbedingte Sprunganweisungen von der Form wie goto (Sprung nach) A werden durch den Interpreter in der Recheneinheit als "übermittle die Anweisung beginnend am Platz A" interpretiert.
Bedingte Ausdrücke von der Form
if (wenn) a> b then (dann) χ := y eise (sonst) χ := Z ;
werden wie folgt zerlegt:
Adreßspeicher ABxYxZ
Anweisungsspeicher LL > if (wenn) LL :* j
Der if (wenn) -Operator wird wie folgt interpretierti
Wenn der vorangegangene Ausdruck true (wahr) ist, dann fahre mit der Reihenfolge fort, wenn er false (falsch) ist, dann finde den Operator, der dem Operator then (dann) folgt, und fahre während dieses Prozesses fort, inkrementiere den Adreßzähler jedesmal, wenn ©in L»Operator festgestellt wird.
Der then (dann) Operator hat die Interpretation finde den Operator;
Schleifenanweisungen von der Form
for (für) a : = step (Schritt) C until (bis) d
werden durch den Interpreter in der Recheneinheit in die passende Arithmetik interpretiert, um die Instruktionen zu testen und zu veranlassen, daß die Schleife beachtet wird.
Ein Rechner, der die obige Beschreibung gerätetechnisch verwirklicht, ist in der Fig. 2 dargestellt.
301846/1071

Claims (4)

  1. Patentansprüche
    Qy Digitalrechner mit einer Recheneinheit und einem Hauptspeicher für Digitaldaten in der Form von Anweisungen mit Operatoren und Parametern in einer kompakten hochstufigen Sprache,
    gekennzeichnet durch einen Anweisungsspeicher (14, 14a), einen Parameterspeicher (15, 15a), eine automatisch betriebsfähige Einrichtung zum Transfer von Operatoren oder alternativ von Operatoren und Parametern vom Hauptspeicher zum Anweisungsspeicher, eine automatisch betriebsfähige Einrichtung zum Transfer von Parametern vom Hauptspeicher zum Parameterspeicher in der sequentiellen Reihenfolge, in der sie in der Anweisung auftreten, eine Folgedekodierlogik (16, 16a) zur automatischen Untersuchung der Operatoren in dem Anweisungsspeicher zwecks Bestimmung ihrer Prioritätsstufen, einen Folgespeicher (17, 17a) empfangend den Ausgang der Folgedekodierlogik zum Zwecke der automatischen Speicherung der Operatoren entsprechend den ihnen zugeordneten Prioritäten und eine Mikroprogrammanordnung (19, 19a), die in Abhängigkeit vom Inhalt des Folgespeichers automatisch setzbar und automatisch betriebsfähig ist, um die Recheneinheit zur Verarbeitung der Digitaldaten zu steuern, die ihr unter der Steuerung des Parameterspeichers und in Übereinstimmung mit dem in der Mikroprogrammanordnung aufgestellten Mikroprogramm automatisch zugeführt werden.
  2. 2. Digitalrechner mit einer Recheneinheit und einem Hauptspeicher für Digitaldaten in der Form von Anweisungen mit Operatoren und Parametern in einer kompakten hochstufigen Sprache, gekennzeichnet durch Operatoren und Parameter mit einer Kodierung variabler Länge, die durch den Benutzungsumfang der Operatoren und Parameter bestimmt ist und im allgemeinen in .umgekehrter Beziehung zu diesem Benutzungsumfang steht, einen Anweisungsspeicher (14,14a), einen Parameterspeicher (15, 15a), eine automatisch betriebs-
    309846/1071
    2321282
    fähige Einrichtimg zum Transfer von Operatoren oder von Operatoren und Parametern variabler Länge vom Hauptspeicher zum Anweisüngsspeicher, eine automatisch betriebsfähige Einrichtung zum Transfer von Parametern variabler Länge vom Hauptspeicher zum Parameterspeicher in der sequentiellen Reihenfolge, in der sie in der Anweisung auftreten, eine Folgedekodierlogik (16, 16a) zur automatischen Untersuchung der Operatoren im Anweisungsspeicher zwecks Bestimmung ihrer Prioritätsstufen, einen Folgespeicher (17, 17a) empfangend den Ausgang der Folgedekodierlogik zum Zwecke der automatischen Speicherung der Operatoren in Übereinstimmung mit den ihnen zugeordneten Prioritäten und eine Mikroprogrammanordnung (19, 19a), die in Abhängigkeit vom Inhalt des Folgespeichers automatisch setzbar und automatisch betriebsfähig ist, um die Recheneinheit zur Verarbeitung der Digitaldaten zu steuern* die ihr automatisch unter der Steuerung des Parameterspeichers und in Über-. einstimmung mit dem in der Mikroprogrammanordnung aufgestellten Mikroprogramm zugeführt werden.
  3. 3. Digitalrechner nach Anspruch 1 oder 2,
    d ad urch gekennzeichnet, daß eine Parameterdekodierlogik vorgesehen ist, die aufeinanderfolgende Parametereinheiten zwischen Operatoren feststellt, um automatisch die Anzahl von Parametereinheiten zu bestimmen, die zur Bildung eines Parameters verwendet werden.
  4. 4. Digitalrechner nach Anspruch 3,
    d a d uF c h gekennzei ca net, daß sich die Parameterdekodier logik und die Folgedekodierlogik in gemeinsame Elemente teilen.
    30 98 4-6/107
DE2321262A 1972-04-28 1973-04-27 Digitalrechner Pending DE2321262A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1979372 1972-04-28

Publications (1)

Publication Number Publication Date
DE2321262A1 true DE2321262A1 (de) 1973-11-15

Family

ID=10135314

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2321262A Pending DE2321262A1 (de) 1972-04-28 1973-04-27 Digitalrechner

Country Status (5)

Country Link
DE (1) DE2321262A1 (de)
FR (1) FR2182569A5 (de)
IL (1) IL42113A (de)
IT (1) IT980931B (de)
NL (1) NL7305927A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0025952A2 (de) * 1979-09-24 1981-04-01 Siemens Aktiengesellschaft Schaltungsanordnung für einen Mikrocomputer mit Interpretorspeicher

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT336928B (de) * 1975-04-28 1977-06-10 Ibm Oesterreich Schaltungsanordnung zum ubersetzen von programmtexten

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0025952A2 (de) * 1979-09-24 1981-04-01 Siemens Aktiengesellschaft Schaltungsanordnung für einen Mikrocomputer mit Interpretorspeicher
EP0025952A3 (en) * 1979-09-24 1982-04-07 Siemens Aktiengesellschaft Berlin Und Munchen Circuit arrangement for a microcomputer

Also Published As

Publication number Publication date
IL42113A0 (en) 1973-07-30
NL7305927A (de) 1973-10-30
FR2182569A5 (de) 1973-12-07
IT980931B (it) 1974-10-10
IL42113A (en) 1976-02-29

Similar Documents

Publication Publication Date Title
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE69735342T2 (de) Binärprogrammkonvertiergerät und -verfahren
DE69726339T2 (de) Verfahren und Apparat zur Sprachübersetzung
DE2451982C2 (de)
DE1549523B2 (de) Datenverarbeitungsanlage
DE2505384A1 (de) Steuerteil fuer eine elektronische datenverarbeitungsanlage
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2054835A1 (de) Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen Prozessor
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE1236834B (de) Rechengeraet
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
EP1497722B1 (de) Optimierung von compilergeneriertem programmcode
DE3043653A1 (de) Datenverarbeitungsanlage
DE2458096A1 (de) Mikroprogramm-ladeeinrichtung fuer die ladezeit-festlegung
DE2405858A1 (de) Normalisierendes verschiebezaehlernetzwerk
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE2364865A1 (de) Erweitertes speicheradressenbildungssystem eines digitalen rechnersystems
DE2321262A1 (de) Digitalrechner
DE2513181B2 (de) Elektronischer Rechner
DE2047095A1 (de) Elektronisches Datenverarbeitungs system
DE2952689C2 (de)
DE19617842A1 (de) Verfahren zur Codetransformation
DE10141999A1 (de) Compiler zur Erzeugung von RISC-Maschinencode, wobei Operationen an im Quellcode geschriebenen BIT-Variablen durch Bearbeitung auf der Grundlage von BIT-Beurteilungsoperationen zur Verringerung des Maschinencodeumfangs ausgeführt werden
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten

Legal Events

Date Code Title Description
OHJ Non-payment of the annual fee