[go: up one dir, main page]

DE2828544A1 - Anordnung zur behandlung von aufgaben in einem datenverarbeitungssystem - Google Patents

Anordnung zur behandlung von aufgaben in einem datenverarbeitungssystem

Info

Publication number
DE2828544A1
DE2828544A1 DE19782828544 DE2828544A DE2828544A1 DE 2828544 A1 DE2828544 A1 DE 2828544A1 DE 19782828544 DE19782828544 DE 19782828544 DE 2828544 A DE2828544 A DE 2828544A DE 2828544 A1 DE2828544 A1 DE 2828544A1
Authority
DE
Germany
Prior art keywords
register
task
tde
instruction
address
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
DE19782828544
Other languages
English (en)
Other versions
DE2828544C2 (de
Inventor
Roy Louis Hoffman
William George Kempke
John Warren Mccullough
Frank Gerald Soltis
Richard Tad Turner
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2828544A1 publication Critical patent/DE2828544A1/de
Application granted granted Critical
Publication of DE2828544C2 publication Critical patent/DE2828544C2/de
Granted 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Computer And Data Communications (AREA)
  • Executing Machine-Instructions (AREA)

Description

EO9-76-014 " * . jo.sk
Anmelderin: International Business Machines
Corporation, Armonk, N. Y. 10504
INAOHQEREK3HT ANORDNUNG ZUR BEHANDLUNG VON AUFGABEN IN EINEM DATENVERARBEITUNGSSYSTEM
Die Erfindung betrifft eine Anordnung zur Behandlung
von Aufgaben (Tasks) nach dem Oberbegriff des Anspruchs 1. Sie findet insbesondere Anwendung in Computersystemen mit gespeichertem Programm, an denen Datenstationsberiützer im Dialogbetrieb arbeiten, oder in Computersystemen mit gespeichertem Programm, die viele Jobs im Stapelbetrieb auszuführen haben, wie etwa in einem grossen System mit Multiprogramm-Betrieb.
Bisher verwendeten Computersysteme mit gespeichertem Programm eine Kombination von Hardware und Software zur Behandlung von Aufgaben und zum Wechsel zwischen Aufgaben (Umschalten von einer Aufgabe zu einer anderen). Bei der Kombination von Hardware und Software ergab sich eine Unterbrechungsstruktur mit einer festen Anzahl von Unterbrechungsstufen oder -klassen, die in die Hardware eingebaut sind, und einer Auflösung des Wettbewerbs unter verschiedenen Aufgaben auf derselben Unterbrechungsstufe durch die Software. Ausserdem hatten herkömmliche Systeme ein erstes Prioritätsschema für die Prozessor-Aufgaben und ein anderes Prioritätsschema für Eingabe/Ausgabe-Aufgaben. In der vorliegenden Erfindung befindet sich der Prioritätsmechanismus oder die Aufgabenbehandlungsfunktion ausschliesslich in der Hardware, und für die Prozessor-Aufgaben und die Eingabe/Ausgabe-Aufgaben wird ein gemeinsamer Mechanismus benutzt. Durch diese Anordnung lässt sich eine mit herkömmlichen Systemen durchaus vergleichbare Leistung bei der Aufgabenbehandlung mit einer leistungsschwächeren Zentraleinheit erzielen. Bisher konnten nur Datenverarbeitungsanlagen mit einer Hochleistungszentraleinheit für
809884/0758
RO9-76-014
2828S44
— 5 -
Anwendungen eingesetzt werden, welche die Bearbeitung einer grossen Anzahl von Aufgaben verlangen. Im Gegensatz zu den von Unterbrechungen gesteuerten Systemen herkömmlicher Art gibt es liier keine erzwungene Umschaltung auf die E/A-Verarbeitungsstufe, wenn E/A-Unterbrechungen bedient werden müssen. Der Bedarf eines E/A-Gerätes zur Bedienung wird von der allgemeinen Aufgabenbehandlungsanordnung bearbeitet und das E/AGerät nur bedient, wenn die zugehörige E/A-Aufgabe die höchste Priorität im System erhält. Der Status des eine Bedienung verlangenden E/A-Gerätes wird (nach der Bedienungsanforderung) während des nächsten Instruktionsabrufzyklus eingeholt, oder zu vorgegebenen Zeiten während der Ausführung bestimmter laufender Instruktionen der aktiven Aufgabe. Ein Instruktionsabrufzyklus der aktiven Aufgabe enthält immer eine Abfrage, um den Bedarf an E/A-Zyklen festzustellen und den E/A-Status zu retten. Während der Ausführung bestimmter komplexer Instruktionen werden auch Prüfungen durchgeführt, um den Bearbeitungsbedarf für E/A-Ereignisse zu ermitteln. Nachdem ein E/A-Ereignis abgehandelt ist, kann eine Aufgabenumschaltung (ein Wechsel der Aufgabe) erfolgen, abhängig davon, ob die eine Bedienung erfordernde E/A-Aufgabe eine höhere Priorität hat als die aktive Aufgabe.
Die Hauptaufgabe der Erfindung ist die Schaffung einer verbesserten Aufgabenbehandlungs-Anordnung, die (a) eine kurze Antwortzeit hat, (b) die Benutzung einer relativ leistungsschwachen Zentraleinheit in einem im Dialogbetrieb arbeitenden Computersystem ermöglicht, (c) eine variable Anzahl (N) statt einer festen Anzahl von Prioritätsstufen hat, (d) das Setzen von Prioritäten unter Programmsteuerung ermöglicht, (e) für Systemsteueraufgaben, Benutzeraufgaben und E/A-Aufgaben gemeinsam ist, (f) die Kommunikation zwischen den Aufgaben mit der Aufgabensynchronisation koppelt, (g) mit virtuellem oder realem Speicher für alle Aufgabenbehandlungsfunktionen einschliesslich der E/A-Aufgaben arbeiten kann und (h) den Zustand eines die Bedienung anfordernden E/A-Gerätes aufnimmt, wobei es keine Rolle spielt, ob die E/A-iAufgabe jeweils gerade die aktive^Aufgabe ist. ■
Die e^fiiidungsgemässe Anordnung, mit der diese" Ziele erreicht werden können, i%t in den Patentansprüchen angegeben.
809884/0758
RO9-76-014
— 6 —
Die angestrebte Lösung wird dadurch ermöglicht, dass die Anordnung zur Aufgabenbehandlung einen Aufgabenabfertigungsmechanismus und einen Mechanismus für die Kommunikation zwischen den Aufgaben enthält. Der Aufgabenabfertiger (Task Dispatcher) macht das Aufgabenabfertigungselement (TDE) mit der höchsten Priorität in einer Aufgabenwarteschlange (TDQ) aktiv. Die Aufgabenabfertigungselemente (TDE) stehen in der Aufgabenwarteschlange (TDQ) in Prioritätsreihenfolge. Es gibt N Prioritätsstufen, und N ist variabel. Jede Aufgabe hat einen Prioritätsschlüssel, der unter Programmsteuerung geändert werden kann. Die aktive Aufgabe lässt selbst Instruktionen ausführen, oder sie kommuniziert mit anderen Aufgaben, um sie zur Erledigung von Arbeiten aufzufordern. Die anderen Aufgaben befinden sich entweder in einem inaktiven, aber abfertigbaren Zustand oder in einem inaktiven Wartezustand. Der Instruktionsabrufzyklus der aktiven Aufgabe fragt immer zuerst nach dem Ausführungbedarf von E/A-Ereigniszyklen oder Abfertigungszyklen. E/A-Ereigniszyklen haben Vorrang gegenüber den Abfertigungszyklen. Den Status eines E/A-Gerätes erhält man während der E/A-Ereigniszyklen. Abfertigungszyklen sorgen für die Speicherung des Status des alten Aufgabenabfertigungselementes (TDE) und für das Laden der Prozessor-Einrichtungen mit dem Status des neuen TDE. Zum Aufgabenstatus gehören eine Instruktionsadresse, eine Instruktionslängenangabe, ein Bedingungscode und Basisregisterangaben.
Für die Kommunikation zwischen den Aufgaben sind vorgesehen: Zählwertsendung, Nachrichtensendung, Zählwertempfang und Nachrichtenempfang. Die aktive Aufgabe ruft den Nachrichtensendemechanismus oder den Zählwertsendemechanismus auf, um eine andere Aufgabe zur Erledigung einer Arbeit aufzufordern, und sie ruft den Zählwertempfangsmechanismus oder den Nachrichtenempfangsmechanismus auf, um festzustellen, ob die Arbeit von der anderen Aufgabe getan wurde. Wenn der Zählwertempfang oder der Nachrichtenempfang nicht zufriedenstellend ist, d.h. die Arbeit nicht erledigt wurde, wird die aktive Aufgabe aus der Aufgabenwarteschlange (TDQ) vom Empfangsmechanismus entnommen und vom Empfangsmechanismus in den inaktiven Wartezustand gesetzt. Zum Warten ist eine Sendeempfangsnachrichtenschlange (SRQ) oder ein Sendeempfangszähler (SRC) vorgesehen. Das Aufgabenabfertigungselement (TDE) mit der höchsten Priorität in der Aufgabenwarteschlange (TDQ) wird dann als aktive Aufgabe
809334/0758
RO9-76-014
-7- 2628544
eingeordnet. Die früher aktive Aufgabe bleibt im inaktiven Wartezustand, bis die andere Aufgabe den Zählwertsende- oder Nachrichtensendemechanismus aufruft, um anzuzeigen, dass sie die verlangte Arbeit beendet hat. Der Zählwertsendemechanismus und der Nachrichtensendemechanismus nehmen inaktive, wartende TDE's aus der SRQ oder dem SRC und reihen sie in Prioritätsreihenfolge in der TDQ ein. Wenn keine abfertigbaren TDE's in der TDQ stehen, ist keine Arbeit mehr zu tun und das System befindet sich im Leerlauf-oder Wartezustand.
Ein Ausführungsbeispiel der Erfindung ist in den beigefügten Zeichnungen dargestellt und wird anschliessend näher beschrieben. Es zeigen:
Fign. 1-1 zusammen in einem Blockdiagramm ein die Erfindung ent- und 1-2 . haltendes Datenverarbeitungssystem,
Fig. 2 die Verbindungen zwischen Benutzeraufgaben und E/A-Aufgaben ,
Fig. 3 die Formate der Warteschlangeninstruktionen und der Objekte,
Fign* 4-1 die Wechselbeziehungen zwischen TDQ, SRQ, SRC, Instruk- und 4-2 tionsstrom und Basisregistern,
Fig. 5 die Uebergänge der Aufgabenaktivität,
Fig. 6 die Reihenfolgebeziehungen bei Steuereinheitzyklen,
Fig. 7-1 die Sigrialbahnen für den Prozessor-Zyklus Tl, und 7-2
Fign. 8-1 die Signalbahnen für den Prozessor-Zyklus T2, und 8-2
Fign. 9-1 die Signalbahnen für den Prozessor-Zyklus T3, und 9-2
809884/0758
RO9-76-014
Fign. 10-1 die Signalbahnen für den Prozessor-Zyklus Al, und · 10-2
Fign. 11-1 die Signalbahnen für den Prozessor-Zyklus A2, und 11-2
Fign. 12-1 die Signalbahnen für den Prozessor-Zyklus Sl, ■ und 12-2
Fign. 13-1 die Signalbahnen für den Prozessor-Zyklus S2 und 13-2
Fign. 14 Zeitdiagramme für die Prozessor-Zyklen Tl, T2, T3, Al, bis 20 A2, Sl und S2,
Fig. 21 in einem Ablaufdiagramm die Instruktions-Abrufzyklen, Fig. 22 in einem Ablaufdiagramm die Abfertigungszyklen, Fig. 23 in einem Ablaufdiagramm die E/A-Ereigniszyklen,
Fig. 24 in einem Ablauf diagramm die Zyklen für Zählwert senden, -Nachricht senden und Nachricht in eine Schlange setzen,
Fig.' 25 . in einem Ablaufdiagramm die Einsetzzyklen,
Fig. 26 Xn einem Ablaufdiagramra die Zyklen für Zählwert empfangen, Nachricht empfangen und Nachricht aus der Schlange nehmen,
Fig. 27 in einem Ablaufdiagramm die Entnahmezyklen, Fig. 28 den Anfangszustand einer Aufgabe, die die Instruktion
Nachricht empfangen an eine Sendeempfangsschlange gibt,
Fig. 29 den Zustand der Aufgabenwarteschlange und der Sendeempfangsschlange, nachdem die Nachrichtenempfangsinstruktion der Fig. 28 nicht ausführbar war,
809884-/0758 original .inspected
RO9-76-014
2328544
Fig. 1 zeigt ein Ausführungsbeispiel der Erfindung in einem Datenverarbeitungssystem mit gespeichertem Programm, das einen konventionellen, mittels der Speichersteuerung 15 wahlweise adressierbaren Hauptspeicher 10 enthält. Der Hauptspeicher 10 enthält auf Bytebasis orientierte Instruktionen und Daten. Ein Byte besteht aus acht Bits, das Paritätsbit ausgeschlossen. Die Daten- und Adressbahnen voh und zum Speicher haben Wortbreite, in diesem Beispiel parallel vier Bytes. Die Organisation des Hauptspeichers 10 ist bezüglich der vorliegenden Erfindung nicht kritisch.
Der Hauptspeicher 10 ist selektiv adressierbar von der Speichersteuerung 15, die eine Adresse auf die Adress-Sammelleitung 16 gibt. Wenn eine Leseoperation stattfinden soll, stehen die Daten von der adressierten Stelle auf der Lesedatenleitung 11 zur Verfügung und werden in das Datenregister 17 der Speichersteuerung 15 eingegeben. Während einer Schreiboperation stellt die Speichersteuerung 15 Daten auf der Schreibdatenleitung 12 zur Verfügung, und diese Daten werden dann in die adressierte Stelle im Speicher 10 geschrieben. Diese Lese- und Schreiboperationen sind ganz konventionell.
Die Speichersteuerung 15 ist so geschaltet, dass sie Daten und Adressen sowohl vom Prozessor (CPU) 30, als auch vom E/A-Kanal 500 empfängt. Der Prozessor 30 liefert Daten an das Register 17 auf der Sammelleitung 31 und Adressen an das Register 18 auf der Sammelleitung 32. Das Datenregister 17 ist so verbunden, dass es Daten über die Sammelleitung 19 an den Prozessor 30 gibt. Der E/A-Kanal 500 liefert Daten und Adressen an die Register 17 und 18 über die Sammelleitungen 501 bzw. 502. Daten werden vom Register 17 über die Sammelleitung 20 an den Kanal gegeben. Der E/A-Kanal 500 ist an die E/A-Geräte 510 und über den E/A-Adapter 505 bzw. die E/A-Steuerung 506 angeschlossen. Anzahl und Typ der an den E/A-Kanal angeschlossenen Geräte und die Art ihrer Verbindung haben mit der vorliegenden Erfindung nichts zu tun. Der E/A-Kanal 500 muss jedoch einen Bedarf für E/A-Ereignis-Zyklen signalisieren können. Sobald E/A-Ereignis-Zyklen angefordert werden, liefert der Kanal' 500 ein Signal auf die Leitung 512 und schaltet so ein E/A-Kippglied. 94 im Prozessor 30 ein.
809884/0758
RO9-76-014
2820544
Fig. 30 den Zustand der Aufgabenwarteschlange und der Sendeempfangsschlange, nachdem die aktive Aufgabe gemäss Fig. 29 eine Nachrichtensendeinstruktion an dieselbe Sendeempfangsschlange gab, die auch die Instruktion zum Nachrichtenempfang erhielt,
Fig. 31 den Zustand einer Aufgabe, die eine Zählwertempfangsinstruktion an eine Sendeempfangszählschlange gibt,
Fig. 32 ' eine E/A-Aufgabe als die eine Nachrichtensendeinstruktion an eine Sendeempfangsschlange gebende aktive Aufgabe,
Fig. 33 den Zustand der Aufgabenwarteschlange und der Sendeempfangsschlange nach Ausführung der Nachrichtensendeinstruktion gemäss Fig. 32, zur Dai stellung, dass die neue aktive Aufgabe eine Nachrichtenempfangsinstruktion an dieselbe Sendeempfangsschlange gibt, an die die Nachrichtensendeinstruktion gegeben wurde,
Fig. 34 eine neue aktive Aufgabe, die eine Nachrichtenempfangsinstruktion an eine andere Sendeempfangsschlange gibt,
Fig. 35 den Zustand der Aufgabenwarteschlange, einer Nachrichtensendeempfangsschlange und einer Sendeempfangszählschlange mit einem wartenden Aufgabenabfertigungselement,
Fig. 36 die E/A-Ereignis-Bearbeitungsanordnung,
Fig. 37 das Senden einer Mitteilung über die Beendigung an SRQ und einer E/A-Operation an die Sendeempfangsschlange, und
Fig. 38 den Empfang der Nachricht von der Sendeempfangsschlange über die Beendigung einer E/A-Operation, in der E/A-Manager-Aufgabe .
809884/0758
RO9-76-014
Das die Erfindung enthaltende Coinputersystem wird dadurch initialisiert, dass man den Hauptspeicher 10 mit einer Aufgaben-Warteschlange TDQ (Task Dispatching Queue) lädt, die aus einem oder mehreren Aufgabenabfertigungselementen TDE (Task Dispatching Element) besteht. Unter "Aufgabe" ist hier die im Englischen mit "Task" bezeichnete Verarbeitungseinheit verstanden. Die TDQ ist ein Systemobjekt, d.h., es ist eine Dateneinheit mit besonderer Bedeutung, z.B. Steuerdaten. Die TDQ ist eine verkettete Objektliste und enthält Prozessor Statusinformationen ausführbarer Aufgaben, wobei eine Aufgabe - in diesem Beispiel die oberste Aufgabe - die aktive Aufgabe ist, und alle anderen Aufgaben in der Liste inaktive, abzufertigende Aufgaben sind. Das Format der TDQ ist in Fig. 3 dargestellt als aus einer TDE-Kettungsadresse bestehend. Das Format der TDE's ist ebenfalls in Fig. 3 gezeigt. Während der Anfangsoperation des Systems wird das TDQ-Objekt lokalisiert, indem man eine Adresse vom TDQ-SAR-Register 52 (in der SAR-Gruppe 50) überträgt an das Adressregister 18. Das TDQ-SAR-Register 52 wird durch eine Adresse von der Steuereinheit 100 auf der Sammelleitung 101 selektiert. Die SAR-Gruppe 50 (SAR = Speicheradressregister) enthält spezifische Register mit Speicheradressen, die dazu gebraucht werden, auf von der vorliegenden Erfindung betroffene Objekte und Instruktionen zu zeigen, sowie auch das normale Instruktionsadressregister IAR. Das IAR 51 enthält die Adresse derjenigen Instruktion, die als nächste abzurufen und auszuführen ist, während die laufende Instruktion ausgeführt wird, d.h. es ist ein Programmstellenzähler. Wie später noch zu sehen ist, kann der Inhalt jedes SAR-Registers der Gruppe 50 unter der Steuerung der Steuereinheit 100 erhöht oder erniedrigt werden, ohne ihn durch das Rechenwerk (RW) 45 laufen zu lassen. In diesem speziellen Fall ergibt jede Adresserhöhung (Erniedrigung) um +1 (-1) eine Adressänderung um vier Bytes oder ein Wort. Das die vorliegende Erfindung enthaltende Computersystem kann mehr als eine TDQ haben, dann ist aber eine TDQ die primäre TDQ und die anderen die sekundären TDQ1s.
Die im TDQ-Objekt enthaltene TDE-Adresse wird vom Speicher 10 in das Datenregister 17 und von dort Ober die Sammelleitung 19 in das SA-Register 36.während eines Lesezyklus geleitet. Das SA-Register 36 ist ein Hauptspeicher-Operandenpuffer. Der Inhalt des SA-Registers 36 wird über den A-Leitungsassembler 39 und die A-Leltung 40 an das Rechenwerk
809884/0758
RO9-76-014
~12~ 2820544
45 durchgeschaltet. Mit "Assembler" ist hier und im folgenden eine Schaltungseinheit bezeichnet, die (ähnlich wie ein Konzentrator) mehrere an ihre Eingänge angeschlossene Quellen wahlweise mit ihrer Ausgangs-Sammelleitung verbinden kann. Das Rechenwerk 45 empfängt ein Signal von der Steuereinheit 100, durch das sie die Daten vom linken Eingang (A) in das Ausgaberegister 46 (O-Reg.) weiterleitet. Das Rechenwerk 45 bekannter Bauweise führt Zweierkoplement-Binäradditionsoperationen und Subtraktionsoperationen aus, sowie UND-, ODER- und Antivalenzverknüpfungen. Artihmetische und logische Operationen setzen das AZ-Kippglied 96, wenn alle Bits des Ergebnisses null sind. Während einer arithmetischen Addition wird durch Setzen des AC-Kippgliedes 95 angezeigt, dass ein üebertrag aus der werthohen Bitposition erfolgte. Bei einer Subtraktion wird durch Setzen des AC-Kippgliedes 95 angezeigt, dass kein geborgter Betrag in die werthohe Bitposition geschrieben wurde. Uebertragungen zwischen den Registern erfolgen im Durchlauf nach links oder rechts, ohne dass hierbei das AC-Kippglied 95 oder das AZ-Kippglied 96 gesetzt werden. Das Ausgaberegister 46 fungiert als Ausgabepuffer des Rechenwerks 45, um das Ergebnis festzuhalten, bevor es auf die C-Sammelleitung 47 ausgegeben wird. Der Ausgang des Ausgaberegisters 46 ist mit der C-Sammelleitung 47 und dem D-Leitungsassembler 48 verbunden. Der D-Leitungsassembler 48 speist die Register der SAR-Gruppe 50 über die D-Sammelleitung 49. In diesem Fall liefert die Steuereinheit 100 ein Signal an den D-Leitungsassembler 48, damit dieser die C-Sammelleitung 47 als Quelle wählt, und sie liefert eine Adresse über die Sammelleitung 101 zum Ansteuern des CTDE-SAR-Registers 53, wodurch die laufende TDE-Adresse in das Register 53 eingegeben wird.
Die gerade beschriebene Operation läuft während eines Prozessor-Zyklus T2 ab, der in Fig. 8 und 15 dargestellt ist und später noch genauer beschrieben wird. Im Prozessor-Zyklus T2 wird der Inhalt eines als Quellenregister wirkenden Registers über die A-Sammelleitung 40 in ein Bestimmungsregister der C-Sammelleitung 47 übertragen.
Das Register 53, das die laufende TDE-Adresse enthält (CTDE), hält diese Adresse während der ganzen Dauer der zugehörigen Aufgabe. Somit muss auch ein Arbeitsregister mit der laufenden TDE-Adresse geladen werden, die erhöht oder erniedrigt werden kann, um so die Prozessor-Register mit Adress- und Statusinformation des betreffenden TDE zu laden.
809884/0758
RO9-76-014
Wenn die laufende TDE-Adresse vom Register 53 in dieses Arbeitsregister übertragen wird, bleibt sie natürlich auch im Register 53. Das Register 53 enthält die Adresse des zu Beginn der laufenden Instruktion aktiven TDE. Wenn das Abfertigungs-Kippglied 93 (D-Kippglied) während der Ausführung der laufenden Instruktion gesetzt wird, dann wird zu Ausführungsbeginn der nächsten Instruktion der Inhalt des Registers 53 mit der Adresse des obersten TDE in der TDQ verglichen, um festzustellen, ob ein Aufgabenwechsel erforderlich ist. Dies ist möglich, wenn inzwischen ein anderes TDE das oberste TDE in der TDQ wurde. Wenn die Adresse des laufenden TDE daher nicht mit der Adresse des obersten TDE übereinstimmt, ist dies der Fall. Auf das oberste TDE in der TDQ wird natürlich vom TDQ-Objekt her verwiesen. Zur Uebertragung der laufenden TDE-Adresse vom Register 53 in das OPl-SAR-Register 54 ist daher ein weiterer Zyklus T2 des Prozessors erforderlich. Die TDE-Adresse im OPl-SAR-Register 54 wird dann um zwei Wortlängen erhöht, damit sie auf das im TDE enthaltene Instruktionsadressfeld (IA) zeigt.
Die laufende TDE-Adresse wird um zwei Wortlängen erhöht durch einen A2-Zyklus des Prozessors, der später noch genauer beschrieben wird. Während eines solchen Zyklus wird die SAR-Gruppe 50 über die Steuereinheit 100 adressiert, wodurch der Inhalt des OPl-SAR-Registers 54 auf die Sammelleitung 32 gegeben wird, wodurch nicht nur das Adressregister 18, sondern auch der Assembler 39 für die Α-Sammelleitung gespeist werden. Die Steuereinheit 100 gibt ein Wahlsignal an den Assembler für die A-Sammelleitung 40, damit dieser die Sammelleitung 32 als Quelle wählt. So wird die laufende TDE-Adresse auf den linken Eingang des Rechenwerks 45 über die A-Sammelleitung 40 geleitet. Die Steuerung 100 veranlasst auch den Codierer 60 zur Abgabe des Wertes 2 über die Sammelleitung 61 an den Assembler 62 für die B-Sammelleitung 63 und über diese auf den rechten Eingang des Rechenwerks 45. Aufgrund eines Steuersignales von der Steuerung 100 führt das Rechenwerk 45 dann eine Addition durch, und deren Ergebnis wird in das Ausgaberegister 46 gesetzt. Die Adresse läuft dann vom Ausgaberegister 46 über die Sammelleitung 47, den Assembler 48 für die D-Sammelleitung 49 und von dort in das OPl-SAR 54.
809884/0758
RO9-76-014
Die jetzt im OPl-SAR 54 stehende erhöhte Adresse wird dann in das Adressregister 18 als Teil eines Zyklus Sl übertragen, der später noch beschrieben wird. Die Adresse im Register 18 wird durch die Speichersteuerung 15 über die Adress-Sammelleitung 16 in den Hauptspeicher 10 geleitet. Das auf der Lesedatenleitung 11 aufgrund einer Leseoperation im Hauptspeicher 10 erscheinende Wort wird in das Datenregister 17 eingegeben und auf die Wortsammelleitung 19 gesetzt. Das Wort auf der Wortsammelleitung 19 wird dann in das SA-Register 36 eingegeben. Während dieses Zyklus Sl wird die vom OPl-SAR 54 genommene Adresse auch an die Inkrementierschaltung 59 geleitet, welche die Adresse um Eins erhöht und sie an den Assembler 48 für die D-Sammelleitung 49 weiterleitet, wodurch sie in das Register 54 zurückgegeben wird, so dass sie jetzt auf das nächste Wort des TDE zeigt, das in diesem Fall das Codefeld für die Instruktionslänge (IL) und das Eadingungscodefeld (CC) der ersten zu der Aufgabe gehörenden Instruktion enthält.
Das SA-Register 36 enthält die Adresse der ersten zu der Aufgabe gehörenden Instruktion. Diese Adresse wird durch den Prozessor-Zyklus T2 in das Instruktionsadressregister (IAR) 51 eingegebn. Bevor die zu der Aufgabe gehörende erste Instruktion geholt wird, müssen die übrigen Wörter des TDE geholt werden. Die erhöhte Adresse im OPl-SAR 54 wird daher in das Adressregister 18 eingegeben und das nächste Wort des TDE vom Hauptspeicher 10 gelesen. Die in diesem nächsten Wort enthaltene Instruktionslängenangabe (IL) und der Bedingungscode (CC) werden in das IL-Register 38 bzw. das CC-Register 65 eingegeben. Während dieses Prozessor-Zyklus Sl wird die Adresse aus dem Register 54 wieder durch die Inkrementierschaltung 59 erhöht und in das Register 54 zurückgestellt. Die Adresse vom Register 54 wird dann wieder in das Adressregister 18 übertragen, dadurch der Hauptspeicher 10 wieder adressiert und das Wort von der adressierten Stelle im Hauptspeicher über die Lesedatenleitung 11 in das Datenregister 17 übertragen. Der Inhalt des Registers 17 wird dann in das SA-Register 36 eingegeben. Während dieses Zyklus Sl wird die Adresse aus dem Register 54 wieder erhöht und in das Register 54 zurückgegeben, genauso wie es oben beschrieben wurde. Der Inhalt des SA-Registers 36 wird in ein Arbeitsregister in der LSR-Registergruppe 70 übertragen. Welches Register gewählt wird, hängt von einer Adresse ab, die
809884/0758
RO9-76-014
-is- 2928544
vom P-Register 90 geliefert wird. Das P-Register 90 ist ein Zählregister für die indirekte Adressierung der LSR-Registergruppe 70 und kann um Eins erhöht oder erniedrigt werden, ohne dass sein Inhalt durch das Rechenwerkes laufen muss. In diesem Fall wird das P-Register 90 mit einer Adresse durch den Prozessor-Zyklus Tl geladen,, der später noch genauer beschrieben wird. Während eines Prozessorzyklus Tl liefert die Steuerung 100 ein Signal an den Codierer 60, damit dieser den Wert Null an den Assembler 62 für die B-Sammelleitung 63 abgibt und so das Basisregister Null der LSR-Registergruppe 70 adressiert. Der vom Assembler 62 an die B-Sammelleitung 63 weitergeleitete Null-Wert gelangt in das Rechenwerk 45 und von dort in das Ausgabe-Register 46. Der Null-Wert verlässt dann das Ausgaberegister 46 über die Sammelleitung 47 und gelangt zum P-Register 90, wo er zur Adressierung der LSR-Registergruppe 70 über die Sammelleitung 91 zur Verfügung steht. Mit der Adresse im P-Register 90 wird während eines Prozessor-Zyklus T2 der Inhalt des SA-Registers 36 in das adressierte Basisregister Null der LSR-Registergruppe 70 übertragen. Die gerade beschriebene Operation wiederholt sich, bis alle Felder des aktiven TDE vom Hauptspeicher 10 geholt wurden. Die übrigen Felder des TDE werden in die Basisregister 1 bis 15 der LSR-Registergruppe 70 geladen.
Die nächste Operation ist der Abruf der ersten Instruktion der aktiven Aufgabe, da jetzt alle Felder des TDE geholt und in die entsprechenden Register geladen worden sind. Obwohl die Erfindung das nicht erfordert, wird in diesem speziellen Beispiel eine Instruktion vorher geholt (Vorabruf) und in das Instruktionsregister 35 eingegeben,und dann folgt ein Instruktionsabrufzyklus. Die vorliegende Erfindung ist jedoch nicht von dem zur Leistungsverbesserung in Computersystemen bekannten Vorabruf von Instruktionen abhängig. Die Vorabrufoperation betrifft zwei Zyklen Sl, wobei im ersten Zyklus Sl die hohe Hälfte des Instruktionsregisters 35 über die Wortsammelleitung 19 und' in dem zweiten Zyklus Sl die untere Hälfte des Instruktionsregisters 35 geladen wird. Das Instruktionsregister 35 ist zwei Wörter breit und puffert die nächste Instruktion des ausgeführten Instruktionsstroraes. Instruktionen können natürlich verschiedene Längen haben. Das in Fig. 1 gezeigte Computersystem kann. Instruktionen mit der Länge- eines Halbwortes, eines Vollwortes oder von anderthalb Wörtern, d.h. mit einer Länge von 2, 4 oder 6 Bytes verar-
809884/0758
RO9-76-014
Der Instruktionsabrufzyklus für diese Instruktionen ist in Fig. gezeigt. Der Instruktionsabruf für eine zwei Byte grosse Instruktion ist jedoch nicht dargestellt, weil keine der die vorliegende Erfindung betreffenden Instruktionen zwei Bytes gross ist. Jede Instruktion hat natürlich einen OP-Code, und der enthält in diesem Fall auch Bits, die die Instruktionslänge angeben. Während eines Instruktionsabrufes fragt die Steuerung 100 zuerst den Status eines Abfertigungszyklus-Kippgliedes 93 (D-Kippglied) und eines E/A-Kippgliedes 94 ab. Am Anfang der ersten Aufgabe sind diese beiden Kippglieder zurückgestellt. Der OP-Code wird vom OP-Code-Decodierer 41 und die Instruktionslänge vom IL-Decodierer decodiert. Die aus der Decodierung des OP-Code resultierenden Signale werden an die Steuereinheit 100 übertragen, und die die Instruktionslänge anzeigenden Signale vom IL-Decodierer 42 weitergeleitet zum Setzen eines Kippgliedes 92, wenn die Instruktion 6 Bytes lang ist, und zum Rückstellen dieses Kippgliedes, wenn die Instruktion weniger als 6 Bytes lang ist. Die Steuerung 100 fragt das Kippglied 92 ab, und es wird ein Tl-Zyklus durchgeführt, wodurch die Steuerung 100 ein Signal an den Codierer 60 liefert, der dann einen die Instruktionslänge bezeichnenden Wert ausgibt. Dieser ausgegebene Wert wird dann in das IL-Register 38 während eines Zyklus Tl eingegeben.
Der Instruktions-Abrufzyklus läuft weiter, wobei der Inhalt des IL-Registers 38 in einem Prozessor-Zyklus Al zum laufenden Inhalt des IAR 51 addiert wird. Das Ergebnis wird ins IAR 51 zurückgegeben. Um den Wert im IAR 51 zu ändern, wird eine Byteaddition durchgeführt. Durch Addieren eines IL-Registerwertes von vier oder sechs zum Inhalt des IAR 51 wird die Speicherwortadresse also um eine Wortlänge bzw. anderthalb Wortlängen erhöht. Dadurch erhält das IAR 51 eine Adresse, die auf die nächste Instruktion der Aufgabe zeigt. Das IL-Register 38 hält die Länge der gegenwärtig ausgeführten Instruktion fest. Die Länge wird als Binärzahl ohne Vorzeichen festgehalten. Ein Prozessor-Zyklus T2 wird durchlaufen, indem das I-Feld der Instruktion zur späteren Benutzung in das P-Register 90 gesetzt wird. Anschliessend folgt ein weiterer Pro zessor-Zyklus T2, in dem das OPl-FeId in das OPl-SAR 54 gesetzt wird. Dann folgt ein Zyklus Sl zum Lesen von Daten aus dem Hauptspeicher 10
809884/0758
R09-76-014
-»- 282854A
und Uebertragen auf die Wortsammelleitung 19 und von dort in das SA-Register 36, wodurch der erste Operand der Instruktion geholt ist. Dann wird die Stellung des Kippgliedes 92 abgefragt, und wenn es sich um eine sechs Byte lange Instruktion handelt, wird ein Zyklus T2 begonnen, um das OP2-SAR 55 mit dem Inhalt des OP2-Feldes der Instruktion zu laden. Diesem Zyklus T2 folgt dann ein Zyklus Sl, in dem Daten aus dem Hauptspeicher 10 gelesen und zum Laden in das SB-Register 37 auf die Wortsammelleitung 19 übertragen werden. Das SB-Register 37 wie das SA-Register 36 ist ein Hauptspeicher-Operandenpuffer. Die Operanden 1 und 2 wurden also vom Hauptspeicher 10 geholt und in die Register 36 bzw. 37 eingegeben. Wenn die Instruktion keine sechs Bytes umfasst, braucht kein zweiter Operand vom Hauptspeicher 10 geholt zu werden.
Die Steuerung geht dann auf die AusfOhrungszyklen über, deren Typ durch die Decodierung des OP-Code im OP-Decodierer 41 angezeigt wird. Die Ausführungszyklen für die Instruktionen "Senden Nachricht/ Senden Zählwert/ Einreihen Nachricht in Warteschlange/ Empfang Nachricht/ Empfang Zählwert/ Herausnehmen Nachricht aus Warteschlange" werden im einzelnen später beschrieben. Wenn es sich bei der Instruktion um eine andere als die eben erwähnten Instruktionen für Ausführungszyklen handelt, d.h. um konventionelle Instruktionen wie Laden, Speichern, Verzweigen usw., würden die Ausführungszyklen für diese anderen Instruktionen dann folgen. Da diese anderen Instruktionen herkömmlicher Art sind, sind ihre Ausführungszyklen hier nicht dargestellt.
Um die Instruktions-Abrufzyklen besser verstehen zu können, werden die Zyklen Tl, T2, Al und Sl genauer beschrieben. Die Steuersignale und diejenigen Elemente des Computersystems, die während eines Prozessor-Zyklus Tl betroffen sind, sind im einzelnen in Fig. 7 gezeigt. Das Taktdiagramm für einen Prozessor-Zyklus Tl ist in Fig. 14 gezeigt. Der Prozessor-Zyklus Tl hat die Funktion, einen direkten Operanden in ein Register des Prozessors zu laden. Gemäss Darstellung in Fig. 7 gibt die Steuerung 100 Signale auf die Sammelleitung 102 und betätigt damit den Codierer 60 zur Abgabe eines binären Wertes. Der herkömmliche Codierer 60 wiederum gibt den binären Wert auf die Sammelleitung 61, die den Assembler 62 für die B-Sammelleitung 63 speist. Damit dieser den Codierer
809884/0758
RO9-76-014
60 als Quelle wählt, gibt die Steuerung 100 Signale auf die Sammelleitung 103. Die Ausgabesignale des Assemblers 62 werden Ober die B-Sammelleitung 63 an das Rechenwerk 45 gegeben. Das Rechenwerk 45 wird durch ein Signal von der Steuerung 100 auf der Leitung 104 so gesteuert, dass es die Daten von der B-Sammelleitung 63, d.h. die Daten am rechten Eingang, an das Ausgaberegister 46 weiterleitet, das unter Kontrolle eines Signales von der Steuerung 100 auf der Leitung 105 geladen wird.
Die C-Sammelleitung 47 gibt Daten vom Ausgaberegister 46 an Bestimmungsregister, die von der Steuerung 100 gewählt und geladen werden, wenn diese einen Ladeimpuls auf die Ladeleitung zum gewählten Bestimmungsregister gibt (z.B. Leitung 106). Für jedes Bestimmungsregister gibt es eine eigene Ladeleitung. Die Bestimmungsregister sind alle von der C-Sammelleitung 47 gespeisten Register, nämlich das Instruktions-Register 35, das SA-Register 36, das SB-Register 37, das IL-Register 38, die SAR-Gruppe 50, das CC-Register 65, das L-Register 66, die LSR-Registergruppe 70 und das P-Register 90. Zu der Gruppe der SAR-Register 50 und zu der LSR-Registergruppe 70 führt nur je eine Ladeleitung.
Die vom Prozessor-Zyklus T2 betroffenen Einheiten des Computersystems sind in Fig. 8 dargestellt und das entsprechende Zeitdiagramm in Fig. 15. Ein Prozessor-Zyklus T2 hat die Funktion, den Inhalt eines Datenquellenregisters, das den Assembler 39 für die A-Sammelleitung 40 speist, an ein Bestimmungsregister zu übertragen, das für den Datenempfang mit der C-Sammelleitung 47 verbunden ist. Der Assembler für die Α-Sammelleitung empfängt Daten vom Instruktions-Register 35, vom SA-Register 36, vom L-Register 66, vom P-Register 90, von der SAR-Gruppe 50 und von der LSR-Registergruppe 70. Die Steuerung 100 kann die SAR-Gruppe 50 wählen, indem sie eine Adresse auf die Sammelleitung 101 gibt. Die Daten vom gewählten SAR-Register werden dann gelesen, wenn die Steuerung 100 ein Lesesignal auf die Leitung 114 gibt. Die vom gewählten Register gelesenen Daten laufen dann über die Sammelleitung 32 zum Assembler 39 für die A-Sammelleitung 40.
Die LSR-Registergruppe 70 wird immer durch eine Adresse im P-Register 90 gewählt. Daten werden jedoch nur vom gewählten Register gelesen, wenn die Steuerung 100 ein Lesesignal auf die Leitung 107 gibt. Daten vom gewählten Register werden über die Sammelleitung 69 an den
809384/0758
RO9-76-014
Assembler 39 für die Α-Sammelleitung 40 übertragen. Alle anderen, den Assembler 39 speisenden Register brauchen keinen Leseimpuls, weil ihre Ausgabe ohne diesen Impuls erfolgt.
Die Eingabequelle für den Assembler 39 wird gewählt, wenn die Steuerung 100 ein Signal auf die Code-Sammelleitung 108 gibt. Die Steuerung 100 kann eine von zwei Quellen mit einer einzigen Leitung wählen. Wenn aus mehr als zwei Quellen zu wählen ist, benützt die Steuerung abhängig von der gewünschten Implementierung Signale über eine gemeinsame Code-Sammelleitung oder über eine separate Leitung für jede Quelle« Die Wahl von Bestimmungsorten kann ebenfalls genauso erfolgen, wenn nichts anderes vorgeschrieben ist. Die durch den Assembler 39 für die Α-Sammelleitung geleiteten Daten laufen über die Sammelleitung 40 in das Rechenwerk. Das Rechenwerk 45 wird durch ein Signal von der Steuerung 100 über die Leitung 109 so gesteuert, dass es die Daten von der A-Sammelleitung 40, d.h. vom linken Eingang, an das Ausgaberegister 46 weiterleitet. Die vom Rechenwerk 45 weitergeleiteten Daten werden mittels eines Signales von der Steuerung 100 auf der Leitung 105 in das Ausgaberegister 46 geladen. Die im Ausgaberegister 46 stehenden Daten werden dann an die Bestimmungsregister weitergegeben.
Eines der Bestimmungsregister wird durch ein Signal von der Steuerung 100 gewählt. Wenn eines der Register der SAR-Gruppe 50 das Bestimmungsregister ist, gibt die Steuerung 100 ein Signal auf die Leitung 110 zum Assembler 48 für die D-Sammelleitung 49, der dai.n die C-Sammelleltung 47 als Quelle wählt. Die Steuerung 100 gibt ausserdem eine Adresse auf die Sammelleitung 101, um eines der Register der SAR-Gruppe zu wählen. Die Daten werden in das gewählte SAR vom Assembler 48 über die Sammelleitung 49 unter Steuerung eines Ladeimpulses, den die Steuerung 100 auf die Leitung 111 gibt, eingegeben.
Wenn eines der Register der LSR-Registergruppe 70 als Bestimmungsregister gewählt wird, gibt die Steuerung 100 einen Ladeimpuls auf die Leitung 112. Das gewählte Register wird dann durch den Inhalt des P-Registers 90 adressiert. Wenn das Bestimmungsregister weder zur SAR-Gruppe 50 noch zur LSR-Gruppe 70 gehört, gibt die Steuerung 100 einen Ladeimpuls auf die Leitung 106, die eine repräsentative Ladesteuerleitung ist,
809884/0758
RO9-76-014
Der Prozessor-Zyklus Al und die Taktierung dafür werden anhand der Fig. 10 und 17 erläutert. Der Prozessor-Zyklus Al hat die Aufgabe, den Inhalt zweier gewählter Register an das Rechenwerk 45 zu Obertragen, eine Rechenwerk-Operation auszuführen, und das Ergebnis entweder an das linke Quellenregister zu übertragen oder es fallen zu lassen. Während des Prozessor-Zyklus Al werden ausserdem die Bedingungs-Kippglieder AC 95 und AZ 96 entsprechend dem Ergebnis der Rechenwerk-Operation eingestellt. Anhand von Fig. 10 wird erklärt, wie die Steuerung 100 eine Adresse auf die Sammelleitung 101 und ein Lesesignal auf die Leitung 114 gibt, wenn eines der Register der SAR-Gruppe 50 als Quellenregister für die linke Eingabe zum Rechenwerk 45 dienen soll. Wenn die Eingabe in die linke Seite des Rechenwerks 45 von einem Register der LSR-Registergruppe 70 kommen soll, gibt die Steuerung 100 ein Lesesignal auf die Leitung 107. Die Quelle für die linke Eingabe zum Rechenwerk 45 wird von der Steuerung 100 gewählt, wenn sie über die Leitung 108 ein Wahlsignal an den Assembler 39 für die A-Sammel.leitung 40 gibt.
Der rechte Eingang zum Rechenwerk 45 wird über den Assembler 62 für die B-Sammelleitung 63 geleitet. Der Assembler kann bekanntlich das SB-Register 37, das IL-Register 39, den Codierer 60 oder das CC-Register 65 wählen aufgrund von Signalen, die die Steuerung 100 auf die Codesammelleitung 103 gibt. Die vom Rechenwerk 45 ausgeführte Funktion wird bestimmt durch das Signal von der Steuerung 100 auf der Leitung 104. Durch das Signal auf der Leitung 104 kann z.B. der Inhalt des SA-Registers 36 zum Inhalt des SB-Registers 37 addiert und das Ergebnis über das Ausgaberegister 46 und die C-Sammelleitung 47 in das SA-Register 36 zurückgestellt werden. Das Rechenwerk 45 kann aber beispielsweise auch den Inhalt des SB-Registers 37 vom Inhalt des SA-Registers 36 subtrahieren und das Ergebnis fallen lassen oder an das Ausgaberegister 46 weiterleiten. Die Steuerung 100 liefert ein Ladesignal auf die Leitung 105, um das Ergebnis in das Ausgaberegister 46 zu laden, wo es dann der C-Sammelleitung 47 zur Uebertragung an ein Bestimmungsregister zur Verfügung steht. Wenn als Bestimmungsregister für das Ergebnis ein Register der SAR-Gruppe 50 ausgewählt wird, gibt die Steuerung 100 ein Signal auf die Leitung 110 an den Assembler 48 für die D-Sammelleitung, damit die C-Sammelleitung 47 als Quelle gewählt wird, und sie gibt ein Signal auf die Leitung 111, um
809884/0758
RO9-76-014
das durch die Adresse auf der Sammelleitung 101 gewählte Register der SAR-Gruppe 50 mit dem Ergebnis zu laden, das vom Assembler 40 über die D-Sammelleitung 49 we'itergeleitet wurde. Wenn das Ergebnis in ein Register der LSR-Registergruppe 70 zu setzen ist, gibt die Steuerung 100 ein Signal auf die Leitung 112, um das gewählte Register zu laden, wobei die Wahl durch die Adresse im P-Register 90 erfolgt. Wenn ein anderes Bestimmungsregister gewählt wird, gibt die Steuerung 100 ein Signal auf die Leitung 106, die eine repräsentative Ladesteuerleitung ist. Die Bedingungs-Kippglieder 95 und 96 werden durch Signale vom Rechenwerk 45 über die Leitungen 43 bzw. 44 gesetzt oder zurückgestellt.
Während eines Prozessor-Zyklus Sl werden Daten aus dem Hauptspeicher 10 gelesen und in ein Register geladen, das mit der Wortsammelleitung 19 verbunden ist. Die Quelle der Speicheradresse ist eines der Register der SAR-Gruppe 50, und diese Adresse kann beliebig erhöht, erniedrigt und in das als Quelle dienende SAR-Register zurückgegeben werden. Die von einem Prozessor-Zyklus Sl betroffenen Einheiten des Computersystems sind in Fig. 12 gezeigt, und die Taktierung ist in Fig. 19 dargestellt.
Die Steuerung 100 gibt eine Adresse auf die Sammelleitung 101, um ein Register der SAR-Gruppe 50 zu adressieren. Der Inhalt des gewählten SAR-Registers wird aufgrund eines Signals gelesen, das die Steuerung auf die Leitung 114 gibt. Der Inhalt des gewählten SAR-Registers wird auf die Sammelleitung 32 gegeben und in das Adressregister 18 sowie in die Inkrementierschaltung 59 eingegeben. Der Ausgangswert der Inkremen tier schaltung 59 wird an den Assembler 48 für die D-Sammelleitung 49 geleitet, und wenn die erhöhte oder erniedrigte Adresse in das gewählte SAR-Register zurückgegeben werden soll, gibt die Steuerung 100 ein Signal auf der Leitung 110 an den Assembler 48. Die erhöhte oder erniedrigte Adresse wird in das gewählte Register der SAR-Gruppe 50 eingegeben, wenn die Steuerung 100 ein Ladesignal auf die Leitung 111 gibt. Die Steuerung 100 liefert dann einen Speicherleseimpuls auf der Leitung 115 an die Speichersteuerung 15. Daten werden vom Hauptspeicher 10 an der durch die Adresse im Adressregister 18 bezeichneten Stelle gelesen. Diese Daten gehen vom Hauptspeicher über die Lesedatenleitung 11 an die Speichersteuerung 15 und in das Datenregister 17. Die Ausgestaltung des Registers 17 als echtes Register ist wahlfrei und hängt von dem jeweils
809884/0758
RO9-76-014
verwendeten Speichertyp ab/ d.h. in einigen Spcichcreinheiten werden die Daten am Speichcrausgang gepuffert. Die Daten laufen dann vom Datenregister 17 auf die Wortsammelleitung 19 und weiter in ein entsprechendes Bestimmungsregister, das durch ein Ladesignal auf der repräsentativen Ladesteuerleitung 106 von der Steuerung 100 bestimmt wird.
Die Arbeitsweise des bisher beschriebenen Teils des Ausführungsbeispiels der Erfindung ist in der Fig. 4 dargestellt. Das TDQ-Objekt wird vom Hauptspeicher 10 geholt, um das aktive Aufgabenabfertigungselement TDE in der Aufgaben-Warteschlange TDQ zu lokalisieren. Bestimmte Felder des aktiven TDE werden dann vom Speicher geholt. Dann wird eine Instruktion abgerufen und diese ausgeführt. Die Aufgabe wird dann weiter bearbeitet, bis eine zu der Aufgabe gehörende Instruktion einen Aufgabenwechsel veranlasst, oder bis eine Aufgabe mit höherer Priorität in die TDQ gesetzt wird und dadurch einen Aufgabenwechsel auslöst.
Eine Nachrichtenempfangsinstruktion (RECM) kann dazu führen, dass die aktive Aufgabe aus der TDQ herausgenommen wird und in eine Aufgabenabfertigungselement-Warteliste einer Sendeempfangsschlange (SRQ) eingereiht wird. Die Funktion einer Nachrichtenerapfangsinstruktion, deren Format in Fig. 3 gezeigt ist, besteht darin, eine Nachricht (SRM) von einer SRQ zu entnehmen. Wenn in der SRQ keine Nachricht steht, dann kann die Nachrichtenempfangsinstruktion nicht ausgeführt werden, und die aktive Aufgabe wird aus der TDQ herausgenommen und geht in den Wartezustand als inaktives, wartendes TDE in einer SRQ. Diese Aufgabe wartet dann in den SRQ, bis eine Sendeoperation eine Nachricht in die SRQ einreiht und damit das inaktive, wartende TDE zur TDQ überführt. Gemäss Fig. 4 wird die Nachrichtenerapfangsinstruktion genauso wie jede andere Instruktion vorher abgerufen (Vorabruf). In den Instruktions-Abrufzyklen für die Nachrichtenempfangsinstruktion werden sechs Bytes abgerufen. Nach Beendigung der Instruktions-Abrufzyklen werden die Ausführungszyklen für die Nachrichtenempfangsinstruktion (RECM) durchgeführt. Diese sind in Fig. 26 dargestellt.
Die Nachrichtenempfangsinstruktion (RECM), wie sie in Fig. 3 zu sehen ist, wird durch ihren OP-Code als solche bezeichnet. Dem OP-Codefeld folgt ein I-Feld, das in diesem Fall die Adresse der LSR-Registergruppe 70 enthält. Das adressierte Register der LSR-Gruppe 70 wird
809884/0758
RO9-76-014
während der Ausführung der Nachrichtenempfangsinstruktion (RECM) mit der Adresse derjenigen Nachricht geladen/ die aus der Sendeempfangsschlange (SRQ) herausgenommen wurde, die wiederum durch das GPl-Adressfeld in der Nachrichtenempfangsinstruktion adressiert wird. Das OP2-Adressfeld in der Nachrichtenempfangsinstruktion enthält eine Adresse zur Ansteuerung des Hauptspeichers 10 an einer Stelle, die ein Schlüsseldatenobjekt enthält, mit dem Schlüsselfelder der Sendeempfangsnachrichten (SRM) einer SRQ verglichen werden, um die aus der SRQ herauszunehmende Nachricht zu identifizieren. Die Nachrichten (SRM) sind in der SRQ in der Reihenfolge ihrer Schlüssel verkettet. Das vom Speicher geholte Schlüsseldatenobjekt wird mit dem Schlüsselfeld der ersten Nachricht in der SRQ verglichen, und wenn die Schlüssel übereinstimmen, wird diese Nachricht aus der SRQ herausgenommen. Wenn die Schlüssel nicht übereinstimmen, wird das vom Speicher geholte Schlüsseldatenobjekt mit dem Schlüsselfeld der nächsten Nachricht (SRM) verglichen usw., bis die beiden Schlüssel übereinstimmen.
Wenn das schliesslich der Fall ist, dann wird die Adresse derjenigen Nachricht SRM, die das übereinstimmende Schlüsselfeld enthält, in die LSR-Registergruppe 70 eingegeben, adressiert durch das R3-Feld in der Nachrichtenempfangsinstruktion, und aus der SRQ herausgenommen. Wenn das vom Speicher geholte Schlüsseldatenobjekt nicht mit dem Schlüsselfeld einer Nachricht SRM in der SRQ übereinstimmt, wird die Nachrichtenempfangsinstruktion als nicht ausführbar betrachtet.
Weil das IAR 51 auf die nächste vom Hauptspeicher 10 zu holende Instruktion zeigt und die Nachrichtenempfangsinstruktion ja nicht ausführbar war, muss der Inhalt des IAR erniedrigt werden, so dass er auf die Adresse der nicht ausführbaren Nachrichtenempfangsinstruktion zeigt. Diese Operation wird später noch genauer beschrieben. Die Adresse für diese nicht ausführbare Nachrichtenempfangsinstruktion muss gerettet werden, weil die diese Instruktion enthaltende aktive Aufgabe aus der TDQ herausgenommen und auf die Warteliste SRQ gesetzt wird, adressiert durch das OPl-FeId der nicht ausführbaren Nachrichtenempfangsinstruktion. Das Herausnehmen des aktiven TDE aus der TDQ und die Einordnung dieses TDE in die SRQ wird im einzelnen noch beschrieben. Durch das Herausnehmen des aktiven TDE wird die Aufgabe gewechselt, und das neue TDE mit der
809884/0758
RO9-76-014
"24~ 2826544
höchsten Priorität aus der TDQ wird dann zur aktiven Aufgabe. Das ist durch ein Beispiel in Fig. 28 gezeigt.
Während der Ausführung einer Nachrichtenempfangsinstruktion stellt die Steuerung 100 das Sende-Kippglied (S) 07 zurück, setzt das Empfangs-Kippglied (R) 88 und stellt das ST-Phasen-Kippglied 97 und das RT-Phasen-Kippglied 98 zurück. Die Steuerung 100 erreicht das unmittelbar vor oder gleichzeitig mit dem Prozessor-Zyklus T2, in dem der Inhalt des OPl-SAR 54 übertragen wird in das PCII-SAR 56, das normalerweise die Adresse des letzten oder vorhergehenden Elementes in der Warteschlange enthält. Nach dem T2-Zyklus folgen Entnahmezyklen, die in Fig. 27 dargestellt sind.
In Fig. 28 ist gezeigt, dass das TDQ-Objekt eine TDE-Adresse enthält, die auf-das TDE mit der höchsten Priorität in der TDQ zeigt. Dieses TDE hat die Priorität null. Das TDE mit der Priorität null wird mit einem TDE verkettet, das die Priorität eins hat, und dieses wieder mit dem TDE der nächsthöheren Priorität usw., wobei das TDE mit der Priorität N das letzte TDE in der TDQ ist. Das TDE mit der Priorität null ist die aktive Aufgabe, und sein ΙΑ-Feld zeigt auf eine Nachrichtenempfangsinstruktion im Speicher. Das OPl-FeId der Nachrichtenempfangsinstruktion zeigt auf SRQ 1, mit der die Nachricht SRMl verkettet ist. Die Nachricht SRM 3 wiederum ist mit SRM 1 verkettet. TDE1s werden nicht mit der SRQ 1 verkettet. Das zeigt, dass keine inaktiven, wartenden TDE's in der SRQ 1 stehen. Das OP2-Feld der Nachrichtenempfangsinstruktion zeigt auf ein Schlüsseldatenobjekt im Hauptspeicher 10 mit dem Wert 2. Keine Nachricht SRM in der SRQ 1 hat ein Schlüsselfeld mit dem Wert 2, und daher ist die Nachrichtenempfangsinstruktion nicht ausführbar. Das ΙΑ-Feld des TDE 1 in der TDQ zeigt auf eine Nachrichtensendeinstruktion. Das I-Feld dieser Nachrichtensendeinstruktion zeigt auf ein Register der LSR-Registergruppe 70, das eine Hauptspeicheradresse eines Speicherwortes SRM 2 enthält. Weil die Nachrichtenempfangsinstruktion nicht ausführbar ist, wird das aktive TDE 0 aus der TDQ herausgenommen und in die Warteliste der SRQ 1 eingereiht, wie es in Fig. 29 gezeigt ist. Das TDE 1 wird dann zum aktiven TDE, und die Ausführung der Nachrichtensendeinstruktion veranlasst die Einreihung von SRM 2 entsprechend seiner Priorität in die SRQ 1, wie es in Fig. 30 gezeigt ist.
809884/0758
RO9-76-014
Die von der Nachrichtenempfangsinstruktion betroffenen Entnahmezyklen beginnen mit einem Prozessor-Zyklus T2, nach Darstellung in Fig. 27. Vor diesem Prozessor-Zyklus T2 wurde das SA-Register 36 mit dem ersten Feld der SRQ geladen, und zwar während eines Instruktions-Abrufzyklus für die Nachrichtenempfangsinstruktion. Während dieses Abrufzyklus wurde auch das SB-Register 37 mit dem Schlüsseldatenobjekt vom Hauptspeicher 10 geladen, um eine bestimmte Nachricht SRM in der SRQ zu lokalisieren. Das PCH-SAR 56 wurde während des Nachrichtenempfangsausführungszyklus mit der Adresse des ersten Feldes der SRQ 1 unmittelbar vor dem Entnahmezyklus geladen. Während des Prozessor-Zyklus T2 wird das CCH-SAR 57 mit dem Inhalt des SA-Registers 36 geladen. Das CCH-SAR 57 enthält die Adresse des gegenwärtig verarbeiteten Elementes der Warteschlange. Diesem Prozessor-Zyklus T2 folgt ein Prozessor-Zyklus A2, in dem der Inhalt des CCH-SAR 57 auf Null abgefragt wird, um festzustellen, ob Nachrichtenwörter SRM in der SRQ stehen.
In dem speziellen Beispiel in Fig. 28 stehen zwei SRM1s in der SRQ. Daher ist die CCH-Adresse nicht null, und somit wird das AZ-Kippglied 96 nicht vom Rechenwerk 45 gesetzt. In einem dann folgenden Prozessor-Zyklus Sl wird das Schlüsselfeld aus SRM 1 geholt und die CCH-Adresse erhöht. Das vom Hauptspeicher 10 geholte Schlüsselfeld wird dann in das SA-Register 36 gesetzt. In einem anschliessenden Zyklus Al wird das Schlüsseldatenobjekt mit dem Schlüsselfeld verglichen, indem man den Inhalt des SB-Registers 37 von dem des SA-Registers 36 subtrahiert. Wenn das Schlüsseldatenobjekt grosser ist als das Schlüsselfeld, heisst das, dass keine weiteren Vergleiche notwendig sind, weil das Schlüsselfeld einer Nachricht SRM mit niedrigerer Priorität niemals gleich dem Schlüsselobjekt sein kann. Wenn das Schlüsselfeld mit dem Schlüsselobjekt übereinstimmt, wird das AZ-Kippglied 96 gesetzt. In einem Zyklus Sl wird dann die verkettete Adresse der Nachricht SRM 1 aus dem Hauptspeicher 10 geholt und in das SA-Register 36 gesetzt. Während dieses Zyklus Sl wird der Inhalt des AZ-Kippgliedes 96 und des ST-Kippgliedes 97 zur Bestimmung der Operation des nächsten Zyklus decodiert. Da in dem in Fig. 28 gezeigten Beispiel das AZ-Kippglied 96 zurückgestellt ist, weil das Schlüsselfeld der Nachricht SRM 1 nicht mit dem Schlüsseldatenobjekt übereinstimmte, und da das ST-Phasen-Kippglied 97 zurückgestellt ist,
809884/0758
RO9-76-014
28285U
folgt nun ein Prozessor-Zyklus T2 zur Uebertragung des Inhaltes des CCH-SAR 57 an das PCH-SAR 56, um so die Adresse der Nachricht SRM 1 in das PCH-SAR 56 einzugeben. Der Inhalt des PCH-SAR wird dann während eines Prozessor-Zyklus A2 um Eins erhöht. Der Wert der Adresse für das SRM-Kettungsadressfeld ist damit für spätere Benutzung gerettet, wenn die nächste Nachricht SRM aus der Kette zu entfernen ist.
Weil das Schlüsselobjekt nicht mit dem Schlüsselfeld der Nachricht SRM 1 übereinstimmte, läuft die Operation auf den Anfang der Entnahmezyklen zurück, und das Schlüsselfeld der nächsten Nachricht SRM in der SRQ 1 wird mit dem Schlüsseldatenobjekt verglichen. Diese Operation läuft weiter, bis das Schlüsselfeld der letzten Nachricht SRM der SRQ mit dem Schlüsseldatenobjekt verglichen wurde. Im vorliegenden Fall wird, wenn die Vergleichsoperation für das Schlüsselfeld der Nachricht SRM 3 beendet wurde, wieder die Hauptsuchschleife ausgeführt, und weil das SRM-Kettungsadressfeld der Nachricht SRM 3 gleich Null ist, wird das AZ-Kippglied 96 gesetzt und die Operation wird gewechselt, wodurch der Inhalt das Sende-Kippglied 87 und das Empfangs-Kippglied 88 von der Steuerung 100 decodiert werden. Wenn das AZ-Kippglied 96 gesetzt ist, dann ist das eine Anzeige dafür, dass die Nachrichtenempfangsinstruktion nicht ausgeführt werden konnte. Das Empfangs-Kippglied 88 ist noch gesetzt, und daher setzt in der nächsten Operation die Steuerung 100 das D-Kippglied 93, um am Anfang des nächsten Instruktions-AbrufZyklus Abfertigungszyklen aufzurufen. Das Sende-Kippglied 87 wird dann abgefragt, und da es abgeschaltet (zurückgestellt) ist, setzt die Steuerung 100 das RT-Phasen-Kippglied 98. In einem Prozessor-Zyklus T2 wird dann der Inhalt des TDQ-SAR 52 in das PCH-SAR 56 geladen. In einem anschliessenden Prozessor-Zyklus S2 wird das SA-Register 36 mit einer PCH-Adresse vom Hauptspeicher 10 geladen, wobei die PCH-Adresse die Adresse der TDQ ist. In einem Prozessor-Zyklus T2 wird dann der Inhalt des CTDE- SAR (laufendes TDE) in das OP2-SAR 55 übertragen. In einem anschliessenden Zyklus Sl wird das Prioritätsfeld des TDE 0 vom Hauptspeicher 10 geholt und in das SB-Register 37 gesetzt, damit man mit der vorher beschriebenen Suchschleife das TDE aus der TDQ entfernen kann.
809834/0758
RO9-76-014
2328544
Die Suchschleife des Hauptontnahmezyklus wird wieder ausgeführt, und weil das Prioritätsfeld des TDE 0 mit sich selbst verglichen wird, ist der Inhalt des SA-Registers gleich dem Inhalt des SB-Registers, und somit wird das AZ-Kippglied 96 gesetzt. Das ST-Kippglied 97 bleibt jedoch zurückgestellt. Die nächste Operation ist daher ein Prozessor-Zyklus S2 und nicht ein Prozessor-Zyklus T2. Während des Prozessor-Zyklus S2 wird der Wert vom SA-Register 36 in den Hauptspeicher 10 an eine Stelle geladen, die die TDE-Adresse im TDQ-FeId enthält. Damit wird die frühere Kette unterbrochen, wodurch die TDE-Adresse im TDQ-FeId jetzt auf das TDE 1 und nicht mehr auf das TDE 0 zeigt. Obwohl das TDE also aus der TDQ herausgenommen wird, ist die Bewegung keine physische Bewegung des TDE, sondern nur eine Aenderung der TDE-Adresse im TDQ-FeId.
Der Inhalt der Kippglieder 87, 88 und 89 wird dann von der Steuerung 100 decodiert. In diesem Fall ist das Sende-Kippglied 87 zurückgestellt, und das Empfangs-Kippglied 88 sowie das RT-Phasen-Kippglied 98 sind gesetzt. Die nächste Operation besteht somit im Laden des Inhaltes des CCH-SAR 57 in das OP2-SAR 55 während eines Prozessor-Zyklus P2. Die Steuerung 100 steuert die entsprechenden Bedingungen zum Umschalten der Operation auf Einsetzzyklen. Ein Prozessor-Zyklus S2 wird dann zum Laden des SB-Registers 37 mit dem Prioritätsfeld des TDE 0 vom Hauptspeicher 10 benutzt. Während dieses Prozessor-Zyklus Sl wird ausserdem die Adresse aus dem OP2-SAR 55 erhöht und in dasselbe Register zurückgegeben. Dann wird der Operationstyp festgestellt durch Abfragen des Sende-Kippgliedes 87. Da dieses nicht gesetzt ist, folgt ein Prozessor-Zyklus A2, in dem der Inhalt des OPl-SAR 54 erhöht und in dasselbe Register zurückgegeben wird, so dass dieses jetzt auf das TDE-Adressfeld der SRQ 1 zeigt. Der Inhalt des OPl-SAR 54 wird dann während des Prozessor- Zyklus T2 in das PCH-SAR 56 übertragen. In einem anschliessenden Prozessor-Zyklus Sl wird dann das SA-Register 36 mit der PCH-Adresse geladen, d.h. in dem in Fig. 28 gezeigten Beispiel mit dem TDE-Adressfeld der SRQ 1. Die Operation läuft dann mit Einsetzzyklen weiter, die im einzelnen in Fig. 25 gezeigt sind. Zu Beginn eines Einsetzzyklus, wie er beispielsweise in Fig. 28 dargestellt ist, enthält das SA-Register das TDE-Adressfeld der SRQ 1, das SB-Register 37 das Prioritätsfeld des
809884/0758
RO9-76-014
- 28 -
TDE O, das PCH-SAR 56 die Adresse des TDE-Adressfeldes der SRQ 1 und das OP2-SAR 55 das Kettungsadressfeld des TDE 0.
Der erste Einsetzzyklus ist ein Prozessor-Zyklus T2, in dem das CCH-SAR 57 mit dem Inhalt des SA-Registers 36 geladen wird. In einem Prozessor-Zyklus A2 wird dann der Wert im CCH-SAR 57 auf Null abgefragt. In dem in Fig. 28 gezeigten speziellen Beispiel ist der Inhalt des CCH-SAR 57 Null, weil das TDE-Adressfeld der SRQ 1 Null ist. Der Null-Wert zeigt an, dass keine TDE's im inaktiven Zustand in der SRQ 1 warten. Weil der Wert des CCH-SAR 57 Null ist, setzt das Rechenwerk 45 das AC-Kippglied 96. Der Zustand dieses Kippgliedes wird abgefragt, und da es gesetzt ist, folgt als nächstes ein Prozessor-Zyklus T2 zum Laden des SA-Registers 36 mit dem Inhalt des CCH-SAR 57. Diesem Zyklus folgt ein Prozessor-Zyklus S2, in dem der Inhalt des SA-Registers 36 in den Hauptspeicher 10 an der Adresse gespeichert wird, die im OP2-SAR 55 enthalten ist. Das TDE-Adressfeld der SRQ 1 (lauter Nullen) steht jetzt im Kettungsadressfeld des TDE 0. Die OP2-Adresse im SAR 55 wird während des Prozessor-Zyklus S2 heruntergesetzt. Hier genügt die Feststellung, dass der Prozessor-Zyklus S2 im einzelnen in Fig. 13 gezeigt ist und später beschrieben wird.
Im anschliessenden Prozessor-Zyklus T2 wird das SA-Register 36 mit dem Inhalt des OP2-SAR 55 geladen, der während des vorhergehenden Prozessor-Zyklus S2 heruntergesetzt wurde. Das SA-Register 36 wird also mit derAdresse des TDE 0 geladen, und diese Adresse dann im Hauptspeicher 10 während eines Zyklus S2 an der Adresse gespeichert, die vom PCH-SAR 56 angegeben ist, wodurch das TDE 0 in die SRQ 1 gesetzt wird. Zu dieser Zeit haben die TDQ und die SRQ 1 den in Fig. 29 dargestellten Zustand. Die Kette der Nachrichten SRM in der SRQ 1 in Fig. 29 bleibt unverändert.
Die Steuerung 100 decodiert dann den Zustand der Kippglieder 87, und 98 und stellt fest, dass das Sende-Kippglied 87 nicht gesetzt ist, das RT-Phasen-Kippglied 98 aber gesetzt ist. Weil das Sende-Kippglied nicht gesetzt ist, spielt der Zustand des ST-Phasen-Kippgliedes 97 im Augenblick keine Rolle. In den dann aufeinanderfolgenden Prozessor-Zyklen Al und Tl wird der Inhalt des Instruktionsaddressregisters IAR vermindert, so dass er auf die nicht ausführbar gewesene Nachrichtenempfangsinstruktion zeigt und das IL-Register 38 wird auf Null gestellt.
809884/0768
RO9-76-014
- 29 -
Die Operation schaltet dann um zu einem Instruktions-Abrufzyklus für die aktive Aufgabe, die immer noch das TDE 0 ist, weil ein Aufgabenwechsel noch nicht stattgefunden hat.
Nach Darstellung in Fig. 21 wird der Instruktions-Abrufzyklus begonnen und der Inhalt der Kippglieder 93 und 94 durch die Steuerung 100 decodiert und dabei festgestellt, dass das D-Kippglied 93 gesetzt und das E/A-Kippglied 94 zurückgestellt ist. Somit Abfcrtigungszyklen angefangen. Die Abfertigungszyklen sind im einzelnen in Fig. 22 dargestellt. Bei ihrem Beginn wird das Kippglied 93 von der Steuerung 100 zurückgestellt. Dann wird in einem Prozessor-Zyklus A2 festgestellt, ob die TDQ-Adresse im SAR 52 gleich Null ist. Weil in dem in Fig. 28 und 29 gezeigten speziellen Beispiel keine weiteren TDE's in der TDQ stehen, ist der Inhalt des TDQ-SÄR 52 von Null verschieden, und somit wird das AZ-Kippglied 96 nicht gesetzt. Wenn keine v/eiteren TDE's in der TDQ stehen, würde der Prozessor 30 in den Wartezustand gehen.
Wenn das AZ-Kippglied 96 zurückgestellt ist, wird ein Prozessor-Zyklus Sl zum Laden des SB-Registers 37 mit dem TDQ-Kettungsadressfeld (das auf das oberste TDE in der TDQ zeigt) vom Hauptspeicher 10 durchgeführt. Die laufende TDE-Adresse in CTDE-SAR 53 wird dann mit dem Inhalt des SB-Registers 37 während eines Zyklus Al verglichen. Im vorliegenden Beispiel gilt die laufende TDE-Adresse für das TDE 0, wogegen die TDE-Adresse im TDQ-Datenobjekt auf das TDE 1 zeigt. Aufgrund der Rechenwerks-Operation wird das AZ-Kippglied 96 nicht gesetzt. Wenn es gesetzt worden wäre, wäre kein Aufgabenwechsel erforderlich, und die Instruktions-Abrufzyklen würden folgen. Es folgt jedoch jetzt ein Prozessor-Zyklus T2, in dem das OPl-SAR 54 mit dem Inhalt des laufenden TDE-SAR 53 geladen wird. Der Inhalt des OPl-SAR 54 wird dann während eines Prozessor-Zyklus A2 um 2 erhöht, so dass er auf das ΙΑ-Feld des TDE 0 zeigt. Jetzt müssen die Statusfelder des laufenden TDE gespeichert werden. Danach werden die Statusfelder für das neue aktive TDE, d.h. für das TDE 1, in die entsprechenden Register geladen.
Das SA-Register 36 wird in einem Prozessor-Zyklus T2 mit dem Inhalt des IAR 51 geladen, und dessen Inhalt wird im Hauptspeicher 10 gerettet, indem während eines Prozessor-Zyklus S2 der Inhalt des SA-Registers 36
809884/0758
RO9-76-014
- 30 -
in den Hauptspeicher 10 an der OPl-Adresse vom OPl-SAR 54 geladen wird und die OPl-Adresse erhöht wird. In einem Zyklus T3 wird dann das SAR-Register 36 mit dem Inhalt des IL-Registers 38 und des CC-Registers 65 geladen. In dem anschliessenden Speicherzyklus S2 wird der Inhalt des SA-Registers 36 in den Hauptspeicher 10 an der Adresse geladen, die vom OPl-SAR 54 angegeben wird.
Die OPl-Adresse im SAR 54 wird wieder erhöht und an das OPl-SAR 54 zurückgegeben. Dann folgt ein Zyklus Tl, um den Wert 15 in das L-Register 66 zu setzen. Das L-Register 66 ist ein Zählregister zur Steuerung der Schleifenwiederholungen des Prozessors. Das L-Register 66 kann um Eins heruntergesetzt werden und ein Null-Detektor 67 fragt das Register 66 auf die Bedingung lauter Nullen ab. Diesem Zyklus Tl folgt ein weiterer Zyklus Tl, in dem das P-Register 90 auf Null gesetzt wird. Dann wird in einem Zyklus T2 das SA-Register 36 mit dem Inhalt desjenigen Registers der LSR-Registergruppe 70 geladen, das durch den Inhalt des P-Registers 90 adressiert wurde. Der Inhalt des SA-Registers 36 wird dann an der durch das OPl-SAR 54 angegebenen Adresse in den Hauptspeicher 10 übertragen und danach der Inhalt des OPl-SAR 54 erhöht, und zwar alles während eines Prozessor-Zyklus S2. Ein LZ-Kippglied 89 wird dann abgefragt. Dieses Kippglied wird gesetzt, wenn der Wert im L-Register von dem Null-Detektor 67 als Null erkannt wird. In diesem Fall jedoch ist das LZ-Kippglied 89 nicht gesetzt, und somit wird das P-Register 90 erhöht und das L-Register 66 heruntergesetzt. Das SA-Register 36 wird wieder mit dem Inhalt desjenigen Registers der LSR-Registergruppe 70, das durch den Inhalt des P-Registers 90 adressiert wird, geladen und die soeben beschriebene Folge wiederholt, bis der Inhalt der gesaraten LSR-Registergruppe 70 gespeichert wurde. Diese Tatsache wird angezeigt, wenn das L-Register 66 auf Null heruntergesetzt wurde und das LZ-Kippglied gesetzt ist.
Wenn das LZ-Kippglied 89 gesetzt ist, folgt ein Prozessor-Zyklus P3 zum Laden des CTDE-SAR 53 mit dem Inhalt des SB-Registers 37. Die laufende TDE-Adresse im CTDE-SAR 53 wird dann während des Zyklus_P2 in das OPl-SAR 54 übertragen. Dann folgt ein Prozessor-Zyklus A2 zum Addieren des Wertes 2 zum Inhalt des OPl-SAR 54. In einem nachfolgenden Prozessor-Zyklus Sl wird dann aus dem Hauptspeicher 10 ein Wert aus dem
809884/0758
RO9-76-014
- 31 -
Speicherplatz mit der Adresse OPl genommen und in das SA-Register 36 geladen, und die OPl-Adresse wird erhöht. Somit ist das SA-Register 36 mit dem ΙΑ-Feld des TDE 1 geladen. Das IAR 51 wird dann während des Zyklus T2 mit dem Inhalt des SA-Registers 36 geladen. Das IL-Register und das CC-Register 65 werden dann mit dem IL-FeId bzw. dem CC-FeId vom TDE 1 geladen, indem man diese Felder zuerst vom Hauptspeicher 10 holt und sie dann während eines Zyklus Sl in das SA-Register 36 überträgt und dann dessen Inhalt während des Zyklus T2 in die Register 38 und 65 überträgt.
Die LSR-Registergruppe 70 wird dann geladen, indem man das L-Register 66 zuerst während eines Zyklus Tl auf den Wert 15 stellt und dann das P-Register 90 während eines weiteren Zyklus Tl mit dem Wert Null lädt. Dann wird in einem Zyklus Sl das SA-Register 36 mit einem Wert für das Basisregister 0 der LSR-Registergruppe 70 vom Hauptspeicher 10 an einer Adresse geladen, die vom OPl-SAR 54 genommen ist. Der Inhalt des OPl-SAR 54 wird während dieses Zyklus Sl erhöht. Ein Zyklus T2 folgt dann, um das Basisregister Null der LSR-Registergruppe 70 mit dem Wert vom SA-Register 36 zu laden. Das LZ-Kippglied 89 wird abgefragt und ein von Null verschiedener Wert ermittelt. Somit wird der Inhalt des L-Registers 66 erniedrigt und der Inhalt des P-Registers 90 erhöht. In einem Prozessor-Zyklus Sl wird dann wieder das SA-Register 36 mit einem Wert vom Hauptspeicher 10 für das nächste Register der LSR-Registergruppe 70, d.h. das Basisregister 1, geladen, und die gerade beschriebene Schleife wiederholt, bis alle Register der LSR-Registergruppe 70 geladen sind. Diese Bedingung wird angezeigt durch Setzen des LZ-Kippgliedes 89. In einem dann folgenden Zyklus Al wird der Inhalt des IL-Registers 38 vom IAR 51 subtrahiert. Die Adresse im IAR 51 zeigt jetzt auf die erste Instruktion der Aufgabe TDE 1, die dann während eines Zyklus Sl in das Instruktionsregister 35 vor-abgerufen wird. Der Aufgabenwechsel ist damit beendet und Instruktions-Abrufzyklen werden für die erste Instruktion der neuen Aufgabe ausgeführt.
Bevor Abruf und Ausführung der ersten Instruktion der neuen Aufgabe beschrieben werden, bei der es sich in dem in Fig. 28 gezeigten Beispiel um eine Nachrichtensendeinstruktion handelt, werden Einzelheiten der Prozessor-Zyklen T3, A2 und S2 beschrieben. Die Elemente des Computers,
809884/0758
RO9-76-014
- 32 -
die vom Prozessor-Zyklus T3 betroffen sind, sind in Fig. 9 dargestellt, und die Zeitdiagramme für den Zyklus T3 sind in Fig. 16 gezeigt. Die Funktion des Prozessor-Zyklus T3 besteht darin, den Inhalt eines den Assembler 62 für die B-Sammelleitung 63 speisenden Quellenregister an ein Register zu übertragen, das für den Datenempfang über die C-Saramelleitung 47 angeschaltet ist. Die Eingänge zum Assembler 62 wurden vorher beschrieben und werden durch Signale von der Steuerung 100 über die Codesainmelleitung 103 gewählt. Die in den Assembler 62 von der gewählten Quelle eingespeisten Daten laufen dann über die B-Sammelleitung zum Rechenwerk 45. Das Rechenwerk 45 wird durch ein Signal von der Steuerung 100 über die Leitung 104 so gesteuert, dass es die Daten von der B-Sammelleitung 63 an das Ausgaberegister 46 weiterleitet. Das Ausgaberegister 46 wird mit den Daten vom Rechenwerk 45 durch ein Ladesignal von der Steuerung auf der Leitung 105 geladen. Die C-Sammelleitung 47 empfängt die Daten vom Ausgaberegister 46 und leitet sie in das oben beschriebene Bestimmungsregister weiter. Wenn eines der SAR-Register das Bestimmungsregister sein soll, gibt die Steuerung 100 eine Adresse auf die Sammelleitung 101, ein Wahlsignal an den Assembler 48 für die D-Sammelleitung 49 auf die Leitung 110 und einen Ladeimpuls auf die Leitung 111. Wenn das Bestimmungsregister ein Register aus der LSR-Registergruppe 70 sein soll, enthält das P-Register 90 die Adresse zum Wählen des betreffenden Registers, und die Steuerung 100 gibt ein Ladesignal auf die Leitung 112. Wenn ein anderes als die gerade beschriebenen Register gewählt werden soll, gibt die Steuerung 100 einen Ladeimpuls auf die repräsentative Ladesteuerleitung 106. Die anderen Bestimmungsregister sind das Instruktionsregister 35, das SA-Register 36, das SB-Register 37, das IL-Register 38, das CC-Register 65, das L-Register 66 und das P-Register 90. Der Prozessor-Zyklus T3 gleicht also dem Prozessor-Zyklus T2, die Daten kommen jedoch von Quellen, die den Assembler 62 für die B-Sammelleitung 63 und nicht den Assembler 39 für die A-Sammelleitung 40 speisen.
Der Prozessor-Zyklus A2 gleicht dem Prozessor-Zyklus Al, steuert jedoch das Rechenwerk 45 und gibt Daten dort hin von Quellen, die über den Assembler 39 und die A-Sammelleitung 40 das Rechenwerk 45 speisen. An den Assembler 62 wird ein direkter Operand angelegt/ der das Rechen-
809384/0758
RO9-76-014
- 33 -
werk 45 über die B-Sammelleitung 63 speist. Von der Steuerung 100 kontrolliert, führt das Rechenwerk 45 die entsprechende Funktion aus, und das Ergebnis wird entweder in das Quellenregister zurückgegeben oder fallengelassen. Das Rechenwerk 45 setzt dementsprechend das AC-Kippglied 95 und das AZ-Kippglied 96 durch ,Signale über die Leitungen 43 bzw. 44. Wenn als Dateneingabequelle für das Rechenwerk 45 über die A-Sammelleitung 40 (Fig. 11) ein SAR-Register der Gruppe 50 vorgesehen ist, gibt die Steuerung 100 eine Adresse auf die Sammelleitung 101 und ein Lesesignal auf die Leitung 114. Die Daten werden dann in den Assembler 39 für die Α-Sammelleitung über die Leitung 32 übertragen. Wenn als Quelle ein Register der LSR-Registergruppe 70 dienen soll, gibt die Steuerung 100 einen Leseimpuls auf die Leitung 107, und Daten werden von dem Register gelesen, das durch die Adresse im P-Register 90 gewählt ist. Die Daten laufen vom gewählten Register der LSR-Registergruppe 70 zum Assembler 39 der A-Sammelleitung 40 über die Sammelleitung 69. Alle anderen, den Assembler 39 speisenden Quellen brauchen kein Lesesignal.
Die jeweilige Eingabequelle für den Assembler 39 der A-Sammelleitung 40 wird von der Steuerung 100 gewählt, welche Wahlsignale auf die Sammelleitung 108 gibt. Der direkte. Operand kommt vom Codierer 60, der von der Steuerung 100 durch ein Signal auf der Leitung 102 aktiviert wird. Der Assembler wählt den Codierer 60 als Eingabequelle aufgrund von Steuersignalen von der Steuerung 100 über die Sammelleitung 103. Das Rechenwerk 45 führt die gewünschte Operation unter Steuerung eines Signales von der Steuerung 100 über die Leitung 104 aus. Das Ergebnis wird in das Ausgaberegister 46 eingegeben, wenn die Steuerung 100 ein Ladesignal auf die Leitung 105 gibt. Das Ergebnis im Ausgaberegister 46 steht dann der C-Sammelleitung 47 zur Verfügung, die es in ein Bestimmungsregister einspeist.
Wenn als Bestimmungsregister ein Register der SAR-Registergruppe gewählt wurde, gibt die Steuerung 100 wieder eine Adresse auf die Sammelleitung 101, ein Ladesignal auf die Leitung 111 und ein Wahlsignal für den Assembler 48 der D-Sammelleitung 49 auf die Leitung 110, wodurch die C-Sammelleitung 47 als Eingabequelle des Assemblers 48 gewählt wird und die Daten über die D-Sammelleitung 49 in das gewählte SAR-Register
809884/0758
RO9-76-014
- 34 -
der Gruppe 50 laufen. Wenn als Bestimmungsregister ein Register aus der LSR-Registergruppe 70 gewählt wurde, gibt die Steuerung 100 einen Ladeimpuls auf die Leitung 112, und die Daten von der C-Sammelleitung 47 gelangen in das Register, das durch eine Adresse vom P-Register 90 gewählt wurde. Wenn das Ergebnis für andere Register als solche der SAR-Gruppe 50 oder der LSR-Registergruppe 70 bestimmt ist, gibt die Steuerung 100 einen Ladeimpuls auf die Leitung 106, die repräsentativ für zu anderen Bestimmungsregistern führende Ladesteuerleitungen ist.
Einzelheiten des Prozessor-Zyklus S2 sind in den Fig. 13 und 20 dargestellt. Der Prozessor-Zyklus S2 unterscheidet sich vom Zyklus Sl dadurch, dass Daten in den Hauptspeicher geschrieben werden, entweder vom SA-Register 36 oder vom SB-Register 37 über die Sammelleitungen 28 bzw. 29, die den Sl-Sammelleitungsassembler 34 speisen, und dieser wiederum speist über die Sammelleitung 31 das Datenregister 17. Die Daten werden dann von der Speichersteuerung 15 über die Schreibdatenleitung 12 in den Hauptspeicher 10 geleitet und in eine Speicherstelle geschrieben, die durch die Adresse im Adressregister 18 bezeichnet ist. Die in das Register 18 gesetzte Adresse kommt von einem Register der SAR-Gruppe 50. Die Steuerung 100 gibt eine Adresse auf die Sammelleitung 101 und zur SAR-Gruppe 50. Die Adressdaten werden vom gewählten Register der SAR-Gruppe 50 aufgrund eines Lesesignales von der Steuerung 100 über die Leitung 114 gelesen. Die Adressdaten laufen dann vom gewählten SAR-Register über die Sammelleitung 32 zum Adressregister 18, von wo sie durch die Speichersteuerung 15 über die Adress-Samraelleitung 16 an den Hauptspeicher 10 gegeben werden, wenn die Steuerung 100 ein Signal auf die Leitung 115 gibt. Die Taktierung für das Signal auf der Leitung 115 ist im Diagramm der Fig. 20 gezeigt.
Die in den Speicher zu schreibenden Daten werden entweder vom SA-Register 36 oder vom SB-Register 37 durch ein Signal auf der Leitung 118 von der Steuerung 100 gewählt, das an den Sl-Sammelleitungsassembler 34 angelegt wird. Die vom Sl-Sammelleitungsassembler 34 geleiteten Daten gehen in das Register 17 über die Sammelleitung 31 und werden dann von der Speichersteuerung 15 über die Schreibdatenleitung 12 an den Hauptspeicher 10 weitergeleitet. Die Daten stehen dem Hauptspeicher 10 natürlich vor dem Speicherschreibimpuls auf der Leitung 115 zur Verfügung,
809884/0758
RO9-76-014
- 35 -
wie aus Fig. 20 zu ersehen ist. Die vom gewählten Register der SAR-Gruppe 50 gelieferte Adresse kann ausserdem durch die Inkrementierschaltung 59 erhöht oder erniedrigt werden und dann in das gewählte Register der SAR-Gruppe 50 zurückgeladen werden. Während der Erhöhung oder Erniedrigung hält die Steuerung 100 die Adresse für das gewählte SAR-Register auf der Sammelleitung 101. Die Steuerung 100 liefert ein Quellenwahisignal an den Assembler 48 für die die D-Sammelleitung 49 über die Leitung 110 und einen Ladeimpuls über die Leitung 111, wodurch die erhöhte oder erniedrigte Adresse dann in das gewählte Register der SAR-Gruppe 50 zurückgeladen wird.
Bisher wurden alle von der vorliegenden Erfindung betroffenen Prozessor-Zyklen sowie die Aufgabeninitialisierung/ die Ausführung von Instruktionen unter einer Aufgabe sowie der Aufgabenwechsel beschrieben. Ausserdem wurde die Kommunikation zwischen den Aufgaben durch eine Nachrichtenempfangsinstruktion beschrieben. Anschliessend wird die Kommunikation zwischen den Aufgaben durch eine Nachrichtensendeinstruktion beschrieben.
Das Format einer Nachrichtensendeinstruktion (SENDM) ist in Fig. 3 gezeigt. Sie enthält einen OP-Code, ein I-Feld mit Registeradresse und ein OPl-FeId. Die Nachrichtensendeinstruktion umfasst 4 Bytes und hat die Aufgabe, eine Nachricht in eine Sendeempfangswarteschlange SRQ zu setzen und festzustellen, ob eine oder mehrere inaktive, wartende TDE's auf der Warteliste der SRQ stehen. Wenn das der Fall ist, werden die TDE's aus der Warteliste herausgenommen und gemäss Prioritätsreihenfolge in die TDQ eingeordnet und der Aufgabenabfertiger aufgerufen. Wenn keine TDE's auf der Warteliste stehen, ist die Operation abgeschlossen und die nächste Instruktion der aktiven Aufgabe wird geholt, ohne dass der Aufgabenabfertiger aufgerufen wird.
Die Ausführung einer Nachrichtensendeinstruktion ist allgemein in Fig. 4 dargestellt und detailliert in den Fig. 28, 29 und 30. In Fig. 4 ist gezeigt, wie die Nachrichtensendeinstruktion (SENDM) die Nachricht in eine·Warteschlange einreiht, auf die ein Zeiger in dem im I-Feld der Nachrichtensendeinstruktion definierten Register hinweist, d.h., das durch das OPl-FeId in der Nachrichtensendeinstruktion angegebene Register R2. Die TDE's auf der Warteliste der angegebenen SRQ werden in
809884/0758
RO9-76-014
- 36 - ·
Prioritätsreihenfolge in die TDQ eingereiht. In Fig. 28 ist gezeigt, dass die Nachrichtensendeinstruktion die erste Instruktion der zum TDE 1 gehörenden Aufgabe ist. Die Nachricht ist im Speicher an einer Adresse enthalten, die durch das Basisregister 6 der LSR-Registergruppe 70 angegeben ist. Die Nachricht ist SRM 2, und sie wird in die SRQ 1 gesetzt, auf die durch die Adresse im OPl-FeId in der Nachrichtensendeinstruktion gezeigt wird.
Wie es oben beschrieben wurde, wird die Nachrichtensendeinstruktion vor-abgerufen, und dann folgen in der oben beschriebenen Art die Instruktions-Abruf zyklen, wie es in Fig. 21 gezeigt ist. Nach deren Beendigung folgen die SENDM-Zyklen. Die SENDM-Zyklen sind in Fig. 21 dargestellt. Bei ihrem Beginn wird das Sende-Kippglied 87 gesetzt und das Empfangs-Kippglied 88, das ST-Phasen-Kippglied 97 und das RT-Phasen-Kippglied 98 zurückgestellt. Im anschliessenden Zyklus T2 wird die Adresse vom Basisregister 6 der LSR-Registergruppe 70 in das OP2-SAR 55 übertragen. Dann folgt ein Zyklus Sl, in dem das Schlüsselfeld der Nachricht SRM 2 vom Hauptspeicher 10 in das SB-Register 37 übertragen wird. Während dieses Zyklus S2 wird die im OP2-SAR 55 enthaltene Adresse so erhöht, dass sie auf das SRM-Kettungsadressfeld der SRM 2 zeigt. Wenn der Zyklus Sl fertig ist, folgt ein Zyklus P2 zur Uebertragung des Inhaltes des OPl-SAR 54 in das PCH-SAR 56, um so die Adresse für den Fall zu retten, dass die SRM 2 in einer leeren SRQ eingereiht wird. Dann schaltet die Operation auf Einsetzzyklen um, die in Fig. 25 gezeigt sind.
Zum Beginn der Einsetzzyklen enthält das SA-Register 36 das erste Feld der SRQ 1, das SB-Register 37 das erste Feld der Nachricht SRM 2, PCH-SAR 56 die Adresse der SRQ 1, und 0P2-SAR 55 die Adresse des zweiten Feldes der SRM 2. Der erste Einsetzzyklus ist ein Prozessor-Zyklus T2, in dem der Inhalt des SA-Registers 36 an das CCH-SAR 57 übertragen wird, das nun die Adresse des SRM 1 in der SRQ 1 enthält. In einem Zyklus A2 führt dann das Rechenwerk 45 eine Antivalenzverknüpfung des Inhaltes des CCH-SAR 57 mit Nullen vom Codierer 60 durch, um festzustellen, ob irgendeine Nachricht SRM auf der SRQ 1 steht.
809884/0758
RO9-76-014
- 37 -
In dem in den Fig. 28 bis 30 gezeigten speziellen Beispiel stehen am Anfang SRM's in der SRQ 1. Somit wird das AZ-Kippglied 96 vom Rechenwerk 45 zurückgestellt. Im anschliessenden Zyklus Al wird das SA-Register 36 mit dem Schlüsselfeld der SRM 1 geladen und das CCH-SAR 57 so erhöht, dass es auf das zweite Feld der SRM 1 zeigt, das die SRM-Kettungsadresse enthält. In dem nun ausgeführten Zyklus Al wird festgestellt, ob das im SA-Register 36 enthaltene Schlüsselfeld der SRM 1 grosser ist als das Schlüsselfeld der SRM 2 im SB-Register 37. Das Rechenwerk 45 führt für diesen Vergleich eine Subtraktion aus. Wenn der Vergleich zufriedenstellend ist, wird das AC-Kippglied 95 und das AZ-Kippglied 96 zurückgestellt. Im speziellen Beispiel kommt die Uebereinstimmung nicht zustande, weil das AC-Kippglied durch die Rechenwerk-Operation zurückgestellt ist. Dann wird ein Zyklus Sl ausgeführt, um das SRM-Kettungsadressfeld der SRM 1 in das SAR-Register 36 zu übertragen und die CCH-SAR Adresse so zu erhöhen, dass sie auf die SRM 1 zeigt. In einem anschliessenden Zyklus T2 wird der Inhalt des CCH-SAR 57 übertragen in das PCH-SAR 56. Im anschliessenden Zyklus A2 wird der Inhalt des PCH-SAR 56 so erhöht, dass er auf das SRM-Kettungsadressfeld SRM 1 zeigt. Die Operation läuft in einer Schleife dann zurück zum Zyklus T2 und überträgt den Inhalt des SA-Registers 36, das jetzt die Adresse der Nachricht SRM 3 enthält, in das CCH-SAR 57. Jetzt laufen die Prozessor-Zyklen ein zweites Mal ab, die das Ende der SRM-Kettungsbedingung abfragen und den SRM-Schlüssel vergleichen. Im betrachteten Beispiel ist das Schlüsselfeld der SRM 3 mit dem Wert 3 grosser als das Schlüsselfeld der SRM 2, das den Wert 2 hat. Somit ist der Vergleich erfolgreich und das AC-Kippglied 95 wird gesetzt und das AZ-Kippglied 96 zurückgestellt. Im anschliessenden Zyklus T2 wird der Inhalt des CCH-SAR 57 in das SA-Register 36 übertragen. Damit enthält das SA-Register 36 die Adresse der SRM 3. In dem dann ausgeführten Zyklus S2 wird der Inhalt des SA-Registers 36 in das SRM-Kettungsadressfeld der SRM 2 im Hauptspeicher 10 übertragen. Jetzt ist die SRM 3 mit der SRM 2 verkettet, wogegen sie früher mit der SRM 1 verkettet war. Während dieses Zyklus S2 wird der Inhalt des OP2-SAR 55 so heruntergesetzt, dass er auf den Anfang der SRM 2 zeigt. Im folgenden Zyklus T2 wird die Adresse vom OP2-SAR 55 in das SA-Register 36 übertragen. In dem anschliessenden Zyklus S2 wird der
809884/87S8
RO9-76-014
- 38 -
Inhalt des SA-Registcrs 36 in das SRM-Kettungsadressfeld der SRM 1 im Hauptspeicher 10 übertragen und damit die Einordnung der SRM 2 in der Nachrichtenkette der SRQ 1 beendet.
Die Einsetzzyklusoperation läuft weiter durch Decodierung des Inhalts der Kippglieder 87, 97, 98. Im betrachteten Beispiel ist das Kippglicd 87 gesetzt und die beiden anderen Kippglieder zurückgestellt. Deswegen läuft eine Operation ab, in der das ST-Phasen-Kippglied 97 gesetzt wird. Dann folgt ein Zyklus A2 zur Erhöhung des Inhaltes des OPl-SAR so, dass es auf das TDE-Kettungsadressfeld der SRQ 1 zeigt. In einem anschliessenden Zyklus T2 wird der Inhalt des OPl-SAR 54 übertragen in das PCH-SAR 56. Es folgt ein Prozessor-Zyklus Sl zur Uebertragung des TDE-Kettungsadressfeldes der SRQ 1 in das SA-Register 36. Die verschiedenen Register im Prozessor 30 sind jetzt so eingestellt, dass das erste TDE aus der TDE-Kette der SRQ 1 gc nommen werden kann. Das TDE 0 wurde in der SRQ 1 gemäss Darstellung in Fig. 29 eingereiht. Wenn der Zyklus Sl abgeschlossen ist, schaltet die Operation um auf die in Fig. 27 gezeigten Entnahmezyklen.
Die Entnahmezyklen, in denen ein TDE aus einer Warteschlange entfernt wird, wurden bereits beschrieben. In diesem speziellen Fall wird das TDE-Kettungsadressfeld der SRQ 1 auf einen Wert von lauter Nullen abgefragt. Das TDE-Kettungsadressfeld der SRQ 1 ist von Null verschieden, weil das TDE 0 damit verkettet ist. Somit führt die Abfrage auf lauter Nullen nicht zu einer Uebereinstimmung. Die Inhalte des SA-Registers 36 und des SB-Registers 37 werden dann miteinander verglichen. Kenn ein TDE aus einer SRQ während einer Nachrichtensendeinstruktion herausgenommen wird, spielt der Inhaltsvergleich zwischen dem SA-Register 36 und dem SB-Register 37 keine Rolle, weil dann der Zustand des ST-Phasen-Kippgliedes 97 die weitere Arbeit des Prozessors steuert. Wenn also die Stellung des AZ-Kippgliedes 96 und des ST-Kippgliedes 97 decodiert sind, schaltet die Operation auf einen Zyklus S2 um, in dem der Inhalt des SA-Registers 36, der das TDE-Kettungsadressfeld des TDE 0 darstellt, in das TDE-Kettungsadressfeld der SRQ 1 im Hauptspeicher 10 Obertragen wird. Dadurch werden effektiv Nullen in das TDE-Kettungsadressfeld der SRQ 1 gesetzt und so das TDE 0 aus der TDE-Kette der SRQ entfernt. Gleichzeitig wurde das TDE 0 aus der SRQ 1 herausgenommen.
809884/0758
RO9-76-014
- 39 -
Die übrigen Zyklen stellen die nötigen Prozessoreinrichtungen so ein, dass das TDE 0 in die TDQ eingereiht wird. Die Stellung der Kippglieder 87, 88 und 98 wird decodiert, und in einem Zyklus T2 wird der Inhalt des CCH-SAR 57, der die Adresse des TDE 0 darstellt, in das 0P2-SAR 55 übertragen. Die Adresse in diesem Register wird dann während eines Zyklus Sl dazu benutzt, das Schlüsselfeld des TDE 0 vom Hauptspeicher 10 in das SB-Register 37 zu übertragen und den Inhalt des OP2-SAR 55 so zu erhöhen, dass er auf das TDE-Kettungsadressfeld des TDE 0 zeigt. .
Während dieses Zyklus Sl wird ausserdem die Stellung des Sende-Kippgliedes 87 abgefragt, und weil dieses gesetzt ist, wird als nächstes der Zyklus T2 ausgeführt, um den Inhalt des TDQ-SAR 52 in das PCH-SAR zu übertragen. Es folgt ein Zyklus Sl, um das TDE-Kettungsadressfeld der TDQ im Hauptspeicher 10 abzurufen und es in das SA-Register 36 zu laden. Dann beginnen die in Fig. 25 gezeigten Einsetzzyklen des Prozessors.
Wie oben schon beschrieben wurde, wird die Hauptschleife der Einsetzzyklen ausgeführt, bis die richtige Stelle innerhalb der Kettungsliste lokalisiert ist, um das TDE 0 in der richtigen Position gemäss Schlüsselfolge einzuschieben. In dem betrachteten Beispiel wird die Schleife einmal ausgeführt und das TDE 0 als oberstes Element der verketteten Liste von TDE's eingereiht. Im allgemeinen geht diese Folge von Einsetzen und Entnehmen der TDE's weiter, bis alle TDE's aus der SRQ entfernt und in der richtigen Position gemäss Schlüsselr-iihenfolge in die TDQ eingereiht wurden. Während der Einsetzzyklen werden also das Sende-Kippglied 87, das ST-Phasen-Kippglied 97 und das RT-Phasen-Kippglied 98 decodiert und die entsprechenden Prozessoreinrichtungen eingestellt für die folgenden Entnahmezyklen. Die in Fig. 27 gezeigten Entnahmezyklen werden dann wieder aufgenommen, in dem betrachteten Beispiel sind jedoch keine weiteren TDE's mit der SRQ 1 verkettet, und daher ist das AZ-Kippglied 96 gesetzt, wenn das TDE-Kettungsadressfeld der SRQ 1 auf lauter Nullen abgefragt wird. Dann wird wieder die Stellung des Kippgliedes 87 und 88 decodiert. Wenn das Sende-Kippglied 87 gesetzt ist, wird das D-Kippglied 93 gesetzt und damit angezeigt, dass der Zustand der TDQ verändert wurde seit Beginn der Ausführung der Nachrich tensendeinstruktion* Abfertigungszyklen müssen daher jetzt ausgeführt
809884/0758
RO9-76-014
- 40 -
werden, bevor man mit der Ausführung der nächsten Instruktion der neuen aktiven Aufgabe beginnt.
Weil die Nachrichtensendeinstruktion jetzt'fertig ausgeführt ist, muss die nächste Instruktion in der oben beschriebenen Art vorher abgerufen werden. Während der Instruktions-Abrufzyklen dieser nächsten Instruktion wird jedoch die Stellung des D-Kippgliedes 93 und des E/A-Kippgliedes 94 decodiert und festgestellt, dass das D-Kippglied 93 gesetzt ist und das E/A-Kippglied 94 zurückgestellt ist. Somit werden die Instruktions-Abrufzyklen ausgesetzt und Abfertigungszyklen angefangen. Abfertigungszyklen treten in der oben beschriebenen Art auf. Im betrachteten Beispiel sollen die Abfertigungszyklen den Zustand der laufenden aktiven Aufgabe im TDE 1 retten und den Status der Aufgabe TDE 0 in die Einrichtungen des Prozessors 30 laden und dadurch die Steuerung an die vorher nicht ausführbare Nachrichtenempfangsinstruktion des TDE 0 weitergeben durch Rückkehr zu den Instruktions-Abrufzyklen. Während der Abfertigungszyklen wird das D-Kippglied 93 bekanntlich zurückgestellt und damit die Steuerung an die vorher nicht ausführbare Nachrichtenempfangsinstruktion des TDE 0 übergeben, und die Instruktions-Abrufzyklen für diese Instruktion laufen weiter.
Im betrachteten Beispiel wird die Nachrichtenempfangsinstruktion jetzt ausgeführt, weil die Nachricht SRM 2 jetzt in die SRQ 1 eingereiht ist. Wenn die Ausführungszyklen für den Nachrichtenempfang beendet sind, wie es in Fig. 26 gezeigt ist, folgen Entnahmezyklen, während deren in Fig. 27 gezeigtem Ablauf die Hauptschleife zwei mal ausgeführt wird. Der Schlüsselvergleich erfolgt im zweiten Durchgang durch die Schleife. Die Nachricht SRM 2 wird aus der SRQ 1 in der oben beschriebenen Art herausgenommen. Die Kippglieder 07, 88 und 98 werden decodiert. Das Empfangskippglied 88 ist zu diesem Zeitpunkt gesetzt, und somit wird die im CCH-SAR 57 enthaltene Adresse der entfernten SRM 2 an ein Register der LSR-Registergruppe 70 übertragen, das durch das R3-Feld der Nachrichtenempfangsinstruktion bezeichnet ist. Die Nachrichtenempfangsinstruktion ist jetzt fertig ausgeführt und die Instruktions-Abrufzyklen für die nächste vor-abzurufende Instruktion werden aktiviert. Damit ist die Nachrichtenempfangsinstruktion fertig beschrieben.
809884/0758
RO9-76-014
- 41 -
Die Kommunikation zwischen den Aufgaben erfolgt auch durch Zählwertempfangs- und Zählwertsendeoperationen, wozu auch die Ausführung der in Fig. 3 gezeigten Instruktion "Zählwert empfangen" RECC (Receive Count) und "Zählwert senden" SENDC (Send Count) gehört. Mit einer Zählwertempfangsoperation wird die D^enstbereitschaft angezeigt oder festgestellt, ob eine vorher angeforderte Funktion beendet ist. Zu einer Zählwertempfangsoperation gehört genau wie zu einer Nachrichtenempfangsoperation immer ein TDE, d.h. das oberste TDE der TDQ. Die Zählwertempfangsinstruktion hat ein leeres I-Feld und ein OPl-FeId. Das OPl-FeId enthält eine Adresse, die auf das erste Wort einer Sendeempfangszählwert-Warteschlange (SRC) zeigt- Während der Operation einer Zählwertempfangsinstruktion wird ein Zählwert mit einem Grenzwert verglichen, und wenn der Zählwert grosser oder gleich dem Grenzwert ist, wird er um den Grenzwert vermindert und die Instruktion ist fertig. Wenn der Zählwert kleiner als der Grenzwert ist, wird das aktive TDE aus der TDQ in eine Warteliste der SRC gesetzt. Der Zählwert wird nicht erhöht oder erniedrigt und der Aufgabenabfertiger (Task Dispatcher) wird ausgeführt.
Die Zählwertsendeinstruktion enthält einen Zählwertsende-OP-Code und ein OPl-FeId, das auf das erste Wort der SRC-Warteschlange zeigt. Während der Operation einer Zählwertsendeinstruktion wird der Zählwert um Eins erhöht und mit einem Grenzwert verglichen. Wenn der Zählwert grosser oder gleich dem Grenzwert ist, werden TDE's auf der Warteliste der SRC-Warteschlange entsprechend ihrer Prioritätsreihenfolge in die TDQ eingereiht, und der Aufgabenabfertiger aufgerufen. Wenn keine TDE's auf der Warteliste der SRC-Warteschlange stehen, ist die Instruktion fertig. Auch wenn der Zählwert kleiner als der Grenzwert ist, ist die Instruktion fertig.
Die Operation der Zählwertsendeinstruktion und Zählwertempfangsinstruktion ist in Fig. 31 gezeigt. Das TDE 0 ist das aktive TDE und sein E/A-Feld zeigt auf die Zählwertempfangsinstruktion. Das OPl-FeId der Zählwertempfangsinstruktion zeigt auf die SRC-Warteschlange 1. Das Format einer SRC-Warteschlange ist in Fig. 3 gezeigt und besteht aus dem Zählwertfeld, einem Grenzwertfeld und dem TDE-Kettungsadressfeld. In Fig. 31 enthält die SRC 1 den Zählwert 0, einen Grenzwert 1 und die TDE-Kettungsadresse 0. Da die Anfangswerte vom Zählwert- und Grenzwertfeld der SRC 1
809884/0758
RO9-76-014
- 42 -
Null bzw. Eins sind/ ist die Zählwertempfangsinstruktion nicht ausführbar, und das TDE 0 wird aus der TDQ herausgenommen und in die Warteliste der SRC 1 eingereiht. Das TDE 1 wird dann vom Aufgabenabfertiger als die Aufgabe mit der höchsten Priorität auf der TDQ abgefertigt. Das TDE 1 hat eine Instruktionsadresse, die auf eine Zählwertsendeinstruktion zeigt. Das OPl-FeId dieser Zählwertsendeinstruktion zeigt auf die SRC 1. Während der Ausführung der Zählwertsendeinstruktion wird der Zählwert der SRC 1 um Eins erhöht. Der Zählwert ist dann gleich dem Grenzwert, und deswegen wird das TDE 0 aus der Warteliste der SRC 1 herausgenommen und in die TDQ als das TDE mit der höchsten Priorität eingereiht. Der Aufgabenabfertiger fertigt dann das TDE 0 als aktive Aufgabe ab. Die Zählwertempfangsinstruktion, auf die das ΙΑ-Feld des TDE 0 zeigt, wird erneut ausgeführt. Dieses Mal ist der Zählwert grosser oder gleich dem Grenzwert, und die Zählwertempfangsinstruktion kann ausgeführt werden. Der Zählwert wird um den Grenzwert durch eine Subtraktion vermindert und der neue Zählwert in das Zählwertfeld der SRC 1 zurückgestellt, damit ist die Zählwertempfangsinstruktion fertig. Die Instruktionsausführung läuft dann mit der nächstfolgenden Instruktion der Aufgabe TDE 0 weiter.
Die Zählwertempfangsinstruktion durchläuft die Instruktions-Abrufzyklen in der im Zusammenhang mit Fig. 21 beschriebenen Art und arbeitet dann weiter mit den Zählwertempfangszyklen, die in Fig. 26 dargestellt sind. Die Reihenfolge-Steuerkippglieder 87, 88, 97 und 98 werden entsprechend in die Stellungen 0, 1,0 und 0 geschaltet. Diese Einstellungen sind dieselben wie für die Nachrichtenempfangsinstruktion. Damit ist sichergestellt, dass die TDE's bei der Ausführung der Zählwertempfangsinstruktion genauso verschoben werden wie bei der Ausführung der Nachrichtenempfangsinstruktion. Nachdem die Reihenfolge-Steuerkippglieder eingestellt wurden, wird in einem A2-Zyklus das OPl-SAR so erhöht, dass es auf das Grenzwertfeld der SRC 1 zeigt. Im anschliessenden Zyklus Sl wird das Grenzwertfeld vom Speicher 10 geholt und in das SB-Register 37 geladen. Der Inhalt des OPl-SAR 54 wird vermindert, um dann auf das Zählwertfeld der SRC 1 zu zeigen. Somit enthält das SA-Register 36 ein Zählwertfeld der SRC 1, und das SB-Register 37 enthält das Grenzwertfeld der SRC 1. In einem Zyklus Al wird festgestellt, ob der Zählwert grosser oder genau so gross wie der Grenwert ist, und gleichzeitig wird der Grenzwert
809884/0758
RO9-76-024
- 43 -
vom Zählwert subtrahiert. Wenn der Zählwert grosser oder genau so gross ist wie der Grenzwert, wird im Prozessor aufgrund der RW-Operation das AC-Kippglied 95 (Rechenwerks-Uebertrag) gesetzt. Wie oben schon in dem betrachteten Beispiel gezeigt wurde, ist der Zählwert von 0 kleiner als der Grenzwert von Eins, und somit wird das AC-Kippglied 95 vom Rechenwerkes zurückgestellt. Der Zustand des AC-Kippgliedes 95 wird dann abgefragt, und da es zurückgestellt ist, weiss man, dass die Zählwertempfangsinstruktion noch nicht ausführbar ist. Somit muss das TDE 0 wieder aus der TDQ herausgenommen und in die SRC 1 eingereiht werden. Die Operation schaltet daher auf Entnahmezyklen um.
Die Entnahmezyklen werden so begonnen, um das TDE 0 aus der TDQ herauszunehmen und es in die SRC 1 einzureihen. Die Entnahmezyklen zum Aufgabenwechsel wurden oben beschrieben. Der Wechsel der Aufgabe erfolgt genau so wie für andere Aufgaben, und dieses Mal wird die Steuerung vom Aufgabenumschalter an das TDE 1 übergeben, das die Zählwertsendeinstruktion ausführt, wie es allgemein oben beschrieben ist. Während der Ausführung der Zählwertsendeinstruktion laufen Instruktions-Abrufzyklen (wie oben beschrieben) ab, und dann schaltet die Operation wieder auf Zählwertsendezyklen, die im einzelnen in Fig. 24 dargestellt sind.
Zu Beginn der Zählwertsendezyklen werden die Reihenfolge-Steuerkippglieder 87, 88, 97 und 98 entsprechend in die Schaltstellungen 1, 0, 0, 0 gesetzt. Es werden also die Reihenfolge-Steuerkippglieder für die Zählwertsendeinstruktion genauso eingestellt wie für die Nachrichtensendeinstruktion. Damit ist sichergestellt, dass bei einer notwendigen Manipulation von TDE's diese genauso abläuft wie bei der Nachrichtensendeinstruktion. In einem Prozessor-Zyklus A2 wird der Inhalt des OPl-SAR 54 so erhöht, dass er auf das Grenzwertfeld der SRC 1 zeigt. Diesem Zyklus folgt ein Prozessor-Zyklus Sl zum Abrufen des SRC-Grenzwertfeldes aus dem Hauptspeicher 10 und zu seiner Eingabe in das SB-Register 37. Während dieses Prozessor-Zyklus Sl wird ausserdem der Inhalt des OPl-SAR 54 heruntergesetzt, um zurück auf das Zählwertfeld der SRC 1 zu zeigen. Zu dieser Zeit enthält das SA-Register 36 das Zählwertfeld und das SB-Register 37 das Grenzwertfeld der SRC 1. In einem anschliessenden Zyklus Ä2 wird der Zählwert um Eins erhöht. Diesem Zyklus folgt ein Zyklus S2
809884/0758
RO9-76-014
- 44 -
zum Speichern des erhöhten Zählwertes in den Hauptspeicher 10. Im nächsten Zyklus Λ1 wird festgestellt, ob der erhöhte Zählwert grosser als oder genau so gross wie der Grenzwert ist. Wenn der Zählwert kleiner ist als der Grenzwert, wird das AC-Kippglied 95 vom Rechenwerk 45 gesetzt, und wenn der Zählwert grosser als oder genau so gross wie der Grenzwert ist, wird dieses Kippglied zurückgestellt. Im betrachteten Beispiel ist der Zählwert grosser als oder genau so gross wie der Grenzwert, und somit wird das AC-Kippglied 95 vom Rechenwerk 45 zurückgestellt. Wenn der Zählwert kleiner wäre als der Grenzwert, wäre die Zählwertsendeinstruktion fertig, und dann wurden Instruktions-Abrufzyklen aktiviert zur Ausführung der nächstfolgenden Instruktion im TDE 0.
Weil das AC-Kippglied 95 zurückgestellt ist, setzt die Steuerung 100 das ST-Phasen-Kippglied 97 und leitet danach einen Prozessor-Zyklus A2 ein, um den Inhalt des OPl-SAR 54 um 2 zu erhöhen. Der erhöhte Wert ■ wird dann während eines Prozessor-Zyklus T2 in das PCH-SAR 56 übertragen. Diesem Prozessor-Zyklus T2 folgt ein Prozessor-Zyklus Sl zum Laden des SA-Registers 36 mit dem PCH-Wert vom Hauptspeicher 10. Dann folgen Entnahmezyklen, um das TDE 0 aus der SRC 1 herauszunehmen und in die TDQ einzuordnen. Wenn das einmal geschehen ist, werden Abfertigungszyklen aktiviert, und es wird von der Aufgabe TDE 1 zur Aufgabe TDE 0 gewechselt. Die Steurung wird dann an die vorher nicht ausführbare Zählwertempfangsinstruktion des TDE 0 zurückgegeben. Die Instruktionsausführung läuft für die Zählwertempfangsinstruktion weiter durch Ausführung von Instruktions-Abrufzyklen und anschliessende Aktivierung der Zählwertempfangszyklen, die genauso, wie oben beschrieben, ablaufen. Jedoch ist dieses Mal das AC-Kippglied 95 gesetzt, und daher folgen keine Entnahmezyklen, sondern ein Zyklus S2, Um den verminderten Zählwert aus dem SA-Register 36 in das Zählwertfeld der SRC 1 im Hauptspeicher 10 zurückzuspeichern. Damit ist die Ausführung der Zählwertempfangsinstruktion beendet, und die Ausführung wird fortgesetzt mit der nächstfolgenden Instruktion im Instruktionsstrom des TDE 0 der Aufgabe.
Ausser den Instruktionen zum Senden und Empfangen von Nachrichten und Zählwerten gibt es auch Instruktionen zum Entnehmen und Einsetzen von Nachrichten, die in Fig. 3 gezeigt sind. Die Nachrichteneinsetzinstruktion (ENQM) hat ein Nachrichteneinsetz-OP-Feld, ein I-Feld und ein
809884/0758
RO9-76-014
- 45 -
Feld OPl. Das I-Feld enthält eine Adresser um auf das Basisregister 2 der LSR-Registergruppe 70 zu. zeigen. Die Nachrichteneinsetzinstruktion reiht eine Nachricht SRM in einer SRQ ähnlich ein wie eine Nachrichtensendeinstruktion. Aus Fig. 24 ist zu ersehen, dass bei Beginn der Nachrichteneinsetzzyklen die Reihenfolge-Steuerkippglieder 07, 88, 97 und alle zurückgestellt sind. Danach folgen wie bei der Nachrichtensendeinstruktion die Zyklen T2, Sl und T2. Nach dem letzten T2-Zyklus folgen Einsetzzyklen.
Die Nachrichtenentnahmeinstruktion (DEQM) hat ein ähnliches Format wie die Nachrichtenempfangsinstruktion und funktioniert auch ähnlich. Aus Fig. 26 ist zu ersehen, dass die Reihenfolge-Steuerkippglieder 87, 88, 97 und 98. alle zurückgestellt sind und danach ein Zyklus T2 folgt. Bei dessen Ende schaltet die Operation auf Entnahmezyklen um, wie bei der Nachrichtenempfangsinstruktion.
E/A-Aufgaben werden in die TDQ genauso eingereiht wie jede andere Aufgabe. In Fig. 32 ist eine E/A-Aufgabe mit einem TDE höchster Priorität in der TDQ gezeigt. Die E/A-Aufgäbe ist durch die Abkürzung IOM bezeichnet, das bedeutet E/A-Manager. Die IOM-Aufgabe beginnt eine E/A-Anforderung durch Ausführen der Nachrichtensendeinstruktion, die dann eine Nachricht SRM in eine SRQ setzt und TDE's aus dieser SRQ entfernt. In dem in Fig. 32 gezeigten Beispiel ist die Nachricht SRM bezeichnet mit ORE, was Operationsanforderungseletnent bedeutet. Das TDE in der SRQ ist eine Operationseinheitenaufgabe (OUT). Die Operationseinheitenaufgabe, die aus der SRQ herausgenommen und in die TDQ eingereiht wurde, wird die aktive Aufgabe und behandelt die Anforderung durch Benutzung einer Nachrichtenempfangsoperation. Dies ist in Fig. 33 gezeigt.
Die Operationseinheitenaufgabe (OU-Aufgäbe) interpretiert die Anforderung und gibt einen entsprechenden Gerätebefehl an den E/A-Kanal 500 und wartet dann in der SRC, bis die E/A-Funktion fertig ist. Die OU-Aufgabe enthält eine Zählwertempfangsinstruktion (RECC) in ihrem Instruktion sstrom. Diese Instruktion ist nicht ausführbar, und somit wird das TDE (OU-Aufgabe) aus der TDQ herausgenommen und in die SRC eingereiht. Diese Operation ist durch die gestrichelte Linie in Fig. 33 dargestellt. Durch das Herausnehmen wechseln die Aufgaben, und die IOM-Aufgabe wird zur aktiven Aufgabe. Sie gibt eine Nachrichtenempfangsin-
809884/0758
RO9-76-014
- 46 -
struktion, die nicht ausführbar ist, und demzufolge wird die IOM-Aufgabe aus der TDQ herausgenommen und in die IOM-SRQ eingereiht, auf die das OPl-FeId der Nachrichtenempfangsinstruktion gemäss Darstellung in Fig.
34 zeigt. Die Aufgaben wechseln wieder und die Aufgabe mit der höchsten Priorität in der TDQ wird zur aktiven Aufgabe. Die IOM-Aufgabe wartet in der SRQ, und die OU-Aufgabe wartet ebenfalls in der SRC, wie es in Fig.
35 gezeigt ist.
Wenn die E/A-Funktion fertig ist, sendet der E/A-Kanal eine SRC-Adresse an einen E/A-Ereignisstapel 25 (Fig. 36), der sich im Hauptspeicher 10 befindet, und setzt das E/A-Kippglied 94 durch ein Signal über die Leitung 512 in Fig. 1. Das E/A-Ereignisfeld im E/A-Ereignisstapel ist die Adresse der SRC, in der die OU-Aufgabe wartet. Da das E/A-Kippglied 94 durch dieses Signal vom E/A-Kanal gesetzt wurde, wechselt die Operation während der Instrukt .ons-Abrufzyklen auf die E/A-Ereigniszyklen .
Die in Fig. 23 gezeigten E/A-Ereigniszyklen verarbeiten die E/A-Ereignisse. Die erste Operation dieser Zyklen ist der Abruf der SRC-Adresse vom Ereignisstapel im Hauptspeicher 10 und ihr Laden in das SA-Register 36 während des Prozessor-Zyklus Sl. Die oberste Eintragung im Ereignisstapel 25 enthält in diesem speziellen Beispiel lauter Nullen, um anzuzeigen, dass der Ereignisstapel leer ist. Die nächste Operation der E/A-Ereigniszyklen besteht daher in der Bestimmung, ob ein E/A-Ereignisfeld im E/A-Ereignisstapel steht, in dem im Prozessor-Zyklus A2 der Inhalt des SA-Registers 36 abgefragt wird. Wenn der E/A-Ereignisstapel leer ist, setzt das Rechenwerk 45 das AZ-Kippglied 96. Wenn andererseits ein E/A-Ereignisfeld im E/A-Ereignisstapel steht, wird das AZ-Kippglied 96 zurückgestellt. Die nächste Operation ist daher die Abfrage des AZ-Kippgliedes. Wenn das AZ-Kippglied gesetzt ist, wird das E/A-Kippglied 94 zurückgestellt, und die Operation schaltet zu den Instruktions-Abruf zyklen um, und dieses Mal wird das E/A-Kippglied 94 über die Instruktions-Abrufzyklen als zurückgestellt erkannt.
Wenn das AZ-Kippglied 96 zurückgestellt ist, wird im folgenden Prozessor-Zyklus A2 der Inhalt des E/A-SAR 58 so vermindert, dass er auf die nächste SRC-Adresse zeigt, die in diesem Beispiel eine Einheit über der laufenden SRC-Adresse ist. (Das ist jedoch Sache der Implementierung.)
809884/0758
RO9-76-014
- 47 -
Soweit die vorliegende Erfindung betroffen ist/ kann der E/A-Ereignisstapel ein Registersatz sein/ der über den Inhalt des E/A-SAR 50 adressiert wird. Dabei ist es freigestellt/ ob die Adresse erhöht oder erniedrigt wird. Es kann auch ein festes Register den Registerstapel für die E/A-Ereignisse adressieren, und dann würde der Inhalt des E/A-SAR 58 in dieses Register übertragen, um den E/A-Ereignisregisterstapel zu adressieren. Im betrachteten Beispiel braucht man keine separaten Register, weil der Hauptspeicher 10 bezüglich Kapazität und Geschwindigkeit ausreicht. Bei kritischen Geschwindigkeitsanforderungen würde der E/A-Ereignisstapel als Registersatz und nicht als reservierte Positionen im Hauptspeicher implementiert.
Der Verminderung des Inhaltes des E/A-SAR 58 folgt der Prozessor-Zyklus C2 zur Uebertragung des Inhaltes des SA-Registers 36 in das OPl-SAR 54. In einem anschliessenden Zyklus Sl wird das SA-Register 36 mit dem Inhalt der Hauptspeicherstelle geladen, auf die die Adresse im OPl-SAR 54 zeigt. Dann werden Zählwertsendezyklen angefangen/ um einen Zählwert in das Zählwertfeld der SRC zu senden, und um in der SRC wartende TDE's herauszunehemn, das heisst, in diesem speziellen Fall das TDE der OU-Aufgabe. Die gerade beschriebene Operation wird wiederholt, bis alle E/A-Ereignisse im E/A-Aufgabenstapel behandelt wurden, d.h., bis der E/A-Aufgabenstapel leer ist und das E/A-Kippglied 94 zurückgestellt ist.
Aus Fig. 36 ist zu sehen, dass die OU-Aufgabe aus dem Wartezustand herausgenommen und in die TDQ eingereiht wurde. Die Zählwertempfangsinstruktion ist dann ausführbar, wenn die OU-Aufgabe abgefertigt wurde. Die OU-Aufgabe sendet dann eine Nachricht SRM, welche die Beendigungs-Statusangabe enthält, an eine SRQ, d.h., an die OU-Warteschlange. Diese Operation ist in Fig. 37 gezeigt, wo die OU-Aufgabe eine Nachrichtensendeinstruktion hat, die ein R2-Feld zum Adressieren eines Registers der LSR-Registergruppe 70 enthält. Das gewählte Register aus der LSR-Registergruppe 70 enthält eine Adresse, die auf eine Nachricht SRM zeigt, in diesem Fall ein Operationsanforderungselement (ORE-Objekt). Dieses SRM (ORE-Objekt) wird in die SRQ (I0M) eingereiht, auf die das OPl-FeId der Instruktion SENDM zeigt. Ausserdem wird das in der SRQ (IOM) wartende TDE (I0M) in die TDQ eingereiht, und die Aufgabe wird gewechselt. Der IOM-Aufgabe wird dann der Beendigungszustand mitgeteilt
809884/0758
28285U
RO9-76-014
- 48 -
durch Empfang der ORE von der Antwort-Warteschlange. Es ist in Fig. 38 gezeigt, wo eine RECM-Instruktion der aktiven Aufgabe TDE -(1OM) ausgeführt wird.
Die beschriebene spezielle Operation ist schematisch auch in Fig. gezeigt, wo die Benutzeraufgaben E/A-Anforderungen an E/A-Aufgaben sowie Feldantworten (die Beendigung anzeigen) hervorrufen durch Benutzung der Sendempfangsoperationen an SRQ1s. Taktgeberereignisse werden dem System als E/A-Ereignis angezeigt, und die E/A-Bearbeitung wird in der oben beschriebenen Art ausgeführt, tun für jedes Taktgeberereignis einen Zählwert an die SRC zu senden. Diese zu Taktgeberereignissen gehörenden SRC werden von einer System-Taktgeberaufgabe verwaltet, um dem System die Taktgeberdienste zur Verfügung zu stellen.
809884/0758

Claims (9)

  1. RO9-76-014
    j NAOHGEREICHT
    PATENTANSPRUECHE
    ίIy Anordnung zur Behandlung von Aufgaben in einem Datenverarbeitungs- -system, gekennzeichnet durch:
    eine Aufgabenwarteschlangen-Speichereinrichtung (TDQ), in welche Kennzeichnungen zur Identifizierung der jeweils aktiven Aufgabe einsetzbar sind,
    Transfereinrichtungen mit einer Sendeeinrichtung zum Einsetzen von Aufgabenabfertigungselementen (TDE) in die Äufgabenwarteschlangen-Speichereinrichtung unter Berücksichtigung der Priorität, und mit Empfangseinrichtungen zur Entnahme des jeweils aktiven Aufgabenabfertigungselementes aus der Aufgabenwarteschlangen-Speichereinrichtung, und
    - Aufgabenumschalteinrichtungen für den Aufgabenwechsel, welche mit der Sendeeinrichtung verbunden sind, um ein Aufgabenabfertigungselement beim Einsetzen in die Aufgabcnwarteschlangen-Speichereinrichtung als aktiv zu kennzeichnen, wenn dieses eine höhere Priorität als die gerade aktive Aufgabe hat, und welche mit der Empfangseinrichtung verbunden sind, um bei Entnahme einer gerade aktiven Aufgabe aus der Aufgabenwarteschlangen-Speichereinrichtung das Aufgabenabfertigungselement mit der nächstniedrigeren Priorität als aktiv zu kennzeichnen.
  2. 2. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet,· dass die Aufgabenabfertigungselemente (TDE) ein Prioritätsanzeigefeld, ein
    809884/075 8 oRiQINAL mPECTED
    RO9-76-0L4
    2825544
    — 2 —
    Aufgabenabfertigungselement-Adressfeld (TDK-KA) und ein Aufgabenstatusfeld mindestens zur Aufnahme von Angaben für Beginn oder Fortsetzung der Ausführung der betreffenden Aufgabe aufweisen.
  3. 3. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass eine E/A-Ereignis-Bearbeitungseinrichtung vorgesehen ist, welche auf ein E/A-Ereignis anspricht, um den Status des E/A-Ereignisses zu speichern und um die Sendeeinrichtung zu aktivieren zum Einsetzen einer E/A-Aufgabe gemäss deren Priorität in die Aufgabenwarteschlangen-Speichereinrichtung (TDQ).
  4. 4. Anordnung gemäss Patentanspruch 1, dadurch gekennzeichnet, dass zusätzlich vorgesehen sind:
    eine Sendeempfangswarteeinrichtung (SRQ) mit mindestens einem Sendeempfangsnachrichten-Adressfeld. (SRM-KA) zum Einsetzen von Sendeerapfangsnachrichten (SRM), und mit mindestens einem Aufgabenabfertigungselement-Adressfeld (TDE-KA) zum Einsetzen von Aufgabenabfertigungselementen (TDE), wobei die Sendeeinrichtung Mittel enthält zum Zugreifen zur Sendeempfangswarteeinrichtung und zum Entnehmen von Aufgabenabfertigungselementen daraus; sowie zum Einsetzen der entnommenen Aufgabenabfertigungselemente in die Aufgabenwarteschlangen-Speichereinrichtung (TDQ).
  5. 5. Anordnung gemäss Patentanspruch 4, dadurch gekennzeichnet, dass die Sendeempfangsnachrichten (SRM) ein Reihenfolge-Schlüsselfeld, ein Sendeempfangsnachrichten-Adressfeld (SRM-KA) und ein Nachrichtendatenfeld enthalten, wobei die Sendeempfangsnachrichten gemäss dem Reihenfolge-Schlüsselfeld in die Sendeempfangswarteeinrichtung (SRQ) eingesetzt werden.
  6. 6. Anordnung nach Patentanspruch 47 dadurch gekennzeichnet, dass die Empfangseinrichtung Mittel enthält zum Einsetzen des bisher aktiven Aufgabenabfertigungselementes (TDE), welches aus der Aufgabenwarteschlangen-Speichereinrichtung (TDQ) entnommen wurde, in ein Aufgabenabfertigungselement-Adressfeld (TDE-KA) der Sendeemjpfangswarteeinrichtung (SRQ).
    809884/0758
  7. 7. Anordnung nach Patentanspruch 1, gekennzeichnet durch:
    eine Sendeempfangszähleinrichtung (SRC) mit" einem Zählwertfeld, einem Grenzwertfeld und einem Aufgabenabfertigungselement-Adressfeld (TDE-KA),
    - eine Inkrementiervorrichtung zum selektiven Erhöhen des Zählwertes,
    eine Vergleichsvorrichtung zum Vergleichen des Zählwertes mit dem Grenzwert, und
    - eine Anzeigeeinrichtung/ welche mit der Vergleichsvorrichtung verbunden ist und ein erstes Anzeigesignal abgibt, wenn der Zählwert grosser als oder gleich gross wie der Grenzwert ist, sowie ein zweites Anzeigesignal, wenn der Zählwert kleiner als der Grenzwert ist, wobei die Sendeeinrichtung aufgrund des ersten Anzeigesignals ein Aufgabenabfertigungselement (TDE) aus dem Aufgabenabfertigungs-Adressfeld (TDE-KA) der Sendeempfangszähleinrichtung (SRC) entnimmt und geraäss Prioritätsreihenfolge in die Aufgabenwarteschlangen-Speichereinrichtung (TDQ) einsetzt.
  8. 8. Anordnung nach Patentanspruch 7, dadurch gekennzeichnet, dass die Anzeigeeinrichtung ein bistabiles Kippglied (95) ist.
  9. 9. Anordnung nach Patentanspruch 7, dadurch gekennzeichnet, dass eine Subtraktionseinrichtüng vorgesehen ist, welche aufgrund des ersten Anzeigesignals den Zählwert um den Grenzwert vermindert, wobei dann die Empfangseinrichtung aufgrund des zweiten Anzeigesignals das aktive Aufgabenabfertigungselement (TDE) aus der Aufgabenwarteschlangen-Speichereinrichtung (TDQ) entnimmt und gemäss Priorität in das Aufgabenverteilungselement-Adressfeld (TDE-KA) der Sendeempfangswarteeinrichtung (SRQ) einsetzt.
    809884/0758
DE19782828544 1977-07-08 1978-06-29 Anordnung zur behandlung von aufgaben in einem datenverarbeitungssystem Granted DE2828544A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/813,901 US4177513A (en) 1977-07-08 1977-07-08 Task handling apparatus for a computer system

Publications (2)

Publication Number Publication Date
DE2828544A1 true DE2828544A1 (de) 1979-01-25
DE2828544C2 DE2828544C2 (de) 1989-06-15

Family

ID=25213705

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19782828544 Granted DE2828544A1 (de) 1977-07-08 1978-06-29 Anordnung zur behandlung von aufgaben in einem datenverarbeitungssystem

Country Status (13)

Country Link
US (1) US4177513A (de)
JP (1) JPS5418640A (de)
AU (1) AU517201B2 (de)
BE (1) BE868360A (de)
BR (1) BR7804426A (de)
CA (1) CA1103368A (de)
CH (1) CH634936A5 (de)
DE (1) DE2828544A1 (de)
ES (1) ES470934A1 (de)
FR (1) FR2397017B1 (de)
GB (1) GB1601008A (de)
IT (1) IT1113184B (de)
SE (1) SE7807561L (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0021146A2 (de) * 1979-07-03 1981-01-07 International Business Machines Corporation Einen Apparat zur Aufgabenbehandlung enthaltendes Computersystem

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5624651A (en) * 1979-08-07 1981-03-09 Nec Corp Multiple task processing unit
US4320456A (en) * 1980-01-18 1982-03-16 International Business Machines Corporation Control apparatus for virtual address translation unit
JPS56110154A (en) * 1980-02-06 1981-09-01 Fuji Xerox Co Ltd Sequence control system by microcomputer
US4384323A (en) * 1980-02-25 1983-05-17 Bell Telephone Laboratories, Incorporated Store group bus allocation system
ATE38442T1 (de) * 1980-02-28 1988-11-15 Intel Corp Datenverarbeitungssystem.
US4358829A (en) * 1980-04-14 1982-11-09 Sperry Corporation Dynamic rank ordered scheduling mechanism
JPS57176782U (de) * 1981-05-02 1982-11-09
US4394727A (en) * 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
US4435780A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Separate stack areas for plural processes
US4451840A (en) * 1981-11-25 1984-05-29 Rca Corporation Picture control for television receiver on-screen display
JPS58222673A (ja) * 1982-06-18 1983-12-24 Matsushita Electric Ind Co Ltd テレビジヨン受像機の信号切換え制御装置
GB8309770D0 (en) * 1983-04-11 1983-05-18 Inmos Ltd Microcomputer
JPS6036692U (ja) * 1983-08-22 1985-03-13 パイオニア株式会社 ディスプレイ装置
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
US4736318A (en) * 1985-03-01 1988-04-05 Wang Laboratories, Inc. Data processing system having tunable operating system means
EP0257655B1 (de) * 1986-08-28 1994-07-06 Nec Corporation Multiaufgabenverarbeitungsgerät
US5202988A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership System for communicating among processors having different speeds
JPH0743653B2 (ja) * 1990-07-25 1995-05-15 株式会社東芝 割込みコントローラ
US5301330A (en) * 1990-10-12 1994-04-05 Advanced Micro Devices, Inc. Contention handling apparatus for generating user busy signal by logically summing wait output of next higher priority user and access requests of higher priority users
US5386560A (en) * 1991-05-23 1995-01-31 International Business Machines Corporation Execution of page data transfer by PT processors and issuing of split start and test instructions by CPUs coordinated by queued tokens
US5437039A (en) * 1992-05-21 1995-07-25 Intel Corporation Servicing transparent system interrupts and reducing interrupt latency
US5381346A (en) * 1992-06-30 1995-01-10 Motorola, Inc. Virtual data source for a radio transceiver
JP2587190B2 (ja) * 1992-09-04 1997-03-05 インターナショナル・ビジネス・マシーンズ・コーポレイション システム間チャネルページング機構
US6951019B1 (en) 1992-09-30 2005-09-27 Apple Computer, Inc. Execution control for processor tasks
US6304891B1 (en) * 1992-09-30 2001-10-16 Apple Computer, Inc. Execution control for processor tasks
US5625845A (en) * 1992-10-13 1997-04-29 International Business Machines Corporation System for facilitating continuous, real-time, unidirectional, and asynchronous intertask and end-device communication in a multimedia data processing system using open architecture data communication modules
JP2516317B2 (ja) * 1992-10-13 1996-07-24 インターナショナル・ビジネス・マシーンズ・コーポレイション デ―タ処理システムとディジタル信号プロセッサへのロ―ディング方法
WO1994011817A1 (en) * 1992-11-09 1994-05-26 Microsoft Corporation Method and system for connecting objects in a computer system
GB2273591A (en) * 1992-12-18 1994-06-22 Network Systems Corp Microcomputer control systems for interprogram communication and scheduling methods
US5528513A (en) * 1993-11-04 1996-06-18 Digital Equipment Corp. Scheduling and admission control policy for a continuous media server
US5940612A (en) * 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US6393455B1 (en) 1997-03-28 2002-05-21 International Business Machines Corp. Workload management method to enhance shared resource access in a multisystem environment
US7178147B2 (en) * 2001-09-21 2007-02-13 International Business Machines Corporation Method, system, and program for allocating processor resources to a first and second types of tasks
GB2388213A (en) * 2002-04-30 2003-11-05 Innovation Ct Improvements relating to task dispatch in priority pre-emptive real-time operating systems
AU2003303497A1 (en) * 2002-12-31 2004-07-29 Globespanvirata Incorporated System and method for providing balanced thread scheduling
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
CN114928893B (zh) * 2022-06-20 2024-04-16 东北大学秦皇岛分校 一种基于智能反射面的架构及任务卸载方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2459675A1 (de) * 1973-12-17 1975-06-26 Honeywell Inf Systems Datenverarbeitungssystem

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3530438A (en) * 1965-12-13 1970-09-22 Sperry Rand Corp Task control
DE1549531A1 (de) * 1966-08-16 1971-04-01 Scient Data Systems Inc Digitale Rechenanlage
US3447135A (en) * 1966-08-18 1969-05-27 Ibm Peripheral data exchange
US3496551A (en) * 1967-07-13 1970-02-17 Ibm Task selection in a multi-processor computing system
US3599162A (en) * 1969-04-22 1971-08-10 Comcet Inc Priority tabling and processing of interrupts
US3665415A (en) * 1970-04-29 1972-05-23 Honeywell Inf Systems Data processing system with program interrupt priority apparatus utilizing working store for multiplexing interrupt requests
US3699530A (en) * 1970-12-30 1972-10-17 Ibm Input/output system with dedicated channel buffering
US3725864A (en) * 1971-03-03 1973-04-03 Ibm Input/output control
US3774163A (en) * 1972-04-05 1973-11-20 Co Int Pour L Inf Hierarchized priority task chaining apparatus in information processing systems
US4015242A (en) * 1972-11-29 1977-03-29 Institut Francais Du Petrole, Des Carburants Et Lubrifiants Et Entreprise De Recherches Et D'activities Petrolieres Elf Device for coupling several data processing units to a single memory
US3944985A (en) * 1973-10-19 1976-03-16 Texas Instruments Incorporated Workspace addressing system
FR2253428A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4320451A (en) * 1974-04-19 1982-03-16 Honeywell Information Systems Inc. Extended semaphore architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2459675A1 (de) * 1973-12-17 1975-06-26 Honeywell Inf Systems Datenverarbeitungssystem

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0021146A2 (de) * 1979-07-03 1981-01-07 International Business Machines Corporation Einen Apparat zur Aufgabenbehandlung enthaltendes Computersystem
EP0021146A3 (en) * 1979-07-03 1981-07-22 International Business Machines Corporation Computer system including a task handling apparatus

Also Published As

Publication number Publication date
IT1113184B (it) 1986-01-20
CA1103368A (en) 1981-06-16
GB1601008A (en) 1981-10-21
AU517201B2 (en) 1981-07-16
CH634936A5 (de) 1983-02-28
JPS5637572B2 (de) 1981-09-01
FR2397017A1 (fr) 1979-02-02
FR2397017B1 (fr) 1985-10-18
JPS5418640A (en) 1979-02-10
IT7825102A0 (it) 1978-06-29
BE868360A (fr) 1978-10-16
BR7804426A (pt) 1979-04-10
DE2828544C2 (de) 1989-06-15
SE7807561L (sv) 1979-01-09
ES470934A1 (es) 1979-02-01
AU3645078A (en) 1979-11-29
US4177513A (en) 1979-12-04

Similar Documents

Publication Publication Date Title
DE2828544A1 (de) Anordnung zur behandlung von aufgaben in einem datenverarbeitungssystem
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE69226928T2 (de) Verfahren und Direktspeicherzugriffssteuerung zum asynchronen Daten-Lesen von einem -Schreiben in einen Speicher mit verbessertem Durchfluss
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3852928T2 (de) Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen.
DE69520886T2 (de) System und verfahren zur verarbeitung von signaldaten und kommunikationssystem mit system zur verarbeitung von signaldaten
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE1913059C2 (de) Programmunterbrechungseinrichtung für eine Datenverarbeitungsanlage
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE3751514T2 (de) Adressieranordnung für RAM-Puffer-Steuereinrichtung.
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE2744531C2 (de) Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE2104733A1 (de) Mehrkanal Ubertragungsverarbeitungs system zum unabhängigen Steuern von Ein gäbe/Ausgabe Datenübertragungen
DE1524166B1 (de) Schaltungsanordnung zur Herstellung von Verbindungen zwischen mehreren unabhaengigen Teilen und einem gemeinsamen Teil einer Datenverarbeitungsanlage
DE2411963B2 (de) Datenverarbeitungsanlage
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE2725522A1 (de) Datenverarbeitungsvorrichtung
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE4305851A1 (en) Data transfer system between memory and central processing unit - uses direct memory access transfer control having bus information control stage to provide time priority access control of operations
DE112011104491T5 (de) Pufferverwaltungsschema für einen Netzwerkprozessor
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE2856680C2 (de)

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee