DE2456531A1 - Computer-system - Google Patents

Computer-system

Info

Publication number
DE2456531A1
DE2456531A1 DE19742456531 DE2456531A DE2456531A1 DE 2456531 A1 DE2456531 A1 DE 2456531A1 DE 19742456531 DE19742456531 DE 19742456531 DE 2456531 A DE2456531 A DE 2456531A DE 2456531 A1 DE2456531 A1 DE 2456531A1
Authority
DE
Germany
Prior art keywords
devices
address
computer system
processes
central unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE19742456531
Other languages
English (en)
Inventor
Spaeter Genannt Werden Wird
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.)
CII HONEYWELL BULL
Original Assignee
CII HONEYWELL BULL
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
Priority claimed from FR7342689A external-priority patent/FR2289004A1/fr
Priority claimed from FR7342690A external-priority patent/FR2258113A5/fr
Priority claimed from FR7342702A external-priority patent/FR2253432A5/fr
Application filed by CII HONEYWELL BULL filed Critical CII HONEYWELL BULL
Publication of DE2456531A1 publication Critical patent/DE2456531A1/de
Ceased 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

COMPAGNIE HONEYWELL BULL
94, Avenue Gambetta
PARIS. (20)/Frankreich
Unser Zeichen: H 1026
Computer-System
Die vorliegende Erfindung bezieht sich allgemein auf Computer-Systeme und insbesondere auf ein System und ein Verfahren für die Steuerung von Computer-Prozes-.sen im Rahmen eines Mehrprogramm/Simultanverarbeitungsbetriebs.
Das System gehört der vierten Generation an und entspricht folgenden Anforderungen:
1. Das System wird als Kommunikations- und Steuerungssystem klassifiziert.
2. Das System wird primär durch Daten gesteuert und nicht, wie frühere Maschinen, durch Programme.
3. Die Hardware bestimmt die Kommunikations- und Steuerungsprozeduren; der Gebrauch von System-Programmen wird wesentlich reduziert oder sogar eliminiert.
Schw/Pe
5 0 9823/0695
24CG531
4. Die Verarbeitung erfolgt überwiegend im Echtzeit-Betrieb; die Operationen an Eingangswerten werden so schnell ausgeführt, daß die Ausgangswerte innerhalb der verlangten Reaktionszeit zur Verfügung stehen.
5. Das System ist leicht ausbaufähig. Hardware und Software sind in ihrer Funktion modular strukturiert .
Die Verarbeitung bei Hardware-Software-Computer-Systemen der ersten Generation war relativ unkompliziert; der Job bzw. das Programm galt als die grundlegende Verarbeitungs-Einheit. So oft der Benutzer einen Job (Vorgang, Transaktion) initiierte,lief ein Programm ab, das im allgemeinen kaum oder gar nicht unterbrochen wurde, bis der Job bzw. Vorgang abgeschlossen war. Viel unkomplizierte Jobs - etwa die Übersetzung und Ausführung von Programmen, die in einer höheren Programmier-Sprache wie z.B. FORTRAN geschrieben waren - konnten als ein einziger Prozeß ablaufen und taten dies auch. Kompliziertere Jobs dagegen erforderten Multi-Tasking und erzeugten in ihrem Verlauf weitere Prozesse. (Terminologisch darf der "Prozeß", der eine fortdauernde Aktivität zum Ausdruck bringt, nicht mit dem Begriff "Programm" verwechselt werden; das Programm ist die Beschreibung einer Aktivität und kann von einem oder mehreren Prozessen benutzt werden. Man kann sagen, daß entweder ein Prozeß öder ein Prozessor ein Programm ausführt.)
Als man dazu überging, den Prozeß als grundlegende Verarbeitungseinheit zu konzipieren, entsprach dies einem Erfordernis der dritten Computer-Generation mit ihrem Mehrprogramm/Simultanverarbeitungsbetrieb. Denn in einer
509823/0695
Situation, wo mehrere Benutzer simultan bedient werden möchten, bietet sich die Konzeption einer Vielzahl von Prozessen an, die um die System-Elemente innerhalb des Computer-Systems konkurrieren.
Dabei besteht jeder Prozeß aus einem Programm (dili. einer geordneten Sammlung von Befehlen und sonstigen den Befehlen zugeordneten Daten), welches durch den Computer ausgeführt wird und durch die Bearbeitung von Daten einen Benutzer-Job oder eine Phase eines solchen Jobs ausführt. Wenn viele solcher Prozesse das System gleichzeitig in Anspruch nehmen, wird die Aufgabe der Kommunikation mit und zwischen diesen Prozessen sowie der Kontrolle und Zuteilung von Systemelementen für solche Prozesse - speziell im Hinblick auf die Erfordernisse der vierten Computer-Generation extrem kompliziert.
Die Burroughs-Computer B-6500 und B-7500 waren Thema eines Artikels von E.A. Hauch und B.A. Dent mit dem Titel "Burroughs B-6500/B-7500 Stack Mechanism", Proc. AFIPS Spring Joint Comp. Conf. 1968 (Konferenz-Protokolle des amerikan. Verbandes der Datenverarbeitungs-Gesellschaften), SS. 245-251, Thompson Washington, D.C, sowie eines Artikels von J.G. Cleary mit dem Titel "Process Handling on Burroughs B-6500", Proceedings of fourth Australian Computer Conference Adelaide, South' Australia, 1969 (Konferenz-Protokolle). Diese Computer bieten bis zu einem gewissen Grad Steuerung von Prozessen in der Weise, daß ein "Stapel" (Stack)-Mechanismus benutzt wird. Im wesentlichen wird "jedem Prozeß Speicherraum für einen Stapel zugeordnet, in welchem lokale Variable, Referenzen auf Programm-Prozeduren, Datenfelder und
509823/0695
aktuelle Prozeß-Zustände gespeichert werden ....
dieser Stack arbeitet als LIFO-Speicherbereich (als
letzter hinein, als erster heraus).... ein aktiver
Prozeß wird durch einen aktiven Stapel repräsentiert"
(J„G. Cleary, a.a.O. Seite 231-232). Entsprechend hat
der Stapel die Fähigkeit, die dynamische Entwicklung
eines in Ausführung befindlichen Programms zu speichern.
Ein Artikel mit dem Titel "Process Control and Communication" (Prozeß-Steuerung und Kommunikation) von A.J.
Bernstein, G.D. Detlefsen und R.H. Kerr, veröffentlicht
in Betriebssystem-Symposion des ACM (Verband für Computer-Anlagen) , beschreibt "die Struktur von Prozessen und die Möglichkeit der Interprozeß-Kommunikation in einem
Universal-Betriebssystem".
Bei diesem System kann ein Prozeß aus bis zu vier Teilen bestehen, die als seine logischen Segmente bezeichnet
werden. Diese Segmente können sich an räumlich auseinanderliegenden Speicherstellen befinden, wenn der Prozeß
im Speicher steht. Verschiebung und Schutz dieser Segmente besorgen vier Register.
Generell werden die Prozesse durch ein Betriebssystem gesteuert, das Grundbefehle (d.h. Pseudobefehle) implementiert, die der Prozeß erteilt; es wird ein Mechanismus benutzt, der den Prozessen die Kommunikation untereinander ermöglicht. In erster Linie besteht diese Kommunikation darin, daß sich die Prozesse bestimmte Vorgänge teilen genau wie bei der gemeinsamen Benutzung einer Datei.
Jeder Prozeß hat KIT-Eintragungen (Known Items Table),
die auf dieselbe AIT-Eintragung (Active Items Table) verweisen, welche eine eindeutige Eintragung für jede momentan geöffnete Datei enthält. Mit Hilfe dieser Struktur
kann ein Prozeß Benachrichtigung anfordern (durch Ausgeben des Grundbefehls NOTIFY), wenn das Ereignis eintritt.
509823/069S
Als Resultat erzeugt das Betriebssystem eine Eintragung in einer Ereignis-Warteschlange für das betreffende Ereignis; diese Eintragung bezeichnet genau den anfordernden Prozeß, der auf Benachrichtigung wartet. An dieser Stelle kann der anfordernde Prozeß die Ausführung fortsetzen, oder er kann sich selbst durch Erteilung eines Grundbefehls BLOCK suspendieren.
Man sagt,.das Ereignis trete ein, wenn ihm ein anderer Prozeß einen Grundbefehl CAUSE erteilt; es kann dann in der Richtungs-Struktur katalogisiert und bearbeitet werden, wobei die gleichen Grundbefehle benutzt werden. Dann können Informationen von einem Prozeß zum anderen transferiert werden, oder die Prozesse kooperieren in sonstiger Weise zur Ausführung einer bestimmten Aufgabe. Andere Grundbefehle im Betriebssystem erzeugen und produzieren Prozesse oder zerstören sie.
Diese Technik der Prozeß-Kommunikation und -Steuerung bietet keine geordnete dynamische Entwicklungsgeschichte des in Ausführung befindlichen Programms, enthält jedoch eine Konzeption der Software-Multiplexierung von Prozessen und des Ereignis-Managements. Auch sieht diese Technik nicht vor, daß ein Prozeß vor dem anderen durch Privilegierungs-Stufen geschützt wird. Sie bietet auch keine wirksame Methode zur Weitergabe von Nachrichten von einem Prozeß zum anderen. Darüberhinaus erscheinen die Adressierung von Prozessen und die Verschiebung als . unzureichend für Systeme der vierten Generatbn. Was man bei Systemen der vierten Generation braucht, ist ein Firmware/Hardware-System mit effizienter Adressierung und Verschiebung von Prozessen; es muß zugleich Informations-Strukturen liefern, die genau den Status des
809823/0695
Prozesses angeben und die außerdem den Prozeß bei der Kontrolle über diesen Status und beim Schutz vor anderen Prozessen und vor ihm selbst durch Privilegierungs-Stufen unterstützen; ferner muß es die Prozesse wirkungsvoll einsetzen und mit anderen Prozessen synchronisieren; schließlich müssen die Benutzer die Möglichkeit haben, ihre Programme modular zu schreiben, so daß man von einem Programm-Modul zum anderen übergehen kann.
Weiterhin zielt die vorliegende Erfindung auf ein System und eine Methode für die Prozeß-Steuerung, welche die Betriebskosten senken.
Es ist ein weiteres Ziel der Erfindung, ein System und ein Verfahren für die Prozeß-Steuerung zu liefern, bei denen die Prozeß-Status-Informationen und Steuerinformationen zentralisiert sind.
Ferner zielt diese Erfindung auf ein System und ein Verfahren für die Abrechnung über die Zeit, die ein Prozeß im Bereit-, Warte- und Laufstatus zubringt.
Diese und weitere Zielsetzungen der Erfindung werden deutlich in der Beschreibung einer vorzugsweisen Ausführungsform der Erfindung, wenn man sie im Zusammenhang mit den darin enthaltenen Figur liest.
ÜBERSICHT ÜBER DIE ERFINDUNG
Bei Prozessen in einer Multiprogramming-rUmgebung gibt es vier Status-Möglichkeiten: Lauf-, Bereit- (Ready-), "Warte-(Wait-) und suspendierter Status.
509823/0695
Ein Prozeß befindet sich im Lauf-Status, wenn er die Kontrolle über die Zentraleinheit (ZE) hat. Der Bereit-Status entspricht dem Lauf-Status, außer daß der Prozeß hier keine Kontrolle über die ZE hat. Ein Prozeß befindet sich im Warte-Status, wenn er erst bei Eintritt eines bestimmten Ereignisses fortfahren kann. Ein suspendierter Prozeß ist ein Prozeß, der für eine bestimmte Zeit angehalten wurde und später fortgesetzt werden kann.
Jedem Prozeß im Computer-System ist eine Hardware-Struktur zugeordnet, die als Prozeß-Steuerblock (PCB für engl.: Process Control Block) bezeichnet wird; der PCB wirkt als virtueller Prozessor mit o-Geschwindigkeit und enthält Steuerinformationen, die der Logik-Prozessor benötigt d.h. die Gesamtheit der Hardware-System-Elemente und Steuer-Informationen, die für die Ausführung eines Prozesses benötigt werden. Der virtuelle Prozessor (PCB) ersetzt den realen Prozessor (ZE) immer dann, wenn die einzige Aufgabe des Prozessors darin bestehen soll, hinzuhören, ob der Prozeß ein Signal übermittelt, wenn bzw. nachdem das Signal angekommen ist. Die Umstände, unter denen ein Prozeß damit beginnt, einen Prozessor ausschließlich als Abhörgerät zu benutzen,sind folgende:
a) Der Prozeß verläßt den Lauf-Status und betritt den Warte-Status (Wait), oder
b) der Prozeß verläßt den Lauf-Status und betritt den suspendierten Status.
In beiden Fällen wird die ZE durch den PGB ersetzt.
Die absolute Adresse eines PCB wird durch zwei Ganzzahlen, J und P, definiert, die manchmal als der logische Name des
B09823/069S
531
Prozesses bezeichnet werden. An einer der Firmware bekannten absoluten Speicherstelle befindet sich eine Tabelle, die sogenannte J-Tabelle. Die Eintragung J der J-Tabelle enthält die absolute Adresse Pj einer als P-Tabelle bezeichneten Tabelle. Die Eintragung ρ der P-Tabelle enthält die absolute Speicherstelle des durch den logischen Namen (J, P) definierten PCB.
Die charakteristischen neuen Merkmale dieser Erfindung sind ausführlich in den beigefügten Patentansprüchen dargestellt. Am besten versteht man jedoch die Erfindung als solche - Organisation, Operation, weitere Zielsetzungen und Vorzüge der Erfindung - anhand der folgenden Beschreibung in Verbindung mit den Figuren.
Figur 1 ist ein Blockdiagramm eines Multiprogramming-Systems, bei dem die vorliegende Erfindung angewendet wird.
Figur 2 ist eine schematische Darstellung verschiedener Hardware-Strukturen, die diese Erfindung benutzt.
Figur 3 enthält eine begriffliche Erläuterung für die reservierten Speicherbereiche in den in Figur 2 dargestellten Registern.
Figur 4 ist ein Schemabild eines Prozeß-Steuerblocks.
Figur 5 ist ein Schemabild eines Systems für die Adressierung eines Prozeß-Steuerblocks.
Figur 6 ist ein Schemabild der System-Basis der Erfindung.
Figuren 7A und 7B sind eine schematische Darstellung eines Stack-Segmentes bzw. eines Stack-Rahmens.
5 0.9823/0695 original inspected
Figur 8 ist ein Schemabild, eines Systems für die Adressierung von G-Segmenten und insbesondere der Prozeß-Warteschlange im GO-Segment.
Figur 9'ist ein auseinandergezogenes Schemabild eines GO-Segments, das die Warteschlange und die Verbindung von Prozessen illustriert.
Figuren 10a bis 101 sind Bloc_kdiagramme von Strukturen im PCB.
Figuren 11a bis 11r sind Blockdiagramme von Struktu- · ren in der System-Basis.
Figur 12 ist ein Schemabild der Adressierung von Benutzer- und System-Segmenten, wobei die Strukturen in System-Basis und PCB angewendet werden.
Figur 13. ist ein Schemabild des Leitwerks.
Figuren 14a bis I4i sind Flußdiagramme der Dispatcher-Einheit in der Firmware.
Figur 15a zeigt das Format der Tageszeituhr TOD, des Intervall-Zeitgebers IT und des Prozeßzeitgebers PT.
Figur 15b zeigt das Format.der Abrechnungsworte des PCB.
Figur 16 zeigt die Firmware-Fortschreibung des RUA (Running Time Account, Laufzeit-Abrechnung).
Figur 17 zeigt die Firmware für die Fortschreibung von WTA (Waiting Time Account, Wartezeit-Abrechnung) und RTA (Ready Time Account, Bereitschaftszeit-Abrechnung).
50 9 823/06 9 5
245S531
Allgemeine Erörterung
Typischerweise operiert diese Erfindung in der nachstehend beschriebenen Hardware-System-Umgebung, die durch ein Hardware/Firmware/Software-Betriebssystem koordiniert wird. Wie in Figur 1 dargestellt, sind die Subsysteme das Prozessor-Subsystem 101, das Speicher-Subsystem 102 und eines oder mehrere (bis zu 32) Peripherie-Subsysteme 103. Das Prozessor-Subsystem enthält eine Zentraleinheit (ZE) 104 und bis zu 4 Ein/Ausgabe-Steuereinheiten (IOC) 105. Jedes Peripherie-Subsystem besteht aus einem Peripherie-Leitwerk (PCU) 106, einer Reihe von Einheiten-Anschlüssen (DA) 107 und bis zu 256 Ein/Ausgabe-Peripheriegeräten 108. Das Speicher-Subsystem 102 besteht aus maximal 4 Halbleiter-Speichermodulen mit je 32 bis 512 Kilobyte.
I. PROZESSOR-SUBSYSTEM
Im Prozessor-Subsystem 101 vollzieht die ZE 104 die grundlegenden Verarbeitungsoperationen für das System und stellt die Verbindung (Interface) zum Speicher 102 her. Die Steuereinheit IOC 105 kontrolliert den gesamten Informations-Austausch zwischen dem Speicher-Subsystem 102 und den Peripheriegeräten 106.
A. ZENTRALEINHEIT (ZE)
Die ZE enthält ein Hauptspeicher-Leitwerk 109, einen Pufferspeicher 110, diverse Elemente, aus denen sich das Rechenwerk 111 zusammensetzt, sowie als Zusatzeinrichtung den Emulator 112. Das Hauptspeicher-Leitwerk
50982 3/0695
löst Konflikte der Benutzung des Hauptspeichers zwischen Rechenwerk 111, Pufferspeicher 110 und IOC 109. Konflikte werden nach Vorrang gelöst: Die IOC hat die höchste Priorität, gefolgt von Speicher-Schreiben (aus dem Rechenwerk) und dann Speicher-Lesen (in dem Pufferspeicher). Die Haupt-ZE enthält ferner das Adreß-Leitwerk ACU 131, das die Hauptspeicher-Adressierung und den Assoziativ-Speicher AS 132 für die. Speicherung der zuletzt benutzten Adressen des Hauptspeichers kontrolliert. Der Pufferspeicher 110 · ist ein kleiner schneller Pufferspeicher, der eine ausgewählte Region des Hauptspeichers reproduziert und an das Rechenwerk angekoppelt ist, um die durchschnittliche Speicher-Zugriffszeit zu senken. Bei jedem Speicher-Lesen erfolgt Zugriff sowohl auf den Pufferspeicher als auch auf den Hauptspeicher. Befindet sich die benötigte Information bereits im Pufferspeicher, so wird das Hauptspeicher-Lesen beendet und die Information aus dem Pufferspeicher geholt. Andernfalls wird der Hauptspeicher 102 gelesen. Jedesmal, wenn dies geschieht, ruft die ZE 104 32 Bytes ab, die die gewünschte Information enthalten. Diese Information verbleibt für künftigen Speicher-Zugriff im Pufferspeicher. Da der Pufferspeicher für die Software transparent ist, kann das Programm, das jeweils den Computer kontrolliert, nicht feststellen, ob die Information, die es gerade verarbeitet, aus dem Pufferspeicher oder aus dem Hauptspeicher stammt.
Das Rechenwerk 111 besorgt die gesamte Datenverarbeitung und Adressenbildung innerhalb der ZE. Ein typisoher Steuerspeicher 130 innerhalb des Rechenwerks (vgl* "Microprogramming: Principles and Practices",Samir S. Husson, Prentic Hall, Inc.) enthält Firmware, die das System initialisiert, die ZE 104 und die IOC 105 steuert und (nicht abgebildet) einen Befehlsvorrat dekodiert. Je nach Tiahl
509823/0 695
24C6531
kann der Steuerspeicher wissenschaftlich-technische Befehle, Test-Routinen, Emulations-Pakete oder SpezialElemente bieten, die die Funktionsmöglichkeiten des Prozessor-Subsystems erweitern.
Als Zusatzeinrichtung bietet die ZE Emulation von Systemen, die vom augenblicklichen System verschieden sind. Emulatoren 112 sind Komponenten der Firmware, Software und in manchen Fällen Hardware.
B. EIN/AUSGABE-STEUEREINHEIT
Die IOC 105 als Teil des Prozessor-Subsystems liefert einen Datenweg zwischen jedem Peripherie-Subsystem 103 und dem Speicher-Subsystem 102. Dieser Weg ermöglicht die Initiierung von Peripherie-Befehlen und kontrolliert den sich daraus ergebenden Daten-Transfer. Eine IOC kann typischerweise bis .zu 32 Kanal-Steuereinheiten bearbeiten (nicht abgebildet).
C. PERIPHERIE-SUBSYSTEME
In einem Peripherie-Subsystem 103, wie in Fig. 1 dargestellt, ist die Peripherie-Steuereinheit (PCU) 106 ein freistehender Mikroprogramm-Prozessor, der die Belastung der ZE 104 dadurch vermindert, daß er die Ein/Ausgabe-Einheiten 108 im Verlauf der Ein/Ausgabe-Operationen steuert. Die PCU tut dies durch Ausführung von Befehlen, die in einem Kanal-Programm enthalten sind. Dieses Programm hat zum Ergebnis, daß in der PCU arithmetische, logische, Transfer-, Schiebe- und Sprung-Operationen ausgeführt werden. Es gibt verschiedene PCU-Arten je nach dem
509823/0695 ORIGINAL INSPECTED
Typ der Einheit, den sie jeweils steuern: d.h. Lochkarten-Maschine, Massenspeicher (Platte), Magnetband, Datenüber-^ tragung usw. Geräte-Anschlüsse 107 vermitteln zwischen jeder PCU und den Geräten, die sie steuert.
Jeder enthält die spezielle Firmware und die zur Implementierung der Kommunikation mit einem speziellen Einheiten-Typ erforderliche Logik.
Je nach Typ steuert ein Geräte-Anschluß DA 107 ein oder mehrere Geräte.
Die PCU löst Hauptspeicher-Konflikte zwischen den zu ihr gehörenden Geräten; hingegen löst die IOC Konflikte zwischen mehreren PCU1s.
D. SPEICHER-SUBSYSTEM
Der Hauptspeicher 102 besteht aus einem kapazitiven Speichermedium in Form von Metalloxyd-Halbleiter-Chips (MOS). Dieses Medium operiert nach dem Wiederauffrischungs-Prinzip zur Aufrechterhai tung von Informationen. Jede Speicherstelle wird typischerweise wenigstens alle 2 Millisekunden aufgefrischt.
Hierdurch wird sichergestellt, daß es zwischen den Wiederauffrischungs-Takten und den Speicher-Zugriffen nur wenige Konflikte gibt (im Konfliktsfall hat die Wiederauffrischung Vorrang).
Am Beginn des Hauptspeichers wird ein Bereich für Hardware und Firmware reserviert. Die obere Grenze dieses Bereiches wird durch den Inhalt eines später zu beschreibenden Grenzadreß-ftegisters definiert, das für die System-Software '
60 9823/069
sichtbar ist. Der Inhalt dieses BAR (Boundary Address Register) wird bei der System-Initialisierung gesetzt. Der Speicherbereich unterhalb der im BAR spezifizierten Adresse kann IOC-Tabellen enthalten, welche die Konfiguration des Peripher!e-Subsystems, Firmware zur Steuerung der ZE oder Mikroprogramme und Tabellen für die Emulation definieren. Der Umfang des Bereichs unterhalb der im BAR definierten Adresse richtet sich nach der System-Konfiguration. Ob man Mikroprogramme im Hauptspeicher oder im Steuerspeicher unterbringt, richtet sich nach der System-Konfiguration sowie nach dem Anwendungsfall, der auf der Anlage laufen soll.
II. GRUND-STRUKTUREN DER MASCHINE
Es gibt typischerweise drei Haupt-Datenstrukturen, die bei dieser Hardware verwendet werden: Daten-Formate, Softwaresichtbare Register und die Befehls-Formate.
A. DATENFORMATE
Der Austausch von Informationen zwischen dem Arbeitsspeicher und der ZE erfolgt in vielfachen von acht parallelen Bits. Jede aus acht Bits bestehende Informationseinheit bezeichnet man als "Byte". Zum Datentransfer gehören auch Paritäts- bzw. Fehler-Korrekturdaten, die die Software jedoch nicht beeinflußen kann. Daher schließt der Begriff "Daten" in der' vorliegenden Beschreibung nicht die zugehörigen Paritäts- bzw. Fehler-Korrekturdaten ein.
509B23/0695
B. BYTES
Innerhalb eines Bytes werden die einzelnen Bits von links nach rechts von 0-7 durchnumeriert. Bytes werden separat oder in Gruppen verarbeitet. Zwei Bytes bilden ein Halbwort, vier Bytes ein. Wort, acht Bytes ein Doppelwort und sechzehn Bytes ein Vierfachwort. Dies sind die Hauptformate für sämtliche Daten einschließlich der Befehle.
C.DATENDARSTELLUNG
Alle Daten erscheinen in Binärform, können aber binär, dezimal oder alphanumerisch interpretiert werden. Daten-Bits werden in Vierergruppen als binär-codierte Dezimaldaten interpretiert; in Achtergruppen als alphanumerische Daten; oder in Gruppen zu 16 bis 64 als Binärziffern. Letztere werden als mit Vorzeichen versehene Festkommazahlen oder Gleitkommazahlen in Binärdarstellung interpretiert. Jede beliebige Anzahl zusammenhängender Bits bis zu einem Doppelwort kann auch als Kette behandelt werden. Der alphanumerische Zeichensatz ist in EBCDIC dargestellt. Als Alternativ- und Austausch-Code wird auch die Darstellung in ASCII unterstützt.
D. BYTE-ADRESSEN
Byte-Stellen im Hauptspeicher sind fortlaufend numeriert, beginnend bei 0; jede Nummer ist die Adresse des betreffenden Bytes. Von einer Gruppe aufeinanderfolgender Bytes sagt man, daß sie halbwort-, wort-, doppelwort- oder vierfachwort-ausgerichtet ist, wenn die Adresse des linken Bytes in
509823/0695
2458531
einer Gruppe ein vielfaches von 2, 4, 8 bzw. 16 ist. Immer wenn ein Halbwort, Wort, Doppelwort oder Vierfachwort so ausgerichtet ist, kann diese Einheit von der betreffenden Adresse abgerufen werden. Die Stelle der· Daten im Hauptspeicher spezifiziert ein Daten-Descriptor, auf den während der Adressenentwicklung indirekt zugegriffen wird.
E. SICHTBARE REGISTER
Innerhalb der in Figur 1 dargestellten ZE 104 gibt es dreiunddreißig für den Benutzer sichtbare Register, deren Inhalt insgesamt den Status der ZE definiert. Es handelt sich um vier Typen (siehe Fig. 2)J
1. allgemeine Register
2. Basisregister
3. wissenschaftliche Register (wahlweise)
4. Register verschiedener Art
F. ALLGEMEINE REGISTER
Allgemeine Register (GR) 201 dienen der Manipulation binärer Festkommazahlen und Bitketten. Im typischen Fall gibt es sechzehn allgemeine Register zu je 32 Bits in der ZE - GRO - GR15. Die allgemeinen Register GR8 bis GR15 sind auch als Index-Register verwendbar. Bei Verwendung als Index-Register werden sie hier als XO bis X7 bezeichnet: Die Indexierung erfolgt mit der aus 32 Bits bestehenden ganzzahligen Zweier-Komplement-Größe, die in einem Register enthalten ist.
5 0 9 8 2 3 / 0 6 9 E 0RIQINAL INSPECTED
G. BASISREGISTER
Basisregister (BR) haben dasselbe Format wie die Befehlsadreß-Register IC und Stapel-Register 202 bis 203. Basisregister dienen während der Adreßrechnung dazu, einen Teil des Arbeitsspeichers zu definieren. Im typischen Fall sind es acht Basisregister zu je 32 Bits: BRO bis BR7.
H. WISSENSCHAFTLICHE REGISTER
Wissenschaftliche Register (SR) sind eine wahlweise Zusatzeinrichtung für Berechnungen mit binären Gleitkommazahlen. Im typischen Fall sind es vier wissenschaftliche Register zu je 8 Bytes, die als SRO bis SR3 bezeichnet werden. Wissenschaftliche Register haben das Format 204 bis 205 aus Figur
I. VERSCHIEDENE REGISTER
Es gibt fünf sonstige Register:
- Befehlsadreß-Register: Format 202 - 203;
- Status-Register: Format 207;
- Stack-Register (als T-Register bezeichnet);
- Grenzadreß-Register: Format 202 - 203; und
- Hardware-Kontroll-Maskenregister: Format 208.
Das Befehlsadreß-Register (IC) ist ein 32-Bit-Register, das die Adresse des Befehls enthält, der gerade ausgeführt wird. Das Status-Register (STR) 207 ist ein 8-Bit-Register, in welchem Informationen über die gegenwärtig in Ausführung befindliche Prozedur gespeichert werden - z.B., ob die letzte Operation einen Unterlauf verursacht hat.
50 9 823/069 5
Das Stack-Register, das auch als T-Register bezeichnet wird, ist ein 32-Bit-Register, das einen Hinweis (Pointer) auf die Spitze eines der gegenwärtig aktiven Prozedur zugeordneten Rückstell-Stapels enthält. Die weiter unten zu beschreibenden Stacks (auch Stapel) bieten einen Arbeitsbereich und einen Mechanismus für die Sicherstellung von lokalen Variablen und die Bewahrung von Informationen über Prozedur-Einsprung und -Rücksprung. Das Grenzadreß-Register (BAR) 206 ist ein 28-Bit-Register, in dem die · niedrigste absolute Hauptspeicher-Adresse für den Zugriff der Software spezifiziert wird. Dieses Register wird während der Initialisierung des Systems geladen und kann nur von der Software gelesen werden. Das Hardware-Kontroll-Maskenregister 208 ist ein 8-Bit-Register, in welchem Informationen über den Zustand der Maschine gespeichert werden.
J. BEFEHLSFORMATE
Es gibt etwa 200 Befehle, die allerdings mehr oder weniger benutzt werden mögen. Jeder Befehl hat eine von vielen verschiedenen Längen, aber stets eine gerade Anzahl Bytes. Die Speicherung der Befehle erfolgt an aufeinanderfolgenden Speicherstellen. Die Adresse des äußersten linken Byte ist ein vierfaches von zwei; sie ist die Adresse des Befehls.
Die acht höchstwertigen Bits (und in manchen Fällen Bit 8 - 11 oder 12 - 15) eines Befehls stellen den Operations- Code dar, während die übrigen Bits einen oder mehrere Operanden repräsentieren. Ein Operand kann sein: eine Register-Kennzeichnung, eine Displacement-Kennzeichnung (relative
509823/0695
Adresse), eine Adreß-Silbe (logische Aaresse), ein Literal-Wert oder ein direkter Literal-Wert. Art und Anzahl der Operanden richten sich nach dem Befehlsformat.
III. SYSTEM-ORGANISATION ' -
A. JOB-STEP IM) TASK
Die vom Computer-System zu leistende Arbeit wird extern durch eine Reihe von Job-Steps beschrieben, und zwar über eine Job-Kontroll-Sprache. Ein Job-Step ist eine Arbeitseinheit, welcher Hardware-Betriebsmittel zugeteilt werden. Typischerweise besteht ein Job-Step aus verschiedenen Tasks. Eine Task ist die kleinste Einheit der vom Benutzer definierten Arbeit; sie besteht aus einem Befehlsstrom, der ohne Parallelismus ausgeführt wird.
B. PROZESS
Die für den Benutzer anschaulichen Konzeptionen von Task und Job-Step werden in der Hardware durch einen Prozeß bzw. eine Prozeß-Gruppe repräsentiert. Ein Prozeß ist definiert als eine geordnete Folge von Befehlen, die von der ZE asynchron ausgeführt werden können (das bedeutet: verschiedene Prozesse können aktiv sein und sich die Systemelemente teilen; aber nur ein Prozeß läuft jeweils tatsächlich.ab). Eine Prozeß-Gruppe ist eine zusammengehörige Gruppe von Prozessen, die zur Ausführung eines Job-Steps erforderlich sind.
509 8 23/0695
C. PROZESS-STEUERBLOCK UND SYSTEM-BASIS
' Da die Prozesse an verschiedenen Stellen während ihrer Ausführung die Kontrolle über die ZE abgeben können, wird dem Prozeß im Hauptspeicher ein Speicherbereich zur Verfügung gestellt, um den ZE-Status sicherzustellen. Diese Status-Information dient dann später dazu, die ZE entsprechend einzustellen, bevor der Prozeß die Kontrolle über die ZE zurückerhält.
Der einem Prozeß zugeordnete Speicherbereich wird als Prozeß-Steuerblock (PCB) 400 bezeichnet - siehe Figur Die in einem PCB enthaltenen Daten umfassen die Adressen von Speicherberächen (Adreß-Raum), die dem Prozeß zugeteilt sind, den Inhalt sämtlicher relevanten Register und dem Status des Prozesses. Infolgedessen dient ein PCB als Zwischenspeicher-Bereich für Informationen, die für den Start bzw. Wiederanlauf eines Prozesses ohne einen In- s .formationsverlust erforderlich sind. Jeder PCB ist für die Hardware sichtbar und kann durch das Betriebssystem adressiert werden, und zwar über eine Reihe von Hardware-Tabellen, die während der System-Initialisierung entwickelt und während des Betriebs des Systems modifiziert werden (siehe Figur 5).
Es gibt einen absoluten Hauptspeicher-Bereich, der als System-Basis bezeichnet wird (Figuren 5 und 6). Dieser Bereich wird durch die Firmware entwickelt; der Zugriff auf ihn ist möglich über das Basis-Adreß-Register (BAR) 501, das man nur lesen, in das man aber nicht hineinschreiben kann. Die Systembasis 502 enthält eine Reihe von System-Attributen; unter anderem eine Job-Step-Nummer und eine Prozeß-Gruppen-Nummer (J, P) für den gegenwärtig ablaufenden Prozeß. Ein weiteres Attribut in der System-Basis ist ein Pointer, der auf eine von der Hardware
509823/0695
definierte, als J-Tabelle 503 "bezeichnete Daten-Struktur verweist. Diese Tabelle enthält eine Eintragung für jeden gegenwärtig im System befindlichen Job-Step. Jede Eintragung der J-Tabelle 503 verweist auf eine zugehörige P-Tabelle 504, die ebenfalls eine von der Hardware definierte Daten-Struktur ist. Diese Tabelle definiert eine Prozeß-Gruppe und enthält eine Eintragung für jeden Prozeß innerhalb der Prozeß-Gruppe. Jede P-Tabellen-Eintragung verweist auf einen PCB 400.
Wie in Figur 5 dargestellt, vermittelt der J-Tabellen-Pointer 505, indexiert durch die J-Nummer über das Rechenwerk 506,Zugriff auf eine J-Tabellen-Eintragung 503. Diese Eintragung enthält einen P-Tabellen-Pointer, welcher, wenn er durch die P-Nummer über das Rechenwerk 506 indexiert wird, Zugriff auf eine P-Tabellen-Eintragung 504 vermittelt. Die P-Tabellen-Eintragung enthält einen Pointer 507, der auf den PCB des gegenwärtig ablaufenden Prozesses verweist. Auf diese Weise, kann das Betriebssystem mit Hilfe des Inhalts des BAR 501 auf den aktiven PCB zugreifen, und es kann auch auf jeden anderen PCB zugreifen, wenn es den ihm zugeordneten logischen Namen (J, P) kennt.
D. SPEICHER-SEGMENTIERUNG
In einem Simultanverarbeitungsbetrieb wie hier beschrieben, befinden sich jeweils viele Prozesse gleichzeitig im Arbeitsspeicher. Daß diese Prozesse in Umfang und Speicherbedarf verschieden sind, führt zu einem den Arbeitsspeicher betreffenden Problem. Die Hardware, die hier beschrieben wird und mit einem Betriebssystem (hier nicht abgebildet) kooperiert, löst das Problem durch dynamische Zuteilung von Speicherplatz. ' "
50 9 823/069 5
Wegen des stets wechselnden Charakters·des Speicherplatz-Bedarfs wird Arbeitsspeicher in Segmenten von variabler Größe zugeordnet, und die Speicherplatz-Zuteilung kann während der Laufzeit eines Prozesses neu strukturiert werden. So können einem Prozeß z.B. verschiedene nichtzusammenhängende Speicher-Segmente zugeordnet werden. Diese Methode der Speicherplatz-Zuteilung bezeichnet man als "Segmentierung".
Segmentierung bietet insofern ein.zusätzliches Problem, als die Arbeitsspeicher-Adressen jedesmal modifiziert werden müssen, wenn ein Prozeß ganz oder zum Teil verschoben wird. Um dieses Problem zu erleichtern, bietet das hier beschriebene System eine Technik, bei der die von einem Prozeß benutzten Adressen keine absoluten Hauptspeicher-Adressen sind, sondern logische Adressen. Diese logischen Adressen dienen dann dazu, absolute Adressen zu entwickeln.
Die Segmentierung ermöglicht ferner jedem Prozeß den Zugriff auf sein eigenes oder damit verwandte Speicher-Segmente, und zwar über ein System von Segment-Descriptoren (Beschreibungen). Durch Zugriff auf einen Segment-Descriptor kann ein Prozeß die Adresse eines Segments erfahren. Segment-Descriptoren sind im Hauptspeicher enthalten und werden vom Betriebssystem geführt.
Jeder Prozeß kann auf bis zu 2068 Speichersegmente zugreifen. Normalerweise würde dies eine gleichgroße Anzahl von Segment-Descriptoren pro Prozeß erfordern. Da jedoch gemeinsame Benutzung von Segmenten möglich ist, stellt das Betriebssystem Segment-Descriptoren in Segment-Tabellen zusammen. Diese Gruppierung basiert auf Zugriffsfähigkeit
509823/0695
durch einen Prozeß (Task), eine Prozeß-Gruppe (Job-Step) oder global (System-Ebene). Jedem Prozeß können bis zu 15 Segment-Tabellen zugeordnet seil.Diese Technik erfordert lediglich einen einzigen Segment-Descriptor für jedes Segment, auf das der Prozeß über eine Segment-Tabelle zugreifen kann. Infolgedessen beanspruchen die Segment-Descriptoren weniger Speicherplatz; die Arbeitsspeicher-Aktualisierung während der Verschiebung wird reduziert; und es wird ein gewisser Programmschutz geboten (der Hauptmechanismus für den Programmschutz ist das Ringsystem).
Ein Prozeß muß in der Lage sein, festzustellen, auf welche Segmente er zugreifen darf. Entsprechend stattet das System den Prozeß mit zwei Segment-Tabellen-Wortfeldern (Segment-Table- Word Array - =STWA) aus. Diese Felder enthalten die Adresse sämtlicher Segment-Tabeilen, auf die ein Prozeß zugreifen kann. Es gibt für jeden Prozeß zwei Segment-Tabellen-Wortfelder, weil es zwei Segment-Formate gibt:
22 groß und klein. Das große Segment-Format hat maximal 2 Bytes, während kleine Segmente maximal 2 Bytes haben. Alle Segmente können verschieden groß sei n, mit Inkrementen von je" 16 Bytes bis hinauf zum Maximum. Ein System kann im typischen Fall bis zu 28 große Segmente und 204Ö kleine Segmente unterbringen.
Segment-Tabeilen-Wortfelder können durch das Betriebssystem verschoben werden; daher muß der Prozeß die absolute Adresse der ihm zugeordneten STWA1s kennen. Der PCB für jeden Prozeß enthält zwei V/orte, die diese Information enthalten: dies sind die Adreßraum-V/orte ASWO und ASW1 in Figur 4. Jedes Wort verweist auf ein Segment-Tabellen-Wortfeld STWA. Das Betriebssystem schreibt den Inhalt der ASW's fort, so oft die entsprechenden STViA1 s verschoben werden. Abarbeitung der Pointer-Kette und Dekodierung des Segment-
509823/0695
Descriptors ist eine Firmware-Funktion. Sobald diese Funktion daher eingeleitet ist, ist sie nicht einmal für das Betriebssystem sichtbar.
Die Segmentierung definiert über 200 Millionen Bytes Adreßraum als für Prozesse verfügbar. Diese Anzahl geht über die Kapazität des Hauptspeichers hinaus; daher wird in Verbindung mit dem Hauptspeicher ein Nebenspeicher (Magnetplatte oder Magnettrommel) verwendet. Das Betriebssystem erzeugt die Illusion, daß das System einen viel größeren Hauptspeicher hat, als den, der tatsächlich zur Verfügung steht. Diese Konzeption bezeichnet man als "virtuellen Speicher".
Zu einem gegebenen Zeitpunkt kann sich das definierte Segment innerhalb oder außerhalb des HauptspeicheiB befinden oder nicht. Der Inhalt eines Segment-Descriptors zeigt an, ob sich das entsprechende Segment im Hauptspeicher befindet oder nicht. Die Hardware erkennt jeden Versuch eines Prozesses, auf ein Segment zuzugreifen, das nicht im Hauptspeicher steht, und benachrichtigt das Betriebssystem. Das Betriebssystem veranlaßt dann, daß das gewünschte Segment aus dem Nebenspeicher (Sekundärspeicher) in den Hauptspeicher geladen wird. Dann stellt das Betriebssystem die Speicheradresse des Segments im Segment-Descriptor ab; dies ist die einzige Stelle, wo die absolute Adresse eines Segments zu finden ist. Diese Operation ist für den Prozeß als solche nicht sichbar; daher weiß der Prozeß nicht, daß sich das Segment nicht im Hauptspeicher befand oder daß es etwa innerhalb des Hauptspeichers verschoben werden muß.
Das hier beschriebene Computer-System schützt Daten und
509823/0695
Prozeduren, indem es die Prozesse daran hindert, einander zu stören oder unbefugt den Adreßraum eines anderen Prozesses in Anspruch zu nehmen. Dieser Schutz ergibt sich aus der Einschränkung der Adressierbarkeit auf dem Wege der Speicher-Segmentierung und aus einem Ringsystem.
Die Segment-Tabellen isoljo?en den Adreßraum der verschiedenen Prozesse im System. Während der Ausführung verwenden Prozesse stets eine segmentierte Adresse. Eine segmentierte Adresse besteht aus einer Segment-Nummer und relativen Adresse innerhalb des Segments. Die Hardware kontrolliert, ob die von einem Prozeß benutzte Adresse ein Teil des diesen Prozeß zugewiesenen Adreßraums ist. Liegt die Adresse außerhalb des vorgeschriebenen Adreßraums, so tritt eine Ausnahmebedingung ein. ~
Ein Prozeß kann nicht die Daten innerhalb des Adreßraums eines anderen Prozesses ansprechen, denn die Hardware .benutzt die Segment-Tabellen des ansprechenden Prozesses. Es gibt daher keine Möglichkeit für einen Prozeß oder eine Prozeß-Gruppe, ein Gebilde anzusprechen, das zu einer anderen Prozeß-Gruppe gehört.
Generell tritt im System Überlappung im Adreßraum bei solchen Segmenten ein, die gemeinsam von allen Prozessen benutzt werden. Diese gleichsam "öffentlichen" Segmente werden von System-Programmen erzeugt, die durch Kontrollen dafür sorgen, daß keine Adreß-Konflikte entstehen. Daher schützt die Segmentierung die Benutzer-Programme untereinander und das Betriebssystem vor den Benutzer-Programmen.
Segmente, die von mehreren Prozessen gemeinsam benutzt werden, sind nicht vor Mißbrauch seitens eines dieser Prozesse
509823/0695
geschützt. Um dieses Problem zu lösen, wird ein Ringsystem angewendet, bei dem Prozedur- und Daten-Segmente in einer Vier-Klassen-Hierarchie zusammengestellt sind. Die vier Ringklassen erhalten die Nummern 0-3. Jeder Ring' repräsentiert eine Stufe der Syst.em-Privilegierung, wobei Stufe 0 (der innerste Ring) am meisten, Stufe 3 (der äußerste Ring) am wenigsten privilegiert ist. Jeder Prozedur im System wird eine minimale und eine maximale Ausführungs-Ringnummer zugewiesen, die angibt, wer die Prozedur aufrufen darf. Eine Prozedur ist ein Unterprogramm mit der Möglichkeit, andere Prozeduren aufzurufen und Parameter an sie weiterzugeben.
Die allgemeinen Regeln des Ringsystems sind wie folgt:
1. Eine Prozedur in einem inneren Ring hat freien Zu- - griff auf Daten in einem äußeren Ring. Umgekehrt hat eine Prozedur in einem äußeren Ring keinen Zugriff auf Daten in einem inneren Ring.
2. Eine Prozedur in einem äußeren Ring kann zu einer Prozedur in einem inneren Ring verzweigen; umgekehrt ist diese Verzweigung nicht zulässig.
3. Jedes Segment, das Daten enthält, erhält zwei Ringwerte zugewiesen: einen für Lesen (Read = RD) und einen für Schreiben (Write = WR). Diese Ringwerte geben den maximalen Ringwert an, in welchem eine Prozedur ausgeführt werden kann, wenn der Zugriff auf die Daten entweder im Lese- oder im Schreib-Modus erfolgt.
Bei jeder Ausführung eines Prozedur-Befehls wird die Ringnummer der Prozedur (Effektiv-Adreß-Ring = EAR) mit den
509823/0695
Ringnummern verglichen, die dem die angesprochenen Daten enthaltenden Segment zugeteilt sind. Die EAR-Nummer ist die höchste Nummer der Prozeß-Ringnummern im Befehlsadreß-Register sowie sämtlicher Ringnummern in Basis-Registern und -Descriptoren, die im Adressierungsweg zu finden sind. Zugriff auf die Daten wird aufgrund eines Vergleichs der Ringnummern gewährt bzw. verweigert. Wenn z.B. eine System-Tabelle in einem Segment mit einem maximalen Ring-Lesewert 3 und einem maximalen Ring-Schreibwert 1 existiert, dann-kann eine in Ring 3 ablaufende Benutzer-Prozedur die Tabelle zwar lesen, sie aber nicht aktualisieren.
Es ist konstruktiv von vornherein festgelegt, daß Ring und 1 für das Betriebssystem und Ring 2 und 3 für den Benutzer reserviert sind. Ring 0 enthält die für die Operation des Gesamtsystems kritischen Segmente. Ring 1 enthält den Großteil der System-Segmente, bei denen ein Versagen keine katastrophalen Folgen hätte, sondern wieder in Ordnung gebracht werden könnte. Der Benutzer kann Ring 2 für bereits ausgeprüfte Programme und Ring 3 für solche Programme benutzen, die noch in der Fehlersuche sind.
F. PROZEDUR-AUFRUFE .
Der Prozedur-Aufruf ist eine bedeutende Operation im hier beschriebenen System. Prozedur-Aufrufe dienen dazu, von einer Prozedur zu einer anderen überzugehen; sie erlauben es den Benutzer-Prozeduren, die Dienste des Betriebssystems in Anspruch zu nehmen; und man erreicht mit ihnen eine modulare Struktur innerhalb des Betriebssystems. Ein Prozedur-Aufruf wird durch Befehle .und durch eine als Stack oder
50 9823/069 5
Stapel (Figur 7a) bezeichnete, von der Hardware erkannte Einrichtung bewerkstelligt.
Ein Stack ist ein Mechanismus, der die Entgegennahme, Speicherung und Wiedergewinnung von Daten auf LIFO-Basis (last in, first out) erlaubt.
Stacks sind in speziellen Segmenten resident, die man daher als Stack-Segmente bezeichnet. Ein Stack-Segment besteht aus einer Anzahl zusammenhängender Teile, den sogenannten Stack-Rahmen 701 (Figuren 7a und 7b), die jeder Prozedur wieder dynamisch zugeordnet werden.
Der erste Stack-Rahmen wird in der Spitze des Segments geladen, und die nachfolgenden Rahmen werden im Anschluß an ihn geladen. Der zuletzt geladene Rahmen gilt als Spitze des Stacks. Das T-Register 702 lokalisiert die Spitze des Stacks für den gegenwärtig aktiven Prozeß. .Ein virtuelles T-Register existiert im PCB für alle anderen Prozesse im System.
Ein Stack-Rahmen 701, wie in Figur 7b gezeigt, besteht aus drei Bereichen: einem Arbeitsbereich 702, in welchem Variable gespeichert werden, einem Sicherstellungs-Bereich 703, in welchem der Inhalt von Registern bewahrt wird und einem Übertragungs-Bereich 704, in welchem Parameter zwischen Prozeduren übermittelt werden. Vor einem Prozedur-Aufruf muß der Benutzer diejenigen Register angeben, deren Inhalt er erhalten möchte, und er muß im Übertragungs-Bereich diejenigen Parameter haben, die an die aufgerufene Prozedur weitergegeben werden sollen. Wenn der Aufruf erfolgt, sichert die Hardware den Inhalt des Befehls-Adreß-Registers IC und der angegebenen Basis-Register, um den Rücksprung aus der aufgerufenen Prozedur zu erleichtern.
509823/0695
Jeder Prozedur-Aufruf erzeugt einen Stack-Rahmen innerhalb eines Stack-Segments 701, und nachfolgende ineinander geschachtelte Aufrufe erzeugen zusätzliche Rahmen. Bei federn Ausgang aus einer dieser aufgerufenen Prozeduren erfolgt Löschung eines Stack-Rahmens im Stack. So wird ständig die Entwicklung der Aufrufe verfolgt und korrekter Rücksprung erleichtert.
Um zwischen Prozeduren, die in verschiedenen Ringen ablaufen,Schutz zu gewährleisten, werden verschiedene Stack-Segmente benutzt. Es gibt jeweils ein Stack-Segment, das jedem Schutzring pro Prozeß entspricht. Ein PCB enthält drei Stackbasis-Worte, die auf den Anfang der Stack-Segmente für die dem Prozeß zugeordneten Ringe 0, 1 und 2 hinweisen. Das Stack-Segment für Ring 3 kann nie durch einen inneren Airuf betreten werdenj daher wird seine Stack-Anfangsadresse im PCB nicht benötigt.
IV. PROZESS-MANAGEMENT UND -SYNCHRONISATION
Das hier beschriebene System sieht Simultanverarbeitungs- · Operationen vor, die durch ein Betriebssystem gesteuert werden, welches eine Kombination von Software, Hardware und Firmware verwendet. Die Software erstellt und löscht Prozesse innerhalb des Systems, während Hardware und Firmware das Multiplexieren der Prozesse in der ZE besorgen. Darüberhinaus sorgt eine Kombination aus Soft- . ware, Hardware und Firmware für die Synchronisation zwischen den Prozessen.
Gestartet und gestoppt werden Prozesse normalerweise - aber nicht immer - bei Beginn und Beendigung von Ein/Ausgabe-Operationen, während der entsprechenden Job-Bearbeitung und
5098 23/0695
zu anderen Zeiten und zu Zwecken, die das Betriebssystem für erforderlich hält. Daher benötigt man ein Kommunikations-System, um zusammengehörige Prozesse effizient starten und stoppen und Informationen zwischen' ihnen austauschen zu können. Das hier beschriebene Hardware-System sieht interne Nachrichten vor, die als Semaphore bezeichnet werden und ein Kommunikations-Glied zwischen den Prozessen bilden.
A. PROZESS-STATUS
Im jeweiligen Augenblick gibt es für den Prozeß vier Zustände: Lauf-, Ready-, Wait- oder suspendierter Status. Die Hardware erkennt diese vier möglichen Prozeß-Zustände und führt diverse Firmware-Prozeduren zur ZE-Zuteilung an die Prozesse, Status-Änderung und Bildung von Daten-Strukturen je nach dem Status des Prozesses aus. Der PCB enthält ein Statusfeld, das den gegenwärtigen Status des ihm zugeordneten Prozesses definiert.
Ein Prozeß befindet sich im Laufstatus, wenn er die Kontrolle über die ZE hat. Zu diesem Status gehört, daß der ZE ein Adreßraum (Segment-Tabellen) und eine Anfangsadresse geliefert werden. Die ZE führt dann Befehle in den Prozedur-Segmenten des Prozesses aus. Das Prozeßnamen- J-Tabeilen-Wort (logische Adresse) des PCB's für den gegenwärtigen im Laufstatus befindlichen Prozeß wird im "laufenden Prozeßwort" (BAR + 60) innerhalb der System-Basis verwahrt (siehe Figur 6; zu beachten ist, daß die in Figur 5 gezeigte System-Basis dieselbe ist wie die in Figur 6 gezeigte, jedoch unter Auslassung einiger Details).
509 823/069 5
Der Ready-Status ist gleichbedeutend mit dem Laufstatus, außer daß der Prozeß keine Kontrolle über die ZE hat, weil er von der ZE noch nicht erkannt worden ist. Ein Prozeß im Ready-Status steht mit anderen Ready-Status-Prozessen und mit dem gerade ablaufenden Prozeß in Konkurrenz um die ZE.
Ein Prozeß befindet sich im Wait-Status, wenn er erst dann fortfahren kann, wenn ein bestimmtes Ereignis,wie z.B. eine Nachricht über ein Semaphor,eintritt. Ein in diesem Sinne wartender Prozeß steht nicht in Konkurrenz um die ZE, kann aber mit anderen Prozessen in Konkurrenz stehen, die ebenfalls auf das betreffende Ereignis warten.
Ein suspendierter Prozeß ist' ein Prozeß, der von der Software vorübergehend gestoppt wurde und später fortgesetzt werden kann. Die Entscheidung, den Prozeß zu stoppen bzw. fortzusetzen, erfolgt extern, d.h. außerhalb des Prozesses. Daraus folgt: ein suspendierter Prozeß ist nicht aktiv und kann daher weder vom Eintritt eines Ereignisses verständigt werden noch die ZE benutzen.
Ein Prozeß wird unter folgenden Bedingungen suspendiert:
1) Durch Ausführung eines Terminate-Befehls (als Ergebnis der kompletten Ausführung aller seiner Funktionen).
2) Durch Ausführung eines Suspend-Befehls durch das Betriebssystem. ■ .. .
3) Durch den Eintritt einer Ausnahme-Bedingung, wobei die Kontrolle dem Betriebssystem übertragen wird.
509823/0695
B. PROZESS-ZUTEILUNG (DISPATCHING)
Der Übergang von Prozessen von einem Status in den anderen erfolgt entweder "freiwillig" (durch den ablaufenden Prozeß selber) oder "unfreiwillig" (durch andere Prozesse). Eine als "Dispatcher" bezeichnete ZE-Firmware steuert die Prozeß-Transaktion zwischen den verschiedenen Status-Möglichkeiten. Der Dispatcher benützt eine Reihe von Warteschlangen (die später beschrieben werden) zur Manipulation von Prozessen, die im Ready- oder im Wai't-Status sind. Suspendierte Prozesse werden durch die Software kontrolliert.
Nun zu Figuren 6, 8 und 9: ein Ready- oder Wait-Prozeß wird dargestellt durch einen PCB und eine als "Process Link" bezeichnete spezielle Prozeßanschlußeintragung in der.Warteschlange.
Figur 9 zeigt eine auseinandergezogene Darstellung des .Inhalts des GO-Segmentes 802 und enthält Process Links 803a - 803b und 803c - 803g von aktiven Prozessen sowie freie Process Links 805a - 805c von suspendierten Prozessen. Jedes Process Link (Prozeß-Anschlußeintragung) gibt den Prozeß-Namen (J, P), die Prozeß-Priorität und einen Pointer an, der auf das nächste Process Link in der Schlange verweist. Es gibt verschiedene Arten von Warteschlangen wie z.B. die Wait-Warteschlange 803a-b und die Ready-Warteschlange 803c-g.
Eine der J-Tabelle entsprechende, als G-Tabelle bezeichnete Hardware-Vorrichtung (Figuren 6 und 8) enthält Pointer für alle generellen (systemweit bekannten) Segmente 802 - 802n. Das erste Element, GO, der G-Tabelle 801 verweist auf dasjenige Segment 802, das die Dispatcher-Warteschlangen enthält. Ein G-Tabellen-Pointer auf die G-Tabelle 801
B09823/0695
findet sich in der System-Bsöls 502, wie in Figur 5 gezeigt. Ebenfalls in der System-Basis befindet sich eine als IPQW (internal Process Queue Word) bezeichnete Eintragung: sie identifiziert den Kopf 805 der Ready-Warteschlange 803c 803g im GO-Segment 802.
Auf diese Weise kann der Dispatcher durch Befragung der Ready-Warteschlange 803c - 803g alle Ready-Prozesse untersuchen. Wenn der gegenwärtig ablaufende Prozeß den Status ändert, entfernt der Dispatcher das Process Link am Kopf der Ready-Warteschlange und benutzt den Namen (J, P) für den Zugriff auf seinen PCB. Der durch den PCB definierte Prozeß wird dann der neue ablaufende Prozeß.
Da es sein kann, daß mehrere Prozesse auf dasselbe Erreignis warten, gibt es für jedes Ereignis eine Warteschlange wartender Prozesse (803a - 803b). Wartende Prozesse sind ebenfalls durch Process Links 805, die im GO-Segment residieren, miteinander verkettet. Ein Pointer, der auf den Kopf einer Wait-Warteschlange verweist, existiert in einem Semaphor 903 (wird später erläutert).
Es gibt eine Reihe von Ereignissen, auf die ein Prozeß warten kann; infolgedessen gibt es eine Reihe von Wait-Warteschlangen von denen jede einen ihr zugeordneten Semaphor 903 bzw. 904 besitzt.
Die Anzahl der im Ready- bzw. Wait-Status befindlichen Prozesse ändert sich dynamisch. Daher ändert sich ebenfalls die Anzahl der Process Links, die man für die Ready- und Wait-Warteschlangen benötigt. Diese Tatsache führt zu einem Speicher-Management-Problem für den Dispatcher. Gelöst wird dieses Problem durch eine weitere Warteschlange, die Warteschlange der freien Process Links (805a - c).
50 9 823/0695
Diese Warteschlange verknüpft alle Process Links in Segment GO, die im Moment weder von den Ready- noch von den Wait-Warteschlangen benutzt werden und mit denen man daher eine bestimmte Warteschlange von Ready- bzw. Wait-Prozessen erweitern kann. Ein Pointer 901, der auf den Kopf 902 der Warteschlange 805 der freien Process Links hindeutet, residiert am Anfang des GO-Segmentes 802.
C. PROZESS-SYNCHRONISATION
Prozeß-Synchronisation ist erforderlich, um die Aktivitäten von zwei Prozessen zu koordinieren, die dieselbe Task bearbeiten. Die Synchronisation erreicht man durch Semaphore 903 - 904: dies sind Daten-Strukturen, die im Adreß-Raum der miteinander kommunizierenden Prozesse residieren. Ein Semaphor dient dazu, Ereignis-Eintritt zu signalisieren und Nachrichten-Warte schlangen zu bearbeiten. Ein "Ereignis" in diesem Kontext ist alles, was ein Prozeß beobachtet und für einen anderen Prozeß von Interesse sein kann. Das Ereignis kann der Abschluß einer asynchronen Operation oder das Verfügbarwerden einer System-Komponente sein.
Ein Prozeß benutzt zwei Semaphor-Operationen, um einen Ereignis-Eintritt zu signalisieren. Die eine Operation sendet ein Signal an einen Semaphor; die andere Operation greift ein Signal von einem Semaphor auf (die Sende-Operation bezeichnet man oft als V-Operation; die Empfangs-Operation bezeichnet man als P-Operation). Die Sende-Operation ermöglicht es einem Prozeß,Daten zu übermitteln oder ein Signal zu geben, daß Daten bereitstehen. Der Semaphor speichert
B09823/0695
das Signal, bis ein anderer Prozeß so weit ist, daß er das Signal aufgreifen kann. Entsprechend ist der Sende-Prozeß frei und kann fortfahren, denn er hat die Daten ja übermittelt. Die Empfangs-Operation untersucht einen bestimmten Semaphor und greift das Signal auf. Wenn ein Signal vorliegt, setzt der Empfangs-Prozeß die Ausführung fort. Liegt im Semaphor jedoch kein Signal vor., so betritt der Empfangs-Prozeß den Wait-Status. Der Semaphor dient dann als Pointer für den Kopf einer Wait-Warteschlange. ■ ·
Der Prozeß verbleibt im Wait-Status~ und wartet am Semaphor bis ein anderer Prozeß diesem speziellen Semaphor ein Signal übermittelt. Ein Semaphor kann also ein Signal festhalten, bis ein Prozeß das Signal aufgreift, oder ein Semaphor kann einen Prozeß festhalten, bis ihm ein Signal übermittelt wird.
Nachrichten können auch von einem Prozeß zum anderen übermittelt werden. Eine Nachricht hat dieselbe Qualität (anwesend bzw. abwesend) wie ein Signal plus eine weitere Information. Einen Teil dieser Information liefert die Hardware; einen anderen Teil liefert die Prozedur des Prozesses, der die Nachricht übermittelt hat., Eine Nachricht enthält den Prozeß-Namen des Sende-Prozesses. Daher kann eine Vielzahl von Prozessen Informationen über einen einzigen Semaphor senden, geprägt mit dem Namen des Absenders. -
An einem Nachrichten-Semaphor kann' es eine Warteschlange von Nachrichten geben, die darauf warten, von* Prozessen empfangen zu werden. Wie bei Signal-Semaphoren ändert sich auch hier der Bedarf an Arbeitsspeicherplatz und führt zu einem Speicher-Management-Problem. Wieder wird das Problem mit
509823/0695
einer Warteschlange von freien Nachrichten-Links gelöst. Diese Links residieren an einer bekannten Stelle in einem Segment, das leicht zu finden ist, wenn man es benötigt, um Nachrichten-Links entweder bereitzustellen oder aufzunehmen.
Da die Semaphore und die an ihnen gebildeten Warteschlangen von verschiedenen Prozessen gemeinsam benutzt werden, genießt die gesamte Semaphoren-Struktur Schutz. Diesem Schutz dienen Hardware- und Software-Konventionen, die den Zugriff auf jedes Segment beschränken, das Semaphore enthält. Daher müssen die Semaphore in Semaphor-Descriptor-Segmenten stehen; einige davon können G-Segmente sein (wenn System-Kommunikation erforderlich ist). Andererseits sind alle G-üegmente (außer GO) Semaphor-Descriptor-Segmente.
Jeder Semaphor-Descriptor enthält einen Pointer für einen Semaphor. Semaphor-Adressen entwickelt man über einen Semaphor-Descriptor, woraus sich zusätzlicher Schutz für den Semaphor ergibt.
Man kann ein Semaphor-Segment logisch - mit Segment-Nummer und relativer Adresse innerhalb des Segments - oder auch direkt mit der Nummer (G, D) adressieren.
STRUKTUREN DES PROZESS-STEUERBLOCKS (PCB)
Figur 4 zeigt das Format des Prozeß-Steuerblocks (PCB). Der Prozeß-Steuerblock 400 ist ein Speicherbereich im Hauptspeicher, der einem Prozeß zur Verfügung gestellt wird, um den ZE-Status sicherzustellen. Die Adressierung eines PCB's erfolgt, wie oben im Zusammenhang mit Fig. 5
509823/0695
beschrieben. Der PCB-Pointer 507 (Figur 5) verweist auf den Prozeß-Steuerblock PCB bei Speicherstelle 0 (Figur 4). Wie man sieht, nehmen die Speicherstellen um je vier Bytes zu, wenn man von Speicherstelle 0 nach unten geht; dagegen nehmen sie um je 8 Bytes zu, wenn man von Speicherstelle 0 nach oben geht. Die unteren Speicherstellen, wenn man von 0 an nach unten geht, gelten als positiv, während die Speicherstellen, wenn man von 0 an nach oben geht in der negativen Richtung liegen. Die oberen Speicherstellen sind wahlweise vorhanden; sie können im Prozeß-Steuerblock enthalten sein, müssen es aber nicht; ebenfalls wahlweise vorhanden sind auch die Speicherstellen 148-176 (zu beachten ist also, daß die Zahlenangabe in der Spalte "Speicherstellen·1 die Byte-Distanz gegenüber der Referenz-Stelle 0 des Prozeß-Steuerblocks PCB spezifizieren).
Von Byte 0 bis ausschließlich Byte 16 sind vier Prozeß-Hauptworte - = PMW gespeichert: PMW 0 - PMW 3; jedes Prozeß-Hauptwort PMW ist vier Bytes lang. PMW 0 belegt Byte 0-3 und besteht aus vier Teilen: einem Eignungs-Byte, einem Prioritäts-Byte, einem Status-Byte und einem "Decor Extension Byte" (DEXT). In Figur 10a bis 1Od sind Einzelheiten des Prozeß-Hauptwortes PMW 0 dargestellt; weitere Einzelheiten zum Eignungsbit 1001 sind aus Figur 10b ersichtlich. Wie aus Figur 10b hervorgeht, ist das erste Bit 1005 das Abrechnungs-Modus-Bit, das anzeigt,, ob Zeit-Ab-1 rechnungs-Funktionen für diesen Prozeß vorgenommen werden oder nicht.
Wenn das Abrechnungs-Modus-Bit 1005 binär 0 ist, wird für diesen Prozeß keine Zeit-Abrechnungs-Funktion durchgeführtj wenn dagegen das Abrechnungs-Modus-Bit 1005 binär 1 ist, findet eine Zeit-Abrechnung statt. Wenn das Bit 1006 (wissenschaftlicher Modus) 0 ist, so zeigt dies an, daß
509823/0695
keine Sicherstellung der wissenschaftlichen Register der Maschine erfolgt, und der Sicherstellungs-Bereich für die wissenschaftlichen Register, der in Figur 4 Byte 148 bis 176 belegt, ist im Prozeß-Steuerblick PCB nicht vorhanden. Wenn Bit 1006 (das Bit für den wissenschaftlichen Modus) binär 1 ist, so existiert diese wissenschaftliche Zusatzeinrichtung, und sie wird im Prozeß benutzt; und der Sicherstellungsbereich für die wissenschaftlichen Register wird dazu benutzt, den Inhalt der wissenschaftlichen Register zu erhalten, wenn dies erforderlich ist. Das Code-Modus-Bit 1007 zeigt an, ob von dem Prozeß ein Standard-Code-Vorrat oder ein Kompatibilitäts-Code-Vorrat benutzt wird oder nicht; binär 0 ah dieser Stelle zeigt an, daß der Standard-Cöde-Vorrat benutzt wird; dagegen zeigt binär 1 an der dritten Bit-Position 1007 an, daß ein Kompatibilitäts-Code-Vorrat benutzt wird. Die übrigen Bits des Eignungs-Bytes sind 0.
Einzelheiten zum Prioritäts-Byte 1002 gehen aus Figur 10c hervor. In Figur 10c ist gezeigt, daß die ersten 4 Bits
1008 des Prioritäts-Bytes 1002 dazu dienen, die Prioritätsstufe des dem betreffenden Prozeß-Steuerblock PCB zugeordneten Prozesses festzulegen. Jedem Prozeß wird eine von 16 Prioritätsstufen zugeordnet, die dazu dient, die konkurrierenden Prozesse zu ordnen; d.h. dazu, (a)unter den Ready-Prozessen denjenigen auszuwählen, der ablaufen soll und (b) die Prozesse in Warteschlangen zusammenzustellen. Die Priorität nimmt von 0 bis 15 ab; für die betreffende Prioritäts-Stufe findet die FIFO-Regel (First-in, first-out) Anwendung (lineare Verarbeitung). Die nächsten vier Bits
1009 des Prioritäts-Bytes 1002 sind 0.
509823/0695
Nun zu Figur 1Od: dort sind Einzelheiten des Status-Bytes 1003 gezeigt. Ein Status-Byte dient dazu, Informationen über den dem Prozeß-Steuerblock PCB 400 zugeordneten Prozeß zur Verfugung zu stellen.
Das Aktivfeld-Bit A 1010 ist binär 1, wenn der Prozeß aktiviert ist. Das Suspendierungsfeld S 1011 ist binär 1, wenn der Prozeß suspendiert ist. Das Substatus-Feld SS 1012 ist ein zwei-Bit-Feld und definiert die folgenden Unterstatus-Möglichkeiten des Prozesses : (a) binär 00 bedeutet, der Prozeß ist inaktiv; (b)binär 01 bedeutet, der Prozeß wartet in der Warteschlange der Ready-Prozesse (Q/PR/RDY); (c) binär 10 bedeutet, der Prozeß wartet bei einem Semaphor in einer Semaphor-Warteschlange (Q/PR/S); (d) binär 11 bedeutet, der Prozeß wird gerade durch den Prozessor ausgeführt. Das Operations-Mitte-Feld (mid-operation field = MOI) 1013 ist binär 1, wenn eine Unterbrechung erfolgt; dieses Feld wird während der Ausführung eines Befehls betreut - d.h. vor Abschluß des Prozesses. Das "Extended Decor Mode"-Bit (EXTD) 1014 ist 1, wenn der Prozeß in einem" "Extended Decor Mode" abläuft: dies ist ein Emulations-Modus der Maschine. Bit 1015 und 1016 sind 0. Das vierte Byte des Prozeß-Hauptwortes PMW 0 enthält die Decor-Extension-Nummer und wird benutzt, wenn das System im Emulations-Modus läuft.
Prozeß-Hauptwort PMW 1 wird in den Bytes 4-7 des Prozeß-Steuerblocks PCB gespeichert. Einzelheiten zum PMW 1 gehen aus Figur 1Oe hervor. Das Status-Byte 1016 ist das erste Byte in PMW 1 und speichert den Status-Regist er- Inhalt. Das Multiprocessor-Byte MP 1018 ist nur bei einer Multiprocessor-Architektur signifikant; sonst ist dieses Feld 0. Das zweite und vierte Byte des
509 8 2 3/0695
Prozeß-Hauptwortes 1 ist das MBZ-FeId 1017 bzw. 1019; bei Normalbetrieb müssen diese Felder 0 sein.
Prozeß-Hauptwort PMB 2 belegt die Bytes 8-11 des Prozeß-Steuerblocks; es ist ausführlicher in Figur 1Of dargestellt. Wie aus Figur 1Of ersichtlich, enthält das Feld von Bit 4 bis Bit 31 den lokalen Namen SEG, SRA 1021 des Semaphore, mit dem der PCB verknüpft ist, wenn sich der Prozeß entweder in Warte- oder in suspendiertem Status befindet.
Das Ausnahme-Klassen- und Typ-Feld 1023 enthält Klasse und Typ der unterbrechungsähnlichen Ausnahme, die den Prozeß dazu veranlaßt, nach einer Ausnahme zum suspendierten Status zu wechseln. Das Feld der Bits 4-15 ist ohne Bedeutung (1022), wenn sich ein Prozeß in einem anderen Status als dem oben erwähnten befindet.
Das Prozeß-Hauptwort PMW 3 belegt die Bytes 12 - 15 in PCB 400 und verweist auf eine Decor-Extension-Tabelle. Einzelheiten zu PMV/ 3 sind Figur 10g zu entnehmen; das DETSZ-FeId 1024 definiert die Anzahl der Eintragungen der Tabelle, und wenn dies Feld 0 ist, ist bei dem betreffenden Prozeß keine "Decor Extension" zulässig. Das DETA-FeId 1025 ist die absolute Adresse der Decor-Extension-Tabelle in Einheiten zu je 16 Bytes.Es ist nur dann signifikant, wenn DETSZ nicht 0 ist. Die Decor-Extension-Tabelle besteht aus DETSZ-Eintragungen. Jede Eintragung umfaßt ein Byte. Die DEXT-te Eintragung der Tabelle definiert die Fähigkeit des Prozesses, im Decor-Extension-Modus DEXT zu operieren. Wenn das DEXT-te Byte 0 ist, ist die Decor-Extension-Nummer DEXT nicht zulässig. Wenn dagegen das DEXT-te Byte 1 ist, ist die Decor-Extension-Nummer DEXT zulässig. Andere Werte als 0 bzw. 1 sind für DEXT nicht zugelassen (siehe Figur 10a, DEXT-Nummer 1004).
509823/0 69 5
Die Bytes 16 bis 23 von PCB 400 enthalten zwei Adreß-Raum-Worte ASW 0 bzw. ASV/ 1. Jedes ASW (Address Space Word) enthält einen Pointer auf ein Feld von Segment-Tabellen-Worten. Sowohl ASW 0 als auch ASW 1 haben dasselbe, in Figur 10h dargestellte Format. Die Größe des Feldes der Segment-Tabellen-Worte wird durch die Anzahl der Segment-Tabellen-Worte in einem Feld definiert. Typischerweise beträgt die Größe 6 für ASW 0 bzw. 8 für ASW 1. Das STWSZ-FeId 1026 gibt die Größe des Feldes der' Segment-Tabellen-Worte an. Das Segment-Tabellen-Wortgruppen-Feld STWA 1027 (Segment Table Word Array) enthält die absolute Adresse STWA der Feldgruppe in Einheiten zu je 16 Bytes - die absolute Adresse der Feldgruppe ist also 16 mal STWA in Bytes. " . ,
Die Bytes 24 bis 27 im PCB enthalten ein Ausnahmewort EXW (Exception Word), das ausführlich in Figur 1Oi dargestellt ist. Das Ausnahmewort enthält einen Pointer (SEG, SRA) 1029, der auf eine Ausnahme-Klassen-Tabelle verweist, welche ihrerseits festlegt, welche Aktion im Anschluß an eine Prozeß-Ausnahme erfolgen soll; dies richtet sich nach der im Prozeß-Hauptwort PMW 2 gespeicherten Klasse (siehe Figur 1Of). Das MBZ-FeId 1028 des Ausnahmewortes EXW muß 0 sein*
Das in den Bytes 28 bis 31 des PCB lokalisierte Stack-Wprt SKW enthält den Viert der Spitze des T-Registers des Stacks des Prozesses, wenn der Prozeß gerade nicht abläuft; ausführlich ist es in Figur 1Oj dargestellt. Wie aus Figur 1Oj hervorgeht, definieren die Bits0 und 1 das TAG-FeId 1030. Das TAG-FeId zeigt den Typ des Descriptors nach seinem Inhalt an und muß für SKW 0 sein. Die Bits 2 und 3 des
509823/0695
SKW-Wortes enthalten das RING-FeId 1031, das zu Schutzzwecken die Ring-Nummer enthält, die der segmentierten Adresse des Stacks zugeordnet ist; in diesem Fall muß es 0 sein. Die Bits 4-31 enthalten die Segment-Nummer SEG und Segment-relative Adresse SRA 1032; dieses Feld bezeichnet das in einer Segment-Tabelle beschriebene Segment und die Segment-relative Adresse innerhalb des Segments. Das Stack-Wort SKW wird jedesmal dann aktualisiert, wenn der Prozeß den Lauf-Status verläßt. Es dient dazu, den Inhalt des T-Registers wieder herzustellen, so oft der Prozeß zum Lauf-Status wechselt. Im letzteren Fall wird getestet, ob TAG 1030 und RING 1031 den Wert 0 ' haben; andernfalls tritt ein Ausnahmezustand wegen PCB-Unzulässigkeit ein.
Die Bytes 32 bis 35 von PCB 400 enthalten das den Inhalt des Befehlszählers angebende Befehlszählerwort ICW, das manchmal auch als ICC bezeichnet wird. In Figur 10k sind Einzelheiten des Befehlszählerworts ICW dargestellt: dabei muß das TAG-FeId 1033 binär 00 enthalten (dies bedeutet, daß im Befehlszähler andere Werte als 0 unzulässig sind).
Das aktuelle RING-FeId 1043 belegt die Bits 2 und 3 und definiert die laufende Ring-Nummer des Prozesses, die dazu dient, die Berechtigung zum Zugriff auf den Hauptspeicher festzulegen. Die Bits 4 bis 31 definieren die Segment-Nummer und die relative Segmentadresse (SEG, SRA) 1035, die die Adresse des nächsten auszuführenden Befehls definieren.
Das MBZ-FeId in den Bytes 36 bis 39 muß 0 sein (beachte, daß das MBZ-FeId stets ein Feld anzeigt, das 0 sein muß). Das MBZ-Wort wird jedesmal getestet, wenn auf den PCB üter den Namen (J, P) zugegriffen wird. Wenn es nicht 0 ist, tritt ein Ausnahmezustand wegen PCB-Unzulässigkeit ein.
509823/069 5
Die Stack-Basis-Worte SBW 0 bis 2 belegen die Bytes 40 - 51 im Prozeß-Steuerblock 400. Diese Worte haben dasselbe, ausführlich in Figur 101 dargestellte Format. Sie werden im Verlauf von Stack-Operationen benutzt. Wenn sie benutzt werden, müssen ihr TAG-FeId 1036 und ihr RING-FeId 1037 stets Ό sein;■andernfalls tritt ein Ausnahmezustand wegen PCB-Unzulässigkeit ein. Die Bits 4-31 enthalten die segmentierte Adresse (SEG, SRA) 1038 der ersten Bytes der Stack-Segmente für Ring 0, 1 bzw. 2.
Die Bytes 52 bis 83 des Prozeß-Steuerblocks 400 sind ein für den Basis-Register-Sicherstellungsbereich (8 Worte) reservierter Raum. Die Bytes 84 bis 147 sind ein Sicherstellungsbereich, der dazu dient, die Werte aller allgemeinen Register sicherzustellen (16 Worte). Die Bytes bis 179 sind ein Sicherstellungsbereich, der dazu dient, den Inhalt der wissenschaftlichen«Register (8 Worte) sicherzustellen.
Fünf Doppelworte stehen in dem PCB 400 oberhalb der PCB-O-Adresse zur Verfügung. Sie dienen zur Zeit-Abrechnung, wenn das Abrechnungs-Modus-Bit in dem Wort PMW 0 gesetzt ist. Diese Worte sind im Bereich von PCB-Adresse minus 8 bis PCB-Adresse minus 40 lokalisiert.
Jedes Wort enthält in Mikrosekunden ausgedrückt eine Zeit oder ein Zeitintervall in seinen ersten 52 Bits, . während die Bits 52 bis 63 mit Nullen gefüllt sind. Das Doppelwort RTO (Residual Time Out ■- = Restzeitsperre j die ersten 8 Bytes oberhalb von 0 im PCB) enthalten das Zeitquantum, das der Prozessor faktisch für den Prozeß aufwendet, bevor eine Zeitsperren-Ausnahme eintritt. Das RTO-Wort wird auf folgende Weise aktualisiert: sooft der
50982 3/0695
Prozeß den Lauf-Status verläßt, wird im RTO-Wort der Prozeß-Timer-Wert gespeichert. Sobald der Prozeß den Lauf-Status betritt, wird der Prozeß-Timer-Wert aus dem RTO geladen.
Das Doppelwort für die Zeitabrechnung (RUA) bei den Bytes 7 bis 15 ist ein Zeit-Zähler, der den Gesamtbetrag der Prozessorzeit spezifiziert, die ein Prozeß im Lauf-Status zugebracht hat. Die hier erfaßte Zeit ist die Zeit, die der Prozessor tatsächlich exklusiv für den betreffenden Prozeß aufwendet. Das RUA-Wort wird auf folgende Weise aktualisiert: Sooft der Prozeß den Lauf-Status verläßt, wird der Wert des Prozeß-Timers PT gelesen. Die Differenz zwischen dem Inhalt von RTO und PT wird auf RUA addfert (anschließend wird der PT-Wert in RTO gespeichert). Zu beachten ist, daß die Zeit, während der ein Prozeß suspendiert ist, nicht berechnet wird. Die RTO- und RUA-Worte werden auch dann aktualisiert, wenn das Abrechnungs-Modus-Bit 0 ist. Andererseits stehen die Worte CET, RTA und WTA (die später besprochen werden) im Prozeß-Steuerblock nur dann zur Verfügung, wenn das Abrechnungs-Modus-Bit im Prozeß-Hauptwort PMW.0 1 ist. Nur in diesem Fall werden sie aktualisiert.
Das Wort zur Abrechnung der Wartezeit (Waiting Time Accounting = WTA) bei den Bytes 17 bis 23 ist ein Echtzeit-Zähler, der den Gesamtbetrag der echten Zeit angibt, den der Prozeß im Wartezustand zugebracht hat. Das WTA-Wort wird wie folgt aktualisiert: Jedesmal wenn der Prozeß den Wait-Status verläßt, wird der Zeitwert der Tageszeituhr (TOD) gelesen, und der Wert von TOD minus dem Wert des CET-Wortes wird auf das WTA-Wort addiert.
509 8 2 3/0695
Das RTA-Wort (Ready Time Accounting - Abrechnung über die Ready-Zeit) ist ein Echtzeit-Zähler, der den Gesamtbetrag der echten Zeit angibt, den der Prozeß im Ready-Status zubrachte. Das RTA-Wort wird wie folgt aktualisiert: Jedesmal, wenn der Prozeß den Ready-Status verläßt, wird der Wert TOD der Tageszeituhr gelesen, und der Inhalt von TOD minus dem Inhalt von CET wird auf RTA addiert.
Das Doppelwort CET (Current Entry Time - aktuelle Einsprungszeit) enthält die Tageszeit, in welcher der Prozeß eine der folgenden Status-Möglichkeiten betreten hat: Ready-, Wait-, Lauf- und suspendierter Status.
STRUKTUREN DER SYSTEM-BASIS
Das Format der System-Basis 600 geht aus Figur 6 hervor. Die System-Basis residiert im absoluten Hauptspeicher, wird von der Firmware entwickelt und erlaubt Zugriff über das Grenzadreß-Register (BAR), das nur gelesen, in das aber nicht geschrieben werden kann. Das Grenzadreß-Register BAR. ist unterhalb eines Bereiches im Hauptspeicher, der für die Hardware reserviert ist, und es trennt diesen im Hauptspeicher für die Hardware reservierten Bereich von der System-Basis 600. Nach Figur 6 enthält die System-Basis 600 eine Anzahl von System-Attributen; hierzu gehören eine Job-Step-Nummer oder eine Prozeßgruppen-Nummer (J, P) für den gegenwärtig ablaufenden Prozeß. Aus dem logischen Namen des Prozesses (J, P) ergibt sich die absolute Adresse des entsprechenden Prozeß-Steuerblocks PCB. Die Größe und Adresse der J-Tabelle wird durch den Inhalt des J-Tabellen-Wortes JTW definiert. Dieses Wort befindet sich an der vom BAR-Register definierten Adresse. Das Format des JTW ist in Figur 11a dargestellt. Die Größe (JTSZ) 1101 der J-Tabelle 1204 in
509823/0695
Figur 12 definiert die Anzahl der Eintragungen in der J-Tabelle 1204, die bis zu 255 Eintragungen umfassen kann. JTSZ 1101 ist eine 8 Bits umfassende positive Ganzzahl; ein außerhalb der J-Tabelle liegender Ausnahmezustand tritt ein, wenn J größer als JTSZ ist. Die absolute Adresse der J-Tabelle 1204 ergibt sich daraus, daß man den J-Tabellen-Pointer 1102 mit 16 multipliziert.
Die J-Tabelle 1204 enthält J-Tabellen-Eintragungen, deren Format ausführlicher in Figur 11b dargestellt ist. Jede J-Tabellen-Eintragung definiert die absolute Adresse einer P-Tabelle t205, die sich daraus ergibt, daß man den P-Tabellen-Pointer 1104 mit 16 multipliziert. Die Größe (PTSZ) 1103 einer P-Tabelle definiert die Anzahl der Eintragungen in der P-Tabelle. Die PTSZ ist eine 8 Bitsumfassende, positive Ganzzahl, die im typischen Fall Werte zwischen 0 und 255 haben kann und die Anzahl der Eintragungen in der P-Tabelle angibt. Ein außerhalb der P-Tabelle liegender Ausnahmezustand tritt ein, wenn P größer als PTSZ ist. Jede Eintragung der P-Tabelle 1205 definiert die absolute Adresse eines Prozeß-Steuerblocks PCB 1206, die man erhält, wenn nan den Prozeß-Steuerblock -Pointer 1107 mit 16 multipliziert. Ein Anwesenheits-Indikator P 1105 zeigt die Abwesenheit eines PCB 1206 an, wenn er binär 0 ist, und zeigt die Anwesenheit eines PCB an, wenn er binär 1 ist (wenn sich herausstellt, daß der Anwesenheits-Indikator P 1105 den Wert 0 hat, tritt ein Ausnahmezustand weger, fehlender Eintragung in der P-Tabelle ein). Die Bits 1 bis 7 des P-Tabellen-Indikators (Figur 11c) müssen 0 (MBZ) sein (1106); andernfalls tritt ein Ausnahmezustand wegen unzulässiger Eintragung in die P-Tabelle ein.
509823/0695
Bei der Adresse BAR plus vier der System-Basis 600 befindet sich das Format-Byte eines G-Tabellen-Wortes (GTW)» das ausführlicher in Figur 11g dargestellt jst. Größe und Adresse einer G-Segment-Tabelle 1212 in Figur 12 sind durch den Inhalt des G-Tabellen-Wortes (GTW) definiert. Die Größe (GTSZ) 1108 der G-Tabelle 1212 definiert die Anzahl der Eintragungen in der G-Tabelle, die im typischen Fall bis zu 255 Eintragungen umfassen kann. GTSZ ist eine 8 Bi/te umfassende, positive Ganzzahl; ein außerhalb der G-Tabelle liegender Ausnahmezustand tritt ein, wenn die G-Anzahl größer als die GTSZ ist. Die absolute Adresse der G-Tabelle 1212 ergibt sich aus der Multiplikation des G-Tabellen-Pointers 1209 mit dem Wert 16. Jede Eintragung in der.G-Segment-Tabelle hat ein Zweiwort-Format (8 Bytes) und wird als G-Segment-Descriptor bezeichnet.
Das Format des G-Segment-Descriptors ist ausführlich in Figur 11e und 11f dargestellt. Alle G-Segment-Descriptoren sind direkt und daher muß das Indirektheits-Bit I, 1111 den Wert 0 haben; andernfalls tritt ein Ausnahmezustand wegen unzulässigen Segment-Descriptors ein. Der Anwesenheits-Indikator P 1110 ist ein Ein-Bit-Feld, das, wenn es binär 1 ist, anzeigt, daß im Hauptspeicher für die Segmentnummer, welcher der betreffende Descriptor entspricht, ein Segment definiert ist. Ist dieses Feld dagegen auf 0 gelöscht, so ist kein Segment definiert, und jede Referenz auf den Segment-Descriptor veranlaßt einen Ausnahmezustand wegen fehlenden Segments. Das Verfügbarkeits-Bit A 1112 ist ein Ein-Bit-Feld, das anzeigt, ob das Segment verfügbar ist oder nicht; es wird nur geprüft, wenn dies Segment definiert ist (d.h. P gleich binär 1); andernfalls bleibt dieses Bit unbeachtet.
509823/0695
Das Feld U 1113 (Benutzungs-Kennzeichen) zeigt an, ob Zugriff auf das Segment erfolgt ist oder nicht. Wenn das U-Bit binär 0 ist, ist kein Zugriff auf das Segment erfolgt. Wenn dagegen das U-FeId binär 1 ist, so ist auf dieses Segment zugegriffen worden. Das Feld W (Schreib-Kennzeichnung) 1114 zeigt an, ob das Segment geschrieben worden ist." Wenn W binär Ö ist, so ist das Segment nicht geschrieben worden. Wenn W aber binär 1 ist, so wurde das Segment geschrieben. Der Gatter-Indikator GS 1115 eines G-Segment-Descriptors muß binär 01 sein, sonst tritt ein Ausnahmezustand wegen unzulässigen Segment-Descriptors ein. Dies hat folgenden Grund: ein G-Segment enthält stets Semaphore (dies ist allerdings niht umkehrbar; keineswegs müssen alle Semaphore sich in einem G-Segment befinden), und Befehle an Semaphore verlangen, daß der GS-Code binär 01 ist. Die absolute Adresse der Basis eines Segments (1214) wird im G-Segment-Descriptor von Figur 11e durch das 24-Bit-Basisfeld 1116 definiert; der Inhalt dieses Feldes wird mit 16 multipliziert und ergibt dann die absolute Adresse. Das zweite Wort des G-Segment-Descriptors von Figur 11f besetzt die Bit-Positionen 32 bis 63 in der G-Tabelle 1212,
Das RSU-FeId 1117, die Bits 32 bis 39» ist für die Verwendung der Software benutzt (Reserved for Software Use) und wird im allgemeinen ignoriert, wenn es wie im vorliegenden Fall eines G-Segment-Descriptors verwendet wird. Das MBZ-FeId 1118 muß 0 sein, sonst tritt ein Ausnahmezustand wegen unzulässigen Segments ein. Da das MBZ-FeId 1118 die Bits 40 bis 51 belegt, setzt es das SIZN-FeId 1119, das Feld für ein Klein-Segment-SIZN; daher müssen alle G-Segmente dem kleinen Segment-Typ angehören. Die Segment-Größe SIZN 1119 ist eine 12-Bifumfassende, positive Ganzzahl, die die Anzahl der Bytes im Segment
509823/0695
definiert, und die Segment-Größe wird als Vierfaches von , 16 interpretiert. Daher kann die Segment-Größe für ein G-Segment 1214 nicht größer sein als 2 Bytes (kleine Segmente).
Wenn wir uns noch einmal der System-Basis 600 von Figur 6, zuwenden, so gibt es neun System-Ausnahme-Fällen-Wqrte, die sich zwischen BAR plus 8 und BAR plus 44 befinden. Das Format eines solchen EXC-¥ortes (System Exception Cell) geht aus Figur 11g hervor. Nun dienen Semaphore·dazu, Nachrichten an Einzel-Prozesse zu übermitteln; wenn daher ein System-Ausnahmezustand eintritt, befinden sich die Pointer auf diese Semaphore an 9 Stellen des Hauptspeichers, von denen jede als System-Ausnahme-Zelle bezeichnet wird - eine für jede Klasse der System-Ausnahme. Das MBZ-FeId 1120 muß binär 0 sein, sonst erfolgt eine System-Überprüfung. Jede Ausnahme-Zelle (EXC) enthält den System-Namen G, D 1121 bzw. 1122.
Die Kanal-Ausnahme-Zelle, die sich an der Stelle BAR plus der System-Basis 600 befindet, hat ein Format, das der eben beschriebenen,System-Ausnahme-Zelle ähnlich ist. Sie enthält den System-Namen GD eines Semaphors, der dazu dient, Nachrichten an Einzel-Prozesse zu übermitteln, wenn ein Kanal-Ausnahmezustand eintritt. Ein IPQW-Wort (internal Processor Queue Word .- internes Prozessor-Warteschlangenf Wort) beginnt bei BAR plis 48, und Einzelheiten zu seinem Format sind aus Figur 11h ersichtlich. Das IPQW-Wort verweist auf den Kopf einer Warteschlange bereitstehender Prozesse (Q/PR/RDY)> wie in Figur 9 dargestellt, und zwar mit den Bezugszeichen 905 bzw. 805. ■·
Die Warteschlange der bereitstehenden Prozesse (Q/PR/RDY) verkettet alle Prozesse, die sich im Ready-Status befinden.
509823/0695
Sie wird angesprochen durch das Feld 1124 (HEAD OF 0/PR/RDY; Figur 11h)des IPQW-Wortes und zwar durch Verweis auf die Spitze der Warteschlange der Ready-Status-Prozesse.Das Feld 1124 (HEAD OF Q/PR/RDY) enthält eine aus 16 Bits bestehende positive Ganzzahl: dies ist die Distanz zwischen der Basis des G-Segments Nummer 0, das als das Segment GO bezeichnet wird und dem ersten Byte von Q/PR/RDY. Wenn dieses Q/PR/RDY-Bit-Feld 0 ist, so wird die Ready-Schlange als leer angesehen. Das MBZ-FeId 1123 muß 0 sein, sonst tritt eine System-Überprüfung ein.
Bei BAR plus 52 der System-Basis 600 ist der Speicherplatz für die Anfangs- und für die aktuelle Anzahl der Wiederholungsversuche wiedergegeben; das Format ist im Einzelnen aus Figur 11i ersichtlich. Das WFS-FeId 1125 ist ein nicht-funktionales Speicherfeld und wird von der System-Basis nicht benutzt. Das Feld 1126 (Initial Retry Count - Anfangszählung der Wiederholungsversuche) und das Feld 1127 (Current Retry Count - aktueller Zählwert der Wiederholungsversuche) dient zur Kontrolle der Häufigkeit, mit der automatische Befehls-Wiederholung ausgeführt wird, bevor durch einen Maschinenfehler ein Maschinenfehler-Ausnahmezustand herbeigeführt wird. In beide Felder wird dieselbe Zahl geladen, und zwar durch eine Reset-Retry-Count - Zählung (Rückstell/Wiederholungs-Zählung - hier nicht mit dargestellt).
Das in Figur 11 j gezeigte RPV/, das Wort für den laufenden Prozeß (Running Process Word), ist in BAR plus 56 der System-Basis 600 gespeichert und dient bei einer Monoprozessor-Architektur dazu, den Namen des laufenden Prozesses mit seiner Prioritätsstufe zu speichern. Die NFS-Felder 1128 bzw. 1131 sind nicht-funktionale Speicherfelder und können
509823/069 5
von jedem System-Element für jeden beliebigen Zweck verwendet werden; sie werden aber im allgemeinen nicht von der System-Basis verwendet. Die Prioritätsstufe eines laufenden Prozesses wird im PRI-FeId 1129 gespeichert* Ein Asynchron-Kontroll-Bit ist im AB-FeId 1130 gespeichert; ein Asynchron-Kontroll-Ring ist im ARN-FeId 1132 gespeichert. Der logische Name J, P des laufenden Prozesses im Fall einer Monoprozessor-Architektur ist im J,P-FeId 1133 gespeichert. ' .
Ein in Eigur 11k wiedergegebenes Absolut-Tabellen-PointerWort befindet sich bei BAR plus 60 in der System-Basis 600. Es dient bei einleitenden System-Laden (initial System Load - ISL) dazu, die absoluten Adressen im ISL-Programm zu initialisieren, indem der Inhalt von BAR auf alle absoluten Adressen im ISL-Programm addiert wird. Der Absolut-Tabellen-Pointer 1135 definiert den Speicherplatz einer Absolut-Tabelle (nicht abgebildet). Die Größe (Size) der Absolut-Tabelle geht aus dem ATSZ-FeId 1134 hervor.
Das in Figur 111 gezeigte Wort "CPU Serial Number" ist ein 4-Byte-Wort, das sich bei BAR plus 64 befindet und die Seriennummer der ZE im ZE-Seriennummer-Feld 1136 enthält.
Ein in Figur 11m dargestelltes Hauptspeicher-Obergrenzen-Wort (Main Storage Upper Limit) befindet sich bei BAR plus 68 und zeigt die Hauptspeicher-Obergrenze 1139 in Form der absoluten Adresse des letzten im Hauptspeicher verfügbaren Wortes an.
Bei BAR plus 72 befindet sich ein in Figur 11n wiedergegebenes Wort, das die Kanalnummer (CN) 1140 der ISL-Einheit (Initial System Load) und die Kanalnummern (CN) 1141 der Hardware-Einheit angibt. .
Den Typ und Untertyp einer im Computer-System verwendeten Einheit zeigt ein Hardware-Einheiten-Typ-Wort (Figur 11o),
509823/0695
und zwar in den Feldern 1143 bzw. 1144: hier ist das RSU-FeId 1142 für Software-Zwecke reserviert. Dieses Wort befindet sich in der System-Basis bei BAR plus 76. Ein in Figur 11p wiedergegebenes entsprechendes Wort mit einem ähnlichen Format enthält Typ und Untertyp der beim einleitenden System-Laden verwendeten Einheit. Dieses Wort befindet sich bei BAR plus 80.
Wenn die Wiederanlauf-Taste eines Computers gedrückt wird, wird bei einem Semaphor eine simulierte V-Operation vollzogen, und der Ready-Status wird betreten. Ein Pointer, der auf diesen Semaphor verweist, befindet sich bei BAR plus 84 der System-Basis 600 und wird als Wiederanlauf-Zellen-Wort bezeichnet, sein Format ist in Figur 11q dargestellt.
Das Format ist ähnlich wie das der bereits besprochenen System-Ausnahmezelle und enthält den System-Namen (G, D) eines Semaphore im G-FeId 1149 bzw. D-Feld 1150. Das MBZ-FeId 1148 muß 0 sein.
Wenn im Computer-System mehr als ein Prozessor vorhanden ist, steht in der System-Basis 600 bei BAR plus 88 für die Multiprocess-Erweiterung ein Wort zur Verfügung. Einzelheiten zu diesem Wort gehen aus Figur 11r hervor.
VERWENDUNGSBEISPIELE FÜR SYSTEM-BASIS UND PROZESS-STEUERBLOCK
In Figur 12 ist ein Beispiel dargestellt, wie man die System-Basis in Verbindung mit dem Prozeß-Steuerblock zur Adressierung und zum Zugriff auf ein Benutzer-Segment, ein System-Segment oder ein Segment mit einer Warteschlange
509823/0695
von Ready-Prozessen (Q/PR/RDY) benutzen kann. Der Hauptspeicher 1200 hat einen Seil 1203, der für Hardware-Zwecke reserviert ist. Ein Grenz-Adreß-Register BAR 1202 trennt die System-Basis 1215 vom Speicherteil 1203 der für die Hardware reserviert ist. Das Grenz-Adreß-Register BAR 1202 dient dazu, Elemente in der System-Basis 1215 zu adressieren, indem der Inhalt des Grenz-Adreß-Registers auf die Distanz (in 4-Byte-Einheiten) des gewünschten Elementes in der System-Basis addiert wird. Diese Adresse verweist dann auf das erste Byte des Elementes in der gewünschten System-Basis. In Fig. 12 verweist das Register BAR 1202 auf das J-Tabellen-Wort (JTW). Wie bereits besprochen, hat das •J-Tabellen-Wort einen Pointer, der auf eine J-Tabelle 1204 Verweist. Durch Indexierung auf die in Pig. 5 dargestellte J-Nummer wird eine J-Tabellen-Eintragung 1216 ermittelt. Bei der J-Tabellen-Eintr.agung befindet sich ein P-Tabellen-Pointer, der auf die absolute Adresse der P-Tabelle 1205 verweist. Durch Indexierung auf die P-Nummer (siehe Fig. 5) innerhalb der P-Tabelle 1205 wird die absolute Adresse des Prozeß-Steuerblocks 1206 ermittelt.
Wie bereits zuvor gezeigt, gibt es im Prozeß-Steuerblook PCB 1206 zwei Adreß-Raum-Worte ASW 0 und ASW 1. Die höcbsten Bits des Segment-Tabellen-Euramernfeldes STlT im Basis-Register 1201 dienen dazu, auf eines dieser beiden Adreß-Raum-Worte zuzu- · greifen: in diesem Pall ASW 1, das einen STViA-Pointer hat, der auf ein Segment-Tabellen-Wortfeld STWA 1208 verweist. Zusammen mit der Segment-Tabellen-Nummer STW des Basis-Registers 1201 erfolgt Zugriff auf eines von 8 Segment-Tabellen-Worten in STWA 1208, das seinerseits auf eine von 3 Segment-Tabellen 1210 verweist. Die Segment-Tabellen-Sintragung STE aus dem Basis-Register 1201-dient dann dazu, eine von 256 Eintragungen in der Segment-Tabelle 1210 bereitzustellen, wo sich ein Segment-Descriptor befindet. Der Segment-Descriptor dient dann zum Zugriff auf ein Benutzer-Segment 1211.
50 98 23/06 9 5
PUr den Zugriff auf ein System-Segment 1214, das zur Speicherung von Seraaphoren dient, wird ein G-Tabellen-Wort GTW in der System-Basis 1215 benutzt. Die Adresse des G-Tabellen-Wortes wird ermittelt, indem die Distanz des G-Tabellen-Wortes in der System-Basis auf das Grenz-Adreß-Register BAR 1202 addiert wird (siehe Pig. 6). Das G-Tabellen-Wort G-TW umfaßt einen G-Tabellen-Pointer, der auf eine G-Tabelle 1212 verweist. Durch. Nutzung einer für das System verfügbaren G-lTuramer und Indexierung in der G-Tabelle erfolgt Zugriff auf einen G-Segment-Desoriptor,der dazu benutzt wird, ein System-Segment 1214 zu adressieren.
"Entsprechend wird die System-Basis 1215 dazu benutzt, auf die V/arteschlange der Ready-Prozesse (q/PR/RDY) 1213 zuzugreifen, indem ein IPQW (Internal Processor Queue V/ord) lokalisiert wird, welches auf das Q/PR/RDY-Segraent 1213 verweist.
LEITWERK
In Pig. 13a bis 13c sind die Einzelheiten zum Leitwerk dargestellt. Das Leitwerk ist zwar von der Zentraleinheit (ZE) getrennt dargestellt, ist aber in Wirklichkeit ein Teil der ZE. Das Leitwerk besteht aus einer Steuerspeicher-Einheit (Control Store Unit - ÖSU) 1301, einem Steuerspeicher-Interface-Anschluß (Control Store Interface Adapter - CIA) 1302 mit zugehörigen Sub-Einheiten, Steuerspeicher-Lader (Control Store Loader - CSL) 1303 und Steuer- und Lade-Einheit (Control and Load Unit - CLU) 1304. Die Steuerspeicher-Einheit CSU 1301 erhält Mikro-Befehle vom Steuerspeicher-Lader CSL 1303 über die Steuer- und Ladeeinheit CLU 1304 und den Steuerspeicher-Interface-Adapter CIA 1302. Unter normalen Betriebsbedingungen v/erden die Hikroprogrenrce während der System-Initialisierung aus einer externen Quelle
509823/0695
geladen und werden zu einer permanenten Steuerfünktion der Maschine. Allerdings kann die Steuerspeicher-Einheit CSU 1301 in einer Weise neu geladen und initialisiert werden, die eine Reihe von Betriebsarten der Zentraleinheit (ZE) CPU 1306 ermöglicht. Unter der Steuerung durch die CSU 1301 stehen die folgenden Betriebsarten der ZE zur Verfügung: (a) Eigenmodus; ("b) Emulationsmodus; (c) paralleler Eigen- und Emulations-Modus; (d) Diagnostikmodus. Diese Möglichkeiten beruhen darauf, daß die in der CSU residenten Mikrobefehle die Quelle von Mikrooperationen sind, die dazu dienen, die Arbeit aller anderen Funktionseinheiten der ZS zu steuern: z.B. die der Emulationseinheit 1316, des Rechen- ■ werks ALU 1317 (Arithmetic logic Unit), der Befehlsabruf-Einheit IPU 1318 (Instruction letch Unit), der Adreß-Steuereinheit ACU 1319 (Address Control Unit) und der Daten-Management-Einheit DIiU 1321 (Data Management Unit). Ebenfalls innerhalb der Zentraleinheit CPU 1306 abgebildet sind die zuvor bereits beschriebenen allgemeinen Register 1307, die Basis-Register 1308, die wissenschaftlich-technischen Register 1309, die !-Register 1310, die Status-Register 1311, das Befehls-Adreß-Register IC 1312 (Instruction Counter) und die Haadi/are-Steuertnasken-Re-gister 1313.
Typischerweise ist die Steuerspeicher-Einheit CSU 1301 ein programmierbarer. 9K-Iestspeieher mit einer bipolaren integrierten Schaltung (Programmable Read-Only Memory PROM), kombiniert mit einem Lese/Schreib-Random-Speicher (Random Access Store - RAM).
Im typischen lall hat der Speicher einen Lesezyklus von 150 NanoSekunden und einen Schreibzyklus von 450 Hanosekunden. Jede Steuerspeicher-Stelle speichert ein 84-Bit-Hikrobefehls-V/ort (das später ausführlich besprochen wird), und' jedes Miirrobefehls-Yfort steuert einen ZU-Sylclus. - Sobald
509823/0695
die betreffende Steuerspeicher-Stelle innerhalb der Steuerspeicher-Einheit OSU 1301 gelesen wird, wird ihr Inhalt von Mikrooperations-Decodierern entschlüsselt: diese liefern Mikrooperations-Steuersignale, von denen jedes dazu führt, daß innerhalb der ZE eine ganz bestimmte Operation stattfindet (wird an anderer Stelle ausführlich beschrieben).
Durch Gruppierung von Speicherstellen innerhalb jedes Mikrobefehls-Wortes (wird später ausführlich beschrieben) ergeben sich Steuerspeicher-Sequenzen, die eine spezifische ZE-Operation vollziehen (d.h. einen Befehl, eine Instruktion, ausführen) können. Indem jeder einzelne Befehl von der ZE -initiiert wird, dienen bestimmte Bits innerhalb des Operationsschlüssels dazu, die Steuerspeicher-Startfrequenz festzulegen. Die Prüfung bestimmter (nicht mit abgebildeter) Flip-Flop-Schaltungen, die gesetzt oder gelöscht sein können durch Befehls-Decodier-Funktionen,erlaubt dem Arbeitsspeicher der Steuerspeicher-Einheit, gegebenenfalls zu einer spezielleren Sequenz zu verzweigen.
Der Steuerspeicher-Interface-Anschluß CIA 1302 bestimmt in Zusammenarbeit mit der Steuerspeicher-Einheit 1301, der Daten-Management-Einheit DMU 1321, der Adreß-Steuer-Einheit ACU 1319 und dem Rechenwerk ALU 1317 die Arbeit des Steuerspeicher-Arbeitsspeichers 1333, wie in Pig. 13b dargestellt. Der CIA 1302 enthält Logik für Steuerspeicher-Adreß-Modifikation, !Testen, Fehlerprüfung und Hardware-Adreß-Bildung. Die Hardware-Adreß-Bildung dient generell zur Entwicklung der Staradresse von Fehler-Sequenzen oder für die Initialisierungs-Sequenz.
Die Daten-Management-rEinheit DMU 1321 liefert das Interface (die Schnittstelle) zwischen der Zentraleinheit CPU 1306 und dem Hauptspeicher und bzw. oder dem Pufferspeicher, wie in Fig. 1 dargestellt. Es ist die Aufgabe der Da te n-I-Ia na ijement-Einheit, zu erkennen, welche Einheit die von anderen
509823/0 6 95
Einheiten benötigten Informationen enthält, und diese Informationen zum richtigen Zeitpunkt in die ZE-Register zu leiten. ■
Die Daten-Management-Einheit DMU "besorgt auch die Ausblendung (Maskierung) während partieller Schrelb-Operationen.
Die Befehls-Abruf-Einheit IPU 1318 ist mit der DMlJ 1321, der ACU 1319, der ALU 1317 und der CSIT 1301 gekoppelt und dafür zuständig, die ZE mit Befehlen zu versorgen. Die Befehls-Abruf-Einheit verfügt in ihren Registern über den nächsten Befehl, "bevor der gegenwärtige Befehl vollständig ausgeführt ist. Diese Möglichkeit "beruht darauf, daß die Befehls-Abruf-Einheit IFU 1318 ein 12-Byte-Befehlsregister (nicht mit abgebildet) besitzt, das normalerweise mehrere Befehle enthält. Außerdem fordert die IEU unter Steuerung durch die OSU Informationen (Befehle, bzw. Instruktionen) vom Hauptspeicher an, bevor der Befehl tatsächlich benötigt wird: Auf diese ¥eise bleibt das 12-Byte-Befehlsregister der Befehls-Abruf-Einheit ständig auf dem neuesten Stand. Dieser Vorweg-Abruf von Befehlen erfolgt mit normalerweise nicht benutzten Speicherzyklen. Die Befehls-Abruf-Einheit decodiert ferner Jeden Befehl und teiltden anderen Einheiten Länge und Format des Befehls mit.
Die Adreß-Steuereinheit AGU 1319 steht in Kommunikation mit der IEU, ALU, DIiU und der OSU, und zwar auf dem Wege über den Steuerspeicher-Interface-Anschluß CIA. Die ACU . 1319 ist für die gesamte Adreß-Entwicklung in der ZE zuständig. Sämtliche Operationen der ACO" - einschließlich Transfer zu, von und innerhalb der Einheit - werden von CSU-Mikrooperationen und -Logik in der Einheit geleitet. Der normale Arbeitsablauf der ACU richtet sich nicht nach dem Befehlntyp, sondern nach dea Typ der Adressen innerhalb
509823/0695
des Befehls. Je nach den Adreß-Iypen kann die AGU verschiedene Operationen für jede Adresse in einem Befehl ausführen. Die AClT enthält ferner einen Assoziativspeicher 1319a, der im typischen Fall die Basisadresse der 8 zuletzt benutzten SpeicherSegmente zusammen mit "den betreffenden Segment-Hummern speichert.. Bei jeder Speicher-Anforderung wird die Segment-Nummer-mit dem Inhalt des Assoziativ-Speichers verglichen. Dadurch wird festgestellt, ob die Basisadresse des Segments bereits entwickelt und gespeichert worden ist. Wenn die Basisadresse im Assoziativ—Speicher 1319a enthalten ist, wird diese Adresse bei der Bildung der absoluten Adresse verwendet, woraus sich eine beträchtliche Zeitersparnis ergibt. Ist die Basisadresse noch nicht im Assoziativspeicher 1319a enthalten, wird sie durch Zugriff auf die Hauptspeicher-Sabellen entwickelt. Nachdem die Basisadresse des Segments aber entwickelt ist, wird sie für künftige Referenz zusammen mit der Segment-Kummer im Assoziativspeicher abgestellt.
Das Rechenwerk. AIF 1317 ist gekoppelt (Interface) mit ACU, IPU, DJiU und CSU. Die Hauptaufgabe der AIU 1317 ist die Vornahme der arithmetischen Operationen und der Daten-Manipulationen, die von der ZE benötigt werden, die Arbeit des Rechenwerks ist vollständig abhängig von Mikrooperations-SteuerSignalen von der Steuerspeicher-Einheit OSU 1301.
Dem AIU 1317 und der CSU 1301 zugeordnet ist der Fotizblockspeicher 1315 (ein schneller HilfsSpeicher), der manchmal als lokale Speichereinheit (local Store Unit - ISU) bezeichnet wird. Er besteht typischerweise aus einem Pestkörper-Speicher mit 256 Speicherstellen zu je 32 Bit sowie einer Auswahl- und lese/Schreib-Iogik für diesen Speicher.
509823/0895
Der Notizblockspeicher 131-5 dient zur Speicherung von ZE-Steuerinformationen und -Wartungs-Informationen. Außerdem enthält der Notizblockspeicher 1315 Zwischenspeicherstellen, die in erster Linie für die Zwischenspeicherung von Operanden und Teilergebnissen während der Daten-Manipulation benutzt werden. Ebenfalls dem ALU 1317 zugeordnet ist ein Ergänzungsspeicher 1317a, der typischerweise aus 64 Flip-Flops für die Speicherung verschiedener Zustände des Computer-Systems besteht.
Die Zentraleinheit ZE besitzt auch eine Zeitgebereinheit 1320; es sind im wesentlichen zwei Taktsysteme in einem: das erste Taktsystem erzeugt den Takt für die Steuerspeicher-Schnittstelle CIA 1302, während das zweite Taktsystem die Taktimpulse für die Operationen der Funktionseinheit innerhalb der ZE erzeugt.
Nun zu Figur 13c. Dort ist das Format des Steuerspeicher-Wortes 1325 abgebildet. Typischerweise umfaßt das Steuerspeicherwort 84 Bits und ist in sechs Hauptfelder unterteilt:
a) Sequenz-Typ-Feld 1326 (3 Bits);
b) Sprung- und bzw. oder Mikrooperationen 13527 (23 Bits);
c) Konstanten-Bildung und -Benennung 1328 (14 Bits);
d) Daten für den Übertragungsweg (Bus) 1329 (8 Bits);
e) MikroOperationen 1330 (22 Bits); und
f) Prüfung 1331 (4 Bits).
Das aus drei Bits bestehende E-FeId des Steuerspeicher-Wortes 1325 dient als Sequenz-Steuerfeld. Es gibt typischerweise sieben verschiedene Sequenz-Arten und einen reservierten Typ für das augenblickliche Computer-rSystem. Nun zu Block 1335 in Figur 13b: wenn das E-FeId binär 0, 1 oder
509823/0695
2 ist, dienen die Sprungfelder A, B, C-, D und L des Mikrobefehls 1325 dazu, die nächste Adresse zu erzeugen. Die ersten 6 Bits des KS-Registers 1337 werden zusammen mit dem B-Feld, den C-Test-Ergebnissen, den D-Test-Ergebnissen und dem L-FeId dazu benutzt, die nächste Adresse des nächsten Mikrobefehls bereitzustellen, die dann im Adreß-Register KS 1337 abgestellt wird. Wenn das E-FeId binär 4 ist, (siehe Block 1335) wird die nächste Adresse, die gewählt wird, dem Unterbrechungs-Rückkehr-Register KA 1339 entnommen. Die im ΚΑ-Register gespeicherte Adresse ist diejenige, die von der Logik zur Bildung der nächsten Adresse erzeugt wird, wenn die Hardware-Unterbrechung eintritt. Wenn das E-FeId binär 5 ist, dient eine Verzweigung dazu, einen Sub-Rücksprung aus einer Mikroprogramm-Subroutine zu initiieren. Gegebenenfalls wird der Inhalt der Rücksprung-Register KR 13^6 als nächste Steuerspeicher-Adresse benutzt. Das Rücksprung-Register 1346 wird geladen, indem ein Steuerspeicher-Befehl abgegeben wird, der die gegenwärtige Steuerspeicher-Adresse im KS-Register 1337 plus 1 vom Inkrementor 1338 in das KR-Register 1346 lädt. Die Möglichkeit einer einstufigen Subroutinen-Schachtelung ist über das KT-Rückkehr-Verzweigungs-Register 1347 gegeben.
Jedesmal, wenn das KR-Register 1346 geladen wird, wird der alte Inhalt des KR-Registers in das KT-Register 1347 umgespeichert, sooft der Mikroprogramm-Rücksprung aufgerufen wird; der Inhalt des KT-Registers wird in das KR-Register umgespeichert. Die Möglichkeit einer dreistufigen Sub-Routinen-Schachtelung besteht über das KU-Register 1340; und die Möglichkeit einer vierstufigen Sub-Routinen-Schachtelung ist durch das XV-Rücksprung-Verzweigungs-Register 1349 gegeben. Wenn das E-FeId des
S09823/0695
Steuerspeicher-Worts binär 6 ist, so ist das als nächste adressierte Steuerspeicher-Wort identisch mit der gegenwärtigen Adresse im KS-Register 1337 plus 1 im Inkrementor 1338. Wenn das E-FeId binär 7 ist, betritt die Steuerspeicher-Einheit ESU 1301 den Diagnostik-Modus, und die nächste Adresse ist die gegenwärtige Adresse plus 1.
Zusätzlich zu der Sequenz-Steuerung der Verzweigung' zur nächsten Steuerspeicher-Adresse wie oben beschrieben und in Block 1335 dargestellt, gibt es die von der Hardware erzeugte Sequenz-Steuerung, wie in Block 1336, Figur 13b dargestellt. (Beachte: Block 1335 und 1336 sind in Wirklichkeit Hardware-Register, die so dargestellt sind, daß die unterschiedlichen Formate erkennbar werden, welche die Mikrobefehl-Worte annehmen können). Die von der Hardware erzeugten Verzweigungen sind Vorrang-Bedingungen (wie z.B. Fehler, Initialisierung, Kontrollspeicher-Abfrage usw.), welche das E-FeId unterdrücken und im Steuerspeicher-Adreß-Register KS 1337 eine feste Adresse erzwingen. Die Verzweigung wird in der Weise durchgeführt, daß eine Unterbrechungsleitung (nicht abgebildet) für die Dauer einer Taktperiode auf einen hohen Signalwert gesetzt wird, und die Adresse, die unter der Kontrolle des E-FeI-des gebildet worden wäre, wird im KA-Unterbrechungs-Rücksprung-Register 1339 gespeichert. Eine von der Hardware gebildete Adresse wird im Steuerspeicheradreß-Register abgestellt. Bestimmte Hardware/Firmware-erzeugte Unter- ' brechungen haben Vorrang, wenn das Flip-Flop des Unterbrechungsblocks (nicht abgebildet) gesetzt ist: es ver- ■ hindert, daß zusätzliche Unterbrechunggen in der betreffenden Klasse ausgeführt werden, bevor die Unterbrechungs-Bedingung erfüllt ist. Eine Firmware-Mikrooperation ist vorhanden, die das Löschen des Flip-Flops des Unterbrechungsblocks für diejenigen Sequenzen steuert,
509823/0695
die der Firmware-Kontrolle unterliegen. Die der Hardware-Kontrolle unterliegenden Sequenzen erzeugen automatisch eine Löschung des Block-Flip-Flops am Ende der Sequenz. In dieser Kategorie gibt es die folgenden, nach Prioritäten zusammengestg Uten Bedingungen:
(a) Steuerspeicher-Laden; (b) Steuerspeicher-Abfrage; (c) Hardware-Fehler; (d) Software-Fehler. Die übrigen Hardware-Bedingungen veranlassen nicht, daß das Flip-Flop des Unterbrechungsblocks gesetzt wird, sondern daß unmittelbar eine Maßnahme getroffen wird, wenn sie erzeugt werden. In der Kategorie gibt es folgende,nach Prioritäten geordnete Bedingungen:
(a) Initialisierung
(b) Weich-Löschung
(c) Eingang Wartungsfeld
(d) Eingang Wartungskanal
(e) Hardware-Ausgang
Ein Initialisierungs-Signal veranlaßt die Kontrollspeicher-Einheit CSU 1301, zur Adresse binär 0 zu verzweigen, Fehler, die von der Hardware gelöscht werden können, zu löschen und bei der Kontrollspeicher-Ladeoperation auszuführen, auf die eine Steuerspeicher-Abfrage-Sequenz unter Hardware-Kontrolle folgt. Es veranlaßt ebenfalls eine System^·Initialisierung. Ein "Weich-Löschungs"-Signal veranlaßt die CSU 1301 zur Adresse binär 0 zu verzweigen, Fehler, die von der Hardware gelöscht werden können, zu löschen und das Flip-Flop des Unterbrechungsblocks zu löschen. Ein Signal "Eingang Wartungsfeld" veranlaßt die CSU, zu derjenigen Adresse zu verzweigen, die an den CSU-Adreß-Schaltern des Wartungsfeldes voreingestellt wurde (nicht mit abgebildet).
509823/0695
Ein Signal "Eingang Wartungskanal" veranlaßt die CSU, zu der über den Wartungskanal (nicht abgebildet) gebildeten Adresse zu verzweigen. Die Adresse, die geladen wird, stammt vom Wartungsbus OMB 1344, der ein Teil des Wartungskanals ist; sie ist rechtsbündig justiert. Ein "Hardware-Ausgang"-Signal veranlaßt die CSU, zur Binär-Adresse 2 zu verzweigen. Diese Sequenz dient als Wartungs-Einrichtung. Am Ende der Sequenz wird in der Weise ein Rücksprung initiiert, daß eine Ε-Feld-Verzweigung abgesetzt wird, wobei'das E-FeId binär 4 ist.
Ein Steuerspeicher-Lade-Signal veranlaßt die CSU, zur Adresse binär Ö zu verzweigen. Es löscht ferner das Flip-Flop des CSU-Lesezyklus (nicht abgebildet) und den Systemtaktgeber 1320, und es versetzt die CSU in den Lade-Status. Im Lade-Status kann die CSU über den Steuerspeicher-Lader CSL 1303, die IOC 1305, den Hauptspeicher 102 oder das Wartungsfeld 1355 geladen werden.
Wird die Steuerspeicher-Einheit CSU über den Steuerspeicher-Lader CSL geladen, so wird am Ende des Ladens eine automatische Abfrage erzeugt. Wird sie über ein anderes Medium geladen, so kann man eine Abfrage in der Weise veranlassen, daß man entweder ein Mikrooperations-Signal erzeugt oder den Abfrageschalter am Wartungsfeld setzt. Ein Steuerspeicher-Abfrage-Signal veranlaßt die CSU, zu einer Adresse binär 0 zu verzweigen. Eine Steuerspeicher-Abfrage erfolgt unter Hardware-Kontrolle für die Dauer der Sequenz. Während der Abfrage ist der Systemtaktgeber 1320 abgestellt, und daher werden keine Befehle oder Tests durchgeführt. Am Ende der Abfragesequenz speichert die Hardware den Inhalt des Unterbrechungs-Rücksprung-Registers KA in das Adreß-Register KS um, der Taktgeber des
509823/0695
Systems wird wieder angestellt und die Firmware übernimmt wieder die Kontrolle.
Ein Hardware-Fehler-Signal veranlaßt die CSU, zur Adresse binär 4 zu verzweigen. Im normalen Verarbeitungs-Modus führt die Entdeckung eines Hardware-Fehlers in einer der Funktionseinheiten der ZE dazu, daß eine Hardware-Fehler-Leitung (nicht abgebildet) aktiviert wird. Die erzeugte Steuerspeicher-Sequenz prüft die System-Bedingungen um festzustellen, welche Maßnahme erforderlich ist. Im Diagnostik-Modus sind Fehlerzustände, die von der Hardware erkannt werden können, für die Mikro-Diagnostik sichtbar. Die MikroDiagnostik steuert die Maßnahme, die zu treffen ist. Andererseits veranlaßt ein Software-Fehler-Signal die Steuerspeicher-Einheit, zur Adresse binär 1 zu verzweigen. Diese Adresse ist der Anfang der Software-Fehler-Berichts-Sequenz, die unter Mikroprogramm-Kontrolle abläuft.
Noch einmal zu Figur 13c: Das E-FeId 1326 ist ein 3-Bit-Feld für den Verzweigungs-Code, wie zuvor dargestellt. Das Verzweigungs- und bzw. oder Mikrooperations-Feld 1327 besteht aus den Feldern A, B, C, D und L (ebenfalls in Figur 13b, Block 1335 dargestellt); dabei sind: das A-FeId die oberen sechs Bits der nächsten Adresse, das B-Feld die mittleren vier Bits der nächsten Adresse. des Maskenfeldes bei einer 64-Weg-Verzweigung, das C-FeId ein sechs-Bit-Testfeld für eine von 64 Prüfungen, das D-Feld ein weiteres sechs-Bit-Testfeld für eine von 64 Prüfungen und das L-FeId ist das niedrigstwertige Bit.
509823/0695
2*56531
Das PeId K 1328 ist ein 14-Bit-Peld mit sechs Bits für das Konstanten-Peld, 14 Bits für ein Konstanten- oder Steuerfeld und 4 Bits als Steuerfeld für eine Konstante. Das "Daten zum Bus"-Peld 1329 besteht aus dem QA-FeId, mit 4 Bits für die Steuerung von Informationen für den QA-Teil des QMB-Busses 1344, und dem QB-PeId mit 4 Bits für die Steuerung von Informationen für den QB-Teil des QMB-Busses 1344. Das P-PeId 1330 ist ein 32-Bit-Peld, das zur Erzeugung von Mikrooperations-Unterbefehlen codiert wird. Das P-PeId 1331 besteht aus 4 Bits, die für Prüfzwecke reserviert sind.
Wenn das System arbeitet, sind die Mikrobefehlsworte im Steuerspeicher-Feld 1333 gespeichert. Während ein Operationszyklus abläuft, wird das Steuerspe.icher-Feld durch den Inhalt des KS-Adreß-Registers 1337 angesprochen. Dies führt dazu, daß der Inhalt der von der Adresse definierten Speicherstelle in die Gruppe der Lese-Speicher 1357 eingelesen wird. Teile des Wortgehalts der Lese-Speicher werden auf Speicher-Register innerhalb der einzelnen Punktionseinheiten in der Zentraleinheit ZE verteilt (umgespeichert). Jede Punktionseinheit enthält logische Decodierschaltungen für die Erzeugung der erforderlichen, vom Steuerspeicher-Wort spezifizierten Unterbefehle unter der Kontrolle des Systemtaktgebers. Im allgemeinen wird die Decodierung dezentral innerhalb jeder Punktionseinheit in der ZE durchgeführt und nicht zentral, um die Decodierzeit auf ein Mindestmaß zu beschränken und um die Anzahl der Kabel zu reduzieren, die normalerweise für die Übermittlung von Befehlssignalen bei zentraler Decodierung erforderlich wären. Ferner brauchen bei der Decodierung von Unterbefehlen innerhalb jeder Einheit diejenigen Signale, die repräsentativ für bestimmte, innerhalb der Punktionseinheit gegebenen Zustände sind, und für die Bildung bestimmter
50 9823/06 9 5
Unterbefehls-Signale benötigt werden, nicht an die Steuerspeicher-Interface-Anschluß-Einheit CIA 1302 zurückgegeben zu werden.
Eine typische Decodier-Einheit 1359 ist in Pig. 13b dargestellt. Sie erhält verschiedene Felder von Mikrobefehlsworten und erzeugt Mikrooperations-Signale a, b, c, d, ... q, r. Ein typischer Mikrooperations-Deoodierer 1359 empfängt Befehle von einem Mikrobefehlswort. Das PeId vom Mikrobefehlswort wird decodiert und setzt eine von mehreren leitungen s, t, u ... y ζ auf einen hohen Signalwert. Man bildet eine Matrix, indem eine bestimmte Steuerleitung an der Stelle α,β,γ...ψ,ω impedanzmäßig mit den Leitungen s - ζ gekoppelt ist. Typischerweise geht'dann, wenn das PeId von einem Mikrobefehl decodiert wird, das Signal an einer der Leitungen s-z auf einen hohen Wert über. Da die in der Matrix mit den griechischen Buchstaben α-ω gezeigten schwarzen Punkte eine Impedanz-Kopplung zwischen den beiden Leitungsgruppen darstellen, wird jedes elektrische Signal, das sich längs einer horizontalen Leitung ausbreitet., dort, wo eine Impedanz-Kopplung (schwarzer Punkt) angegeben ist, so durchgekoppelt, daß es sich längs der vertikalen Leitung a - r ausbreitet. Jede vertikale Leitung a - r kann dann als ein Eingang mit jedem der UND-Schaltungen 1360 bis 1365 gekoppelt werden. Andere Eingangssignale können auch mit den UND-Schaltungen 1360 bis 1365 gekoppelt werden, einschl.
eines Taktsignals t vom zentralen Taktgeber. Wenn das be-
treffende Taktsignal te einen hohen Wert annimmt, werden
entsprechend diejenigen UND-Schaltungen, bei denen sämtliche anderen Eingangesignale einen hohen Wert haben, freigegeben und liefern Mikrobefehls-Signale für vorbestimmte Punktionseinheiten in der ZE. Wenn z.B. ein Befehl 1341 vom Lese-Speicher 1357 decodiert wird und an einer horizontalen
5 09823/0695 ORiGiNAL INSPECTED
Leitung ein hoher Signalwert liegt, nehmen die Signale an den vertikalen Steuerleitungen a, b, ο und q hohe Werte an, und die UND-Schaltungen 1360 1361, 1362 und 1364 werden freigegeben, wenn das Taktsignal ts nacheinander an diese UND-Schaltungen angelegt wird. Daher bildet diese kombination, bei der die vertikalen Steuerleitungen an verschiedenen, durch die griechischen Buchstaben α-ω repräsentierten Punkten mit der horizontalen Steuerleitung gekoppelt werden, eine permanente Schalt-Matrix zur Lieferung von Mikrooperations-Signalen an die Zentraleinheit ZE (CPU). Diese Signale dienen dann zur Steuerung der Funktions-Einheiten innerhalb der Zentraleinheit durch Mikrobefehle aus dem Steuerspeicher-Feld 1333. Auf diese Weise kann permanente Firmware mit einer Inderungsmöglichkeit in die hier beschriebene Maschine eingebaut werden; man braucht lediglich die Folge der Mikrooperationen zu spezifizieren, die als Möglichkeit des Computer-Systems benötigt wird.
Unter normalen Bedingungen erfolgt das Schreiben von Daten im Steuerspeicher-Feld 1333 über das Daten-Schreib-Register der ZE, das auch als Lokalregister YO 1343 bezeichnet wird. Ein (nicht abgebildetes) Steuer-Flip-Flop bestimmt, ob das Schreiben in der oberen oder der unteren Hälfte des Speicherfeldes erfolgen soll. Daten von der Steuer- und Lade-Einheit CLU 1304 gelangen über den Wartungsbus QMB zur CIA/ CSU und werden im lokalen Speicherregister YO 1343 zwischengespeichert, bevor sie in das Steuerspeicher-Feld 1333 geschrieben werden. Das lokale Speicherregister 1343 wird gleichzeitig in einem Zeitteilbetrieb als Lokalregister zum Schreiben und zum Lesen verwendet. Der Multiplexer KQM 1345 kann entweder über das Wartungsfeld 1355 oder mit Mikrodiagnostik gesteuert werden* und er liefert einen Weg für das Auslesen aus den mit ihm verbundenen Registern. Ein
50982 3/0695
Vergleichsregister KP 1350 dient für nicht-funktionelle Zwecke; es wird in erster Linie für Wartungszwecke benutzt, und zwar zusammen mit der Vergleichslogik 1352 und der Decodier-Logik 1351.
Die Punktionen, die der Dispatcher vollzieht, sind in den Plußdiagrammen der Pig. 14a bis 14i dargestellt. Zum Beispiel stellt Block 1402 in Pig. Ha folgende Dispatcher-Punktion dar: die Steuerspeicher-Einheit liefert ein Mikroprogramm-Wort; nachdem dieses Wort vom Decodierer entschlüsselt ist, steuert es die entsprechenden Teile der Zentraleinheit CPU (ZE) über eine entsprechende Serie von Mikrooperations-Signalen 1360, 1361 usw... zur Wiedergewinnung des IPQW aus der System-Basis im Speicher-Subsystem 102, und es transferiert das IPQW zum Notizblockspeicher 1315. Gleichzeitig ruft der Dispatcher (1404) den GO-Segment-Descriptor (vergleiche Pig. 12) aus der D-Tabelle der Segment-Descrlptofen ab, auf die durch das G-Tabellen-Wort GTW in der System-Basis verwiesen wird. Die Bits 16-31 des IPQW-Wortes enthalten eine aus 16 Bits bestehende positive Ganzzahl: dies ist die Distanz von der Basis des D-Segments Nummer 0, das als GO-Segment bezeichnet wird, zum Kopf (erstes Byte) der Q/PR/RDY, der Warteschlange der READY-Prozesse. Wenn Bits 16 bis 31 des IPQW-Wortes Null sind (1403) so gilt-die READY-Warteschlange als leer. Wenn die READI-Warteschlange leer ist, so zeigt dies an, daß gegenwärtig kein Prozeß in Q/PR/RDI wartet, d.h.,die READY-Warteschlange ist leer.
Die nächste im Entscheidungsblock 1405 zu entscheidende Präge ist, ob ein Prozeß gegenwärtig in der Maschine abläuft oder nicht; zu diesem Zweck muß festgestellt werden, ob der Vakanz-Indikator gesetzt ist (der Vakanz-Indikator ist ein im Ergänzungsspeicher 1317a befindliches Plip-Plop; es ist gesetzt,· wenn gegenwärtig kein Prozeß CJP im Prozessor läuft).
509823/0695
" - 69 -
245B531
Wenn der Vakanz-Indikator gesetzt ist, .(dies bedeutet, im Moment läuft kein Prozeß) und wenn zuvor ermittelt wurde, daß in der READY-Warteschlange kein Prozeß darauf wartet, den Prozessor zu benutzen, dann geht die Maschine in den Leerlauf-Status über (I4O6). Wenn dagegen momentan in der Maschine ein Prozeß abläuft, aber kein Prozeß darauf wartet, die Maschine zu benutzen, so greift der laufende Prozeß auf seinen nächsten Befehl zu (I407).
Kehren wir nun zum Entscheidungsblock 14-03 des Flußdiagramms von J1Ig. 14a zurück. Ist im Pdnter-Bereich des IPQW1 s (d.h. Bits 16 bis 31) eine positive"Ganzzahl vorhanden, dann wird der Kopf der READT-Warteschlange, auf die das IPQVMvort im G-O-Segment verweist, zum Notizblockspeicher abgerufen (Hinweis: Um Wiederholungen zu vermeiden und im Interesse der Klarheit werden hier die Zwischenfunktionen des Dispatchers in Verbindung mit dem Leitwerk und der Zentraleinheit ZE ausgelassen; man muß sich aber klarmachen, daß sdbhe Zwischenfunktionen, wie zuvor beispielhaft dargestellt, typischerweise vorhanden sind). Bis jetzt wurde festgestellt, daß in der EEADY-Warteschlange ein Prozeß : wartet. Bevor eine weitere Maßnahme erfolgen kann, muß festgestellt Werden, ob im Zentralprozessor gegenwärtig ein Prozeß abläuft. Diese Feststellung erfolgt am Entscheidungsblock 1410 unserer Flußdiagramra-Darstellung; wenn gegenwärtig kein Prozeß im Zentralprozessor abläuft (d.h. kein OJP), dann wird der Kopf der READY-Warteschlarige ausgeführt (1412). Wenn jedoch gegenwärtig ein Prozeß im Zentralprozessor abläuft, muß der Dispatcher ermitteln, · welcher Prozeß Vorrang hat - der gegenwärtig ablaufende Prozeß oder der am Kopf der READY-Warteschlange. Infolgedessen wird das Prioritäts-Byte des laufenden Prozesses (CJP),
509823/0695
das sioh im laufenden Prozeßwort der System-Basis 600 oder im Prozeß-Hauptwort 0 PMW 0 von Prozeßsteuer-Bloek PCB 400 befindet, abgerufen (1413).
Es wird dann entschieden (1414), ob der gegenwärtig ablaufende Prozeß CJP eine niedrigere Prioritätsstufe hat als der neue Prozeß (NJP), der am Zopf der READY-Warteschlange wartet (vergleiche Entscheidungsblock 1414). Wenn der gegenwärtige Prozeß (CJP) keine niedrigere Prioritätsstufe hat als derjneue Prozeß FJP, so behält der CJP die Kontrolle über den Zentralprozessor und der Konkurrenz-Indikator wircl gelöscht (1415) - der Konkurrenz-r Indikator ist stets Full, es sei denn, ein oder mehrere neue Prozesse wurden seit Beginn des letzten für den CJP ausgeführten Befehls in die READY-Warteschlange eingereiht, woraus sich die Möglichkeit eines Konflikts ergibt; unter diesen Umständen ist der Konkurrenz-Indikator binär 1. Bevor allerdings der laufende Prozeß die Erlaubnis zur Fortsetzung und .zur Ausführung weiterer Befehle enthält, erfolgt eine Feststellung, ob der CJP im Dekor-Erweiterungs-Modus (1415) läuft oder nicht. Wenn dies der Fall ist, dann wird der nächst Befehl im Emulations-Modus ausgeführt, d.h. Dekor-Erweiterung, und wenn der laufende Prozeß CJP nicht im Dekor-Erweiterungs-Modus läuft, dann wird der nächste Befehl im Eigen-Modus ausgeführt. Gehen wir noch einmal zu Entscheidungsblock 1414: Wenn der neue Prozeß NJP an der Spitze der READY-Warteschlange eine höhere Prioritätsstufe als der CJP (d.h. eine niedrigere Prioritäts-Nummer als der CJP) hat, so wird der momentan ablaufende Prozeß CJP aus der Maschine ausgespeichert, und der neue Prozeß NJP wird in die Maschine eingespeichert. Entsprechend dirigiert eine Firmware-Priorität-Unterroutine PRIQ 1418 die Aufnahme des gegenwärtigen Prozesses CJP in die READY-Warteschlange nach LIFO-Priorität
509823/0695
und nach Prioritäts-Numiaer, wobei der CJP zuerst unter ■ der Leitung der Firmware-Unterroutine RLIO (Rolling-Out) ausgespeichert wird.(1419). Die RLLO-Unterroutine steuert folgenden Vorgang: die in den allgemeinen Registern, Basis-Registern, wissenschaftlichen Registern, im {D-Register, Status-Registern und Befehls-Adreßregister gespeicherten Informationen des CJP werden in die entsprechenden Speicherbereiche des Prozeßsteuer-Blocks PCB im Hauptspeicher zurückgeschrieben; und die RLLO-Unterroutine steuert die Aktualisierung des RUA (Laufzeit-Abrechnung). Außerdem wird die DEX'I-Nummer des Prozeß-Hauptwortes .0 (PMWO) im Prozeßsteuer-Block 400 aktualisiert (1420).
Der neue Prozeß NJP ist nun-zur Einspeicherung (roll-in), bereit. Das Grenzadreß-Register BAR wird abgerufen (1422) und das laufende Prozeßwort RPW wird von der Adresse BAR plus 56 der System-Basis abgerufen. Siehe Block 1423. Der Name des neuen Prozesses NJP wird als nächstes in das laufende Prozeßwor.t RPW geschrieben und da der Name des neuen Prozesses NJP im Prozess-Link PL (Prozeß-Yerkettung) der Q/PR/RDY geschrieben wurde, wird nun der Name im Prozess-Link PL infolgedessen im RPW, Block 1424, abgestellt. Demzufolge wird der neue Prozeß NJP aus der READY-Warteschlange (Bereit-Warteschlange) nun zum gegenwärtigen Prozeß CJP; er. ist berechtigt, den Zentralprozessor zu kontrollieren; da er folglich nicht langer in der Warteschlange Q/PR/RDY (Warteschlange der REALT-Prοzesse) wartet, muß er aus der Warteschlange entfernt werden, indem man seinen Namen aus dem Prozess-Link PL der Warteschlange Q/PR/RDY, Block 1425, herausnimmt. Wenn dies geschieht, wird die Warteschlange der READY-Prozesse Q/PR/RDY durch die Eirmware-Unterroutine UQLK, 1425a, aktualisiert. Entsprechend wird die JP-Nummer des Prozesses, der soeben aus der Maschine ausgespeichert
509823/0635
2453531
wurde, in einem Prozess-Link in der Q/PR/RDY abgestellt," denn dieser Prozeß hat nicht langer Kontrolle über die Maschine, sondern muß darauf warten (1426). An dieser Stelle ist die Transformation, d.h. die Übergabe der Kontrolle über den Zentralprozessor an den neuen Prozeß und die Einreihung des alten Prozesses in eine Bereit-Warteschlange, abgeschlossen; da ein Prozeß (der neue CJP) die Kontrolle über den Zentral-Prozessor ausübt, ist der Vakanz-Indikator 0 (1427). Wäre andererseits kein GJP vorhanden, der die Kontrolle über den Zentralprozessor hätte, so wäre der Vakanz-Indikator 1. An dieser Stelle ist die Zuordnung des Prozessors abgeschlossen, und ein neuer Prozeß hat die Kontrolle über den Zentralprozessor erhalten, während der alte Prozeß in eine Bereit-Warteschlange eingeordnet wurde; allerdings ist der neue Prozeß noch nicht ablauffähig, denn die Hardware der Zentraleinheit, 1306 in Pig. 13a, wie z.B. die allgemeinen Register 1307, die Basis-Register 1308, die wissenschaftlichen Register 1309, das T-Register 1310, die Status-Register 1311 und das Befehls-Adreßregister 1312 müssen noch Steuerinformationen vom Prozeßsteuerblock POB des neuen Prozesses erhalten..
Entsprechend ruft die Pirtnware-Uhterroutine 1430 zuerst das Prozeß-Hauptwort PMW 3 aus dem Prozeßsteuerblock PCB (Pig.4) zum Notizblockspeicher 1315 ab und holt dann PMW 0. Das MBZ-PeId von PMW 0 wird geprüft (1433), und wenn es nicht binär 0 ist, so resultiert daraus der Ausnahmezustand "unzulässiger POB". Wenn dagegen das MBZ-PeId von PIiW Null ist, dann wird PIW 1 abgerufen (1434). Wieder wird das MBZ-PeId von PIW 1 untersucht um festzustellen, ob es binär 0 ist oder nicht. Wenn es nicht binär 0 ist,- liegt der Ausnahmezustand "unzulässiger PCB" vor; wenn es dagegen Full ist, so geht der Dispatcher zu C über.
509823/0695
. - 73 -
Entsprechend wird das Adreßraumwort 0 ASW 0 aus dem ent-. sprechenden Raum im PGB abgerufen und die Segmenttabellen-Wortgröße STWSZ wird untersucht (1437) um festzustellen, ob es kleiner ist als 7 oder nicht. Wenn es größer als 7 ist, so liegt ein unzulässiger PGB vor. Wenn es nicht größer ist. als 7, so wird dannASW 1 aus dem PCB, Block 1438, abgerufen ,und sein STWSZ-FeId wird untersucht (1439) um festzustellen, ob es größer als 8 ist oder nicht. Wenn dieses PeId größer als 8 ist, so resultiert daraus "unzulässiger PGB". Wenn dagegen dieses STWSZ-PeId nicht größer als 8 ist, so wird das Ausnahmewort EXW geholt (1440)., ucd sein MBZ-PeId wird daraufhin geprüft, ob es gleich Null ist. Wenn sein MBZ-Peid nicht gleich Null ist, so resultiert daraus "unzulässiger PGB"; wenn es dagegen gleich Null ist, so wird das Staok-Wort SKW abgerufen (1442), und sein MBZ-PeId wird (1443) daraufhin untersucht, ob es gleich Null ist oder nicht. Ist das MBZ-PeId nicht gleich Null, so resultiert daraus "unzulässiger PCB"; wenn es dagegen Null ist, so wird das Befehls-Adreßregister-Wort ICW aus dem PCB geholt und im Befehls-Adreßregister IC abgestellt; und sein TAG—PeId wird daraufhin untersucht, ob es gleich Null ist oder nicht (1445). Wenn das TAG-PeId nicht gleich Null ist ,so resultiert daraus "unzulässiger PCB". Wenn dagegen das TAG-PeId gleich Null ist, so wird das MBZ-Wort abgerufen (1446), und sein MBZ-PeId (Bits 0 bis 31) wird daraufhin untersucht, ob es gleich Null ist (1447) oder nicht. Wenn es nicht gleich Null ist, so resultiert daraus "unzulässiger PCB". . .
Wenn es dagegen Null ist, werden die Stack-Basis-Worte 0, 1 und 2 (SEW O1 1 und 2) geholt (1448). Der Inhalt der acht Basis-Register im Basis-Register-Sicherstellungsbereich des Prozeßsteuerblocks PCB wird dann abgerufen (1449) und in den Basis-Registern der Maschine gespeichert (1308). Dann
50.9823/0695
ORIGINAL INSPECTED
2^56531
wird der Inhalt der 16 allgemeinen Register aus dem PCB-Sicherstellungsbereich für die allgemeinen Register abgerufen (1450) und in den allgemeinen Registern der Maschine (1307) abgespeichert. Bevor allerdings der Inhalt der wissenschaftlichen· Register abgerufen wird, erfolgt eine Prüfung .des Eignungs-Bytes des Prozeß-Hauptwortes 0 (PMW 0) um festzustellen, ob gegenwärtig der wissenschaftliche Modus benutzt wird oder nicht (1451). Wenn der wissenschaftliche Modus benutzt wird, dann wird der Inhalt der wissenschaftlichen Register aus dem PGB-Sicherstellungs- · bereich für die wissenschaftlichen Register abgerufen und gespeichert (1452). Die Firmware prüft dann als nächstes das Eignungs-Byte von PMW 0 daraufhin, ob der Abrechnungs-Modus benutzt wird oder nicht (1453)."Wenn der Abrechnungs-Modus benutzt wird (d.h. das.Abrechnungs-Bit des Eignungs-Bytes ist binär 0), so sind die Abrechnungs-Worte im PCB vorhanden und das Bereitschaftszeit-Abrechnungswort RTA wird aktualisiert. Als nächstes stellt die Firmware dann fest, ob die DEXT-Mummer 0 ist (I454). Wenn sie nicht Hull ist, so zeigt dies an, daß sich die Maschine im Emulations-Modus befinden kann (dies bedeutet, die Dekor-Erweiterungs-Funktion wird benutzt), und entsprechend wird (1455) die DEXT-iTummer von PIiW 0 daraufhin geprüft, ob sie größer oder kleiner ist als das DETSZ-FeId des Prozeß-Hauptwortes 3; •ist sie größer als das DETSZ-FeId, so resultiert hieraus ein Ausnahmezustand "unzulässiger PCB" (1456).Wenn die DEXT-Kummer kleiner ist als das DETSZ-FeId, aber nicht gleich ITuIl, so arbeitet die Maschine im zulässigen Emulations-Modus und macht mit F weiter. Kehren wir zu Entscheidungsblock 1454 zurück: Wenn das DEXT-FeId binär 0 ist, dann liegt gegenwärtig Eigen-Hodus vor und die Maschine ruft Segmettabellen-Worte ab (1457). Das Restzeitsperren-Wort (RTO-Wort) des PCB wird abgerufen (1458) und der Prozeß-Timer wird geladen, und zwar mit der Zeitgrenze, die
509823/0695
ORIGINAL INSPECTED
der CJP (der nun laufende Prozeß) im Laufstatus zubringen kann.
Bis jetzt wurde (a) entweder ein neuer Prozeß UJP eingespeichert, um die Kontrolle über die ZE zu übernehmen, wenn sich ein früherer Prozeß OJP in der Maschine-befand und der neue Prozeß NJP eine höhere Prioritätsstufe als der frühere Prozeß GJP "besaß, oder (Td) kein CJP übte die Kontrolle über die Zentraleinheit aus, und der Kopf der Bereit-Warteschlange wurde ausgeführt. Yerkürzt ausgedrückt: im Pail (a) wurde der CJP aus dem RPW (laufendes Prozeßwort) herausgenommen und in einem Prozess-link PL in der Warteschlange Q/PR/RDY abgestellt, und der NJP in einem Process-Link PL in der Warteschlange Q/PR/RDY (Warteschlange der READY-Prozesse) wurde in das. RPW gestellt, wodurch praktisch die Positionen der beiden Prozesse vertauscht wurden und der NJP die Kontrolle übernah, der nun zum CJP wurde und dem· früheren CJP die Kontrolle abnahm. Dann erfolgte Zugriff auf den ProzeßsteuerbloGk des NJP, und die zur Ausführung des NJP (des jetzigen CJP) benötigten Informationen wurden im Notizblockspeicher bzw« im Registerfeld im Rechenwerk ACU gespeichert.
Gab es keinen CJP, der die Kontrolle über die Zentraleinheit ausübte (Fall b), dann wurde der Kopf der READY-Wartesehlange abgearbeitet. Dies bedeutet, der NJP wurde deshalb zum CJP, weil der Dispatcher den NJP aus dem Prozess-Link PL am Kopf der READY-Warteschlange fortnahm und ihn im RPW-Wort speicherte. Hierdurch blieb in der Warteschlange Q/PR/EDY ein Prozess-Link PL leer zurück und es ist erforderlich, es herauszunehmen.
Beginnend mit dem Entscheidungs-Block 1461 stellt die Firmware fest, ob ein gegenwärtig ablaufender ProzeßCJP die
50982 3/0695
Kontrolle über die Zentraleinheit (ZE) (CPU) ausübt oder nicht. Wenn ein freies Prozess-Link (PPIS) vorlag, so erfolgte Zugriff und Einreihung in die V/arteschlange, und der GJP wurde dorthin geschrieben. Wenn dagegen kein CJP Kontrolle über die Zentraleinheit ausübte, so wird das Status-Byte von PMW 0 des NJP aktualisiert (1460) und wieder erfolgt eine Feststellung, ob sich ein CJP in der Maschine befand oder nicht (1463). Wenn kein CJP die Kontrolle über den Prozessor ausübte, so wird das Prozess-Link (Prozeß-Yerkettung) des ITJP (der sich in der Warteschlange Q/PR/RDY befand und nun die Kontrolle über die Maschine ausübt) aus der READY-Warteschlange Q/PR/RDY herausgenommen (1466), wird zu.einem freien Verkettungs-Semaphor (PLSP) in die Warteschlange der freien Prozeß-Verkettungen (805 in Pig. 9) aufgenommen und zu einem Teil der Schlange der freien Prozeß-Verkettungen (1466a). Der Inhalt des Grenzadreß-Registers BAR wird geholt (1464)» und das laufende Prozeßwort PRV/ des EJP (des jetzigen CJP), das sich bei BAR plus 56 der System-Basis befindet, wird fortgeschrieben, indem die NJP-Kennung im RPW gespeichert wird (Block 1465). Der Vakanz-Indikator ist Null, falls es keinen CJP gegeben hatte. Als'nächstes wird der Konkurrenz-Indikator (d.h. ein Plip-Plop im Ergänzungsspeicher 1317a, das dazu dient, einen möglichen Prioritätskonflickt zwischen dem gegenwärtig ablaufenden Prozeß CJP und einem in der Bereit-Warteschlange wartenden Prozeß anzuzeigen) auf Null gelöscht (1467) und der Segment-Assoziator (AS 132 in Pig. 1), ein typischer inhaltsadressierter Assoziativspeicher, wird gelöscht (1471); dann erfolgt ein Übergang zum Verarbeitungs-Modus (1470); Verarbeitungs-Modus bedeutet, daß Ausnahmezustände nicht vom Betriebs-System, sondern von dem im Prozessor operierenden Prozeß bearbeitet werden Die Firmware geht dann zu CAB 1480 über und das Asynchron-Sprung-Bit AB wird daraufhin untersucht, ob es binär 1 ist
50982 3/0695
oder nicht (1481). Wenn das AB-Bit /binär 1 ist, dann erfolgt (1482) eine Prüfung daraufhin, ob die Prozeß-Ringnummer PRN größer ist als das Asynchron-Sprung-Bit ARN oder ob es gleich ist (das AB und das ARH sind im Prioritäts-Bytes des Prozeßsteuer-Wortes POB jedes Prozesses untergebracht und sind signifikant, wenn sich der Prozeß im Lauf-Status befindet; AB und ARH" ergeben sich aus dem RPW, das sich bei BAR plus 56 der System-Basis befindet). AB und ARN in BAR plus 56 des RPW sind gelöscht; denn der nächste Schritt (1484) besteht im Übergang zu einer Asynohron-Sprung-Routine, die die Bedingungen bearbeiten würde, welche überhaupt erst dazu führen wurden, daß das Asynchron-Sprung-Bit oder die Asynchron-Ringnummer gesetzt wäre. Wären sie nicht gelöscht, so würde dies beim nächsten Arbeitsgang der Firmware als ein Hinweis darauf verstanden werden, daß etwas nicht in Ordnung war, wo in Wirklichkeit.alles korrekt war; es müßte immer, mit der Asynchron-Sprung-Routine (1484) fortgefahren werden und Ausführung wäre unmöglich. Fun zurück zu Entscheidungsblock 1481 und 1482.
Wenn das AB-Bit nicht gesetzt ist, oder das AB ist gesetzt und PRN ist nicht größer als ARN, dann würde die Firmware als nächstes ermitteln, in welchem Modus der Prozessor arbeiten würde, im Normal-Modus oder im Emulations-Modus. Entsprechend wird die DEXT-Nuramer daraufhin untersucht, ob sie Null ist oder nicht. Wenn sie Null ist, so liegt Normal-Modus der Maschine vor (1487), wenn dagegen die DEXT-Nummer nicht Null ist, so wird im Emulations-Modus gearbeitet (1486).
B 0 9 8 2 3 / 0 6 9 5

Claims (22)

  1. Patentansprüche
    Mehrprogramm-Coraputer-Systera mit einer Zentraleinheit, die mehrere Prozesse enthält, von denen ein ausgewählter Prozeß läuft und die Eontrolle über die Zentraleinheit hat, wobei sich ausgewählte weitere Prozesse in einem Bereit-Zustand befinden, der darin besteht, daß ein ausgewählter erster Prozeß dieser weiteren Prozesse für die Erlangung der Kontrolle über die Zentraleinheit bereit ist, nachdem die Zentraleinheit verfügbar geworden ist, in einem Warte-Zustand befinden, der darin besteht, daß ein ausgewählter zweiter Prozeß der weiteren Prozesse das Eintreten eines vorbestimmten Ereignisses benötigt, ehe er die Kontrolle über die Zentraleinheit übernehmen darf, wenn diese verfügbar wird, und in einem Aussetzungs-Zustand befinden, der darin besteht, daß ein ausgewählter dritter Prozeß der weiteren Prozesse inaktiv gemacht worden ist, und mit einem virtuellen Speicher, dadurch gekennzeichnet, daß ein virtueller Prozessor zur Steuerung der Zustände dieser Prozesse (a) in dem virtuellen Speicher erste Einrichtungen 'mit einem vorbestimmten Format zum Speichern von Informationen für die Steuerung der Zustände der Prozesse und (b) in dem virtuellen Speicher zweite Einrichtungen zur Adressierung der ersten Einrichtungen enthält.
  2. 2. Computer-System nach Anspruch 1, dadurch gekennzeichnet, daß in den zweiten Einrichtungen dritte Einrichtungen zur Angabe des Namens und der Adresse des laufenden Prozesses enthalten sind.
  3. 3· Computer-System nach Anspruch 2, dadurch gekennzeichnet, daß in den zweiten Einrichtungen mit den dritten Einrichtungen in Verbindung stehende vierte Einrichtungen zum
    509823/0695
    ORIGINAL
    Speichern eines vorbestimmten Abschnitts der Adresse des laufenden Prozesses enthalten sind.
  4. 4. Computer-System nach Anspruch 3, dadurch gekennzeichnet, daß in den zweiten Einrichtungen, die mit den vierten Einrichtungen in Verbindung-stehen, fünfte Einrichtungen zum Speichern eines zweiten vorbestimmten Abschnitts der Adresse des laufenden Prozesses enthalten sind.
  5. 5. Computer-System nach Anspruch 4> gekennzeichnet durch mit den vierten und fünften Einrichtungen in Verbindung stehende sechste Einrichtungen zum Kombinieren des ersten und des zweiten vorbestimmten Abschnitts der Adresse des laufenden Prozesses.
  6. 6. Mehrprogramm-Computer-System nach Anspruch 1 mit wenigstens einem virtuellen Speicher, einer mit dem virtuellen Speicher in Verbindung stehenden Zentraleinheit mit mehreren Allgemein- und Basis-Registern zum Speichern von Informationen für einen Betrieb der Zentraleinheit im Eigen-Modus, mit einem Befehlszählerregister zum Speichern von Informationen über einen Betrieb der Zentraleinheit im Eigen-Modus, mit mehreren wissenschaftlichen Registern zum Speichern von
    - Informationen über einen Betrieb der Zentraleinheit im wissenschaftlichen Modus, mit einem Befehlszählerregister zum Speichern der Adresse des nächsten von der Zentraleinheit auszuführenden Befehls und mit einem Statusregister zum Speichern von Informationen über den Status der Zentraleinheit, und einem Betriebssystem zur Schaffung oder Löschung von Prozessen, von denen sich ein ausgewählter Prozeß in einem lauf-Zustand befindet, in dem er die Kontrolle über die Zentraleinheit hat, wobei sich ausgewählte weitere Prozesse für die Erlangung der Kontrolle über die Zentraleinheit bereit ist, nachdem die Zentraleinheit verfügbar
    S09823/0695
    geworden ist, in einem Warte-Zustand "befinden, der darin besteht, daß ein ausgewählter zweiter Prozeß der weiteren Prozesse das Eintreten eines vorbestimmten Ereignisses benötigt, ehe er die Kontrolle über die Zentraleinheit übernehmen darf, wenn diese verfügbar wird, und in einem Aussetzungs-Zustand befinden, der darin besteht, daß ein ausgewählter dritter Prozeß der weiteren Prozesse inaktiv gemacht worden ist, dadurch gekennzeichnet, daß ein die Zustände der Prozesse steuernder virtueller Prozessor folgende Einheiten enthält:
    a) erste, eine vorbestimmte Struktur aufweisende und einem vorbestimmten Prozeß zugeordnete Einrichtungen zum Leiten des Zustandes dieses vorbestimmten Prozesse,
    b) zweite, mit dem Betriebssystem in Verbindung stehende Einrichtungen zur Angabe eines ausgewählten Hamens und
    " einer ausgewählten Adresse des den ersten Einrichtungen zugeordneten vorbestimmten Prozesses,
    c) dritte, von den zweiten Einrichtungen adressierte Einrichtungen zur Abgabe eines ersten vorbestimmten Abschnitts der Adresse der ersten Einrichtungen,
    d) vierte, von den dritten Einrichtungen adressierte Einrichtungen zur Abgabe eines zweiten vorbestimmten Abschnitts der Adresse der ersten Einrichtungen,
    e) fünfte, mit den dritten und vierten Einrichtungen verbundene Einrichtungen zum Kombinieren des ersten und zweiten vorbestimmten Abschnitts der Adresse der ersten Einrichtungen zur Bildung einer absoluten Adresse der ersten Einrichtungen und
    50982 3/0695
    f) sechste, in den ersten Einrichtungen enthaltene Einrichtungen zum Speichern des Inhalts des Befehlszählerregisters.
  7. 7. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen siebte Einrichtungen zum Speichern des Inhalts der Allgemein-Register enthalten sind.
  8. 8. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen achte Einrichtungen zum Speichern des Inhalts der Basis-Register enthalten sind.
  9. 9. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen neunte Einrichtungen zum Speichern des Inhalts der wissenschaftlichen Register enthalten sind.
  10. 10. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen zehnte Einrichtungen zum Speichern des Inhalts des Status-Registers enthalten sind.
  11. 11. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen elfte Einrichtungen enthalten sind, die anzeigen, ob der ausgewählte eine Prozeß im Emulations-I'lodus ausgeführt werden kann oder nicht.
  12. 12. Computer-System nach Anspruch 6, dadurch gekennzeichnet, daß in den ersten Einrichtungen zwölfte Einrichtungen enthalten sind, die anzeigen, ob sich die ersten Einrichtungen im Emulations-Modus befinden oder nicht.
  13. 13. Mehrprogramm-Computer-System nach Anspruch 1 mit wenigstens einem virtuellen Speicher, einer mit dem virtuellen Speicher
    509823/0695
    ORIGINAL INSPECTED
    in Verbindung stehenden Zentraleinheit, einem Betriebssystem zur Schaffung oder Löschung von Prozessen, von denen sich ein ausgewählter.Prozeß in einem lauf-Zustand befindet, in dem er die Kontrolle über die Zentraleinheit hat, wobei sich ausgewählte weitere Prozesse in einem Bereit-Zustand befinden, der darin besteht, daß ein ausgewählter ersten Prozeß dieser weiteren Prozesse für die Erlangung der Kontrolle über die Zentraleinheit bereit ist, nachdem die Zentraleinheit verfügbar geworden ist, in einem Warte-Zustand befinden, der darin besteht, daß ein ausgewählter zweiter Prozeß der weiteren Prozesse das Eintreteneines vorbestimmten Ereignisses benötigt, ehe er die Kontrolle über die Zentraleinheit übernehmen darf, wenn diese verfügbar wird, und in einem Aussetzungs-Zustand befinden, der darin besteht, daß ein ausgewählter dritter Prozeß der weiteren Prozesse inaktiv gemacht worden ist, dadurch gekennzeichnet, daß eine Abrechnungsanordnung zum Abrechnen der Zeit vorgesehen ist, die jeder Prozeß im Lauf-, Bereit- oder Wartezustand verbringt, wobei diese Abrechnungsanordnung folgende Einheiten enthält:
    a) erste, eine vorbestimmte Struktur aufweisende und einem vorbestimmten Prozeß zugeordnete Einrichtungen zum Leiten des Zustandes des vorbestimmten Prozesses,
    b) zweite, mit dem Betriebssystem in Verbindung stehende Einrichtungen zur Angabe eines ausgewählten ITamens und einer ausgewählten Adresse des vorbestimmten, den ersten Einrichtungen zugeordneten Prozesses,
    c) dritte, von den zweiten Einrichtungen adressierte Einrichtungen zur Angabe der Adresse der ersten Einrichtungen und
    50 9 823/069 5 ORlfflNAL INSPECTED
    d) erste Abrechnungsmoäus-Einriohtungen in den ersten Einrichtungen zur Anzeige der aufgelaufenen Zeit, die der den ersten Einrichtungen zugeordnete Prozeß im Xauf-Zustand verbracht hat.
  14. 14. Computer-System nach Anspruch 13, dadurch gekennzeichnet, daß in den ersten Einrichtungen zweite Abrechnungsmodus-Anordnungen enthalten sind, die die aufgelaufene Zeit anzeigen, die der den ersten Einrichtungen zugeordnete Prozeß im Bereit-Zustand verbracht hat.
  15. 15. Computer-System nach Anspruch 14, dadurch gekennzeichnet, daß in den ersten Einrichtungen dritte Abrechnungsmodus-Anordnungen enthalten sind, die die aufgelaufene Zeit anzeigen, die der den ersten Einrichtungen zugeordnete Prozeß im Warte-Zustand verbracht hat.
  16. 16. Computer-System nach Anspruch 15, dadurch gekennzeichnet, daß in den ersten Einrichtungen Abrechnungseignungs-Anordnungen enthalten sind, die anzeigen, ob sich der den ersten Einrichtungen zugeordnete Prozeß im Abrechnungszustand befindet oder nicht.
  17. 17. Computer-System nach Anspruch 16, dadurch gekennzeichnet, daß die Zentraleinheit eine erste Zeitgebervorrichtung enthält, die dem Computer-System den laufenden Echtzeitwert in MikrοSekunden angibt.
  18. 18. Computer-System nach Anspruch 17, gekennzeichnet durch eine zweite Zeitgebervorrichtung, die der Zentraleinheit die Zeitperiode angibt, die ein Prozeß im Lauf-Zustand verbringt.
  19. 19. Computer-System nach Anspruch 18, dadurch gekennzeichnet, daß der Zentraleinheit vierte, mit der ersten Abrechnungs-
    5 09823/069 5 ORIGINAL INSPECTED
    2 'ι ο 6 5 31
    anordnung und mit der zweiten Taktvorrichtung in Verbindung stehende Einrichtungen zur Aktualisierung der ersten Abreohnungsanordnung enthalten sind.
  20. 20. Computer-System nach Anspruch 19, dadurch gekennzeichnet, daß in der Zentraleinheit fünfte, mit den zweiten und dritten Abrechnungsanordnungen und mit der ersten Zeitgebervorrichtung in Verbindung stehende Einrichtungen zur Aktualisierung der zweiten und/oder dritten Abrechnungsanordnung enthalten sind.
  21. 21. Computer-System nach Anspruch 20, dadurch gekennzeichnet, daß die erste Zeitgebervorrichtung ein synchroner Aufwärtszähler ist.
  22. 22. Computer-System nach Anspruch 21, dadurch gekennzeichnet, daß die zweite Zeitgebervorrichtung ein synchroner Abwärtszähler ist.
    509823/069 5
    ORIGINAL INSPECTED
    Leerseite
DE19742456531 1973-11-30 1974-11-29 Computer-system Ceased DE2456531A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR7342689A FR2289004A1 (fr) 1973-11-30 1973-11-30 Bloc de controle de processus
FR7342690A FR2258113A5 (de) 1973-11-30 1973-11-30
FR7342702A FR2253432A5 (de) 1973-11-30 1973-11-30

Publications (1)

Publication Number Publication Date
DE2456531A1 true DE2456531A1 (de) 1975-06-05

Family

ID=27250213

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19742456531 Ceased DE2456531A1 (de) 1973-11-30 1974-11-29 Computer-system

Country Status (8)

Country Link
JP (1) JPS6052453B2 (de)
AU (1) AU501600B2 (de)
BR (1) BR7410068A (de)
CA (1) CA1020280A (de)
DE (1) DE2456531A1 (de)
GB (1) GB1491453A (de)
IT (1) IT1030848B (de)
NL (1) NL7415722A (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68926043T2 (de) * 1989-07-20 1996-08-22 Toshiba Kawasaki Kk Mehrprozessor-Computersystem
DE19957594B4 (de) * 1999-11-30 2004-08-26 OCé PRINTING SYSTEMS GMBH Verfahren zum Synchronisieren von threads eines Computerprogramms
CN111857995B (zh) * 2020-06-30 2024-05-24 海尔优家智能科技(北京)有限公司 进程调度方法和装置、存储介质及电子装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3611307A (en) * 1969-04-03 1971-10-05 Ibm Execution unit shared by plurality of arrays of virtual processors

Also Published As

Publication number Publication date
AU7587774A (en) 1976-06-03
NL7415722A (nl) 1975-06-03
BR7410068A (pt) 1976-06-08
IT1030848B (it) 1979-04-10
JPS6052453B2 (ja) 1985-11-19
GB1491453A (en) 1977-11-09
JPS50117334A (de) 1975-09-13
AU501600B2 (en) 1979-06-28
CA1020280A (en) 1977-11-01

Similar Documents

Publication Publication Date Title
DE2722099C2 (de)
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE3280446T2 (de) Digitales Datenverarbeitungssystem.
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE2416609C2 (de) Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen
DE2846495C2 (de) Zentraleinheit
DE3685913T2 (de) Vektorenverarbeitung.
DE2517171A1 (de) Datenverarbeitungssystem mit erweitertem semaphor-aufbau
DE2517297A1 (de) Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes
DE3716229A1 (de) Mikroprozessorchip mit einem stapelrahmen-cache
DE2054835C2 (de) Steuereinrichtung in einem Prozessor einer Mehrprozessor-Datenverarbeitungsanlage
DE2714805A1 (de) Datenverarbeitungssystem
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE2459675A1 (de) Datenverarbeitungssystem
DE2517276A1 (de) Datenverarbeitungssystem
DE2251876B2 (de) Elektronische datenverarbeitungsanlage
DE2500006A1 (de) Wirtsdatenverarbeitungssystem und verfahren zur emulation von eingabe/ausgabe- befehlen
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE2626703A1 (de) Intern programmierbares datenverarbeitungssystem
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
CH619309A5 (de)
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE2612054A1 (de) Verfahren zur adressentwicklung und prozessor zur durchfuehrung des verfahrens

Legal Events

Date Code Title Description
OGA New person/name/address of the applicant
8110 Request for examination paragraph 44
8131 Rejection