DE2507405C2 - Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage - Google Patents
Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer DatenverarbeitungsanlageInfo
- Publication number
- DE2507405C2 DE2507405C2 DE19752507405 DE2507405A DE2507405C2 DE 2507405 C2 DE2507405 C2 DE 2507405C2 DE 19752507405 DE19752507405 DE 19752507405 DE 2507405 A DE2507405 A DE 2507405A DE 2507405 C2 DE2507405 C2 DE 2507405C2
- Authority
- DE
- Germany
- Prior art keywords
- task
- peripheral device
- priority
- tasks
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Bus Control (AREA)
Description
Die Erfindung betrifft eine Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks (Steuerprogramme)
für Peripheriegeräte nach dem Oberbegriff des Patentanspruchs 1 sowie ein Verfahren zum Betreiben
der Anordnung.
In Datenverarbeitungsanlagen für Mehrfachprogrammierung, wie sie z. B. aus der US-PS 36 65 415 bekannt
sind, wird üblicherweise ein Eingabe/Ausgabe-Steuerprogramm oder Kanalprogramm (Task) verwendet,
um die Arten von Übertragungen festzulegen, die 45 tionen eine nicht vernachlässigbare Zeit warten, bevor
zwischen der Zentraleinheit und einem Peripheriegerät sie die Steuerung des Kanalprogramms haben, welches
stattfinden sollen. Wenn das gerade ablaufende Pro- ihnen zugewiesen ist, was insbesondere dann der Fall ist,
gramm eine Eingabe/Ausgabe-Operation auszuführen wenn diese Peripheriegeräte langsam sind,
wünscht, bezeichnet bei diesem Schritt der Befehl die Aufgabe der Erfindung ist es deshalb eine Anordnung
Adresse des Peripheriegeräts, in welchem die Operation so nach dem Oberbegriff des Patentanspruchs 1 zu schafausgeführt
werden soll, sowie die Adresse des entspre- fen. die Wartezeiten der Peripheriegeräte vermeidet
chenden Kanalprogramms oder die Steuerbefehlsadresse. Die Adresse des Peripheriegeräts und die Adresse
des Steuerbefehls werden in ein Eingabe/Ausgabe-Register übertragen. Die Adresse des Peripheriegeräts 55
wird auf dem Datenübertragungsweg (»Bus«) übertragen, der die Peripheriegeräte mit der Zentraleinheit verbindet Das Peripheriegerät erkennt seine Adresse und
antwortet der Zentraleinheit, indem es seinen Zustand
des Steuerbefehls werden in ein Eingabe/Ausgabe-Register übertragen. Die Adresse des Peripheriegeräts 55
wird auf dem Datenübertragungsweg (»Bus«) übertragen, der die Peripheriegeräte mit der Zentraleinheit verbindet Das Peripheriegerät erkennt seine Adresse und
antwortet der Zentraleinheit, indem es seinen Zustand
meldet. Wenn das Peripheriegerät nicht verfügbar ist, 60 der Datenverarbeitungsanlage zu vergrößern, und in
werden die Informationen über den Steuerbefehl und der die Verbindung zwischen der zentralen Datenverarüber
die Nummer des Peripheriegeräts in eine War- beitungseinheit und den Peripheriegeräten über eine
teschlange eingereiht, um in einem späteren Zeitpunkt Gerätesteuerung ausreichend »transparent« ist, um sawieder
entnommen zu werden. Wenn das Peripheriege- gen zu können, daß die Ausführung der verschiedenen
rät verfügbar ist, wird die Verbindung hergestellt und 65 Tasks durch die Gerätesteuerung gleichzeitig erfolgt,
die Übertragung von Informationen initialisiert; das Ka- Deshalb werden die Tasks in zweckdienlicher Weise
nalprogramm wird ausgelöst und die Ausführung jedes gleichzeitig räumlich und zeitlich verteilt. Die räumliche
Steuerbefehls erfolgt im Takt der Abrufe des Periphe- Verteilung erfolgt in den geeigneten Speicherzonen,
und die Verbindung zwischen der zentralen Datenverarbeitungseinheit
und den verschiedenen Peripheriegeräten transparent macht
Die Erfindung zielt insbesondere darauf ab, eine Datenverarbeitungsanlage
zu schaffen, in der jede Gerätesteuerung gegenüber der zentralen Datenverarbeitungseinheit
(CPU) und den Peripheriegeräten im Masterbetrieb arbeitet, um die Verarbeitungskapazitäten
während die zeitliche Verteilung erreicht wird, indem die Zeitpunkte der Auslösung und der Verkettung der
Tasks untereinander festgelegt werden, wenn eine Unterbrechung erfolgt oder wenn eine Task beendet ist.
Zur Verwirklichung dieser Ziele versieht die Erfindung die Gerätesteuerung PCUmit einer »Firmware«.
Die Firmware besteht einerseits aus einer Gruppe von Mikroprogrammen und von Tabellen oder Mikrobetriebssystemen
MIOS (Abkürzung des angelsächsischen Ausdrucks »Microoperating systems«), die die
Operationen in der Gerätesteuerung PCU koordiniert und optimiert, und andererseits aus einer Gruppe vor.
Mikroprogrammen und von Tabellen zum Steuern der Peripheriegeräte. Die Gruppe der Mikroprogramme,
die das Mikrobetriebssystem bildet, hat als Hauptaufgaben die Leitung eines multiprogrammierten Zeitgebers,
die Verarbeitung der Unterbrechungen der Hardware und das Management der Tasks im Hinblick auf ihre
Ausführung. Mit /4FP(Abkürzung des angelsächsischen Ausdrucks »Attachment firmware package«) wird die
Gesamtheit der Mikroprogramme und Tabellen bezeichnet (wofür im folgenden der Ausdruck »Firmwaresystem
AFP« verwendet wird), die für die Steuerung einer Gruppe von ausreichend homogenen Peripheriegeräten,
wie beispielsweise eine Gruppe von Kartenlesern unterschiedlicher Art, erforderlich sind. Es gibt eine
Firmware-Version, die jeder besonderen Konfiguration von an die Gcrätcstcücrüng PCUangeschlossenen Peripheriegeräten
angepaßt ist. Jede Firmware-Version arbeitet unter der Überwachung des Mikrobetriebssystems
MIOS. Ein Firmwaresystem AFP führt die durch das Mikrobetriebssystem MlOS oder durch die Kanalprogramme
(über das Mikrobetriebssystem MIOS) erzeugten Steuerbefehle aus und berücksichtigt die Signale
der Peripheriegeräte. Es enthält folgende Bestandteile:
!. einen oder mehrere Blöcke DACB zur Steuerung von Peripheriegerätenanschlüssen DA. Jeder Block
DACB legt den Raum von Daten und den Raum von Mikroprogrammen fest, d. h. alle Hilfsmittel,
die dem Firmwaresystem AFP zum Steuern der mit dem Peripheriegeräteanschluß verbundenen Peripheriegeräte
zugeordnet sind.
2. eine Gruppe von Blöcken MCB zur Steuerung der Tasks. Jeder Block MCB steuert eine Task, die aktiviert
wird, um die spezifischen Funktionen des Anschlusses auszuführen.
3. eine Gruppe von Mikroprogrammen. Die Mikroprogramme können Wiedereinsprungmikroprogramme
sein, um ihre Aufteilung auf mehrere Tasks zu erleichtern.
4. Datenzonen, welche in bezug auf die verschiedenen Tasks des Firmwaresystems AFP ständige oder
vorübergehende Daten enthalten.
Eine Task besteht aus einer Reihe von mikroprogrammierten Operationen, deren Ausführung den Ablauf
einer Sequenz von Mikrobefehlen ohne Gleichzeitigkeit zur Folge hat Im Rahmen der Erfindung erscheint
eine Task wie die potentielle Ausführung von zu der Aufgabe eines Firmware-Systems A FP gehörenden
asynchronen spezifischen Funktionen mit Hilfe von Mirkobefehlen. Die Tatsache, daß einer Task entsprechende
Mikrobefehle ausgeführt werden, bringt sie in den Zustand »im Ablauf begriffen«; man sagt dann, daß
die Task aktiviert ist Eine Task kann entweder durch das Mikrobetriebssystem MIOS während des Eintretens
eines oder mehrerer spezifischer Ereignisse oder auf Anforderung eines Firmwaresystems AFP aktiviert
werden. Sie kann der einen oder anderen der beiden folgenden Klassen angehören. Die erste Klasse besteht
aus Tasks EV\ und EV2, die die Eigenschaften haben, bei
dem Eintritt von Ereignissen EV\ und EV2 (Ereignismeldung
Nr. 1 und Nr. 2) automatisch ausgelöst zu werden und nicht durch andere Tasks adressiert werden zu können,
d. h., daß die anderen Tasks nicht auf sie einwirken können. Die zweite Klasse wird als die Klasse der gewöhnlichen
Tasks bezeichnet. Diese Tasks sind durch andere Tasks mit Hilfe von Blöcken MCB zur Steuerung
von zugeordneten Tasks adressierbar. Der Name einer gewöhnlichen Task ist durch die Adresse ihres Blockes
MCB festgelegt. Der Speicherplatz jedes Blockes MCB ist von dem Firmwaresystem AFP her bekannt; er ist in
dem Zeitpunkt der »Assemblage« (vgl. die Definition im Glossar) festgelegt worden.
Es folgt die Beschreibung von Ausführungsbeispielen der Erfindung. In den Zeichnungen zeigt
F i g. 1 das Verarbeitungssystem, welches aus der Zentraleinheit CPU, der Gerätesteuerung PCU und verschiedenen
Peripheriegeräteanschlüssen DA besteht,
F i g. 2 die Gerätesteuerung,
F i g. 3 in vereinfachter Form die Zustandsübergänge der verschiedenen Tasks,
F i g. 4 ein Funktionsdiagramm, welches die durch die Hardwareunierbrechüüg EV\ hervorgerufenen Wirkungen
und die Wechselwirkungen des Mikrobetriebssystems MIOS und der Tasks zusammenfaßt,
F i g. 5 das Format eines Blocks DACB zur Steuerung eines Peripheriegeräteanschlusses,
F i g. 6 das Format eines Blocks MCB zur Steuerung von Tasks,
F i g. 7 eine Zone des Speichers M, welche die Formate der Wörter CPCW- TQHP und LCM angibt,
F i g. 8 das Format einer Tabelle zur Task-Zuteilung,
F i g. 9 das Format einer Taballe ALCT, die
F i g. 10a bis 10c ein Beispiel der Verkettung der Blökke MCB in einer Warteschlange der Bereit-Zustände, die
F i g. 8 das Format einer Tabelle zur Task-Zuteilung,
F i g. 9 das Format einer Taballe ALCT, die
F i g. 10a bis 10c ein Beispiel der Verkettung der Blökke MCB in einer Warteschlange der Bereit-Zustände, die
Fig. 11a bis lic eine Darstellung einer Verkettung
der Blöcke MCBm der »TIMER«-Warteschlange,
F i g. 12 ein Diagramm, welches die Folge der Operation zeigt, die auszuführen sind, wenn ein Ereignis EV\
an einem Peripheriegeräteanschluß oder an dem TI MER eintritt,
F i g. 13 ein Diagramm, welches die Betriebsweise des Task-Dispatchers oder Task-Zuteilers veranschaulicht,
F i g. 14 ein Diagramm, welches den Mechanismus des Aufrufs einer Task EV2 veranschaulicht,
F i g. 14 ein Diagramm, welches den Mechanismus des Aufrufs einer Task EV2 veranschaulicht,
F i g. 15 ein Diagramm, weiches den Aufruf einer gewöhnlichen
Task veranschaulicht,
F i g. 16 ein Diagramm, welches die Schritte zeigt, die für die Rückkehr zu einer unterbrochenen Task erforderllich
sind,
Fig. 17 die Aktionen, die im Anschluß an einen Mikrobefehl
»TERMINATE« ausgeführt werden,
Fig. 18 die Aktionen, die im Anschluß an einen Mi-
krobefehl»ACTIVA TE« ausgeführt werden,
Fig. 19 die Aktionen, die im Anschluß an einen Mikrobefehl
»SUSPEND« ausgeführt werden,
F i g. 20 die Aktionen, die im Anschluß an einen Mikrobefehl »RQT0« ausgeführt werden,
Fig.21 die Operation des Maskierers sämtlicher Tasks, bei welchem es sich nicht um die Task EVj handelt, in der Gerätesteuerung PCU,
Fig.21 die Operation des Maskierers sämtlicher Tasks, bei welchem es sich nicht um die Task EVj handelt, in der Gerätesteuerung PCU,
F i g. 22 die Operation der entsprechenden Demaskie-
F i g. 23 die Operation des Maskierens des Signals EV2 eines Peripheriegeräteanschlusses,
F i g. 24 die Operation des entsprechenden Demaskierens des Signals EV2, und
F i g. 25 die Aktionen, die im Anschluß an den Mikrobefehl STDA ausgeführt werden.
F i g. 1 zeigt das Verarbeitungssystem, welches aus der Zentraleinheit (CPU) 100 besteht, die mit der Gerätesteuerung
(PCU) 101 über die Schnittstelle PSI verbunden ist. Alle Informationen, die von der Zentraleinheit
CPU ZM einem Peripheriegerät übertragen werden
sollen, gehen durch die Schnittstelle PSl hindurch über die Gerätesteuerung PCU. Die Blöcke 102 bis 105 stellen
verschiedene Peripheriegeräteanschlüsse dar, die mit der Gerätesteuerung (PCU) 101 und mit den zugeordneten
Blöcken 106 bis 109 verbunden sind, welche die verschiedenen Peripheriegeräte Pi bis Pn darstellen.
Fig. 2 zeigt die Gerätesteuerung 101 von Fig. 1. In
dieser Figur sind lediglich diejenigen Hardware-Bestandteile dargestellt, die für das Verständnis der Erfindung
erforderlich sind. Eine ausführlichere Beschreibung dieser Gerätesteuerung findet sich in der gleichzeitig
eingerichteten deutschen Patentanmeldung P 25 07 403 der Anmelderin. Die Gerätesteuerung PCU
besteht aus einer Verarbeitungseinheit 200 (nachfolgend dem englischen Sprachgebrauch entsprechend
auch als MPU bezeichnet), einer Schnittstellensteuereinheit 235 (nachfolgend auch als ICU bezeichnet), η
Peripheriegeräteanschlußgattern (DAl1 bis DAl„)234,
die jeweils mit dem entsprechenden Geräteanschluß DA verbunden sind und von denen allein die Anschlußgatter
DA1\ und DAln dargestellt sind, aus ρ Gattern
PSI, PSIi bis PSIp (lediglich ein PSAGatter 233 ist dargestellt)
für den Dialog zwischen der Zentraleinheit CPU und der Gerätesteuerung PCU, und einem TIMER-Galter
236, welches zu regelmäßigen Zeiten eine TIMER-Unterbrechung EVi erzeugt.
Jedem Gatter ist eine Nummer zugeteilt. Den PSI-Gattern sind die Nummern 0 bis p— 1, den D/4/-Gattern
die Nummern ρ bis p+n— 1 und dem TIMER-G<er
die Nr. ρ+π zugeteilt.
Die Verarbeitungseinheit 200 besteht hauptsächlich aus einem Speicher 202, in den die Mikroprogramme
und die Tabellen des Mikrobetriebssystems MI0S sowie die Mikroprogramme und Tabellen jedes Firmwaresystems
AFP eingetragen sind, aus einem Register (R0-SAR) 204, welches die Adresse des in dem Speicher
202 enthaltenen folgenden Befehls enthält, aus einem Register (R0R) 205. welches den Mikrobefehl, der gerade
ausgeführt wird, enthält und die verschiedenen Übertragungen und Operationen der Verarbeitungseinheit
200 und der Schnittstellensteuereinheit 235 einer Verknüpfungsschaltung
206 steuert, welche die Adresse des folgenden Mikrobefehls aus den Daten berechnet, die
durch den ausgeführten Mikrobefehl geliefert werden, oder aus prüfbaren Kippschaltungen, oder aus äußeren
Ereignissen, die durch Hardware-Unterbrechungen einer Doppelregisterbank 210 gemeldet werden, welche
in eine Bank URB von oberen Registern und in eine Bank LRB von unteren Registern unterteilt ist, die die
Funktion von Arbeitsregistern haben, welche die Übertragung oder den Empfang von zu der Schnittstellensteuereinheit
ICU gehenden oder von dieser kommenden Daten gestatten oder einen Austausch von Daten
mit dem Speicher 202 oder mit der arithmetischen und logischen Einheit 211 oder mit dem Register (DNR) 208,
welches die Nummer des Peripheriegeräteanschlusses speichert, an welchem eine Arbeit ausgeführt wird oder
ausgeführt werden soll.
Die Auswahl der Bank von oberen Registern oder der Bank von unteren Registern der Doppelregisterbank
210 erfolgt mit Hilfe der Kippschaltung 217 (im folgenden auch als Kippschaltung UL bezeichnet). Wenn die
Kippschaltung UL auf den Digitalwert 1 gesetzt wird, wird die obere Registerbank gewählt. Die Kippschaltung
UL wird auf den den Digitalwert 1 gesetzt, wenn das Signal EVi*, welches den Eintritt eines Ereignisses
EVi meldet, vorhanden ist. Dieses Verfahren ermöglicht,
die Register der unteren Bank für die Ausführung der gewöhnlichen Tasks und die Register der oberen
Bank für die Tasks EVi zu verwenden. Deshalb ist es während des Eintritts eines vorrangigen Ereignisses EVi
nicht erforderlich, die Daten der unterbrochenen gewöhnlichen Task zu schützen, die in der unteren Registerbank
sind. Um die unterbrochene gewöhnliche Task wieder aufzunehmen, wird die Kippschaltung UL auf
Null zurückgestellt. Sie wählt die untere Registerbank aus, in der die Daten der gewöhnlichen Task aufbewahrt
sind, die während der Unterbrechung vorhanden waren. Indem die Kippschaltung UL in den Zustand 1 gesetzt
wird, wird das Signal EVi gesperrt, welches das Vorhandensein
eines Ereignisses EV| an dem Eingang der UND-Schaltung 216 meldet und dadurch bewirkt, daß
eine Task EVi durch eine andere Task EV, nicht unterbrochen
werden kann. Die Kippschaltung 215 (die auch als Kippschaltung EE bezeichnet wird) ermöglicht, die
Unterbrechungen EVi zu maskieren. Ihr Wert kann durch ein Mikroprogramm verändert werden; der Digitalwert
0 der Kippschaltung 215 verhindert die Übertragung des Signals EVu über die UND-Schaltung 216,
damit die Task, die gerade ausgeführt wird, nicht unterbrachen wird.
Das Register 209 (auch als Register ADNR bezeichnet) ist ein Schutzregister für die Nummer des Peripheriegeräteanschlusses,
wenn die Task, die gerade an dem entsprechenden Anschluß verarbeitet wird, unterbrochen
wird. Es wird gleichzeitig mit dem Register DNR durch die Hardware geladen. Wenn die unterbrochene
Task wiederaufgenommen wird, wird mit dem Inhalt des Registers ADNR das Register DNR durch die Hardware
in Ausgangsstellung gebracht, was den Wiederan-Schluß des Peripheriegeräteanschlusses ermöglicht, wobei
die Wiederaufnahme der unterbrochenen Task das Zurückstellen der Kippschaltung UL auf Null erfordert.
Das Register 212 (auch als Register SP bezeichnet) ist der arithmetischen und logischen Einheit 211 zugeordnet.
Es gestattet, während einer Operation in der arithmetischen und logischen Einheit ein Resultat Null oder
einen Überlauf zu identifizieren.
Die Schnittstellensteuereinheit 235 besteht hauptsächlich aus einem Codierer 221, der mit Hilfe einer
digitalen Verknüpfungsschaltung hergestellt ist und ermöglicht, die entsprechende Gatternummer jedes Signals
EVi zu identifizieren, und der die Priorität dem Signal EV1 zuweist, daß an den DAI- oder ΉMER-Gattern
mit der niedrigsten Nummer (das Γ/AiER-SignaI
EVi hat die niedrigste Priorität) eines Decoders 222 für
den Inhalt des Registers DNR vorhanden ist, um das DAl-, PSI- oder 7/AfE/?-Gatter auszuwählen, und aus
einer ODER-Schaltung 220, die der Verarbeitungseinheit MPU das Vorhandensein eines Signals EVi meldet
Das T/AfEÄ-Gatter 236 hat hauptsächlich die Aufgabe,
aus dem Taktgeber 230 zu regelmäßiger Zeit ein Signal EV| zu liefern.
Die Signale EVj werden zu dem Codierer 221 über-
Die Signale EVj werden zu dem Codierer 221 über-
tragen, der in Binärform eine dem Signal EV, mit der
höchsten Priorität entsprechende Codegruppe CEV1
abgibt. Diese Codegruppe CEV\ wird in das Register DNR geladen.
Wenn ein oder mehrere Signale EV\ an einem DAI- oder 77A/£7?-Gatter vorhanden sind, liefert die ODER-Schaltung
220 ein Signal EVu das, wenn die U N D-Schaltung
216 freigegeben ist, in ein Signal EV\ * zur Hardware-Unterbrechung der gerade ausgeführten Task umgewandelt
wird, wenn eine vorhanden ist, und die Task EV] auslöst, die durch die sich in dem Register DNR
befindende Codegruppe CEV\ angegeben wird.
Die Signale EVi werden zu dem Eingang der ODER-Schaltung
224 übertragen, die sich in dem Γ/ΜΕΛ-Gatter
236 befindet, dessen Ausgang mit dem Eingang der UND-Schaltung 223 verbunden ist und deren anderer
Eingang durch das Signal »SELp+n« (Signal für die
Auswahl des Γ/ΜΕΛ-Gatters, das von dem Decoder 222
kommt) freigegeben wird. Der Ausgang der UND-Schaltung 223 liefert ein Signal UEV15, welches in der
UND-Schaltung 214 durch den Inhalt eines Mikrobefehls des Registers R0R getestet wird. Das PSAGatter
233 erzeugt ein Signal EV2 hauptsächlich dann, wenn ein
Kanalprogramm wartet oder wenn ein Befehl in der Zentraleinheit wartet Das PS/-Gatter empfängt dann
an dem Eingang der ODER-Schaltung 231 die Signale CPW und INW, die an dem Eingang der UND-Schaltung
232 freigegeben werden, wenn das PSAGatter durch den Decoder 222 ausgewählt wird.
Zusammenfassend kann gesagt werden, daß nur eine einzige Unterbrechung der Hardware vorhanden ist, die
durch das Erscheinen zumindest eines Signals EV) an
einem der DAI- und 77M£7?-Gatter bewirkt wird. Wenn
die Unterbrechung auftritt und wenn sie nicht maskiert ist, bewirkt sie, daß die Kippschaltung 217 auf 1 gesetzt
wird, daß der Inhalt des Registers (DNR)OOH in dem
Register (ADNR)209 aufbewahrt wird, daß die Codegruppe
CEV\ in das Register 208 übertragen wird, daß die Adresse für die Rückkehr zu der unterbrochenen
gewöhnlichen Task in den Registers Re und Rf (nicht
dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 aufbewahrt wird, daß der Inhalt des
Registers 212 in dem Register R 7 (nicht dargestellt) der Bank von oberen Registern eier Doppelregisterbank 210
aufbewahrt wird, die unbedingte Verzweigung durch das Mikrobetriebssystem MI0S zu der Startadresse der
Task EVi, die aus dem Inhalt des Registers 208 berechnet wird, wobei der Ablauf der Task EVi unter der
Steuerung des Mikrobetriebssysttem M/05 erfolgt. Die Rückkehr zu der unterbrochenen Task erfolgt ab dem
Mikrobefehl RAI (Rückkehr nach Unterbrechung), der in dem A.biauf der Task EV* an^troffen wird und das
Zurückstellen der Kippschaltung 217 auf Null, die Übertragung des Inhalts des Registers 209 in das Register 208
und die unbedingte Verzweigung zu der Adresse für die Rückkehr zu der gewöhnlichen Task, die unterbrochen
worden ist, bewirkt, welche sich in den Registern Re und
Rf der Bank von oberen Registern befindet, wobei der Inhalt des Registers 212 durch den Inhalt des Registers
R 7 der Bank von oberen Registern der Doppelregisterbank 210 durch einen dem Mikrobefehl RAI vorangehenden
Mikrobefehl in Ausgangsstellung gebracht wird. Die verschiedenen Operationen, die durch die Verarbeitungseinheit
MPU ausgeführt werden, werden mit Hilfe von Mikrobefehlen verarbeitet die sich in dem
Speicher 202 befinden. Das Format dieser Mikrobefehle ist fest und hat 16 Bits, von denen die vier ersten Bits die
Operationscodegruppe darstellen. Die Operationscodegruppe kann eine der folgenden Bedeutungen haben: sie
kann logische oder arithmetische Operationen oder Eingabe/Ausgabe-Operationen oder Schreib/Lese-Operationen
in dem Speicher oder eine bedingte oder unbedingte Verzweigung mit oder ohne Schutz von Registerinhalten
oder einen Zustandsübergang angeben, der an einer Task für das Task-Management auszuführen
ist.
F i g. 3 zeigt in vereinfachter Form die Zustandsübergänge von verschiedenen Tasks, wobei die Zustände wie folgt definiert sind:
F i g. 3 zeigt in vereinfachter Form die Zustandsübergänge von verschiedenen Tasks, wobei die Zustände wie folgt definiert sind:
Man kann jeder Task in jedem Zeitpunkt eine Zustandsvariable zuordnen, die als vorhandener Ausführungszustand
bezeichnet wird. Der vorhandene Ausführungszustand kann sein: in der Ausführung begriffen,
unterbrochen oder inaktiv. Der Zustand »in der Ausführung begriffen« bedeutet, daß die Task gerade ausgeführt
wird, wobei die Informationen, die durch den Ablauf der Task erzeugt werden, dann in den Registern der
Gerätesteuerung PCU vorhanden sind. Der Zustand »unterbrochen« wird hervorgerufen, wenn die Task die
Kontrolle über die Gerätesteuerung verliert, weil eine andere Task mit höherer Priorität in den Zustand »in
der Ausführung begriffen« versetzt worden ist. Die unterbrochene Task wird zu einem späteren Zeitpunkt
wieder gestartet. Die Informationen, die in den Registern während der Ausführung der Task vor ihrer Unterbrechung
erzeugt werden, werden aufbewahrt (d. h. geschützt) und die Inhalte dieser Register werden in
Ausgangsstellung gebracht, wenn die Task wieder gestartet wird. Der Zustand »inaktiv« gilt für eine Task, die
noch nicht gestartet worden ist oder die beendet ist. Es ist auch möglich, jeder gewöhnlichen Task und in jedem
Zeitpunkt eine Zustandsvariable zuzuordnen, die als angeforderter oder folgender Ausführungszustand bezeichnet
wird, welcher zu einem der folgenden drei Fälle gehören kann: der Zustand »bereit«, der Zustand »wartend«
oder der Zustand »nicht geplant«. Diese Ausführungszustände sind nur für die gewöhnlichen Tasks vorhanden
und werden durch den zugeordneten Task-Steuerblock oder MCB gesteuert. Eine Task ist in dem Zustand
»bereit«, wenn eine Anforderung ergangen ist, sie sobald wie möglich auszuführen. Der Block MCB, der
diese Task steuert, ist in eine mit RQ bezeichnete Schlange eingereiht. Eine Task ist in dem Zustand »wartend«,
wenn eine Anforderung mit dem Ziel ergangen ist, diese Task am Ende einer während der Anforderung
festgelegten Zeit auszuführen; diese Task bleibt in dem Wartezustand, solange das Zeitintervall nicht abgelaufen
ist Der Block MCB, der diese Task steuert, wird in eine mit TQ bezeichnete TIMER-Warteschlange eingereiht:
Wenn die Zeit abgelaufen ist. bewirkt das Mikrobetriebssystem MI0S, daß er in die Warteschlange RQ
der Zustände »bereit« eingereiht wird. Wenn eine Task weder in dem Zustand »bereit« noch in dem Zustand
»wartend« ist, wird sie ais in dem Zustand »nicht geplant« befindlich bezeichnet Insbesondere geht eine
Task, die die Schlange RQ verläßt, um in den vorhandenen
Ausführungszustand »in der Ausführung begriffen« überzugehen, in den Zustand »nicht geplant« über. Die
folgenden Zustände einer gewöhnlichen Task sind im Innern des zugeordneten Blockes MCB sichtbar. Sie
können durch eine andere Task oder durch die Task selbst oder durch eine Entscheidung des Mirkobetriebssystem
M10S modifiziert werden, wobei in den beiden ersten Fällen ein Task-Management-Mikrobefehl ausgeführt
worden ist.
In F i g. 3 werden die gestrichelt dargestellten Über-
In F i g. 3 werden die gestrichelt dargestellten Über-
gänge durch das Mikrobetriebssystem MI0S oder
durch die Hardware für die Tasks EVl festgelegt Die
mit ausgezogenen Linier, dargestellten Übergänge werden durch Mikrobefehle ausgeführt, die folgende Bedeutungen haben. Der Mikrobefehl RAI ist der letzte
Mikrobefehl einer Task EVf, der Ausführungszustand geht von dem Zustand »in der Ausführung begriffen« in
den Zustand »inaktiv« über; er erlaubt, die unterbrochene Task wieder aufzurufen, nachdem die Unterbrechung
ausgeführt worden ist. Der Mikrobefehl »TERMINATE« ist der letzte Mikrobefehl, der durch
eine Task ausgeführt wird, bei welcher es sich nicht um eine Task EV\ handelt; der vorhandene Ausführungszustand geht von dem Zustand »in der Ausführung begriffen« in den Zustand »inaktiv« über; der folgende Ausfühi ungszustand, der nur für die gewöhnlichen Tasks
festgelegt ist, wird nicht modifiziert.
Die folgenden Mikrobefehle modifizieren nicht den Zustand »in der Ausführung begriffen« einer Task, die
sie ausführt Sie modifizieren den folgenden Zustand einer gewöhnlichen Task, die durch ihren Block MCB
festgelegt wird. Der Mikrobefehl »ACTIVATE« ermöglicht, den Wert des folgenden Ausführungszustands einer Task in den Zustand »bereit« zu bringen, und zwar
unabhängig von dem Zustand, in welchem sie sich vor diesem Mikrobefehl befindet Der Mikrobefehl RQT0
modifiziert den Wert des folgenden Zustands der betreffenden Task in folgender Weise:
— wenn der augenblickliche Wert des folgenden Ausführungszustands »nicht geplant« oder »wartend«
ist, geht der Wert des folgenden Zustands auf »warcend« über und der Zeitpunkt, der den Übergang
einer Task in den Zustand »bereit« festlegt wird in ihrem Block MCB gespeichert und durch das Mikrobetriebssystem MI0S benutzt;
— wenn der augenblickliche Wert des folgenden Ausführungszustands in dem Zustand »bereit« ist, wird
sein Wert nicht modifiziert.
Der Mikrobefehl »SUSPEND«, gestattet, den Wert
des folgenden Ausführungszustands in den Zustand »nicht geplant« zu bringen, und zwar unabhängig von
dem Zustand, in welchem er sich vor diesem Mikrobefehl befindet.
Es gibt einen in Fig.3 nicht dargestellten Mikrobefehl STDA, der alle Tasks eines Firmwaresystems AFP
annuliert.
Für das Unterbrechungssystem der Tasks gibt es zwei Klassen, von denen die eine den Unterbrechungen entspricht, die durch den Eintritt von Ereignissen EV\ hervorgerufen werden, und von denen die andere dem Auslösen der gewöhnlichen Tasks entspricht. Es gibt nur
eine Stufe der Unterbrechung durch die Hardware, die den Tasks EVi vorbehalten ist. Allgemein können alle
Tasks durch diese Stufe zwar unterbrochen werden, die Ausführung einer Task EVi kann jedoch nicht durch
eine andere Task EVi derselben Stufe unterbrochen
werden, wobei dieses Verbot durch die Hardware erfolgt, wie es in F i g. 2 die Zusammenschaltung der Kippschaltung 217 und der UND-Schaltung 216 zeigt. Wenn
nämlich durch das Aufrufen einer Task EVi die Kippschaltung UL auf den Digitalwert 1 gesetzt worden ist
und ihr Ausgang UL Null ist, wird der Eingang der UND-Schaltung 216 nicht mehr freigegeben, so daß jedes Erscheinen eines neuen Signals EVi somit auf den
Ablauf der in der Ausführung begriffenen Task EVi
keinen Einfluß hat, Es ist auch möglich, das Erscheinen
der Signale EVi mit Hilfe eines Mikrobefehls zu maskieren, wenn die EU-Kippschaltung 215 auf dem Digitalwert Null ist oder in jedem DAZ-Gatter durch eine nicht
dargestellte Kippschaltung El, die auf den Digitalwert
0 gesetzt ist Die andere Unterbrechungsstufe ist eine Firmware-Stufe. Jede gewöhnliche Task kann zwar
durch eine gewöhnliche Task mit höherer Priorität oder durch eine Task EVj unterbrochen werden, eine gewöhnliche Task kann jedoch durch Mikrobefehle unun-
terbrechbar gemacht werden; der Mikrobefehl MSKP erlaubt alle Task mit Ausnahme der Tasks EVi zu maskieren, so daß die in der Ausführung begriffene Task
dann vorübergehend als Task der Stufe 2 und als durch eine andere gewöhnliche Task nicht unterbrechbare
is Task angesehen werden kann. Die Demaskierungsoperation erfolgt durch einen Mikrobefehl UMSP. Es besteht auch eine Möglichkeit eine Task EV2 zu maskieren, indem ein Mikrobefehl MSKE ausgeführt wird, wobei die Demaskierung mit Hilfe eines anderen Mikrobe-
fehls EAfSEerfolgt
Das Funktioiisdiagramm von F i g. 4 faßt in schematischer Form die durch eine Hardware-Unterbrechung
EV| hervorgerufenen Aktionen zusammen.
Geht man in dem Diagramm fortschreitend von oben
nach unten, so ergibt sich folgende Verkettung der Operationen zum Unterbrechen der Task, die in der Ausführung begriffen ist sofern es eine solche gibt, und folgende Analyse der Warteschlangen von Tasks auf jeder
Prioritätsstufe im Hinblick auf das Auslösen einer Task
mit höherer Priorität, wenn es eine solche gibt. Ein Ereignis EVi kann aus einem C /-Gatter oder aus einem
Taktimpuls stammen, der zu einem festgelegten Zeitpunkt durch das 7WE/?-Gatter 236 von F i g. 2 geliefert
wird, beispielsweise jede Millisekunde. Wenn das Ereig-
nis EVi aus einem Ä4/-Gatter stammt wird die in der
Ausführung begriffene Task, wenn es eine solche gibt und wenn sie unterbrechbar ist, unterbrochen und die
dem entsprechenden Peripheriegeräteanschluß DA zugeordnete Task EVi wird in dem Schritt 401 ausgelöst
bis zur Ausführung des letzten Mikrobefehls RAI, der die Rückkehr zu der unterbrochenen Task bewirkt,
wenn es eine solche gab. Das Ereignis EVi kann auch aus dem TIMER-Gauer stammen. In diesem Fall wird
die Γ/MEÄ-Warteschlange wieder fortgeschrieben. Bei
dieser Fortschreibung wird festgestellt, ob die Weckzeit des ersten Blocks MCB in der TWEÄ-Schlange gekommen ist. Schritt 402; wenn ja, wird dieser Block MCB in
die Schlange der Zustände »bereit« eingereiht, Schritt 403, und die Weckzeit des Blocks MCB, der folgt, wird
wieder fortgeschrieben, Schritt 404; wenn nein, handelt es sich um die Weckzeit des ersten Blocks MCB, die
wieder fortgeschrieben wird. Wenn die Fortschreibung der Γ/Λ/EÄ-Warteschlange ausgeführt ist, testet ein Mikrobefehl den Eingang der UND-Schaltung 214 von
Fig.2, um festzustellen, ob nicht zumindest ein Signal
EV2 an einem der DAI- oder PS/Gatter vorhanden ist;
danach wird die Warteschlange der Task EV2 abgetastet Schritt 405. Wenn ein Signal EV2 vorhanden ist,
wird die entsprechende Task EV2 durch das Mikrobe
triebssystem MIOS ausgelöst, Schritte 406 und 407. Ein
Signal EV2 kann zu einem räumlichen Kanal einer Schnittstelle PSI gehören, der die Zentraleinheit mit der
Gerätesteuerung oder mit einem £>/4/-Gatter verbindet,
welches meldet, daß ein Ereignis in der Zentraleinheit
oder in einen Peripheriegerät eingetreten ist.
Wenn der letzte Mikrobefehl einer Task EV2 ausgeführt ist, wird die Abtastprozedur der Task EV2 wieder
begonnen, urr· festzustellen, ob es nicht eine auszulösen-
de andere Task FVi gibt Wenn es eine solche Task gibt,
wird das vorhergehende Verfahren wiederaufgenommen, wenn nicht, werden die verschiedenen Prioritätsstufen der gewöhnlichen Tasks abgetastet, Schritt 407,
indem mit der höchsten Stuft in der Reihenfolge abnehmender Prioritätsnummern begonnen wird und, wenn
eine gewöhnliche Task auf einer Stufe angetroffen wird, wird dieselbe ausgelöst Schritt 408, und läuft Befehl für
Befehl bis zu dem Befehl »TERMINATE« ab, welcher erlaubt, die Abtastprozedur der Tasks FVj wieder aufzunehmen.
Selbstverständlich ist es möglich, daß eine gewöhnliche Task durch das Auftreten eines Signals EV\ unterbrochen
wird. In diesem Fall wird die Prozedur in dem Schritt 400 oben in dem Diagramm wieder aufgenommen.
Die Abtastung der Warteschlangen, die soeben beschrieben worden ist und die in der Gerätesteuerung
PCU ausgeführt wird, wird als Zuteilungsmechanismus der Tasks oder »Dispatcher« bezeichnet.
Die F i g. 5 bis 8 zeigen die Tabellen der Parameter, die sich in dem Speicher 202 von F i g. 2 befinden und die
die für das Task-Management benutzten Bestandteile der Firmware bilden.
Fig.5 zeigt das Format eines Steuerblocks DACB
eines Peripheriegeräteanschlusses. Ein Algorithmus erlaubt das Wiederauffinden der Adresse des zugeordneten
Blocks DACBanhand der DAAGatter-Nummer. Jeder
Block DACB nimmt einen Raum des Speichers 202 ein und kontrolliert die Operationen an dem zugeordneten
DAI-GiUa. Das Wort 0 enthält die mit MSAx bezeichnete
absolute Startadresse der Task FVi. Das Wort
1 enthält die absolute Adresse von Daten, die durch das Firmwaresystem AFP angegeben sind und die für die
Ausführung einer Task EV\ erforderlich sind. Das Wort
2 enthält die absolute Adresse des Anfangs der Task EV^. Das Wort 3 enthält die absolute Adresse von durch
das Firmwaresystem AFP angegebenen und für die Ausführung einer Task EV2 erforderlichen Daten. Das
Wort 4 besteht aus einem mit FLC bezeichneten ersten Byte, welches die erste Digitalkanalnummer enthält, und
aus einem zweiten Byte, welches die Anzahl der dem DA /-Gatter zugeordneten Digitalkanäle angibt (vgl. das
Glossar für die Definition eines Digitalkanals). Das Wort 5 enthält die absolute Adresse FMCBA des dem
DA /-Gatter zugeordneten ersten Blocks MCB. Das Byte 1 des Wortes 6 oder MCBNB enthält die Anzahl
von dem DAAGatter zugeordneten Blöcken MCB. Das
Byte 2 des Wortes 6 enthält die Bits E und 5 des Zustands des Peripheriegeräteanschlusses. Wenn das Bit E
gleich 1 ist, ist das Ereignis EVj des DAAGatters maskiert.
Wenn das Bit S gleich 1 ist. werden sämtliche Operationen an dem £M/-Gatter angehalten (es kann
keine zugeordnete Task mehr ablaufen).
F i g. 6 zeigt das Format eines Tasksteuerblocks MCB.
Jeder Block nimmt einen Raum des Speichers 202 von F i g. 2 ein und enthält die Informationen, die für das
Management und die Ausführung der zugeordneten Task erforderlich sind. Ein Block MCB besteht aus acht
Speicherwörtern, von denen jedes eine Abmessung von 16 Bits hat. Die Bits 0 bis 3 des Wortes 0 legen die eo
Nummer des DAAGatters fest, mit welchem der Block
MCB verb nden ist. Die Bits 8 bis 10 des Wortes 0 legen
die Prioritätsstufe der Task fest, der der Block MCB zugeordnet ist. Die Bits 12 und 13 bzw. 7K?und /?(?des
Wortes 0 legen den folgenden Ausführungszustand der Task fest. Das logische Produkt TQ ■ RQ hat folgende
Bedeutungen:
TQ- RQ= 00; für die Task ist kein Zustand vorgesehen.
TQ ■ RQ = 01; die Task wartet in der TIMER-Warteschlange
TQ.
TQ · RQ - 10; die Task ist in dem Zustand »bereit«
in der Schlange RQ der »bereitw-Zustände.
Die mit NLPund PLPbezeichneten Wörter 1 und 2 werden weiter unten beschrieben.
Das Wort 3 hat für die vorliegende Erfindung keine Bedeutung.
Die mit NLPund PLPbezeichneten Wörter 1 und 2 werden weiter unten beschrieben.
Das Wort 3 hat für die vorliegende Erfindung keine Bedeutung.
Das mit ABSA bezeichnete Wort 4 gibt die Λη-fangsadresse
der zugeordneten Task an.
Das Wort 5 oder ABWZA bezeichnet eine absolute Arbeitszonenadresse, die von der Task als Basisadresse benutzt wird.
Das Wort 5 oder ABWZA bezeichnet eine absolute Arbeitszonenadresse, die von der Task als Basisadresse benutzt wird.
Das mit TOM bezeichnete Wort 6 wird weiter unten beschrieben.
Das Byte 1 des Wortes 7 hat für die vorliegende Erfindung keine Bedeutung.
Die Bits 8 bis 15 des Wortes 7 geben ein mit YRE- DY bezeichnetes Feld an, welches die Gründe bezeichnet, aus denen die zugeordnete Task den Zustand geändert hat. Es wird in ein nicht dargestelltes Register R\ der Doppelregisterbank 210 von F i g. 2 geladen, wenn die Task gestartet wird.
Das Bit 11 oder das Bit A des Wortes 7 gibt an, daß der folgende Ausführungszustand der Task durch einen Mikrobefehl »ACTIVATE«, der durch das an diesen Block MCB angeschlossene Firmwaresystem AFP erzeugt worden ist, in den Zustand »bereit« übergangen ist.
Die Bits 8 bis 15 des Wortes 7 geben ein mit YRE- DY bezeichnetes Feld an, welches die Gründe bezeichnet, aus denen die zugeordnete Task den Zustand geändert hat. Es wird in ein nicht dargestelltes Register R\ der Doppelregisterbank 210 von F i g. 2 geladen, wenn die Task gestartet wird.
Das Bit 11 oder das Bit A des Wortes 7 gibt an, daß der folgende Ausführungszustand der Task durch einen Mikrobefehl »ACTIVATE«, der durch das an diesen Block MCB angeschlossene Firmwaresystem AFP erzeugt worden ist, in den Zustand »bereit« übergangen ist.
Das Bit 12 oder Bit Tdes Wortes 7 gibt an, daß ein
Mikrobefehl RQT0d\e Task in den Wartezustand
versetzt hat, indem er ihr für den Übergang in den Zustand »bereit« eine Verzögerung gegeben hat,
und daß die Verzögerung jetzt abgelaufen ist.
Die übrigen Bits des Feldes YREDY geben weitere Ereignisse an. So können sie anzeigen, daß ein Kanalprogramm
von der Zentraleinheit CPU an einen bestimmten Digitalkanal abgegeben worden ist, wobei das
Firmwaresystem AFP über dieses Ereignis unterrichtet wird und die erste Kanalbefehlseintragung CCE dieses
Kanalprogramms zu verarbeiten beginnt; die Gerätesteuerung PCU wird über dieses Ereignis durch das Signal
CPW an einem PSAGatter 233 von F i g. 2 unterrichtet. Die initialisierungssequenzen eines Programms
sind in der deutschen Patentanmeldung P 24 55 529.5 beschrieben, die für die Priorität der französischen Patentanmeldung
Nr. 7342 714 in Anspruch genommen worden ist. Es gibt auch noch ein weiteres Bit des Feldes
YREDY, welches meldet, daß eine ABBRUCH-Ursache
(vgl. das Glossar für die Definition) durch das Mikrobetriebssystem MlOS festgestellt worden ist und daß von
dem Firmwaresystem AFP verlangt wird, die Operationen
aufzugeben, d. h. das gerade ablaufende Kanalprogramm sofort anzuhalten.
Alle Informationen, die in einem Block MCB enthalten sind, werden allein mit Hilfe der Task-Management-Mikrobefehle
modifiziert werden, die den Block über seine absolute Adresse adressieren werden.
F i g. 7 zeigt eine Zone des Speichers 202 von F i g. 2,
welche die Formate der Wörter CPCW, TQHP und LCM angibt, deren Adressen im Speicher festgelegt
sind. Das Wort CPCWgibt den Zustand der Task an, die in der Gerätesteuerung PCU'in der Ausführung begriffen
ist. Die Zone Λ/PCbesteht aus drei Bits, die von dem
Bit 0 bis zu dem Bit 2 gehen, und gibt die Stufe der Task
an, die in der Ausführung begriffen ist Ihre Abmessung
von drei Bits erlaubt somit, sechs Stufen von gewöhnlichen Tasks festzulegen (0 ist nicht bestimmt, 1 ist dem
Ereignis EV1 zugeordnet). Es ist offensichtlich, daß,
wenn die Zone NPCn Bite enthielte, man 2"—2 Stufen
von gewöhnlichen Tasks festlegen könnte. Das Bit M gibt an, daß die Sequenz maskiert ist d. h. daß die Task,
die in der Ausführung begriffen ist vorübergehend der Stufe 2 angehört Das Bit L gibt an, daß die Task die
Stufe 2 hat Das Bit D gibt an, daß der »Dispatcher« in der Ausführung begriffen ist Das Bit /»gibt an, daß eine
Task in der Ausführung begriffen ist
Es ist festzustellen, daß die Bits M, L oder D Tasks mit
Priorität entsprechen.
Das als »flag« oder Kennzeichen bezeichnete Bit F gibt an, daß zumindest eine Task seit dem letzten Übergang in den Dispatcher in die Warteschlange der »bereit«-Zustände gegangen ist Dieses Ereignis kann die
Priorität der auszuführenden Tasks wieder in Frage stellen.
Das Wort TQHP legt den Kopf der TIMER-Warteschlange fest Wenn die TIMER-Warteschlange leer
ist, ist der Inhalt des Wortes TQHP Null. Die TIMER-Warteschlange erlaubt die Tasks in der Reihenfolge
ihrer Weckzeit zu bringen, wobei diese Warteschlange Prioritätsstufen nicht berücksichtigt.
Das Wort LCM legt die maximale Anzahl von Digitalkanälen in der Gerätesteuerung PCU fest.
Fig.8 zeigt das Format einer Tabelle des Dispatchers. Jeder Prioritätsstufe ist eine Tabelle zugeordnet,
die sich in einer Zone des Speichers 202 von F i g. 2 befindet; ihre Adresse wird aus der Nummer der entsprechenden Stufe berechnet Sie enthält eine erste Zone RQHP, welche den Kopf der Schlange der Bereit-Zustände mit dieser Stufe angibt, eine zweite Zone RQTP,
die den Schwanz der Schlange der Bereit-Zustände mit dieser Stufe angibt, eine dritte Zone, welche ein Bit B
enthält das angibt, daß eine Task mit dieser Stufe zwar begonnen, aber noch nicht beendet worden ist. Der Mikrobefehl TERMINATE ist nicht ausgeführt worden.
Die Zonen 4 und die folgenden Zonen sind Schutzzonen für die Inhalte der Register in der Gerätesteuerung
PCU, wenn die Task durch eine Task mit höherer Prioritätsstufe unterbrochen wird. So bewahrt das Feld DAN
den Inhalt des DNÄ-Registers 208 von Fi g. 2 auf, das
Feld SP bewahrt den Inhalt des SP-Registers 212 von F i g. 2 auf, in welches die Operationsergebnisse eingereiht sind, die fünfte Zone bewahrt die Adresse des
nächsten Befehls auf, der in dem Zeitpunkt der Unterbrechung durch die Task mit höherer Priorität auszu-
führen war, die sechsten Zonen und die folgenden Zonen erlauben, den Inhalt der verallgemeinerten Register
der unteren Registerbank der Doppelregisterbank 210 von F i g. 2 aufzubewahren (allein die gewöhnlichen
Tasks können unterbrochen sein und arbeiten in der unteren Bank).
F i g. 9 zeigt eine feste Tabelle ALCTm dem Speicher 202 von Fig.2, die als Schnittstelle zwischen dem Mikrobetriebssystem MIOS und der den Peripheriegeräten zugeordneten Firmware dient. Jedem Digitalkanal
LC ist eine Tabelle zugeordnet, die die Nummer der Schnittstelle DAI enthält, mit der dieser Digitalkanal LC
verbunden ist, und die Adresse des ersten Blocks MCB, der diesem Digitalkanal entspricht.
Die Fig. 10a, b, c und die Fig. 11a, b, c zeigen die
Schlangen RQ bzw. TQ. Das sind Zweirichtungsketten, d. h. daß jeder in der Kette enthaltene Block MCB die
Kennzeichen enthält, welche erlauben, ihn mit dem ihm
vorangehenden oder mit dem ihm folgenden Block
MCB zu verbinden. Diese beiden Ketten sind dadurch
gekennzeichnet daß sie beide einen Zeiger benutzen, um den ersten Block MCB zu bezeichnen, der aus der
Kette entnommen werden kann. Durch den Inhalt der Zeiger kann angegeben werden, ob die Kette zumindest
einen Block MCB enthält Wenn ein Block MCB in eine zuerst leere Kette eingegeben werden soll, gibt der Inhalt des Zeigers die Adresse dieses Blocks MCB an.
Wenn ein Block MCB in eine Kette hineingeht die bereits mehrere Blöcke MCB enthält sollen die Zeiger
NLPund PLP, die in dem ersten und zweiten Wort eines
Blocks MCB enthalten sind, die Werte annehmen, welche für NLPerlauben, die Adresse des folgenden Blocks
MCB wieder aufzufinden, und für PLP erlauben, die Adresse des vorangehenden Blocks MCB wieder aufzufinden. Wenn ein Block AiCS eine Kette verläßt, soll der
Wert des Zeigers durch die Adresse des Blocks MCB, der dem die Kette verfassenden Block MCB in der Ausgabereihenfolge folgt verändert werden, und der Wert
PLP des Blockes MCB, der folgt, soll wieder auf den
neuesten Stand gebracht werden.
Fig. 10a zeigt eine Darstellung der Art der Verkettung, die für die Warteschlange RQ der Bereit-Zustände
einer Stufe N benutzt wird. Die Ausgabe eines Blockes MCB folgt der Regel, daß, wer als erster eingegeben
wurde, als erster ausgegeben wird, d. h„ daß für eine
bestimmte Stufe N der erste aktivierte Block MCB als erster ausgeführt wird. Diese Schlange ist dadurch gekennzeichnet, daß sie einen Kopfzeiger RQHP und einen Schwanzzeiger RQTP enthält. Diese Zeiger nehmen eine Speicherzone ein, die durch die ersten und
zweiten Wörter einer Tabelle der Stufe N des Dispatchers festgelegt ist, wie F i g. 8 angegeben. RQHP bezeichnet den ersten Block MCB der Schlange und
RQTPden letzten. Jeder Block AiCS ist mit dem vorangehenden Block und mit dem folgenden Block in der
oben bereits angegebenen Weise zwar verbunden, der Wert PLP des ersten Blocks AfCS und der Wert NLP
des letzten gibt jedoch die Adresse des Zeigers RQHP in der Tabelle des Dispatchers der Stufe Nan. Fi g. 10b
zeigt den Fall, in welchem kein Block MCB in der Schlange mit dieser Stufe verkettet ist, in welchem Fall
der Wert von RQHP seine Adresse in der Tabelle des Dispatchers mit der Stufe N und der Wert von RQTP
die Adresse von RQHP angibt. Fi g. 10c zeigt den Fall, in welchem ein einziger Block MCB in der Schlange
verkettet ist. RQHP gibt dann die Adresse dieses Blokkes MCB, und NLPdie Adresse von RQHPan; PLPgM
dann die Adresse von RQHP an und RQTP gibt die Adresse des Blocks AfCB an.
Fig. 1 la zeigt eine Darstellung einer Verkettungsart
eines Blocks MCB in einer Γ/MEÄ-Warteschlange TQ.
Diese Warteschlange ist kreisförmig und hat somit weder einen Kopf- noch einen Schwanzblock MCB. Die
Blöcke AfCS sind in der Reihenfole des Weckens angeordnet, die in jedem Block AfCS in dem Wort 6 oder
7OAf (vgl. F i g. 6) angegeben ist. Jeder Block AfCS ist
mit dem ihm vorangehenden Block AfCB durch die Angabe PLP des Wortes 2 des Blockes AfCB und mit dem
ihm folgenden Block AfCB durch die Angabe NLP des
Wortes 1 des Blocks AfCB verbunden. Der Zeiger TQHP zeigt immer auf den Block AfCB, dessen Weckzeit am nächsten ist. Ein Block AfCB kann durch einen
Mikrobefehl »AKTIVATE« aus der 77M£7?-Warteschlange herausgezogen werden, wenn der Weckzeitpunkt gekommen ist oder bevor der Weckzeitpunkt gekommen ist; der Block MCB geht dann in die Schlange
der Bereit-Zustände. Der Block MCB wird aus der
Schlange TQ durch einen Mikrobefehl »SUSPEND« ausgegeben. In allen Fällen wird der Zeiger TQHP auf
die Adresse des Blocks MCB, der folgt, hinweisen, die in
dem Wort NLP des ausgegebenen Blocks MCB angegeben ist; der Wert PLP des Blocks MCB, der folgt, wird
mit dem Wert PLP des Worts PLP des abgegebenen Blocks MCB wieder auf den neuesten Stand gebracht
Wenn es nur einen einzigen Block MCB in der Schl&nge
TQ gibt, F ι g. 11 c wird der Inhalt des Zeigers TQHP bei
der Abgabe dieses Blocks MCB auf Null gestellt, was gewöhnlich angibt, daß die Schlange 7Qleer ist
Wenn irgendein Block MCB die Kette verläßt, wird
der Wert des Wertes NLPdes vorangehenden Blocks
AiCS zu dem Wert des Worts NLP des abgegebenen
Blocks MCB und der Wert PLP des folgenden Blocks MCB wird zu dem Wert des Worts PLP des abgegebenen
Blocks MCB.
Wenn ein Block MCB in die TIMER-Warteschlange
eingereiht ist und falls kein Block MCB in der Warteschlange
vorhanden ist, weis«, der Zeiger TQHP auf die
Adresse dieses ersten Blocks AfCS hin. Die Wörter NLP und PLP weisen dann auf sich selbst hin, F i g. 1 Ic. Wenn
weitere Blöcke MCB in der Γ/AfEK-Warteschlange
warten, wird dieser Block AfCS in Abhängigkeit von der Angabe des Inhalts in dem Wort 6 oder TOM des Blocks
MCB hinter dem Block AiCS eingereiht dessen Weckzeit
direkt unter ihm liegt Der Wert seines Wortes NLP nimmt den Wert des Wortes NLP des Blockes MCB an,
der ihm vorangeht und der Wert seines Wortes PLP nimmt den Wert des Wortes PLP des Blocks AfCS an,
der ihm folgt; der Wert des Worts NLP des Blocks AfCS, der ihm vorangeht, und der Wert des Worts PLP
des Blocks AfCS, der ihm folgt, werden an der Adresse
des Blocks AfCB geändert der gerade in die Kette eingegeben
worden ist
Die zeitliche Verteilung der Tasks, so wie sie in den Wechselwirkungsprinzipien des Mikrobetriebssystems
und der Tasks festgelegt und in dem Funktionsdiagramm von F i g. 4 dargestellt ist wird jetzt in der folgenden
Beschreibung ausführlich erläutert In dieser Beschreibung wird der dynamische Betrieb des Systems
mit Hilfe der Hardwaregerate und der Firmware (Mikroprogramme und Tabellen) erläutert die oben beschrieben
worden sind. Fig. 12 ist ein Diagramm, welches die Folge der Operationen zeigt, die während einer
Unterbrechung der Hardware auszuführen sind, d. h. wenn ein Ereignis EVi in einem Peripheriegeräteanschluß
oder in dem »TIMER« eintritt. Wenn die Kippschaltung 215 (Kippschaltung EE) von F i g. 2 nicht
durch ein Mikroprogramm auf NuI! gestellt worden ist,
wird jedes Signal EVi, das an einem der OAI- oder Γ/AfEÄ-Gatter von Fig.2 erscheint der Verarbeitungseinheit
MPU durch das Signal EVu an dem Ausgang
der ODER-Schaltung 220 von F i g. 2 gemeldet. Das Signal £V,S bewirkt, daß die gerade ablaufenden
Operationen durch die Hardware unterbrochen werden und daß die Hardware die Kippschaltung 217 (Kippschaltung
UL) von F i g. 2 auf den Digitalwert 1 setzt, die die Bänke von oberen Registern der Doppelregisterbank
210 von Fig.2 auswählt. Ab diesem Zeitpunkt
laufen alle Operationen in der oberen Bank ab. Sie bewahrt den Inhalt des Registers 204 (Register R0SAR)
von Fig. 2 in den Registern Λ μ und Ä15 (nicht dargestellt)
der oberen Registerbank der Doppelregisterbank sowie den gegenwärtigen Inhalt des Registers 208 (Register
DNR) von F i g. 2 in dem Register 209 (Register ADNR)auf und lädt dann das Register DNR mit seinem
neuen Wert und verzweigt zu einer festen Adresse in der Gerätesteuerung, bei welcher es sich um die Anfangsadresse
einer Af/OS-Prozedur handelt die die Unterbrechung der Hardware berücksichtigt Das Mikrobetrisbssystem
Af/0S liest dann in dem Schritt 1202 den Inhalt des Registers 208 von F i g. 2, welches über die
Datenleitung CEV\ geladen worden ist die den Codierer 221 mit dem Register DNR verbindet Das Register
DNR enthält dann die Nummer dss Gatters mit der höchsten Priorität unter allen denjenigen Gattern, die
ein Signal EVi ausgesandt haben. Ausgehend von dieser Nummer sucht das Mikrobetriebssystem MI0S in dem
Schritt 1203 eine Speicheradresse MS'A1 in dem Peripheriegeräteanschlußsteuerblock
DACB, der dem ausgewählten DAI-Gatter entspricht.
Diese Speicheradresse bildet die Anfangsadresse der Task EVi, die in dem ausgewählten Peripheriegeräteanschluß
ausgeführt werden soll. In dem Schritt 1204 von Fig. 12 wird der Inhalt des Registers 212 (Register SP)
von F i g. 2 in einem besonderen Register R 7 (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank
210 von F i g. 2 aufbewahrt. In dem Schritt 1205 von Fig. 12 erfolgt eine Verzweigung zu der
Adresse MSAu Wenn die Task EV, keine Γ/AfEÄ-Task
EVi ist wird die Task EV1 des Firmwaresystems AFP,
die dem ausgewählten Peripheriegeräteanschluß entspricht, ausgelöst (Schritt 1207). Sie wird durch den Mikrobefehl
RAI beendet der die Kippschaltung UL auf . Null zurückstellt den Inhalt des Registers ADNR in
dem Register DNR in Ausgangsstellung bringt und eine indirekte Verzweigung zu den Registern Äfund Äpder
Bank von oberen Registern ausführt um die Adresse für die Rückkehr zu der unterbrochenen Task zu suchen.
Wenn es sich um eine TIMER-Task EV1 handelt, bestehen
die Schritte 1208 bis 1209 darin, festzustellen, ob nicht ein Block AfCS in der TIMER-Warteschlange (mit
Bezug auf Fig. 12) vorhanden ist, für den die Zeit gekommen ist, in die Warteschlange der Bereit-Zustände
überzugehen. In dem Schritt 1208 liest das Mikrobetriebssystem Af/05 das Wort TQHP (vgl. F i g. 7), welches
eine feste Adresse im Speicher hat. Wenn der Inhalt dieses Worts leer ist, übergibt das Mikrobetriebssystem
Af/0San den Schritt 1216 »Ist eine Task mit Priorität
in der Ausführung begriffen?«. Wenn der inhalt des Worts TQHP nicht leer ist dann liest das Mikrobetriebssystem
MI0S in dem durch TQHP(vgl. Fig. 11) angegebenen Block AfCS den Inhalt des Worts 6 oder
ΓΟΛί (Schritt 1209) (vgl. F i g. 6).
Wenn der Inhalt des Worts TOAf nicht Null ist, verringert das Mikrobetriebssystem MI0S den Inhalt des Worts TOAf um Eins und übergibt die Kontrolle an den Schritt 1216. Wenn der Inhalt des Worts TOM gleich 0 ist, bedeutet das, daß die Zeit gekommen ist, daß ein Block AfCS der 77AfE/?-Warteschlange in die Warteschlange der Bereit-Zustände übergeht und dieser Block AfCS wird von der Warteschlange TQ abgegeben und in die Schlange RQ der Bereit-Zustände entsprechend seiner Prioritätsstufe eingereiht. Das Bit 7"<?oder Bit 12 des Wortes Null des entsprechenden Blocks AfCß (vgl. Fig.6) wird in dem Schritt 1211 auf Null gestellt, während das Bit RQ oder Bit 13 des Worts 0 dieses Blocks AfCS in dem Schritt 1212 auf Eins gestellt wird. In dem Schritt 1213 wird das Bit Foder Kennzeichen-Bit des Worts CPCW(F i g. 7) auf 1 gesetzt, um anzuzeigen, daß eine Task in die Schlange der Bereit-Zustände übergegangen ist. In dem Schritt 1214 wird das Bit Tm dem Byte YREDY des entsprechenden Blocks AfCS auf 1 gesetzt. Das Management der TIMER-Warteschlange
Wenn der Inhalt des Worts TOAf nicht Null ist, verringert das Mikrobetriebssystem MI0S den Inhalt des Worts TOAf um Eins und übergibt die Kontrolle an den Schritt 1216. Wenn der Inhalt des Worts TOM gleich 0 ist, bedeutet das, daß die Zeit gekommen ist, daß ein Block AfCS der 77AfE/?-Warteschlange in die Warteschlange der Bereit-Zustände übergeht und dieser Block AfCS wird von der Warteschlange TQ abgegeben und in die Schlange RQ der Bereit-Zustände entsprechend seiner Prioritätsstufe eingereiht. Das Bit 7"<?oder Bit 12 des Wortes Null des entsprechenden Blocks AfCß (vgl. Fig.6) wird in dem Schritt 1211 auf Null gestellt, während das Bit RQ oder Bit 13 des Worts 0 dieses Blocks AfCS in dem Schritt 1212 auf Eins gestellt wird. In dem Schritt 1213 wird das Bit Foder Kennzeichen-Bit des Worts CPCW(F i g. 7) auf 1 gesetzt, um anzuzeigen, daß eine Task in die Schlange der Bereit-Zustände übergegangen ist. In dem Schritt 1214 wird das Bit Tm dem Byte YREDY des entsprechenden Blocks AfCS auf 1 gesetzt. Das Management der TIMER-Warteschlange
ist bereits Gegenstand der älteren deutschen Patentanmeldung P 23 48 822.4 der Anmelderin.
Das Mikrobetriebssystem MI0S überprüft danach in dem Schritt 1216, ob eine Task mit Priorität in der Ausführung
begriffen ist. Zu diesem Zweck liest sie in dem Wort CPCWden Zustand der Bits D, L und Ai:
Wenn D=I, wird gerade der Dispatcher ausgeführt,
wenn L = 1, gehört die unterbrochene Task der Stufe 2 an,
wenn M= 1, ist die Sequenz maskiert und die Task gehört vorübergehend der Stufe 2 an.
Somit wenn
D = 1 oder
D = 1 oder
L = 1 oder M = 1, hat die Task, die unterbrochen worden ist. Priorität und wird in dem Schritt 1218
wieder ausgelöst. Wenn die unterbrochene Task keine Priorität hat, besteht der Schritt 1217 darin,
daß überprüft wird, ob eine Task EV2 vorhanden ist.
In F i g. 2 zeigt das Signal EV2J am Ausgang der UND-Schaltung
223 an, wenn das TIMER-CaUer ausgewählt
ist, ob zumindest ein Signal EVi an einem der DAI- oder
PSAGatter vorhanden ist (dieser Globaltest bringt einen
Ausfuhrungszeitgewinn mit sich); oder ob das Bit F des Wortes CPCW1 ist, was offenbar der Fall ist, wenn
das Mikrobetriebssystem MIOS die Operation flag -= 1
in dem Schritt 1213 ausgeführt hat, was aber nicht zwangsläufig gilt, wenn das Mikrobetriebssystem MIOS
direkt von dem Schritt 1208 oder 1209 zu dem Schritt 1216 übergegangen ist
Der Test des Bits F erbringt ebenfalls einen Ausführungszeitgewinn
(somit einem Gewinn an Leistungsfähigkeit des Mikrobetriebssystems MI0S), da die Schlangen
von Bereit-Zuständen nur abgetastet werden, wenn die Priorität der in der Ausführung begriffenen Task
wieder in Frage gestellt werden kann.
Bei F — 0 wird die unterbrochene Task wieder ausgelöst,
Schritt 1218.
Wenn man nämlich nicht in dem Dispatcher (D = 0) ist, heißt das, daß eine Task in der Ausführung begriffen
und unterbrochen worden ist. Der Dispatcher ist allein in bestimmten Punkten unterbrechbar, die genau festgelegt
und als »Fenster« zum Durchlassen der Unterbrechungen EV] der verschiedenen Peripheriegeräteanschlüsse
DA bezeichnet werden.
Bei F = 1, wird der Schritt 1300 ausgeführt. Er besteht aus dem Eintritt in den »Dispatcher« und der Analyse
der verschiedenen Schlangen von Bereit-Zuständen jeder Prioritätsstufe.
Fig. 13 ist ein Funktionsdiagramm des Dispatchers.
Durch den Eintritt in den Dispatcher wird das Bit D des Wortes CPSCW auf 1 gesetzt. Das Bit F des Wortes
CPCW wird in dem Schritt 1302 auf Null riickgeseetzt und in dem Schritt 1313 überprüft das Mikrobetriebssystem
MIOS, ob nicht zumindest eine Task EV1 wartet
Wenn ja, wird das Register DNR auf Null zurückgestellt und das Mikrobetriebssystem MIOS prüft, ob nicht eine
Task EV2 vorhanden ist, die DNR = 0 entspricht Wenn
es keine Task EV2 gibt wird das Register DNR um 1
erhöht und nimmt somit den Wert DNR = 1 an und das Mikrobetriebssystem MIOS prüft erneut, ob nicht eine
andere Task EV2 wartet, die diesem Wert des Registers
DNR entspricht Wenn die Task EV2 nicht vorhanden
ist wird der Inhalt des Registers DNR nochmals um 1 erhöht usw. bis zu dem Wert Q, der der Anzahl von mit
der Gerätesteuerung PCU verbundenen Gattern entspricht (Q=n+p, wobei ρ die Anzahl von PSZ-Gattern
ist, die von 0 bis p— 1 numeriert sind, und wobei π die Anzahl von DA /-Gattern ist, die von ρ bis ρ+η— 1 numeriert
sind). Wenn eine wartende Task EV2 für einen Wert DNR <p—\ vorhanden ist, so gehört diese Task
EV2 zu einem PSAGatter.
Das entsprechende Mikroprogramm wird dann in dem Schritt 1316 ausgelöst und durch den Befehl TER-
MINATE beendet, dessen Konsequenzen in dem Diagramm von F i g. 17 dargestellt sind, in welchem der
Anfangsschritt die Nummer 1700 trägt. Wenn eine Task EV2 für einen Wert p<
DNR<p+n— 1 wartet gehört diese Task EV2 zu einem D,4/-Gatter: das entsprechende
Mikroprogramm wird dann ausgelöst wenn das Bit E des Peripheriegeräteanschlußsteuerblocks DACB nicht
gleich 1 ist, d. h. wenn die Task EV2 des entsprechenden
Peripheriegeräteanschlusses DA nicht maskiert ist. Wenn das Bit E = 1 ist, kehrt das Mikrobetriebssystem
MI0S zu dem Schritt 1307 zurück, der Inhalt des Registers DNR wird um 1 erhöht und die Abtastung der
Tasks EV2 wird wiederaufgenommen. Wenn das Bit E=O ist, geht das Mikrobetriebssystem MIOS zu dem
Schritt 140Oi von F i g. 14 über.
Wenn keine Task EV2 vorhanden ist geht das Mikrobetriebssystem
MI0S zu dem Schritt 1309 über und überprüft, ob der Inhalt der Schlange der Bereit-Zustände
mit dieser Stufe nicht leer ist. Zu diesem Zweck überprüft sie in der dieser Stufe entsprechenden Tabelle des
Dispatchers (vgl. F i g. 8), ob der Inhalt RQHPdes Wortes 1 der Tabelle des Dispatchers mit dieser Stufe auf
sich selbst hinweist, d. h. daß die Schlange leer ist Wenn die Schlange nicht leer ist gibt das Mikrobetriebssystem
MIOS den Block AiCS ab, der am Kopf der Schlange der Bereit-Zustände mit dieser Stufe ist und löst die
gewöhnliche Task aus, die dem Schritt 1500 entspricht (vgl. Fig. 15). Wenn die Schlange leer ist geht das Mikrobetriebssystem
MIOS zu dem Schritt 1310 über, um zu überprüfen, ob eventuell ein Block AiCS in der
Schlange der Bereit-Zustände mit der Stufe 3 vorhanden ist. Von der Stufe 3 bis zur Stufe 7 (oder 2"—1)
arbeitet das Mikrobetriebssystem MIOS für jede Stufe JV in folgender Weise. In dem Schritt 1311 überprüft es
das Bit S, welches in dem Wort 3 der Tabelle des Dispatchers mit der Stufe JV von F i g. 8 vorhanden ist. Wenn
S = 1 ist bedeutet das, daß die Task mit der Stufe N zwar begonnen, aber nicht beendet worden ist. In diesem
Fall geht das Mikrobetriebssystem MIOS zu dem Schritt 1600 (vgl. Fig. 16) über, d. h. Rückkehr zu der
so unterbrochenen Task, Wenn B = 0 ist: wird das Wort
RQHP des ersten Worts der Tabelle des Dispatchers mit dieser Stufe getestet Wenn die Schlange der Bereit-Zustände
(mit der Stufe JV) leer ist geht das Mikrobetriebssystem
MIOS zu der Stufe JV+1 über, Schritt
1313. Wenn sie nicht leer ist wird die gewöhnliche Task,
die dem ersten Block AiCS in der Schlange der Bereit-Zustände
mit dieser Stufe entspricht in dem Schritt 1500 ausgelöst Diese Prozedur wird bis zu der Stufe
N — 2"— 1 fortgesetzt Wenn das Mikrobetriebssystem
MIOS keinen bereiten Block AiCS auf irgendeiner der Stufen gefunden hat kehrt es zu dem Schritt 1300 zurück
und der Dispatcher wird wieder ausgelöst (Schritt 1314).
Fig. 14 ist ein Diagramm, welches den Auslösemechsnismus einer Task EV2 zeigt Das Auslösen einer Task EV2 beginnt mit dem Schritt 1400. Das Mikrobetriebssystem MIOS sucht ausgehend von dem Wert DNR, den es berechnet hat (Schritt 1307), die Start-
Fig. 14 ist ein Diagramm, welches den Auslösemechsnismus einer Task EV2 zeigt Das Auslösen einer Task EV2 beginnt mit dem Schritt 1400. Das Mikrobetriebssystem MIOS sucht ausgehend von dem Wert DNR, den es berechnet hat (Schritt 1307), die Start-
adresse MSA2 der Task EV2 in dem entsprechenden
Peripheriegeräteanschlußsteuerblock (Wort 2 des Blocks DACB), Schritt 1401. Dann sucht es die Adresse
der Arbeitszone WZA2 in dem Wort 3 des entsprechenden
Blocks DACB, um sie in das nicht dargestellte Registerpaar
R4R5 der unteren Registerbank der Doppelregisterbank
210 von F i g. 2 zu laden. Schritt 1402. In dem Schritt 1403 wird das Bit L des Wortes CPCW auf 1
gesetzt, um anzuzeigen, daß die Task, die ausgelöst wird, eine Task der Stufe 2 ist. In dem Schritt 1404 testet das
Mikrobetriebssystem MI0S das Bit P des Wortes CPCW. Wenn P=O ist, war vor der Unterbrechung
keine Task in der Ausführung begriffen und das Mikrobetriebssystem MI0S geht zu dem Schritt 1406 über.
Bei P = J werden in dem Schritt 1405 die Inhalte der
Register der unterbrochenen Task mit niedrigerer Priorität in der ihrer Stufe entsprechenden Tabelle des Dispatchers
aufbewahrt (vgl. Fig.8). In dem Schritt 1406 wird das Bit D auf Null gesetzt, das Bit P wird in dem
Schritt 1407 auf 1 gesetzt und die Stufe der Task, die in der Ausführung begriffen sein wird, wird in dem Schritt
1408 in die Zone NPCdes Wortes CPOVübertragen.
In dem Schritt 1409 wird das Bit B in der dieser Stufe entsprechenden Tabelle des Dispatchers auf 1 gesetzt,
um anzuzeigen, daß die Task in der Ausführung begriffen ist. In dem Schritt 1410 wird die Kippschaltung 217
(Kippschaltung UL) von F i g. 2 auf Null rückgestellt und die Task EV2 wird in dem Sdiriii 1411 ausgelöst.
F i g. 15 ist ein Diagramm, welches die Schritte zeigt,
die für das Auslösen einer gewöhnlichen Task der Stufe N erforderlich sind. Der Start ist der Schritt 1500. In
dem Schritt 1501 wird die Task der Schlange der Bereit-Zustände
entnommen, das Bit RQ des entsprechenden Task-Steuerblocks AiCS wird dann auf Null rückgesetzt
In dem Schritt 1502 wird das Byte YREDYin dem
Block MCB auf Null rückgestellt, der folgende Zustand dieser Task wird dann »nicht geplant«. In dem Schritt
1503 überprüft das Mikrobetriebssystem MIOS den Zustand
des Bits 5 in dem entsprechenden Block DACB. Wenn S = 1 ist, wird der Peripheriegeräteanschluß gehalten,
die Task wird gelöscht und das Mikrobetriebssystem MIOS kehrt zu dem Schritt 1315 zurück und die
Prozedur von Fig. 13 wird von dem Schritt 1312 an wiederaufgenommen. Wenn das Bit S = 0 ist, wird die
Nummer des DAAGatters, die in dem Byte 1 des Blocks
MCB gefunden wird, in dem Schritt 1504 in das Register
DNR geladen. Wenn es sich um eine Task der Stufe 2 handelt, führt der Test in dem Schritt 1505 zu dem
Schritt 1411 und die Prozedur von F i g. 14 wird in dem
Schritt 1403 ausgelöst.
Wenn die Task nichi der Siüfe 2 angehört, kehrt das
Mikrobetriebssystem MlOS zu dem Schritt 1412 zurück und die Prozedur von F i g. 14 wird in dem Schritt 1404
ausgelöst
Fig. 16 ist ein Diagramm, welches die Schritte zeigt,
die für die Rückkehr zu einer unterbrochenen Task erforderlich sind. Der Start der Prozedur ist in dem Schritt
1600 dargestellt In dem Schritt 160! testet das Mikrobetriebssystem
M10S das Bit P des Wortes CPCW. Wenn P=I ist, ist die Task, die unterbrochen worden
ist durch ein Γ/AifÄ-Ereignis EV\ unterbrochen worden,
ihre Register werden nicht gelöscht und es erfolgt ein direkter Übergang zu dem Schritt 1603. Wenn P=O
ist heißt das, daß die Task mit der höheren Priorität die die betreffende Task unterbrochen hatte, durch den Befehl
TERMINATE beendet worden ist; der Inhalt der Register der unterbrochenen Task wird ausgehend von
der Schutzzone der dieser Stufe entsprechenden Tabelle des Dispatchers in Ausgangsstellung gebracht; die
Rückkehradresse wird in Ausgangsstellung gebracht. Das Bit D wird in demSchritt 1603 auf 0 gesetzt. Das Bit
P wird auf 1 gesetzt und das Byte NPC des Wortes CPCW wird auf den entsprechenden Wert der Task
gesetzt, die unterbrochen worden ist und die wieder ausgelöst wird.
Die Kippschaltung UL wird auf Null gesetzt. Die Rückkehr zu der unterbrochenen Task wird in dem
Schritt 1604 ausgeführt (ihr vorhandener Ausführungszustand ist erneut »in der Ausführung begriffen«).
In F i g. 3 ist gezeigt worden, daß der Übergang einer
Task von einem Zustand in einen anderen mit Hilfe von Mikrobefehlen erfolgt. Die Fig. 17 bis 20 geben genau
die Aktionen an, die durch die Mikrobefehle hervorgerufen werden.
Fig. 17 ist ein Diagramm, welches die Prozedur zeigt,
die durch den Mikrobefehl TERMINA TEm dem Schritt 1700 gesteuert wird. Die Bits P, M und L des Wortes
CPCW werden in dem Schritt 1701 auf Null gesetzt. In dem Schritt 1702 wird das Bit B in der der Task der Stufe
N entsprechenden Tabelle des Dispatchers auf Null gesetzt, die ihre Arbeit mit dem Befehl TERMINATE beendet
hat. In dem Schritt 1704 wird die in der Ausführung begriffene Task aufgegeben und das Mikrobetriebssystem
MIOS führt bei 1300 eine unbedingte Verzweigung zu dem ersten Schritt des Dispatchers aus.
Fig. 18 ist ein Diagramm, weiches die Prozedur zeigt,
die durch den Mikrobefehl ACTIVATE in dem Schritt 1800 gesteuert wird. Der Schritt 1801 besteht darin, das
Bit RQ zu testen. Wenn RQ - 1 ist, befindet sich der Block MCB bereits in der Schlange der Bereit-Zustände
und das Mikrobetriebssystem Ai/0Sgeht direkt zu dem
Schritt 1807 über. Wenn RQ = 0 ist, testet das Mikrobetriebssystem
M10S das Bit TQ. Wenn TQ = 1 ist, wird der Block MCB in dem Schritt 1803 aus der TIMER-Warteschlange
ausgegeben, das Bit TQ wird in dem Schritt 1804 auf Null zurückgestellt und in dem Schritt
1805 geht der Block MCB in die Warteschlange der Bereit-Zustände. Die Bits RQ und F (flag) werden in
dem Schritt 1806 auf 1 gesetzt In dem Schritt 1807 wird
das Bit 1 des Feldes YREDYauf 1 gesetzt, um anzuzeigen,
daß der Block MCB aktiviert ist. Wenn in dem Schritt 1802 des Bit TQ den Wert 0 hätte, befände sich
der Block MCB'm keiner Warteschlange und das Mikrobetriebssystem MI0S geht zu dem Schritt 1805 über,
der Block MCB wird direkt in die Warteschlange der Bereit-Zustände gebracht. Der Schritt 1808 gibt das Ende
der Prozedur und die Rückkehr zu der in der Ausführung begriffenen Task an, die den Mikrobefehl ACTI-
F i g. 19 zeigt die Aktionen, die durch einen Mikrobefehl SUSPENDm dem Schritt 1900 hervorgerufen werden.
In dem Schritt 1901 testet das Mikrobetriebssystem MIOS den Zustand des Bits TQ des Blocks MCB. Wenn
TQ = 1 ist, wird der Block MCB aus der TIMER-Warteschlange
abgegeben. Wenn nicht, prüft das Mikrobetriebssystem MIOS in dem Schritt 1903, ob der Block
MCB in der Warteschlange der Bereit-Zustände ist.
Wenn ja, wird der Block Λ/CS in dem Schritt 1904 aus
der Warteschlange der Bereit-Zustände abgegeben.
Wenn nein, heißt das, daß der Block AiCS nicht geplant
war, und die Prozedur wird angehalten.
F i g. 20 zeigt die Aktionen, die in einem Schritt 2000 durch einen Mikrobefehl RQT0 hervorgerufen werden.
Der Schritt 2001 besteht darin, das Bit RQ des Blocks AiCS zu testen. Wenn RQ = 1 ist. war der Block MCB
bereits in der Warteschlange der Bereit-Zustände. der
Mikrobefehl RQT0 hat in diesem Fall keine Auswirkung und die Prozedur wird angehalten — Schritt 2002.
Wenn RQ = 0 ist, geht das Mikrobetriebssystem MIOS zu dem Schritt 2003 über, der darin besteht, das
Bit TQ zu testen. Wenn TQ « 1 ist, befindet sich der
Block MCB in der Γ/ΛίΕΛ-Warteschlange und der
Block MCB wird in dem Schritt 2004 aus der TIMER-Warteschlange abgegeben, damit TOAf in dem Wort 6
wieder auf den neuesten Stand gebracht wird, und wird wieder in die TIMER-Warteschlange in der dem neuen
Wert von TOAi entsprechenden Reihenfolge eingereiht.
Wenn TQ = 0 ist, wird der Block MCB in dem Schritt 2005 in die T/MfÄ-Warteschlange eingereiht, seine
Weckzeit wird in der Zone TOM des Wortes 6 des Blocks MCB in dem Schritt 2006 angegeben und das Bit
TQ wird auf 1 gesetzt; in dem Schritt 2007 werden die Aktionen beendet.
Die Fig.21 bis 24 zeigen die Aktionen, die während
der Ausführung der Maskierungs- und Demaskierungsmikrobefehle
hervorgerufen werden.
Fig.21 zeigt die Maskierung sämtlicher Tasks, bei
welchen es sich nicht um die Task EV\ handelt. Dafür wird das Bit M des Wortes CPCW in dem Schritt 2101
auf 1 gesetzt (die Task wird dann vorübergehend als Task der Stufe 2 angesehen, die somit nicht durch eine
andere gewöhnliche Task unterbrochen werden kann — vgl. die Task mit Priorität in F i g. 12).
F i g. 22 zeigt die entsprechende Demaskierung. Dafür wird das Bit M des Wortes CPCW in dem Schritt
2201 auf 0 gesetzt.
F i g. 23 zeigt die Maskierung einer Task EV2 des Peripheriegeräteanschlusses
entsprechend dem Firmwaresystem AFP, welches diesen Mikrobefehl ausgeführt
hat. Zu diesem Zweck wird das Bit £des Blocks DACB
entsprechend dem Inhalt des Registers DNR in dem Schritt 2301 auf 1 gesetzt.
Fig.24 zeigt die entsprechende Demaskierung; für diesen Zweck wird das Bit Fin dem Schritt 2401 auf Null
gesetzt.
Fig.25 zeigt die Aktionen, die durch den Mikrobefehl
STDA hervorgerufen werden, um alle Operationen in einem Peripheriegeräteanschluß anzuhalten. In dem
Schnitt 2501 wird das Bit S des Wortes 6 des Blocks DACB auf 1 gesetzt, um anzuzeigen, daß der entsprechende
Peripheriegeräteanschluß abgetrennt ist und daß es an diesem Peripheriegeräteanschluß keine Operationen
mehr geben wird. Das Mikrobetriebssystem MIOS liest in dem Wort CPCW, welcher Stufe die Task
angehörte, die in der Ausführung begriffen war, indem es den Inhalt der Zone NPCliest.
Die folgenden Schritte 2503, 2504, 2505, 2506 bestehen
darin, die unterbrochenen Tasks der Stufe N+1 zu suchen, die zu dem Peripheriegeräteanschluß gehören,
und das Bit B der Tabelle des Dispatchers der diesem Peripheriegeräteanschluß entsprechenden Stufe N+\
auf Null rückzustellen. Die Operation wird dann für alle
anderen Stufen bis zu der Stufe 7 oder 2n— 1 fortgesetzt
Wenn in dem Schritt 2504 N größer ist als 7 oder 2"—1
und wenn die Kippschaltung UL in dem Zustand 1 ist, was bedeutet, daß eine Task EV1 die Ausführung verlangt
hat, geht das Mikrobetriebssystem MI0S zu dem Schritt 1219 — Eintragung in den Dispatcher — über,
wenn nicht, geht das Mikrobetriebsystem M/05 zu dem Schritt 1700 über und beendet durch den Befehl TER
MIN A TEdie Task, die die Ausführung verlangt hat.
Es ist durch diese Anordnung zu erkennen, daß alle Tasks, die in der Ausführung begriffen oder unterbrochen
waren (diejenigen, die das Bit S=I für diesen
Peripheriegeräteanschluß hatten), sofort beseitigt werden. Weiter oben ist gezeigt worden, daß die anderen
Tasks (diejenigen, die in den Warteschlangen RQ und TQ waren) in dem Zeitpunkt ihrer Auslösung beseitigt
werden (vgl. Schritt 1503).
Die Beschreibung, die von der Hardware/Firmware-Anordnung nach der Erfindung gegeben worden ist, ist
nur ein Aspekt von möglichen Ausführungsformen und es ist klar, daß sich dem Fachmann im Rahmen der
Erfindung weitere Ausführungsmöglichkeiten bieten.
Glossar
Firmware:
Anordnung, die hauptsächlich aus einem Speicher, der beim Lesen nicht gelöscht wird, oder Festspeicher
und seinen zugeordneten Schaltungen besteht, der zum Speichern der Mikroprogramme für die
Steuerung der sich wiederholenden Funktionen dient, wie beispielsweise zur Steuerung der Peripheriegeräte.
Hardware:
Hardware:
umfaßt alle räumlichen Bestandteile des Rechners, unabhängig davon, welches Gerät, Organ oder welehe
Anordnung benutzt wird.
Bit:
Bit:
bezeichnet eine Binärziffer.
Byte:
Byte:
bezeichnet eine Binärziffer, die aus mehreren Bits besteht.
DA:
DA:
Abkürzung des angelsächsischen Ausdrucks »Device Adapter«; Bezeichnung für einen Geräteanschluß.
DAI:
Abkürzung des angelsächsischen Ausdrucks »Device Adapter interface«: Bezeichnung für eine
Geräteanschlußschnittstelle.
PSI:
PSI:
Abkürzung des angelsächsischen Ausdrucks »Peripheral Subsystem interface«: Bezeichnung für eine
Schnittstelle zwischen der Gerätesteuerung und dem Eingabe/Ausgabe-Steuerungssystem der Zentraleinheit.
MPU:
Abkürzung des angelsächsischen Ausdrucks »Multiprocessing peripheral unit« oder mikro programmierte
Einheit für die Steuerung der Peripheriegeräte.
/CLi:
Abkürzung des angelsächsischen Ausdrucks »Interface control unit«; Bezeichnung für eine Schnittstelle
zwischen der Verarbeitungseinheit MPU und verschiedenen PSI- und D/U-Schnittstellen.
Assemblage:
Verfahren, das darin besteht, die Teile ein und desselben
Programms oder von mehreren Programmen, die zusammen oder aufeinanderfolgend ausgeführt
werden sollen, zusammenzufassen.
Dispatcher:
Task-Zuteiler.
Digitalkanal:
Digitalkanal:
Die Zugriffsart, die benutzt wird, um eine Eingabe/
Ausgabe-Operation zwischen der Zentraleinheit und einem Peripheriegerät auszuführen, wird als
Kanal bezeichnet Der Kanal besteht aus einem räumlichen Kanal, welcher die Hardware-Hilfsmittel
zum Verbinden des Eingabe/Ausgabe-Steue-
27 28
rungssystems der Zentraleinheit mit dem Peripheriegerät
enthält, und aus einem Digitalkanal, welcher die Gesamtheit der Mittel umfaßt, die zum
Ausführen einer Eingabe/Ausgabe-Operation erforderlich sind. Die Eingabe/Ausgabe-Operation ist
durch ein Kanalprogramm festgelegt. Der Digitalkanal kann gleichzeitig nur ein einziges aktives Kanalprogramm
haben. Die Nummern von Digitalkanälen können von dem Kanal benutzt werden, um die Speicherung der verlangten Parameter zu
dirigieren und um eine gleichzeitige Ausführung einer Anzahl von Kanalprogrammen aufrechtzuerhalten.
Unter dem Gesichtspunkt der Software werden die Geräte durch eine Eingabe/Ausgabe-Steuerungssystem-Nummer,
eine Nummer des is räumlichen Kanals und eine Digitalkanalnummer
bezeichnet Ein Kanalprogramm ist einem Gerät zugeordnet. Den Geräten werden Nummern von
Digitalkanälen für Perioden der Konfiguration des Systems zugeordnet oder wenn dem System ein
Gerät hinzugefügt ist. Es kann mehr als einen Digitalkanal pro Gerät geben. Der Digitalkanal kann ab
dem Zeitpunkt als aktiv angesehen werden, in welchem das Kanalprogramm durch einen Software-Befehl
initialisiert wird, bis zu seiner Beendigung. 2s ABBRUCH-UrsAche:
Das sofortige Anhalten der gerade mit einem Peripheriegerät
ablaufenden Operationen kann durch irgendeinen der Bestandteile des Systems gefordert
werden (die SW in der CPU oder die FW in der PCU oder die WlVder CPU oder der PIVJi
Hierzu 14 Blatt Zeichnungen
35
40
45
55
60
65
Claims (15)
1. Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks (Steuerprogramme) für mehrere
und verschiedene Peripheriegeräte, bei der eine Gerätesteuerung (PCU) einer Datenverarbeitungsanlage
mit einer zentralen Datenverarbeitungseinheit (CPU) über eine Ein/Ausgabe-Schnittstelle
(PSI) verbunden ist und außerhalb der zentralen Datenverarbeitungseinheit
(CPU) angeordnet ist, wobei ein Taskunterbrechungsmechanismus verwendet
wird, bei welchem sehr vorrangige Tasks, die bei der Ankunft von Unterbrechungssignalen (EVX, EV2)
initiiert werden und durch andere Tasks nicht adressierbar sind, weniger vorrangige gewöhnliche Tasks
unterbrechen, welche durch andere Tasks adressierbar sind, dadurch gekennzeichnet, daß die
Gerätesteuerung (PCU) einen von der zentralen Datenverarbeitungseinheit (CPU) unabhängigen Prozessor
(200,233,234,235,236) bildet, der gegenüber
der zentralen Datenverarbeitungseinheit (CPU) im Masterbetrieb arbeitet, und einen Speicher (202)
enthält, in den für die Tasks Mikroprogramme und folgende Steuerblöcke eingetragen sind: ein Steuerblock
(CPCW) zum Kennzeichnen des Zustands der Task, die in der Ausführung begriffen ist, Tasksteuerblöcke
(MCB) zur Steuerung der gewöhnlichen Tasks, die den Zustand jeder gewöhnlichen Task angeben,
Peripheriegerätesteuerblöcke (DACB) für die Steuerung der sehr vorrangigen Tasks sowie eine
Gruppe von Steuerblöcken, die Tabellen von Parametern enthalten, weicne für eine Task-Zuteilung
erforderlich sind.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß j^der Tasksteuerblock (MCB) zur
Steuerung von gewöhnlichen Tasks jede zugeordnete gewöhnliche Task durch drei mögliche Zustände
mit Hilfe von Bits TQ und RQ kennzeichnet, wobei RQ= 1 bedeutet, daß die Task vorübergehend im
Wartezustand im Innern einer Warteschlange (Tl-MER-Warteschlange)
ist, wobei TQ= 1 bedeutet, daß die Task vorübergehend in dem Bereitzustand
ist und daß sie in eine Warteschlange der Bereitzustände eingereiht ist, und wobei TQ-O und RQ=O
bedeuten, daß kein Zustand für diese Task vorgesehen ist.
3. Anordnung nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß jeder Tasksteuerblock
(MCB) zur Steuerung von gewöhnlichen Tasks ein Kennzeichen-Wort (TOM) enthält, welches die
Weckzeit der zugeordneten Task für ihre Einreihung in die Warteschlange der Bereitzustände angibt, die
ihrer Prioritätsstufe entspricht, und daß die Einreibung mit Hilfe von Kennzeichen-Wörtern (RQHP
und RQTP) des Kopfes bzw. des Schwanzes der Warteschlange der Bereitzustände ausgeführt wird,
die sich in der Task-Zuteilungstabelle der betreffenden
Prioritätsstufe befinden, und mit Hilfe der Inhalte der Wörter (NLPund PLP), die jeden Tasksteuerblock
mit dem ihm folgenden bzw. mit dem vorangehenden Block verbinden.
4. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß jeder Peripheriegerätesteuerblock
(DACB) enthält: eine erste Speicherzone, die die b5
Startadresse (MSA 1) für die Ausführung des Task enthält, die zu einem Signal eines an dem betreffenden
Peripheriegeräteanschluß eingetretenen Ereignisses (EVi) gehört; eine zweite Speicherzone, die
das Kennzeichen einer Arbeitsspeicherzone (WZA 1) für die Ausführung des Task enthält, die
dem Ereignis (EVt) entspricht; eine dritte Speicherzone,
die die Startadresse (MSA 2) für die Ausführung der Task enthält, die zu einem Signal eines
weiteren Ereignisses (EVt) gehört, welches an dem entsprechenden Peripheriegeräteanschluß eingetreten
ist; eine vierte Speicherzone, die das Kennzeichen einer Arbeitsspeicherzone (WZA 2) für die
Ausführung der Task enthält, die dem weiteren Ereignis (EV2) entspricht; eine fünfte Speicherzone, die
die Nummer (FLC) des Digitalkanals enthält, der
dem Peripheriegeräteanschluß zugeordnet ist, sowie die maximale Anzahl (LCNB) von Digitalkanälen,
die mit dem Anschluß verbunden sind: und eine sechste Speicherzone, die die Bits E und S des Zustands
des Peripheriegeräteanschlusses enthält, wobei das Bit E= 1 bedeutet, daß alle weiteren Ereignisse
(EV2), die an dem Peripheriegeräteanschluß vorkommen könnten, maskiert sind, und wobei das
Bit S= 1 bedeutet daß alle Operationen an diesem Peripheriegeräteanschluß angehalten sind.
5. Anordnung nach Ansprüchen 1, 3 und 4, dadurch gekennzeichnet, daß der Speicherblock
(CPCW) zum Kennzeichnen des Zustands der Task, die :n der Ausführung begriffen ist, enthält: ein Wort
(NPC) mit η Bits, welches die Prioritätsstufe der in der Ausführung begriffenen Task angibt, wobei die
gewöhnlichen Tasks 2n—2 Prioritätsstufen haben
und wobei die Tasks, die den Ereignissen EV\ entsprechen, die Prioritätsstufe 1 und diejenigen, die
den weiteren Ereignissen EV2 entsprechen, die weiteren
Prioritätsstufen haben; ein Bit M für eine maskierte Sequenz, welches, wenn es Eins ist, die in der
Ausführung begriffene Task vorübergehend auf die Prioritätsstufe 2 bringt; ein Bit D, welches, wenn es
Eins ist, angibt, daß die Speicherblöcke abgefragt werden, welche die Task-Zuteilungstabellen enthalten;
ein Bit P; welches angibt, daß eine Task in der Ausführung begriffen ist; und ein Bit F, welches angibt,
daß eine Task in eine Warteschlange der Bereit-Zustände eingereiht ist.
6. Anordnung nach einem der Ansprüche 1 bis 5, gekennzeichnet durch mehrere PeriDheriegeräteanschlüsse
(DAI)und durch einen Zeitgeber(230), welche sehr vorrangigen Ereignissen entsprechende Signale
(EV]) liefern, die zu den Eingängen eines
ODER-Gliedes (220) übertragen werden, um in einer Verarbeitungseinheit (MPU) der Gerätesteuerung
ein Signal (EV\s) zur sehr vorrangigen Unterbrechung zu erzeugen, und zu den Eingängen eines Codierer
(221) übertragen werden, der an seinem Ausgang in Binärform die Nummer der Einheit mit der
höchsten Priorität abgibt, welche das Signal (EV)) ausgesandt hat, wobei der Ausgang des Codierers
mit den Eingängen eines Registers (DNR) verbunden ist, in welchem das Resultat der Codierung gespeichert
wird, damit es durch die Verarbeitungseinheit (MPU)(Hr die Berechnung der Adresse des entsprechenden
Peripheriegerätesteuerblocks (DACB) wieder verwendet werden kann.
7. Anordnung nach Anspruch 6 dadurch gekennzeichnet, daß jeder Peripheriegeräteanschluß (DAI)
und die Ein/Ausgabe-Schnittstelle (PSI) jeweils ein Signal (EVi) liefert, wenn sie durch einen mit dem
Register (DNR) verbundenen Decoder (222) ausgewählt werden und wenn eines der weiteren Ereignis-
se (EVj) an dem entsprechenden Anschluß eintritt,
wobei die Auswahl von der Verarbeitungseinheit (MPU) aus erfolgt, indem bei jedem Auswahlzyklus
der Inhalt des Registers (DNR) beginnend mit dem Wert 0 bis zu dem Wert N~ 1 um Eins erhöht wird
(wobei TV die Anzahl von mit der Gerätesteuerung verbundenen Einheiten DAl, PSI ;»t), und wobei die
Signale (EV2) zu den Eingängen eines ODER-Gliedes
(224) übertragen werden, dessen Ausgang an die Verarbeitungseinheit (MPU) ein Unterbrechungssignal
(EV2s) abgibt, wenn der Inhalt des Registers
(DNR) ein Signal (EV2) an einem der Peripheriegeräteanschlüsse
(DAI) oder der Ein/Ausgabe-Schnittstelle (PSI) ausgewählt hat
8. Anordnung nach Anspruch 6, dadurch gekennzeichnet,
daß jeder Tasksteuerblock (MCB) eine Speicherzone (DA), die die Nummer des dem Tasksteuerblock
entsprechenden Peripheriegeräteanschlusses angibt, eine Speicherzone (ARSA), die die
Startadresse der zugeordneten Task angibt, eine Speichezone (ABWZA), die die Adresse der Arbeitszone festlegt, welche für die Ausführung der Task
erforderlich ist, und eine Speicherzone (YREDY) enthält, die die Gründe bestimmt, aus denen eine
Task in die Warteschlange der Bereitzustände eingereiht worden ist.
9. Verfahren zum Betreiben einer Anordnung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet,
daß jegliches Signal (EV\), welches an einem Peripheriegeräteanschluß erscheint, bewirkt,
daß ein Register (DNR) durch eine Verarbeituiigseinheit (MPU) der Gerätesteuerung (PCU) gelesen
wird, wobei das Register (DNR) die Nummer des Peripheriegeräteanschlusses enthält, an welchem
das Signal (EVi) erschienen ist, und die Bezeichnung des entsprechenden Peripheriegerätesteuerblocks,
in welchem sich die Startadresse (MSA 1) der Task befindet, die dem Ereignis zugeordnet ist, welches
ein genanntes Signal (EVi) erzeugt hat.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet,
daß ein genanntes Signal (EV\), welches während des Eintritts eines sehr vorrangigen Ereig-
wird, das Auslösen der dem Ereignis entsprechenden Task bewirkt, und daß ein genanntes periodisches
Signal (EVi), welches aus dem Zeitgeber (230)
stammt, das Fortschreiben der 77M£/?-Warteschlange
durch die Verarbeitungseinheit bewirkt, die den Inhalt einer Speicherzone (TQHP) liest, wenn
der Inhalt der Speicherzone nicht leer ist, während die Verarbeitungseinheit den Inhalt des Kennzeichen-Wortes
(TOM) in dem ersten Tasksteuerblock (MCB)) zu der 77M£/?-Warteschlange liest und aus
der Warteschlange die Task abgibt, wenn der Inhalt des Kennzeichen-Wortes (TOM)\zzr ist, indem sie in
dem entsprechenden Tasksteuerblock das Bit RQ in den Zustand 1 setzt, um anzuzeigen, daß die genannte
Task in die Warteschlange der Bereitzustände gebracht worden ist, worauf die Verarbeitungseinheit
die Bits F und T auf Eins setzt, und zwar in dem Speicherblock, welcher den Zustand der Task enthält,
die in der Ausführung begriffen ist, um anzuzeigen, daß eine Task soeben in die Warteschlange der
Bereitzustände gegangen ist, und in dem Wort YRE- DY, welches in der letzten Speicherzone des Task-Steuerblocks
(MCB) enthalten ist, um anzuzeigen, daß diese Task durch das Signal (EV\) des Zeitgebers
in die Warteschlange der Bereitzustände gebracht worden ist
11. Verfahren nach den Ansprüchen 9 und 10, dadurch gekennzeichnet, daß das Signal (EVx) des Zeitgebers
bewirkt, daß durch die Verarbeitungseinheit die Bits D, L und Aides Speicherblocks (CPCW)zum
Kennzeichen des Zustands der Task gelesen werden, die in der Ausführung begriffen ist, wobei, wenn die
Bits D, L oder M in dem Zustand 1 sind, das heißt wenn die Task die Prioritätsstufe 2 hat bzw. vorübergehend
der Prioritätsstufe 2 angehört, die Task vorrangig ist und wieder ausgelöst wird, und andernfalls
die Task nicht vorrangig ist und die Verarbeitungseinheit den Zustand des Bits Fliest, und wenn das Bit
F= 1 ist, zumindest eine Task, die gewartet hatte, in
den Bereitzustand versetzt wird, wobei die Priorität tier in der Ausführung begriffenen Task wieder in
Frage gestellt wird, während die Verarbeitungseinheit dann die Task-Zuteilung auslöst, um die Leitungen
(EV2) der Peripheriegeräteanschlüsse und gegebenenfalls
die verschiedenen Warteschlangen der Bereitzustände für jede Prioritätsstufe abzutasten.
12. Verfahren nach den Ansprüchen 9 und 10, dadurch
gekennzeichnet, daß zur Task-Zuteilung in einem ersten Schritt festgestellt wird, ob ein Signal
(EV2) an einem Peripheriegeräteanschluß wartet, dann, indem aufeinanderfolgend der Inhalt des Registers
(DNR) ab dem Wert 0 um Eins erhöht wird, gegebenenfalls bis zu dem Wert Q, festgestellt wird,
an welchem Peripheriegeräteanschluß das Signal (EV2) erschienen ist; wenn das erste Signal (EV2)
gefunden ist, der Zustand des Bits Ein dem Peripheriegeräteanschlußsteuerblock
(DACB) überprüft wird; wenn £=0 ist, die diesem Ereignis (EV2) entsprechende
Task ausgelöst wird; wenn E= I ist, die Task nicht ausgelöst, der Inhalt des Registers (DNR)
um Eins erhöht und das vorgenannte Verfahren wieder aufgenommen wird, bis der Inhalt des Registers
(DNR) den Wert Q erreicht; wenn in diesem Schritt das Signal (EV2) nicht an dem entsprechender. Peripheriegeräteanschluß
vorhanden ist in dem Speicherblock, welcher die Tabellen zur Taskzuteilung enthält, geprüft wird, ob zumindest eine Task in der
Tabelle der Prioritätsstufe 2 vorhanden ist indem der Inhalt des Zeigers (RQHP)gesucht wird, der auf
die Task hinweist, die sich am Kopf der Warteschlange auf dieser Prioritätsstufe befindet, und diese Task
ausgelöst wird; wenn der Zeiger auf sich selbst zeigt, auf dieser Stufe keine Task vorhanden ist; es geprüft
wird, ob nicht in der Task-Zuteilungstabelle eine Task der Prioritätsstufe 3 vorhanden ist; die vorhergehende
Operation mit der Prioritätsstufe 3 wieder aufgenommen wird, usw. für jede Prioritätsstufe bis
zu der Prioritätsstufe 2n— 1, wobei η die Abmessung
in Bits des Stufenkennzeichen-Bytes ist, sofern auf irgendeiner Prioritätsstufe keine Task gefunden
worden ist; wenn auf irgendeiner Prioritätsstufe das Bit B der Task-Zuteilungstabelle, die dieser Prioritätsstufe
entspricht, in dem Zustand 2 angetroffen wird, eine Task auf dieser Prioritätsstufe unterbrochen
und durch die Verarbeitungseinheit sofort wieder ausgelöst wird; wenn in dem Schritt des Lesens
der Prioritätsstufe 2"— 1 keine Task auf dieser Stufe vorhanden ist, die Task-Zuteilung zu dem ersten
Schritt der Auswahl eines Signals (EVi) zurückkehrt.
13. Verfahren nach einem der Ansprüche 9 bis 11,
dadurch gekennzeichnet, daß die Startadresse (MSA 2) einer Task (EVj) in der Verarbeitungsein-
2ί> 07 405
riegeräts, bis der letzte Steuerbefehl ausgeführt worden ist. Die Initialisierung einer Übertragung von Informationen
kann auch in der anderen Richtung stattfinden. Die Peripheriegeräte geben dann Dienstanforderungen
ab. Die Zentraleinheit stellt unter sämtlichen Dienstanforderungen diejenige mit der höchsten Priorität fest.
Wenn dieser Schritt beendet ist, wird die Verbindung zwischen dem Peripheriegerät mit der höchsten Priorität
und der Zentraleinheit hergestellt. Das Peripheriege-
heit aus dem Inhalt des sich in der Verarbeitungsein· heit befindenden Registers (DNR) erhalten wird, der
das Berechnen der Adresse des entsprechenden Peripheriegeräteanschlußsteuerblocks
(DACB)gestattet, in welchem sich die Startadresse (MSA 2) einer
Task (EV2) befindet, sowie das Berechnen der für
seine Ausführung erforderlichen Arbeitsspeicherzonenadresse (WZA 2).
14. Verfahren nach einem der Ansprüche 9 bis. 11,
dadurch gekennzeichnet, daß zum Auslösen einer io rät gibt dann eine Übertragungsanforderung ab, die ängewöhnlichen
Task der Prioritätsstufe Ndie Verar- gibt, ob es sich um eine Eingabe- oder Ausgabeübertragung
handelt. Die Übertragung wird ausgeführt und es können sich an sie weitere Übertragungen anschließen
oder nicht. Das Ende der Austauschvorgänge wird 15 durch ein Dienstanforderungsendesignal ausgedrückt.
In einer mehrfach programmierten Datenverarbeitungsanlage, welche mehrere Peripheriegeräte enthält,
erfolgt die Verkettung der Eingabe/Ausgabe-Operationen durch einen Mechanismus von Unterbrechungen.
Die Unterbrechung erfolgt im allgemeinen am Ende der Ausführung einer Task in einem Peripheriegerät, obwohl
es andere Unterbrechungsursachen geben kann. Wenn eine Unterbrechung festgestellt wird, ist es üblich,
daß das Betriebssystem die aktiven Tasks überprüft, die bereit sind, ausgeführt zu werden. Das System übergibt
dann die Steuerung der Task mit der höchsten Priorität, indem es die Arbeit genau angibt, die das Betriebssystem
ausführen soll. Wenn diese Task mit der höchsten Priorität ausgeführt ist, übergibt das System die Steue-
führt, welches an einem Peripheriegeräteanschiuß 30 rung einer anderen Task, die eine höhere Priorität als
wartet, die übrigen auszuführenden Tasks hat, usw. Auf den
Stufen der weniger vorrangigen Tasks sind Vorsichtsmaßnahmen getroffen, um ihnen die Steuerung des Verarbeitungssystems
zu geben, wenn sie eine ausreichend lange Zeit auf ihren Ausführungszeitpunkt gewartet haben.
Die Einführung der Kanalprogramme in die Verarbeitungseinheiten (US-PS 34 00 371) erlaubt, die Zentraleinheit
von dem Management der Peripheriegeräte vollkommen unabhängig zu machen. Dieses System sllcin
erlaubt aber nicht das gleichzeitige Management der Peripheriegeräte. Wenn eine Task vor der Ausführung
der folgenden Task beendet werden soll, können bestimmte Peripheriegeräte in bestimmten Konfigura-
beitungseinheit das Bit RQ des entsprechenden Tasksteuerblocks (MCB) auf Null rückstellt, um die
Task der Warteschlange der Bereitzustände zu entnehmen, und das letzte Byte (YREDY)des Tasksteuerblocks
auf Null rückstellt, woraufhin die Verarbeitungseinheit den Zustand des Bits 5 in dem entsprechenden
Peripheriegerätesteuerblock (DACB) liest; wenn S= 1 ist, der entsprechende Peripheriegeriiteanschluß
angehalten und die Task beendet wird, indem in der dieser Stufe entsprechenden Tabelle zur
Task-Zuteilung das Bit B auf 0 gesetzt wird; wenn
S=O ist, die Nummer des Peripheriegeräteanschlusses in das Register (DNR) geladen und die Task der
Prioritätsstufe Λ/ausgelöst wird.
15. Verfahren nach einem der Ansprüche 9 bis 12,
dadurch gekennzeichnet, daß jede Ausführung eines Task-Endes die Task-Zuteilung zu dem ersien
Schritt zum Auswählen eines Signals (EV2) zurück-
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR7405793A FR2261565B1 (de) | 1974-02-20 | 1974-02-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2507405A1 DE2507405A1 (de) | 1975-08-21 |
DE2507405C2 true DE2507405C2 (de) | 1985-05-23 |
Family
ID=9135198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19752507405 Expired DE2507405C2 (de) | 1974-02-20 | 1975-02-20 | Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPS6049936B2 (de) |
DE (1) | DE2507405C2 (de) |
FR (1) | FR2261565B1 (de) |
GB (1) | GB1493878A (de) |
NL (1) | NL7501983A (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ZA79113B (en) * | 1978-01-24 | 1980-03-26 | Plessey Handel Investment Ag | Real-time data processing system for processing time period commands |
JPS54144150A (en) * | 1978-04-28 | 1979-11-10 | Nec Corp | Information processing system |
CH637228A5 (fr) * | 1980-03-27 | 1983-07-15 | Willemin Machines Sa | Dispositif de commande d'une machine ou d'une installation. |
DE3176724D1 (en) * | 1980-11-20 | 1988-06-01 | Ibm | A process management system for scheduling work requests in a data processing system |
US5129078A (en) * | 1988-08-19 | 1992-07-07 | Groves Stanley E | Dedicated service processor with inter-channel communication features |
JP7171360B2 (ja) | 2018-10-19 | 2022-11-15 | 伸和コントロールズ株式会社 | 空気調和装置、空気調和装置を具備する基板の浮上式搬送ユニット、並びに基板の浮上式搬送用空気の供給方法 |
-
1974
- 1974-02-20 FR FR7405793A patent/FR2261565B1/fr not_active Expired
-
1975
- 1975-02-19 NL NL7501983A patent/NL7501983A/xx not_active Application Discontinuation
- 1975-02-19 GB GB703975A patent/GB1493878A/en not_active Expired
- 1975-02-20 JP JP50020459A patent/JPS6049936B2/ja not_active Expired
- 1975-02-20 DE DE19752507405 patent/DE2507405C2/de not_active Expired
Also Published As
Publication number | Publication date |
---|---|
JPS50152636A (de) | 1975-12-08 |
FR2261565B1 (de) | 1977-09-16 |
NL7501983A (nl) | 1975-08-22 |
JPS6049936B2 (ja) | 1985-11-06 |
DE2507405A1 (de) | 1975-08-21 |
FR2261565A1 (de) | 1975-09-12 |
GB1493878A (en) | 1977-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2411963C3 (de) | Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken | |
EP0006164B1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE1774296C2 (de) | Restruktuierbare Steuereinheit für elektronische Digitalrechner | |
DE2856483C2 (de) | ||
DE2209282C3 (de) | Datenverarbeitungsanlage | |
DE2161886C2 (de) | Befehlsausführungseinheit in einer elektronischen Datenverarbeitungszentrale für die gleichzeitige Verarbeitung mehrerer Befehle | |
DE2456578C2 (de) | Datenverarbeitungsanlage | |
DE2839726A1 (de) | Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE2054068A1 (de) | Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme | |
DE2507403A1 (de) | Geraetesteuerung | |
DE3114921C2 (de) | Mikroprogramm-Speicheranordnung | |
DE1774870C3 (de) | Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage | |
DE1499206C3 (de) | Rechenanlage | |
DE1909477A1 (de) | Speichersteueranlage fuer ein Multiprogramm-Datenverarbeitungssystem | |
DE2507405C2 (de) | Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage | |
DE2364323C2 (de) | Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage | |
DE2720842C3 (de) | Datenübertragungssystem | |
EP0010135B1 (de) | Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchführen von Ein-/Ausgabeoperationen | |
DE2359037C2 (de) | Rechenanlage | |
DE2551793C2 (de) | Indirekt gesteuerte Vermittlungsanlage, insbesondere Fernsprechvermittlungsanlage, und Verfahren zu deren Betrieb | |
DE2359036C2 (de) | Vorrichtung zum Koppeln eines Zentralspeichers mit mehreren Rechenanlagen | |
EP0108416B1 (de) | Vorrichtung zur Steuerung des Kanalstarts bei einer integrierten mikroprogrammierten Vorrichtung mit mindestens zwei unabhängigen Kanälen zum Handhaben von Informationen und Verfahren zu ihrem Betrieb | |
DE1449542C (de) | Datenverarbeitungsanlage zur gleich zeitigen Ausfuhrung mehrerer Programme | |
DE2321232C3 (de) | Schaltung zur Übertragung der Adresse einer perlpheren Einheit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OGA | New person/name/address of the applicant | ||
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition |