DE2209282B2 - Datenverarbeitungsanlage - Google Patents
DatenverarbeitungsanlageInfo
- Publication number
- DE2209282B2 DE2209282B2 DE2209282A DE2209282A DE2209282B2 DE 2209282 B2 DE2209282 B2 DE 2209282B2 DE 2209282 A DE2209282 A DE 2209282A DE 2209282 A DE2209282 A DE 2209282A DE 2209282 B2 DE2209282 B2 DE 2209282B2
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Control By Computers (AREA)
- Hardware Redundancy (AREA)
Description
Die Erfindung betrifft eine Datenverarbeitungsanlage nach dem Oberbegriff des Anspruchs 1.
In derartigen Datenverarbeitungsanlagen werden die Informationen zu den peripheren Geräten über
Kanäle, die sowohl als Multiplex- als 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
3336582 ist z. B. eine zentrale Datenverarbeiiungseinheit,
die mit mehreren Eingabe- und Ausgabegeräten wahlweise verbunden ist, bekanntgeworden.
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 Information im ersten Leitungsbündel 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 Ubertragungskanä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 1118506 bekannt. Jeder
Verarbeitungseinheit ist hier eine besondere Speichereinrichtung zugeordnet, die die Adresse des mit
dieser Verarbeitungseinheit verbundenen Teilspeicher 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 Effektivität der Datenübertragung in einer Datenverarbeitungsanlage dieser Art zu verbessern,
wurde in der deutschen Offenlegungsschrift 2000930
eine Schaltungsanordnung vorgeschlagen, die gekennzeichnet ist durch eine Matrixschalteinheit mit
einer ersten Untereinheit 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 gleichzeitig 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äten 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 mechanische Einstellung eines Magnetkopfes beendet ist.
Außerdem ist durch die US-PS 3274561 ein Datenverarbeitungssystem
bekanntgeworden, das zur Verbindung von Ein-/Ausgabe-Steuermoduln mit
den peripheren Einheiten eine Schaltmatrix verwendet, auf deren einer Seite die Ein-/Ausgabe-Steuermoduln
und auf der anderen Seite die peripheren Einheiten angeordnet sind. Die Ein-/Ausgabe-Steuermoduln
sind über Sammelleitungen mit mehreren Zentraleinheiten und Speichermoduln verbunden, die
ihrerseits über eine weitere Schaltmatrix wahlweise miteinander verbunden werden können.
Dieses System hat jedoch den Nachteil, daß zwei Schaltmatmen vorhanden sind, wodurch sich der
technische Aufwand erhöht und daß darüber hinaus alle Anforderungen und Daten zwischen den einzelnen
Funktionseinheiten dieses Datenverarbeitungssystems nur über die beiden Schaltmatrizen ausgetauscht
werden können. Das Sammelleitungssystem zwischen den beiden Schaltmatrizen ermöglicht keine
direkte Verbindung der einzelnen Funktionseinheiten.
Der Erfindung liegt deshalb die Aufgabe zugrunde, eine Datenverarbeitungsanlage mit einer Schaltmatrix
zur Verbindung der einzelnen Systemeinheiten der eingangs genannten Art so weiterzubilden, daß unter
Berücksichtigung der den einzelnen Einheiten der Datenverarbeitungsanlage zugeordneten Prioritäten
eine vollständige Auslastung aller an der Datenüber- -'j
tragung beteiligten Einheiten ohne umfassende Vergrößerung des Steuerteils und nennenswerte Erhöhung
der für die Übertragung erforderlichen Zeit ermöglicht wird.
Die erfindungsgemäße Lösung der Aufgabe besteht n>
im Kennzeichen des Patentanspruchs 1. Weitere Ausgestaltungen der Erfindung bestehen in den Kennzeichen
der Patentansprüche 2 und 3.
Der Vorteil dieser Lösung besteht vor allem darin, daß durch die Verbindung der einzelnen Steuerein- i>
heiten 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 Ubertragungswege
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 zeigt
Fig. 1 ein Blockdiagramm,
Fig. 2 ein Blockdiagramm eines komplexen Rech- ~><i
nersystems,
Füg. 3 ein Diagramm eines Kanalsteuerblocks (CCB),
Fig. 4 ein Diagramm von Kanalwarteschlangen und Masken, r>
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 Zu- wi
sammensetzung von Einheitenwarteschlangen, die Ketten von Kanalsteuerblocks enthalten,
Fi g. 8 in einem Diagramm die Beziehung zwischen der unabhängigen Argumententabelle (IAT) und der
abhängigen Argumententabelle (DT), b>
Fig. 9A,9B Ablaufdiagramme für die Ausführung
des Kommandos »Einreihen«,
Fig. 10 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. Eint zentrale Verarbeitungseinheit
10 (CPU) und eine Anzahl von Kanalsteuereinheiten (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 Pianeinteilung 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 zueist 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 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 Verfugung
steht, und ein Lageverzeichnis des angegebenen Datensatzes, die vorher durch ein von der CPU ausgeführtes
Steuerprogramm aufgestellt wurden. Bei der Fort:etzung 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 abgegeben, durch welchen diese ggf. die Einstellung des Zugriffsmechanismus einleitet und in
einem Register die Lage der gewünschten Aufzeich-
nung 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 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. Die CCU 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 CCU ist jetzt
bereit, die Ausführung eines vorher ausgesetzten Kanalprogrammes am Unterbrechungspunkt 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/
Α-Operation bestimmen. Nach Beendigung der Datenübertragung wählt die CCU die Einheit ab und
führt die nachfolgenden Kommandos des Kanalprogrammes aus. Diese können eine Wiederholung des
obigen Prozesses nach Abschluß der E/A-Operationen für das CPU-Programm über eine oder mehrere
Unterbrechungen vorschreiben oder das Kanalprogramm beenden. Bei Beendigung des Kanalprogrammes
gi'n die CCU den CCB an den Vorrat freier CCBs zurück und stellt sich selbst zur Ausführung eines anderen
Kanalprogrammes 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 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 Überwachungsprogrammes abgewickelt, das von der CPU
ausgeführt wird, das Zeit- und Programmiererspar-
lu nisse 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 Ausnahme
des zur Festlegung einer Priorität unter den Steuereinheiten benutzten Signals 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 Kommunika-
so tion 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,
J) 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 j 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/ Α-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.
bo 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. Kom-
b5 mandos werden ausgeführt und decodiert durch die
Kanäle als Teile von Kanalprogrammen. 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 Kanalprogrammes an mit der Instruktion »Fordere
Kanal an«. Diese Instruktion veranlaßt die CPU dazu, vorgeschriebene Parameter in einen reservierten Be- n>
reich 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 i->
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 R15) 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. «1
Wörter werden von einer Stelle im Hauptspeicher, die in der Instruktion »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 r> 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öru.ig
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 Warteschlangenursprungsorten
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 Mehrfachsystems 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, bo
In jedem Fall wird die Aasführung der Instruktion »Fordere Kanal an« 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
anderen verketteten Listen von CCBs veranlassen eine Verriegelung der betroffenen Liste für die Dauer
der Operation an dieser Liste. Jeder Listenursprung belegt ein einziges Wort im Hauptspeicher (Bytes 1
bis 3 enthalten entweder einen Hinweis auf den ersten CCB in der Liste oder einen Selbsthinweis). Sobald
das äußerste linke Bit des Wortes 0 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 Kanals 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 Kanals 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/A-Operationen 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 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/A-Operation 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 Achtungtaste gedrückt wurde).
Um ein Kanalprogramm zu verzögern, setzt der Kanal den zu dem Kanalprogramm gehörigen CCB
in eine Warteschlange, die zu einer belegten Einheit oder einer bestimmten Einheitenantwort gehört, 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 Kanals 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 Kanalprogramm 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 zurückzufü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 Ausführung der gesamten zugehörigen
Planaktivität.
1. Die Adresse der Einheit und des zu der Einheit gehörigen Kanals 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 vorbestimmten
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
i<> 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 Aufgaben
gehörige Warteschlange und nimmt die Ausfüh-
i"> rung 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, 2(i 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.
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
jj 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 abge-
4» schlossen 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
j 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.
w) 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 b5 Quellen oder Bestimmungen der Information. Der
zweite, der abhängige Operand, bezeichnet eine bestimmte Funktion, Antwort usw. innerhalb der durch
den unabhängigeil 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
(I AT), die im Speicher auf einer Adresse steht, welche von der Aufgabenbezeichnung abzuleiten ist, die im
Wert 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 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 Warteschlangenoperationen
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 Speichercinheiten 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 Überwachungsprogrammen der CPU übertragen
war.
Im Zusammenhang mit der DAT und der IAT sind folgende Punkte zu beachten:
1. Jede durch die Ausführung eines CPU-Programmes eingeleitete Ausführung eines Kanalprogrammes
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 »Einreihene-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
»Einreihene-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
Ar.twortcodes vom Kanal empfangen. Die Verwendung dieser Codes erleichtert die Planeinteilung von
Kanalprogrammen, die um die Benutzung einer Einheit konkurrieren.
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
Signals 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 Kanai. Mehrere Statuscodes
können von einem oder identischen Antwortcode begleitet sein und legen jO 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,
weiche 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 verknü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öchstweit 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 »Einreihen«-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 Wartecchlangendisziplin.
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 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 Kontanten herausgezogen
wird, die man aus der DAT erhält, bestimmen die zu verfolgenden Wartechlangenoperationen.
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 dei 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 zugehö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 Übereinstimmung 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
das nächste Kommando geholt und durch den Kanal decodiert. Die Einheit bleibt logisch mit
dem Kanal verknüpft; alle E/A-Operationen können durch das Kanalprogramm eingeleitet
werden unter der Voraussetzung, daß die zu dem Statuscode gehörenden Bedingungen die einzigen
Voraussetzungen für die Einleitung der Operation sind.
Wenn der aus der DT erhaltene Einheitencode eine Einheit mit einer Einheitenwarteschlange beschreibt,
die aus mehreren Unterwarteschlangen besteht, ändern sich die vom Kanal unternommenen Schritte entsprechend
der Warteschlangendisziplin. Die folgende Reihenfolge ist jedoch typisch für die Disziplinen. Sie
zeigt die meisten vom Kanal ausgeführten Funktionen,
die für die Benutzung von Unterwarteschlangen spezifisch sind.
1. Mit den aus der DAT erhaltenen Konstanten bestimmt
der Kanal eine a 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 Unterwarieschlangen,
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/
Α-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 Unterwarteschlange 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ähend 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/A-Operation 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 Einheit an eine belegte Steuereinheit gegeben wird, antwortet sie direkt mit
einem Statusbericht, der ihren Belegzustand 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. Dieser Code hat das Format einer Einheitenadresse und bezeichnet eine Eintragung der DT. Das
Einheitenwarteschlangenfeld dieser Eintragung 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 BeIegungsnachricht
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 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
bu 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.
b5 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 zuletzt genannten Kanal über die
Steuereinheitenwarteschlange übertragen. Um sicherzustellen, daß der zuletzt genannte 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/AEinheit
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 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 Warteschlangen 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 festen Stelle angeordnet
(Fig. 4).
Um ein Verzeichnis des Inhaltes der Kanalwarteschlangen aufrechtzuerhalten, wird ein einziges Wort,
das Kanalwarteschlange ns te uerwort, 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 0 in dieser Position besagt,
daß die «-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, wird das entsprechende
Bit gelöscht oder auf 0 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 Kanalwarte-
ο schlangen, 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 Test, 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-Operation ausgesetzten Kanalprogramme beziehen. Das werthohe Bit entspricht einer nicht geleerten Kanalar-
4j beitswarteschlange. Nach Feststellung der aktiven
Warteschlangen nimmt der Kanal einen CCB aus der zu dem letzten Wert darstellenden Einerbk gehörenden
Warteschlange. Die Ausführung des entsprechenden Kanalprogrammes wird dann durch den Ka-
>i) nal aufgenommen.
Eängabe/Ausgabe-Operationen können durch Kanalprogramme nach dem erfolgreichen Abschluß der
Einreihen-Operation eingeleitet werden. Kommandos, welche den Kanal zur Einleitung von E/A-Ope-
« rationen 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
bit 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
h-5 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.
19-
Der Kanal bereitet sich selbst dann entsprechend zum
Empfang oder Senden von Informationen zu oder vom
Hauptspeicher vor. Mit jedem ü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 0 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 Anzahl 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 beinflussen 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 dje
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 Prioritä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 zu-
rü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
an 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 Ausfuhrung des Kanalprogrammes ausgesetzt, 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. Jeder Datensatz kann als ein Byteraum bezeichnet
werden, d. h. eine Spanne von Byteadressen (ganzzahlige relative Adressen), die von 0 bis zu irgendeinem
Maximum reichen, welches durch die Größe des Datensatzes bestimmt ist. Verzeichnisse,
Aufzeichnungen, Felder usw., welche von logischtr 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 Adesse, 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 mechani-
sehe Position gibt die gesamte nicht periodische wichtige Betätigung an, die zur Adressierung des Blocks
erforderlich ist (wie z. B. die Betätigung des Zugriffsmechanismus oder die Einstellung des Kopfes bei
Plattendateien mit beweglichem Kopf). Die elektri- > sehe 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 einer 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 me- '
chanischen 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 0, 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. jo
umfassen.
Die Lage des Satzes logische 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 Einrei- -to hen-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 physikalischen Lageplatz -15 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 aus einer Eintragung. Diese Eintragung definiert
den Umfang der relativen Adreßkomponente 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 Adesse entspricht, mit
Hilfe der gemischten Wurzelarithmetik.
Allgemeiner gesagt, kann der Byteraum eines Da- *>o
tensatzes 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 eine DAT mit mehreren Eintragungen, von denen eine für jedes Segment des Datensatzes
gilt.
F i g. 7 zeigt einen Datensatz mit einem Umfang von
130 Blocks von je 256 Bytes, dessen Byteraum in drei Bereiche 39, 40 und 41 unterteilt wurde. Außerdem
ist das Lageverzeichnis dieser Bereiche in entsprechenden Bereichen 42,43 und 44 zweier Speichereinheiten
gezeigt. Es ist zu beachten, daß der 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 1Ö00 der mechanischen Position 6, der elektrischen
Position 2 und der Rotationsposition 8; d. h. die Zahl 1000 ist in der Basis dargestellt (r, 10, 16), worin r
eine hinreichend große ganze Zahl ist. Die Einheit 4 wird mit 32 Rotations- und 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 mit dem Block 1938 dieser Einheit (siehe Feld 48). Die Positionskomponenten
dieser Blocks werden mit Hufe 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 bedeutetdie 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.
1. Einheiten, wie z. B. Plattendateien mit bewegliehern
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 i->
Feld 4S 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) angegeben ist oder in
eine Einheitenunterwarteschlange, die zu der jo 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 r>
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. 4»
5. Wenn die Einheit die mechanische und die unge-' fähre Rotationsposition einnimmt, die durch den
Statuscode definiert sind, versucht sie einen freien Kanal zu bekommen.
6. Wenn die Einheit keinen Kanal bekommen hat, -43
während die gewünschte Rotationsposition durchläuft, versucht sie es nicht mehr. Die Verbindungsaufnahme
eines Kanals 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. bo
Das Kanal-Grundprogramm oder das Unterpro-1
gramm 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 b5
die Ausführung eines jeden zum Lesen einer Reihe von Daten dient, die vollständig innerhalb eines einzelnen
Segmentes eines Datensatzes und innerhalb einer mechanischen Position einer Einheit enthalten
sind. 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 Fig. 9 A, 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 Καnal- und Steuereinheitenschlangen, Maskenwort
usw. nach obiger Beschreibung ist in den Abiaufdiagrammen nicht gezeigt, und
4. die zu der Operation gehörende Einheitenschlange 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 Fig. 9 A 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
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
Die Erfindung wurde im Zusammenhang mit einem
Claims (3)
1. Datenverarbeitungsanlage mit einer Schaltmatrix, auf deren einer Seite Kanalsteuereinheiten
und auf deren anderen Seiten Ein/-Ausgabeeinheiten und/oder Ein-ZAusgabe-Einheiten-Steuerschaltungen
angeordnet sind und deren zentrale Verarbeitungseinheit und Hauptspeicher über ein
Sammelleitungssystem miteinander und mit den Kanalsteuereinheiten verbunden sind, dadurch
gekennzeichnet, daß die Ein-/Ausgabe-Einheiten und/oder Ein-ZAusgabe-Einheiten-Steuerschaltungen
(17) und die Kanalsteuereinheiten (25) über eine gemeinsame Anforderungsleitung (27) miteinander verbunden sind, daß die Kanalsteuereinheiten
(25) über Adred- und Datensammelieitungen
(12,13) mit dem den Hauptspeicher (11) und die zentrale Verarbeitungseinheit (10)
verbindenden Sammelleitungssystem verbunden sind und daß Signale auf der gemeinsamen Anforderungsleitung
(27) einen Kanalsteuerblock (CCB) aus dem Hauptspeicher (11) ausspeichern, der die Adresse des ersten Befehls eines Kanalsteuerprogrammes
enthält und in eine Arbeitswarteschlange setzt, worauf über eine Steuerleitung
(19) ein Steuersignal von der zentralen Verarbeitungseinheit (10) an alle Kanalsteuereinheiten
(25) abgegeben wird, um anzuzeigen, daß eine Eingabe-/Ausgabe-Aufgabe zusätzlich in die
Warteschlange gesetzt wurde.
2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, daß indirekte Adreßsignale
eines auszuführenden Kanalprogrammes in die Arbeitswarteschlange des Speichers (11) gesetzt
werden, daß ein Anzeigesignal von einer angeschlossenen Einheit (17) anzeigt, daß diese mit
internen Operationen beschäftigt ist, worauf eine Kanalsteuereinheit (25) indirekte Programme des
Kanalprogrammes aus dem Speicher (11) in die Kanalsteuereinheit (25) überträgt, und daß zu
dem Zeitpunkt, zu dem das Kanalprogramm durch Abruf der Aufgabe aus der Einheitenwarteschlange
den Status erreicht hat, an dem es unterbrochen wurde und ohne Verzögerung fortfahren
kann, ein Signal erzeugt wird.
3. Datenverarbeitungsanlage nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß die
Kanalsteuereinheit (25) Steuersignale für den momentanen Status des jeweiligen Kanalprogrammes
einschließlich der Lage des nächsten Kommandos enthält und daß die Ausführung eines
Kanalprogramms von einer Kanalsteuereinheit (25) bei mechanischen Einstelloperationen
(wie Kopfverschiebung oder Papiervorschub) der angeschlossenen Ein-/Ausgabeeinheiten (17)
durch ein Steuersignal unterbrochen wird.
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 DE2209282A1 (de) | 1972-09-21 |
DE2209282B2 true 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)
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 |
FR2253428A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2258113A5 (de) * | 1973-11-30 | 1975-08-08 | Honeywell Bull Soc Ind | |
FR2253430A5 (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 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及び装置 |
EP0472814B1 (de) * | 1990-08-31 | 1996-12-18 | International Business Machines Corporation | 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 |
US5841997A (en) * | 1995-09-29 | 1998-11-24 | Emc Corporation | Apparatus for effecting port switching of fibre channel loops |
US5768551A (en) * | 1995-09-29 | 1998-06-16 | Emc Corporation | Inter connected loop channel for reducing electrical signal jitter |
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 |
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 |
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 |
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)
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 |
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 |
US3559187A (en) * | 1968-11-13 | 1971-01-26 | Gen Electric | Input/output controller with linked data control words |
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 |
-
1971
- 1971-03-03 US US00120563A patent/US3725864A/en not_active Expired - Lifetime
-
1972
- 1972-02-17 GB GB729972A patent/GB1347423A/en not_active Expired
- 1972-02-18 JP JP47016585A patent/JPS5210615B1/ja active Pending
- 1972-02-26 DE DE2209282A patent/DE2209282C3/de not_active Expired
- 1972-03-01 CA CA135,900A patent/CA945683A/en not_active Expired
- 1972-03-02 FR FR7208114A patent/FR2128005A5/fr not_active Expired
Also Published As
Publication number | Publication date |
---|---|
DE2209282A1 (de) | 1972-09-21 |
CA945683A (en) | 1974-04-16 |
DE2209282C3 (de) | 1980-06-26 |
JPS5210615B1 (de) | 1977-03-25 |
US3725864A (en) | 1973-04-03 |
FR2128005A5 (de) | 1972-10-13 |
GB1347423A (en) | 1974-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2209282C3 (de) | Datenverarbeitungsanlage | |
DE2350884C2 (de) | Adreßumsetzungseinheit | |
DE69021899T2 (de) | DMA-Steuerung. | |
DE2230830C2 (de) | Datenverarbeitungsanlage | |
DE69123334T2 (de) | Schlangenverwalterverfahren für ein elektronisches Mitteilungssystem | |
DE69322985T2 (de) | Ein-/Ausgabesteuerungssystem und Ein-/Ausgabesteuerungsverfahren im System | |
DE2856483C2 (de) | ||
DE2657848C2 (de) | ||
DE69907991T2 (de) | Dateisicherungssystem | |
DE2417795C2 (de) | Datenverarbeitungsanlage | |
DE2750721A1 (de) | Ein/ausgabe-system | |
DE3508291A1 (de) | Realzeit-datenverarbeitungssystem | |
DE2635592A1 (de) | Multiprozessor-abrufsystem | |
DE2755371A1 (de) | Ein/ausgabe-verarbeitungssystem | |
DE2358545A1 (de) | Datenverarbeitungssystem mit dynamisch veraenderlichem vorrangzugriffssystem | |
DE3114934A1 (de) | Zentrales subsystem fuer eine datenverarbeitungsanlage | |
DE2755897A1 (de) | Ein/ausgabe-system | |
DE3114961A1 (de) | Datenverarbeitungssystem | |
DE2612139A1 (de) | Ein/ausgang-steuerungssystem | |
DE2755952A1 (de) | Ein/ausgabe-verarbeitungssystem mit einer zeitgebereinrichtung | |
DE2459956A1 (de) | Prozessor und diesen verwendendes peripheres verarbeitungssystem | |
DE1929010B2 (de) | Modular aufgebaute datenverarbeitungsanlage | |
EP0062141B1 (de) | Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem | |
DE3013064C2 (de) | Schaltungsanordnung zur Übertragung von Bitgruppen zwischen einer von mehreren peripheren Einheiten und einem Pufferspeicher | |
DE3142504A1 (de) | Mehrfachplattenspeicher-uebertragungssystem |
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 |