DE2507405A1 - Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage - Google Patents

Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage

Info

Publication number
DE2507405A1
DE2507405A1 DE19752507405 DE2507405A DE2507405A1 DE 2507405 A1 DE2507405 A1 DE 2507405A1 DE 19752507405 DE19752507405 DE 19752507405 DE 2507405 A DE2507405 A DE 2507405A DE 2507405 A1 DE2507405 A1 DE 2507405A1
Authority
DE
Germany
Prior art keywords
task
peripheral device
queue
bit
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19752507405
Other languages
English (en)
Other versions
DE2507405C2 (de
Inventor
Jean Maurice Finet
Tuong Duc Luu
Guyen Ngoc Luyen N
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SA filed Critical Bull SA
Publication of DE2507405A1 publication Critical patent/DE2507405A1/de
Application granted granted Critical
Publication of DE2507405C2 publication Critical patent/DE2507405C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Description

Compagnie Honeywell Bull
94, Avenue Gambetta
75960 Paris (20) Frankreich
Unser Zeichen: H 1037
Verfahren und Anordnung zum Synchronisieren der Tasks in Peripheriegeräten in einer Datenverarbeitungsanlage
Die Erfindung betrifft die Optimierung der Zeit und des Zwischenraums zwischen mehreren "Tasks" in einem multiprogrammierten Datenverarbeitungssystem.
In den Mehrprozessorsystemen wird üblicherweise ein Eingabe/Ausgabe-Steuerprogramm oder Kanalprogramm verwendet, um die Arten von Übertragungen festzulegen, die zwischen
509834/0920
der Zentraleinheit und einem Peripheriegerät stattfinden sollen. Wenn das gerade ablaufende Programm eine Eingabe/ Ausgabe—Operation auszuführen wünscht, bezeichnet bei diesem Schritt der Befehl die Adresse des Peripheriegeräts, in welchem die Operation ausgeführt werden soll, sowie die Adresse des entsprechenden 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 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, werden die Informationen über den Steuerbefehl und über die Nummer des Peripheriegeräts in eine Warteschlange eingereiht, um in einem späteren Zeitpunkt wieder entnommen zu werden. Wenn das Peripheriegerät verfügbar ist, wird die Verbindung hergestellt und die Übertragung von Informationen initialisiert, das Kanalprogramm wird ausgelöst und die Ausführung jedes Steuerbefehls erfolgt im Takt der Abrufe des Peripheriegerä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 Peripheriegerät gibt dann eine Übertragungsanforderung ab, die angibt, ob es sich um eine Eingabe- oder Ausgabeübertragung handelt. Die Übertragung wird ausgeführt und es können sich an sie weitere Übertragungen anschliessen oder nicht. Das Ende .der
509834/0920
Austauschvorgänge wird durch ein Dienstanforderungsendesignal ausgedrückt.
In einem triultiprogrammierten Datenverarbeitungssystem, welches 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, dass 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 Steuerung einer anderen Task, die eine höhere Priorität als die übrigen auszuführenden Tasks hat, usw. Auf den Stufen der weniger vorrangigen Tasks sind Vorsichtsmassnahmen 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 erlaubt, die Zentraleinheit von dem Management der Peripheriegeräte vollkommen unabhängig zu machen. Dieses System allein 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 Konfigurationen eine nicht vernachlässigbare zeit warten, bevor sie die Steuerung des Kanalprogramins haben, welches ihnen zugewiesen ist, was insbesondere dann der Fall ist, wenn diese Peripheriegeräte langsam sind.
Durch die Erfindung soll deshalb eine Anordnung geschaffen
509834/0920
werden, die, insgesamt betrachtet, das gleichzeitige Management der Tasks ermöglicht oder die in anderer Weise die Verbindung zwischen der Zentraleinheit und den verschiedenen Peripheriegeräten transparent macht.
Die Erfindung zielt insbesondere darauf ab, eine Organisation des multiprogrammierten Datenverarbeitungssystems, das eine Zentraleinheit CPU enthält, die mit Gerätesteuerungen PCU verbunden ist, zu schaffen, in der jede Gerätesteuerung gegenüber der Zentraleinheit und den Peripheriegeräten im Masterbetrieb arbeitet, um die Verarbeitungskapazitäten der Zentraleinheit zu vergrössern,und in der die Verbindung zwischen der Zentraleinheit und den Peripheriegeräten über eine Gerätesteuerung ausreichend "transparent" ist, um sagen zu können, dass die Ausführung der verschiedenen Tasks durch die Gerätesteuerung gleichzeitig erfolgt. Deshalb werden die Tasks in zweckdienlicher Weise gleichzeitig räumlich und zeitlich verteilt. Die räumliche Verteilung erfolgt in den geeigneten Speicherzonen, 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 PCU mit 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 von 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
509834/0920
Verarbeitung der Unterbrechungen der Hardware und das Management der Tasks im Hinblick auf ihre Ausführung. Mit AFP (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-Veraion, die jeder besonderen Konfiguration von an die Gerätesteuerung PCU angeschlossenen Peripheriegeräten angepasst ist. Jede Firmware-Version arbeitet unter der Überwachung des Mikrobetriebssystems MIOS. Ein Firmwaresystem AFP führt die durch das Mikrobetriebssystem MIOS oder durch die Kana!programme (über das Mikrobetriebssystem MIOS) erzeugten Steuerbefehle aus und berücksichtigt die Signale der Peripheriegeräte. Es enthält folgende Bestandteile:
1. 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äteanschluss 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 mikroprogrämmierten
509834/0920
_ £L mm
Operationen, deren Ausführung den Ablauf einer Seqaenz 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 AFP gehörenden asynchronen spezifischen Funktionen mit Hilfe von Mikrobefehlen. Die Tatsache, dass einer Task entsprechende Mikrobefehle ausgeführt werden, bringt sie in de"n Zustand "im Ablauf begriffen", man sagt dann, dass 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 Eigenschaft haben, bei dem Eintritt von Ereignissen EV, und EV„ (Ereignismeldung Nr. 1 und Nr. 2) automatisch ausgelöst zu werden und nicht durch andere Tasks adressiert werden zu können, d.h./ dass 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.
Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung von Ausführungsbeispielen der Erfindung. In den Zeichnungen zeigen:
Fig. 1 das Verarbeitungssystem, welches aus
der Zentraleinheit CPU, der Gerätesteuerung PCU und verschiedenen Peripheriegeräteanschlüssen DA besteht,
509834/0920
Fig. 2 die Gerätesteuerung,
Fig. 3 in vereinfachter Form die Zustands-
übergänge der verschiedenen Tasks,
Fig. 4 ein Funktionsdiagramm, welches die
durch eine Hardwareunterbrechung EV, hervorgerufenen Wirkungen und die Wechselwirkungen des Mikrobetriebssystems MIOS und der Tasks zusammenfasst,
Fig. 5 das Format eines Blocks DACB zur
Steuerung eines Peripheriegeräteanschlusses,
Fig. 6 das Format eines Blocks MCB zur
Steuerung von Tasks,
Fig. 7 eine Zone des Speichers M, welche
die Formate der Wörter CPCW-TQHP und LCM angibt,
Fig. 8 · das Format einer Tabelle des Dispatchers, Fig. 9 das Format einer Tabelle ALCT,
die Fig, 10a bis 10c ein Beispiel
der Verkettung der Blöcke MCB in einer Warteschlange der Bereit-Zustände,
die Fig. 11a bis 11c eine Darstellung einer Verkettung der Blöcke A MCB in der "TIMER"-Warteschlange,
Fig. 12 ein Diagramm, welches die Folge der
509834/0920
Operationen zeigt, die auszuführen sind, wenn ein Ereignis EV, an einem Peripheriegeräteanschluss oder an dem TIMER eintritt,
Fig. 13 ein Diagramm, welches die Betriebs
weise des Task-Dispatchers oder Task—Zuteilers veranschaulicht.
Fig. 14 ein Diagramm, welches den Mechanismus
des Aufrufs
schaulicht.
des Aufrufs einer Task EV~ veran-
Fig. 15 ein Diagramm, welches den Aufruf einer
gewöhnlichen Task veranschaulicht,
Fig. 16 ein Diagramm, welches die Schritte
zeigt, die für die Rückkehr zu einer unterbrochenen Task erforderlich sind,
Fig. 17 die Aktionen, die im Anschluss an
einen Mikrobefehl "TERMINATE" ausgeführt werden,
Fig. 18 die Aktionen, die im Anschluss an
einen Mikrobefehl "ACTIVATE" ausgeführt
werden,
Fig. 19 die Aktionen, die im Anschluss an einen
Mikrobefehl "SUSPEND" ausgeführt
werden,
Fig. 20 die Aktionen, die im Anschluss an einen
Mikrobefehl "RQT0" ausgeführt werden,
Fig. 21 die Operation des Maskierens sämtlicher
Tasks, bei welchen es sich nicht um
983 4/09 20
die Task EV-, handelt, in der Gerätesteuerung PCU,
Fig. 22 die Operation der entsprechenden De
maskierung,
Fig. 23 die Operation des Maskierens des
Signals EVp eines Peripheriegeräteanschlusses,
Fig. 24 die Operation des entsprechenden De—
maskierens des Signals EVp, und
Fig. 25 ' die Aktionen, die im Anschluss an den
Mikrobefehl STDA ausgeführt werden.
Fig. 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 zu einem Peripheriegerät übertragen werden sollen, gehen durch die Schnittstelle PSI 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 P, bis P darstellen.
Fig. 2 zeigt die Gerätesteuerung 101 von Fig.l. 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 eingereichten deutschen Patentanmeldung der Anmelderin, für die die Priorität der französischen Patentanmeldung Nr. 74 05792 in Anspruch genommen worden ist. Die Gerätesteuerung PCU besteht aus einer
509834/0920
Verarbeitungseinheit 200 (nachfolgend dem englischen Sprachgebrauch entsprechend such als MPU bezeichnet), einer Schnitt stellensteuereinheit 2j5 (nachfolgend auch als ICÜ bezeichnet), η Peripheriegeräteanschlussgattern £>AI, bis DÄI ) 234, die jeweils mit dem entsprechenden Geräteanschluss DA verbunden sind und von denen allein die Anschlussgatter DAI, und DAI dargestellt sind,aus ρ Gattern PSI, PSI1 bis PSI (lediglich ein PSI-Gatter 233 ist dargestellt) für den Dialog zwischen der Zentraleinheit CPU und der Geräte— steuerung PCU, und einem TIMER-Gatter 236, welches zu regel— massigen Zeiten eine TIMER-Unterbrechung EV, erzeugt.
Jedem Gatter ist eine Nummer zugeteilt. Den PSI-Gattern sind die Nummern 0 bis ρ - 1, den DAI-Gattern die Nummern ρ bis ρ + η - 1 und dem TIMER-Gatter die Nr. ρ + η zugeteilt.
Die Verarbeitungseinheit 200 besteht hauptsächlich aus einem Speicher 202, in den die Mikroprogramme und die Tabellen des Mikrobetriebssystems MIj2fö sowie die Mikroprogramme und Tabellen jedes Firmwaresystems AFP eingetragen sind, aus einem Register (R0SAR)2O4, 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 äusseren 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, dxe die Funktion von Arbeitsregistern haben, welche die Übertragung oder den Empfang von zu der Schnittstellensteuereinheit ICU gehenden
5.0 9834/0920
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)2O8, 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 21O 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 Digitalwert 1 gesetzt, wenn das Signal EV-, , welches den Eintritt eines Ereignisses EV-, 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 EV-, zu verwenden. Deshalb ist es während des Eintritts eines vorrangigen Ereignisses EV, 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 EV, gesperrt, welches das Vorhandensein eines Ereignisses EV, an dem Eingang der UND-Schaltung 216 meldet und dadurch bewirkt, dass eine Task EV, durch eine andere Task EV, nicht unterbrochen werden kann. Die Kippschaltung 215 (die auch als Kippschaltung EE bezeichnet wird) ermöglicht, die Unterbrechungen EV, zu maskieren. Ihr Wert kann durch ein Mikroprogramm verändert werden, der Digitalwert 0 der Kippschaltung 215 verhindert die Übertragung des Signals s über die UND-Schaltung 216, damit die Task, die gerade
50983A/0920
ausgeführt wird, nicht unterbrochen 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 Anschluss 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 Wiederanschluß 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 EV, zu identifiziere^ und der die Priorität dem Signal EV, zuweist,dass an den DAI- oder TIMER-Gattern mit der niedrigsten Nummer (das TIMER-Signal EV, hat die niedrigste Priorität) eines Decoders 222 für den Inhalt des Registers DNR vorhanden ist, um das DAI-, PSI- oder TIMER-Gatter auszuwählen, und aus einer ODER-Schaltung 220, die der Verarbeitungseinheit MPU das Vorhandensein eines Signals EV, meldet. Das TIMER-Gatter 236 hat hauptsächlich die Aufgabe, aus dem Taktgeber 230 zu regelmässiger Zeit ein Signal EV, zu liefern.
Die Signale EV, werden zu dem Codierer 221 übertragen, der in Binärform eine dem Signal EV, mit der höchsten Priorität entsprechende Codegruppe CEV, abgibt. Diese Codegruppe CEV,
509834/0920
wird in das Register DNR geladen.
Wenn ein oder mehrere Signale EV, an einem DAI- oder TIMER-Gatter vorhanden sind, liefert die ODER-Schaltung 220 ein Signal EV1 das, wenn die UND-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 EV, werden zu dem Eingang der ODER-Schaltung 224 übertragen, die sich in dem TIMER-Gatter 236 befindet, dessen Ausgang mit dem Eingang der UND-Schaltung 22 3 verbunden ist und deren anderer Eingang durch das Signal "SEL ρ + n" (Signal für die Auswahl des TIMER-Gatters, das von dem Decoder 222 kommt) freigegeben wird. Der Ausgang der UND-Schaltung 223 liefert ein Signal UEV2 , welches in der UND-Schaltung 214 durch den Inhalt eines Mikrobefehls des Registers R0R getestet wird. Das PSI-Gatter 233 erzeugt ein Signal EV2 hauptsächlich dann, wenn ein Kanalprogramm wartet oder wenn ein Befehl in der Zentraleinheit wartet. Das PSI-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 PSI-Gatter durch den Decoder 222 ausgewählt wird.
Zusammenfassend kann gesagt werden, dass nur eine einzige Unterbrechung der Hardware vorhanden ist, die durch das Erscheinen zumindest eines Signals EV1 an einem der DAI- und TIMER-Gatter bewirkt wird. Wenn die Unterbrechung auftritt und wenn sie nicht maskiert ist, bewirkt sie, dass die Kippschaltung 217 auf 1 gesetzt wird, dass der Inhalt des Registers (DNR)208 in dem Register (ADNR)209 aufbewahrt wird, dass die Codegruppe CEV. in das Register 208 übertragen wird.
509834/0920
dass die Adresse für die Rückkehr zu der unterbrochenen gewöhnlichen Task in den Registern R„ und R (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 aufbewahrt wird, dass der Inhalt des Registers 212 in dem Register R7 (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 aufbewahrt wird, die unbedingte Verzweigung durch das Mikrobetriebssystem MI0S zu der Startadresse der Task EV,, die aus dem Inhalt des Registers 208 berechnet wird, wobei der Ablauf der Task EV1 unter der Steuerung des Mikrobetriebssystem M10S erfolgt. Die Rückkehr zu der unterbrochenen Task erfolgt ab dem Mikrobefehl RAI (Rückkehr nach Unterbrechung), der in dem Ablauf der Task EV, angetroffen 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 R„ und R der
Γι Γ
Bank von oberen Registern befindet, wobei der Inhalt des Registers 212 durch den Inhalt des Registers R7 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.
509834/0920
der an einer Task für das Task-Management auszuführen ist.
Fig. 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 Aus'fü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, dass 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. geschiizt)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 gewohnlichen Tasks vorhanden und werden durch den zugeordneten Task-Steuerblock oder MCB gesteuert. Eine Task ist in dem Zustand "bereit", wenn eine Anforderung ergangen
509834/0920
ist, sie sobald wie möglich auszuführen. Der Block MGB, 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 M10S, dass 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 als in dem Zustand "nicht geplant" befindlich bezeichnet. Insbesondere geht eine Task, die die Schlange RQ verlässt, 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 Mikrobetriebssystem MI0S modifiziert werden, wobei in den beiden ersten Fällen ein Task-Management-Mikrobefehl ausgeführt worden ist.
In Fig. 3 werden die gestrichelt dargestellten Übergänge durch das Mikrobetriebssystem MI0S oder durch die Hardware für die Tasks EV, festgelegt. Die mit ausgezogenen Linien dargestellten Übergänge werden durch Mikrobefehle ausgeführt, die folgende Bedeutungen haben. Der Mikrobefehl RAI ist der letzte Mikrobefehl einer Task EV1. der
J-, 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
509834/0920
wird, bei welcher es sich nicht um eine Task EV1 handelt, der vorhandene Ausführungszustand geht von dem Zustand "in der Ausführung begriffen" in den Zustand"inaktiv" über- der folgende Ausführungszustand, der nur für die gewohnlichen 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 Ausfuhrungszustands "nicht geplant" oder "wartend" ist, geht der Wert des folgenden Zustands auf "wartend" ü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 Ausfuhrungszustands 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 Täsks eines Firmwaresystems AFP annuliert.
Für das Unterbrechungssystem der Tasks gibt es zwei Klassen,
509834/0920
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 EV1 vorbehalten ist. Allgemein können alle Tasks durch diese Stufe zwar unterbrochen werden, die Ausführung einer Task EV, kann jedoch nicht durch eine andere Task EV, derselben Stufe unterbrochen werden, wobei dieses Verbot durch die Hardware erfolgt, wie es in Fig. 2 die Zusammenschaltung der Kippschaltung 217 und der UND-Schaltung 216 zeigt. Wenn nämlich durch das Aufrufen einer Task EV, 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 dass jedes Erscheinen eines neuen Signals EV, somit auf den Ablauf der in der Ausführung begriffenen Task EV, keinen Einfluss hat. Es ist auch möglich, das Erscheinen der Signale EV, mit Hilfe eines Mikrobefehls zu maskieren, wenn die EE-Kippschaltung 215 auf dem Digitalwert Null ist, oder in jedem DAI-Gatter durch eine nicht dargestellte Kippschaltung El, die auf den Digitalwert O 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 öder durch eine Task EV« unterbrochen werden, eine gewöhnliche Task kann jedoch durch Mikrobefehle ununterbrechbar gemacht werden, der Mikrobefehl MSKP erlaubt, alle Tasks mit Ausnahme der Tasks EV, zu maskieren, so dass 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 Task angesehen werden kann. Die Demaskierungsoperation erfolgt durch einen Mikrobefehl UMSP. Es besteht auch eine Möglichkeit, eine Task EV2 zu maskieren, indöm ein Mikrobefehl MSKE ausgeführt wird, wobei die Demaskierung mit Hilfe eines anderen Mikrobefehls EMSE erfolgt.
50 9834/0920
Das Funktionsdiagramm von Fig. 4 fasst 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 EV-, kann aus einem DAI-Gatter oder aus einem Taktimpuls stammen, der zu einem festgelegten Zeitpunkt durch das TIMER-Gatter 236 von Fig. 2 geliefert wird, beispielsweise jede Millisekunde. Wenn das Ereignis EV-, aus einem DAI-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 Peripherxegeräteanschluss DA zugeordnete Task EV, 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 EV, kann auch aus dem TIMER-Gatter stammen. In diesem Fall wird die TIMER-Warteschlange wieder fortgeschrieben. Bei dieser FortSchreibung wird festgestellt, ob die Weckzeit des ersten Blocks MCB in der TIMER-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 TIMER-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 PSI-Gatter vorhanden ist; danach wird die Warteschlange der Tasks EV2 abgetastet, Schritt 405. Wenn
509834/0920
ein Signal EV2 vorhanden ist, wird die entsprechende Task EV« durch das Mikrobetriebssystem MIOS ausgelöst, Schritte 406 und 407. Ein Signal EV„ kann zu einem räumlichen Kanal einer Schnittstelle PSI gehören, der die Zentraleinheit mit der Gerätesteuerung oder mit einem DAI-Gatter verbindet, welches meldet, dass ein Ereignis in der Zentraleinheit oder in einem Peripheriegerät eingetreten ist.
Wenn der letzte Mikrobefehl einer Task EV2 ausgeführt ist, wird die Abtastprozedur der Task EV5 wieder begonnen, um festzustellen, ob es nicht eine auszulösende andere Task EV« 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 Stufe 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 EV2 wieder aufzunehmen.
Selbstverständlich ist es möglich, dass 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 Figuren 5 bis 8 zeigen die Tabellen der Parameter, die sich in dem Speicher 202 von Fig. 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
509334/0920
Wiederauffinden der Adresse des zugeordneten Blocks DACB anhand der DAI-Gatter-Nummer. Jeder Block DACB nimmt einen Raum des Speichers 202 ein und kontrolliert die Operationen an dem zugeordneten DAI-Gatter. Das Wort O enthält die mit MSA, bezeichnete absolute Startadresse der Task EV-, . 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 EV? 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 DAI-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 DAI-Gatter zugeordneten ersten Blocks MCB. Das Byte 1 des Wortes 6 oder MCBNB enthält die Anzahl von dem DAI-Gatter zugeordneten Blöcken MCB. Das Byte 2 des Wortes 6 enthält die Bits E und S des Zustands des Peri— pheriegeräteanschlusses. Wenn das Bit E gleich 1 ist, ist das Ereignis EV„ des DAI-Gatters maskiert. Wenn das Bit S gleich 1 ist, werden sämtliche Operationen an dem DAI-Gatter angehalten ( es kann keine zugeordnete Task mehr ablaufen ).
Fig. 6 zeigt das Format eines Tasksteuerblocks MCB. Jeder Block nimmt einen Raum des Speichers 202 von Fig. 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 Nummer des DAI-Gatters fest, mit welchem der Block MCB verbunden ist. Die Bits 8 bis 10 des Wortes
503834/0920
25Ό7405
legen die Prioritätsstufe der Task fest, der der Block MCB zugeordnet ist. Die Bits 12 und 13 bzw. TQ und RQ des Wortes O 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 vorge— sehen.
TQ . RQ = 01. die Task wartet in der TIMER-Wärteschlange TQ.
TQ . RQ = 1O. die Task ist in dem Zustand "bereit" in der Schlange RQ der "bereit"-Zustände.
Die mit NLP und PLP bezeichneten Wörter 1 und 2 werden weiter unten beschrieben.
Das Wort 3 hat für die vorliegenden Erfindung keine Bedeutung.
Das mit ABSA bezeichnete Wort 4 gibt die .Anfangsadresse der zugeordneten Task an.
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 be- * schrieben.
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 YREDY 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 Fig. 2 geladen, wenn die Task gestartet wird.
Das Bit 11 oder das Bit A des Wortes 7 gibt an, dass der folgende Ausführungszustand der Task durch einen
509834/0920
Mikrobefehl "ACTIVATE", der durch das an diesen Block MCB angeschlossene Firmwaresystem AFP erzeugt worden ist, in den Zustand "bereit" übergegangen ist. Das Bit 12 oder Bit T des Wortes 7 gibt an, dass ein Mikrobefehl RQT0 die Task in den Wartezustand versetzt hat, indem er ihr für den Übergang in den Zustand "bereit" eine Verzögerung gegeben hat, und dass die Verzögerung jetzt abgelaufen ist.
Die übrigen Bits des Feldes YREDY geben weitere Ereignisse an. So können sie anzeigen, dass 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 PSI-Gatter 233 von Fig. 2 unterrichtet. Die Initialisierungssequenzen eines Programms sind in der deutschen Patentanmeldung P 24 56 529.5 beschrieben, für die die Priorität der französischen Patentanmeldung Nr. 73 42714 in Anspruch genommen worden ist. Es gibt auch noch ein weiteres Bit des Feldes YREDY, welches meldet, dass eine ABBRUCH-Ursaehe (vgl. das Glossar für die Definition) durch das Mikrobetriebssystem MIOS festgestellt worden ist und dass von dem Firmwaresystem AFP verlangt wird, die Operationen aufzugeben, d.h. das gerade ablaufende Kanalprögramm 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.
Fig. 7 zeigt eine Zone des Speichers 202 von Fig. 2, welche die Formate der Wörter CPCW, TQHP und LCM angibt,
509834/0920
deren Adressen im Speicher festgelegt sind. Das Wort CPCW gibt den Zustand der Task an, die in der Gerätesteuerung PCU in der Ausführung begriffen ist. Die Zone NPC besteht aus drei Bits, die von dem Bit O 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 (O ist nicht bestimmt, 1 ist dem Ereignis EV, zugeordnet). Es ist offensichtlich, dass, wenn die Zone NPC η Bits enthielte, man 2 - 2 Stufen von gewöhnlichen Tasks festlegen könnte. Das Bit M gibt an, dass die Seguenz maskiert ist, d.h. dass die Task, die in der Ausführung begriffen ist, vorübergehend der Stufe 2 angehört. Das Bit L gibt an, dass die Task die Stufe 2 hat. Das Bit D gibt an, dass der "Dispatcher" in der Ausführung begriffen ist. Das Bit P gibt an, dass eine Task in der Ausführung begriffen ist.
Es ist festzustellen, dass die Bits M, L oder D Tasks mit Priorität entsprechen.
Das als "flag" oder Kennzeichen bezeichnete Bit F gibt an, dass 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 die 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.
509834/0920
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 Fig. 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, dass 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 Schützzonen 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 DNR-Registers 208 von Fig. 2 auf, das Feld SP bewahrt den Inhalt des SP-Registers 212 von Fig. 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 auszuführen war, die sechsten Zonen und die folgenden Zonen erlauben, den Inhalt der verallgemeinerten Register der unteren Registerbank der Doppelregisterbank 210 von Fig. 2 aufzubewahren (allein die gewöhnlichen Tasks können unterbrochen sein und arbeiten in der unteren Bank).
Fig. 9 zeigt eine feste Tabelle ALCT in 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 Figuren lOa, b, c und die Figuren 11a, b, c zeigen
509834/0920
die Schlangen RQ bzw. TQ. Das sind Zweirichtungsketten, d.h. dass 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, dass 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 NLP und PLP, die in dem ersten und zweiten Wort eines Blocks JlCB enthalten sind, die Werte annehmen, welche für NLP erlauben, die Adresse des folgenden Blocks MCB wieder aufzufinden, und für PLP erlauben, die Adresse des vorangehenden Blocks MCE wieder aufzufinden. Wenn ein Block MCB eine Kette verlässt, soll der Wert des Zeigers durch die Adresse des Blocks MCB, der dem die Kette verlassenden 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. lOa 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, dass, wer als erster eingegeben wurde, als erster ausgegeben wird, d.h., dass für eine, bestimmte Stufe N der erste aktivierte Block MCB als erster ausgeführt wird. Diese Schlange ist dadurch gekennzeichnet, dass 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 in Fig. 8
509834/0920
angegeben. RQHP bezeichnet den ersten Block MCB der Schlange und RQTP den letzten. Jeder Block MCB ist mit dem vorangehenden Block und mit dem folgenden Block in der oben bereits angegebenen Weise zwar verbunden, der Wert PLP des ersten Blocks MCB und der Wert NLP des letzten gibt jedoch die Adresse des Zeigers RQHP in der Tabelle des Dispatchers der Stufe N an. Fig. lob 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. Fig. lOc zeigt den Fall, in welchem ein einziger Block MCB in der Schlange verkettet ist. RQHP gibt dann die Adresse dieses Blockes MCB;und NLP die Adresse von RQHP an. PLP gibt dann die Adresse von RQHP an und RQTP gibt die Adresse des Blocks MCB an.
Fig. 11a zeigt eine Darstellung einer Verkettungsart eines Blocks MCB in einer TIMER-Warteschlange TQ. Diese Warteschlange ist kreisförmig und hat somit weder einen Kopfnoch einen Schwanzblock MCB. Die Blöcke MCB sind in der Reihenfolge des Weckens angeordnet, die in jedem Block MCB in dem Wort 6 oder TOM (vgl. Fig. 6) angegeben ist. Jeder Block MCB ist mit dem ihm vorangehenden Block MCB durch die Angabe PLP des Wortes 2 des Blockes MCB und mit dem ihm folgenden Block MCB durch die Angabe NLP des Wortes 1 des Blocks MCB verbunden. Der Zeiger TQHP zeigt immer auf den Block MCB, dessen Weckzeit am nächsten ist. Ein Block MCB kann durch einen Mikrobefehl "Aktivate" aus der TIMER-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
50983 A /0920
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 Schlange TQ gibt, Fig. lic, wird der Inhalt des Zeigers TQHP bei der Abgabe dieses Blocks MCB auf Null gestellt, was gewöhnlich angibt, dass die Schlange TQ leer ist.
Wenn irgendein Block MCB die Kette verlässt, wird der Wert des Wortes NLP des vorangehenden Blocks MCB 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, weist der Zeiger TQHP auf die Adresse dieses ersten Blocks MCB hin. Die Wörter NLP und PLP weisen dann auf sich selbst hin, Fig. lic. Wenn weitere Blöcke MCB in der TIMER-Warteschlange warten, wird dieser Block MCB in Abhängigkeit von der Angabe des Inhalts in dem Wort 6 oder TOM des Blocks MCB hinter dem Block MCB 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 MCB an, der ihm folgt, der Wert des Worts NLP des Blocks MCB, der ihm vorangeht, und der Wert des Worts PLP des Blocks MCB, der ihm folgt, werden an der Adresse des Blocks MCB 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 Fig. 4 dargestellt ist, wird jetzt in der folgenden Beschreibung
509834/0920
ausführlich erläutert. In dieser Beschreibung wird der dynamische Betrieb des Systems mit Hilfe der Hardwaregeräte 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 EV, in einem Peripheriegeräteanschluss oder in dem "TIMER" eintritt. Wenn die Kippschaltung 215 (Kippschaltung EE) von Fig. 2 nicht durch ein Mikroprogramm auf Null gestellt worden ist, wird jedes Signal EV,, das an einem der DAI- oder TIMER-Gatter von Fig. 2 erscheint, der Verarbeitungseinheit MPU durch das Signal EV, an dem Ausgang der ODER-Schaltung 220 von Fig. 2 gemeldet. Das Signal EV, bewirkt, dass die gerade ablaufenden Operationen durch die Hardware unterbrochen werden und dass die Hardware die Kippschaltung 217 (Kippschaltung UL) von Fig. 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 R,, und R,5 (nicht dargestellt) der oberen Registerbank der Doppelregisterbank sowie den gegenwärtigen Inhalt des Registers 208 (Register DNR) von Fig. 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 MIOS-Prozedur handelt, die die Unterbrechung der Hardware berücksichtigt. Das Mikrobetriebssystem MI0S liest dann in dem Schritt 1 202 den Inhalt des Registers 208 von Fig. 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 des Gatters mit der höchsten Priorität unter allen denjenigen Gattern, die ein Signal EV, ausgesandt haben. Ausgehend von dieser Nummer
509834/0920
sucht das Mikrobetriebssystem MI0S in dem Schritt 1 203 eine Speicheradresse MSA, in dem Peripheriegerätanschlusssteuerblock DACB, der dem ausgewählten DAI-Gatter entspricht.
Diese Speicheradresse bildet die Anfangsadresse der Task EV,, die in dem ausgewählten Peripheriegeräteanschluss ausgeführt werden soll. In dem Schritt 1 204 von Fig. 12 wird der Inhalt des Registers 212 (Register SP) von Fig, 2 in einem besonderen Register R7 (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 von Fig. 2 aufbewahrt. In dem Schritt 1 205 von Fig. 12 erfolgt eine Verzweigung zu der Adresse MSA,. Wenn die Task EV, keine TIMER-Task EV, ist, wird die Task EV, des Firmwaresystems AFP, die dem ausgewählten Peripheriegeräteanschluss entspricht, ausgelöst (Schritt 1 207). 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 R„ und R_ der 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 1 208 bis 1 209 darin, festzustellen, ob nicht ein Block MCB 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 1 208 liest das Mikrobetriebssystem MI0S das Wort TQHP (vgl. Fig. 7), welches eine feste Adresse im Speicher hat. Wenn der Inhalt dieses Worts leer ist, übergibt das Mikrobetriebssystem MI0S an den Schritt 1 216 "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 MCB den Inhalt des Worts 6 oder TOM (Schritt 1 209) (vgl. Fig. 6).
50983A/0920
Wenn der Inhalt des Worts TOM nicht Null ist, verringert das Mikrobetriebssystem MI0S den Inhalt des Worts TOM um Eins und übergibt' die Kontrolle an den Schritt 1 216. Wenn der Inhalt des Worts TOM gleich O ist, bedeutet das, dass die Zeit gekommen ist, dass ein Block MCB der TIMER-Warteschlange in die Warteschlange der Bereit-Zustände übergeht, und dieser Block MCB wird van der Warteschlange TQ abgegeben und in die Schlange RQ der Bereit-Zustände entsprechend seiner Prioritätsstufe eingereiht. Das Bit TQ oder Bit 12 des Wortes Null des entsprechenden Blocks MCB (vgl. Fig. 6) wird in dem Schritt 1 211 auf Null gestellt, während das Bit RQ oder Bit 13 des Worts O dieses Blocks MCB in dem Schritt 1 212 auf Eins gestellt wird. In dem Schritt 1 213 wird das Bit F oder Kennzeichen-Bit des Worts CPCW (Fig. 7) auf 1 gesetzt, um anzuzeigen, dass eine Task in die Schlange der Bereit-Zustände übergegangen ist. In dem Schritt 1 214 wird das Bit T in dem Byte YREDY des entsprechenden Blocks MCB auf 1 gesetzt. Das Management der TIMER-Warteschlange ist bereits Gegenstand der altern deutschen Patentanmeldung P 23 48 822.4 der Anmelderin.
Das Mikrobetriebssystem MI0S überprüft danach in dem Schritt 1 216, ob eine Task mit Priorität in der Ausführung begriffen ist. Zu diesem Zweck liest sie in dem Wort CPCW den Zustand der Bits D, L und M.
Wenn D=I, wird gerade der Dispatcher ausgeführt, wenn L=I, gehört die unterbrochene Task der Stufe 2 an,
wenn M=I, ist die Sequenz maskiert und die Task gehört vorübergehend der Stufe 2 an.
Somit, wenn D=I oder
L=I oder M=I, hat die Task, die unterbrochen worden ist, Priorität und wird in dem Schritt 1 218 wieder ausgelöst. Wenn die unterbrochene Task keine Priorität hat, besteht der Schritt 1 217 darin,
509834/0920
dass überprüft wird, ob eine Task EV2 vorhanden ist.
In Fig. 2 zeigt das 'Signal EV„ am Ausgang der UND-Schaltung 223 an, wenn das TIMER-Gatter ausgewählt ist, ob zumindest ein Signal EV2 an einem der DAI- oder PSI-Gatter vorhanden ist (dieser Globaltest bringt einen Ausführungszeitgewinn mit sich), oder ob das Bit F des Wortes CPCW 1 ist, was offenbar der Fall ist, wenn das Mikrobetriebssystem MIOS die Operation flag = 1 in dem Schritt 1 213 ausgeführt hat, was aber nicht zwangsläufig gilt, wenn das Mikrobetriebssystem MIOS direkt von dem Schritt 1 208 oder 1 209 zu dem Schritt 1 216 übergegangen ist.
Der Test des Bits F erbringt ebenfalls einen Ausführungszeitgewinn (somit einen Gewinn an Leistungsfähigkeit des Mikrobetriebssystems MIJ^s)x da die Schlangenvon 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=O wird die unterbrochene Task wieder ausgelöst, Schritt 1 218.
Wenn man nämlich nicht in dem Dispatcher (D = O) ist, heisst das, dass 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=I, wird der Schritt 1 300 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
509834/0920
Eintritt in den Dispatcher wird das Bit D des Wortes CPCW auf 1 gesetzt. Das Bit F des Wortes CPCW wird in dem Schritt 1 302 auf Null rückgesetzt und in dem Schritt 1 313 überprüft das Mikrobetriebssystem MIOS, ob nicht zumindest eine Task EV9 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 = O entspricht. Wenn es keine Task EV9 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 EV9 wartet, die diesem Wert des Registers DNR entspricht. Wenn die Task EV9 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 = η + p, wobei ρ die Anzahl von PSI-Gattern ist, die von O bis ρ numeriert sind, und wobei η die Anzahl von DAI-Gattern ist, die von ρ bis ρ + η - 1 numeriert sind). Wenn eine wartende Task EV9 für einen Wert DNR ^p-I vorhanden ist, so gehört diese Task EV- zu einem PSI-Gatter.
Das entsprechende Mikroprogramm wird dann in dem Schritt . 1 316 ausgelöst und durch den Befehl TERMINATE beendet, dessen Konsequenzen in dem Diagramm von Fig. 17 dargestellt sind, in welchem der Anfangsschritt die Nummer 1.700 tr.ägt. Wenn eine Task EV9 für einen Wert ρ ^: DNR ^ ρ + η - 1 wartet, gehört diese Task EV9 zu einem DAI-Gatter. das entsprechende Mikroprogramm wird dann ausgelöst, wenn das Bit E des Peripheriegeräteanschlusssteuerblocks DACB nicht gleich 1 ist, d.h. wenn die Task EV9 des entsprechenden Peripheriegeräteanschlusses DA nicht maskiert ist. Wenn das Bit E=I ist, kehrt das Mikrobetriebssystem MI0S zu dem Schritt 1 307 zurück, der Inhalt des Registers DNR wird um 1 erhöht und die Abtastung der Tasks EV9 wird wiederaufgenommen. Wenn das Bit E=O ist, geht das Mikrobetriebssystem MI0S zu dem Schritt 1 400 von Fig. 14 über.
509834/0920
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. Fig. 8), ob der Inhalt RQHP des 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 MCB 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 MCB in der Schlange der Bereit-Zustände mit der Stufe 3 vorhanden ist. Von der Stufe 3 bis zur Stufe 7 (oder 2n - 1) arbeitet das Mikrobetriebssystem MIOS für jede Stufe N in folgender Weise. In dem Schritt 1311 überprüft es das Bit B, welches in dem Wort 3 der Tabelle des Dispatchers mit der Stufe N von Fig. 8 vorhanden ist. Wenn B=I ist, bedeutet das, dass 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 unterbrochenen Task. Wenn B=O 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 N) leer ist, geht das Mikrobetriebssystem MIOS zu der Stufe N + 1 über, Schritt 1313. Wenn sie nicht leer ist, wird die gewöhnliche Task, die dem ersten Block MCB 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 = 2n-1 fortgesetzt. Wenn das Mikrobetriebssystem MIOS keinen bereiten Block MCB auf irgendeiner der Stufen gefunden hat, kehrt es zu dem Schritt 1300 zurück und der Dispatcher wird wieder ausgelöst (Schritt 1314).
509834/0920
Fig. 14 ist ein Diagramm, welches den Auslösemechanismus 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 Startadresse MSA2 der Task EV2 in dem entsprechenden Peripherxegeräteanschlussteuerblock (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 RJR- der unteren Registerbank der Doppelregisterbank 210 von Fig. 2 zu laden. Schritt 1402. In dem Schritt 1403 wird das Bit L des Wortes CPCW auf 1 gesetzt, um anzuzeigen, dass 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 JAI0S geht zu dem Schritt 1406 über. Bei P = 1 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 NPC des Wortes CPCW übertragen.
In dem Schritt 1409. wird das Bit B in der dieser Stufe entsprechenden Tabelle des Dispatchers auf 1 gesetzt, um anzuzeigen, dass die Task in der Ausführung begriffen ist. In dem Schritt 1410 wird die Kippschaltung 217 (Kippschaltung UL) von Fig. 2 auf Null rückgestellt und die Task EV2 wird in dem Schritt 1411 ausgelöst.
Fig. 15 ist ein Diagramm, welches die Schritte zeigt, die
509834/0920
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 MCB wird dann auf Null rückgesetzt. In dem Schritt 1502 wird das Byte YREDY in 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 S in dem entsprechenden Block DACB. Wenn S=I ist, wird der Peripheriegeräteanschluss angehalten, 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=O ist, wird die Nummer des DAI-Gatters, 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 Fig. 14 wird in dem Schritt 1403 ausgelöst.
Wenn die Task nicht der Stufe 2 angehört, kehrt das Mikrobetriebssystem MIOS zu dem Schritt 1412 zurück und die Prozedur von Fig. 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 1601 testet das Mikrobetriebssystem MI0S das Bit P des Wortes CPCW. Wenn P=I ist, ist die Task, die unterbrochen worden ist, durch ein TIMER-Ereignis EV, unterbrochen worden, ihre Register werden nicht gelöscht und es erfolgt ein direkter übergang zu dem Schritt 1603. Wenn P=O ist, heisst das, dass die Task mit der höheren Priorität, die die betreffende Task unterbrochen hatte, durch den Befehl TERMINATE beendet worden ist. der Inhalt
509834/0920
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 dem Schritt 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 Fig. 3 ist gezeigt worden, dass der Übergang einer Task von einem Zustand in einen anderen mit Hilfe von Mikrobefehlen erfolgt. Die Figuren 17 bis 20 gebeben genau die Aktionen an, die durch die Mikrobefehle hervorgerufen werden.
Fig. 17 ist ein Diagramm, welches die Prozedur zeigt, die durch den Mikrobefehl TERMINATE in 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, welches die Prozedur zeigt, die dprch den Mikrobefehl ACTIVATE in dem Schritt 1800 gesteuert
509834/0920
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 MX0S geht direkt zu dem Schritt 1807 über. Wenn RQ = 0 ist, testet das Mikrobetriebssystem MI0S 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 YREDY auf 1 gesetzt, um anzuzeigen, dass der Block MCB aktiviert ist. Wenn in dem Schritt 1802 das Bit TQ den Wert 0 hätte, befände sich der Block MCB in keiner Warteschlange und das Mikrobetriebs· system MI0S geht zu dem Schritt 1805 über, der Block MCB wird direkt in die Warteschlange der Bereit-Zustände gebracht. Der Schritt 180 8 gibt das Ende der Prozedur und die Rückkehr zu der in der Ausführung begriffenen Task an, die den Mikrobefehl ACTIVATE erzeugt hat.
Fig. 19 zeigt die Aktionen, die durch einen Mikrobefehl SUSPEND in 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 1902, ob der Block MCB in der Warteschlange der Bereit-Zustände ist. Wenn ja, wird der Block MCB in dem Schritt 1904 aus der Warteschlange der Bereit-Zustände abgegeben. Wenn nein, heisst das, dass der Block MCB nicht geplant war, und die Prozedur wird angehalten.
Fig. 20 zeigt die Aktionen, die in einem Schritt 2000 durch einen Mikrobefehl RQT0 hervorgerufen werden. Der Schritt
509834/0920
2001 besteht darin, das Bit RQ des Blocks MCB 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 TIMER-Warteschlange und der Block MCB wird in dem Schritt 2004 aus der TIMER-Warteschlange abgegeben, damit TOM in dem Wort 6 wieder auf den neuesten Stand gebracht wird, und wird wieder in die TIMER-Warteschlange in der dem neuen Wert von TOM entsprechenden Reihenfolge eingereiht. Wenn TQ = 0 ist, wird der Block MCB in dem Schritt 2005 in die TIMER-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 Figuren 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 Fig. 12).
Fig. 22 zeigt die entsprechende Demaskierung. Dafür wird das Bit M des Wortes CPCW in dem Schritt 2201 auf 0 gesetzt,
509834/0920
Fig. 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 E 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 E in dem Schritt 2401 auf Null gesetzt.
Fig. 25 zeigt die Aktionen, die durch den Mikrobefehl STDA hervorgerufen werden, um alle Operationen in einem Peripheriegeräteanschluss anzuhalten. In dem Schritt 2501 wird das Bit S des Wortes 6 des Blocks DACB auf 1 gesetzt, um anzuzeigen, dass der entsprechende Peripheriegeräteanschluss abgetrennt ist und dass es an diesem Peripheriegeräteanschluss 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 NPC liest.
Die folgenden Schritte 2503, 2504, 2505, 2506 bestehen darin, die unterbrochenen Tasks der Stufe N + 1 zu suchen, die zu dem Peripheriegeräteanschluss gehören, und das Bit B der Tabelle des Dispatchers der diesem Peripheriegeräteanschluss entsprechenden Stufe N + 1 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 grosser ist als 7 oder 2n - 1 und wenn die Kippschaltung UL in dem Zustand 1 ist, was bedeutet, dass eine Task EV, die Ausführung verlangt hat, geht das Mikrobetriebssystem MI0S zu dem Schritt 1219 - Eintragung in den Dispatcher - über, wenn nicht, geht das Mikrobetreibssystem MI0S zu dem Schritt 1700 über und beendet durch den Befehl TERMINATE die Task, die die Ausführung
509834/0920
2507A05
verlangt hat.
Es ist durch diese Anordnung zu erkennen, dass alle Tasks, die in der Ausführung begriffen oder unterbrochen waren (diejenigen, die das Bit B=I für diesen Peripheriegeräteanschluss hatten), sofort beseitigt werden. Weiter oben ist gezeigt worden, dass 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, dass sich dem Fachmann im Rahmen der Erfindung weitere Ausführungsmöglichkeiten bieten.
509834/0920
Glossar
Firmware
Hardware
Bit
Byte
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 beispielswiese zur Steuerung der Peripheriegeräte, umfasst alle räumlichen Bestandteile des Rechners, unabhängig davon, welches Gerät, Organ oder welche Anordnung benutzt wird, bezeichnet eine Binärziffer.
bezeichnet eine Binärziffer, die aus mehreren Bits besteht.
Abkürzung des angelsächsischen Ausdrucks "Device Adapter"; Bezeichnung für einen Geräteanschluss.
Abkürzung des angelsächsischen Ausdrucks "Device Adapter interface". Bezeichnung für eine Gerateanschlusschnittstelle. 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.
Abkürzung des angelsächsischen Ausdrucks "Multiprocessing peripheral unit" oder mikcoprogrammierte Einheit für die Steuerung der Peripheriegeräte.
Abkürzung des angelsächsischen Ausdrucks "Interface control unit". Bezeichnung für eine Schnittstelle zwischen der Verarbeitungseinheit MPU und verschiedenen PSI- und DAI-Schnittsteilen.
509834/0920
Assemblage
Dispatcher
Digitalkanal
Verfahren, das darin besteht, die Teile ein und desselben Programms oder von mehreren Programmen, die zusammen oder aufeinanderfolgend ausgeführt werden sollen, zusammenzufassen.
Task-Zuteiler.
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-Steuerungssystems der Zentraleinheit mit dem Peripheriegerät enthält, und aus einem Digitalkanal, welcher die Gesamtheit der Mittel umfasst, 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 räumlichen Kanals und eine Digitalkanalnummer bezeichnet. Ein Kanalprogramm ist einem Geräte 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 *
50983A/0920
Digitalkanal kann ab dem Zeitpunkt als
aktiv angesehen werden, in welchem das
«
Kanalprogramm durch einen Software-Befehl
initialisiert wird, bis zu seiner Beendigung.
ABBRUCH-Ursaehe - 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 HW der CPU oder der PW).
509834/0920

Claims (16)

2507A05 Patentansprüche
1. Verfahren zum Synchronisieren der gleichzeitigen Steuertasks in mehreren und verschiedenen Peripheriegeräten in einer mit einer DatenverarbeitungsZentraleinheit verbundenen einzigen Gerätesteuerung unter Verwendung eines Taskunterbrechungsmechanismus, bei welchem sehr vorrangige Tasks weniger vorrangige Tasks unterbrechen, dadurch gekennzeichnet, daß in Verbindung mit einem Task-Zuteiler verwendet werden:ein Steuerblock zum Kennzeichnen des Zustands der Task, die in der Ausführung begriffen ist, Blöcke (MCB) zur Steuerung derrgewöhnlichen Tasks, um den Zustand jeder gewöhnlichen Task anzugeben, Peripheriegerätesteuerblöcke (DACB) für die Steuerung der sehr
vorrangigen Tasks, sowie eine Gruppe von Speicherblöcken, die Tabellen von Parametern enthalten, welche für den Betrieb des Task-Zuteilers erforderlich sind.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß jeder Block (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 TQ = 1 bedeutet, daß die Task vorübergehend im Wartezustand im Innern einer "TIMER"-Warteschlange ist, wobei RQ = 1 bedeutet, daß die Task vorübergehend in dem Bereit-Zustand ist und daß sie in eine Warteschlange der Bereitzustände eingereiht ist, und wobei TQ = 0 und RQ = 0 bedeuten, daß kein Zustand für diese Task vorgesehen ist.
3. Verfahren nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß jeder Block 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 Bereit-Zustände angibt, die ihrer Prioritätsstufe entspricht, und daß die Einreihung mit Hilfe der Kennzeichen-Wörter (RQHP und RQTP) des Kopfes bzw. des
50S834/0920
Schwanzes der Warteschlange der Bereit-Zustände ausgeführt wird, die sich in der Tabelle des Task-Zuteilers der betreffenden Prioritätsstufe befinden, und mit Hilfe der Inhalte der Wörter (NLP und PLP), die jeden Tasksteuerblock mit dem ihm folgenden bzw. mit dem ihm vorangehenden Block verbinden.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß jeder Peripheriegerätesteuerblock (DACB) enthält: eine erste Speicherzone, die die Startadresse (MSA1) für die Ausführung der Task enthält, die zu einem Signal eines an dem betreffenden Peripheriegeräteanschluß eingetretenen Ereignisses (EV1) gehört; eine zweite Speicherzone, die das Kennzeichen einer Arbeitsspeicherzone (WZA1) für die Ausführung der Task enthält, die dem Ereignis (EV1) entspricht; eine dritte Speicherzone, die die Startadresse (MSA2) für die Ausführung der Task enthält, die zu einem Signal eines Ereignisses (EV2) gehört, welches an dem entsprechenden Peripheriegeräteanschluß eingetreten ist; eine vierte Speicherzone, die das Kennzeichen einer Arbeitsspeicherzone (WZA2) für die Ausführung der Task enthält, die dem Ereignis (EV2) entspricht; eine fünfte Speicherzone, die die Nummer des Digitalkanals enthält, der dem Peripheriegeräteanschluß zugeordnet ist, sowie die maximale Anzahl von Digitalkanälen, die mit dem Anschluß verbunden sind; und eine sechste Speicherzone, die die Bits E und D des Zustands des Peripheriegeräteanschlusses enthält, wobei das Bit E = 1 bedeutet, daß alle 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. Verfahren nach den Ansprüchen 1,3 und 4, dadurch gekennzeichnet, daß der Speicherblock zur Kennzeichnung der Task, die in der Ausführung begriffen ist, enthälts ein Wort (NPC) mit η Bits, welches die Prioritätsstufe der in
509834/0920
der Ausführung begriffenen Task angibt, wobei die gewöhnlichen Tasks durch 2n-2 Stufen dargestellt sind und wobei die Tasks, die Ereignissen EV.. entsprechen, die Stufe 1 und diejenigen, die Ereignissen EV2 entsprechen, die Stufe 2 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 L, welches, wenn es Eins ist, angibt, daß der Task-Zuteiler dabei ist, die Speicherblöcke abzufragen, die die Tabellen des Task-Zuteiler s 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 gegangen ist.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß jegliches Signal (EV1), welches an einem Peripheriegeräteanschlußsteuerblock erscheint, bewirkt, daß ein Register (DNR) durch die Verarbeitungseinheit gelesen wird, wobei das Register (DNR) die Nummer des Peripheriegeräteanschlusses enthält, an welchem das Signal (EV..) erschienen ist, und die Bezeichnung in der Verarbeitungseinheit des entsprechenden Peripheriegeräte-Steuerblocks, in welchem sich die Startadresse (MSA1) der Task befindet, die dem Ereignis - entspricht, welches das Signal (EV1) erzeugt hat.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß ein Signal (EV1), welches während des Eintritts eines sehr vorrangigen Ereignisses an Peripheriegeräteanschlüssen ausgesandt wird, das Auslösen der dem Ereignis entsprechenden Task bewirkt, und daß ein periodisches Signal (EV1), welches aus dem TIMER-Gatter stammt, das Fortschreiben der TIMER-Warteschlange durch die Verarbeitungseinheit bewirkt, die den Inhalt der Speicherzone (TQHP) liest, wenn der Inhalt der Speicherzone nicht leer ist, während die Verarbeitungseinheit den Inhalt der Speicherzone (TOM) in dem ersten Tasksteuerblock (MCB) in der TIMER-Warteschlange liest
509834/0920
und aus der Warteschlange die Task abgibt, wenn der Inhalt der Speicherzone (TOM) leer 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 Bereit-Zustä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 Bereit-Zustände gegangen ist, bzw. in dem Wort YREDY, welches in der letzten Speicherzone des Tasksteuerblocks (MCB) enthalten ist, um anzuzeigen, daß diese Task durch ein Signal (EV1) des TIMER-Gatters in die Warteschlange der Bereit-Zustände gebracht worden ist.
8. Verfahren nach den Ansprüchen 6 und 7, dadurch gekennzeichnet, daß das Signal (EV1) des TIMER-Gatters bewirkt, daß durch die Verarbeitungseinheit die Bits D, L und M des Speicherblocks gelesen werden, welcher die Task enthält, die in der Ausführung begriffen ist, 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, ist die Task vorrangig und wird wieder ausgelöst, wenn nicht, ist die Task nicht vorrangig und die Verarbeitungseinheit liest den Zustand des Bits F, wenn das Bit F = 1 ist, wird zumindest eine Task, die gewartet hatte, in den Bereit-Zustand versetzt, wobei die Priorität der in der Ausführung begriffenen Task wieder in Frage gestellt wird, während die Verarbeitungsexnheit dann den Betrieb des Task-Zuteilers auslöst, um die Leitungen (EV2) der Peripheriegeräteanschlüsse und gegebenenfalls die verschiedenen Warteschlangen der Bereit-Zustände für jede Prioritätsstufe abzutasten.
9. Verfahren nach den Ansprüchen 6 und 7, dadurch gekennzeichnet, daß der Betrieb des Task-Zuteilers darin besteht,
503834/0920
in einem ersten Schritt festzustellen, ob ein Signal 2 an einem Peripheriegeräteanschluß wartet, dann, indem aufeinanderfolgend der Inhalt des Registers (DNR) ab dem Wert O um Eins erhöht wird, gegebenenfalls bis zu dem Wert Q, festzulegen, an welchem Peripheriegeräteanschluß das Signal (EV2) erschienen ist; wenn der Task-Zuteiler das erste Signal (EV2) findet, analysiert er den Zustand des Bits E in dem Peripheriegeräteanschlußsteuerblock (DACB), wenn E=O ist, wird die diesem Ereignis (EV2) entsprechende Task ausgelöst, wenn E = 1 ist, wird die Task nicht ausgelöst und der Task-Zuteiler erhöht den Inhalt des Registers (DNR) um Eins und das vorhergehende Verfahren wird wieder aufgenommen, bis der Inhalt des Registers (DNR) den Wert Q erreicht} wenn in diesem Schritt das Signal (EV2) nicht an dem entsprechenden Peripheriegeräteanschluß vorhanden ist, prüft der Task-Zuteiler in dem Speicherblock, welcher die Tabellen des Task-Zuteilers enthält, ob zumindest eine Task in der Tabelle der Stufe 2 vorhanden ist, indem der Inhalt des Zeigers (RQHP) gesucht wird, der auf die Task hinweist, die sich am Kopf der Warteschlange auf dieser Stufe befindet, und diese Task wird ausgelöst; wenn der Zeiger auf sich selbst zeigt, ist auf dieser Stufe keine Task vorhanden; der Task-Zuteiler prüft, ob nicht in der Tabelle des Task-Verteilers eine Task der Stufe 3 vorhanden ist, die vorhergehende Operation wird mit der Stufe 3 wieder aufgenommen, usw. für jede Stufe bis zu der Stufe 2n - 1, wobei η die Abmessung in Bits des Stufenkennzeichen-Bytes ist, sofern auf irgendeiner Stufe keine Task gefunden worden ist; wenn auf irgendeiner Stufe das Bit B der Tabelle des Task-Zuteilers, die dieser Stufe entspricht, in dem Zustand 1 angetroffen wird, wird eine Task auf dieser Stufe unterbrochen und durch die Verarbeitungseinheit sofort wieder ausgelöst; wenn in dem Schritt des Lesens der Stufe 2-1 keine Task auf dieser Stufe vorhanden ist, kehrt der Task-Zuteiler zu dem ersten Schritt der Auswahl eines Signals (EV_) zurück.
509834/0920
10. Verfahren nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet, daß die Startadresse (MSA2) einer Task (EV2) in der Verarbeitungseinheit aus dem Inhalt des sich in der Verarbeitungseinheit befindenden Registers (DNR) erhalten wird, der das Berechnen der Adresse des entsprechenden Peripheriegeräteanschlußsteuerblocks (DACB) gestattet, in welchem sich die Startadresse (MSA2) einer Task (EV2) befindet, sowie das Berechnen der für seine Ausführung erforderlichen Arbeitszonenadresse (WZA2).
11. Verfahren nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet, daß zum Auslösen einer gewöhnlichen Task der Stufe N die Verarbeitungseinheit das Bit RQ des entsprechenden Tasksteuerblocks (MCB) auf Null rückstellt, um die Task der Warteschlange der Bereit-Zustände zu entnehmen, und das Byte YREDY des Tasksteuerblocks auf Null rückstellt, woraufhin die Verarbeitungseinheit den Zustand des Bits S in dem entsprechenden Peripheriegerätesteuerblock (DACB) liest; wenn S = 1 ist, wird der entsprechende Peripheriegeräteanschluß angehalten und die Task wird beseitigt, indem in der dieser Stufe entsprechenden Tabelle des Task-Zuteilers das Bit B auf 0 gesetzt wird; wenn S=O ist, wird die Nummer des Peripheriegeräteanschlusses in das Register (DNR) geladen und die Task der Stufe N wird ausgelöst.
12. Verfahren nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet, daß jede Ausführung eines Task-Endes den Task-Zuteiler zu dem ersten Schritt zum Auswählen eines Signals (EV2) zurückführt, welches an einem Peripheriegeräteanschluß wartet.
13. Anordnung zum Synchronisieren der gleichzeitigen Steuer tasks in mehreren und verschiedenen
Peripheriegeräten in einer mit einer Datenverarbeitungs— Zentraleinheit verbundenen einzigen Gerätesteuerung, zur-Durchführung des Verfahrens nach einem der Ansprüche 1 bis 12,
50983A/0920
gekennzeichnet durch mehrere Gatter von Peripheriegeräteanschlüssen (DAI) und durch ein TIMER-Gatter, welche sehr vorrangigen Ereignissen entsprechende Signale (EV..) liefern, die zu dem Eingang einer ODER-Schaltung übertragen werden, um in der Verarbeitungseinheit (MPU) ein Signal (EV-s) zur sehr vorrangigen Unterbrechung zu erzeugen, bzw. zu dem Eingang eines Codierers übertragen werden, der an seinem Ausgang in Binärform die Nummer des Gatters mit der höchsten Priorität abgibt, welches das Signal (EV1) 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 eine Verarbeitungseinheit (MPU) für die Berechnung der Adresse des entsprechenden Peripheriegeräteanschlußsteuerblocks (DACB) wieder verwendet werden kann, der in einer Zone des Speichers (M) der Verarbeitungseinheit enthalten ist.
14. Anordnung nach Anspruch 13, dadurch gekennzeichnet, daß jedes Peripheriegeräteanschluß (DAI)-Gatter und jedes PSI-Gatter, die zu der Schnittstelle zwischen der Gerätesteuerung und einer Zentraleinheit gehören, ein Signal (EV2) liefert, wenn sie durch einen Decoder des Registers (DNR) ausgewählt werden, wenn ein Ereignis (EV2) 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 O bis zu dem Wert N - 1 um Eins erhöht wird (wobei N die Anzahl von mit der Geratesteuerung verbundenen Gattern ist), und wobei die Signale (EV2) zu den Eingängen einer ODER-Schaltung übertragen werden, deren Ausgang an die Verarbeitungseinheit (MPU) ein Unterbrechungssignal (EV2S) abgibt, wenn der Inhalt des Registers (DNR) ein Signal (EV2) an einem der DAI- oder PSI-Gatter ausgewählt hat.
15. Anordnung nach Anspruch 13, dadurch gekennzeichnet,
509834/0920
daß ein Peripheriegeräteanschlußsteuerblock (DACB), der sich in dem Speicher (M) befindet/ enthält: eine erste Speicherzone, die die Startadresse einer Task (EV1) angibt/ eine zweite Speicherzone, die die Adresse einer Arbeitsspeicherzone für die Task (EV1) angibt, eine dritte Speicherzone, die die Startadresse einer Task (EV2) angibt, eine vierte Speicherzone, die die Adresse einer Arbeitsspeicherzone für diese Task (EV-) angibt, eine fünfte Speicherzone, die die Nummer des dem Peripheriegerät zugeordneten Digitalkanals angibt, und eine sechste Speicherzone, die den Zustand der den Zustand des Peripheriegeräteanschlusses angebenden Bits E und S angibt.
16. Anordnung nach Anspruch 13, dadurch gekennzeichnet, daß der Speicher (M) der Verarbeitungseinheit eine Gruppe von Tasksteuerblöcken (MCB) enthält, von denen jeder aus einer ersten Speicherzone, die die Nummer des dem Tasksteuerblock entsprechenden Peripheriegeräteanschlusses angibt, aus einer zweiten Speicherzone, die die der an dem Peripheriegeräteanschluß auszuführenden Task entsprechende Prioritätsstufe angibt, aus einer dritten Speicherzone / die durch die Bits TQ und RQ den Ausführungszustand der zugeordneten Task angibt, wobei, wenn TQ und RQ = O sind, die Task in der TIMER-Warteschlange wartet, und, wenn TQ und RQ = 10 sind, die Task in der Warteschlange der Bereit-Zustände wartet, aus einer vierten Speicherzone / die die Startadresse der Task angibt, aus einer fünften Speicherzone, die die Adresse der Arbeitszone festlegt, welche für die Ausführung der Task erforderlich ist, und aus einer sechsten Speicherzone (YREDY) besteht, die die Gründe bestimmt, aus denen eine Task in die Warteschlange der Bereit-Zustände eingereiht worden ist.
50S834/0920
cT-3
Leerseite
DE19752507405 1974-02-20 1975-02-20 Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage Expired DE2507405C2 (de)

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 true DE2507405A1 (de) 1975-08-21
DE2507405C2 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)

* Cited by examiner, † Cited by third party
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 伸和コントロールズ株式会社 空気調和装置、空気調和装置を具備する基板の浮上式搬送ユニット、並びに基板の浮上式搬送用空気の供給方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1499200C (de) * 1972-06-08 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Datenverarbeitungsanlage mit vorranggesteuerter Programmunterbrechung

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1499200C (de) * 1972-06-08 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Datenverarbeitungsanlage mit vorranggesteuerter Programmunterbrechung

Also Published As

Publication number Publication date
JPS6049936B2 (ja) 1985-11-06
NL7501983A (nl) 1975-08-22
FR2261565B1 (de) 1977-09-16
DE2507405C2 (de) 1985-05-23
JPS50152636A (de) 1975-12-08
GB1493878A (en) 1977-11-30
FR2261565A1 (de) 1975-09-12

Similar Documents

Publication Publication Date Title
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
EP0333123B1 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE10085374B4 (de) Systemmanagementspeicher für die Systemmanagement-Interrupt-Behandler wird in die Speichersteuereinrichtung integriert, unabhängig vom BIOS und Betriebssystem
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE4011745A1 (de) Taskverfolgungseinrichtung
DE2054068A1 (de) Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme
DE2902465A1 (de) Datenverarbeitungsanordnung
CH619309A5 (de)
DE1424762B2 (de) Datenverarbeitungsanlage
CH615521A5 (de)
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
EP0764906A2 (de) Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems
DE2350229A1 (de) Datenverarbeitungsanlage, insbesondere als steuereinrichtung fuer fernsprechvermittlungsanlagen
DE2507405A1 (de) Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage
DE2034423B2 (de) Verfahren zur Fehlersuche in einem programmgesteuerten Vermittlungssystem
DE2359037A1 (de) Mikroprogrammrechnereinrichtung
EP1308846A1 (de) Datenübertragungseinrichtung
DE19827914C1 (de) Anwendungsspezifischer integrierter Schaltkreis mit einem RISC-Prozessor zur Bearbeitung definierter Sequenzen von Assembler Befehlen
EP0360900B1 (de) Verfahren zur Behandlung der von den einzelnen Prozessen einer Datenverarbeitungsanlage verursachten Arbeitsaufrufe an einen der Prozesse
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

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