DE2054835A1 - Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen Prozessor - Google Patents
Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen ProzessorInfo
- Publication number
- DE2054835A1 DE2054835A1 DE19702054835 DE2054835A DE2054835A1 DE 2054835 A1 DE2054835 A1 DE 2054835A1 DE 19702054835 DE19702054835 DE 19702054835 DE 2054835 A DE2054835 A DE 2054835A DE 2054835 A1 DE2054835 A1 DE 2054835A1
- Authority
- DE
- Germany
- Prior art keywords
- registers
- stack
- program
- register
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Description
Dipl.-Ing. Horst Rose
Dipl.-lng. Peter Kosel Bad ^andersheim>
den 6· November 1970
Patentanwälte
Bad Gandersheim
Bad Gandersheim
Hohenhöfen 5
Burroughs Corporation
P^itentgesuch vom 6. November 1970
P^itentgesuch vom 6. November 1970
BURROUGHS CORPORATION, Detroit, VStA
Prozessor für ein Informationsverarbeitungssystem und ein Betriebsverfahren für diesen Prozessor
Die Erfindung betrifft einen Prozessor für ein Informationsverarbeitungssystem
mit einem Speichersystem, in dem verschachtelte Prozeßstrukturen speicherbar sind, und ein
Betriebsverfahren für einen derartigen Prozessor.
Dieses Informationsverarbeitungssystem verwirklicht Funktionen und Datenstrukturen, die mehreren, auf einer höheren
Ebene liegenden Programmiersprachen gemeinsam sind.
Digitale Großrechenanlagon oder -datenverarbeitungssysteme
werden häufig zur Multiprogrammverarbeitung verwendet. Das heißt, sie haben die Möglichkeit, mehrere voneinander unabhängige
Programme gleichzeitig ablaufen zu lassen. Dazu
109824/ 1671
gehört die sogenannte "Stapelverarbeitung","Realzeitverarbeitung"
und das sogenannte "time sharing". Um mehrere dieser unzusammenhängenden Aufgaben oder "Tasks" durchführen
zu können, sind bekannte Systeme mit sogenannten "Betriebssystemen" oder Steuerprogrammen versehen, die
solche Vorgänge wie die Steuerung der Reihenfolge der Tasks, SpeieherZuordnung oder Speicherzuweisung und dergleichen
überwachen. Das Betriebssystem enthält auch die verschiedenen Kompilierer, auch "Übersetzer" genannt, der
in einer problemorientierten Programmiersprache abgefaßte Ursprungsanweisungen in Zielanweisungen einer maschinenorientierten
Programmiersprache umwandelt (kompiliert), d.h. er gestattet dem Programmierer die Verwendung verschiedener
Programmiersprachen, ohne daß dieser den speziellen Schaltungsaufbau der betreffenden Anlage kennen
muß. Dabei beeinflußt die Art der Aufgaben, für die die Maschine verwendet werden soll, auch das Betriebssystem,
das seinerseits die Ausbildung der Anlage selbst beeinflußt. Wenn die Maschine problemorientiert ist, dann ist
das Überwachungsprogramm so aufgestellt, daß es eine eingegebene Folge von Programmen und dessen zugehörige Eingabedaten
verarbeitet. Wenn die Maschine dagegen auf Realzeit-
oder time-sharing-Betrieb ausgelegt ist, dann erkennt
das Überwachungsprogramm Teile eingegebener Daten als solche, die der Vielzahl von Verarbeitungsprogrammen
zugeleitet werden müssen. Wenn die Maschine auf timesharing- Betrieb ausgelegt ist, dann müssen verschiedene
Programme und zugehörige Hilfsmittel überwacht werden.
Obwohl es möglich ist, ein Einprozessorsystem mehrere Programme gleichzeitig verarbeiten zu lassen, erhält man
doch eine größere Flexibilität, wenn man ein Multiprozessorsystem verwendet, bei dem mehrere Prozesse oder
Programme mehreren Prozessoren zugewiesen werden. Bei-
109824/16-71
spiele derartiger Multiprozessorsysteme sind in den
USA-Patentschriften 3 419 849 und 3 411 139 beschrieben. Ein zentraler Prozessor (auch Zentraleinheit genannt),
wie er bei dem System nach der USA-Patentschrift 3 411 139 verwendet wird, ist in der USA-Patentschrift 3 401
376 beschrieben.
Bei den beschriebenen Systemen werden Betriebssysteme verwendet, für die Multiprozessorsysteme aufgestellt
sind. Ein wesentlicher Unterschied der Erfindung besteht darin, daß der Prozessor (die Prozessoreinheit) eine
Schaltungsanordnung enthält, mit der es möglich ist, Systemanweisungen (auch Befehle genannt) mit größerer
Geschwindigkeit als bisher auszuführen. Das Betriebssystem nach der Erfindung und die Schaltung zur Ausführung
dieses Betriebssystems sind insbesondere so aufgebaut, daß die Anlage für einen Multitask-, einen timesharing-,
einen Realzeit- oder einen Stapelverarbeitungsbetrieb besser geeignet ist.
Besonders vorteilhaft sind rekursive oder Wiedereintritts-Systemprogramme,
wie Dienstprogramme. Ferner ist es vorteilhaft, wenn diese Rekursivität in einer Hierarchie von
Ebenen und nicht nur einer Ebene vorliegt. Ferner ist es vorteilhaft und auch notwendig, bestimmte Systemprogramme
sowie Benutzerprogramme im Speicher vor einem unerwünschten Aufruf, einer unerwünschten Eingabe oder einem unerwünschten
Eintritt durch unzusammenhängende Prozesse zu schützen, die anderswo in dem System ausgeführt werden.
Ein weiterer Vorteil ist die Bildung von Funktionen, die verschiedenen Ursprungssprachen gemeinsam sind und durch
Schaltungsanordnungen verwirklicht werden, wo es möglich ist, um die Ausführungszeit zu verkürzen.
Man hat verschiedene Programmiersprachen oder Ursprungssprachen entwickelt, die dem Benutzer die Aufstellung
von Programmen ohne spezielle Kenntniss der jeweiligen Maschinensprache gestatten. Zu diesen verschiedenen
Programmiersprachen gehören Fortran, Cobol, Algol und PL/1. Ein besonderes Problem bei der Entwicklung von
Kompilierern oder Übersetzern für die Ursprungssprachen besteht darin, daß nicht nur verschiedene Arten von
Operatoren, sondern auch verschiedene Anweisungsformate (Befehlsformate) und Datenstrukturen verwendet werden.
Diese Unterschiede im Strukturformat und in den Operatoren sind zum Teil in den verschiedenen Speicherorganisationen
begründet, die für verschiedene Verarbeitungssysteme ausgebildet sind. Wenn daher das eine System
für eine bestimmte Programmiersprache besonders geeignet ist, muß es nicht ebenso gut für irgendeine andere Programmiersprache
geeignet sein. Man strebt daher eine Speicherorganisation an, die frei von irgendeiner internen
Struktur ist und die sich an Daten- und Anweisungs- bzw, Befehlssegmente mit einer nahezu unendlichen
Vielzahl von Größen anpassen kann. Ein derart strukturfreier Speicher kann sich jedoch nicht nur an Informationssegmente
mit unterschiedlicher Größe anpassen, sondern er gestattet auch eine größere Datenpackungsdichte.
Es ist unpraktisch, einen vollständig bitadressierbaren
Speicher zu bauen, daher sind Speicher wort- oder byteorientiert. Bei bekannten wortorientierten Speichern
ist es möglich, an einem ausgewählten Byte-Speicherplatz zu speichern oder zu lesen. Dabei ist ea jedoch
nicht möglich, ein Feld beliebiger Größe zu wählen, das also größer oder kleiner als ein Byte ist und an irgendeinem
ausgewählten Bit-Speicherplatz beginnen kann. Dies
1UÜÖ2A/1671
χ[.\γ- "iji'inni niinpiiiiii^ '!■■!Iiiiiiiiiii'iiiihiii'iiii1" \y
ist besonders zur Lösung verschiedener Aufgaben vorteilhaft, für die verschiedene Prograsuasprachen und
Datenformate entwickelt wurden.
Bekannte Informationsverarbeitungssysteme enthalten ferner
eine Schaltung für bestimmte Funktionen, für die eine Programmsprache entwickelt wurde. Systeme, die nur auf
die Lösung bestimmter Probleme ausgelegt sind, lassen sich jedoch nicht ohne weiteres so ändern, daß sie auch
zur Lösung anderer Probleme geeignet sind. Mit einem System, bei dem Funktionen, die vielen Programmsprachen
gemeinsam sind, gerätetechnisch verwirklicht sind, lassen sich kürzere Ausführungszeiten und Kompilierzeiten
erzielen.
Der Erfindung liegt daher die Aufgabe zugrunde, ein verbessertes Multiprozessorsystem zu schaffen, das für zahlreiche
verschiedene Anwendungsfälle geeignet ist, wie time sharing, Lösung wissenschaftlicher Probleme und andere
Datenverarbeitungsaufgaben. Dieses Multiprozessorsystem soll insbesondere Daten mit komplizierten Strukturen
verarbeiten können, die sowohl verschachtelt als auch aus Elementen veränderbarer Art und Länge zusammengesetzt
sein können. Dieses Multiprozessorsystem soll gleichzeitig für ausgefeilte Programmstrukturen geeignet
sein, die durch derzeitige und zukünftige Ursprungssprachen bestimmt werden.
Nach der Erfindung ist ein Prozessor für ein Informationsverarbeitungssystem
mit einem Speichersystem, in dem verschachtelte Prozeßstrukturen speicherbar sind, gekennzeichnet
durch eine zur Ausführung einer Folge von Programmanweisungen ausgebildete Programmvorrichtung, eine
109824/1671
Gruppe von Hinweisstapelpufferregistern zur Aufnahme einer Folge von Hinweisen (oder Bezugszeichen) auf Operanden, die von dem Programm verlangt werden, und eine
Gruppe von Steuerpufferregistern zur Aufnahme eines Kennzeichens (einer Beschreibung) der Hinweise, die die
Hinweisstapelpufferregister aufgenommen haben.
Eine andere Lösung dieser Aufgabe besteht darin, daß der Prozessor Hinweisregister zur Aufnahme einer Folge
von Hinweisen (Bezugszeichen) auf Operanden, die von einer Programmfolge gefordert werden, Steuerregister
zur Aufnahme eines Kennzeichens (einer Beschreibung) der Hinweise, Hilfsmittelregister zur Aufnahme von Hinweisen auf Routinen, aus denen Programmfolgen gewonnen
werden können, eine Vorrichtung zum Adressieren eines der Hilfsmittelregister zur Gewinnung eines Routine-Hinweises für eine Übertragung in eines der Steuerregister und eine Vorrichtung zum Adressieren eines der
Steuerregister zur Gewinnung von Hinweisen für eine Übertragung in eines der Hinweisregister enthält.
Das Verfahren zum Betreiben eines Prozessors für ein Informationsverarbeitungssystem, wobei der Prozessor
Hinweisregister zur Aufnahme einer Folge von Hinweisen (oder Bezugszeichen) auf Operanden, die von einer Programmfolge verlangt werden, Steuerregister zur Aufnahme
eines Kennzeichens (einer Beschreibung) der Hinweise und Hilfsmittelregister zur Aufnahme von Hinweisen auf Routinen, aus denen Programmfolgen gewonnen werden können,
enthält, ist zur Lösung dieser Aufgabe dadurch gekennzeichnet, daß eines der Hilfsmittelregister zur Gewinnung eines Routine-Hinweises für eine Übertragung in eines der Steuerregister adressiert wird und daß eines der
Steuerregister zur Gewinnung von Hinweisen für eine Übertragung in eines der Hinweisregister adressiert wird.
1098 24/167.1-·. ·;■·■■.:
Obwohl auf verschieden hoher Ebene liegende Programm-Sprachen
sich nicht nur in der Art der zu verwendenden Operatoren, sondern auch in ihren Anweisungsformaten
(bzw. Befehlsformaten) und in der verwendeten Datenstruktur (Datenaufbau) unterscheiden, ist dieses System in
der Lage, Informationen mit veränderbarer Struktur zu verarbeiten, so daß es für die verschiedensten Programmiersprachen
geeignet ist. Dieses Grundprinzip läßt sich auch bei einem Mehrprozessorsystem anwenden, der
mit einem Freifeldspeicher versehen ist, wobei jeder
Prozessor in dem System in der Lage ist, dynamisch Adressen für Datenstrukturen zu bilden, die an irgendeinem
Bitspeicherplatz im Arbeitsspeicher beginnen und eine beliebige Länge haben. Dadurch ist das System in
der Lage, eine Hierarchie verschachtelter Prozesse zu verarbeiten. Aus diesem Grunde wird nach der Erfindung
für die erforderliche Strukturpufferung (Strukturzwischenspeicherung) gesorgt, um die richtige Hilfsmittelzuweisung
und Prozedurrückkehr (Prozedurwiederholung oder -rücksprung) zu ermöglichen, die bei einer derartigen
Prozeßhierarchie erforderlich ist.
Der Prozessor ist mithin so ausgebildet, daß er Programmfolgen ausführen kann und Strukturpuffer enthält, die
auf Hilfsmittel hinweisen (bzw. diese kennzeichnen), die Routinen umfassen, die gerade für den Prozeß zur Verfügung
stehen, der diesem Prozessor zugewiesen ist.
Dabei sind nach der Erfindung Strukturpuffer vorgesehen, die Hinweise auf die Prozeßumgebung einer Routine enthalten,
die gerade ausgeführt wird, und die ferner Kennzeichen (Beschreibungen) von Werten und Operanden enthalten,
die verwendet werden sollen. Diese Beschreibungen
109824/1671
oder Namen und die Werte sind in Stapeln im Arbeitsspeicher angeordnet. Der Prozessor ist jedoch mit Pufferregistern
zur Aufnahme des oberen Teils dieser Stapel für einen schnellen Zugriff durch den Prozessor versehen.
Die Zustände oder Anweisungen der Namen- und Wertstapelpufferregister werden wieder durch Informationen gekennzeichnet,
die in Steuerfeldpufferregistern gespeichert sind und aus Hilfsmittelstapelpufferregistern geholt werden.
Die Erfindung und ihre Weiterbildungen werden im folgenden anhand von Zeichnungen ausführlicher beschrieben.
Fig. 1 ist eine schematische Darstellung eines Systems, bei dem die Erfindung angewandt wird.
Fig. 2 ist eine schematische Darstellung eines Prozessors, bei dem die Erfindung angewandt wird.
Fig. 3 ist eine schematische Darstellung des Interpretiererteils des Prozessors.
Fig. 4 ist eine: Darstellung des nach der Erfindung angewandten Deskriptorformats.
Fig. 5 ist eine Darstellung von Strukturausdrucksformaten.
Fig. 6 ist eine Darstellung einer Folge (auch Sequenz oder String genannt) von Strukturausdrücken, die in einem
Deskriptor vorkommen können.
Fig. 7 ist eine Darstellung des Namenformats.
109824/1671
Fig. 8 ist eine Darstellung der Organisation der Strukturpuffer nach Fig. 3.
Fig. 9 ist eine Darstellung der Programmoperatorformate.
Fig. 10 ist eine schematische Darstellung der Informationsübertragung
zwischen dem Speicher (Arbeitsspeicher) der Ebene 1 und dem Prozessor.
Fig. 11 ist eine Darstellung des Slementarsteuerwortformats und
Fig. 12 ist eine Darstellung eines Speichersteuerwortformats.
Multiprozess-Systeme und Multiprogramm-Systeme können
als eine Folge zusammenhängender oder unzusammenhängender Programme, Aufgaben (auch Tasks genannt) oder Arbeiten
angesehen werden, die im folgenden "Prozesse" genannt werden. Ein Elementarprozess ist eine serielle
Ausführung von Operatoren durch einen einzigen Prozessor. Ein Prozeß kann in Unterprozesse aufgeteilt oder Teil eines
Hauptprozesses sein. Auf diese Weise läßt sich eine Prozeßhierarchie aufstellen. Der Begriff "Prozeß" kann
als eine Assoziierung zwischen einem Prozessor und Adressenraum definiert werden. Der Adressenraum ist die Gruppe
aller Speicher, die durch diesen Prozeß zugänglich sind. Der gesamte in dem System zur Verfügung stehende Speicherraum
kann so betrachtet werden, als sei in ihm ein Globalprozeß gespeichert, bei dem es sich um den Stammvater
aller anderen Prozesse und Unterprozesse in dem System handelt. Ein derartiger Globalprozeß kann so betrachtet
werden, als enthalte er das gesamte Betriebssystem mit Uberwachungsprogrammen, Dienstprogrammen und
1 0982Λ/16 71
205A835 - ίο -
Kompilierern sowie den verschiedenen Benutzerprogrammen.
Der Adressenraum des Systems nach der Erfindung erstreckt sich über alle Speieherebenen einschließlich den Hauptspeicher und einen Hilfs- oder Reservespeicher und periphere
Geräte. Dieses System enthält mehrere Prozessoren, von denen jeder mit einer HilfsStruktur im Arbeitsspeicher
zum Speichern der Kennzeichnung eines neuen Arbeitsraumes oder neuer Arbeitsräume versehen ist. Diese Hilfsstruktur,
die noch ausführlicher beschrieben wird, gestattet jedem Prozessor mit der Relation zwischen dem
gesamten Globalprozeßraum (Arbeitsspeicher) und dem jeweiligen Prozeßraum, mit dem er gerade in Verbindung steht,
Schritt zu halten.
Die Prozeßhilfsstruktur ist die Vorrichtung, die zum Durchlassen aller Hilfsmittel zwischen Prozessen der Prozeßüierarchie
verwendet wird, und ist daher ein integraler Bestandteil des Hilfsmittelschutzschemas, das zum Schutz
verschiedener Benutzerprogramme während des time sharing und generell zum Schutz der verschiedenen Prozesse erforderlich
ist. Wenn ein bestimmter Prozessor von einem Hauptprozeß auf einen Unterprozeß übergeht, werden zugeordnete
Hilfsmittel in der Hilfsmittelstruktur des Prozessors übereinandergestapelt und aus der Prozeßhilfsmittelstruktur
entfernt, wenn der Prozessor aus dem Unterprozeß in den Hauptprozeß zurückkehrt. Die Hilfsmittelstruktur
enthält daher alle dynamisch zugeordneten Hilfsmittel, die ihr Prozessor für irgendeinen bestimmten
Unterprozeß eventuell benötigt. Ein bestimmter Systemmanagementprozeß ist der einzige Prozeß, der direkten
Zugang zu Eingaben oder Einsprüngen in jede der Hilfsmittelstrukturen hat.
109824/1671
Diese oben angegebene allgemeine Beschreibung des Prozeßaufbaus umfaßt bereits in allgemeiner Form eine Beschreibung
der Art, in der die verschiedenen Speicherebenen verwendet werden. Im folgenden soll kurz das nach
der Erfindung derart ausgebildete System beschrieben werden, daß es diesen Prozeßaufbau verwenden kann. Fig. 1
stellt schematisch ein System dar, bei dem die Erfindung angewandt ist. Dieses System enthält mehrere zentrale
Prozessorwerke 10 und ein oder, .mehrere EÄ-Steuerwerke
(EA = Eingabe/Ausgabe), die zusammen mit einem Reservespeicher 14 an mehrere Speicherwerke 11 über ein Verriegelungsschaltwerk
20 angeschlossen sind. Alle Speicherwerke 11 bestehen aus zwei Speichereinheiten 12 und eine
Trenneinheit 13, deren Zweck und Wirkungsweise noch ausführlicher beschrieben wird. Der Reservespeicher 14 enthält
ein Speichererweiterungssteuerwerk 15 und mehrere Einheiten 16 und 17, die Register, Kernspeicher oder
Plattenspeicher enthalten können. Der Reservespeicher (auch Hilfs- oder Ergänzungsspeicher genannt) wird im folgenden
als Speicher der Ebene 2 bezeichnet. Von den EA-Steuerwerken 18 werden ein oder mehrere zur Herstellung
der Verbindung zu den Peripheriegeräten 19 verwendet.
Der in Fig. 1 dargestellte Aufbau unterscheidet sich nicht wesentlich von dem nach der US-Patentschrift 3 411 139. Das
nach der Erfindung ausgebildete System unterscheidet sich jedoch gegenüber dem bekannten erheblich in der Art, in
der die erwähnte Prozeßhierarchie angewandt wird,und in der Art, in der die Teile nach der Erfindung angepaßt sind,
um diese Hierarchie anzuwenden.
Die Hauptmerkmale der Erfindung sind sowohl in der Art
zu sehen, in der die Speicherwerke 12 angepaßt sind, um
109824/161M
der Einrichtung als Freifeldspeicher zu erscheinen, und in der Art, in der die jeweiligen Prozessoren 10 ausgebildet
sind, um diesen Speicher zur Anwendung der erwähnten Prozeßhierarchie zu benutzen.
Die wesentlichen Einzelheiten des Prozessors werden zunächst anhand von Fig. 2 allgemein beschrieben. Wie aus
Fig. 2 zu ersehen ist, enthält der Prozessor 10 nach Fig. 1 eine Interpretierereinheit 21 und ein Rechenwerk 20.
Eine Speicherverbindungseinheit 22 (auch Speicher-Koppelelektronik
oder Speicher-Schnittstelleneinheit.genannt) dient als Verbindungseinheit zwischen dem Interpretierer
21 und den jeweiligen Speieherwerken 11 nach Fig. 1. Der
Interpretierer 21 besteht aus vier Grundteilen: Einem Kernteil 23, einem Strukturpufferteil 24, einem Programmteil
25 und einem Unterbrechungsteil 26.
Die Hauptfunktion jedes Prozessors 10 besteht in der Aktivierung und Deaktivierung von Prozessen, der Steuerung
von Informationsübertragungen zwischen Baueinheiten, der Bedienung von Unterbrechungen und der Ausführung von
Rechenoperationen, die von einem Programm verlangt werden. Diese Funktionen werden unter der Leitung eines
Hauptsteuerprogramms ausgeführt. Der Prozessor verringert die Speicherzugriffszeiten durch Verwendung in der
Phase aufeinander abgestimmter Lese- und Schreiboperationen, wo immer es möglich ist, und durch gleichzeitige
Pufferung bzw. Zwischenspeicherung von Informationen. Durch die Zentralisierung der Steuerung der funktionell
unabhängigen Unterteile der Interpretierereinheit 21 wird die Ausfuhrungsgeschwindigkeit erhöht und werden
die Hardware-Kosten verringert. In jedem Prozessor ist es der Interpretierer 21, der die Bewegung von Programm
und Daten steuert, für einen selbsttätigen Speicherschutz
100824/1671
sorgt, auf Unterbrechungen und Steuerungen anspricht und die verschiedenen Stapel und Puffer im Prozessor
leert und wieder füllt.
In dem Interpretierer liest (aus dem Speicher), interpretiert
und führt der Programmteil 25 die Programmoperatoren in dem Programmstring aus. Durch den Kernteil 23
werden Deskriptoren, die in dem Programmstring in Abhängigkeit von dem Programmoperator, der gerade ausgeführt
wird, aufgerufen werden, gelesen, interpretiert, ausgeführt und auf den neuesten Stand gebracht. Der Strukturpufferteil
24 besteht aus einer Gruppe örtlicher Speicher, die häufig aufgesuchte Posten zwischenspeichern um
die Anzahl der Leseoperationen, die mit der Ebene 1 (dem Hauptspeicher) durchgeführt werden, möglichst gering zu
halten. Die Zwischenspeicherung basiert auf den Strukturen, die zur Festlegung des Prozessors verwendet werden.
Der ünterbrechungsteil 26 empfängt Unterbrechungen und Fehler, prüft sie und läßt das geeignete Fehler- oder Unterbrechungssignal
durch, um eine Programmänderung zu bewirken.
Die Interpretierereinheit 21 ist dann so ausgebildet, daß sie die Verarbeitungs- oder Prozeßsteuerung in der Einrichtung
mit Hilfe von Strukturoperatoren, die speziell für ein wirksames Management von Daten und Programmstrukturen
ausgelegt sind, und mit Hilfe von Programmoperatoren übernimmt, die so ausgewählt sind, daß sie eine einfache
Verwirklichung auf höherer Ebene liegender Sprachen gestattet. Die Steuerinformation wird, wie dies erforderlich
ist, an das Rechenwerk und über die Speicherverbindungseinheit 22 an das Speicherwerk verteilt.
109824/1671
Obwohl der Hauptspeicher oder Speicher der Ebene 1 dem System als Freifeldspeicher oder ohne Struktur erscheinen kann, sind die verschiedenen darin gespeicherten
Prozesse und Informationssegmente natürlich strukturiert. Die Deskriptoren sind so beschaffen, daß sie die verschiedenen Informationsstrukturen im Speicher bezeichnen oder
darauf hinweisen. Sie schreiben auch diese Strukturen und ihre Bedeutung in bezug auf den Prozeß vor, in dem sie
vorkommen, oder in bezug auf den Hauptprozeß, wenn die Struktur selbst ein Unterprozeß ist.
In diesem Sinne umfaßt das Aufrufen aller strukturierten
Informationen in den verschiedenen Speicherebenen die Auswertung von Deskriptoren. Diese Auswertung wird durch den
Kernteil 23 vorgenommen, wie es in Fig. 2 dargestellt ist. Nach Fig. 4 gibt es vier Arten von Deskriptorformaten, die
sich jeweils auf verriegelte Datenfelder, Datenobjekte,
Programmsegmente oder andere Deskriptoren beziehen, bzw. diese kennzeichnen.
Jeder dieser Deskriptoren enthält drei größere Informationsgruppen oder Ausdrücke. Diese werden als Zugriffattribute, Interpretiererattribute und Strukturausdrücke
bezeichnet. Die Zugriffattribute bestimmen das Schutzvermögen und ob ein gekennzeichnetes Element im Speicher
abgespeichert oder ausgelesen werden kann. Die Interpretiererattribute bestimmen die Eigenschaften dieses
gekennzeichneten Elements, und der Strukturausdruck enthält die Art der Struktur, in der das Element liegt, und
dies bestimmt die Struktur und Strukturparameterfelder, die die Parameter vorgeben, die für einen Zugriff zu dieser Struktur erforderlich sind. Es sei anhand von Fig. 4
109824/1671
darauf hingewiesen, daß jeder Deskriptor soviele Strukturausdrücke
enthalten kann, wie zur Bestimmung oder Abgrenzung eines bestimmten Elements erforderlich sind.
Die Formate des Strukturausdrucksfeldes sind in Fig. 5
dargestellt. Neben dem allgemeinen Format sind zwei spezielle Strukturausdrucksarten dargestellt, bei denen es
sich um die Segmentnummer und die Rufausdrücke handelt.
Dies sind die zwei einzigen Strukturausdrücke, die eine vorbestimmte Größe haben. Die Segmentnummer ist stets
mit einem 8-Bit-Index zum Auswählen des Hilfsmittelstapels als ihr Parameter versehen. Der Rufausdruck ist stets mit
einem Namen als Parameter versehen, der zur Bezeichnung von Deskriptoren verwendet wird. Nach dieser allgemeinen
Beschreibung der Deskriptoren sei daran erinnert, daß ein Speichersteuerwort aus dem Deskriptor erzeugt wird.
Ausführliche Beschreibung der Erfindung A. Interpretierer-Kernteil
Das folgende bezieht sich auf Fig. 3, die die Schaltung des Interpretierers 21 und insbesondere des Kernteils 23
zur Auswertung der jeweiligen Deskriptoren und Strukturoperatoren darstellt. Die Kern-Hardware enthält fünf
Attributstapel 30 - 34 (für Stapel wird auch der Begriff Kellerspeicher verwandt), eine Deskriptor-Zusammensetzungs-Zerlegungs-Vorrichtung
35, ein Programm-Deskriptor-Steuerregister 36, ein Deskriptorausführungsregister 38 und
Deskriptorsteuerwerke 39 sowie einen Programm-Deskriptor-Steuerstapel 37. Der Kernteil 23 erhält Daten aus Strukturpuffern
40, einem Wertstapel 42, einer Programmwalzenschaltung 43 und dem Rechenwerk 20, wie es in Fig. 2 dar-
100024/1671
gestellt ist, Der Kernteil 23 überträgt Daten in die Strukturpuffer 40 und das Rechenwerk 20.
Die Auswertung der verschiedenen Deskriptoren durch den Kernteil 23 sorgt für den Zugriff zu den verschieden
strukturierten Informationen in den jeweiligen Speicherebenen. Das Ergebnis dieser Auswertung ist ein Zeichen,
das Terminal- oder Datenendstationsdeskriptor genannt wird. Bestimmte Elementzeichen in der Struktur hängen
von der Art der Auswertung des Deskriptors und den Auswertungsparametern ab. Die Auswertungsbetriebsarten sind
das Eingeben, Entfernen und Konstruieren und können auf alle Strukturen angewandt werden.
Die Auswertung beginnt mit der Ausführung einer Auswertungsoperation,
bei der ein Leerterminaldeskriptor und ein Deskriptor verwendet werden, der durch den Kernteil
während der Auswertungsoperation abgetastet werden muß. Jede Struktur kann sich auf zwei Fehlerprozeduren (eine
zum Lesen und eine zum Schreiben) beziehen, die während der Auswertung festgelegt werden, wenn der Fehlerprozedurname
in dem Deskriptor vorgeschrieben ist, der abgetastet wird. Dieser Name wird dann zum Terminaldeskriptor gebracht.
Die Fehlerindikatoren werden dementsprechend in dem Terminaldeskriptor akkumuliert.
Der Strukturausdruck des Deskriptors besteht aus einem Zuordnungsbit, an das sich eine Folge von Strukturanweisungen
anschließt* Wenn das Zuordnungsbit falsch ist, tritt sofort ein Zuordnungsfehler auf. Andernfalls werden
die Strukturausdrucksanweisungen der Reihe nach von links nach rechte ausgeführt. Jede Anweisung besteht aus einer
Operation und einem Strukturzustand.
1ÖÖ824/1671
Der Strukturzustand enthält Adressen- und Längenfelder.
Die Länge der Felder im Strukturzustand wird durch die Adressenfeldlänge des Strukturausdrucks vorgeschrieben.
Die erste Anweisung des Strukturausdruckes muß eine Segmentnummer bestimmen. Diese kann entweder explizit mit
einer Segmentanweisung oder mit einer Rufanweisung einer anderen Struktur, die die Segmentnummer bestimmt, bestimmt
werden. Die Segmentnummer wird in der Segmentanweisung des Terminaldeskriptors eingefügt.
Einige Anweisungen können betriebsartenabhängig sein und
diejenigen Strukturen überwachen, bei denen eine Zuordnung auftreten kann. Zugriffe zu betriebsartenabhängigen Anweisungen
im Entfernungs- oder Eingabebetrieb ändern jeweils den Strukturzustand für eine Zuordnung (auch Zuweisung
oder Zuteilung genannt) oder Abweisung eines Elements. Zugriffe zu irgendeiner Struktur im Konstruktionsbetrieb
haben keinen Einfluß auf den Strukturzustand. Im Falle betriebsartenunabhängiger
Strukturen sind Eingabe- und Entfernungsbetriebsarten gleichbedeutend mit der Konstruktionsbetriebsart. Bei Strukturen mit mehr als einer be-,
triebsartenabhängigen Anweisung (Instruktion) hat die betreffende Betriebsart nur auf die erste betriebsartenabhängige
Anweisung einen Einfluß. Das heißt, wenn die Struktur Unterstrukturen aufweist, bei denen eine Zuordnung
auftreten kann, kann die Zuordnung nur bei der innersten zuordnungsfähigen Struktur auftreten.
Jede der Strukturen im Speicher (Arbeitsspeicher) kann als in einen Adresssnraum enthalten angesehen werden, der
durch eine Adresse und eine Länge bestimmt ist. Bei der Strukturausdrucksauswertung arbeitet also jede Anweisung
nach der Anfangsanweisung in diesem Ausdruck auf eine Behälteradresse, die im Behälteradressenstapel 32 nach
1098-24/1671
Fig. 3 gespeichert ist, und auf eine Behälterlänge im Behälterlängenstapel 31, um eine geeignete Unterstruktur
in dem Behälter zu bestimmen. Wenn das Unterfeld nicht vollständig in dem so bestimmten Behälter enthalten ist,
tritt ein Fehler auf. Wenn nicht anders vorgeschrieben, sind von bestimmten Anweisungen benötigte Parameter in
dem Wertestapel zu finden, der in dem Arbeitsspeicher vorgesehen ist und den Wertestapelpuffern 42 nach Fig.
Werte zuführt.
Der Attributsammelstapel 30 nach Fig. 3 sammelt dann Zugriffgestattungsattribute, Segmentnummern und Formatselektoren,
die er während der Auswertung aus den verschiedenen Deskriptoren erhält. Die anderen vier Stapel
31..., 34 werden zur Strukturausdruckparameterbehandlung verwendet. Jeder Stapel besteht aus vier Wörtern, die
32 Bits lang sind. Die Stapel stehen bei allen Rechenoperationen mit dem Rechenwerk in Verbindung. Sie verwenden
und modifizieren auch die in dem Struktur- und Deskriptorpuffer 40 gespeicherten Strukturausdrucke,
und sie erhalten Parameter aus dem Wertstapel über Wertstapelpuffer 42 und die Programmwalzenschaltung 43. Die
B Stapel werden einzeln behandelt, Zwei der Stapel enthalten Behälterinformationen (Anfangsadresse und Länge),
während die übrigen beiden Stapel Elementinformationen (Anfangsadresse und Länge) speichern* Die Stapel sind in
Fig. 3 entsprechend beschriftet. während der Auswertung
speichern die Stapel Zwischenwerte aus diesen Behältern für Längeninformationen und Selbstidentifizierungsstrukturen.
Am Ende jeder Strukturtypauswertung sind die Elementstapel leer, während die Behälterstapel ein Teilbezugszeichen
für das Objekt aufweisen. Das Teilbezugs-
100624/1671
zeichen ist eine Behälteradresse und eine Länge, die der
Länge bis zu der Stelle entspricht, bis zu der der Deskriptor ausgewertet wurde.
Das Deskriptorausführungsregister 38 im Kernteil 23 speichert das laufende (augenblickliche) Deskriptorstrukturausdruckstypfeld,
so daß es zusammen mit Informationen aus dem Interpretierersteuerteil bei der Bestimmung des
Algorithmus verwendet werden kann, der vom Deskriptorsteuerteil 39 bei der Auswertung des augenblicklichen
Strukturausdruckes angewandt werden soll, In Übereinstimmung
mit dem Strukturausdrucksformat nach Fig. 5 ist der Strukturausdruckstyp 4 Bits lang, so daß das Deskriptorausführungsregister
38 ebenfalls 4 Bits lang ist.
Die Deskriptor-Zusammensetzungs-Zerlegungs-Vorrichtung 35
hat zwei Funktionen. Sie wird zum Zerlegen der Felder in den verschiedenen Deskriptoren und dazu verwendet, jedem
Feld seine passende Bestimmung zuzuweisen. Sie wird auch dazu verwendet, die Felder aus verschiedenen Quellen auf
den neuesten Stand- zu bringen und wieder zusammenzusetzen und Deskriptoren auf den neuesten Stand zu bringen.
Das Programm/Deskriptor-Steuerregister 36 und der Programm/Deskriptor-Steuerstapel
37 bilden die Programm/ Deskriptor-Steuerstruktur. Das PD-Steuerregister 36 (PDSR)
ist 106 Bits lang und der Programm/Deskriptor-Steuerstapel
37 (PDSS) besteht aus 8 Wortstellen (oder Wortplätzen), von denen jede 106 Bits lang ist. Der Stapel 37 ist das
Verbindungsglied zum Speicher der Ebene 1. Diese Struktur speichert sowohl den Programmausführungs- als auch den
Deskriptorauswertungsverlauf (bzw. die Historie der Programmausführung und Deski'iptorauswertung). Der Übergang .
109024/1671
in eine Subroutine, Prozedur, Funktion oder Schleife
bewirkt, daß die Programmausführungsinformation aus dem PDSR ins PDSS tibertragen wird. Dieser Einsprung
wird dann im PDSR festgehalten. Eine Programmverzweigung ersetzt dann die gerade im PDSR gespeicherte Information
durch eine Beschreibung (Deskription) der Verzweigung. Während der Deskriptorauswertung bewirkt
ein Strukturausdruck vom Typ "Ruf", daß der Inhalt des PDSR ins PDSS übertragen wird. Die Ruf-Beschreibung wird
ins PDSR gebracht. Da die Deskriptor-Auswertung niemals den bisherigen Programmablauf (die Programmhistorie) ändert,
befindet Sich der bisherige Deskriptor-Auswertungsverlauf stets an der Spitze (bzw. oben) im bisherigen
Programmausführungsablauf im PDSS.
Die Struktur- und Deskriptorpuffer 40 und der zugehörige Speicher 41 bilden keinen unmittelbaren Teil der Hardware
des Kernteils 23. Sie versorgen jedoch den Kernteil mit den Deskriptoren, die ausgewertet werden sollen. Der Puffer
ist ein örtlicher 32-Wort- und 128-Bit-Speicher. Der
Puffer ist in fünf Bereiche unterteilt: Koroutine, Steuerfeldpuffer,
Namenstapelpuffer, Deskriptorpuffer, Hilfsmittelstapelpuffer und Anzeigepuffer. Die Deskriptorhilfsmittelstapel-
und Anzeigepuffer sind mit einem Arbeitsspeicher versehen, um besetzte Einsprünge schnell kenzeichnen
zu können. Die Ebene-1-Adressen der Koroutinefeldeinsprünge und Namenstapeleinsprünge sind in dem zugehörigen
Arbeitsspeicher gespeichert, um sie schnell auf den neuesten Stand bringen zu können. Der Aufbau der Strukturpuffer
40 und des: zugehörigen Arbeitsspeichers 41 ist in Fig. 8 dargestellt.
109824/1671
Nach der Beschreibung der Deskriptorauswertung wird nun
die Ausführung des Programms beschrieben, das durch den Programmteil 25 nach den Fig. 2 und 3 gebildet wird. Die
Programmsilbe, die gerade ausgeführt wird, wird durch den Inhalt des PDSR 36 bestimmt. Diese Programmsilbe ist ein
Teil eines Programmsegments, das in dem Programmpuffer 44 gespeichert ist, bei dem es sich um einen örtlichen, zu- "
gehörigen, bzw. angeschlossenen Arbeitsspeicher handelt. Der Programmpuffer 44 füllt sich automatisch selbst wieder
auf, wenn er feststellt, daß der Programmstring bzw. die Programmfolge zu Ende geht. Bei einem Richtungswechsel in
dem Programmstring, der entweder durch Prozedureinsprünge oder Verzweigungen hervorgerufen wird, wird der Programrapuffer
44 assoziativ überprüft, um festzustellen, ob der Beginn des neuen Programmsegmentes, das ausgeführt werden
soll, bereits im Programmpuffer 44 vorhanden ist. Bei der Zwischenschaltung und dem Herausschalten (Einnisten und
Ausnisten) des PD-Steuerregisters 36 für einen Prozedureinsprung und -aussprung und Schleifensteueroperatoren A
wird der PD-Steuerstapel 37 verwendet, bei dem es sich um einen weiteren örtlichen Arbeitsspeicher handelt. Der PD-Steuerstapel
37 verbindet sich selbsttätig mit dem Arbeitsspeicher der Ebene 1, um sich zu entleeren und erneut
aufzufüllen.
Programmoperatoren werden aus dem Programmstring durch die Programmwalzenschaltung 43 herausgezogen und ins Programmausführungsregister
45 gebracht. Namen (wie oben erwähnt) werden aus dem Programmstring durch die Programmwalzenschaltung
43 herausgezogen und in den Attributstapel
10982 4/1671
der Strukturpuffer 40 zur Auswertung übertragen. Literale werden durch die Programmwalzenschaltung 43 aus dem Programmstring
herausgezogen und in die Wertestapelpuffer oder den Namenstapel der Strukturpuffer 40 gebracht.
Die jeweiligen Programmoperatoren gehören vier allgemeinen Klassen an, wie es in Fig. 2 dargestellt ist. Diese
Klassen sind: Literaloperatoren, Rechenoperatoren, Namenoperatoren
und allgemeine Operatoren.
Nach Fig. 9 beginnt jede Klasse von Operatoren mit einer
8-Bit-Silbe. Literal- und Namenoperatoren können in 4-Bi t-Inkrementell bis auf eine Maximal Silbengröße von 32
Bits bei Namenoperatoren und 40 Bits bei Literaloperatoren zunehmen. Die ersten beiden Bits des Operationscode
bestimmen, welche Operatorklasse die Programmsilbe enthält. Wenn die Programmsilbe einen Literaloperator enthält,
bestimmen die nächsten beiden Bits die Größe des Literais. Das Literal kann 4, 8, 16 oder 32 Bits lang
sein. Die nächste 4-Bit -Gruppe der Literalsilbe bestimmt den Ziel- oder Bestimmungsort und das Rechenformat des
Literais. Das erste Bit dieser Gruppe bestimmt, ob das Literal in den Namenstapel oder in den Wertestapel eingegeben
werden soll. Die übrigen drei Bits enthalten den Formatselektor, der als Index des Rechenformatvektors
verwendet wird. Diese Selektion bestimmt das Rechenformat des Literais. Der Rest der Programmsilbe enthält das
Literal.
Wenn die ersten zwei Bits des Operationscode einen Rechenoperator bestimmen, dann bestimmen die übrigen sechs
Bits die auszuführende Rechenoperation. Wenn die ersten
10Ö824/1671
beiden Bits des Operationscode einen Namenoperator bestimmen, dann bestimmen die nächsten fünf Bits die auszuführende
Operation. Die übrigen Bits geben an, ob das benannte Objekt oben in der Namenstapelscheibe enthalten
ist, und die nächsten 8 Bits geben die Verschiebung oder
Versetzung des Objekts in der Scheibe an.
Im folgenden wird die Schaltungsanordnung des Programmteils
25 beschrieben. Der Programmpuffer 44 dient zur Verringerung von Hauptspeicherauslesungen durch Schaf- M
fung von Programmstrings für das Prozessorwerk vor dem Auslösen einer Speicherauslesung. Die angeschlossene
Hardware des Programmpuffers 44 soll diesen Puffer überprüfen, um festzustellen, ob die Verzweigungsadresse oder
die benachbarte Programmadresse in dem Programmpuffer vorhanden
ist. Der Puffer 44 soll eine maximale Speicherpufferkapazität von 8 Wörtern aufweisen, von denen jedes
64 Bits breit sein soll.
Die Programmwalzenschaltung 43 führt folgende Funktionen durch: Das Ausrichten von Eingangssignalen aus dem Programmpuffer
44, das Auswählen (die Selektion) und Trennung eines 8-Bit-Operationscode, das Auswählen und Tren- %
nen eines Literais oder Namens veränderbarer Länge und das Aufteilen von Ausgangsimpulsen des Schiebeimpulsgebers
auf alle natürlichen Bestimmungsorte. Während der Ausrichtung von Eingangssignalen aus dem Programmpuffer
sollen die Eingangssignale aus zwei 64-Bit-Wörtern bestehen.
Das Programmsteuerwerk 46 bildet die Dekodier- und Kodiervorrichtung,
Steuervorrichtungen und Taktgebervorrichtungen, die zur Durchiü*\mng ihrer jeweiligen Funktionen
109824/1671
in dem Programmteil 25 erforderlich sind. Zu diesen Funktionen gehört die Bestimmung der Klasse der Operatoren,
die durch die Programmsübe vorgeschrieben sind, und auch
die Bestimmung der Literalgröße, die durch den Literaloperator vorgeschrieben ist. Eine weitere Funktion ist
die Übersetzung eines durch den Namenoperator vorgeschriebenen Namens in ein Terminalbezugszeichen. Das
Programmsteuerwerk 46 bestimmt auch die Operation, die durchgeführt werden soll und durch einen Namenoperator
oder einen allgemeinen Operator vorgeschrieben ist. Ferner steuert es das Durchlassen des Rechenoperationsfeldes
des Rechenoperators ins Rechenwerk 20 nach Fig. 2. Eine weitere Funktion besteht darin zu gewährleisten,
daß die erforderliche Prozessorumgebung vor der Ausführung der Programmsilbe vorhanden ist. Das Programmsteuerwerk
46 wirkt auch mit dem Unterbrechungsteil 26, den (nicht dargestellten) Rechensteuerwerken und den Deskriptorsteuerteilen
39 zusammen, um zu gewährleisten, daß die richtige Reihenfolge der Operationen eingehalten wird.
Der Unterbrechungsteil 26 erhält extern erzeugte Unterbrechungen
und extern oder intern erzeugte Fehler, um diese Fehler in Übereinstimmung mit einem programmierbaren
Vorrat aus Masken zu überprüfen. Der Programmteil soll von Unterbrechungen und unmaskierten Fehlern unterrichtet
werden, um Änderungen des Programms, das gerade ausgeführt wird, durchzuführen. Die geeignete Unterbrechungs-
oder Fehlerroutine kann aufgerufen werden. Der Interpretierer-Unterbrechungsteil 26 soll den Programmteil
25 auch informieren, wenn eine bedingte Fehlersituation auftritt.
4/1671
C. Interpretierer-Strukturpuffer
Jeder Prozessor in dem nach der Erfindung ausgebildeten System läßt sich funktionell so beschreiben, als benutze
er lediglich jene Strukturen, die der Kernteil 23 auswerten kann. Dadurch kann die Prozessorstruktur als Struktur
bestimmt werden, die im Speicher der Ebene 1 (Hauptspeicher) enthalten ist. Dies gewährleistet praktisch,
daß die Verwendung oder Menge der im Prozessor verwendeten örtlichen Pufferkapazität den funktionellen Betrieb
der Maschine nicht beeinflußt.
Die hauptsächlichen Prozessorstrukturen sind die Hilfsmittelsteuerstruktur,
die Prozedursteuerstruktur, die Koroutinesteuerstruktur und die Programmsteuerstruktur.
Diese Strukturen stellen alle Vorrichtungen dar, die zur
Leitung der jeweiligen Speieherebenen, Zuweisung von Prozessoren
und die interne Steuerung eines Einsprungs oder einer Rückkehr in eine !Coroutine oder eine Prozedur erforderlich
sind.
Das nach der Erfindung ausgebildete System kann als eine Gruppe oder ein Vorrat von Hilfsmitteln bezeichnet werden,
die einer Anzahl gleichzeitiger bzw. miteinander konkurrierender Prozesse zur Verfügung stehen. Die Leitung
und Zuweisung dieser Hilfsmittel ist auf eine Gruppe von Steuerprozessen aufgeteilt, von denen jeder eine Untergruppe
von Prozessen leitet. Die Verteilung der Hilfsmittel auf die verschiedenen Prozesse, die durch einen
bestimmten Prozess erzeugt und gesteuert werden,.erfolgt
durch die Hilfsmittelsteuerstruktur.
109824/1671
?■*■■■■$■
05Α835
- 26 -
Für jeden Prozessor in dem System ist nur eine Hilfsmittelsteuerstruktur vorgesehen. Während der Prozessor
von Prozeßraum zu Prozeßraum weitergeht, speichert die Struktur eine Historie der Hilfsmittel, die durchlaufen
werden. Wenn ein Prozeß aufgerufen ist, wird die Untergruppe der Hilfsmittel, die der Aufrufer durchlaufen will,
zur Benutzung durch den aufgerufenen Prozeß in die Hilfsmittelstruktur gebracht. Der aufgerufene Prozeß kann diese
Hilfsmittel benutzen, braucht sie jedoch nicht zu ändern. £. Wenn ein Prozeß in denjenigen Prozeß zurückkehrt, der ihn
ausgelöst hat, werden die Hilfsmittel, die diesem Prozeß zugewiesen wurden, aus der Hilfsmittelstruktur entfernt.
Die verschiedenen Hilfsmittel, die durch Einsprünge oder
Eingaben in die Hilfsmittelsteuerstruktur vorgeschrieben bzw. angegeben werden können, umfassen Segmentbehälter im
Speicher der Ebene 1, Segmentbehälter im Speicher der Ebene 2, Speicher der Ebene 3 (die verschiedenen EA-Geräte),
eine Vorschrift der Prozessorzeit, eine Vorschrift der Fehlermasken und die Fehler- und Unterbrechungsregister.
Die Hilfsmittelstruktur sorgt für einen Schutz gegen die W unbefugte Benutzung von Hilfsmitteln durch einen Prozeß
und den Wechsel von Hilfsmitteln, die nicht zu einem bestimmten Prozeß gehören. Dies wird dadurch erreicht, daß
die Hilfsmittelsteuerstruktur außerhalb des Adressenraumes aller Prozesse, mit Ausnahme des Interpretierermanagementprozesses,
gelegt wird.
Die Prozedursteuerstruktur dient zum Steuern der Zuweisung des Speichers der Ebene 1 oder Durchlassen von Parametern
zu Prozeduren und Funktionen, zum Zuordnen von Speicherraum für örtliche Variable, die in den Prozeduren,
109824/1671
- 27 -
Funktionen und Blöcken verwendet werden. Eine derartige
Struktur kann durch mehrere Sprachen, die auf einer höheren Ebene liegen, wirksam verwendet werden.
Die Prozedursteuerstruktur besteht aus einem Stapel (Kellerspeicher) zum Speichern von Deskriptionen (Beschreibungen
bzw. Darstellungen) der Datenstrukturen, die von einem Programm benutzt werden, und einem Anzeigestapel
(Sichtwiedergabestapel) zum Steuern der speziel- μ len Deskriptionen, die dem Programm gerade (laufend)
sichtbar sind. Die Prozedursteuerstruktur soll aus drei zusammenhängenden Stapeln bestehen: Einem Namenstapel,
Anzeigestapel und Wertstapel. Der Zusammenhang dieser Stapel ist bei einem Prozeduraufruf und einer Prozedurrückkehr
ersichtlich, wenn die Adressierungsuragebung der Prozedur ausgebildet sein muß. Die jeweiligen Stapel
befinden sich im Speicher der Ebene 1, obwohl für diese Stapel jeweils Puffer in dem Strukturpufferteil 24 vorgesehen
sind, wie es anhand der Fig. 2, 3 und 8 beschrieben wurde. Der Namenstapel enthält die Deskriptionen, Parameter
und Zielorte, die bei verschiedenen Prozeduren, Funktionen und Blockebenen erforderlich sind. In dem |j
Namenstapel werden Scheiben ausgebildet, so daß Parameter und Zielorte durch den Namen adressiert werden
können. Jede Scheibe enthält Deskriptionen von Parametern für eine bestimmte Prozedur, Funktion oder für
Deskriptionen von Zielorten für einen bestimmten Block. Jede Scheibe ist als eine lexikalische Ebene definiert
oder ausgebildet. Eine Deskription jeder Scheibe ist in dem Anzeigestapel enthalten. Ein typischer Name besteht
aus einer lexikalischen Ebene und einer Verschiebung, d.h. einem Index in den Anzeigestapel, der die
richtige Namenstapelsei ^ibe lokalisiert, und einem Index
109824/1671
in die Namenstapelscheibe, der die richtige Deskription
in dem Namenstapel lokalisiert. Scheiben können durch Prozeduroperatoren oder durch Prozeduraufrufe und -rticksprünge
erzeugt und zerstört werden. Eingaben oder Einsprtinge in den Namenstapelbereich zwischen dem oberen
Stapel und der obersten Scheibe werden zur Ausdrucksauswertung angewandt. Diese Eingaben oder Eingänge sind
nur auf der Basis "der letzte hinein, der erste hinaus" adressierbar. Die oberen vier Eingaben in den Ausdrucksauswertungsbereich
können in einem örtlichen Speicher für schnellen Zugriff zwischengespeichert werden.
Wie in Fig. 8 dargestellt, umfaßt der Namenstapelpuffer vier Wörter mit je 128 Bits. Der Puffer wird auf der
Basis der Benutzung dynamisch gesteuert. Die Größe dieses Arbeitsspeichers begrenzt die Breite des Namenstapels
auf 128 Bits.
Der Anzeigestapel enthält Deskriptionen der Namenstapelscheiben. Diese Deskriptionen werden durch eine aufgerufene
Prozedur oder den Scheibenoperator in den Anzeigestapel eingegeben* Diese Deskriptionen werden durch den
Prozedurrücksprung oder den Entscheibungsoperator aus dem Anzeigestapel entfernt. Jede Eingabe in den Anzeigestapel,
der angewählt wird, wird überprüft, um festzustellen, ob sie im örtlichen, zugehörigen Arbeitsspeicher
des Anzeigestapels festgehalten wird. Wenn sie nicht festgehalten wird, dann wird diese Eingabe aus dem Arbeitsspeicher
der Ebene 1 geholt und zum Ersetzen der ältesten Eingabe in den örtlichen Arbeitsspeicher verwendet. Wie
in Fig. 8 dargestellt ist, enthalten die Anzeigepuffer des örtlichen Arbeitsspeichers acht Wörter mit je 64
Bits.
109824/1671
Der Wertstapel speichert Rechenoperanden, deren Benutzung
unmittelbar bevorsteht oder die das Ergebnis einer Rechenoperation
darstellen. Jede Eingabe in den Wertestapel ist durch einen Datendeskriptor im Namenstapel gekennzeichnet.
Die Werte können explizit benannt sein. Der Name bezeichnet einen Deskriptor im Namenstapel. Diese Deskription
bestimmt wiederum die gewünschte Eingabe in den Wertstapel. Rechenoperatoren, die Werte anfordern, veranlassen
eine Überprüfung des oberen Teils des Namenstapels, um festzustellen, ob er einen Wert kennzeichnet oder dar- M
stellt. Programmoperatoren, die den Inhalt des Namenstapels beeinflussen, beeinflussen auch den Inhalt des Wertstapels,
wenn die Namenstapeleingabe den Wertstapel bezeichnet.
Der Wertstapel enthält Scheiben, die gleichzeitig mit den Namenstapelscheiben erzeugt und zerstört werden. Diese
Scheiben (oder Abschnitte) enthalten Operanden, Konstanten und Teilergebnisse einer Programmausführung in verschiedenen
lexikalischen Ebenen.
Irgendeine oder alle der vier obersten Eingaben in den M
Wertstapel können in dem Wertstapelpuffer 42 festgehalten
sein, wie es in Fig. 3 dargestellt ist. Der Puffer 42 ist ein örtlicher Arbeitsspeicher mit vier Wörtern
aus jeweils 256 Bits. Die Wortgröße mit 256 Bits begrenzt die Größe eines einzelnen Operanden für eine Rechenoperation.
Der Wertstapelpuffer verbindet sich selbsttätig mit dem Wertstapel im Speicher der Ebene 1.
Die Koroutinesteuerstruktur steuert alle Routinen, die gleichzeitig auftreten können, muß jedoch konsekutiv
durchlaufen werden. Jede Koroutine ist durch eine Proze-
109824/1671-
dursteuerstruktur und eine Programmsteuerstruktur bestimmt,
deren Name im Stapel der augenblicklichen (laufenden) Struktur enthalten ist. Die Strukturdeskriptoren
befinden sich in aufeinanderfolgenden Plätzen des Namenstapels. Diese Gruppe aufeinanderfolgender Plätze (oder
Zellen) wird Koroutinesteuerfeld genannt. Dieses Feld
für die Routine, die gerade ausgeführt wird, befindet sich im Deskriptorpuffer 40, wie es in den Fig. 3 und
dargestellt ist.
Die Koroutinestruktur ist mit einer Koroutineanzeigedeskription
(für Sichtanzeige) versehen, die in einem festen Platz in einem Prozeßumgebungsbereich gespeichert
ist. Die Koroutineanzeigedeskription bestimmt die Koroutineanzeige,
bei der es sich um einen Stapelzeiger handelt. Die oberste Singabe in die Koroutineanzeige
bestimmt die aktive Koroutine. Die oberste Eingabe soll eine Deskription der Hauptanzeige und einen Namen (das
heißt eine lexikalische Ebene und Verschiebung) enthalten, der, wenn er auf die Hauptanzeige angewandt wird, das Koroutinefeld
der aktiven Koroutine findet. Die übrigen Eingaben in die Koroutineanzeige bestimmen die Vorgänger
der aktiven Koroutine.
Eine Koroutine kann durch einen Koroutineaufrufoperator
aufgerufen werden. Dieser Operator hat den Namen des Koroutinesteuerf eldes der Koroutine, die aufgerufen werden
soll. Dieser Name ersetzt den augenblicklichen Namen in der oberen Eingabe der Koroutineanzeige. Die Hardware-Schaltung
speichert das Koroutinesteuerfeld der vorliegenden Koroutine wieder im Namenstapel der Hauptanzeige
ab. Das neue Koroutinesteuerfeld wird jetzt in der Deskriptorpufferstruktur
festgehalten.
109824/1671
Der Koroutxneauslösungsoperator bildet eine neue Familie
von Koroutinen, und zwar dadurch, daß er eine neue Eingabe in den oberen Teil der alten Koroutineanzeige bringt.
Der Koroutineendeoperator entfernt die augenblickliche Familie von Koroutinen durch Entfernen der oberen Eingabe
aus der Koroutineanzeige. Wie bereits bei der Beschreibung von Fig. 8 erwähnt wurde,, besteht der Koroutinesteuerfeldpuffer
aus einem örtlichen Arbeitsspeicher aus 12 Wörtern a 128 Bits und einem zugehörigen Arbeitsspeicher aus 12
Wörtern ά 40 Bits.
Die Aufgabe des Koroutinesteuerfeldpuffers besteht darin,
das Steuerfeld der laufenden Koroutine und die Deskriptionen des Hilfsmittelstapels und der Koroutineanzeige
festzuhalten. Die Deskriptionen sind Strukturinformationen, die durch den Programmoperator bezeichnet sind, d.h.
Strukturen, die von den Programmoperatoren verwendet werden.
Der angeschlossene bzw. zugehörige Speicher 41 nach Fig. 3 enthält die Ebene-1-Adresse jedes Deskriptors, der in
dem Puffer enthalten ist, so daß jeder auf den neuesten Stand gebrachte Deskriptor schnell wieder in den Speicher
der Ebene 1 zurückgebracht werden kann.
Um zu erläutern, wie der Inhalt der verschiedenen Stapel in den Strukturpufferteil 24 des Prozessors übertragen
wird, wird im folgenden auf Fig. 10 Bezug genommen. Die erste Eingabe in den Hilfsmittelstapelabschnitt enthält
den Prozeßumgebungsdeskriptor, der dann transferiert wird, um die erste Eingabe in den Hilfsmittelstapelpuffer des
Strukturpuffers 40 zu bilden. Die nächsten drei Eingaben, die die Prozessorzustandsinformation enthalten, werden
109824/1671
in die geeigneten Register des Unterbrechungsteils 26 gebracht. Diese Eingaben enthalten den Inhalt für das
Prozessormaskenregister, das äußere Maskenregister und einen Dekrementaltaktzähler.
Die übrigen Eingaben, bei denen es sich um Behälter der
Ebene 1, Behälter der Ebene 2 und Gerätenummern der Ebene 3 handelt, werden nach einem Zugriff im Hilfsmittelstapelteil
des Strukturpuffers 40 festgehalten. Für jede Eingabe
in den Puffer 40 gibt es eine entsprechende Eingabe in den zugehörigen Speicher 41. Der Hilfsmittelstapelpuffer
im Prozeßzustand ist jetzt gesetzt.
Im folgenden werden die bei der Ausführung der Programmoperatoren angewandten Algorithmen beschrieben. Die Operatoren,
die nach der Erfindung verwendet werden, umfassen Hinweisoperatoren (Bezugszeichen), Deskriptoroperatoren,
Prozedursteueroperatoren, Koroutineoperatoren und ProzeßrufOperatoren.
Auf diese Operatoren wurde bei der Beschreibung der Interpretiererstrukturpuffer
allgemein Bezug genommen. Sie werden beim Indizieren und Übertragen der verschiedenen
Datenstrukturen zwischen dem Arbeitspeicher und den einzelnen Prozessoren des Systems verwendet. Neben der Zuweisung
der einzelnen Prozessoren sorgen diese Operato ren auch in jedem Prozessor für die interne Steuerung
eines Einsprungs und Rücksprungs (bzw. einen Eingang und eine Rückkehr) in Koroutinen und eine Prozedur.
109824/1671
Die Hinweisoperatoren sind Namen-, Wert-, Speicherund Ausführungsoperatoren. Bei einer Nanienoperation
wird das Interpretiererattribut ausgewertet. Wenn das Interpretiererattribut Daten sind, bleibt der Deskriptor
oben im Namenstapel. Wenn das Interpretiererattribut ein Programm ist, wird eine Funktion aufgerufen. Der Wertoperator
wertet die Interpretiererattribute aus. Wenn das Interpretiererattribut Daten sind, werden die Daten aus
dem Wertstapel geholt und in diesen eingegeben. Wenn das Interpretiererattribut ein Programm ist, wird eine Prozedur
aufgerufen. Der Speicheroperator wird ebenfalls bei der Auswertung von Interpretiererattributen verwendet.
Wenn das Attribut ein Programm ist, wird eine Funktion aufgerufen. Ein Datendeskriptor wird als Folge des Funktionsaufrufes
zurückgeleitet. Das Format des Wertes wird in das Format des Speicherfeldes umgeformt. Dann wird der
Wert in dem durch den Datendeskriptor bezeichneten Feld gespeichert. Der Ausführungsoperator wird zum expliziten
Aufrufen von Prozeduren verwendet.
Die Deskriptoroperatoren sind Lade-, Beschreibungs-, Zuweisungs-, Binde-, Verkürzungs- und Endverknüpfungsoperatoren.
Der Ladeoperator sucht einen Deskriptor in einem Namenstapel auf und überträgt ihn nach oben in den Namenstapel.
Der Beschreibungsoperator wird zur Erzeugung einer Beschreibung (eines Kennzeichens) eines Namens verwendet
(d.h., er setzt den Namen in eine Deskription bzw. Beschreibung um). Die Operation setzt die Zugriffattribute
in einen Löschzustand und stellt die Interpretiererattribute auf einen Deskriptor ein. Bei dem erzeugten
Strukturausdruck handelt es sich um ein Feld, bei dem die Elementadresse und Länge des Namens als Parameter zum
Deskriptoroperator durchgelassen werden. Der Zuweisungs-
10 9 8 2 4/1671
operator wird zum Zuweisen von Speicherraum in einer unzugewiesenen Struktur verwendet. Der Bindeoperator
wird zum Abbilden einer unzugewiesenen Struktur auf einem zugewiesenen Speicherraum verwendet. Der Verkürzungsoperator wird zur Verringerung der Zugriffwegstrecke einer
Deskription verwendet. Der Verkürzungsoperator liest den Namendeskriptor aus und führt den ersten Term des
Strukturausdruckes aus, bei dem es sich nicht um eine Segmentnummer auf dem Feld handelt, und ersetzt diesen
Term durch einen abgeleiteten Feldausdruck. Der Endverknüpfungsoperator wird zur Berechnung der absoluten Adresse
einer Struktur verwendet.
Die Stapeloperatoren sind Verdoppelungs-, Lösch-, Austausch-, Wertstapel-zum-Namenstapel- und Namenstäpel-zum-Wertstapel-Operatoren.
Die Funktion des Verdoppelungsoperators besteht in der Verdoppelung der Eingabe in den
oberen Teil bzw. oben in den Namenstapel; wenn der Inhalt des Namenstapelscheibensegments einen Hinweis auf ein
Wertstapelscheibensegment enthält, wird der Inhalt des Wertsegments ebenfalls verdoppelt. Der Löschoperator
löscht die obere Eingabe oberhalb des Namenstapelscheibensegments und auch den Inhalt des Wertstapelscheibensegments
wenn ein Hinweis auf dieses erfolgt. Der Austauschoperator tauscht die beiden obersten Eingaben des Namenstapels und
auch die beiden obersten Eingaben des Wertstapels aus, wenn ein Hinweis auf diese im Namenstapel enthalten ist.
Der Wertstapel-zura-Namenstapel-Operator entfernt die obere
Eingabe des Wertstapels und gibt sie oben in den Namenstapel ein. Der Namenstapel-zum-Wertstapel-Operator nimmt
die oberste Eingabe des Namenstapels und gibt sie in den Wertstapel ein, und ein Hinweis auf die neue Wertstapeleingabe
ersetzt das Original im Namenstapel.
109824/1671
Die Prograramsteueroperatoren umfassen Schleifen-, Schleifenprüf-,
Verzweigungs-, bedingte Verzweigungs-, Haltoperatoren
und einen Operator "keine Operation". Der Schleifenoperator veranlaßt einen Subroutineaufruf bei
einem Unterprogramm, dessen Name genannt ist. Der Schleifenprüf
operator wird dazu verwendet, zu bestimmen, ob das Ende der Schleife erreicht worden ist. Der Verzweigungsoperator wertet das Interpretiererattribut des Deskriptors
im Namenstapelscheibensegment aus, um den auszulösenden Jj
Vorgang zu bestimmen. Der Operator "bedingte Verzweigung" bewirkt eine Änderung oder einen Wechsel in der Programmsteuerung,
wenn eine vorbestimmte Bedingung erfüllt ist bzAV. ein vorbestimmter Zustand auftritt. Der Halt-Operator
dient als Mittel zum programmatischen Anhalten eines Prozessors. Der Operator "keine Operation" bewirkt, daß
das Programmsteuerregister auf den neuesten Stand gebracht und der nächste Operator ausgeführt wird.
Die Prozedursteueroperatoren sind ein Scheibenbildungs-, ein Nicht-Scheibenbildungs- und ein Prozedurrückkehr-Operator.
Der Scheibenbildungs-Operator führt eine Eingabe in den Wertstapel durch und löscht den gebildeten ™
Hinweis. Dann führt er eine Eingabe in den Namenstapel durch und speichert den Hinweis oben im Naraenstapel und
auch in der Position der nächsten lexikalischen Ebene des Anzeigestapels, auf die das Feld der lexikalischen
Ebene im Programmsteuerregister hinweist. Der Nicht-Scheibenbildungs-Operator führt die entgegengesetzte Operation
zu der aus, die der Scheibenbildungsoperator ausführt. Der Prozedurrückkehr-Operator wird zum Entfernen
örtlicher, veränderbarer Scheiben (bzw. Abschnitte) im
Namenstapel und Wertstap^l verwendet.
109824/1671
^ verwendet.
- 36 -
Die Koroutineoperatoren sind ein Koroutineaktivierungs-,
ein Koroutineruf- und ein Koroutineende-Operator. Der
Koroutineaktivierungsoperator dient zur Bildung einer Gruppe von Koroutinen durch Eingeben des augenblicklichen
Anzeigedeskriptors in den Koroutinestapel. Der Koroutinerufoperator bringt das aktive Koroutinesteuerfeld
in den Speicherplatz des Namenstapels zurück, und ein neues Koroutinesteuerfeld wird ausgelesen und in dem
Deskriptorpufferteil abgespeichert. Der Koroutineende-Operator
wird für eine Rückkehr in eine Hauptkoroutine
Die ProzeßrufOperatoren sind ein Prozeßparameteroperator,
ein Operator "indirekter Prozeßparameter", ein Prozeßrufoperator
und ein Prozeßende-Operator. Der Prozeßparameteroperator leitet Hilfsmittel aus dem Hauptprozeß in einen
Unterprozeß. Der Operator "indirekter Prozeßparameter" wird dazu verwendet, Hinweise auf externe Objekte aus
einem Hauptprozeß in einen Unterprozeß zu leiten oder zu erzeugen. Der Prozeßrufoperator wird zur Erzeugung einer
neuen Hilfsmittelstapelscheibe verwendet. Der Prozeßende-Operator wird zum Entfernen oder Beseitigen einer Hilfsmittelstapelscheibe
verwendet.
Dieses neue Informationsverarbeitungssystem kann mithin
Funktionen ausüben, die zahlreichen, auf höherer Ebene
liegenden Programmiersprachen gemeinsam sind und Infor"-mationsstrukturen
mit veränderbarer Länge und Größe benötigen. Jedör Prozessor dieses Multiprozessorsystems
enthält verschiedene Strukturpuffer zur Verarbeitung verschiedener.
Prozeß- oder Programmstrukturen, die verschachtelt sind, um eine Hierarchie aus Prozessen und
Unterprozessen zu bilden. Die Strukturpuffer enthalten Hilfsmittelstapelpuffer, die Hinweise auf Hilfsmittel
10 9 8 2 4/1671
enthalten, die einem gerade zugewiesenen Prozeß zur Verfügung stehen und eine Deskription dieser Prozeßumgebung
enthalten, die ihrerseits Steuerinformationen für gerade in der Ausführung befindliche Routinen kennzeichnet.
Puffer sind ebenfalls für die verschiedenen Prozeßnamenstapel, die Parameter und Operanden beschreiben
bzw. bezeichnen, und auch für die Wertstapel vorgesehen, die diese Operanden zwischenspeichern.
Die Strukturpuffer werden über einen assoziativen (zugehörigen bzw. angeschlossenen) Speicher adressiert, um
das Suchen der Puffer für häufig benutzte Eingaben zu gestatten.
Patentanwälte
Dipi.-Ing. Horst Rose Dipl.-Ing. Peter Kose!
10982/. /167 1
Claims (6)
- Dipl.-lng. Horst Rose
Dipl.-lng. Peter KoselPatentanwälte
3353 Bad GandersheimHohenhöfen 5 _.,-...,...33 Bad Gandersheim, denBurroughs öorporation 6, November 1970Patentgesuch vom 6. Nov. 1970„ . . „ . Akten-lNr. : 788/245PatentansprücheProzessor für ein Informationsverarbeitungssystem mit einem Speichersystem, in dem verschachtelte Prozeßstrukturen speicherbar sind, gekennzeichnet durch eine zur Ausführung einer Folge von Programmanweisungen ausgebildete Programmvorrichtung, eine Gruppe von Hinweisstapelpufferregistern zur Aufnahme einer Folge von Hinweisen (oder Bezugszeichen) auf Operanden, die von dem Programm verlangt werden, und eine Gruppe von Steuerpufferregistern zur Aufnahme eines Kennzeichens (einer Beschreibung) der Hinweise, die die Hinweisstapelpufferregister aufgenommen haben. - 2. Prozessor nach Anspruch 1, gekennzeichnet durch eine Gruppe von Wertstapelpufferregistern zur Aufnahme von Operanden, auf die der Inhalt der Hinweisstapelpufferregister hinweist, und ein Anzeigeregister, das an die Gruppe von Hinweispufferregistern angeschlossen ist, um die darin enthaltene Gruppe von Hinweisen anzuzeigen.
- 3. Prozessor nach Anspruch 2, gekennzeichnet durch eine Gruppe von assoziativen Speicherregistern, die mit jedem der Hinweispufferregister und dem Steuerpufferregister zur Speicherung von Adressierungsindizes des Inhalts dieser Register verbunden sind.
- 4. Prozessor nach Anspruch 3, gekennzeichnet durch eine Vorrichtung zum Adressieren eines der Speicherregister der Steuerregister zur Gewinnung eines Hinweises für eine Übertragung in die Hinweisstapelpufferregister.1 098247.1,67 1,
- 5. Prozessor nach Anspruch 3, gekennzeichnet durch eine Gruppe von Hilfsmittelpufferregistern zum Speichern von Hinweisen auf Routinen, die der Programmvorrichtung zur Verfügung stehen, und durch eine Gruppe von assoziativen Speicherregistern, die mit den Hilfsmittelpufferregistern zur Speicherung von Adressierungsindizes des Inhalts dieser Register verbunden sind.
- 6. Prozessor nach Anspruch 5, gekennzeichnet durch eine Vorrichtung zum Adressieren eines der Hilfsmittelpuffer- ^ Speicherregister zur Gewinnung eines Routine-Hinweises für eine Übertragung in das Steuerpufferregister.7. Prozessor nach Anspruch 2, gekennzeichnet durch ein Deskriptorregister zur Aufnahme des Hinweises auf einen Operanden, der gerade verarbeitet wird.8. Prozessor nach Anspruch 7, gekennzeichnet durch eine Gruppe von Deskriptorstapelregistern zur Aufnahme von Hinweisen auf Operanden, die zuvor verarbeitet wurden.9. Prozessor nach Anspruch 8, gekennzeichnet durch eine Vorrichtung zum Adressieren der Deskriptorstapelregister ^ zum Auslesen eines Hinweises auf einen vorherigen Operanden.10. Prozessor für ein Informationsverarbeitungssystem, dadurch gekennzeichnet, daß der Prozessor Hinweisregister zur Aufnahme einer Folge von Hinweisen (Bezugszeichen) auf Operanden, die von einer Programmfolge gefordert werden, Steuerregister zur Aufnahme eines Kennzeichens (einer Beschreibung) der Hinweise, Hilfsmittelregister zur Aufnahme von Hinweisen auf Routinen, aus denen Programmfolgen gewonnen werden können, eine Vorrichtung zum Adres-10 9824/167 1sieren eines der Hilfsmittelregister zur Gewinnung eines Routine-Hinweises für eine Übertragung in eines der Steuerregister und eine Vorrichtung zum Adressieren eines der Steuerregister zur Gewinnung von Hinweisen für eine Übertragung in^eines der Hinweisregister enthält.11. Prozessor nach Anspruch 10, gekennzeichnet durch eine Gruppe von Wertstapelregistern zur Aufnahme der Operanden und eine Vorrichtung zum Adressieren eines der Hinweisregister zur Gewinnung eines Hinweises auf einen Operanden für eine Übertragung in eines der Wertstapelregister.12. Prozessor nach Anspruch 10, gekennzeichnet durch ein Anzeigeregister, das mit den Hinweisregistern verbunden ist, um die darin enthaltene Gruppe von Hinweisen anzuzeigen. ·13. Verfahren zum Betreiben eines Prozessors für ein Informationsverarbeitungssystem, wobei der Prozessor Hinweisregister zur Aufnahme einer Folge von Hinweisen (oder Bezugszeichen) auf Operanden, die von einer Programmfolge verlangt werden, Steuerregister zur Aufnahme eines Kennzeichens (einer Beschreibung) der Hinweise und Hilfsmitifeelregister zur Aufnahme von Hinweisen auf Routinen, aus denen Programmfolgen gewonnen werden können, enthält, dadurch gekennzeichnet, daß eines der Hilfsmittelregister zur Gewinnung eines Routine-Hinweises für eine übertragung in eines der Steuerregister adressiert wird und daß eines der Steuerregister zur Gewinnung von Hinweisen für eine Übertragung in eines der Hinweiäregisteradressiert Wird. PatentanwälteDipl.-lng. Horst Rose Dipl.-Ing. Peter Kosel1 0 9 8 2 Λ / 167 1L e e r s e 11 e
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US88053669A | 1969-11-28 | 1969-11-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2054835A1 true DE2054835A1 (de) | 1971-06-09 |
DE2054835C2 DE2054835C2 (de) | 1983-08-11 |
Family
ID=25376500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2054835A Expired DE2054835C2 (de) | 1969-11-28 | 1970-11-07 | Steuereinrichtung in einem Prozessor einer Mehrprozessor-Datenverarbeitungsanlage |
Country Status (6)
Country | Link |
---|---|
US (1) | US3665421A (de) |
JP (1) | JPS5740530B1 (de) |
BE (1) | BE758813A (de) |
DE (1) | DE2054835C2 (de) |
FR (1) | FR2069371A5 (de) |
GB (1) | GB1339284A (de) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4121284A (en) * | 1972-09-11 | 1978-10-17 | Hyatt Gilbert P | Computerized system for operator interaction |
BE789828A (nl) * | 1972-10-09 | 1973-04-09 | Bell Telephone Mfg | Gegevensverwerkend besturingsstelsel. |
FR2253421A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253425A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253418A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4073005A (en) * | 1974-01-21 | 1978-02-07 | Control Data Corporation | Multi-processor computer system |
US4369494A (en) * | 1974-12-09 | 1983-01-18 | Compagnie Honeywell Bull | Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system |
US4104718A (en) * | 1974-12-16 | 1978-08-01 | Compagnie Honeywell Bull (Societe Anonyme) | System for protecting shared files in a multiprogrammed computer |
US4099230A (en) * | 1975-08-04 | 1978-07-04 | California Institute Of Technology | High level control processor |
JPS5296836A (en) * | 1976-02-10 | 1977-08-15 | Toshiba Corp | Multiplex data processing system |
US4047161A (en) * | 1976-04-30 | 1977-09-06 | International Business Machines Corporation | Task management apparatus |
US4177514A (en) * | 1976-11-12 | 1979-12-04 | General Electric Company | Graph architecture information processing system |
JPS5362945A (en) * | 1976-11-17 | 1978-06-05 | Toshiba Corp | Disc address system |
US4065810A (en) * | 1977-01-26 | 1977-12-27 | International Business Machines Corporation | Data transfer system |
US4346436A (en) * | 1979-03-23 | 1982-08-24 | Burroughs Corporation | Interpretive digital data processor comprised of a multi-level hierarchy of processors and having program protection means |
US4597044A (en) * | 1982-10-14 | 1986-06-24 | Honeywell Information Systems, Inc. | Apparatus and method for providing a composite descriptor in a data processing system |
US4862351A (en) * | 1983-09-01 | 1989-08-29 | Unisys Corporation | Method of executing called activities via depictor-linked low level language microcode, hardware logic, and high level language commands; and apparatus for same |
US4901225A (en) * | 1984-04-09 | 1990-02-13 | Kabushiki Kaisha Toshiba | Processing apparatus with hierarchical structure for implementing a machine instruction |
US4710868A (en) * | 1984-06-29 | 1987-12-01 | International Business Machines Corporation | Interconnect scheme for shared memory local networks |
US5010482A (en) * | 1987-07-02 | 1991-04-23 | Unisys Corp. | Multi-event mechanism for queuing happened events for a large data processing system |
US5513332A (en) * | 1988-05-31 | 1996-04-30 | Extended Systems, Inc. | Database management coprocessor for on-the-fly providing data from disk media to all without first storing data in memory therebetween |
US5097533A (en) * | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
JPH04100731U (de) * | 1991-01-25 | 1992-08-31 | ||
JPH0831041B2 (ja) * | 1991-09-06 | 1996-03-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プログラム条件処理方法およびコンピュータ・システム |
US7784051B2 (en) * | 2005-11-18 | 2010-08-24 | Sap Ag | Cooperative scheduling using coroutines and threads |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1151686B (de) * | 1958-08-29 | 1963-07-18 | Ibm | Speicherprogrammiertes elektronisches Datenverarbeitungssystem |
US3411139A (en) * | 1965-11-26 | 1968-11-12 | Burroughs Corp | Modular multi-computing data processing system |
US3461434A (en) * | 1967-10-02 | 1969-08-12 | Burroughs Corp | Stack mechanism having multiple display registers |
-
0
- BE BE758813D patent/BE758813A/xx not_active IP Right Cessation
-
1969
- 1969-11-28 US US880536A patent/US3665421A/en not_active Expired - Lifetime
-
1970
- 1970-11-07 DE DE2054835A patent/DE2054835C2/de not_active Expired
- 1970-11-13 FR FR7040725A patent/FR2069371A5/fr not_active Expired
- 1970-11-14 JP JP45101399A patent/JPS5740530B1/ja active Pending
- 1970-11-28 GB GB5419970A patent/GB1339284A/en not_active Expired
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1151686B (de) * | 1958-08-29 | 1963-07-18 | Ibm | Speicherprogrammiertes elektronisches Datenverarbeitungssystem |
US3411139A (en) * | 1965-11-26 | 1968-11-12 | Burroughs Corp | Modular multi-computing data processing system |
US3461434A (en) * | 1967-10-02 | 1969-08-12 | Burroughs Corp | Stack mechanism having multiple display registers |
Non-Patent Citations (1)
Title |
---|
In Betracht gezogenes älteres Patent: DE-PS 15 24 103 * |
Also Published As
Publication number | Publication date |
---|---|
BE758813A (fr) | 1971-04-16 |
DE2054835C2 (de) | 1983-08-11 |
JPS5740530B1 (de) | 1982-08-28 |
FR2069371A5 (de) | 1971-09-03 |
US3665421A (en) | 1972-05-23 |
GB1339284A (en) | 1973-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2054835A1 (de) | Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen Prozessor | |
DE2515696C2 (de) | Datenverarbeitungssystem | |
DE2714805C2 (de) | ||
DE2411963C3 (de) | Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE2416609C2 (de) | Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen | |
CH650600A5 (de) | Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister. | |
DE2410491C2 (de) | ||
DE3638572C2 (de) | ||
DE2054947A1 (de) | Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem | |
DE2417795C2 (de) | Datenverarbeitungsanlage | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE2547488C2 (de) | Mikroprogrammierte Datenverarbeitungsanlage | |
DE1928202B2 (de) | Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen | |
DE2720578A1 (de) | Rechnersystem mit mehrprogrammbetrieb/mehrprogrammverarbeitung sowie verfahren zum betrieb eines solchen rechnersystems | |
CH657218A5 (de) | Mehrbenuetzer-datenverarbeitungsmaschine mit virtuellem speicher. | |
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE2023354A1 (de) | Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit | |
DE2458096C2 (de) | Einrichtung zum Laden von Mikroprogrammen in einer mikroprogrammierbaren Datenverarbeitungsanlage | |
DE1285219B (de) | Steuerwerk zur Ausfuehrung von Unterprogrammen | |
DE2054830A1 (de) | Informationsverarbeitungssystem mit wortstrukturiertem Speicher und Verfahren fur einen Zugriff zu einem derar tigen Speicher | |
DE1549531A1 (de) | Digitale Rechenanlage | |
DE19848742C2 (de) | Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann | |
DE2433436A1 (de) | Verfahren und anordnung zum mehrfachverzweigen des programms in einem digitalen computer | |
DE2000608A1 (de) | Schaltungsanordnung fuer eine Nachrichtenverarbeitungs-,insbesondere fuer eine Nachrichtenvermittlungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8125 | Change of the main classification |
Ipc: G06F 9/46 |
|
8128 | New person/name/address of the agent |
Representative=s name: EISENFUEHR, G., DIPL.-ING. SPEISER, D., DIPL.-ING. |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |