DE2209282A1 - Datenverarbeitungsanlage - Google Patents

Datenverarbeitungsanlage

Info

Publication number
DE2209282A1
DE2209282A1 DE19722209282 DE2209282A DE2209282A1 DE 2209282 A1 DE2209282 A1 DE 2209282A1 DE 19722209282 DE19722209282 DE 19722209282 DE 2209282 A DE2209282 A DE 2209282A DE 2209282 A1 DE2209282 A1 DE 2209282A1
Authority
DE
Germany
Prior art keywords
channel
unit
queue
units
program
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
DE19722209282
Other languages
English (en)
Other versions
DE2209282B2 (de
DE2209282C3 (de
Inventor
William Albert Boulder CoI.; Salmond Kent Adams Los Gatos Calif.; Stafford Thomas Sanderson Dunwoody Ga.; Clark IV (V.StA.)
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 DE2209282A1 publication Critical patent/DE2209282A1/de
Publication of DE2209282B2 publication Critical patent/DE2209282B2/de
Application granted granted Critical
Publication of DE2209282C3 publication Critical patent/DE2209282C3/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer

Description

Die Erfindung betrifft eine Datenverarbeitungsanlage mit einem oder mehreren Eingabe/Ausgabe-Kanälen, mehreren Eingabe/Ausgabe-Steuereinheiten, mehreren gemeinsamen Einheiten und mehreren peripheren Geräten, die miteinander über eine Schaltmatrix verbunden sind.
In derartigen Datenverarbeitungsanlagen werden die Informationen zu den peripheren Geräten über Kanäle, die sowohl als Multiplexals auch als Selektorkanäle ausgebildet sein können, vorgenommen, wobei den Kanälen Steuereinheiten zugeordnet sind, die mit ihnen in Verbindung stehende periphere Geräte auswählen und steuern können. Aus der US Patentschrift 3 336 582 ist z. B. eine zentrale Datenverarbeitungseinheit, die mit mehreren Eingabe- und Ausgabegeräten wahlweise verbunden ist, bekannt geworden. Zu diesem Zwecke sind in diesem Falle drei Leitungsbündel vorgesehen, wovon das erste Leitungsbündel Daten-Adressen von Eingabe/Ausgabe-Geräten und Befehle überträgt, das zweite Leitungsbündel Signale überträgt, die die Art der Informationen im ersten Leitungsbün-
209839/1044
del angeben, und das dritte Leitungsbündel die Auswahlsteuersignale überträgt, die den Informationsfluß steuern und Prioritätsangaben vermitteln. Abgesehen davon, daß eine derartige Einrichtung mit mehreren Leitungsbündeln für die Verbindung einer Vielzahl von Verarbeitungseinheiten mit einer Vielzahl von peripheren Einheiten, die zum Teil noch weit entfernt stehen, nicht geeignet ist, hat ein derartig aufgebautes System den großen Nachteil, daß bei der Übertragung von Daten eines Gerätes auf ein anderes die Übertragungskanäle, Steuereinheiten und Mikroprogrammsteuerungen zu lange blockiert sind.
Eine Schaltmatrix in Form eines Koordinatenschalters zur Verbindung mehrerer Speichereinrichtungen mit mehreren Verarbeitungseinheiten ist aus der deutschen Auslegeschrift 1 118 506 bekannt. Jeder Verarbeitungseinheit ist hier eine besondere Speichereinrichtung zugeordnet, die die Adresse des mit dieser Verarbeitungseinheit verbundenen Teilspeichers speichert, um Mehrfachbelegungen zu vermeiden. Diese Art der Speicherung des Belegungszustands der Schaltmatrix ist jedoch sehr aufwendig und erfordert zusätzliche Schritte in der Programmsteuerung der Datenverarbeitungsanlage .
Um die Effikivität der Datenübertragung in einer Datenverarbeitungsanlage dieser Art zu verbessern, wurde in der deutschen Offenlegungsschrift 2 000 930 eine Schaltungsanordnung vorgeschlagen, die gekennzeichnet ist durch eine Matrixschalteinheit mit einer ersten Unterheit zum Verbinden der Kanäle mit der oder den Steuereinheiten und einer zweiten Untereinheit zum Speichern des Belegungszustandes der Matrixverbindungspunkte in der ersten Untereinheit, und durch den Kanälen zugeordnete Schaltsteuereinheiten, welche von den Kanälen und von den Eingangs/Ausgangssteuereinheiten Anforderungssignale erhalten, die zweite Untereinheiten abfragen und empfangene Zustandssignale verwerten, sowie Signale zum Durchschalten oder Unterbrechen der Verbindungspunkte in der ersten Untereinheit erzeugen. Obwohl hiermit die Möglichkeit aufgezeigt ist, mehrere Verbindungswege gleich-
Docket PO 968 036 „ Λ. , * , ,
zeitig durchzuschalten, ist auch durch diese Lösung noch keine optimale Ausnutzung der Datenübertragungswege, der Steuereinheiten, der Steuer- und Befehlslogiknetzwerke der Datenverarbeitungsanlage und der peripheren Geräte gewährleistet, da insbesondere beim Anschluß von mechanischen peripheren Geräte z. B. zur Auswahl und zur Einstellung sowie zur Vorerregung relativ lange Zeiten vergehen, die den übertragungsweg und andere Einheiten in der Datenverarbeitungsanlage so lange blockieren, bis z.B. die mechanischen Einstellung eines Magnetkopfes beendet ist.
Der Erfindung liegt deshalb die Aufgabe zugrunde, eine optimalere Organisation einer Datenverarbeitungsanlage dieser Art zu schaffen, die unter Berücksichtigung der den einzelnen Einheiten einer Datenverarbeitungsanlage zugeordneten Priorität quasi eine hundertprozentige Auslastung aller an der Datenübertragung beteiligten Einheiten ermöglicht, d. h. Warte- und Totzeiten weitgehend vermeidet, ohne daß durch aufwendige Steuerung ein Teil der gewonnenen Zeit für die Koordinierungssteuerung verloren geht.
Die erfindungsgemäße Lösung der Aufgabe besteht darin, daß auf einer Seite der bekannten Schaltmatrix Kanalsteuereinheiten und auf der anderen Seite Speicher-, Verarbeitungs-, Ein/Ausgabe-Einheiten und/oder Einheitensteuerschaltungen angeordnet sind, die außerhalb der Schaltmatrix mit einer gemeinsamen Anforderungsleitung miteinander und mit den Kanalsteuereinheiten verbunden sind, die über Adreß- und Daten-Sammelleitungen sowohl mit dem Speicher der Datenverarbeitungsanlage als auch mit der zentralen Verarbeitungseinheit verbunden sind und Eingabe/Ausgabe-Programmpläne aufstellen, indem ein Befehl die zentrale Verarbeiungseinheit veranlaßt, einen Kanalsteuerblock aus dem Speicher zu holen, der die Adresse des ersten Befehls eines Kanalprogrammes enthält und in eine Arbeitswarteschlange im Speicher gesetzt wird, worauf über eine Alarmleitung, die mit allen Kanalsteuereinheiten verbunden ist, ein Alarmsignal von der zentralen Verarbeitungseinheit an die Kanalsteuereinheiten abgegeben wird, worauf eine nicht belegte Kanalsteuereinheit einen Kanalsteuerblock aus der
Docket PO 968 036 2 0 9 8 3 9 / 1 0 U
Arbeitswarteschlange in ihre Register lädt und ausführt, und daß während einer latenten Periode ein Befehl "Einreihen" die Einreihung der Kanalsteuerblocks in eine Einheitenwarteschlange vornimmt.
Der Vorteil dieser Lösung besteht vor allem darin, daß durch die Verbindung der einzelnen Steuereinheiten und durch die Speicherung von genau abgestimmten Mikroprogrammen, die sich gegenseitig durch die beschriebene Schaltungsanordnung beeinflussen können und durch die dynamische Umordnung verschiedener, den einzelnen Einheiten zugeordneten Warteschlangen in Nicht-Belegt-Zeiten alle Einheiten einer Datenverarbeitungsanlage entsprechend ihrer zugeordneten Priorität optimal über die Übertragungswege verbunden werden, wenn sie Informationen zu empfangen bzw. zu senden wünschen.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:
Fig. 1 ein Blockdiagramm,
Fig. 2 ein Blockdiagramm eines komplexen Rechnersystems,
Fig. 3 ein Diagramm eines Kanalsteuerblocks (CCB),
Fig. 4 ein Diagramm von Kanalwarteschlangen und Masken,
Fig. 5 ein Diagramm einer Einheitentabelle (DT),
Fig. 6 das Diagramm einer Unterbrechungswarteschlange,
Fig. 7 in einem Diagramm ein Suchverfahren für die
externen Listen mittels Datensatztabellen zur Zusammensetzung von Einheitenwarteschlangen, die Ketten von Kanalsteuerblocks enthalten,
Fig. 8 in einem Diagramm die Beziehung zwischen der Docket PO 968 036 209839/1044
unabhängigen Argumententabelle (IAT) und der abhängigen Argumententabelle (DAT),
Fign. 9A, 9B Ablaufdiagramme für die Ausführung des Kommandos
"Einreihen",
Fig. IO ein Ablaufdiagramm für die Ausführung des Lesekommandos und
Fig. 11 eine Tabelle zur Darstellung einer Schleife aus
drei Kommandos zum Lesen logisch zusammenhängender Daten.
Fig. 1 zeigt ein Datenverarbeitungssystem, welches ein Eingabe/ Ausgabe-System zur Steuerung der Übertragung von Daten von umlaufenden Einheiten wie Platten oder Speichern enthält. Eine zentrale Verarbeitungseinheit 10 (CPU) und eine Anzahl von Kanals teuereinhei ten (CCUs) 25 stehen mit dem Speicher 11 über Daten- und Adreßleitungen in Verbindung. Die CCUs stellen die Verbindung mit einer Anzahl von Einheiten 17 über eine Schaltmatrix 26 her. Bestimmte Verbindungen resultieren aus den Schaltsteuerungen in den CCUs.
Die CCUs 25 können Eingabe/Ausgabe-Programmpläne aufstellen und ausführen, die im Speicher 11 unter Steuerung von Programmen zusammengesetzt werden, welche durch die CPU IO ausgeführt werden. Die Planeinteilung der Eingabe/Ausgabe-Programme wird eingeleitet durch die Ausführung einer Sonderinstruktion "Fordere Kanal an" in der CPU.
Diese Instruktion veranlaßt die CPU dazu, eine Eingabe/Ausgabe-Aufgabe zusammenzusetzen, indem sie zuerst einen Kanalsteuerblock (CCB) aus einem Vorrat von Steuerblocks im Hauptspeicher herauszieht. Der CCB ist ein schmaler Speicherbereich, der durch die CPU so initialisiert wird,, daß er die Adresse des ersten Kommandos eines Kanalprogrammes, die zugehörigen Parameter und andere
Docket PO 968 036 A Ä ,. „ A Λ , „ „ , .
2203282
Steuerinformationen enthält. Der initialisierte CCB wird in eine Arbeitswarteschlange im Speicher gesetzt. Alle CCUs erhalten dann über eine Alarmleitung 19 ein Signal dafür, daß eine Eingabe/Ausgabe-Aufgabe zusätzlich in die Warteschlange gesetzt wurde. Wenn die CPU die genannte Instruktion ausgeführt hat, arbeitet sie an der nächsten Instruktion weiter.
Eine nicht belegte CCU reagiert auf das Alarmsignal, zieht ein CCB aus der Arbeitswarteschlange und lädt den Inhalt des CCB in ihre Register. Die CCU beginnt dann mit der Ausführung des im CCB angegebenen Kanalprogrammes, wobei ihr Verhalten danach durch das jeweils ausgeführte Kanalprogramm gesteuert wird.
Das Kanalprogramm verwendet Parameter, die in das CCB zur Bezeichnung einer Datensatzzahl, der relativen Adresse einer Aufzeichnung im Datensatz, der Länge der Aufzeichnung und einer Pufferadresse im Speicher eingeleitet wurden, die alle von der Eingabe/Ausgabe-Operation betroffen sind. Das Kanalprogramm gibt später das Sonderkommando "Einreihen". Dieses Kommando veranlaßt die CCU zur Verwendung der Datensatzzahl und der relativen Adresse der Aufzeichnung, um die Einheit 17 zu ermitteln, die die Aufzeichnung enthält, und die Lage der Aufzeichnung auf dieser Einheit. In diesem Auflösungsprozeß benutzt die CCU einen Hinweis von Datensätzen, der dem Kanalprogramm zur Verfügung steht, und ein Lageverzeichnis des angegebenen Datensatzes, die vorher durch ein von der CPU ausgeführtes Steuerprogramm aufgestellt wurden. Bei der Fortsetzung des Kommandos "Einreihen" setzt die CCU als nächstes das CCB auf eine zu der Einheit gehörende Warteschlange. Dann wird ein Befehl an die Einheit abgegebenen, durch welchen diese ggf. die Einstellung des Zugriffsmechanismus einleitet und in einem Register die Lage der gewünschten Aufzeichnung festhält. An diesem Punkt trennt sich die CCU selbst von der Einheit und speichert den fortgeschriebenen Inhalt ihrer Register in das CCB. Dadurch hält die CCU den momentanen Status des Kanalprogrammes einschließlich der Lage des nächsten Kommandos fest, setzt die Ausführung des Kanalprogrammes aus und stellt sich selbst dem
Docket PO 968 036 209839/1044
System zur Verfügung.
Bis die Einheit die Einstellung ihres Zugriffsmechanismus beendet und den die Aufzeichnung enthaltenden Sektor erreicht hat, läuft sie in der sog. latenten Periode, in welcher keine externe Steuerung benötigt wird. Die CCU ist somit frei zum Beginn eines weiteren Kanalprogrammes durch Rückkehr zur Arbeitswarteschlange und Auszug eines weiteren CCB oder bei Anforderung von einer der E/A-Einheiten 17 auch zur Bedienung dieser Einheit.
Wenn eine Einheit, die vorher einen entsprechenden Befehl erhalten hat, sich einem gewünschten Sektor nähert, versucht sie eine verfügbare CCU über die Anforderungsleitung 27 anzusprechen. Als Antwort schließt eine freie CCU einen Schalter in der Schaltmatrix 26 und stellt eine Verbindung mit der anfordernden Einheit her. Dia XU ermittelt die zu dieser Einheit gehörende Warteschlange im Hauptspeicher (durch die Einheitenzahl), empfängt eine Sektorzahl von der Einheit und ermittelt mit dieser Sektorzahl den zugehörigen CCB. Der Inhalt des CCB wird dann in die Register der CCU geladen. Die CCO ist jetzt bereit^ ü±e Ausführung eines vorher ausgesetzten Kanalprogrammes am. ünterbrechungspunkt wieder aufzunehmen.
Bei der vorgesehenen Verwendung der Erfindung gibt das als nächstes auszuführende Kommando eine Lese- oder Schreiboperation an, die eine Datenübertragung zwischen einer vorgegebenen Pufferadresse im Speicher und dem momentanen Sektor (oder Sektoren) der Einheit bewirkt. Andererseits kann vor diesem Kommando eine kurze Folge von Kommandos stehen, die eine Pufferadresse unmittelbar vor der E/A-Operation bestimmen. Mach Beendigung der Datenübertragung wählt die CCU die Einheit ab und führt die nachfolgenden Kommandos des Kanalpragrartaaes ~;.z3 „ Diese können eine Wiederholung des obigen Prozesses naa'v Abschluß dsr l/Ä-Oparatioiisn für das CPU-Programm über eine ocsr nsb.rsrs üaiasibresiMasgen ■vorschreiben oder das Kanalprogra::::.: ;;s-?::l3a« Bsi 3:s®akäiguag äss Kanalprogrammes gibt die CCT er: 7CZ. -:..i iteii Ίο^^ΐΛ, freier CGEs
Docket PO 968 036
2 0 S 6 3 » j ". G 4 tk
zurück und stellt sich selbst zur Ausführung eines anderen Kanalprograinines zur Verfügung.
Es wurde also ein Eingabe/Ausgabe-Steuersystem beschrieben, in
welchem die CPU eine CCU im Eingabe/Ausgabe-System davon unterrichtet, daß ein Kanalprogramm zur Ausführung vorliegt. Die indirekte Adresse des Kanalprogrammes wird in eine Arbeitswarteschlange gesetzt, die für die CCUs im Eingabe/Ausgabe-System zugänglich sind. Die CCU wählt die Aufgabe aus der Arbeitswarteschlange und beginnt mit der Ausführung des Kanalprogrammes. Wenn das Kanalprogramm einen Punkt erreicht, an welchem eine weitere Ausführung erst möglich ist, wenn die Einheit anzeigt, daß sie
einen bestimmten Status erreicht hat, überträgt die CCU die indirekte Adresse des Kanalprogrammes von der gemeinsamen Arbeitswarteschlange in eine besondere Einheitenwarteschlange, die für die diese Einheit vorliegt. Wenn die Einheit anzeigt, daß sie den Status erreicht hat, an welchem das Kanalprogramm ohne Verzögerung wieder aufgenommen werden kann, informiert sie eine CCU davon. Die CCU nimmt das Kanalprogramm wieder auf durch Abruf der Aufgabe aus der Einheitenwarteschlange und neuen Eintritt des Programmes an dem Punkt, an welchem es unterbrochen wurde.
Der Prozeß wird ohne Unterstützung eines Überwachungsprograinmes abgewickelt, das von der ,CPU ausgeführt wird, was Zeit- und Programmierersparnisse bedeutet.
Jede Kommunikation zwischen der Steuereinheit und dem Kanal erfolgt über eine E/A-Anschlußeinheit. Die Steuereinheit empfängt Steuersignale vom Kanal, steuert die Zeiteinteilung der Datenübertragung über die E/A-Anschlußeinheit und liefert den Status der Einheit betreffende Anzeigesignale.
Die E/A-Anschlußeinheit liefert ein Informationsformat und eine Signalfolge, die allen E/A-Einheiten gemeinsam ist. Die Anschlußeinheit besteht aus einem Satz von Leitungen, die eine Anzahl
von Steuereinheiten an den Kanal anschließen können. Mit Aus-
Docket PO 968 036
209839/ 1OU
nähme des zur Festlegung einer Priorität unter den Steuereinheiten benutzten Signales erfolgen alle Kommunikationen von und zum Kanal über eine gemeinsame Leitung und jedes durch den Kanal geliefertes Signal steht allen Steuereinheiten zur Verfügung. In jedem beliebigen Zeitpunkt ist jedoch nur eine Steuereinheit logisch mit dem Kanal verbunden.
Die Wahl einer Steuereinheit für die Kommunikation mit dem Kanal wird gesteuert durch ein Signal vom Kanal, welches seriell durch alle vom Kanal bedienten Steuereinheiten läuft. Eine Steuereinheit bleibt logisch mit der Anschlußeinheit verbunden, bis sie die Information übertragen hat, die sie braucht, oder bis der Kanal ihre Trennung signalisiert.
Die an die Steuereinheit angeschlossene E/A-Einheit kann so ausgelegt sein, daß sie nur bestimmte begrenzte Operationen ausführen kann, oder sie kann auch viele verschiedene Operationen ausführen. Eine typische Operation ist die Bewegung des Aufzeichnungsträgers und die Aufzeichnung von Daten. Für diese Funktionen benötigt die Einheit für sie typische detaillierte Signalfolgen. Die Steuereinheit decodiert vom Kanal empfangene Befehle, interpretiert sie für die jeweilige Einheit und liefert die zur Ausführung dieser Operationen benötigte Signalfolge.
In dieser Beschreibung werden die Ausdrücke "Kanal", "Umsetzer" und "Kanal/Steuereinheit" abwechselnd benutzt, um eine Eingabe/ Ausgabe-Steuerung zu beschreiben, die Kanalfunktionen übernimmt oder Kanalfunktionen zuzüglich anderer Funktionen oder Kanalfunktionen und Steuereinheitenfunktionen.
Der Kanal lenkt den Informationsfluß zwischen E/A-Geräten und dem Hauptspeicher. Er befreit die CPU von der Aufgabe, direkt mit den E/A-Geräten in Verbindung zu treten und gestattet eine Fortsetzung der Datenverarbeitung gleichzeitig mit E/A-Operationen und deren Steuerung.
Docket PO 968 036
209839/1044
Eingabe/Ausgabe-Operationen werden eingeleitet und gesteuert durch Informationen in drei Formatarten: Instruktionen, Kommandos und Befehle. Instruktionen werden decodiert und ausgeführt von der CPU und sind Teile von CPU-Programmen. Kommandos werden ausgeführt und decodiert durch die Kanäle als Teile von Kanalprogrammeno Der Kommandosatz hat viele logische und arithmetische Möglichkeiten des Instruktionssatzes, ist jedoch speziell auf die Steuerung der Reihenfolge von E/A-Operationen ausgerichtet. Instruktionen werden unabhängig von E/A-Operationen ausgeführt, Kommandos nicht. Instruktionen und Kommandos werden aus dem Hauptspeicher abgerufen und sind funktionell allen Klassen von E/A-Geräten gemeinsam.
Das CPU-Programm fordert die Ausführung eines Kanalprogramines an mit der Instruktion "Fordere Kanal an". Diese Instruktion veranlaßt die CPU dazu, vorgeschriebene Parameter in einen reservierten Bereich des Hauptspeichers, der zu einem Kanalprogramm gehört, zu setzen und diesen Bereich folgendermaßen an einen evtl. freien Kanal weiterzugeben:
Die CPU nimmt den ersten Kanalsteuerblock (CCB) aus einer geketteten Liste freier CCBs, deren Ursprung eine feste Speicheradresse ist. Die CCBs (Fig. 3) sind 16 Wort große Bereiche des Hauptspeichers, die als Sätze von Originalregistern (RO bis Rl5) für Kanalprogramme· während deren Ausführung dienen. Vor der ersten Ausführung eines Kanalprogrammes und zu bestimmten Zeiten während der zwischengeschobenen Ausführung eines Kanalprogrammes, welches mehrere E/A-Operationen umfaßt, sind die CCBs in Listen verkettet. Allgemein stellt jede Liste eine Reihe von ausgesetzten Kanalprogrammen dar, die auf eine bestimmte Einrichtung oder einen bestimmten Vorgang warten, wie z. B. die Verfügbarkeit von Daten an einem E/A-Gerät oder einem freien Kanal. Wort 0 des CCB dient als Verbindungsfeld in der Konstruktion der geketteten Listen.
Wörter werden von einer Stelle im Hauptspeicher, die in der In-DoOcet PO 968 036 J09839Z1044
struktion "Fordere Kanal an" angegeben ist, in das zweite und nachfolgende Wörter des CCB gesetzt. Die in den CCB geschobene Information ist für das zugehörige Kanalprogramm während dessen Ausführung adressierbar. Das erste durch diese Instruktion in das CCB geschobene Wort (Wort 2) enthält die Adresse des ersten Kommandos des auszuführenden Kanalprogrammes.
Danach werden ein Speicherschutzschlüssel und eine Aufgabenbezeichnung in das Wort 1 des CCB gespeichert. Der Schutzschlüssel soll bestimmte Speicherbereiche vor irrtümlicher oder fehlerhafter Zerstörung durch das Kanalprogramm während dessen Ausführung schützen.
Der CCB wird dann an die oberste Stelle einer gemeinsamen Kanal-Arbeitswarteschlange gesetzt und verkettet. Der Ursprung der Kanal-Arbeitswarteschlange liegt in einer Tabelle von Warteschlangenursprungs orten im Speicher nach der Darstellung in Fig. 4. Die Adresse der Kanal-Arbeitswarteschlange ist festgelegt. Diese Warteschlange ist für alle CPUs und Kanäle eines Mehrfachsystemes gemeinsam, die Zugriff zu der diese Warteschlangentabelle enthaltenden Speichereinheit haben»
Die CPU versucht, einen freien Kanal auf Existenz eines Einganges in der Kanal-Arbeitswarteschlange hinzuweisen. Wenn alle Kanäle belegt sind, spricht kein Kanal an. Wenn einer oder mehrere Kanäle frei sind, bedient mindestens ein Kanal die Warteschlange. In jedem Fall wird die Ausführung der Instruktion "Fordere Kanal an11 beendet und die CPU ist frei zur Ausführung der nächsten Instruktion.
Manipulationen an der CCB-Freiheitsliste und der Kanal-Arbeitswarteschlange sowie Operationen. an sa-Ieren verketteten Listen "/on CCBs veranlassen eine Verriegelung äsr betroffenen Liste für die Dauer der Operation an dieser Lis-bSo Jsder Li belegt ein einziges Wort in Haupi-STi^riher* {Bytes 1 bis halten entweder einen Hinweis an:p :,^:^ ?.::?■--!-sn CCT- in a©r List
Docket PO 968 036
2 0 9 B 2 S / Ί G 4 4
oder einen Selbsthinweis.) Sobald das äußerste linke Bit des Wortes O ist, wird die Liste als entriegelt bezeichnet. Wenn das Bit 1 ist, bezeichnet man die Liste als verriegelt. Der den Zugriff zu einer Liste fordernde Kanal oder die CPU ruft das Wort am Ursprung der Liste ab und setzt sein äußerstes linkes Byte im Hauptspeicher auf lauter Einsen. Kein anderer Zugriff zu dieser Stelle ist gestattet zwischen dem Moment des Abrufes und dem Moment der Speicherung dieser Einsen.
Sobald ein Kanal frei wird oder angerufen wird, untersucht der Kanal die Kanal-Arbeitswarteschlange. Wenn mit der Warteschlange keine CCBs verkettet sind, bleibt der Kanal frei. Sonst nimmt er den ersten CCB aus der Warteschlange und lädt dessen Inhalt in einen entsprechenden Registersatz innerhalb des Kanales und stellt dadurch den Inhalt des CCB mit gewissen Ausnahmen für das Kanalprogramm zur Verfügung. Der Kanal ruft dann das erste Kommando des Kanalprogrammes ab unter Verwendung der Adresse, die er aus dem Wort 2 des CCB (Fig. 3) erhalten hat. Während jedes Kommando ausgeführt wird, wird die Adresse im Register des Kanales entsprechend dem Wort 2 des CCB fortgeschrieben, um die Länge des Kommandos, um die Adresse des nächsten Kommandos in der Reihenfolge zu erhalten. Verzweigungskommandos können den Inhalt dieses Registers neu setzen.
Die ausgeführten Kommandos fallen nach den gelieferten Operationen in drei Klassen: Rechen- und Verknüpfungsoperationen, E/AOperationen und Status-Umschaltoperationen.
Die Rechen- und Verknüpfungskommandos übernehmen die Addition, Subtraktion, den Vergleich, die Bitmanipulation, die Bitprüfung und die Bewegung von Daten zwischen dem CCB und anderen Stellen im Hauptspeicher. Diese Kommandos dienen für die Erzeugung und Veränderung von Adressen, die Auflösung logischer Bedingungen und die Benutzung der Wörter des CCB als Arbeitsspeicher.
Kommandos, welche E/A-Operationen einleiten, resultieren alle
Docket PO 968 036 Λ Λ Λ , .
209839/1OU
in der Informationsübertragung von oder zu einem E/A-Gerät. Abhängig von der Operation wird die übertragene Information durch das Gerät entweder als Daten oder als eine Folge von Befehlen interpretiert.
Die Status-Umschaltkommandos ermöglichen eine Mehrfachprogrammierung und die parallele Verarbeitung von Programmen, die sowohl durch die CPU als auch durch die Kanäle ausgeführt werden. (Die Mehrfachprogrammierung bezieht sich auf die verschachtelte Ausführung von zwei oder mehr Programmen durch eine CPU oder einen Kanal. Diese Kommandos planen und beenden die Kanalprogramme, halten durch mehr als eine CPU oder einen Kanal benutzte Warteschlangen aufrecht und leiten E/A-Unterbrechungen der CPU ein.
Kommandos zur Statusumschaltung sowie Rechen- und Verknüpfungskommandos können von jedem Kanal ausgeführt werden. Eine E/AOperation kann jedoch nur von einem Kanal ausgeführt werden, der Zugriff zur geforderten Einheit hat und nur dann, wenn die Einheit für die Teilnahme an dieser Operation frei ist. Um sicherzustellen, daß diese beiden Bedingungen erfüllt sind, muß jeder Kanal für sich selbst einen Plan aufstellen".
Die Planung von Kanalprogrammen erfolgt durch das Kommando "Einreihen", welches Teil des Kanalprogrammes ist. Dieses Kommando verzögert die Ausführung eines Kanalprogrammes, bis das Gerät, eine angeschlossene Steuereinheit und ein angeschlossener Kanal zum Beginn einer E/A-Operation frei sind. Dieses Kommando kann auch dazu benutzt werden, die Ausführung zu verzögern, die auf eine bestimmte Antwort vom Gerät wartet (z. B. die Mitteilung, daß eine Magnetbandeinheit eine Rückschrittoperation beendet hat oder daß auf der Systemkonsole eine Achtungstaste gedrückt wurde).
Um ein Kanalprogramm zu verzögern, setzt der Kanal den zu dem Kanalprogramm gehörigen CCB in eine Warteschlange, die zur einer belegten Einheit oder einer bestimmten Einheitenantwort gehört,
Docket PO 968 036
209839/ 1 OU
und setzt die Ausführung des Kanalprogrammes aus. Die Ausführung wird wieder aufgenommen, wenn die Einheit eine E/A-Operation ausführen kann oder die bestimmte Antwort liefert und ein zugehöriger Kanal und eine Steuereinheit frei sind. Die verzögerte Ausführung eines Kanalprogrammes kann oder kann nicht den Kanal betreffen, der dieses ursprünglich abgerufen hatte.
Sobald ein Kanalprogramm ausgesetzt wird, ist der Kanal frei zur Wiederaufnahme der Ausführung eines anderen Kanalprogrammes, welches die Freisetzung des Kanales oder die Rückkehr zur Kanal-Arbeitsschlange forderte. Sonst bleibt der Kanal im Leerlauf, bis entweder ein CCB in die Arbeitswarteschlange eingesetzt wird oder ein Känalprogramm wieder aufgenommen wird aufgrund einer Änderung im Zustand einer angeschlossenen Einheit.
Die Steuerung von E/A-Operationen durch die Kanäle beginnt mit der Planeinteilung eines Kanalprogrammes und endet mit dem Abschluß aller zugehörigen Datenübertragungen zu und von der Einheit und jeder zugehörigen Aktivität der Einheit.
Zum erfolgreichen Anfang einer E/A-Operation genügt es nicht, eine Verbindung nur herzustellen, wenn die betroffenen Elemente keine andere Operation ausführen. Viele Einheiten weisen z. B. Latenzperioden auf, in welchen sie durch einen Kanal zwar angewählt werden können, jedoch nicht in der Lage sind. Daten zu übertragen. Solche Latenzperioden sind im allgemeinen auf mechanische Verzögerungen, die Verwendung eines zyklischen Speichermediums, die Zeitteilung von Komponenten oder die Erzeugung von Daten außerhalb der Einheit ζurüchzuführen. Die Planeinteilung der Kanalprogramme erfolgt so, daß Latenzzeiten in vielen Einheiten vermieden werden können.
Das Kommando "Einreihen" stellt den Plan des Kanalprogrammes auf durch eine Reihe von Aktionen, die unten aufgeführt sind. Die Ausführung des Kommandos "Einreihen" beginnt mit der ersten Interpretation des Kommandos durch einen Kanal und endet mit der
Docket PO 968 036
209839/1044
Ausführung der gesamten zugehörigen Planaktivität.
1. Die Adresse der Einheit und des zu der Einheit gehörigen Kanales werden festgelegt.
2. Die für die unmittelbare Ausführung einer nachfolgenden E/A-Operation durch die Einheit notwendigen Bedingungen werden bezeichnet.
3. Die Einheit wird gewählt und ein Befehl an sie abgegeben, der sie auffordert, einen vorgestimmten Antwortcode abzugeben, wenn diese Bedingungen erfüllt sind.
4. Wenn die Einheit nicht unmittelbar antwortet, wird sie abgewählt und es passiert folgendes:
5. Der zur Ausführung des Kanalprogrammes gehörende CCB wird in eine sowohl zur Einheit als auch zum angeforderten Antwortcode gehörende Warteschlange gesetzt und dadurch der Kanal freigegeben.
6. Wenn die geforderten Bedingungen in der Einheit erfüllt sind, holt sich die Einheit einen freien Kanal und überträgt ihre Adresse und den Antwortcode an diesen Kanal.
7. Mit der erhaltenen Adresse und dem Antwortcode ermittelt der Kanal die zu diesen Angaben gehörige Warteschlange und nimmt die Ausführung des Kanalprogrammes wieder auf.
Die nachfolgenden Kommandos leiten E/A-Operationen ein, welche die gewählte Einheit betreffen mit folgendem Ergebnis:
8. Der Kanal sendet einen Befehl an die Einheit, der diese anweist, in eine bestimmte E/A-Operation hineinzulaufen.
9. Daten werden zwischen der Einheit und dem Kanal/Umsetzer zu oder von Stellen im Hauptspeicher übertragen.
Docket PO 968 O36
209839/1044
10. Die Einheit kann Informationen an den Kanal/Umsetzer übertragen entweder um die richtige Datenübertragung zu prüfen oder anzuzeigen, daß ein Fehler aufgetreten ist. In letzterem Fall werden zusätzliche Informationen übertragen, die den Fehler voll beschreiben.
11. Die Ausführung des Kanalprogrammes wird fortgesetzt.
12. Die Einheit kann abgewählt werden oder die Anwahl zurückgehalten werden, um eine andere E/A-Operation auszuführen. Wenn die Einheit abgewählt wird und die Operation in der Einheit am Ende der Datenübertragung noch nicht abgeschlossen ist, kann die Einheit erneut einen Kanal anfordern, wenn die Operation abgeschlossen ist. Informationen zum Prüfen der Operation oder Beschreiben von durch die Einheit festgestellten Fehlern können dann an den Kanal weitergeleitet werden. Die durch den Kanal an diesem Punkt unternommenen Schritte hängen von dem Endergebnis der Operation und davon ab, ob eine Antwort von der Einheit durch das Kanalprogramm erwartet wurde oder nicht.
13. Wenn die Antwort von der den Abschluß einer Operation signalisierenden Einheit erwartet wurde, verlaufen die nachfolgenden Vorgänge parallel zu den Vorgängen 4, 5, 6, 7 und 10.
14. Wenn die Antwort nicht erwartet wurde und keine Fehler aufgetreten sind, wird die Einheit abgewählt und ihre Antwort ignoriert.
15. Wenn die Antwort nicht erwartet wurde und ein Fehler aufgetreten ist, wird eine Unterbrechung der CPU eingeplant. Die den Fehler beschreibende Information wird an die CPU als Unterbrechungscode weitergeleitet.
Das Kommando "Einreihen" gibt zwei Operanden an, die zusammen vollständig eine E/A-Adresse beschreiben. Der erste dieser Operanden, der unabhängige Operand, bezeichnet eine Gruppe der zugehörigen Funktionen, Daten, Einheitenantworten oder Quellen oder
Docket PO 968 036
209839/ 1 QUU
Bestimmungen der Information. Der zweite, der abhängige Operand, bezeichnet eine bestimmte Funktion, Antwort usw. innerhalb der durch den unabhängigen Operanden angegebenen Gruppe.
In Verbindung mit zwei durch ein Steuerprogramm aufgebauten Tabellen geben diese Operanden die Einheit und die Bedingungen an, die in der Einheit für die Fortsetzung der Kanalprogrammausführung vorhanden sein müssen.
Der unabhängige Operand wird interpretiert unter Verwendung einer unabhängigen Argumententabelle (IAT), die im Speicher auf einer Adresse steht, welche von der Aufgabenbezeichnung abzuleiten ist, die im Wort 1 des CCB enthalten ist. Mit dem unabhängigen Operanden wählt der Kanal einen Eingang zum IAT. Zu diesem Zweck vergleicht der Kanal zuerst den Operanden mit dem Byte im Hauptspeicher vor dem IAT. Dieses Byte beschreibt die Länge der Tabelle. Wenn der als eine binäre ganze Zahl interpretierte Operand seinen Komparanden überschreitet, wird die Ausführung des Kommandos "Einreihen" beendet. Sonst wird der Operand mit der Zahl 4 (die Bytezahl pro Wort) multipliziert und zur Adresse des IAT addiert. Daraufhin wird ein Wort vom Hauptspeicher abgerufen.
Die aus dem IAT abgerufene Eintragung enthält einen Code, welcher angibt, ob die Eintragung gültig oder ungültig ist, wenn sie gültig ist, ob das Kanalprogramm Leseoperationen, Schreiboperationen oder beides einleiten kann. Wenn die Eintragung ungültig ist, wird die Ausführung des Kommandos "Einreihen" beendet. Wenn die Eintragung gültig ist, wird der Code durch den Kanal festgehalten.
Jede gültige Eintragung des IAT enthält die Adresse einer abhängigen Argumententabelle (DAT). Die SAT definiert die Gruppe von Funktionen, Daten, Antworten usw., welche zu dem unabhängigen Operanden gehören und wird zur Lösung des unabhängigen Operanden benutzt. Das Format der DAT und ihre Interpretation sind
Docket PO 968 036
209839/1044
eine Funktion der Gruppenart, die sie definiert. Im allgemeinen erzeugt die Auflösung des abhängigen Operanden die Adresse einer durch den Kanal zum Aufstellen einer logischen Verbindung mit der Einheit benutzten Einheit, einen durch den Kanal zum Wählen spezieller Warteschlangenoperationen benutzten Klassencode und Konstanten, die sich auf diese WartesSchlangenoperationen beziehen.
Die DAT soll dazu dienen, benutzerorientierte Sammlungen von Funktionen, Einheiten und Daten zu definieren. Mit der DAT kann z. B. eine Sammlung von übertragungsleitungen, ein in bestimmten Bereichen einer Gruppe von Speichereinheiten stehender Datensatz oder eine Gruppe von Antworten von einer Prozeßüberwachungsanlage definiert werden. Dementsprechend soll mit dem abhängigen Operanden ein Stück aus der von der DAT definierten Gruppe gewählt werden. Wenn sich die definierte Gruppe auf nur ein Stück bezieht, ist der abhängige Operand unbedeutend. In diesem Fall kann die DAT weggelassen werden. Wenn das der Fall ist, enthält die auf die Gruppe bezogene Eintragung in der IAT die Adresse der Einheit.
Die IAT soll durch ein in der CPU ausgeführtes Überwachungsprogramm vorbereitet werden, welches die Autorität des CPU-Programmes der obigen Beschreibung bestimmte E/A-Einheiten aufrufen läßt. Die IAT ist die prinzipielle Darstellung dieser Autorität: Durch ein gegebenes CPU-Programm eingeleitete Kanalprogramme können nur die Einheiten oder Aktionen aufrufen, die durch die zugehörige IAT verwirklicht werden. Durch diese Einrichtung übernehmen die Kanäle die Rolle von sich gegenseitig schützenden CPU-Programmen und ihren zugehörigen Kanalprogrammen in der dynamischen Benutzung von E/A-Einheiten, eine Funktion, welche vorher in Uberwachungsprogrammen der CPU übertragen war.
Im Zusammenhang mit der DAT und der IAT sind folgende Punkte zu
f.
beachten:
DocKet PO 968 036 J09839,
1. Jede durch die Ausführung eines CPU-Programmes eingeleitete Ausführung eines Kanalprogratnmes mit einer gegebenen Aufgabenbezeichnung ist berechtigt, denselben Satz von Einheiten zu verwenden oder darauf Bezug zu nehmen.
2. Auf eine einzelne DAT kann durch Eintragungen in mehr als einer IAT Bezug genommen werden. So kann z. B. ein Datensatz von mehr als einem CPU-Programm benutzt werden.
3. In ähnlicher Weise kann auf eine DAT Bezug genommen werden durch mehr als eine Eintragung in einer einzelnen IAT.
4. Auf die IAT selbst kann Bezug genommen werden durch mehr als eine Programmausführung einer CPU.
In verschiedenen Interpretationsstufen des Operanden des "Einreihen "-Kommandos kann der Kanal Bezug nehmen auf ungültige Eintragungen in einer IAT oder DAT oder Argumente können Bezug nehmen auf Stellen außerhalb einer dieser Tabellen. In jedem Fall wird die Ausführung des "Einreihen"-Kommandos direkt und erfolglos beendet. Nachfolgende Kommandos können die erfolgreiche oder erfolglose Beendigung des "Einreihen" —Kommandos prüfen. Andererseits kann aber auch die Ausgabe des "Einreihen"-Kommandos ignoriert und ein Kommando zur Einleitung einer E/A-Operation ausgeführt werden. Dieses Kommando wird direkt ohne Bezug auf eine E/A-Einheit beendet, wenn das vorhergehende "Einreihen"—Kommando erfolglos abgeschlossen wurde. Die Ausgabe des "Einreihen"-Kommandos kann dann durch die nachfolgenden Kommandos bestimmt werden.
Jede Einheit kann feststellen, ob eine E/A-Operation eingeleitet werden kann. In einigen Einheiten ändern sich die Kriterien für die Bestimmung der Möglichkeit, eine Operation einzuleiten, mit der Operationsart und den jeweiligen Möglichkeiten der in der Operation gebrauchten Einheit. Solche Einheiten können so ausgelegt sein, daß sie Statuscodes und Antwortcodes vom Kanal
Docket PO 968 O36 2 0 9 8 3 9/1044
empfangen. Die Verwendung dieser Codes erleichtert die Planeinteilung von Kanalprogrammen, die um die Benutzung einer Einheit konkurieren.
Ein Statuscode ist eine Reihe von Bytes, die durch den Kanal vor der Einleitung einer E/A-Operation an eine Einheit übertragen werden. Der Statuscode stellt den Satz von Bedingungen in der Einheit dar, die für die Einleitung einer bestimmten Operation Voraussetzung sind. Die Übertragung eines Statuscodes an eine Einheit fordert diese zur Abgabe eines Signales auf, wenn die zu dem Statuscode gehörenden Bedingungen in der Einheit erfüllt sind.
Einheiten können für den Empfang und die Festhaltung von mehr als einem Statuscode ausgelegt sein. Bei diesen Einheiten wird der an die Einheit übertragene Statuscode begleitet von einem Antwortcode. Wenn die zu einem der in der Einheit registrierten Statuscodes gehörenden Bedingungen erfüllt sind, antwortet die Einheit durch Abgabe des entsprechenden Antwortcodes an den Kanal. Mehrere Statuscodes können von einem oder identischen Antwortcode begleitet sein und legen so mehr als eine Bedingung für die Wiederaufnahme eines Kanalprogrammes fest.
Zu jeder Einheit gehört eine Einheitenwarteschlange. Einheitenwarteschlangen sind verkettete Listen von CCBs, die Kanalprogramme darstellen, welche eine Einheit entweder benutzen oder deren Benutzung erwarten. Einheitenwarteschlangen können aus einer Kette von CCBs oder mehreren Ketten bestehen, sog. Unterwarteschlangen, abhängig von der Charakteristik der jeweiligen Einheit.
Einheiten, die keine Antwortcodes verwenden oder nicht mehr als einen Statuscode empfangen und halten können, haben Einheitenwarteschlangen, die aus einer verketteten Liste bestehen. Das oberste CCB in dieser Liste bezieht sich auf ein Kanalprogramm, welches entweder eine Antwort von der Einheit erwartet oder auf einem Kanal ausgeführt wird, der logisch mit dieser Einheit ver-
Docket PO 968 036 2 0 9 8 3 9 / 1 0 A A
knüpft ist. Die übrigen CCBs in der Liste gehören zu Kanalprogrammen, von denen jedes die Einheit erst benutzen kann, wenn sein Vorgänger die Einheit benutzt hat.
Einheiten, die mehrere Antwortcodes empfangen, haben Einheitenwarteschlangen, die aus mehr als einer verketteten Liste bestehen. Die Anzahl der bei einer solchen Einheit benutzten Unterwarteschlangen ist der Höchstwert des für diese Einheit definierten Antwortcodes. Der an der Spitze einer solchen Unterwarteschlange verkettete CCB stellt ein ausführendes Kanalprogramm oder ein Kanalprogramm dar, welches die Antwort von der Einheit entsprechend der Unterwarteschlange erwartet. Die Bedeutung zusätzlicher CCBs in einer Unterwarteschlange ist eine Funktion der zur Einheit gehörenden Warteschlangendisziplin.
Nach Entwicklung der Adresse einer Einheit während der Auflösung der Operanden eines wEinreihen"-Kommandos benutzt der Kanal die Einheitenadresse zur Wahl eines Einganges von der Einheitentabelle (DT) (Fig. 5). Der Inhalt einer gewählten Eintragung bestimmt die Signalreihenfolge, die durch den Kanal/Umsetzer zur Steuerung der Einheit benutzt wird und die mit der Einheit benutzte Warteschlangendisziplin.
Die DT enthält nur eine Eintragung für jede an das System angeschlossene Einheit. Außerdem enthält die DT eine Eintragung für jede Steuereinheit, die als separate Einheit während der Diagnoseoperationen fungieren kann und eine Eintragung für jeden Satz von zwei oder mehr Steuereinheiten, die Zugriff zu einer gemeinsamen Einheit haben. Der grundsätzliche Inhalt der Eintragungen der DT sind folgende (siehe Fig. 5):
1. Ein Einheitencode D bezeichnet die spezifische Einheitenart, zu welcher die Eintragung gehört;
2. abhängig von dieser Einheitenart entweder der Ursprung der Einheitenwarteschlange 27 oder die Adresse 28 der Tabelle von Unterwarteschlangen 29, die zur Einheit
Docket PO 968 036 2 0 9 8 3 9 / 10 4 4
gehören;
3. einen Code (C.U.-Adresse), welcher die Steuereinheit oder den Satz von Steuereinheiten bezeichnet, die die Einheit adressieren können und
4. einen Code (LCH #) , welcher die Kanalwarteschlange bezeichnet, welche sich auf den Kanalsatz bezieht, der Zugriff zur Einheit hat.
Zum Wählen einer Eintragung aus der DT multipliziert der Kanal die Einheitenadresse mit 8, addiert das Ergebnis zur festen Adresse der DT und holt mit dem Endergebnis ein Doppelwort aus dem Hauptspeicher. Der Einheitencode aus der Eintragung, der zusammen mit dem Klassencode und Konstanten herausgezogen wird, die man aus der DAT erhält, bestimmen die zu verfolgenden Warteschlangenoperationen.
Wenn der Einheitencode eine Einheit beschreibt, deren Einheitenwarteschlange aus einer einzelnen verketteten Liste besteht, wird der zu dem Kanalprogramm gehörende CCB unmittelbar in die Einheitenwarteschlange eingesetzt. Wenn die resultierende Warteschlange mehrere CCBs enthält, wird die Ausführung des Kanalprogrammes ausgesetzt und der Kanal freigegeben. Wenn die Einheitenwarteschlange nur das gerade eingesetzte CCB enthält, wird folgende Reihenfolge verfolgt:
1. Mit den aus der DAT erhaltenden Konstanten bestimmt der Kanal einen Statuscode, wenn ein solcher mit dieser Einheit zu benutzen ist. Die Bestimmung des Statuscodes folgt einem zu dem aus der DAT gezogenen Klassencode gehörigen Algorithmus.
2. Der Kanal stellt eine logische Verbindung zwischen sich selbst und der Einheit her. Zu diesem Zweck gibt er die Adresse der geforderten Einheit an alle Steuereinheiten, die an den Kanal über seine E/A-Anschlußstelle angeschlossen sind. Jede Steuereinheit vergleicht diese Adresse mit festen Adressen der züge-
Docket PO 968 036 209839/1OU
hörigen angeschlossenen Einheiten. Die Steuereinheit, die zu der Einheit gehört, deren feste Adresse mit der vom Kanal gegebenen Adresse übereinstimmt, gibt ein Signal an den Kanal zurück, welches die Übereinstimmmung und die entsprechende Wahl der Einheit bezeichnet und dadurch die logische Verbindung herstellt. Andere Steuereinheiten ignorieren die Information auf der E/A-Schnittstelle, bis die logische Verbindung unterbrochen wurde.
3. Der Kanal gibt einen Befehl und ggf. den Statuscode an die Einheit (über die Steuereinheit). Der Befehl fordert von der Einheit die Rückgabe eines Statusberichtes an den Kanal, welcher anzeigt, ob die zu dem Statuscode gehörenden Bedingungen in der Einheit erfüllt sind oder nicht.
4. Wenn der Statusbericht von der Einheit negativ ist, wird die logische Verbindung zwischen dem Kanal und der Einheit wieder unterbrochen. Anschließend wird die Ausführung des Kanalprogrammes ausgesetzt und der Kanal freigegeben.
5. Wenn die Antwort von der Einheit positiv ist, wird das "Einreihen"-Kommando beendet und äas nächste Kommando geholt und durch den Kanal decodiert. Die Einheit bleibt logisch mit dem Kanal verknüpft? alle E/AOperationen können durch das Kanalprogramm eingeleitet werden unter der Voraussetzung, daß die zu dem Statuscode gehörenden Bedingungen die einzigen Voraussetzungen für die Einleitting der Operation sind.
Wenn der aus der DT erhaltene Einheitencode eine Einheit mit einer Einheitenwarteschlange beschreibt, die aus raehrerea ünterwarteschlangen besteht, ändern sich die vom Kanal unternommenen Schritte entsprechend der Warteschlangenäisziplin, Die folgende Reihenfolge ist jedoch typisch für die Dissiplineri, Sie zeigt die meisten vom Kanal ausgeführten Funktionen? die für die Benutzung von Un-
Docket PO 968 036 209839/1044
- 24 terwarteschlangen spezifisch sind.
1. Mit den aus der DAT erhaltenen Konstanten bestimmt der Kanal einen zugehörigen Antwortcode.
2. Die zum Antwortcode gehörende Unterwarteschlange wird durch Multiplikation des Antwortcodes mit 4 und Addition des Ergebnisses zur Adresse der Tabelle von Unterwarteschlangen, die man aus der DT erhielt, festgelegt.
3. Der zum Kanalprogramm gehörende CCB wird mit dem Ende der Unterwarteschlange verbunden.
Wenn die resultierende Warteschlange mehrere CCBs enthält, wird die Ausführung des Kanalprogrammes ausgesetzt und der Kanal freigegeben. Sonst stellt der Kanal dann eine logische Verbindung mit der Einheit her. Dabei gibt der Kanal den Antwortcode zusätzlich zum Befehl und dem Statuscode an die Einheit.
Wenn ein Kanal einen Statusbericht von einer Einheit anfordert und dieser negativ ist, muß die Einheit dem System eine Mitteilung machen, wenn die zu dem Bericht gehörenden Bedingungen in ihr erfüllt sind. Zu diesem Zweck muß jede an die Einheit angeschlossene freie Steuereinheit die entsprechende E/A-Schnittstelle überwachen, um festzustellen, wann der zugehörige Kanal frei ist. Wenn mindestens ein solcher Kanal zu einem Zeitpunkt frei ist, in welchem die Bedingungen in der Einheit erfüllt sind, kann eine Steuereinheit eine logische Verbindung mit der Einheit und einem Kanal herstellen. Danach muß die Steuereinheit die Adresse der Einheit, einen positiven Statusbericht und ein Antwortcode an den Kanal geben.
Mit der Einheitenadresse ermittelt der Kanal dann die Lage der Eintragung in der DT, die zu der Einheit gehört. Wenn ein Antwortcode abgegeben wurde, nimmt der Kanal die Ausführung des Kanalprogrammes, welches zu dem CCB oben an der Unterwarteschlan-
Docket PO 968 036
209 8 39/ 1OAA
ge gehört, die sich auf den Antwortcode bezieht, wieder auf. Sonst wird die Ausführung des Kanalprogrammes wieder aufgenommen, welches zum ersten CCB in der einzigen Einheitenwarteschlange gehört. Die Ausführung des Kanalprogrammes läuft von diesem Punkt weiter, als ob das Kanalprogramm ursprünglich nicht ausgesetzt worden wäre.
Die Register 12 bis 15 des CCB (Fig. 3) werden durch den Kanal während der Einreihen-Operation benutzt. Diese Register halten direkte Ergebnisse fest, die vom Kanal während der Stufen dieser Operation benötigt werden. Während der Kanal die IAT untersucht, wird die Autorität des Kanalprogrammes zum Lesen, Schreiben, usw. festgehalten. In ähnlicher Weise kann der Kanal während der Benutzung der DAT und der Einheitentabelle einen Statuscode und Konstanten festlegen, die später zur Beschränkung der Benutzung einer Einheit durch ein Kanalprogramm während einer nachfolgenden E/A-Operation benötigt werden. Eine solche Information wird im CCB während der Einreihen-Operation festgehalten und während der Interpretation von E/A-Kommandos untersucht. Durch Unterdrückung von E/A-Operationen, die durch das Kommando "Einreihen" nicht aufgerufen wurden, wird das System gegen falsche oder fehlerhafte Aktionen des Kanalprogrammes geschützt.
Bei dem Versuch, eine logische Verbindung mit einer Einheit herzustellen, um einen Statusbericht anzufordern, kann der Kanal die zugehörige Steuereinheit belegt vorfinden. Eine Betriebssteuereinheit ist für einen Kanal belegt, wenn sie nicht in der Lage ist, Befehle irgendwelcher Art zu interpretieren, die ihr vom Kanal gegeben werden. Auf den Betrieb mit nur einer Einheit ausgelegte Steuereinheiten kehren grundsätzlich in den Belegungszustand relativ zum Kanal während aller Teile einer E/AOperation zurück, die zwar die Steuereinheit aber nicht den Kanal betreffen.
Belegte Steuereinheiten können die Adressen aller angeschlossenen Einheiten erkennen. Wenn die Adresse einer angeschlossenen Ein-
JDbcket PO 968 036 2 0 9 8 3 9 / 1 0 4 4
heit an eine belegte Steuereinheit gegeben wird, antwortet sie direkt mit einem Statusbericht, der ihren Belegungszustand anzeigt.
Wenn ein Kanal bei einer Einreihen-Operation auf eine belegte Steuereinheit trifft, nimmt er den CCB von der Einheitenwarteschlange und setzt ihn an die Spitze der Steuereinheitenwarteschlange für die zugehörige Einheit. Die Steuereinheitenwarteschlange wird durch den Code 30 (Fig. 5) lokalisiert, der in der DT-Eintragung für die Einheit gefunden wurde und die Steuereinheit oder den Satz von Steuereinheiten angibt, die Zugriff zu der gewünschten Einheit haben. Diese Code hat das Format einer Einheitenadresse und bezeichnet eine Eintragung der DT. Das Einheitenwarteschlangenfeld dieser Eintrag dient als Ursprung einer Steuereinheitenwarteschlange. Nachdem der CCB in die Steuereinheitenwarteschlange gesetzt wurde, wird die Ausführung des Kanalprogrammes ausgesetzt und der Kanal freigegeben.
Eine Steuereinheit, welche dem Kanal eine Belegungsnachricht gegeben hat, muß das System davon unterrichten, wenn sie nicht mehr belegt ist. Zu diesem Zweck muß die Steuereinheit ihre E/A-Anschlußeinheit (oder Einheiten) beobachten, um festzustellen, wenn der zugehörige Kanal frei ist. Wenn ein Kanal frei wird, kann die Steuereinheit eine logische Verbindung mit dem Kanal herstellen und die Adresse einer angeschlossenen Einheit zusammen mit einem Statusbericht abgeben, der anzeigt^ daß die Steuereinheit nicht mehr belegt ist.
Der Kanal ermittelt dann die Eintragung in der DT, welche der durch die Steuereinheit abgegebenen Einheitenadresse entspricht. Mit dem Inhalt dieser Eintragung wird die Eintragung der DT lokalisiert, welche der Steuereinheit entspricht. Schließlich zieht der Kanal einen CCB aus der Steuereinheitenwarteschlange, setzt ihn an die Spitze der Einheitenwarteschlange oder -unterwarteschlange und nimmt die Einreihen-Operation wieder auf. Während dieser Operationsfolge bleibt die Steuereinheit logisch mit
Docket PO 968 036 209839/
dem Kanal verbunden.
Zu einem Satz von zwei oder mehr Steuereinheiten gehörende Steuereinheiten mit Zugriff zu einer gemeinsamen E/A-Einheit arbeiten insofern zusammen, als sie dem System mitteilen, wenn eine Steuereinheit nicht mehr belegt ist. Wenn eine andere Steuereinheit in diesem Satz dem Kanal eine Belegungsantwort gegeben hat, muß die erste nicht belegte Einheit, die einen freien Kanal aufnehmen kann, diese Bedingung melden.
Wenn eine Steuereinheit einem Kanal eine Belegungsantwort gegeben hat, braucht dieser keinen anderen Weg zu einer E/A-Einheit zu suchen. Wenn ein anderer Weg zu dieser E/A-Einheit existiert, der einen freien Kanal und eine nicht belegte Steuereinheit betrifft, nimmt diese Steuereinheit den freien Kanal auf. Somit wird die Ausführung des Kanalprogrammes an den zuletztgenannten Kanal über die Steuereinheitenwarteschlange übertragen. Um sicherzustellen, daß der zuletztgenannte Kanal die Steuereinheitenwarteschlange erst untersucht, wenn der CCB in die Warteschlange gesetzt ist, hält der an die belegte Steuereinheit angeschlossene Kanal die logische Verbindung mit dieser Steuereinheit aufrecht, bis der CCB in die Steuereinheitenwarteschlange gesetzt und diese Warteschlange entriegelt wurde; die andere Steuereinheit nimmt einen Kanal erst auf, wenn die belegte Steuereinheit abgewählt wurde.
Steuereinheitenwarteschlangen sind nicht erforderlich für Steuereinheiten, die nur mit einer E/A-Einheit in Verbindung stehen unter der Voraussetzung, daß diese Einheit keine Antwortcodes benutzt. Die DT-Eintragung für eine zu einer derartigen Steuereinheit gehörende E/A-Einheit enthält die Adresse der Einheit selbst im Codefeld, welches die Steuereinheit bezeichnet. Somit dient die Einheitenwarteschlange als Steuereinheitenwarteschlange für diese Einheit.
Jeder Umsetzer/Kanal kann die Ausführung des Einreihen-Kommandos Docket PO 968 O36 209839/ 1GU
beginnen. Die Einreihen-Operation kann jedoch nur von Kanälen beendet werden, die elektrisch mit einer Einheit verbunden sind, wenn die logische Verbindung mit der Einheit gefordert wird (d. h. sobald ein CCB in eine leere Einheitenwarteschlange oder -unterwarteschlange gesetzt wird). (Es ist zu beachten, daß nach der Darstellung in Fig. 2 in komplexeren Systemen eine Steuereinheit Zugriff zu einer Einheit haben kann oder nicht.) Wenn die Verbindung mit einer Einheit also gefordert wird, muß der Kanal feststellen, ob er die Einheit adressieren kann oder nicht. Kann er das nicht, muß die Einreihen-Operation an einen Kanal übertragen werden, der die Einheit adressieren kann. Diese Funktionen werden mit Hilfe einer Tabelle von Kanalwarteschlangen ausgeführt und einer Wortliste, die die Benutzung der Wartechlangen steuern.
Eine Kanalwarteschlange ist definiert für jeden Höchstsatz von Kanälen, die Zugriff zu genau demselben Satz von Einheiten haben. In einer Konfiguration, die z. B. aus zwei Kanälen besteht, von denen einer Zugriff zu zwei Einheiten und der andere Zugriff zu einer dieser beiden Einheiten hat, sind zwei Kanalwarteschlangen definiert.
Die Ursprünge der Kanalwarteschlangen sind in einer Tabelle im Speicher an einer festep Stelle angeordnet (Fig. 4).
Um ein Verzeichnis des Inhaltes der Kanalwarteschlangen aufrechtzuerhalten, wird ein einziges Wort, das Kanalwarteschlangensteuerwort, benutzt. Dieses Wort folgt der Tabelle von Kanalwarteschlangenursprüngen. Der Bitwert des Warteschlangensteuerwortes gibt an, ob die entsprechenden Kanalwarteschlangen leer sind oder CCBs enthalten. Eine 1 in der η-ten Position des Warteschlangensteuerwortes besagt, daß die n-te Kanalwarteschlange aus einer Kette von CCBs besteht; eine O in dieser Position besagt, daß die n-te Warteschlange leer ist. Sobald ein Kanal einen CCB in eine leere Kanalwarteschlange eingibt, setzt er das entsprechende Bit des Warteschlangensteuerwortes auf 1. Wenn ein Kanal eine Warteschlange im Laufe des Auszuges eines CCB aus der Warteschlange leer macht,
Docket PO 968 036 209839/1 OU
wird das entsprechende Bit gelöscht oder auf O gesetzt. Die CPU setzt das erste Bit des Warteschlangensteuerwortes auf 1, wenn ein CCB der Kanalarbeitswarteschlange hinzugefügt wird während der Ausführung der Instruktion "Kanal anfordern".
Eine Tabelle von Kanalmaskenworten, die dem Warteschlangensteuerwort folgt, beschreibt die Beziehung zwischen den Kanälen und den Kanalwarteschlangen, die für Kanäle definiert sind. Zu jedem Kanal gehört ein Kanalmaskenwort. Die Bits im Maskenwort legen fest, ob die entsprechenden Kanalwarteschlangen für den Kanal von Bedeutung sind. Eine 1 im η-ten Bit eines Maskenwortes besagt, daß die n-te Kanalwarteschlange zu dem Kanal gehört.
Sobald die Ausführung des Kommandos "Einreihen" eine logische Verbindung mit einer Einheit fordert, stellt der Kanal fest, ob die Einheit für ihn adressierbar ist. Zu diesem Zweck holt der Kanal den Code 31 (Fig. 5), der die zu der Einheit gehörende Kanalwarteschlange bestimmt, aus der DT-Eintragung für diese Einheit. Der Kanal untersucht dann das Bit seines Maskenwortes, welches durch den Kanalwarteschlangencode angegeben ist. Wenn das Bit 1 ist, ist der Kanal mit der Kanalwarteschlange verbunden. Somit ist die Einheit adressierbar und die Einreihen-Operation wird auf einen anderen Kanal übertragen. Zu diesem Zweck fügt der Kanal den CCB an das untere Ende der Kanalwarteschlange an, die durch den Kanalwarteschlangencode bezeichnet ist, und wenn die Warteschlange vorher leer war, gibt er ein Signal an die Kanäle. Es wird der Kanal freigegeben, welcher über den CCB verfügte.
Sobald ein Kanal freigegeben ist oder ein Signal von einem anderen Kanal oder einer CPU erhält, holt er sowohl sein Kanalmaskenwort als auch das Warteschlangensteuerwort. Die Warteschlange entwickelt dann das bitweise Produkt dieser beiden Wörter. Die resultierenden Einerbits entsprechen Kanalwarteschlangen, welche die CCBs enthalten, die sich sowohl auf die für den Kanal adressierbaren Einheiten als auch auf die innerhalb einer Einreihen-
Docket PO 968 036 209839/1044
Operation ausgesetzten Kanalprogramme beziehen. Das werthohe Bit entspricht einer nicht geleerten Kanalarbeitswarteschlange. Nach Feststellung der aktiven Warteschlangen nimmt der Kanal einen CCB aus der zu dem letzten Wert darstellenden Einerbit gehörenden Warteschlange. Die Ausführung des entsprechenden Kanalprogrammes wird dann durch den Kanal aufgenommen.
Eingabe/Ausgabe-Operationen können durch Kanalprogramme nach dem erfolgreichen Abschluß der Einreihen-Operation eingeleitet werden. Kommandos, welche den Kanal zur Einleitung von E/AOperationen veranlassen, geben die Richtung der Datenübertragung an, einen zur Anweisung der Einheit benutzten Befehl und zwei Register des CCBs, die eine Spezifikation der Höchstzahl von zwischen der Einheit und dem Hauptspeicher zu übertragenden Bytes enthalten, sowie die Adresse des ersten Bytes des Bereiches im Hauptspeicher, der von der Operation betroffen ist.
Um eine E/A-Operation einzuleiten, setzt der Kanal die Ausführung des Kanalprogrammes aus und gibt einen die Operation betreffenden Befehl an die Einheit. Der Befehl bereitet die Einheit zum Senden oder Empfang von Daten vor und leitet eine mechanische Operation ein, die zur E/A-Operation gehört. Der Kanal bereitet sich selbst dann entsprechend zum Empfang oder Senden von Informationen zu oder vom Hauptspeicher vor. Mit iedem übertragenen Byte zählt der Kanal logisch das Register herunter, welches die Höchstzahl von zu bearbeitenden Bytes enthält. Die Übertragung wird gestoppt, wenn entweder diese Zahl auf O reduziert ist, oder die Einheit dem Kanal durch Signale anzeigt, daß die Übertragung abgeschlossen ist, oder die in den CCB-Registern 12 bis 15 enthaltenen Informationen besagen, daß nur eine kleinere Anzahl von Bytes übertragen werden kann. Mit jeder Gruppe von Bytes, deren Anzahl gleich der Größe des Hauptspeichers ist, nimmt der Kanal Bezug auf den Hauptspeicher an der Stelle, die durch das Register angegeben ist, welche die Hauptspeicheradresse enthält. Das Register wird dann entsprechend erhöht. Beim Abschluß der Übertragung enthält das Register entsprechend die An-
Docket PO 968 036 209839/m4
zahl der übertragenen Bytes, die kleiner ist als das Maximum und die Adresse des Bytes im Hauptspeicher, das unmittelbar rechts von dem letzten übertragenen Byte steht. Schreiboperationen beeinflussen den Inhalt des Hauptspeichers nicht. Leseoperationen ändern nur die Stellen im Hauptspeicher, die den an den Kanal von der Einheit übertragenen Bytes entsprechen.
Nachdem die Datenübertragung abgeschlossen ist, gibt die Einheit einen Statusbericht an den Kanal. Wenn die Einheit Fehlerbedingungen angezeigt hat, gibt der Kanal einen Befehl an die Einheit, der diese dazu veranlaßt, mit einer genauen Beschreibung des Fehlers zu antworten. Diese Information.wird in die Register 13 bis 15 des CCBs zur Abfrage durch das Kanalprogramm gesetzt. Die Ausführung des Kanalprogrammes wird dann fortgesetzt.
Die CPU wird normalerweise durch einen Kanal nur unterbrochen infolge der Ausführung eines Ablauf—Kommandos, welches Teil des Kanalprogrammes ist. Dieses Kommando setzt einen Eingang in die Unterbrechungswarteschlange der CPU fest. Wenn die Priorität der durch das Kommando angegebenen Aufgabenbezeichnung die der gegenwärtig von der CPU ausgeführten Aufgabe überschreitet, was durch ein Register der CPU angezeigt wird, dann wird eine Unterbrechung der CPU eingeleitet.
Wenn die Priorität einer Kanalaufgabe höher ist als die Priorität einer CPU-Aufgabe, dann wird der CPU durch ein Signal die Unterbrechung angezeigt. Wenn die Priorität niedriger ist, wird eine Eintragung in die Unterbrechungsschlange gesetzt, ohne daß die CPU ein Signal erhält. Wenn die Eintragung einmal in die Warteschlange gesetzt ist, ist der Kanal in beiden Fällen frei, um ohne weitere Schritte in bezug auf die Unterbrechung weiterzumachen. In herkömmlichen Systemen wird auf Prioritätsbasis noch entschieden, ob sofort unterbrochen werden soll oder die Unterbrechung zu verschieben ist, bis die Aufgaben mit höherer Priorität abgeschlossen sind. Nach der vorliegenden Erfindung wird jedoch auf sofortige Unterbrechung entschieden, wenn die Prio-
Docket PO 968 O36
209839/1044
rität der E/A-Aufgabe höher ist als die der gegenwärtig von der CPU ausgeführten Aufgabe. Ist die Priorität niedriger, wird die Aufgabe in die Unterbrechungswarteschlange gesetzt und der Kanal unterbricht die CPU niemals. Stattdessen fragt die CPU nach Beendigung der Aufgabe mit höherer Priorität die Unterbrechungswarteschlange ab, um die nächste Aufgabe für die Ausführung herauszufinden, ohne daß ein Prioritäts-Maschinenbauteil auf eine Quellenanlage zurückführt, die Unterbrechungsinformation hält.
Die Unterbrechungswarteschlange ist in Fig. 6 gezeigt, die Warteschlange ist eine Tabelle mit fester Länge, welche von einem Steuerwort angeführt wird.
Felder des Steuerwortes bezeichnen die Länge 36 der Warteschlange, den Eingabeeingang 37 der Tabelle, wo ein Kanal der Warteschlange etwas eingeben kann, und den Ausgabeeingang 38 der Tabelle, der möglicherweise eine Eintragung enthält, die vorher darstellungsgemäß durch einen Kanal angehängt wurde. Um eine Eintragung in die Unterbrechungswarteschlange einzuschieben, holt der Kanal das Steuerwort und verriegelt es. Das Eingabefeld 37 und das Ausgabefeld 38 werden verglichen. Wenn sie gleich sind, ist die Warteschlange voll. Wenn diese Felder verschieden sind, setzt der Kanal eine Eintragung ah die durch das Eingabefeld angegebene Stelle. Dieses Feld wird, dann um 1 erhöht und mit dem Längenfeld 36 verglichen. Wenn diese Felder gleich sind, wird das Eingabefeld zurückgestellt. Das Steuerwort wird dann in seinem fortgeschriebenen Zustand gespeichert und entriegelt.
Die aus dem Ablauf-Kommando resultierenden Eingänge 33 lokalisieren einen Steuerblock ECB.
Die Unterbrechung der CPU wird auch eingeleitet während der Ausführung des Ablauf-Kommandos, wenn kein weiterer Eingang in die Unterbrechungswarteschlange für den Kanal zur Verfügung steht. In diesem Fall wird die Ausführung des Kana!programmes ausgesetzt,
Docket PO 968 036 209839/1CUA
bis ein Eingang in der Unterbrechungswarteschlange durch die CPU zur Verfügung gestellt wird.
Eine Unterbrechung der CPU resultiert immer aus einem Kanalprogrammfehler. Der in die Unterbrechungswarteschlange vorgenommene Eingang 35 bezeichnet den dem Anbieter entsprechenden. CCB.
Vom Standpunkt des Programmierers aus sind auf zyklischen Speichereinheiten aufgezeichnete Informationen logisch in verschiedene Datensätze organisiert. Jedei Datensatz kann als ein Byteraum bezeichnet werden, d. h. eine Spanne von Byteadressen (ganzzahlige relative Adressen), die von O bis zu irgendeinem Maximum reichen, welches durch die Größe des Datensatzes bestimmt ist. Verzeichnisse, Aufzeichnungen, Felder, usw., welche von logischer Bedeutung für den Programmierer sind, werden durch Bytereihen in Datensätzen dargestellt, wobei eine gegebene Bytereihe eindeutig bestimmt ist durch drei Größen (Datensatz, relative Adresse, Reihenlänge). Die ersten dieser beiden Komponenten umfassen die logische Adresse der Daten, die so genannt wird zum Unterschied von einer physikalischen Adresse, die zur Bezeichnung einer Speichereinheit und der physikalischen Lage im Speicher dient.
In zyklischen Speichereinheiten aufgezeichnete Daten sind physikalisch in Spuren organisiert, von denen jede eine ganze Zahl von 256 Bytes periodisch adressierbarer Blocks enthält. Abhängig von der spezifischen Einheitentype können auch höhere Organisationseinheiten, wie Zylinder oder Bände, benutzt werden.
Ein bestimmter Datenblock kann physikalisch durch eine physikalische Adresse lokalisiert werden, die die vier Teile umfaßt (Einheitenadresse, mechanische Lage, elektrische Lage, Rotationslage) . Hier gibt die Einheitenadresse eine bestimmte Einheit an, auf welcher der Block liegt, und zwar durch eine oder mehrere der drei Lagekomponenten. Die mechanische Position gibt die gesamte nicht periodische wichtige Betätigung an, die zur Adres-
Docket PO 968 036 2 0 9 8 3 9 / 1 0 A A
sierung des Blocks erforderlich ist (wie ζ. Β. die Betätigung des Zugriffsmechanismus oder die Einstellung des Kopfes bei Plattendateien mit beweglichem Kopf). Die elektrische Position gibt die gesamte elektrische Wahl, wie z. B. die Kopfwahl bei Plattendateien oder die Ringwahl elektronischer Speicher an. Die Parameter der mechanischen und elektrischen Wahl geben zusammen eine Spur der Einheiten an. Ein bestimmter Block innerhalb öiner Spur wird lokalisiert durch die Rotationslage.
Im vorliegenden Beispiel betrachten wir nur die Einheiten, bei denen alle Spuren einer gegebenen Einheit dieselbe ganze Blockzahl haben und alle mechanischen Positionen einer gegebenen Einheit dieselbe ganze Zahl elektrischer Positionen haben. Durch eine geeignete Adreßdecodierung in Speicheranlagen oder ihren Steuereinheiten können den aufeinanderfolgenden Positionen, die zu jeder der drei Positionskomponenten der physikalischen Adresse gehören, die Zahl O, 1, 2, usw. zugeordnet werden. Ist diese Zuordnung gegeben, so können die drei Positionskomponenten zusammen als eine gemischte Wurzel-Integraladresse betrachtet werden, deren aufeinanderfolgende Werte aufeinanderfolgende Blocks einer Einheit bezeichnen. Somit muß der erste Block einer Einheit (d. h. der Block mit den Positionskomponenten 0, 0, 0) und eine Folge von aufeinanderfolgenden Blocks besprochen werden, die Spuren, Zylinder usw. umfassen.
Die Lage des Satzes logischer Adressen, die durch den Programmierer angegeben sind, zum Satz der physikalischen Adressen, die die Lage der logisch adressierten Daten beschreiben, ist in der abhängigen und der unabhängigen Argumententabelle wiedergegeben. Die zwei Komponenten einer logischen Adresse (Datensatz, relative Adresse) werden während der Ausführung eines Kanalprogrammes als abhängige bzw. unabhängige Argumente des Einreihen-Kommandos vor einer zugehörigen Lese- oder Schreiboperation gegeben.
Bei der Benutzung mit zylindrischen Speichereinheiten stellt die DAT das Lageverzeichnis eines gegebenen Datensatzes auf dem phy-
Docket PO 968 036 209839/1044
sikalischen Lageplatz dar, der durch die Konfiguration der Speichereinheiten gegeben ist. In diesen Fällen, wo ein Datensatz in einer einzelnen Folge von aufeinanderfolgenden Blocks auf einer Einheit enthalten sein kann, besteht die DAT ans einer Eintragung. Diese Eintragung definiert den Umfang der relativen Adreßkoraponente der logischen Adresse (d. h. den maximal definierten Wert des abhängigen Argumentes), wobei die Einheit den Datensatz, die Adresse des Anfangsblocks und die Wurzeln der Blockadressenkomponente enthält, die dieser Einheit entsprechen. Mit dieser Information kann der Kanal die physikalische Adresse bestimmen, die einer gegebenen relativen Adresse entspricht, mit Hilfe der gemischten Wurzelarithmetik.
Allgemeiner gesagt, kann der Byteraum eines Datensatzes unterteilt werden in eine Anzahl von Segmenten, von denen jedes einem anderen Speicherelement angepaßt wird. Die Entsprechung zwischen logischen und physikalischen Adressen wird dann dargestellt durch e"ne DAT mit mehreren Eintragungen, von denen eine für jedes Segment des Datensatzes gilt.
Figo 7 zeigt einen Datensatz mit einem Umfang von 130 Blocks von je 256 Bytes, dessen Byteraum in drei Bereiche 3340 und 41 unterteilt wurde. Außerdem ist das Lageverzeieimis dieser Bereiche in entsprechenden Bereichen 42, 43 unci 44 zweier Speichereinheiten gezeigt. Es ist zu beachten, daß äer Adreßraum der Einheiten sowie das Lageverzeichnis zwischen den beiden nur in Blocks definiert ist, wogegen der Adreßraum des Datensatzes in Bytes definiert ist. über den Zahlenzeilen, die die Adreßräume der Einheiten angeben, sind Blockzahlen auf Zehnerbasis dargestellt. Unter den Zahlenzeilen sind die Anfangsblockzahlen eines jeden Bereiches in gemischter Wurzelform dargestellt. Hier wird angenommen, daß die Einheit 16 Blocks pro Spur und 10 elektrische Positionen pro mechanischer Position hat. Somit entspricht der Block 1000· der mechanischen Position 6, der elektrischen Position 2 und der Rotationspositics 8? ö. h. äie Zahl 1000 ist in der Basis dargestellt, ir. 1O1, lö) , worin r eine hinrei-
Docket PO 968 O36 209839/1Ü44
chend große ganze Zahl ist. Die Einheit 4 wird mit 32 Rotationsund 64 elektrischen Positionen und nur einer mechanischen Position angenommen.
Fig. 8 zeigt den Inhalt der DAT, der das Lageverzeichnis der Fig. 7 enthält. Die ersten, zweiten und dritten Eintragungen (Spalten) der DAT betreffen die Bereiche 39, 40 und 41 des Byteraumes. Die erste Eintragung definiert z. B. den Satz physikalischer Adressen, der sich auf die ersten 28 Blocks des Byteraumes, definiert durch das Feld 46, bezieht. Diese Blocks liegen auf der Einheit 6 gemäß Definition durch Feld 47 und beginnen .nit dem Block 1938 dieser Einheit (siehe Feld 48) . Die Positionskomponenten dieser Blocks werden mit Hilfe der elektrischen und Rotationspositionswurzeln 49 berechnet. Die zweite Eintragung der DAT definiert in ähnlicher Weise den zweiten Bereich des Byteraumes, d. h. die 54 Blocks mit den Zahlen 28, 29, ... 81, wobei diese Blockzahlen niedriger als 82 numeriert und nicht durch die erste Eintragung definiert sind. Die IAT-Eintragung 50 besagt, daß die DAT nur drei Eintragungen hat und somit bedeutet die dritte DAT-Eintragung, daß das Ausmaß des Bytesraumes 130 Blocks beträgt.
Bei Anwendung auf zyklische Speichereinheiten funktioniert das Einreihen-Kommando so, daß die Ausführung eines Kanalprogrammes während der Latenzperiode der betroffenen Speichereinheit ausgesetzt wird. Diese Periode reicht von der Zeit, an welcher der Einheit die Einnahme einer vorgeschriebenen mechanischen Position befohlen wird, bis zu der Zeit, an welcher die Rotationsposition der Einheit einem gewünschten Block entspricht. Die Aussetzung des Kanalprogrammes und die resultierende Kanal-Multiprogrammierung erfolgt durch koordinierte Warteschlangenoperationen im Kanal und in der Einheit.
Relativ zur Art der benutzten Warteschlangenoperationen werden zwei Klassen von Speichereinheiten in diesem Beispiel betrachtet.
Docket PO 968 036 209839/1044
-37- 4209282
1. Einheiten, wie ζ. B. Plattendateien mit beweglichem
Kopf, die mehrere mechanische Positionen aufweisen
und meistens einen herausragenden Statuscode empfangen und keine Antwortcodes verwenden.
2. Einheiten, wie Dateien mit festem Kopf, die eine mechanische Position haben, jedoch einen Statuscode und einen Antwortcode für jede Rotationsposition der Einheit empfangen, wobei die Werte dieser Codes einfach die entsprechenden Rotationspositionszahlen sind.
Einheiten der ersten Klasse werden durch einfache Einheitenwarteschlangen eingeplant, wogegen Einheiten der zweiten Klasse mehrere Unterwarteschlangen für jede Einheit verwenden. So ist eine Kanal-Multiprogrammierung relativ für eine einzelne Einheit nur bei Einheiten der zweiten Klasse möglich.
Ein Beispiel von DAT-Eintragungen für Einheiten einer jeden
Klasse ist in Fig. 8 gegeben. Die erste Eintragung der DAT bezieht sich auf eine Einheit der ersten Klasse (Einheit 6), die 20 mechanische Positionen zeigt (Fig. 7). Die zweite DAT-Eintragung beschreibt eine Einheit der zweiten Klasse (Einheit 4), die die mechanische Positionskomponente der physikalischen Adresse (Fig. 7) nicht benutzt. Das erste Feld 45 der DAT-Eintragungen dient zur Klassifizierung zyklischer Speichereinheiten in die
obigen Klassen.
In jeder Einheitenklasse erfolgt die Warteschlangenbildung durch Rotationsposition in der nachfolgend angegebenen Reihenfolge:
1. Die physikalische Adresse eines vorgeschriebenen
Blockes wird bestimmt aus der logischen Adresse während der Ausführung eines Einreihen-Kommandos.
2. Der zu den Kanalprogrammen gehörende CCB wird in die Einheitenwarteschlange der Einheit eingereiht, die durch die physikalische Adresse (Einheiten der Klasse 1)
Docket PO 968 036 209839/1 OU
angegeben ist oder in eine Einheitenunterwarteschlange, die zu der Einheit und der Rotationsposition gehören, die in der physikalischen Adresse angegeben sind (Einheiten der Klasse 2).
3. Die Einheit wird durch den Kanal gewählt und ggf. Rotationspositionszahl und mechanische Position an die Einheit als Statuscode weitergeleitet. Bei Einheiten der Klasse 2 wird ebenfalls ein der Rotationsposition identischer Antwortcode gesendet.
4. Der Kanal wird freigegeben.
5. Wenn die Einheit die mechanische und die ungefähre Rotationsposition einnimmt, die durch den Statusoode definiert sind, versucht sie einen freien Kanal zu bekommen.
6. Wenn die Einheit keinen Kanal bekommen hat, während die gewünschte Rotationsposition durchläuft, versucht sie es nicht mehr. Die Verbindungsaufnahme eines Kanales wird dann periodisch bis zum Erfolg versucht, unmittelbar bevor die gewünschte Rotationsposition erreicht wird.
7. Die Einheitenadresse und der Antwortcode (Einheiten der Klasse 2) werden an den Kanal weitergeleitet. Diese werden später zur Lokalisierung des zugehörigen CCBs benutzt.
8. Schließlich wird die elektrische Positionskomponente der physikalischen Adresse an die Einheit weitergeleitet und so die volle physikalische Adresse für nachfolgende E/A-Operationen festgelegt.
Das Kanal-Grundprogramm oder das Unterprogramm komplexerer Programme, welches im Zusammenhang mit zyklischen Speichereinheiten benutzt wird, ist in Fig. 11 gezeigt. Das Programm ist eine Schleife, welche aus drei Kommandos besteht, worin die Ausführung eines jeden zum Lesen einer Reihe von Daten dient, die
Docket PO 968 036 2 0 9 8 3 9 / 1 0 U
vollständig innerhalb eines einzelnen Segmentes eines Datensatzes und innerhalb einer mechanischen Position einer Einheit enthalten si id. Die wiederholte Ausführung der Schleife liest eine logisch zusammenhängende Bytereihe,, d„ h. eine Folge von Bytes mit aufeinanderfolgenden logischen Adressen»
Im Zusammenhang mit den Ablaufdiagrammen der Fign. 9A4. 9B und 10 einer typischen E/A-Operation werden folgende Annahmen gemacht:
1. Eine Leseoperation betrifft eine ganze Zahl von Datenrahmen .
2. Eine von der Operation betroffene Einheit und ihre Steuereinheit sind frei.
3. Der von der Operation betroffene Kanal kann die Einheit wählen, d. h. die Benutzung von Kanal- und Steuereinheitenschlangen, Maskenwort, usw. nach obiger Beschreibung ist in den Ablaufdiagrammen nicht gezeigt, und
4. die zu der Operation gehörende Sinheitenschlange oder Unterschlange ist leer.
Das erste Einreihen-Kommando gibt die logische Adresse des ersten Byte der gewünschten Datenreihe. Die abhängigen und unabhängigen Argumente dieses Kommandos werden in die Register 2 bzw. 3 des CCB eingegeben. Die Fign. 9Ά bis 9B zeigen im einzelnen die Ausführung des Einreihen-Kommandos. Die Blocks 52 bis 58 zeigen die Auflösung des unabhängigen Operanden. Das eingeschlossene Verfahren setzt die Gültigkeit des unabhängigen Operanden fest und lokalisiert die entsprechende DAT.
Die Blocks 59 bis 68 zeigen im einzelnen die Auflösung des abhängigen Argumentes. In dieser Folge liegt eine Schleife in den Blocks 60 bis 63, in denen das Segment des Datensatzes bestimmt wird, der das erste Byte der gewünschten Reihe enthält. Der Block 68 setzt die Höchstzahl von Blocks fest, die nach dieser
Docket PO 968 036
209839/ 1 OAA
Ausführung des Einreihen-Kommandos gelesen oder geschrieben werden darf. Nachfolgende Blocks müssen durch die Wiederholung der Fig. 11 erhalten werden. Die Blocks 69 bis 76 übernehmen die Positionswarteschlangenbildung, die die Einheit betrifft. Die Blocks 77 bis 79 vervollständigen die Einreihen-Operation und werden nach der Aussetzung des Kanalprogrammes ausgeführt.
Die Operation des zweiten Kommandos (Fig. 11) des Kanalprogrammes ist im einzelnen in Fig. 11 gezeigt. Der Block 81 dieser Folge stellt sicher, daß die Leseoperation gültig ausgeführt wird, d. h., daß eine vorhergehende Einreihen-Operation richtig ausgeführt wurde. Die Blocks 82 bis 89 übernehmen die Lesewiederholung. Diese Wiederholung wird beendet, wenn das Register 14 des CCB (die Länge der gewünschten Reihe) auf 0 reduziert oder wenn der gegenwärtige Block von 256 Bytes gelesen wurde. Die Blocks 90 bis 92 leiten diese Schleife erneut ein, wenn der laufende Block eine mechanische oder eine Segmentgrenze nicht beendet. Wenn eine solche Grenze auftritt (Register 12 wurde auf 0 zurückgesetzt, Block 92), ist die Operation mit dem Verzweigungscode 3 abgeschlossen, wodurch das dritte Kommando der Fig. 11 die dritte Kommandoschleife erneut beginnt. Während jeder Wiederholung der Schleife stellen die Blocks 86 und 87 sicher, daß die Pufferadresse, die Reihenlänge und das unabhängige Argument einer nachfolgenden Wiederholung entsprechend eingestellt sind.
ZUSAMMENFASSUNG
Die Erfindung wurde im Zusammenhang mit einem Eingabe/Ausgabe-Steuersystem beschrieben, in welchem z. B. ein primäres Steuermodul oder eine zentrale Verarbeitungseinheit vorgesehen ist für die Ausführung eines primären oder Hauptprogrammes und ein sekundäres Steuermodul oder ein Eingabe/Ausgabe-Datenkanal vorgesehen ist für die Ausführung von Sekundärprogrammen oder Kanalprogrammen nach Anweisung des CPU-Programmes. Die Erfindung ist
Docket PO 968 036 209839/ 1OU

Claims (3)

  1. PATENTANSPRÜCHE
    /T) Datenverarbeitungsanlage mit einem oder mehreren Eingabe/ Ausgabe-Kanälen, mehreren Eingabe/Ausgabe-Steuereinheiten, mehreren gemeinsamen Einheiten und mehreren peripheren Geräten, die miteinander über eine Schaltmatrix verbunden sind, dadurch gekennzeichnet, daß auf einer Seite der bekannten Schaltmatrix (26) Kanalsteuereinheiten (25) und auf der anderen Seite Speicher-, Verarbeitungs-, Ein/Ausgabe-Einheiten und/oder Einheitensteuerschaltungen (17) angeordnet sind, die außerhalb der Schaltmatrix (26) mit einer gemeinsamen Anforderungsleitung (27) miteinander und mit den Kanalsteuereinheiten (25) verbunden sind, die über Adreß- und Daten-Sammelleitungen (12, 13) sowohl mit dem Speicher (11) der Datenverarbeitungsanlage als auch mit der zentralen Verarbeitungseinheit (10) verbunden sind und Eingabe/Ausgabe-Programmpläne aufstellen, indem ein Befehl (Fordere Kanal an) die zentrale Verarbeitungseinheit (10) veranlaßt, einen Kanalsteuerblock (CCB) aus dem Speicher (11) zu holen, der die Adresse des ersten Befehls eines Kanalprogramms enthält und in eine Arbeitswarteschlange im Speicher (11) gesetzt wird, worauf über eine Alarmleitung (19), die mit allen Kanalsteuereinheiten (25) verbunden ist, ein Alarmsignal von der zentralen Verarbeitungseinheit (1O) an die Kanalsteuereinheiten (25) abgegeben wird, worauf eine nicht belegte Kanalsteuereinheit (25) einen Kanalsteuerblock (CCB) aus der Arbeitswarteschlange in ihre Register lädt und ausführt, und daß während einer latenten Periode ein Befehl "Einreihen" die Einreihung der Kanalsteuerblocks (CCB) in eine Einheitenwarteschlange vornimmt.
    Docket PO 968 O36
    209833/1044
  2. 2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, daß die indirekte Adresse eines auszuführenden Kanalprogrammes in die Arbeitswarteschlange gesetzt wird, daß eine freie Kanalsteuereinheit (25) eine Aufgabe aus der Arbeitswarteschlange auswählt und mit der Ausführung des zugeordneten Kanalprogrammes beginnt bis zu dem Zeitpunkt, zu dem eine angeschlossene Einheit (17) anzeigt, daß sie mit internen Operationen beschäftigt ist, worauf die entsprechende Kanalsteuereinheit (25) indirekte Programme des Kanalprogrammes von der gemeinsamen Arbeitswarteschlange in eine für die betreffende Einheit vorliegende Einheitenwarteschlange überträgt, von wo sie entnommen wird, wenn die Einheit (17) den Status erreicht hat, an dem das Kanalprogramm durch Abruf der Aufgabe aus der Einheitenwarteschlange und den neuen Eintritt des Programmes an dem Punkt, an dem es unterbrochen wurde, ohne Verzögerung fortfahren kann.
  3. 3. Datenverarbeitungsanlage nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß die Kanalsteuereinheiten (25) in den ihnen zugeordneten Mikroprogrammen den momentanen Status des jeweiligen Kanalprogramms einschließlich der Lage des nächsten Kommandos enthalten, daß die Ausführung eines Kanalprogrammes von einer Kanalsteuereinheit (25) bei mechanischen Einstelloperationen der angeschlossenen Einheiten (17) unterbrochen wird, wodurch die betreffende Kanalsteuereinheit (25) für weitere Steueroperationen innerhalb des Datenverarbeitungssystems zur Verfügung steht.
    Docket PO 968 036
    209839/ 1044
    Le
    e rs e 11 e
DE2209282A 1971-03-03 1972-02-26 Datenverarbeitungsanlage Expired DE2209282C3 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12056371A 1971-03-03 1971-03-03

Publications (3)

Publication Number Publication Date
DE2209282A1 true DE2209282A1 (de) 1972-09-21
DE2209282B2 DE2209282B2 (de) 1979-10-11
DE2209282C3 DE2209282C3 (de) 1980-06-26

Family

ID=22391124

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2209282A Expired DE2209282C3 (de) 1971-03-03 1972-02-26 Datenverarbeitungsanlage

Country Status (6)

Country Link
US (1) US3725864A (de)
JP (1) JPS5210615B1 (de)
CA (1) CA945683A (de)
DE (1) DE2209282C3 (de)
FR (1) FR2128005A5 (de)
GB (1) GB1347423A (de)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3956736A (en) * 1972-05-24 1976-05-11 Jacques James O Disc cartridge sector formatting arrangement and record addressing system
US3839706A (en) * 1973-07-02 1974-10-01 Ibm Input/output channel relocation storage protect mechanism
FR2258113A5 (de) * 1973-11-30 1975-08-08 Honeywell Bull Soc Ind
FR2253430A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253428A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3913074A (en) * 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
US3909799A (en) * 1973-12-18 1975-09-30 Honeywell Inf Systems Microprogrammable peripheral processing system
US3953834A (en) * 1974-01-07 1976-04-27 Texas Instruments Incorporated Programmable logic controller with push down stack
US4060849A (en) * 1975-10-28 1977-11-29 Compagnie Internationale Pour L'informatique Cii-Honeywell Bull Data input and output controller
JPS52130532A (en) * 1976-04-27 1977-11-01 Fujitsu Ltd Address conversion system
US4040037A (en) * 1976-06-01 1977-08-02 International Business Machines Corporation Buffer chaining
US4096567A (en) * 1976-08-13 1978-06-20 Millard William H Information storage facility with multiple level processors
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4177513A (en) * 1977-07-08 1979-12-04 International Business Machines Corporation Task handling apparatus for a computer system
US4155117A (en) * 1977-07-28 1979-05-15 International Business Machines Corporation Synchronizing channel-to-channel adapter
US4207609A (en) * 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
US4224667A (en) * 1978-10-23 1980-09-23 International Business Machines Corporation Command queuing for I/O adapters
US4251865A (en) * 1978-12-08 1981-02-17 Motorola, Inc. Polling system for a duplex communications link
FR2470412B1 (fr) * 1979-11-19 1986-10-03 Bull Sa Procede et dispositif de comptabilisation et de gestion des evenements asynchrones emis par des appareils peripheriques dans un systeme de traitement de donnees
US4445176A (en) * 1979-12-28 1984-04-24 International Business Machines Corporation Block transfers of information in data processing networks
US4374415A (en) * 1980-07-14 1983-02-15 International Business Machines Corp. Host control of suspension and resumption of channel program execution
US4415970A (en) * 1980-11-14 1983-11-15 Sperry Corporation Cache/disk subsystem with load equalization
US4400773A (en) * 1980-12-31 1983-08-23 International Business Machines Corp. Independent handling of I/O interrupt requests and associated status information transfers
US4439826A (en) * 1981-07-20 1984-03-27 International Telephone & Telegraph Corporation Diagnostic system for a distributed control switching network
US4495564A (en) * 1981-08-10 1985-01-22 International Business Machines Corporation Multi sub-channel adapter with single status/address register
US4398192A (en) * 1981-12-04 1983-08-09 Motorola Inc. Battery-saving arrangement for pagers
US4603380A (en) * 1983-07-01 1986-07-29 International Business Machines Corporation DASD cache block staging
US4870611A (en) * 1983-11-15 1989-09-26 International Business Machines Corporation Apparatus and method for system printing mode control
US4649513A (en) * 1983-11-15 1987-03-10 International Business Machines Corporation Apparatus and method for processing system printing data records on a page printer
US4771378A (en) * 1984-06-19 1988-09-13 Cray Research, Inc. Electrical interface system
CA1228677A (en) * 1984-06-21 1987-10-27 Cray Research, Inc. Peripheral interface system
US5014236A (en) * 1988-01-29 1991-05-07 International Business Machines Corporation Input/output bus expansion interface
US5283791A (en) * 1988-08-02 1994-02-01 Cray Research Systems, Inc. Error recovery method and apparatus for high performance disk drives
US5218689A (en) * 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5347637A (en) * 1989-08-08 1994-09-13 Cray Research, Inc. Modular input/output system for supercomputers
AU650242B2 (en) * 1989-11-28 1994-06-16 International Business Machines Corporation Methods and apparatus for dynamically managing input/output (I/O) connectivity
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
JPH0776950B2 (ja) * 1990-06-22 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理方法及び装置
DE69123663T2 (de) * 1990-08-31 1997-06-26 Ibm Kanäle in einem Rechnerein-Ausgabesystem
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
US5388217A (en) * 1991-12-13 1995-02-07 Cray Research, Inc. Distributing system for multi-processor input and output using channel adapters
US5313592A (en) * 1992-07-22 1994-05-17 International Business Machines Corporation Method and system for supporting multiple adapters in a personal computer data processing system
US5412661A (en) * 1992-10-06 1995-05-02 International Business Machines Corporation Two-dimensional disk array
US5367661A (en) * 1992-11-19 1994-11-22 International Business Machines Corporation Technique for controlling channel operations in a host computer by updating signals defining a dynamically alterable channel program
US5410709A (en) * 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US5548791A (en) * 1994-07-25 1996-08-20 International Business Machines Corporation Input/output control system with plural channel paths to I/O devices
US5799207A (en) * 1995-03-28 1998-08-25 Industrial Technology Research Institute Non-blocking peripheral access architecture having a register configure to indicate a path selection for data transfer between a master, memory, and an I/O device
US5652914A (en) * 1995-06-12 1997-07-29 International Business Machines Corporation Method and system for superimposing, creating and altering I/O applications and controls within an I/O subsystem by using an I/O subchannel intercept field
US5768551A (en) * 1995-09-29 1998-06-16 Emc Corporation Inter connected loop channel for reducing electrical signal jitter
US5841997A (en) * 1995-09-29 1998-11-24 Emc Corporation Apparatus for effecting port switching of fibre channel loops
US5875479A (en) * 1997-01-07 1999-02-23 International Business Machines Corporation Method and means for making a dual volume level copy in a DASD storage subsystem subject to updating during the copy interval
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6240446B1 (en) 1998-10-14 2001-05-29 International Business Machines Corporation Multiplexing of multiple data packets for multiple input/output operations between multiple input/output devices and a channel subsystem having multiple channels
US6185631B1 (en) 1998-10-14 2001-02-06 International Business Machines Corporation Program for transferring execution of certain channel functions to a control unit and having means for combining certain commands and data packets in one sequence
US6330585B1 (en) 1998-10-14 2001-12-11 International Business Machines Corporation Transfer information using optical fiber connections
US6230218B1 (en) * 1998-10-14 2001-05-08 International Business Machines Corporation Apparatus for transferring execution of certain channel functions to a control unit and having means for combining certain commands and data packets in one sequence
US6292856B1 (en) 1999-01-29 2001-09-18 International Business Machines Corporation System and method for application influence of I/O service order post I/O request
US6609165B1 (en) 1999-09-27 2003-08-19 International Business Machines Corporation Method and apparatus for using fibre channel extended link service commands in a point-to-point configuration
US6499066B1 (en) 1999-09-27 2002-12-24 International Business Machines Corporation Method and apparatus for using fibre channel test extended link service commands for interprocess communication
US7636915B1 (en) * 1999-12-02 2009-12-22 Invensys Systems, Inc. Multi-level multi-variable control process program execution scheme for distributed process control systems
US6973553B1 (en) 2000-10-20 2005-12-06 International Business Machines Corporation Method and apparatus for using extended disk sector formatting to assist in backup and hierarchical storage management
US6918001B2 (en) * 2002-01-02 2005-07-12 Intel Corporation Point-to-point busing and arrangement
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7304996B1 (en) 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7904644B1 (en) * 2006-11-01 2011-03-08 Marvell International Ltd. Disk channel system with sector request queue
EP2257874A4 (de) 2008-03-27 2013-07-17 Rocketick Technologies Ltd Designsimulation anhand paralleler prozessoren
US9032377B2 (en) * 2008-07-10 2015-05-12 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
US8139583B1 (en) 2008-09-30 2012-03-20 Extreme Networks, Inc. Command selection in a packet forwarding device
US8965860B2 (en) * 2010-04-01 2015-02-24 Salesforce.Com, Inc. Methods and systems for bulk uploading of data in an on-demand service environment
US9128748B2 (en) 2011-04-12 2015-09-08 Rocketick Technologies Ltd. Parallel simulation using multiple co-simulators
US20130152181A1 (en) * 2011-12-07 2013-06-13 International Business Machines Corporation Portal based case status management
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US11150613B2 (en) * 2014-11-18 2021-10-19 Sensia Llc Configurable safety logic solver

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3413609A (en) * 1965-04-15 1968-11-26 Gen Electric Indirect addressing apparatus for a data processing system
US3439340A (en) * 1965-07-30 1969-04-15 Bell Telephone Labor Inc Sequential access memory system
FR1509022A (de) * 1965-11-26 1968-03-25
US3449722A (en) * 1966-05-02 1969-06-10 Honeywell Inc Electronic multiprocessing apparatus including common queueing technique
US3475730A (en) * 1966-05-27 1969-10-28 Gen Electric Information shift apparatus in a computer system
US3479647A (en) * 1966-06-03 1969-11-18 Gen Electric Data process system including means responsive to predetermined codes for providing subsystem communication
US3614742A (en) * 1968-07-09 1971-10-19 Texas Instruments Inc Automatic context switching in a multiprogrammed multiprocessor system
US3573741A (en) * 1968-07-11 1971-04-06 Ibm Control unit for input/output devices
US3559187A (en) * 1968-11-13 1971-01-26 Gen Electric Input/output controller with linked data control words
US3588831A (en) * 1968-11-13 1971-06-28 Honeywell Inf Systems Input/output controller for independently supervising a plurality of operations in response to a single command
US3614745A (en) * 1969-09-15 1971-10-19 Ibm Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof

Also Published As

Publication number Publication date
JPS5210615B1 (de) 1977-03-25
FR2128005A5 (de) 1972-10-13
DE2209282B2 (de) 1979-10-11
DE2209282C3 (de) 1980-06-26
GB1347423A (en) 1974-02-27
CA945683A (en) 1974-04-16
US3725864A (en) 1973-04-03

Similar Documents

Publication Publication Date Title
DE2209282A1 (de) Datenverarbeitungsanlage
DE2350884C2 (de) Adreßumsetzungseinheit
DE2540975C2 (de) Datenverarbeitungseinrichtung zur Ausführung mehrerer gleichzeitig ablaufender Prozesse
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2606210C3 (de) Schaltung für die dynamische Zuteilung von Prioritäten
DE2635592C2 (de) Schaltungsanordnung zum Abruf von Prozessor- und Speicheranforderungen in einer Multiprozessoranlage
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
DE2755371A1 (de) Ein/ausgabe-verarbeitungssystem
DE4129614A1 (de) System und verfahren zur datenverarbeitung in einer mehrzahl von betriebsarten entsprechend programminterner parallelverarbeitungseigenschaften unter verwendung eines cachespeichers
DE3114934A1 (de) Zentrales subsystem fuer eine datenverarbeitungsanlage
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE3114961A1 (de) Datenverarbeitungssystem
DE2750721A1 (de) Ein/ausgabe-system
DE2165767A1 (de) Datenverarbeitungssystem
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE1929010B2 (de) Modular aufgebaute datenverarbeitungsanlage
DE2755616A1 (de) Asymmetrischer multiprozessor
DE2440628A1 (de) Datenverarbeitungsanlage mit mikroprogrammierung
DE2363846A1 (de) Verfahren zum steuern des transfers von daten zwischen einem speicher und einem oder mehreren peripheren geraeten und nach diesem verfahren arbeitende datenverarbeitungsanlage
DE1499206B2 (de) Rechenanlage
DE3013064C2 (de) Schaltungsanordnung zur Übertragung von Bitgruppen zwischen einer von mehreren peripheren Einheiten und einem Pufferspeicher
DE1900007A1 (de) Datenverarbeitungssystem
DE2609698A1 (de) Elektronischer rechner
DE2507405C2 (de) Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage

Legal Events

Date Code Title Description
OD Request for examination
C3 Grant after two publication steps (3rd publication)
8339 Ceased/non-payment of the annual fee