DE2801563C2 - - Google Patents
Info
- Publication number
- DE2801563C2 DE2801563C2 DE2801563A DE2801563A DE2801563C2 DE 2801563 C2 DE2801563 C2 DE 2801563C2 DE 2801563 A DE2801563 A DE 2801563A DE 2801563 A DE2801563 A DE 2801563A DE 2801563 C2 DE2801563 C2 DE 2801563C2
- Authority
- DE
- Germany
- Prior art keywords
- dialog
- control
- channel
- data
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
- G06F13/34—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer with priority control
-
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
Description
Die vorliegende Erfindung bezieht sich auf eine Datenverarbeitungsanlage
nach dem Gattungsbegriff des Patentanspruches.
Eine derartige Datenverarbeitungsanlage ist aus der DE-AS
22 52 282 bekannt. Dort ist eine Zentraleinheit über einen
Dialogprozessor und einen Adapter an eine Anzahl von Dialogleitungen
angeschlossen. Der Dialogprozessor umfaßt eine
Steuereinheit und einen Speicher zur Speicherung von Leitungssteuerworten,
wobei die Zentraleinheit und die Steuereinheit
sich gegenseitig unterstützen. Die Zentraleinheit ist hierbei an
der Steuerung von Kanal-Dialogprogrammen beteiligt.
Ausgehend von dieser bekannten Datenverarbeitungsanlage ist es
die Aufgabe der vorliegenden Erfindung, die Zentraleinheit von
zeitraubenden Aufgaben bei der Verwaltung von Ein/Ausgabe-
Operationen bezüglich der einzelnen Kanäle zu befreien. Die
Lösung dieser Aufgabe gelingt gemäß den kennzeichnenden
Merkmalen des Patentanspruches.
Die Datenverarbeitungsanlage weist einen Dialogprozessor
auf, um Information zwischen mehreren Dialogleitungen
zu übertragen, wobei jede Leitung zwei Kanäle aufweist und ein
Hauptspeicher in dem System enthalten ist. Das System enthält ferner
eine Zentraleinheit, um Steuerinformation an den Prozessor
und an wenigstens einen Kanaladapter zwischen den Leitungen und
dem Prozessor zu liefern. Der Dialogprozessor weist mehrere Steuerblöcke
mit wenigstens einem Steuerblock pro Kanal auf, wobei der
Steuerblock eine Einrichtung zum Anzeigen der Startadresse eines
Blockes von Speicherplätzen in dem Speicher und eine Einrichtung
zur Anzeige des Bereiches des Blockes sowie der jedem Kanal zugeordneten
Statusinformation aufweist. Der Prozessor enthält ferner
mehrere Steuertabellen, wobei eine Steuertabelle pro Leitung vorgesehen
ist, und die Steuertabellen umfassen Speicherplätze für
Information sowohl von Empfangsoperationen, bei denen Information
durch den Prozessor von den Leitungen empfangen wird, als auch
für Übertragungsoperationen, bei denen Information zu den Leitungen
von dem Prozessor übertragen wird. Die Steuertabellen-Speicherplätze
umfassen Speicherplätze zur temporären Speicherung von
zwischen dem Speicher und jeder der Leitungen zu übertragender Information,
von auf den Status eines jeden der Kanaladapter bezogener
Information sowie von Steuerinformation und einer Hinweisadresse
auf eine vorbestimmte Steuerroutine. Der Prozessor enthält
ferner mehrere Steuerroutinen, wobei jede dieser Routinen mehrere
Befehle zwecks Bearbeitung eines speziellen von einem bestimmten
Kanal empfangenen oder übertragenen Kanal-Informationsstromes enthält.
Durch die Befehle wird eine Bearbeitung der Information erzielt,
durch die die Information zu einem sendenden oder empfangenden
Gerät unabhängig von den Anforderungen der Dialogleitung eines
solchen Geräts übertragen wird. Es wird ferner eine Einrichtung in
dem Prozessor vorgesehen, die auf die Kanaladapter, die Steuertabellen
und die Steuerroutinen anspricht, um die Informationsübertragung
zwischen den Kanälen und dem Prozessor zu behandeln, und
ferner weist der Prozessor eine Einrichtung auf, die auf die Steuerblöcke
anspricht und der Behandlung der Informationsübertragung
zwischen dem Prozessor und dem Speicher dient.
Anhand eines in den Figuren der beiliegenden Zeichnung dargestellten
Ausführungsbeispieles sei die Erfindung im folgenden näher beschrieben.
Es zeigen:
Fig. 1 ein Blockdiagramm einer Datenverarbeitungsanlage mit einem Dialogprozessor
(Mehrleitungs-Dialogprozessor) MLCP;
Fig. 2 das Format der von durch den Dialogprozessor
bei einem dynamischen Speicherzugriff verwendeten
Dialog-Steuerblöcke;
Fig. 3 eine von dem Dialogprozessor benutzte Leitungs-Steuertabelle zur
Steuerung der Datenströme der in einer typischen Anlage angeordneten
Dialogleitungen;
Fig. 4 ein Blockdiagramm des Haupt-Hardwareaufbaus eines bevorzugten
Ausführungsbeispiels des Mehrleitungs-Dialogprozessors
der Datenverarbeitungsanlage;
Fig. 5 ein detailliertes Blockdiagramm der Hardwareelemente des in
einem bevorzugten Ausführungsbeispiel verwendeten Mehrleitungs-
Dialogprozessors;
Fig. 6 ein die Organisation eines inerten Speichers darstellendes
Diagramm, wobei der Speicher in dem Dialogprozessor
enthalten ist;
Fig. 7 ein Blockdiagramm der Dialogleitung-Adapter-Schnittstellenlogik
und des zentralen Verarbeitungselementes des Mehrleitungs-
Dialogprozessors;
Fig. 8 ein Blockdiagramm der Haupt-Hardware-Schnittstellenelemente
des Dialogprozessors zur Schnittstellenbildung
mit einer elektrischen Sammelschiene;
Fig. 9 ein Blockdiagramm zur Veranschaulichung der Art und Weise,
in der Daten von dem Mehrleitungs-Dialogprozessor
empfangen werden;
Fig. 10 ein Blockdiagramm zur Veranschaulichung der Art und Weise,
in der Daten durch den Mehrleitungs-Dialogprozessor
gesendet werden;
Fig. 11 ein Blockdiagramm zur Veranschaulichung eines Überblickes
über den Firmwarefluß des Mehrleitungs-Dialogprozessors;
Fig. 12 das Format des Steuerspeicherwortes des
Mehrleitungs-Dialogprozessors;
Fig. 13 bis 16 Einzelheiten verschiedener Bytes, die in den Leitungs-
Steuertabellen des Mehrleitungs-
Dialogprozessors enthalten sind;
Fig. 17 ein Flußdiagramm einer Abtastoperation, wie sie durch den
Mehrleitungs-Dialogprozessor verwendet
wird;
Fig. 18 ein Blockdiagramm der allgemeinen Betriebszustände des
Mehrleitungs-Dialogprozessors;
Fig. 19 ein Flußdiagramm zur Veranschaulichung der Zwischenhalt-
Funktion des Mehrleitungs-Dialogprozessor;
Fig. 20 ein detailliertes Logik-Blockdiagramm der in Hardware
verwirklichten Anweisungslogik des Mehrleitungs-
Dialogprozessors; und
Fig. 21 ein funktionelles Flußdiagramm der Firmware des
Mehrleitungs-Dialogprozessors.
Gemäß Fig. 1 ist eine typische Datenverarbeitungsanlage dargestellt,
die einen Mehrleitungs-Dialogprozessor MLCP 103 verwendet.
Die gemeinsame elektrische Systemsammelschiene 101 verbindet die
verschiedenen Komponenten des Datenverarbeitungssystems miteinander.
Eine Komponente des Datenverarbeitungssystems wird durch die
Zentraleinheit CPU 102 gebildet. Eine andere Komponente des Datenverarbeitungssystems
bildet die Speichereinheit 106. Zusätzlich
zu dem Mehrleitungs-Dialogprozessor 103 können typischerweise
andere Ein/Ausgabe-Steuerungen an die Sammelschiene 101 als Teil
der Datenverarbeitungsanlage angeschlossen sein. Im bevorzugten
Ausführungsbeispiel gibt es funktionsmäßig keine Beschränkung hinsichtlich
der Anzahl der zusätzlichen Steuerungen in der Datenverarbeitungsanlage,
sei es, daß es sich bei den anderen Steuerungen
um weitere Zentraleinheiten, Speicher, Dialogprozessoren MLCP oder
andere Ein/Ausgabe-Steuerungen für Geräte, wie beispielsweise Kartenleser
und Bandspeichereinheiten handelt. Einzelheiten eines solchen
Datenverarbeitungssystems und der Art und Weise, in der die verschiedenen
Einheiten mit der Systemsammelschiene 101 verbunden
werden, können der US-PS 39 93 981 entnommen werden.
Der Mehrleitungs-Dialogprozessor MLCP 103 kann beispielsweise vier
Dialog-Leitungsadapter CLA 104 aufweisen. Ein Adapter CLA 104 kann
beispielsweise entweder eine oder zwei Leitungsschnittstellen
zwischen den Dialogleitungen und dem Dialogprozessor MLCP 103 umfassen,
was von dem Umfang der Leitungs-Adapterfunktion abhängt,
die durch einen bestimmten Adapter CLA zu unterstützen ist. Die
Dialogleitungen, die mit dem Dialogprozessor MLCP 103 eine Schnittstelle
bilden, sind in Fig. 1 gemeinsam als Leitungen 105 bezeichnet.
Es sei darauf verwiesen, daß die Dialogleitungen in einfacher
Weise elektrische Verbindungen zu einem Gerät, wie beispielsweise
einem Terminal oder zu einem Modem über öffentliche Telefonleitungen
sein können.
Im bevorzugten Ausführungsbeispiel stellt jede Dialogleitung, die
eine Schnittstelle mit dem Prozessor MLCP bildet, einen vollständigen
Duplex-Datenweg dar, wie er in dem Buch "Introduction to
Teleprocessing" von James Martin, veröffentlich von Prentice-Hall,
Inc., 1972, auf den Seiten 35 und 36 beschrieben ist. Somit kann
jede Leitung als ein Paar von Ein/Ausgabe-Kanälen zu dem Datenverarbeitungssystem
betrachtet werden. Jeder Kanal ist in der Lage,
einen Nachrichten-Datenstrom zwischen Speicherblöcken in dem Speicher
106 und der Dialogschnittstelle 104 über Operationen vom direkten
Speicherzugriff-Typ (DMA = direct memory access) zu senden bzw.
zu empfangen. Beim Übertragen dieser Datenströme ist der Dialogprozessor
MLCP 103 in der Lage, Daten vollständig zu eliminieren,
die eine spezielle Zeichenerzeugung, eine spezielle Zeichenfeststellung
und eine Daten-Übertragungsblock-Prüfinformation aufweisen,
wobei alle diese Funktionen auf die spezielle Dialogleitung
(Kanal) zugeschnitten sind. Der Dialogprozessor ist aufgrund von
später noch zu erläuternden Dialog-Steuerprogrammen CCP ebenfalls
in der Lage, Funktionen und Umwandlungen von vorbestimmten Folgen
des Datenstromes aufzubereiten.
An der CLA-Schnittstelle 104 bildet der Adapter CLA sowohl die Dialog-
Leitungsschnittstelle als auch die Parallel/Serienumwandlung
des Bytes oder Zeichens des Datenstromes des Datenverarbeitungssystems
in einen seriellen Bitstrom für die Dialogleitung. Der Dialogprozessor
MLCP 103 steuert die Leitungsschnittstelle und liefert
Bytes bzw. Zeichen bei der Übertragung und bildet ein Bytepuffer
beim Empfang des Adapters CLA 104 in der erforderlichen Weise.
Der Mehrleitungs-Dialogprozessor MLCP gestattet einen direkten Zugriff
auf den Speicher 106, wobei dieser Zugriff durch die Dialog-
Steuerblöcke CCB definiert ist. Die Dialog-Steuerblöcke CCB werden
von dem Dialogprozessor MLCP benutzt, um die Adresse der benutzten
Speicherbereiche, den Umfang der benutzten Speicherbereiche, die
Steuerung des Datenzugriffes zu diesem Bereich und die Speicherung
von Statusergebnissen zu beschreiben, wobei die Statusergebnisse
aus Operationen erhalten werden, die diesen Bereich für eine
Datenblockübertragung zwischen der Dialogleitung und dem Rest des
Datenverarbeitungssystems benutzen. Es können beispielsweise Bits
zu vier Dialog-Steuerblöcken CCB pro Kanal (zwei Kanäle pro Leitung)
in dem Dialogprozessor MLCP vorliegen. Die Dialog-Steuerblöcke CCB
für jeden MLCP-Kanal, die in dem Dialogprozessor MLCP gespeichert
sind, werden durch von der Zentraleinheit CPU 102 bearbeitete Befehle
errichtet.
Fig. 2 zeigt das Format eines Dialog-Steuerblockes CCB. Der direkte
Speicherzugriff auf einen Bereich im Speicher 106, auf den durch
die Dialogleitung zugegriffen werden soll, wird durch seine Adresse
201 und den Umfang 202 dieses Speicherbereichs beschrieben. Das
fünfte Byte, das als Feld 203 gezeigt ist, enthält Steuerinformation,
die zu diesem Dialog-Steuerblock CCB gehört. Das I-Feld 204
zeigt bei einem Binärwert "1" an, daß ein Unterbrechungszustand zu
der Zentraleinheit 102 bei Vervollständigung entweder einer Lese-
oder Schreiboperation hinsichtlich dieses Speicherpuffers durch
eine DMA-Operation der Dialogleitung gesendet werden soll. Das SL-
Feld 205 zeigt bei einem Binärwert "1" an, daß der Dialog-Datenblock
CDB, auf den durch diesen Steuerblock CCB Bezug genommen wird,
für die Verwendung durch das Dialog-Steuerprogramm CCP verfügbar
ist, Dieses Feld wird durch einen Befehl "hole nächsten Block"
(GNB = get next block) zurückgestellt, wodurch die Verwendung dieses
Steuerblockes CCB beendet wird. Dieser Hinweis kann zu einem späteren
Zeitpunkt abgefragt werden. Das LB-Feld 206 zeigt bei einem
Binärwert "1" an, daß der durch diesen Steuerblock CCB beschriebene
Speicherbereich der letzte Speicherblock einer hinsichtlich
dieses speziellen Kanals übertragenen Nachricht ist. Die DMA-Operation
für diese Dialogleitung wird somit bei der Übertragung des
Endzeichens dieses Speicherblockes beendet. Das RFU-Feld 207 ist
vorgesehen, um mannigfaltige Erweiterungen der Funktionen des Dialogprozessors
MLCP zu gestatten. Das Statusfeld 208 wird von dem
Dialogprozessor MLCP benutzt, um Information zu speichern, die anzeigt,
ob die hinsichtlich des Speicherblockes ausgeführte DMA-
Operation erfolgreich war, und sofern dies nicht der Fall war,
welche Art von Fehlerzustand festgestellt wurde. Wenn beispielsweise
ein Paritätsfehler oder ein zyklischer Redundanzfehler festgestellt
wurde, so wird ein Bit in dem Statusfeld 208 gesetzt, um
dieses anzuzeigen.
Die Steuerung der Datenströme für jede der Dialogleitungen wird
durch Leitungs-Steuertabellen LCT und durch Dialog-Steuerprogramme
CCP gewonnen, welche durch Befehle von der Zentraleinheit CPU 102
in den Dialogprozessor MLCP geladen werden. Eine Leitungs-Steuertabelle
LCT ist einer einzigen Dialogleitung zugeordnet, die eine
Schnittstelle mit dem Dialogprozessor MLCP bildet (z. B. beide Richtungen
der vollständigen Duplexleitung und somit einem Paar von zugeordneten
Kanälen). Leitungs-Konfigurationsdaten, der Leitungs-
Status und Leitungs-Steuerinformation treten während MLCP-Operationen
in der Leitungs-Steuertabelle LCT auf. Jede Leitungs-Steuertabelle
LCT umfaßt einen Block von 64 aneinandergrenzenden Bytes,
die in drei Grundbereiche unterteilt werden können: Arbeitsbereich,
Empfangs-Kanalbereich und Sende-Kanalbereich. Die Leitungs-Steuertabellen
LCT werden für jede Leitung in den Dialogprozessor MLCP
geschrieben, die eine Schnittstelle mit der Zentraleinheit CPU 102
bildet.
In Fig. 3 ist eine typische Leitungs-Steuertabelle dargestellt. Die
Bytes 2 und 34 der Leitungs-Steuertabelle beschreiben die spezielle
Art der Leitungskonfiguration, zum Beispiel die Leitungsgeschwindigkeit,
die Zeichengröße usw. Die Bytes 3 und 4 ebenso wie die
Bytes 35 und 36 werden bei der zyklischen Redundanzprüfung verwendet,
die bei dem Datendialog hinsichtlich dieser Leitung benutzt
wird. Andere Felder enthalten Information sowohl für den Empfangskanal
als auch für den Sendekanal der Leitung; z. B. Information, wie
beispielsweise die spezielle Kanalnummer, die dieser Leistungsrichtung
zugeordnet ist, Statusinformation, Steuerinformation, Datenspeicherung
für die Wortinformation von zwei Byte, die auf dem
Sendekanal ausgesendet und auf dem Empfangskanal empfangen wird,
und andere Hinweise betreffend die Kanaloperationen, die nachstehend
näher beschrieben werden.
Die Befehle für den Dialogprozessor MLCP 103 zur Manipulation
der Daten in den Datenbereichen, wie sie durch die Dialog-Steuerblöcke
CCB beschrieben werden, sind in dem Kanal-Steuerprogramm
CCP gespeichert, das durch die Zentraleinheit CPU 102 in den Dialogprozessor
MLCP geladen werden kann. Jeder Kanal verweist über
die Leitungs-Steuertabelle auf ein Dialog-Steuerprogramm CCP, das
nur durch diesen Kanal oder gemeinsam mit anderen Kanälen in einem
Zurückverzweigungsmodus benutzt werden kann. Ein Dialog-Steuerprogramm
CCP kann zusätzlich modifiziert werden, um eine Änderung
hinsichtlich der Anforderungen des speziellen Kanals zu berücksichtigen.
Das Steuerprogramm CCP eines Kanals enthält Befehle, die
festlegen, wie der Dialogprozessor MLCP die Dialog-Datenströme
für jeden Kanal zu akzeptieren hat und wie er auf die Elemente
dieses Datenstroms einzuwirken hat. Ein Steuerprogramm CCP für
eine spezifische Dialogleitung wird durch die in der Steuertabelle
LCT enthaltene Hinweisadresse aufgesucht (siehe Fig. 3, Byte-
Adresse 6, 7, 18 und 19 für den Empfangskanal). Die CCP-Hinweisadresse
verweist auf den nächsten Speicherplatz, auf den durch den
Dialogkanal in dem Steuerprogramm CCP Bezug zu nehmen ist, wenn
eine Kanalbedingung vorgesehen werden muß. Die Anzahl von Maschinenbefehlen
in jedem Steuerprogramm CCP ist beliebig. Ein typisches
Steuerprogramm CCP wird später beschrieben.
Fig. 4 zeigt ein allgemeines Blockdiagramm des bevorzugten Ausführungsbeispieles
eines Mehrleitungs-Dialogprozessors MLCP 103.
Der Datenstrom 205 stellt den Dialog-Datenstrom dar, der von einer
der acht im vollen Duplex-Betrieb arbeitenden Dialogleitungen 212
bis 219 erhalten wird. Die 16 Kanäle (zwei Kanäle pro Leitung)
220 bis 235 stellen in dem vorliegenden Diagramm die Kanalpaare
für jede vollständige Duplex-Dialogleitung dar. Die Sammelschiene
101 stellt die elektrische Sammelschiene dar, welche ein Mittel
für den Nachrichtenaustausch zwischen dem Dialogprozessor MLCP
und den verbleibenden Einheiten des Datenverarbeitungssystems
bildet. Die Sammelschienen-Schnittstelle 202 führt die geeigneten
Hardwaredialoge, daß heißt die Informationsübertragungen hinsichtlich
der elektrischen Sammelschiene aus. Einzelheiten einer solchen
Sammelschienen-Schnittstelle können der eingangs erwähnten
US-PS 39 93 981 entnommen werden.
Der Dialogprozessor MLCP 206 steuert zentral die Operationen der
verschiedenen Dialog-Datenströme. Die Dialog-Leitungsadapter CLA 0
bis CLA 3, die durch die Blöcke 208 bis 211 veranschaulicht sind,
führen auf bis zu zwei Leitungen pro Adapter CLA Funktionen aus,
die von der Dialogleitung-Schnittstelle abhängig sind. Der Speicher
mit wahlfreiem Zugriff RAM 204 bildet den von dem Dialogprozessor
MLCP benutzten Speicher für die verschiedenen DAten und die Steuerinformation,
wie sie bei der Erläuterung der Dialogsteuerblöcke
CCB, der Leitungs-Steuertabellen LCT und der Dialogsteuerprogramme
CCP beschrieben wird.
Die MLCP-Pegelunterbrechungs- und Datenübertragungssteuerung 203
legt fest, wenn der Dialogprozessor MLCP Operationen auf der elektrischen
Sammelschiene hinsichtlich des Dialogs mit anderen Elementen
in dem Datenverarbeitungssystem ausführen sollte und wann
und welche Dialog-Leitungsadapter bedient werden sollen. Entsprechende
Einzelheiten hinsichtlich der Unterbrechungsstruktur können
der US-PS 39 84 820 entnommen werden. Die Block-Prüflogik 207
führt die zyklische Redundanzprüfung hinsichtlich der eingehenden
Dialogleitungsdaten durch und erzeugt die Block-Prüfzeichen für
die abgehenden Dialogleitungsdaten, was durch das Dialogsteuerprogramm
CCP für diese Leitung gesteuert wird.
Gemäß Fig. 5 ist ein detailliertes Blockdiagramm des in der Datenverarbeitungsanlage des Mehrleitungs-
Dialogprozessors dargestellt. Die
elektrische Sammelschiene 101 ist an die Sammelschienenregister-
und Steuerlogik 302 angeschlossen, die in der Schnittstelle 202
gemäß Fig. 4 enthalten ist.
Das in dem Prozessor 206 enthaltene Element 303 stellt das zentrale
Verarbeitungselement CPE des Dialogprozessors MLCP dar.
Das zentrale Verarbeitungselement CPE 303 verarbeitet jene Teile
der Datendialogfunktionen, die durch Mikroprogrammierung in dem
bevorzugten Ausführungsbeispiel ausgeführt werden, und es führt
ebenso einen Selbsttest des Dialogprozessors MLCP durch. Das Element
310 zeigt den Teil des Dialogprozessors MLCP, der den Teil
der Datendialogfunktionen bearbeitet, die in dem bevorzugten Ausführungsbeispiel
durch eine Art der Logik ohne jegliche Mikroprogrammbefehle
verwirklicht sind. Insbesondere wird die Logik 310
benutzt, um festzustellen, ob die durch den Dialogprozessor MLCP
zu bearbeitende Anweisung eine in Hardware verwirklichte Anweisung
oder eine in Firmware verwirklichte Anweisung ist, und die
Logik 310 liefert verschiedene Sammelschienen-Steuersignale sowie
eine CCB-Adresseninformation an den Speicher RAM 204. Das Element
313 liefert in Firmware verwirklichte E/A-Anweisungen (insbesondere
Datendialoge), und es stellt die Logik dar, die durch Firmwareanweisungen
im Steuerspeicher 308 des Zentralverarbeitungselementes
303 gesteuert wird.
Sowohl die durch die Firmware erzeugten E/A-Anweisungen 313 als
auch die durch die Hardware-erzeugen E/A-Anweisungen 310 koordinieren mittels
der Sammelschienenregister- und Steuerlogik 302 die Funktionen
des Dialogprozessors MLCP mit den externen Elementen des Datenverarbeitungssystems
über die Sammelschiene 101. Der Lese/Schreibspeicher
mit wahlfreiem Zugriff RAM 204 bildet den internen Speicher
des Dialogprozessors MLCP. Die Größe dieses Speichers 204 kann
beispielsweise so gewählt sein, daß er 4096 Bytes mit acht Bit
speichern kann. Das zentrale Verarbeitungselement CPE 303 und die
in Hardware verwirklichte E/A-Anweisungslogik 310 sind an den Speicher
RAM 204 angeschlossen.
Der Inhalt des Dialogprozessor-Speichers RAM 204 wird benutzt, um
die Operation eines jeden Dialogprozessorkanales zu steuern. Gemäß
Fig. 6 ist der Lese/Schreibspeicher RAM 312 in drei Basisteile unterteilt.
Der erste Teil bildet den Dialogsteuerblock-Bereich 250
wobei in einem geschützten Bereich des Speichers bis zu vier
Steuerblöcke CCB pro Kanal gespeichert sind. Auf diese Speicherplätze
kann nur durch E/A-Befehle oder durch einen Blocklese-
bzw. Schreibbefehl zugegriffen werden. Der zweite Teil wird durch
den Leitungssteuertabellen-Bereich 251 gebildet, wobei jede der
acht Leitungen des Dialogprozessors MLCP ihre eigene Leitungssteuertabelle
LCT besitzt und diese Tabelle jeweils Information bezüglich
des Status, der Konfiguration, der Betriebsvorbereitung und
der Steuerung der zugeordneten Leitung enthält. Schließlich ist
ein Kanalsteuerprogramm-Bereich 252 vorgesehen, in dem die Kanalsteuerprogramme
CCP gespeichert sind, die Befehlslisten bilden,
welche benutzt werden, um einen Datendialog-Zeichenstrom des Kanals
zu behandeln. Wie ersichtlich, gibt es beispielsweise acht Leitungssteuertabellen
LCT mit jeweils 64 Bytes (oder 16 LCT mit jeweils
32 Bytes und eine pro Kanal), was durch den Block 253 veranschaulicht
ist. Die Einzelheiten hinsichtlich des Inhalts einer jeden
Leitungssteuertabelle LCT sind aus Fig. 3 ersichtlich. Wie ebenfalls
erkennbar, gibt es vier Dialogsteuerblöcke CCB pro Kanal,
was durch den Block 254 veranschaulicht ist. Jeder Dialogsteuerblock
CCB besteht gemäß dem Block 255 und den in Fig. 2 dargestellten
Einzelheiten aus acht Bytes, so daß der Bereich 250 512 Bytes
für die acht Leitungen (16 Kanäle) umfassen muß.
Gemäß Fig. 5 stellt die Leitungs-Adapterschnittstelle 309 die
Hardwarelogik dar, welche eine Schnittstelle für die Daten- und
Steuerinformation zwischen dem Datenstrom 205 gemäß Fig. 4 und den
Dialog-Leitungsadaptern CLA bildet. Das Element 314 stellt die
Hardware dar, welche die Startadressen der Firmware-Mikroprogrammroutinen
erzeugt, um die geeigneten Firmwareprozeduren zu adressieren,
die die verschiedenen Datendialogfunktionen verwirklichen.
Der Ausgang des Firmware-Startadressengenerators 314 ist daher an
das zentrale Verarbeitungselement 303 angeschlossen. Das mit BLT
bezeichnete Element 316 stellt den Basislogiktest-Eingang für den
Firmware-Startadressengenerator 314 dar. Der Basislogiktest BLT
bildet eine zusätzliche Anforderung, um eine Firmwareroutinen-
Startadresse für die Test- und Überprüfungsroutine zu erzeugen,
die die Basislogiktest-Funktion durchführt.
Das Element 311 stellt die Hardwarelogik des zyklischen Redundanz-
Prüfgenerators und Prüfers dar, der die redundante Zeichenerzeugung
und Prüffunktion hinsichtlich der Daten-Dialogblöcke durchführte
(E/A-Anweisungslogik). Der Lese/Schreibspeicher 312 ist an den zyklischen Redundanz-
Prüfgenerator (CRC-Generator) angeschlossen, um einen den
speziellen Typ der geforderten zyklischen Redundanzprüfung beschreibenden
Eingang in Abhängigkeit von der speziell behandelten
Leitung zu liefern.
Der Leitungsadapter-Prioritätsunterbrechungs- und Adressengenerator
315 legt fest, welcher der vier Leitungsadapter des Dialogprozessors
MLCP bedient werden soll und welche der bis zu vier
Leitungsrichtungen (vier Kanäle) innerhalb des speziellen Leitungsadapters
zu bedienen ist. Jeder der 16 möglichen Kanäle des Dialogprozessors
MLCP besitzt eine Unterbrechungsleitung. Diese 16
Unterbrechungsleitungen bilden Eingänge für den Leitungsadapter-
Prioritätsunterbrechungs- und Adressengenerator 315. Der Generator
315 bildet eine Adresse mit vier Bit, die den Kanal mit der höchsten
Priorität bezeichnet, der auf eine Bedienung wartet. Die spezielle
Adresse wird auf einem Satz bistabiler Verriegelungen abgelegt,
die durch das zentrale Verarbeitungselement 303 (CPE) abgefragt
werden. Der Prioritätsunterbrechungs- und Adressengenerator 315
legt ferner die Priorität zwischen den anderen sich im Wettbewerb
befindlichen Elementen für eine Benutzung durch das zeitliche Verarbeitungselement
CPE fest. Beispiele für jene anderen Elemente
sind durch verzögerte Unterbrechungen und in Firmware verwirklichte
E/A-Anweisungen gegeben.
Es sei hier vermerkt, daß die Priorität der Kanäle innerhalb des
Dialogprozessors MLCP eine interne Priorität darstellt. Die Priorität
eines Kanals innerhalb des Dialogprozessors MLCP wird durch
jene Kanaladresse festgelegt, die von der CLA-Adapterposition des
Dialogprozessors MLCP abhängig. Die Adresse mit der niedrigsten
Nummer bildet den Kanal mit der höchsten Priorität. Typischerweise
besitzen die Daten-Dialogleitungen mit der höchsten Geschwindigkeit,
sofern sie nicht gepuffert sind, die niedrigste Adresse und
somit die höchste Priorität. Dem Dialogprozessor MLCP ist selbst
ferner eine unterschiedliche einzelne externe Priorität zugeordnet.
Diese externe Priorität stellt die Priorität des Dialogprozessors
MLCP im Hinblick auf andere an die Sammelschiene 101 angeschlossene
Einheiten dar.
Hinsichtlich des zentralen Verarbeitungselementes 303 befindet
sich insbesondere die mikroprogrammierte Firmware in dem Steuerspeicher
308. Der Steuerspeicher 308 ist ein Festwertspeicher ROM.
Der Generator 307 für die nächste Adresse erzeugt die Adresse des
nächsten Mikroprogrammbefehls, der durch das Element CPE 303 zu
bearbeiten ist. Es gibt zwei Eingänge hinsichtlich des Generators
307. Der erste Eingang wird durch eine Adresse von der Firmware-
Startadressenlogik 314 gebildet. Der andere Eingang wird durch den
Steuerspeicher selbst gebildet für den Fall, daß der vorangegangene
Befehl die nächste zu bearbeitende Adresse festlegt, wobei diese
Adresse im allgemeinen sich in der gleichen Firmware-Subroutine
befindet. Die Datenlogik 304 gibt Daten sowohl an die Dialogleitungen
als auch die Sammelschiene 101 aus. Das RAM-Adreßregister
305 speichert die acht niedrigrangigen Bits der Adresse, die zur
Adressierung des Lese/Schreibspeichers 204 benutzt wird. Zwölf
Bits werden für die Adressierung des Speichers mit 4069 Byte benötigt.
Die verbleibenden vier hochrangigen Bits sind in einem externen
Register gespeichert, das als Lese/Schreib-Additionsverriegelung
(Element 411 in Fig. 7) bezeichnet ist.
Das zentrale Element der Hardwarelogik des zentralen Verarbeitungselementes
CPE 303 wird durch vier hochintegrierte Schaltkreise
eines 2-Bit-Mikroprozessors gebildet, die zusammengeschaltet einen
8-Bit-Mikroprozessor bilden. In einem Ausführungsbeispiel wird der
integrierte 2-Bit-Mikroprozessorschaltkreis durch das zentrale
Verarbeitungselement 3002 der Firma Intel Corporation gebildet,
welches in der Veröffentlichung von Intel "Schottky Bipolar LSI
Microcomputer Set-3002 Central Processing Element", erschienen 1975,
beschrieben ist. Der Generator 307 für die nächste Adresse kann
durch einen hochintegrierten Schaltkreis gebildet werden, wie er
durch die mikroprogrammierte Steuereinheit 3001 der Firma Intel
Corporation vorliegt und wie er in der Veröffentlichung "Schottky
Bipolar LSI Microcomputer Set-3001 Microprogram Control Unit",
erschienen 1975, beschrieben ist. Diesen Veröffentlichungen kann
eine detaillierte Beschreibung der vorstehend genannten Einheiten
entnommen werden. Ferner sei auf die DT-OS 27 14 805 verwiesen,
in der ein typischer Generator für eine nächste Adresse beschrieben
ist.
Die zuvor beschriebene in Firmware verwirklichten E/A-Anweisungen
313 werden somit durch den mikroprogrammierten Mikroprozessor CPE 303
zusammen mit dem Steuerspeicher 308 und dem Generator 307 für
die nächste Adresse verwirklicht. Die zuvor beschriebene in Hardware
verwirklichte E/A-Anweisungslogik 310 wird vollständig unabhängig
von dem Mikroprozessor, d. h. von dem Betrieb des Elementes
CPE betätigt.
Die von der Hardware erzeugten E/A-Anweisungen sind jene, die der
Betriebsvorbereitung der Dialogsteuerblock-Operationen zugeordnet
sind. Die E/A-Anweisungslogik 310 verfolgt, wenn die Zentraleinheit
CPU 102 eine Anweisung auf der elektrischen Sammelschiene ausgibt,
die dem Dialogprozessor MLCP eine neue Adresse und einen
neuen Bereich für einen Datendialog-Speicherblock (in Form eines
Dialogsteuerblockes) vorgibt. Diese Hardwarelogik entscheidet, ob
dieser neue Informationsblock gültig ist (beispielsweise gibt es
eine neue Grenze von insgesamt vier Dialogsteuerblöcken CCB pro Kanal,
was im allgemeinen von der Größe des verfügbaren Speichers abhängt).
Mehrere Dialogsteuerblöcke CCB gestatten dem System, Daten in
aufeinanderfolgenden Blöcken ohne Unterbrechung der Datenübertragung
abzulegen. Wenn der neue Dialogsteuerblock CCB gültig ist,
so erhöht die Logik 310 eine interne Hinweisadresse für diesen
Kanal, dem der Dialogsteuerblock zugeordnet ist, und setzt die
geeigneten Hinweise für die Annahme oder die Zurückweisung des
nächsten Dialogsteuerblockes CCB, was im näheren anhand von Fig. 8
beschrieben wird.
Die E/A-Anweisungslogik 310 und der Mikroprozessor CPE 303 stehen
hinsichtlich der Benutzung des Lese/Schreibspeichers 204 miteinander
im Wettbewerb. Wenn ein Element den Speicher benutzt, so muß
das andere Element auf die Freigabe des Speichers warten.
Die Sammelschienenregister- und Steuerlogik 302 enthält ein 40-Bit-
Register zur Schnittstellenbildung mit den 16 Datenleitungen und
den 24 Adreßleitungen der elektrischen Sammelschiene 101. Das 40-
Bit-Sammelschienenregister wird parallel von der Sammelschiene geladen.
Der Mikroprozessor CPE 303 betreibt das Sammelschienenregister
als fünf Schieberegister mit acht Bit, wodurch ein Byte jedesmal
verschoben wird. Die Schnittstelle zwischen der Sammelschienenregister-
und Steuerlogik 302 und dem Mikroprozessor 303 ist
ein 8-Bit-Datenweg, der in den Datenabschnitt 304 des Mikroprozessors
303 verläuft. Dialoge auf der elektrischen Sammelschiene 101
umfassen eine Adresse und einen Funktionscode mit 6 Bit (oder E/A-
Anweisungscode), wobei dieser Code bis zu 2⁶ mögliche Funktionen
der Sammelschienenoperation festlegt. Die Sammelschienenregister-
und Steuereinheit 302 stellt fest, ob die Adresse auf der Sammelschiene
101 den Dialogprozessor MLCP 103 adressiert oder nicht.
Wenn die E/A-Anweisung den Dialogprozessor MLCP adressiert und von
dem Dialogprozesor als eine in Firmware verwirklichte Anweisung
erkannt wird, so erzeugt der Firmwareroutinen-Startadressengenerator
314 eine Adresse für die geeignete Routine in der zuvor beschriebenen
Weise.
Der Mikroprozessor 303 besitzt ferner die Fähigkeit, eine Firmwareroutine
zu bearbeiten, durch die ein Selbsttest des Dialogprozessors
MLCP durchgeführt wird. Die Adresse für diese Firmwareroutine
wird durch den Firmware-Adressengenerator 314 beim Vorliegen
einer Anweisung der BLT-Logik 316 erzeugt. Die Selbsttest-
Firmwareroutine wird aktiviert, nachdem eine Auslösung oder ein
Hauptlöschsignal auf der elektrischen Sammelschiene 101 festgestellt
wurde.
Der Zeilenadapter-Prioritätsunterbrechungs- und Adressengenerator
315 bildet ebenfalls einen Eingang für den Firmwareroutinen-Startadressengenerator
314. Diese Logik 315 fordert die Erzeugung einer
Firmwareroutine-Startadresse durch den Startadressengenerator
immer dann an, wenn eine Unterbrechungsbehandlung durch einen Leitungsadapter
gefordert wird. Wenn weder ein Selbsttest, noch eine
in Firmware verwirklichte E/A-Anweisung, noch eine Unterbrechungsbehandlung
für einen Leitungsadapter angefordert wird, so geht
das zentrale Verarbeitungselement 303 in den sogenannten Hintergrundbetrieb
über. Im Hintergrundbetrieb werden im wesentlichen
Bedienungsanforderungen abgetastet. In diesem Zustand werden fortwährend
Tests für irgendeinen der obigen Zustände durchgeführt,
die den Start einer neuen CPE-Subroutinebearbeitung erfordern.
Bevor der Dialogprozessor MLCP anhand der Fig. 7 und 8 näher erläutert
wird, sei der vorstehenden Sachverhalt nochmals zusammengefaßt.
Es wurde gezeigt, daß es sich bei dem Dialogprozessor MLCP 103
um einen programmierbaren Mehrleitungs-Dialogprozessor handelt,
der eine Schnittstelle zwischen der Sammelschiene 101 und bis zu
acht Vollduplex-Dialogleitungen bildet. Leitungen mit niedriger,
mit mittlerer und mit hoher Geschwindigkeit von beispielsweise bis
zu 72 000 Bits pro Sekunde können hinsichtlich der Datenübertragung
durch den Dialogprozessor MLCP unterstützt werden. Der Dialogprozessor
MLCP umfaßt die hinsichtlich aller Dialogleitungen gemeinsam
benutzten Elemente. Diese Elemente umfassen den durch die Firmware
gesteuerten Mikroprozessor, einen Speicher mit wahlfreiem
Zugriff RAM,
eine Block-Prüflogik und die Sammelschienenschnittstelle. Eine
leitungsspezifische Logik ist in den Adaptern CLA enthalten, die
an den Dialogprozessor MLCP angeschlossen sind. Jeder Adapter CLA
verbindet entweder eine oder zwei Leitungen. Der Dialogprozessor
MLCP entbindet den zentralen Prozessor 102 hinsichtlich der Dialogverarbeitung
von dem größten Teil seiner Verantwortlichkeiten.
Auf der Benutzerseite geschaffene Kanalsteuerprogramme CCP, die
von einem MLCP-spezifischen Befehlssatz gebildet werden, werden
in den Speicher RAM des Dialogprozessors MLCP zusammen mit anderer
Steuerinformation geladen, wodurch sie während der Dialogbearbeitung
typischerweise die folgenden Funktionen ausführen:
Übertragung von Dialogdaten zu und/oder von Dialog-Datenblöcken CDB in dem Hauptspeicher; Nachrichtentrennung; Steuerzeichenfeststellung; Paritäts- und/oder zyklische Redundanz-Prüferzeugung und Überprüfung; und kleinere Aufbereitungsfunktionen.
Übertragung von Dialogdaten zu und/oder von Dialog-Datenblöcken CDB in dem Hauptspeicher; Nachrichtentrennung; Steuerzeichenfeststellung; Paritäts- und/oder zyklische Redundanz-Prüferzeugung und Überprüfung; und kleinere Aufbereitungsfunktionen.
Jede mit einem Adapter CLA verbundene Leitung bildet einen Vollduplex-
Datenweg und jede Leitungsrichtung bildet einen Kanal zu
dem Dialogspeicher zwischen Dialog-Datenblöcken im Hauptspeicher und externen
Dialoganschlüssen zu empfangen oder zu senden. Diese Daten
können als ein sequenzieller Strom angesehen werden, wobei der
Dialogprozessor MLCP die erforderliche Steuerung und Transformation
der Hauptspeicherdaten in und aus den Datenformaten vornimmt,
die für die Dialogleitungen und Anschlüsse erforderlich sind.
Jedes den Dialogprozessor MLCP passierende Datenzeichen wird individuell
behandelt, wobei dies durch das Kanalsteuerprogramm CCP
vorgegeben wird. Bei der Übertragung dieses Datenstromes kann das
Kanalsteuerprogramm CCP ebenfalls so programmiert sein, daß es bestimmte
Datenelemente oder Folgen von Datenelementen als Steuerzeichen,
Nachrichtenbegrenzungen, DMA-Blockgrenzen oder Block-Prüfzeichen
erkennt.
Der Dialogprozessor MLCP unterstützt die Schnittstelle zu den
Dialog-Datenblöcken CDB im Hauptspeicher mittels der Dialog-
Steuerblöcke CCB, die in dem Speicher RAM des Dialogprozessors
MLCP durch Ein/Ausgabe-Befehle, die in der Zentraleinheit bearbeitet
werden, errichtet und aufrechterhalten werden. Die Adapter
CLA bilden Leitungsschnittstellen, die Ausgangs-Datenzeichen in
eine serielle Bitform während Sendeoperationen umwandeln und Eingangsdaten
in serieller Bitform während Empfangsoperationen in
Datenzeichen umwandeln. Der Dialogprozessor MLCP steuert die Leitungsschnittstelle,
die beim Senden Datenzeichen an den Adapter
CLA liefert. Wenn die Daten den Dialogprozessor MLCP von der Sammelschiene
zu dem Adapter CLA oder umgekehrt durchlaufen, so übt
das Dialogsteuerprogramm CCP des Dialogprozessors MLCP die Steuerung
über den Inhalt und das Format des Datenstromes aus und erzeugt
geeignete Unterbrechungen sowie Status- und Steuerinformation,
wie dies durch den MLCP-Operator in dem Kanalsteuerprogramm
festgelegt ist bzw. durch die Firmware infolge von durch den Operator
gesetzten Indikatoren erzeugt wird. Die Steuerinformation für
jeden Kanal wird in der Leitungssteuertabelle LCT für den Kanal
gespeichert. Die Auslegung des Speichers RAM des Dialogprozessors
MLCP unter Berücksichtigung der Bereiche für LCT, CCP und CCB ist
in Fig. 6 gezeigt worden. Zusätzlich zu der Fähigkeit des Dialogprozessors
MLCP, die Datenübertragungen und die zugehörige Nachrichtenbegrenzung
bzw. Ausgabe für Datendialoge zu erleichtern,
besitzt dieser die Fähigkeit, die in dem Adapter CLA für jede Dialogleitung
vorgesehene Schnittstelle zu steuern. Die Daten für
diese letztgenannte Funktion sind in ausgewählten Bytes der Leitungssteuertabelle
gespeichert. Diese Daten können durch CCP-Befehle
modifiziert und gesteuert werden, wie dies in einem speziellen
Anwendungsfall gefordert wird.
Die Bearbeitungsprioritäten (von oben nach unten) des Dialogprozessors
MLCP sind folgende: Behandlung von Hauptspeicher-Programm-
Ein/Ausgabe-Befehlen an den Dialogprozessor MLCP; Behandlung von
CLA-Kanalunterbrechungsanforderungen; und Hintergrund-Firmwareabtastung,
Hauptspeicher-Programm-Ein/Ausgabe-Befehle an den Dialogprozessor
MLCP werden mit der höchsten Priorität behandelt. Der
Dialogprozessor MLCP antwortet auf CLA-Kanal-Unterbrechungsanforderungen,
wenn keine Ein/Ausgabe-Befehle von dem Hauptspeicherprogramm
in bezug auf den Dialogprozessor MLCP vorliegen. Der
Dialogprozessor MLCP behandelt die Kanäle auf einer
Prioritätsbasis. Wenn mehr als ein Kanal eine CLA-Kanal-Unterbrechungsanforderung
aufweist, die auf eine Behandlung durch den
Dialogprosessor MLCP wartet oder wenn gleichzeitig Kanal-Unterbrechungsanforderungen
auftreten, so werden diese von dem Dialogprozessor
MLCP entsprechend ihren Prioritätspegeln behandelt. Der
Prioritätspegel eines Kanales ist in einfacher Weise eine Funktion
der Kanalnummer, wobei der mit der niedrigsten Nummer versehene
Kanal die höchste Priorität aufweist. Eine Hintergrund-
Firmwareabtastung der Aktivitäten innerhalb des Dialogprozessors
MLCP findet statt, nachdem der Dialogprozessor MLCP alle Hauptspeicher-
Programm-Ein/Ausgabe-Befehle an den Dialogprozessor und
alle CLA-Kanal-Unterbrechungsanforderungen behandelt hat. Diese
Abtastung kann benutzt werden, um das Hauptspeicherprogramm zu
unterbrechen oder einen Adapter CLA immer dann zu starten, wenn
eine Datengruppe oder eine CLA-Statusänderung aufgetreten ist.
Eine Firmwareabtastung und darauf bezogene Aktionen werden hinsichtlich
eines Kanales freigegeben durch das Setzen bestimmter
Bitposition in der Leitungssteuertabelle LCT dieses Kanals. In
einem Ausführungsbeispiel tritt die Firmwareabtastung typischerweise
mindestens alle halbe Sekunde auf.
Zusätzlich zur Errichtung eines Hauptspeicherprogrammes, das in
dem Zentralprozessor 102 wirksam ist, muß der Programmierer des
Dialogprozessors MLCP die folgende Information bzw. Programme in
den Dialogprozessor MLCP einschreiben: Dialogsteuerblöcke; Kanalsteuerprogramme;
und Leitungssteuertabellen. Bevor die Dialogbearbeitung
beginnt, müssen die Kanalsteuerprogramme und die Leitungssteuertabellen
vorbereitet und in den Dialogprozessor MLCP
geladen worden sein. Die Dialogsteuerblöcke werden dynamisch
durch das Hauptspeicherprogramm während der Dialogbearbeitung geliefert.
Ein oder mehrere Programme müssen sich im Hauptspeicher befinden,
um mit dem Dialogprozessor MLCP zusammenzuarbeiten. Ein
Hauptspeicherprogramm bildet eine Schnittstelle mit einem oder
mehreren Dialogkanälen. Die allgemeinen Verantwortlichkeiten
eines Hauptspeicherprogrammes sind folgende: es schreibt wahlweise
den LCT-Bereich und den CCP-Bereich des Speichers RAM des
Dialogprozessors MLCP als Teil des Ladeprozesses bei der Dialoganwendung.
Es speichert MLCP-Kanal-Unterbrechungspegel in Leitungssteuertabellen
LCT (es sei denn, diese Aktion ist während
des Ladens des Speichers RAM des Prozessors MLCP durchgeführt
worden) und behandelt sodann alle Unterbrechungen, die auf diesen
Pegeln zurückkommen. Es führt MLCP- und Kanal-Steuerfunktionen,
wie beispielsweise die Auslösung und den Start bzw. den Stop von
Kanaloperationen bei festgestellten Fehlern durch. Es errichtet
die geforderten Dialogsteuerblöcke CCB und hält diese während
der Bearbeitung aufrecht. Es unterhält Dialogdatenblöcke CDB im
Hauptspeicher. Diese Aktivität umfaßt erstens die Behandlung der
Dialogdatenblöcke CDB, wenn sie vervollständigt sind, zweitens
die Bildung von Hinweisadressen auf die Dialogdatenblöcke (zwecks
Benutzung durch die Dialogsteuerblöcke CCB), falls erforderlich,
und drittens die Überwachung des Status und der Fehlerzustände
für jeden Dialogdatenblock CDB und die geeignete Reaktion. Es
überwacht den Status der Dialogschnittstelle und die Adapter CLA
und nimmt die geeigneten Maßnahmen vor, wenn bestimmte Änderungen
stattfinden.
Für jeden Kanal existiert in dem Speicher RAM des Dialogprozessors
MLCP Speicherraum für eine Liste von vier aufeinanderfolgenden
Dialogsteuerblöcken CCB mit 8 Byte. Jeder Dialogsteuerblock CCB
wird benutzt, um Hauptspeicher-Adresseninformation zu speichern,
die den Bereich angibt, an den Dialogdaten abzugeben sind
(Empfangsoperation) oder von dem Dialogdaten erhalten werden
(Sendeoperation). Der Hauptspeicherbereich wird als Dialogdatenblock
CDB bezeichnet. Die Firmware des Dialogprozessors MLCP benutzt
die von dem Programmierer gelieferte Information in dem
Dialogsteuerblock CCB bei der Übertragung von Daten zu oder
von dem Hauptspeicher CDB. Der Dialogsteuerblock CCB enthält
ebenfalls ein Steuerfeld und einen Firmware-Speicherbereich für
Status- und Fehlerhinweise, die sich auf die Datenübertragung zu
oder von dem Dialogdatenblock CDB beziehen. Die Errichtung und
Aufrechterhaltung der vier einem jeden Kanal zugeordneten Dialogsteuerblöcke
CCB muß durch das diesem Kanal zugeordnete Hauptspeicherprogramm
durchgeführt werden.
Ein Kanalsteuerprogramm CCP steuert die Bewegung eines jeden Datenzeichens
durch den Dialogprozessor MLCP. Das Kanalsteuerprogramm
CCP kann eine Bearbeitung des Datenzeichens in einer einfachen
geradlinigen Weise mit einem Minimum an Zeitaufwand hervorrufen
bzw. kann diese Bearbeitung ausführen, wobei das Kanalsteuerprogramm
ausgeprägte Prüf- und Vorbereitungsfunktionen ausführt.
Wenn das Kanalsteuerprogramm CCP aufgrund seiner Programmierung
Nachrichtenbegrenzungs- und Block-Prüfungsfunktionen ausführt,
so geht diese Bearbeitung auf Kosten des Datendurchflusses.
Aufgrund der Natur der Befehlsgruppe und des Entwurfs des Dialogprozessors
MLCP wird jedes Kanalsteuerprogramm zurückgeführt
und ist deshalb für mehr als einen Kanal verwendbar. Ein Hauptfaktor,
der die Rückführung des Kanalsteuerprogrammes CCP gestattet,
liegt darin, daß sie zum Betrieb eines Kanales erforderliche
Steuerinformation in der Leitungssteuertabelle LCT gespeichert
ist und der Dialogsteuerblock CCB nur einem Kanal zugeordnet ist.
Die folgenden Funktionen können durch ein Kanalsteuerprogramm
ausgeführt werden: Datenaufbereitung; Paritäts- und/oder zyklische
Redundanz-Prüferzeugung und Überprüfung; Dialogschnittstelle
und Fehlerfeststellung und Behandlung. Alle gleichzeitig in dem
Dialogprozessor MLCP vorliegenden Kanalsteuerprogramme CCP benutzen
die 3072 Bytes des Speichers RAM, die für die Verwendung
dem Kanalsteuerprogramm zugeteilt sind.
Für jede Leitung ist Speicherraum in dem Speicher RAM des Dialogprozessors
MLCP für eine Leitungs-Steuertabelle von 74 Byte
vorgesehen. Jede Leitungs-Steuertabelle LCT ist logisch in zwei
Hälften unterteilt, wobei die ersten 32 Bytes dem Empfangskanal
der Leitung und die zweiten 32 Bytes dem Sendekanal der Leitung
zugeteilt sind. Jede kanalbezogene Hälfte einer Leitungs-Steuertabelle
umfaßt die folgenden Elemente: vom Programm gelieferte
Eingangsdaten umfaßt die folgenden Elemente: vom Programm gelieferte
Eingangsdaten; Programmier-Arbeitsbytes; durch die Firmware gelieferte
Programmierinformation; und für eine Firmwarebenutzung
reservierte Bytes. Die vom Programm gelieferten Eingangs-Datenbytes
bilden eine Information, die für die Zeichenkonfiguration,
die CCP-Steuerung, die Unterbrechungssteuerung, die auf den Status
und die Fehlerzustände bezogene Firmwaresteuerung, den Datensatz
und die CLA-Adaptersteuerung erforderlich ist. Die Programm-
Arbeitsbytes können in irgendeiner von dem Hauptspeicherprogramm
oder dem Kanalsteuerprogramm CCP geforderte Weise benutzt werden.
Die von der Firmware gelieferte Programmierinformation besteht
aus Status- und Fehlerinformation bezogen auf den Datensatz bzw.
die Adapter CLA sowie auf Datenübertragungsoperationen. Eine Anzahl
von Bytes ist für eine Benutzung durch die Firmware reserviert.
In den Fig. 9 und 10 ist die allgemeine Reihenfolge der Ereignisse
gezeigt, die auftreten, wenn Daten über einen Kanal empfangen
bzw. gesendet werden. Gemäß Fig. 9 erzeugt ein über die
Leitung 1R in einen Empfangskanal-Leitungsregister des Adapters
CLA empfangenes Datenzeichen eine Kanal-Unterbrechungsanforderung
an den Dialogprozessor MLCP auf der Leitung 2R. Daraufhin wird
das Kanalsteuerprogramm CCP ausgelöst, und es lädt das empfangene
Datenzeichen in das R-Register des Dialogprozessors MLCP, das
durch eines der in dem zentralen Verarbeitungselement CPE 303 enthaltene
Register gebildet wird. Wie durch das Symbol 3R angedeutet,
bereitet das Kanalsteuerprogramm CCP das Datenzeichen in
dem R-Register in der erforderlichen Weise auf bzw. modifiziert es,
und bei 4R überträgt das Kanalsteuerprogramm CCP das Datenzeichen
von dem R-Register in einen Dialog-Datenblock CDB im Hauptspeicher
106. Das Programm CCP tritt sodann in einen Wartemodus
ein und der Dialogprozessor MLCP startet mit der Bearbeitung der
nächsten anstehenden Funktion.
Gemäß Fig. 10 erzeugt der Adapter CLA eine Kanal-Unterbrechungsanforderung
zum Zeitpunkt 1T, was bedeutet, daß er ein Datenzeichen
zum Senden aufnehmen kann. Über die Linie 2T lädt das Programm
CCP ein Datenzeichen von dem Hauptspeicher-Dialogdatenblock
CDB in das R-Register des Dialogprozessors MLCP. Wie durch das
Symbol 3T angezeigt, bereitet das Programm CCP das Datenzeichen
in dem R-Register in der erforderlichen Weise auf bzw. modifiziert
es und sendet sodann über die Leitung 4T das Datenzeichen zu
dem Sendekanal-Leitungsregister des Adapters CLA. Von dort aus
wird das Datenzeichen automatisch übertragen. Das Programm CCP
nimmt nunmehr einen Wartemodus ein und der Dialogprozessor MLCP
beginnt mit der Bearbeitung der nächsten vorliegenden Funktion.
Beim Datenempfang zeigt eine Kanal-Unterbrechungsanforderung von
dem Adapter CLA dem Dialogprozessor MLCP an, daß ein Eingangs-
Datenzeichen in einem Empfangskanal-Leitungsregister des Adapters
CLA verfügbar ist. Der Dialogprozessor MLCP führt eine Wiederherstellung
des Zusammenhangs für den Kanal durch (Vorbereitung des
geeigneten Programmes CCP für die Bearbeitung). Das Programm CCP
wird mit dem Befehl eingeschaltet, der gerade nach dem vorangegangenen
Warte-Befehl, der durch dieses Programm CCP bearbeitet
wurde, aufgetreten ist. Das Programm CCP benutzt einen Empfangs-
Befehl (RECV-Befehl), um das R-Register des Dialogprozessors MLCP
mit dem Datenzeichen von dem Leitungsregister zu laden. Das Programm
CCP bereitet das Datenzeichen in dem R-Register in der erforderlichen
Weise auf und manipuliert dieses entsprechend der
Aufgabe. Das Programm CCP überträgt sodann das Datenzeichen von
dem R-Register zu dem Dialogdatenblock CDB mittels eines Speicher-
Befehls (ST-Befehl). Sodann verzweigt das Programm CCP zurück zu
dem Warte-Befehl. Dies ist das grundlegende Dialogsteuerprogramm
CCP der Empfangs-Bearbeitungsschleife für jedes Datenzeichen einer
Dialognachricht. Die Schleife kann ebenfalls Verzweigungs- und/
oder TLU-Befehle (TLU = Tabel Look-Up = Tabellenabsuche) für andere
auf das Datenzeichen bezogene Prüfungen enthalten. Eine CCP-Subroutine
kann ebenfalls verwendet werden.
Beim Senden von Daten gibt der Adapter CLA eine Kanal-Unterbrechungsanforderung
an den Dialogprozessor MLCP aus, wodurch angezeigt
wird, daß der Adapter bereit ist, ein Datenzeichen zum Senden
aufzunehmen. Das Programm CCP wird nach Wiederherstellung des
Zusammenhangs eingeschaltet. Das Programm CCP lädt sodann entweder
ein Datenzeichen in das R-Register des Dialogprozessors MLCP
oder benutzt das erneut in das R-Register während der Wiederherstellung
des Zusammenhangs geladene Zeichen. Als nächstes kann
das Programm CCP das Datenzeichen in der erforderlichen Weise aufbereiten
bzw. manipulieren, bevor es zu dem Sendekanal-Leitungsregister
des Adapters CLA mittels eines Sende-Befehls übertragen
wird. Das Datenzeichen wird sodann automatisch von dem Adapter CLA
übertragen. Falls gefordert, kann nach Ausgabe des Sende-Befehls
das Programm CCP unmittelbar einen Warte-Befehl ausgeben. In diesem
Fall wird bei der nächsten Aktivierung des Programms CCP das
R-Register mit dem als nächstem zu übertragenden Datenzeichen geladen
bevor ein Sende- und ein Warte-Befehl ausgegeben wird. Alternativ
kann nach Ausgabe des Sende-Befehls das Programm CCP das
R-Register mit dem als nächstem zu übertragenden Datenzeichen
laden bevor der Warte-Befehl ausgegeben wird. In diesem Fall wird
das Datenzeichen erneut in das R-Register während der die Reaktivierung
des Programms CCP begleitenden Wiederherstellung des
Zusammenhangs geladen.
Die Beziehung zwischen physikalischen Dialogdatenblöcken CDB und
logischen Dialognachrichten wird vollständig durch das Programm
gesteuert. Wenn im Empfangsmodus das Programm CCP einen Speicher-
Befehl hinsichtlich des letzten Zeichens in einem Dialogdatenblock
CDB bearbeitet, vermindert sich der Bereich des Dialogsteuerblockes
CCB auf Null und der letzte Zeichenhinweis wird auf
1 gesetzt. Zwecks Prüfung des Endes der Empfangsdaten bevor ein
Dialogdatenblock CDB gefüllt wird, kann das Programm CCP eine
Suche hinsichtlich eines spezifischen Steuerzeichens in dem Eingangs-
Datenstrom vornehmen. Das Programm CCP kann einen TLU- oder
einen C-Befehl (Tabellenabsuch- oder Vergleichs-Befehl) zum Prüfen
dieser Bedingung benutzen. Immer wenn die Bearbeitung in der
Nähe eines Dialogdatenblockes CDB endet, kann das Programm CCP
den nächsten Dialogdatenblock CDB durch Ausgabe eines GNB-Befehls
(GNB = Get Next Block = hole nächsten Block) gewinnen. Im Sendemodus
tritt die Beendigung einer CDB-Bearbeitung normalerweise auf, wenn
der CCB-Bereich auf Null abgenommen hat und der letzte Zeichenhinweis
gesetzt ist. In einigen Fällen kann aufgrund irgendwelcher
anderer Zustände, die durch das Programm CCP entdeckt werden, eine
frühere Beendigung erforderlich sein. In jedem Fall muß das Programm
CCP einen GNB-Befehl ausgeben, um die Übertragung mit einem
anderen Dialogdatenblock CDB und Dialogsteuerblock CCB fortsetzen
zu können.
Wie zuvor erwähnt, wird die Beziehung zwischen physikalischen Dialogdatenblöcken
CDB und logischen Dialognachrichten vollständig
durch das Programm gesteuert. Wenn eine logische Dialognachricht
nur einen Dialogdatenblock CDB benutzt, so erfolgt die Behandlung
dieses Dialogdatenblockes CDB grundsätzlich in der zuvor beschriebenen
Weise. Anstelle des routinemäßigen Fortschreitens des Programmes
CCP von einem Dialogdatenblock CDB zu einem anderen kann
jedoch die CDB-Bearbeitung entsprechend der vorliegenden Aufgabe
fortschreiten. Wenn logische Dialognachrichten mehr als einen Dialogdatenblock
CDB umfassen, so können einzelne Nachrichten entweder
eine variable oder eine feste Anzahl von Dialogdatenblöcken
CDB benutzen. In jedem Fall kann der letzte Dialogdatenblock CDB
in einer Nachricht durch das Programm CCP identifiziert werden,
wenn das Hauptspeicherprogramm den Hinweis (LB) auf den letzten
Block in dem CCB-Steuerbyte gesetzt hat. Der Hinweis auf den
letzten Block kann durch einen E/A-Befehl von dem Hauptspeicherprogramm
gesetzt werden. Im Empfangsmodus kann der letzte Dialogdatenblock
CDB durch ein Steuerzeichen in dem eingehenden Datenstrom
bezeichnet werden.
Gemäß Fig. 7 ist ein detailliertes Blockdiagramm der Hardware
des Mehrleitungs-Dialogprozessors MLCP 103 dargestellt, der sowohl
im Hinblick auf die Leitungsadapter (Adapter CLA 104 in Fig. 1)
als auch in bezug auf die mit der elektrischen Sammelschiene 401
zusammenarbeitende Hardware/Firmware eine Schnittstelle bildet.
Das Element bzw. die Leitungen 401 bilden die Schnittstelle zwischen
den Adaptern CLA und dem Dialogprozessor MLCP. Innerhalb
dieser Schnittstelle legen vier CLA-Auswahlleitungen, die durch
den Decodierer 418 von der CLA-Adressenverriegelung 412 decodiert
werden, fest, welchem Leitungsadapter die Schnittstellennachricht
zuzuordnen ist. Der Leitungsadapter bildet vom Standpunkt des zentralen
Verarbeitungselementes CPE eine Gruppe von bis zu acht Registern.
Die gesamte Gruppe von Leitungsadaptern kann somit als
eine Gruppe von acht Registern angesehen werden, die durch die
drei Steuerleitungen und die CLA-Adreßleitungen adressiert werden,
wobei eine CLA-Auswahlleitung und zwei codierte Leitungen der CLA-
Adressenverriegelung 412 einen von vier möglichen Kanälen eines
jeden Adapters CLA festlegen. Die acht Ausgangs-Datenleitungen in
der Schnittstelle dienen der Informationsübertragung von dem Dialogprozessor
MLCP zu den Adaptern CLA. An der Schnittstelle werden
ebenfalls 16 Signale (CRI) von jedem Adapter CLA zu der MLCP-
Prioritäts-Adressencodierlogik 413 übertragen, wobei jedes Signal
einen Unterbrechungszustand für den zugeordneten Kanal repräsentiert.
Die Schnittstelle besitzt einen CLA-Tasteingang von dem Dialogprozessor
MLCP, um anzuzeigen, wenn die Daten auf den MLCP-Ausgangsleitungen
gültig sind. Es gibt vier Gruppen von 8-Bit-Eingangs-
Datenleitungen, die von den vier Adaptern CLA übertragen
werden. Ferner gibt es ein Auslösesignal vom dem Dialogprozessor
MLCP an die Adapter CLA.
Die CLA-Schnittstelle besitzt drei Taktsignale, welche von dem
MLCP-Takt 402 übertragen werden. Ein Takt wird für die direkte
Verbindung von Synchronleitungen und in dem Fall benutzt, wo ein
Modem nicht benutzt wird. Es gibt ferner ein Taktsignal mit
921,6 kHz, das an die Adapter CLA zwecks Ansteuerung der Logik gesendet
wird und das die Bitrate festgelegt, die bei Übertragungen
auf der Dialogleitung benutzt wird. Dieses zweite Taktsignal wird
von asynchronen Adaptern CLA benutzt, um einen Bandfrequenzgenerator
anzusteuern, der einen Takt für die asynchronen Leitungen
erzeugt. Die Takteinheit 402 liefert ferner einen Systemtaktzyklus
von 240 ns, der von dem Logikteil 3002 des zentralen Verarbeitungselementes
CPE 303 gefordert wird. Dieser Systemtakt ist der
dritte Takt hinsichtlich der Adapter CLA und er wird zum Synchronisieren
von Unterbrechungen benutzt.
Die vier integrierten Schaltkreise des 3002-CPE-Mikroprozessors
bilden die arithmetischen, logischen und Zwischenspeicherregister-
Funktionen des Dialogprozessors MLCP. Der Zwischenspeicher enthält
10 Register für allgemeine Zwecke und temporäre Speicherplätze.
Daten von Quellen außerhalb der integrierten Schaltkreise
des 3002-CPE-Mikroprozessors werden auf einer von drei getrennten
Eingangs-Sammelschienen dem Mikroprozessor zugeführt. Von dem
Mikroprozessor CPE ausgesandte Daten werden auf zwei Ausgangs-
Sammelschienen herausgeführt. Innerhalb des Mikroprozessors CPE
werden die Daten in dem Zwischenspeicher oder im Hauptspeicher gespeichert.
Daten von den Eingangs-Sammelschienen, den Registern
oder dem Hauptspeicher sind für den Arithmetik/Logik-Abschnitt ALS
unter Steuerung von zwei internen Multiplexern verfügbar. Zusätzliche
Eingänge und Ausgänge sind für einen Übertrag, eine Verschiebung
und eine Mikrofunktionsauswahl vorgesehen. Es gibt einen
Mikrofunktions-Sammelschienen-Eingang für sieben Signale, der von
dem Steuerspeicher 308 direkt an das Element CPE angeschlossen
ist. Diese Signale wählen die ALS-Funktion aus, erzeugen eine
Zwischenspeicheradresse und steuern interne Multiplexer, die verschiedene
Eingänge von den Mehrfach-Eingangsschienen auswählen.
Der Steuerspeicher 308 kann 1536 Worte mit jeweils 32 Bit aufweisen.
In jedem Taktzyklus von 240 ns wird ein Steuerspeicherwort
abgerufen und von dem Element CPE 303 bearbeitet. Nur sieben
von den 32 Bits werden direkt in das Element CPE eingegeben, um
seine Operationen in einem vorgegebenen Taktzyklus zu steuern.
Diese sieben Bits sind die sieben Mikrofunktionssignale, die zuvor
erwähnt wurden. Die spezifischen Aktionen, die durch jede mögliche
Kombination der sieben Mikrofunktionssignale hervorgerufen
werden können, sind in der zuvor erwähnten Veröffentlichung
"Schottky Bipolar LSI Microcomputer Set-3002 Central Processing
Element" beschrieben. Sieben weitere Bits eines Steuerspeicherwortes
werden direkt in den Generator 426 für die nächste Adresse
eingegeben. Diese Bits der nächsten Adresse zusammen mit den CPE-
Verzweigungsbefehlen werden benutzt, um die Adresse des nächsten
Steuerspeicher-Mikrobefehlswortes zu bilden, das abgerufen und bearbeitet
werden soll. Das detaillierte Format des Steuerspeicher-
bzw. Firmwarewortes kann der Fig. 12 entnommen werden. Die Bits
0 bis 6 werden von dem Mikroprozessor benutzt, um die auszuführende
Funktion festzulegen. Die Bits 00 bis 02 werden decodiert, um die
Funktion festzulegen, während die Bits 03 bis 06 decodiert werden,
um das gewünschte Mikroprozessor-Zwischenspeicherregister auszuwählen.
Das Bit 7 dient einem doppelten Zweck. Hinsichtlich des
Speichers RAM 312 wird das Zugriffsbit 7 bei einer Schreiboperation
auf den Wert "1" und bei einer Leseoperation auf den Wert "0"
gesetzt. Das Bit 7 legt die Benutzung der Steuerspeicherbits 27
bis 31 fest. Wenn das Bit 7 den Wert "1" aufweist, so werden die
Bits 27 bis 31 für die Auswahl der Eingänge der M-, I-, und CRC-
Multiplexer benutzt. Wenn das Bit 7 den Wert "0" aufweist, so werden
die Bits 27 bis 31 benutzt, um eine Anzahl von MLCP-Tastsignalen
zu erzeugen. Die Bits 8 bis 15 werden als Maskierungsbits
(K-Bits) von dem Mikroprozessor benutzt. Die Bits 16 bis 26 werden
von der Mikroprogramm-Steuereinheit als Eingänge für den Generator
für die nächste Adresse (Bits 16 bis 22) und für die Hinweissteuerlogik
(Bits 23 bis 26) benutzt. Die Bits 27 bis 31 können
für die Eingangsauswahl der Multiplexer oder für die Tastimpulserzeugung
entsprechend dem Zustand des Steuerspeicherbits 7 benutzt
werden.
Acht Bits der von dem Steuerspeicherwort kommenden Bits bilden
die sogenannten K-Leitungen. Der K-Maskierungseingang des Elementes
CPE 303 kann benutzt werden, um bestimmte Bits für Bit-Testoperationen
innerhalb des Elementes CPE zu unterdrücken. Die K-
Maskierung kann ebenfalls während arithmetischer Operationen des
Elementes CPE benutzt werden, um Teile des bearbeiteten Feldes zu
maskieren. Ferner kann die K-Maskierung benutzt werden, um Konstanten
von dem Steuerspeicherwort zu dem Element CPE 303 zu liefern.
Beispielsweise können die Bits der K-Maskierung benutzt werden,
um eine Adresse eines Bytes innerhalb einer Leitungssteuertabelle
LCT zu bilden.
Fünf Bits des Steuerspeichers 308 bilden das Steuerfeld, und sie
werden decodiert, um mittels des Decodierers 422 Steuer-Austastsignale
zu erzeugen, die ihrerseits verschiedene Aktionen innerhalb
der MLCP-Logik hervorrufen. Beispielsweise sperrt ein bestimmtes
Muster von Bits innerhalb des Steuerfeldes die Taktsignale
bestimmter Logikgatter. Eine andere Gruppe von Steuerfeld-
Bitmustern wirkt verschiebend auf das E/A-Sammelschienenregister
302 ein. Andere Bitmuster können solche Flip-Flops wie ein Sammelschienenregister-
Belegt-Flip-Flop setzen oder zurückstellen,
eine Anforderung über die Sammelschiene 101 für einen Speicherzyklus
senden, die Benutzung der Sammelschiene für einen Sammelschienenzyklus
anfordern usw. Andere Tastsignale steuern den CRC-Generator
311 und das Laden von Registern.
Das Steuerfeld liefert ferner die Auswahlfunktion für verschiedene
Multiplexer der zentralen Logik, z. B. für die Multiplexer der Eingangs-
Sammelschiene des Elementes CPE 303. Zusammen mit einem an
den Generator 426 für die nächste Adresse angeschlossenen Ausgang
des Steuerspeichers 308 werden zwei der Steuerfeldbits (Ausgang 30
und 31 des Steuerspeichers) in einem Hardwareregister gespeichert,
das für die verschiedenen Multiplexer die Quelle für die Auswahlfunktion
bildet.
Es gibt vier Leitungen von dem Steuerspeicherwort, die die Hinweiszeichen-
Steuertests betreffen, welche von den verschiedenen
von dem Element CPE 303 bearbeiteten Mikrobefehlen benutzt werden.
Diese Hinweiszeichen sind die vier Markierungs-Logik-Steuersignale,
die in den Generator für die nächste Adresse der Mikroprogramm-
Steuereinheit 3001 eingegeben werden, welche in der zuvor erwähnten
Veröffentlichung "Schottky Bipolar LSI Microcomputer Set-3001
Microprogram Control Unit" beschrieben ist.
Wie zuvor erwähnt, erzeugt der Generator 426 für die nächste Adresse
die Adresse für das nächste Steuerspeicherwort, das von dem
Element CPE 303 abgerufen und bearbeitet wird. Dieser Adressenausgang
des Generators 426 für die nächste Adresse wird durch den
Puffer 427 angesteuert und sodann in den Steuerspeicher 308 für
den tatsächlichen Abruf des Mikrobefehlswortes eingegeben. Es ist
bereits erläutert worden, daß der Generator 426 für die nächste
Adresse zwei Basis-Adreßquellen besitzt, wobei die eine Quelle
durch die Adreßleitung von dem Steuerspeicherwort selbst und die
andere Quelle durch die Anforderung nach dem Start einer neuen
Mikroprogramm-Routine gebildet wird. Der Lademultiplexer 425 für
die nächste Adresse liefert die tatsächlichen Eingänge für die Adressen,
die neue Mikroprogramm-Routinen starten. Der Lademultiplexer
425 für die nächste Adresse weist zwei Eingänge auf, die
neue Firmware-Routinen starten. Ein Eingang des Lademultiplexers
425 wird durch ein Byte mit 8 Bit von dem Lese/Schreibspeicher 312
gebildet, wobei diese Byte einen aktuellen Operationscode-Befehl
OP eines CCP-Befehls in dem MLCP-Speicher bildet. Der andere Eingang
des Lademultiplexers 425 wird durch den Ausgang des Firmware-
Subroutinen-Rückkehradreßregisters 424 gebildet. Die durch den
Steuerspeicher 308 erzeugte Firmware kann einen Mechanismus einschließen,
durch den der Zustand mit der höchsten Priorität festgestellt
wird, dem die Benutzung durch das zentrale Verarbeitungselement
CPE 303 gestattet wird. Ein solcher Zustand wird durch die
CLA-Unterbrechungsleitungen von dem Prioritäts-Adressencodierer
413 vorgegeben. Es sei darauf verwiesen, daß der Prioritäts-Adressencodierer
413 als Eingang die 16 Unterbrechungsleitungen von
der Dialogleitung Adapterschnittstelle 401 mit einer Leitung für
jeden Kanal aufweist. Ferner sei darauf verwiesen, daß der Prioritäts-
Adressencodierer 413 feststellt, welche der 16 Leitungen
die höchste Priorität (in diesem Fall die Leitung mit der niedrigsten
Nummer, wobei die Leitungen von 0 bis 15 durchnumeriert
sind) aufweist und diese Leitungsnummer in Form einer Vierbit-
Adresse codiert, die in die CLA-Adressenverriegelung 412 geladen
wird. Ein anderer solcher Zustand wird durch das Firmware-E/A-
Anweisungssignal gebildet, welches eine spezielle in der Firmware
verwirklichte E/A-Anweisung vorgibt, die ausgeführt werden soll.
Wenn eine E/A-Anweisung empfangen wird, so zeigt diese an, daß das
Sammelschienen-Register bzw. die Steuerung 302 bereits die Anweisung
für eine Bearbeitung angenommen hat und nunmehr darauf wartet,
daß diese Bearbeitung durch das Verarbeitungselement CPE 303
fortgesetzt wird. Einen weiteren solchen Zustand bildet das verzögerte
DMA-Zyklussignal, welches anzeigt, daß ein Kanal die Übertragung
eines Datenwortes von einem oder zwei Byte von der Dialogleitung
zu dem Speicher 106 des Datenverarbeitungssystems über
einen direkten Speicherzugriff bearbeitet und daß der Kanal die
Benutzung des zentralen Verarbeitungselementes 303 anfordert, um
mit der Übertragung zusätzlicher Worte des Speichers in diesem
Block-Transfermodus fortzufahren.
Der BLT 316 (Basislogiktest oder Selbsttest) bildet ebenfalls eine
Bedingung, welche nach einer allgemeinen Auslösung das zentrale
Verarbeitungselement 303 benutzt. Die letzte dieser Bedingungen
wird durch ein Hintergrund-Schleifensignal gebildet, das bei einer
einfachen Prüfung die Benutzung des Verarbeitungselementes CPE 303
den CLA-Kanälen aufgrund einer höheren CLA-Unterbrechungspriorität
verzögert worden sind, oder ob in dem Fall, wo ein Kanalsteuerprogramm
hinsichtlich eines bestimmten Kanals eine Prüfung auf eine
Statusänderung angefordert hat, beispielsweise ein Ringindikator
oder ein Sendefreigabesignal hinsichtlich einer Dialogleitung vorliegt.
Wenn eine Firmwareroutine durch den Mikroprozessor CPE 303 bearbeitet
wird, so wird anderen Routinen nicht gestattet, die gerade
bearbeitete Routine zu unterbrechen. Am Ende der bearbeiteten
Routine wird die Adresse des Signales mit der höchsten Priorität,
das eine Bearbeitung durch eine Firmwareroutine anfordert, über
den Lademultiplexer 425 an den Eingang des Generators 426 für die
nächste Adresse gelegt. Es sei darauf verwiesen, daß für den Fall,
wo kein Signal eine höhere Prioritätsbearbeitung durch eine Firmwareroutine
anfordert, die Hintergrundschleife bearbeitet wird,
wobei eine Abtastung durchgeführt wird, bei der nach anderen Bedingungen
gesucht wird, die eine Bearbeitung durch eine Routine
erfordern. Das Ende aller Firmwareroutinen ruft das Laden einer
nächsten Firmwareroutine hervor, wobei es sich bei dieser Routine
um die Routine mit der höchsten Priorität handelt. Das durch den
letzten Mikrobefehl einer CCB-Befehlsroutine erzeugte Ladesignal
wird in Wirklichkeit durch das spezielle Muster der Steuerfeldsignale
des Mikrosteuerwortes über die Steuer-Tastsignal-Decodierlogik
422 erzeugt.
Der Generator 426 für die nächste Adresse dient ferner der Speicherung
der nächsten Adresse in dem Nächst-Adressenregister (Mikroprogramm-
Adreßregister des 3001-Schaltkreises) während eines Taktzyklus
und der Durchführung logischer Operationen für die Verzweigung
auf zwei Markierungen von dem Element CPE 303 (Übertragungsmarkierung
und Nulltest-Markierung). Der Generator 426 ist in der
Lage, Ergebnisse der Übertrag- und Nulltest-Markierungen zu verriegeln.
Der Generator 426 kann ferner den Übertragungseingang des
Elementes CPE 303 entweder auf "0" oder "1" setzen.
Die hinsichtlich des zentralen Verarbeitungselementes 303 dargestellten
Daten- und Adreßausgänge bilden die Datenausgangs- und
Hauptspeicher-Adreßausgangssignale der integrierten Schaltkreise
des Mikroprozessors 3002. Es ist erkennbar, daß der Adressenausgang
des Elementes CPE 303 als Eingang dem Adressenmultiplexer 410
des Lese/Speicherabspeichers RAM zugeführt wird.
Der Adressenmultiplexer 410 wird verwendet, um die Adresse auszuwählen,
die benutzt wird, um den Lese/Schreibspeicher 312 mit
wahlfreiem Zugriff des Dialogprozessors MLCP auszulesen. Es sei
darauf verwiesen, daß die Adreßleitungen von dem Verarbeitungselement
CPE 303 mit vier hochrangigen Adreßleitungen von der Lese/Schreibadressen-
Verriegelung 411 kombiniert werden. Der Inhalt der
Lese/Schreibadressen-Verriegelung 411 wird selten geändert, da die
von dem Dialogprozessor MLCP für die Adressierung des Lese/Schreibspeichers
312 benutzten sequentiellen Adressen meistens innerhalb
der gleichen 256 Bytes der Speicheradresse liegen, die durch den
festen Wert der vier hochrangigen Bits innerhalb der Lese/Schreibadressenverriegelung
411 adressiert wird. Wenn es erforderlich
ist, den in der Lese/Schreibadressenverriegelung 411 enthaltenen
Wert zu ändern, so wird diese Verriegelung von dem Datenausgang
des Verarbeitungselementes CPE 303 geladen.
Ein anderer Eingang des Lese/Schreibadressen-Multiplexers 410
wird durch die RAM-Auffrisch- und Steuerlogik 417 gebildet. Dieser
Adresseneingang wird von der dynamischen Speicher-Auffrischadresse
gebildet. Der Lese/Schreibspeicher 312 kann ein dynamischer Halbleiterspeicher
sein, wobei in diesem Fall die in ihm gespeicherten
Logikwerte periodisch wieder aufgefrischt werden müssen, damit die
in ihm gespeicherten Signale erhalten bleiben. Hinsichtlich dieser
Technik sei auf die US-PS 37 60 379 verwiesen. Die RAM-Auffrisch-
Steuerlogik 417 muß daher zwecks Ausführung von Speicheroperationen
adressiert werden und ist daher auf den Adressenmultiplexer 410
geschaltet, um die geeignete Operation des Speichers 312 zu ermöglichen.
Das endgültige Eingangssignal des Adressenmultiplexers
410 wird durch eine 12-Bit-Adresse von der in Hardware verwirklichten
E/A-Anweisungslogik 310 gebildet, die in näheren Einzelheiten
in Fig. 8 dargestellt ist. Diese Adresse wird für Lese/
Schreib-Speicheroperationen für diese in Hardware verwirklichte
E/A-Anweisungslogik benutzt.
Der Ausgang des Adressenmultiplexers 410 ist direkt an den Adresseneingang
des Lese/Schreibspeichers 312 angeschlossen. Es ist
eine Logik vorgesehen, um Konflikte zwischen drei möglichen Anforderungen
zur Bildung einer Speicheradresse zu lösen. Diese Konflikte
betreffen die Auffrischlogik 417, die in Hardware verwirklichte
E/A-Anweisungslogik 310 und das zentrale Verarbeitungselement
303, was nachstehend näher beschrieben wird.
In einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung
wird der Lese/Schreibspeicher 312 mit wahlfreiem Zugriff
durch vier Kilobit-Speicherchips verwirklich, die sich aus einem
64 × 64-Speicherfeld zusammensetzen. Jede der 64 Spalten des 64 × 64-
Speicherfeldes muß alle 32 µs adressiert werden, um die Daten in
jedem der acht Chips aufzufrischen, die die 8 Bits des Speichers
bilden. Die RAM-Auffrisch- und Steuerlogik 417 enthält einen Monoflop-
Oszillator, der alle 32 µs ein Signal ausgibt, das zur Zyklusauslösung
des Lese/Schreibspeichers 312 verwendet wird. Zur Auffrischfunktion
ist nur ein Lesezyklus des Lese/Schreibspeichers
erforderlich. Die RAM-Auffrisch- und Steuerlogik 417 enthält ebenfalls
einen Zähler, der bei jeder Spaltenlesung fortgeschaltet
wird, wodurch eine kontinuierliche Schleife durch alle 64 Spalten
des Lese/Schreibspeichers 312 gebildet wird.
Der Eingangs-Datenmultiplexer 408 gibt in den Lese/Schreibspeicher
312 Datenbytes mit 8 Bit ein. Eine Datenquelle des Eingangs-Datenmultiplexers
408 wird durch die Daten-Ausgangsleitungen des Verarbeitungselementes
CPE 303 gebildet. Im Falle der Logik 3002 werden
die Daten-Ausgangsleitungen von dem Akkumulatorregister des
arithmetischen Logikabschnitts des Verarbeitungselementes CPE gespeist.
Der andere Eingang des Eingangs-Datenmultiplexers 408 wird
durch einen 8-Bit-Datenweg von dem Sammelschienenregister gebildet,
wobei die Eingabe unter Steuerung durch die in Hardware verwirklichte
E/A-Anweisungslogik 310 erfolgt.
Der M-Multiplexer 421 ist an den Datenspeichereingang des Elementes
CPE 303 angeschlossen. Der Datenspeichereingang des Elementes
CPE bildet einen Eingang für einen der beiden internen Multiplexer-
Eingänge des arithmetischen Logikabschnittes des integrierten
Schaltkreises 3002. Ein Eingang des M-Multiplexers 421 wird
durch das 8-Bit-Datenbyte gebildet, das aus dem Lese/Schreibspeicher
312 ausgelesen wird. Ein weiterer Eingang wird durch das
8-Bit-Datenbyte von dem Sammelschienenregister 302 gebildet, das
bei firmwaregesteuerten E/A-Anweisungen Sammelschienenregisterdaten
liefert. Ein weiterer Eingang des M-Multiplexers 421 wird
durch den Ausgang von dem zyklischen Redundanz-Prüfgenerator-
Multiplexer 407 gebildet. Der letzte Eingang des M-Multiplexers 421
wird durch einen 8-Bit-Datenweg von den Adaptern CLA gebildet. Die
8-Bit-Dateneingänge von jedem der vier Dialogleitungsadapter werden
in der Dialogleitung-Adapterschnittstelle einer ODER-Verknüpfung
unterzogen. Wie zuvor erwähnt, werden verschiedene Auswahlleitungen,
die durch verriegelte Steuerfeldsignale des Steuerspeicherwortes
erzeugt werden, benutzt, um festzustellen, welcher der
vier Eingänge des M-Multiplexers 421 auszuwählen ist.
Der I-Multiplexer 419 ist an den externen Geräteeingang des Elementes
CPE 303 angeschlossen. Es gibt drei Haupteingänge in dem
I-Multiplexer 419. Der erste Eingang wird durch die in der CLA-
Adressenverriegelung 412 enthaltene Adresse gebildet, die die Adresse
des gerade bedienten Kanals vorgibt, das heißt desjenigen
Kanals mit der höchsten erkannten Priorität, wobei diese Adresse
durch den Prioritäts-Adressencodierer 413 verriegelt worden ist.
Ein weiterer Eingang des I-Multiplexers 419 wird durch den CLA-
Unterbrechungsausgang des Codierers 413 gebildet, der die in Firmware
verwirklichte Anweisung für die Erzeugung der nächsten Adresse
hervorruft.
Die verbleibenden Eingänge des I-Multiplexers 419 bilden verschiedene
Indikatorsignale, wie beispielsweise ein Sammelschienen-Paritätsfehler,
ein Sammelschienen-Register-Belegtsignal und andere
Signale, die die Prioritätsauflösung zwischen den in Firmware verwirklichten
E/A-Anweisungen und den in Hardware verwirklichten
E/A-Anweisungen bei Benutzung der Sammelschiene ermöglichen. Diese
unabhängigen Signale bilden eine Gruppe von acht Eingängen für den
Zweiweg-Multiplexer 419, der bis zu acht Eingangssignale aufnimmt.
Der Dialogprozessor MLCP führt zyklische Redundanzprüfungen (CRC)
hinsichtlich der Daten-Dialogblöcke durch. Im bevorzugten Ausführungsbeispiel
bildet der zyklische Redundanz-Prüfgenerator einen
von vier CRC-Polynomcodes, dessen Generatorpolynom 16 Bits oder
weniger beträgt. Der Dialogprozessor MLCP schaltet den CRC-Prüfgenerator
zwischen den verschiedenen Kanälen um. Bei der Ausführung
einer CRC-Erzeugung wird der Rest eines jeden Kanales in dem LCT-Speicherteil
des Lese/Schreibspeichers 312 für diesen Kanal festgehalten,
wenn das Element CPE 303 die CRC-Logik für diesen speziellen
Kanal nicht betätigt. Wenn der CRC-Generator auf diesen Kanal
einwirkt, so wird der Rest für die CRC-Erzeugung aus dem Lese/Schreibspeicher
312 abgerufen, in das CRC-Register 405 geladen, von
der CRC-Steuerlogik 404 verarbeitet und über den CRC-Generatormultiplexer
407 in den Speicher zurückgeführt. Die Konfigurationsinformation,
die zu einem bestimmten Kanal gehört, enthält Information,
wie beispielsweise die Anzahl der Bits pro Zeichen, die Anzahl
der Zeichen pro Block, die Art des Polynoms und so weiter. Sie
wird ebenfalls von dem Lese/Schreibspeicher 312 in Abhängigkeit
von dem bedienten Kanal geladen. Es sei darauf verwiesen, daß diese
Operationen, die das Abrufen des Restes von dem Lese/Schreibspeicher
312, die Bestimmung der Konfiguration, das Laden in das Konfigurationsregister
406, die Durchführung der CRC-Erzeugung bzw.
Prüfung durch die CRC-Steuerlogik 404 und die Rückspeicherung des
Restes in den Lese/Schreibspeicher 312 umfassen, hinsichtlich des
laufenden Datenzeichens erfolgen, das von dem Element CPE 303 verarbeitet
wird. Das Element CPE speichert sodann den neuen Rest
in den Speicher zurück, um diesen das nächste Mal zu benutzen,
wenn ein Zeichen hinsichtlich des gleichen Kanals, bearbeitet wird.
Der Parallel/Serienwandler 403 wandelt das Byte von acht Bit am
Datenausgang des Elementes CPE 303 in serielle Daten um, indem er
das Byte von acht seriell in das CRC-Register 405 schiebt. Der
CRC-Multiplexer 407 schaltet der Reihe nach jedes der in einem
16-Bit-Schieberegister 405 enthaltenen Bytes mit 8 Bit zu dem M-Multiplexer
421 byteweise weiter. Mit den von dem M-Multiplexer 421
gelieferten Daten kann sodann das Element CPE 303 weitere geeignete
Operationen durchführen.
Es sei darauf verwiesen, daß das CRC-Register 405 eine auswählbare
Rückführung aufweist, um die CRC-Funktion zu verwirklichen, da
diese Funktion die Rückführung des Ausgangs des Schieberegisters
auf eines oder mehrere der 16 Bits des Schieberegisters erfordert.
Der Paritätsgenerator 409 führt eine Paritätserzeugung hinsichtlich
der Daten durch, die auf den Daten-Ausgangsleitungen des Elementes
CPE 303 anstehen und die zu der Leitungs-Adapterschnittstelle 401
übertragen werden. Das CRC-Konfigurationsregister 406 liefert einen
Eingang für den Paritätsgenerator 409 betreffend den Paritätstyp,
wie er hinsichtlich des speziellen bedienten Subkanals erforderlich
ist.
Fig. 8 stellt ein detailliertes Blockdiagramm der in dem Dialogprozessor
MLCP verwendeten Hardware dar, die der Verwirklichung der
elektrischen Sammelschienenschnittstelle und der in Hardware verwirklichen
E/A-Anweisungen dient. Das 40-Bit-Sammelschienenregister
504 enthält die Treiber- und Empfangsschaltkreise, die für den Anschluß
an die elektrische Sammelschiene erforderlich sind. Wie zuvor
erwähnt, wird dieses 40-Bit-Sammelschienenregister von dem zentralen
Verarbeitungselement 303 wie eine Reihe von fünf Bytes mit
8 Bit behandelt. Die Eingabe in das Sammelschienenregister 504 erfolgt
über den Sammelschienenmultiplexer 502. Es gibt vier Dateneingänge
hinsichtlich des Sammelschienenmultiplexers 502. Der erste
Eingang wird durch den Lese/Schreibspeicher-Datenweg gebildet, der
von der in Hardware verwirklichten E/A-Anweisungslogik benutzt wird.
Ein weiterer Eingang des Sammelschienenmultiplexers 502 wird durch
Daten des Verarbeitungselementes CPE 303 gebildet. Die verbleibenden
zwei Eingänge des Sammelschienenmultiplexers 502 werden durch
den oberen Teil des Identifikationscodes (ID) und den unteren Teil
dieses Codes gebildet. Dieser Code wird durch den 10-Bit-Identifizierungscode
gebildet, der aufgrund einer Eingangs-ID-Anforderung
an die Sammelschiene 101 auf dieser abgelegt wird. Die in Hardware
verwirklichte E/A-Anweisungslogik 310 schaltet die oberen und unteren
Teile des Identifikationscodes in zwei getrennten Datenübertragungen
an das Sammelschienenregister 504 weiter.
Die Paritätserzeugung/Prüfung 503 führt eine Paritätserzeugung und
Prüfung hinsichtlich Daten aus, die von der Sammelschiene 101 kommen
bzw. an diese abgegeben werden.
Die Antwortlogik 505 auf eine Bestätigung (ACK), eine Nicht-Betätigung
(NAK) und auf einen Wartezustand (WAIT) ist eine Hardwarelogik,
die die für alle Komponenten allgemein übliche Antwort erzeugt
und die in der erwähnten US-PS 39 93 981 näher beschrieben
ist. Die Warte-Antwort zeigt an, daß das Sammelschienenregister 504
gefüllt ist. Diese Warte-Funktion wird unabhängig von den Aktionen
der in Hardware verwirklichten E/A-Funktionen bzw. unabhängig von
dem Element CPE 303 erzeugt.
Die Nicht-Bestätigungs-Antwort NAK auf der Sammelschiene 101 wird
durch die in Hardware verwirklichten E/A-Anweisungen hervorgerufen.
Die in Hardware verwirklichte E/A-Anweisungslogik erzeugt eine
NAK-Antwort beim Vorliegen dreier Bedingungen: erstens, wenn die
Sammelschiene eine Anweisung erzeugt, die einen Dialogsteuerblock
CCB hinsichtlich eines Kanals zu laden versucht und die einen Dialogsteuerblock
CCB neben dem Maximum von vier Steuerblöcken pro
Kanal betrifft; zweitens, wenn eine E/A-Sammelschienenanweisung
die Statuseingabe in einen Dialogsteuerblock CCB in einen Kanal
neben einem zuvor geladenen Dialogsteuerblock CCB fordert; und
drittens, wenn der Dialogprozessor MLCP seinen Basislogiktest ELT
in Abhängigkeit von einer allgemeinen Auslöseanweisung ausführt.
Wenn das Sammelschienenregister nicht belegt ist und wenn keine
dieser drei Bedingungen hinsichtlich einer NAK-Antwort vorliegt,
so erzeugt die Anwortlogik 505 eine Bestätigungs-Antwort ACK.
Die Sammelschienen-Steuer- und Anforderungsdiskriminierlogik 517
stellt fest, ob der in Hardware verwirklichten E/A-Anweisungslogik
oder einer Sammelschienenanforderung von der Firmware des Elementes
CPE das Zusammenwirken mit der Anwortlogik 505 und der Sammelschiene
101 in dem Fall gestattet wird, in dem sowohl die in
Hardware verwirklichte E/A-Anweisungslogik als auch das Element
CPE im Hinblick auf die Sammelschiene miteinander konkurrieren.
Die Elemente der in Hardware verwirklichten E/A-Anweisungslogik
310 fassen die Funktionscode-Verriegelung 508, die Subkanal-Adressenverriegelung
506, den Zähler 510, die Hardware-Anweisungsfortschaltung
511, den Zwischenspeicher RAM 516, die beiden zwei Bitzähler
514 und 515 und den Vergleicher 513. Jedes dieser Elemente
wird nachstehend im einzelnen beschrieben.
Die Funktionscode-Verriegelung 508 stellt ein bistabiles Register
dar, welches den Funktionscode der von der Sammelschiene 101 empfangenen
E/A-Anweisung speichert. Die Hardware-Anweisungs-Folgesteuerung
511 ist ein programmierbarer Festwertspeicher PROM,
der den Funktionscode der Verriegelung 508 als Startadresse für
eine Routine benutzt. Die Vorgabe einer in Hardware verwirklichten
E/A-Anweisung erfolgt sodann durch eine Reihe von Steuerzuständen,
die durch die Hardware-Anweisungsfortschaltung 511 definiert sind,
wobei diese die Steuerzustände in Abhängigkeit von dem Ausgang
des Funktionscoderegisters 508 und dem Wert des Zählers 510 festlegt.
Die Anzahl der ausgeführten Hardwarefolgen wird durch den
in den Zähler 510 geladenen Zählstand definiert. Der in den Zähler
510 geladene Zählstand bewegt sich typischerweise zwischen
drei und acht, wodurch nicht weniger als drei und nicht mehr als
acht Schritte angezeigt werden.
Die Hardware-Anweisungs-Folgesteuerung 511 erzeugt verschiedene
Arten von Ausgangssignalen. Eine Art von Ausgangssignal ist durch
eine Anforderung nach einer Speicheroperation gegeben. Diese Anforderung
wird in den Lese/Schreib-Anforderungsdiskriminator 512
eingegeben. Zum gleichen Zeitpunkt, wo eine Speicheranforderung
durch die Hardware-Anweisungs-Folgesteuerung 511 angegeben wird,
wird ebenfalls eine Adresse an den Lese/Schreib-Adressenmultiplexer
410 ausgegeben, um die Adresse für den angeforderten Speicheroperator
vorzugeben. Die Adresse ist tatsächlich durch die
Adresse des Dialogsteuerblockes CCB vorgegeben, der für die Bearbeitung
einer in Hardware verwirklichten E/A-Anweisung erforderlich
ist. Ein letzter Ausgang der Hardware-Anweisungs-Folgesteuerung
511 bildet eine Leitung, die anzeigt, daß eine E/A-Anweisung
durch die Firmware zu bearbeiten ist. Der spezielle Typ der geforderten
E/A-Anweisung wird durch den Funktionscode in dem E/A-Sammelschienenregister
504 vorgegeben.
Der Lese/Schreib-Anforderungsdiskriminator 512 stellt die Logik
dar, welche feststellt, ob eine in Hardware verwirklichte E/A-Anweisungs-Speicheranforderung, eine CPE-Firmware-Speicheranforderung
oder eine Auffrisch-Speicheranforderung gewährt werden soll.
Der Lese/Schreib-Anforderungsdiskriminator 512 besteht aus einer
Gruppe von zwei Flip-Flops für jede der drei Speicheranforderungs-Quellen.
Durch jede der drei einen Speicherzyklus anfordernden
Einheiten wird das die Speicheranforderung gewährende Flip-Flop
gesetzt, wenn der Speicher nicht belegt ist und die Steuerung des
Lese/Schreibspeichers 312 dieser Einheit zugeordnet ist.
Die die Anforderung gewährenden Flip-Flops sind direkt an die
entsprechenden Einheiten angeschlossen. Wenn die Einheit keinen
Zugriff auf den Speicher erhält, da er belegt ist, so wird das
Speicheranforderungs-Flip-Flop dieser Einheit gesetzt. Das Verarbeitungselement
CPE besitzt die höchste Priorität hinsichtlich
einer Speicheranforderung; die in Hardware verwirklichten E/A-Anweisungen
besitzen die zweithöchste Priorität und die Auffrischanforderung
besitzt die geringste Priorität. Diese Zuordnung der
Prioritäten wird vorgenommen, um den zeitkritischen CPE-Firmware-Operationen
hinsichtlich der Dialog-Datenströme die höchste Priorität,
der weniger kritischen in Hardware verwirklichten E/A-Anweisung
die zweite Priorität und der am wenigsten zeitkritischen
Operation, der Lese/Schreibspeicher-Auffrischung, die niedrigste
Priorität zuzuordnen. Die Auffrischanforderung weist die geringste
Priorität auf, da es äußerst wahrscheinlich ist, daß es innerhalb
von 32 Mikrosekunden, in welchem Zeitraum die Auffrischoperation
stattfinden muß, sehr viele freie Speicherzyklen gibt, die weder
von der CPE-Logik noch von der in Hardware verwirklichten E/A-Anweisungslogik
benutzt werden. Es gibt somit keinen Grund, die
Anforderung mit höherer Priorität zu verzögern, um eine Auffrischoperation
zu gestatten, da die Auffrischoperation bis zu 32 µs
warten kann, bevor ihre Ausführung in jedem Fall erforderlich ist.
Die Subkanal-Adressenverriegelung 506 wird benutzt, um temporär
eine vier-Bit-Adresse des durch eine E/A-Anweisung adressierten
MLCP-Kanales zu speichern. Diese Subkanal-Adressenverrieglung 506
wird zusammen mit dem RAM-Zwischenspeicher 516 benutzt, der Hinweisadressen
und Markierungen für jeden MLCP-Kanal speichert. Die
Subkanal-Adressenverriegelung 506 hat somit die Aufgabe, einen
der 16 Speicherplätze des Zwischenspeichers RAM 516 zu adressieren.
Da jedem Kanal bis zu vier Dialogsteuerblöcke CCB zugeordnet
sind, wird eine Adresse mit zwei Bit benötigt, um einen der vier
Dialogsteuerblöcke CCB zu adressieren. In jedem der 16 Worte
(acht Bit pro Wort in diesem Fall) des Zwischenspeichers RAM 516
gibt es ein Wort pro MLCP-Kanal, das die folgende Information enthält:
Eine Lade-Hinweisadresse von 2 Bit, die als eine Adresse zum
Laden des nächsten Dialogsteuerblockes CCB in den diesem Kanal
zugeordneten Bereich des Lese/Schreibspeichers 312 dient; eine
Status-Hinweisadresse von 2 Bit zum Adressieren des Dialogsteuerblockes
CCB, an den die Statusinformation zu richten ist; ein
NAK-Hinweis, der anzeigt, daß der Kanal bereits die maximale Anzahl
von Dialogsteuerblöcken CCB besitzt und daß somit eine Anforderung
zum Hinzufügen eines neuen Dialogsteuerblockes CCB
eine NAK-Antwort empfangen muß; und ein Vergleichshinweis, um anzuzeigen,
daß ein Versuch gemacht wurde, einen Status neben einem
verfügbaren Dialogsteuerblock CCB dieses Subkanals zu speichern.
Der NAK-Indikator wird gespeichert, um die schnellstmögliche Antwort
auf eine ungültige Sammelschienenanweisung zu geben, anstelle
erneut zu berechnen, ob eine andere Hinweisadresse freigegeben
ist und später herauszufinden, daß eine NAK-Bedingung vorliegt.
Der 2-Bit-Zähler 514 erhöht den Lade-Hinweisadressenausgang des
Zwischenspeichers RAM 516. Der 2-Bit-Zähler 514 ist sowohl auf
den Eingang des Zwischenspeichers RAM 516 zwecks Fortschreibung
des Zwischenspeicherplatzes für einen bestimmten Kanal als auch
auf den Vergleicher 513 geschaltet, um festzulegen, ob eine Hinweismarkierung
für diesen bestimmten Kanal zu setzen ist. Der
2-Bit-Zähler 515 erhöht die Status-Hinweisadresse für einen Kanalausgang
des Zwischenspeichers RAM 516. Auch dieser Zähler ist auf
den Eingang des Zwischenspeichers RAM 516 als auch auf den Vergleicher
513 geschaltet, um den geeigneten Wert der Hinweismarkierungen
zu bestimmen. Der Ausgang des Vergleichers 513 ist auf
den Zwischenspeicher RAM 516 zurückgeführt, um das Einschreiben
ergänzter Werte in den Speicher RAM 516 zu ermöglichen.
Während des Selbsttests ist es erforderlich, alle MLCP-Kanäle
anfänglich auf einen Zustand zu setzen, der anzeigt, daß sie
weder Dialogsteuerblöcke CCB, noch eine von Null verschiedene
NAK-Antwort noch Vergleichshinweise enthalten. Wenn somit das
BLT-Flip-Flop 316 auf den Binärwert "1" gesetzt ist, um einen
Selbsttest anzuzeigen, so wird die Kanaladressenverriegelung 506
schrittweise von Null auf 15 erhöht, um jeden Kanal zu adressieren
und deren Hinweisadressen und Indikatoren auf Null zu setzen.
Bevor weitere Einzelheiten der Hardware und Firmware der vorliegenden
Erfindung erläutert werden, soll ein Überblick über
die Betriebszustände des Dialogprozessors MLCP und dessen Firmware
gegeben werden. Gemäß Fig. 18 weist der Dialogprozessor MLCP
verschiedene Betriebszustände auf. In den Anfangszustand 650 des
Dialogprozessors MLCP kann durch eine über das System-Steuerfeld
ausgelöste Hauptlöschung 652 beim Anlegen der Betriebsspannung
eingetreten werden oder durch eine programmierte Hauptlöschoperation.
Die Auslösung löscht den Lese/Schreibspeicher 312, stellt
sämtliche MLCP-Steuerlogik zurück und stellt ferner alle Leitungsadapter
zurück. Immer wenn der Dialogprozessor MLCP ausgelöst
wird, wird sein Basislogiktest BLT ausgeführt, wonach sowohl die
Hardware als auch die Firmware in entsprechende Leerlaufzustände
654 und 656 eintreten. Im Firmware-Leerlaufzustand 656 bearbeitet
die Firmware die Bedienungs-Abtastroutine 604, bei der auf Leitungs-Adapteranforderungen
oder auf das Vorliegen einer E/A-Anweisung
geprüft wird. In Abhängigkeit davon, was von der Abtastroutine
festgestellt wird, kann die Firmware entweder in den Bearbeitungsstatus
658 oder den Hintergrundstatus 660 eintreten.
Der Firmware-Bearbeitungsstatus 658 ist der Status, in dem die
E/A-Anweisungen decodiert werden und die Leitungsadapter bedient
werden. Im Hintergrundstatus 660 prüft die Firmware auf verzögerte
DMA-Anforderungen und lädt die Dialogsteuerprogramme CCP, die
Dialogsteuerblöcke CCB und die Leitungssteuertabelle LCT und
nimmt eine Prüfung auf CLA-Statusänderungen vor.
Wenn die MLCP-Hardware einmal ausgelöst ist, so tritt sie in
den Leerlaufzustand 654 ein. In diesem Zustand bleibt die MLCP-Hardware
untätig bis eine Anforderung von der Zentraleinheit
CPU 102 empfangen wird, worauf die Hardware in den Befehls-Bearbeitungszustand
662 eintritt. In diesem Zustand werden in
der Hardware verwirklichte Anweisungen bearbeitet. Sollte der
Befehl eine programmierte Hauptlöschung umfassen, so kehrt die
Hardware zu dem Anfangszustand 650 zurück.
Die in dem Steuerspeicher 308 enthaltene MLCP-Firmware ist im
wesentlichen in 8 Hauptbereiche unterteilt, wobei viele der Bereiche
eine Kombination mehrerer Subroutinen aufweisen. Fig. 11
zeigt die Unterteilung der acht Bereiche und die Subroutinennamen
für jeden Block. Bei Auslösung 600 des Dialogprozessors MLCP tritt
die Firmware in eine Routine zur Überprüfung der Hardware ein,
die als Basislogiktest BLT 602 bezeichnet ist. Der Basislogiktest
BLT kann in der Firmware nur durch einen möglichen Pfad fortgesetzt
werden, der zu der Bedienungs-Abtastroutine 604 führt. An
dieser Stelle ist es erforderlich, daß die Firmware entscheidet,
welcher der drei möglichen Wege beschrieben werden muß. Unter der
Annahme, daß keine Anforderungen irgendeines Types vorliegen, geht
die Bedienungs-Abtastroutine 604 zu der Hintergrundroutine 606
weiter. Der Prozeß der Schleifenbildung von der Bedienungs-Abtastroutine
zu der Hintergrundroutine und zurück setzt sich fort, bis
eine von vier Bedingungen festgestellt wird: eine verzögerte
Unterbrechung; eine ausgelöste Datenübertragung; eine angeforderte
Datengruppenabtastung oder eine während der Bedienungs-Abtastroutine
festgestellter E/A-Anweisung. Wenn irgendeine dieser vier
Situationen vorliegt, so tritt die Hintergrundroutine 606 in den
anwendbaren Firmwarebereich ein: Verzögerte Unterbrechungs-Behandlungsroutine
608, DMA-Bedienungs/Ausführungsroutine 610, Datengruppe-Abtastroutine
612 oder Ausführungsroutine 616. Bei Vervollständigung
der angeforderten Routinen erfolgt ein Wiedereintritt
in die Bedienungs-Abtast/Hintergrundschleife.
Wenn während der Bedienungs-Abtastroutine eine E/A-Anweisung 614
festgestellt wurde, so wird in einen Bereich eingetreten, der als
E/A-Anweisungsdecodier/Bearbeitungsroutine 616 bezeichnet ist.
Nach Bearbeitung der geeigneten Anweisung kann die Firmware zu
der Bedienungs-Abtast/Hintergrundschleife zurückkehren, oder falls
eine Datenübertragung erforderlich ist, kann sie zu der DMA-Bedienungs/Ausführungsroutine
610 weitergehen. der dritte Weg der
Bedienungs-Abtastroutine 604 führt zu der Leitungs-Adapter-Bereitschaft 60193 00070 552 001000280000000200012000285916008200040 0002002801563 00004 60074sroutine
618 (wenn eine Leitungs-Adapteranforderung vorliegt).
Die Befehl-Abruf/Bearbeitungsroutinen 620 werden danach benutzt,
um die geeignete Datenmanipulation hervorzurufen. Nach Vervollständigung
der Befehlsausführung gestattet die Firmware den Eintritt
in die Bedienungs-Abtast/Hintergrundschleife entweder direkt
oder mittels der verzögerten Unterbrechungs-Behandlungsroutinen 608.
Ein Weg zu den DMA-Behandlungs/Bearbeitungsroutinen 610 ist ebenfalls
vorgesehen (wenn eine Datenübertragung gefordert ist).
Der Basislogiktest BLT 602 wird durch eine Hauptlöschung ausgelöst,
die das Ergebnis einer Softwareanweisung, einer Bedienungsfeld-Rückstellung
oder der Betriebsspannungseinschaltung sein kann.
Dieser Test wird benutzt, um den gesamten 4K-Speicher 312 mit wahlfreiem
Zugriff zu löschen. Während dieser Löschung wird die Adressierung,
die Erzeugung der nächsten Adresse, die Speicherelemente
mit wahlfreiem Zugriff, die Auffrischlogik und andere Hardwareelemente
überprüft. Die Daten werden geschrieben und sodann gelesen
und im Hinblick auf ein Nullresultat miteinander verglichen. Im
Falle eines Datenfehlers tritt die Firmware in einen Speicherplatz
ein, an welchem eine Verzweigung auf diesen selbst ausgeführt wird,
wodurch die Mikrobefehlsbearbeitung effektiv angehalten wird. Nach
der erfolgreichen Beendigung des Basislogiktests BLT 602 wird eine
Firmwareanweisung ausgegeben, durch die eine lichtemittierende
Diode LED am hinteren Ende der MLCP-Karte gelöscht wird, wobei
der Dialogprozessor MLCP in Form einer einzelnen Logikkarte verwirklicht
ist. Die Firmware tritt sodann in die Bedienungs(Behandlungs)-Abtastroutine
604 ein.
In die Bedienungs-Abtastroutine 604 kann aus irgendeinem der acht
Hauptbereiche der Firmware eingetreten werden, die in Fig. 11 dargestellt
sind. Diese Routine wird benutzt, um festzustellen, welche
Art von Unterbrechung vorliegt, sofern überhaupt eine Unterbrechung
vorliegt. Anfänglich wird das sogenannte Bereitschafts-Flip-Flop
(welches anzeigt, ob der Adapter CLA eine Behandlung erfordert)
abgetastet, um festzustellen, ob eine Leitungsadapter-Anforderung
vorliegt. Wenn dieses Flip-Flop gesetzt ist, so beginnt die Firmware
mit der Leitungsadapter-Bereitschaftsroutine 618 und startet
mit der Bearbeitung des Kanalsteuerprogramms. Wenn keine Leitungsadapteranforderung
gesetzt ist, so prüft die Bedienungs-Abtastroutine
604, ob die E/A-Anweisungsleitung 614 gesetzt ist. Wenn
diese gesetzt ist, so schreitet die Firmware zu der E/A-Anweisungs-Decodierroutine
616 fort, wodurch die erforderlichen Maßnahmen getroffen
werden. Die Bedienungs-Abtastroutine geht zu der Kanal-Abtastroutine
weiter, wenn keine Leitungsadapter oder E/A-Anweisungsanforderungen
vorliegen.
Die Kanal-Abtastroutine 622 wird manchmal auch als Hintergrundroutine
622 bezeichnet. Diese Routine führt verschiedene Prozeßprüfungen
mit niedriger Priorität durch, um festzustellen, ob irgendeine
Aktion seitens der Firmware erforderlich ist. Die Kanal-Abtastroutine
prüft zunächst, ob irgendwelche verzögerten Datenübertragungen
vorliegen oder ob eine Block-Modusoperation anhängig ist.
Wenn irgendeiner dieser Zustände angetroffen wird, so verzweigt
die Firmware zu der geeigneten Routine innerhalb der DMA-Behandlungs/Bearbeitungsroutinen
610 und führt die geforderte Maßnahme
durch. Die Kanal-Abtastroutine 622 wird sodann, falls keine vorangige
Maßnahme gefordert wird, feststellen, ob eine verzögerte
Unterbrechung auf diesem Kanal ansteht. Wenn ein Hinweis auf eine
verzögerte Unterbrechung gesetzt ist, so geht die Routine zu der
verzögerten Unterbrechungsroutine 608 weiter und bearbeitet die Unterbrechung.
Die letzte durch die Kanal-Abtastroutine ausgeführte
Prüfung besteht darin, festzustellen, ob eine Datengruppenabtastung
angefordert ist. Wenn das Abtastbit gesetzt ist, so wird in die
Datengruppen-Abtastroutine 612 eingetreten und das Abtastverfahren
durchgeführt. Nachdem alle diese Hinweise geprüft worden sind und
wenn keine Maßnahmen mit niedriger Priorität erforderlich sind,
tritt die Kanal-Abtastroutine 622 erneut in die Bedienungs-Abtastroutine
604 ein, um Anforderungen mit hoher Priorität abzutasten.
Die Befehlsabruf/Bearbeitungsroutinen 620 bilden den Teil der Firmware,
der zur Verwirklichung des Kanalsteuerprogrammes CCP verwendet
wird. Die Kanalsteuerprogramme CCP sind in einem Abschnitt des
Speichers 312 abgelegt und zur Ausführung ihrer Befehle müssen sie
aus dem Speicher ausgelesen und schließlich bearbeitet werden. Die
diese Operationen ausführenden Firmwareroutinen bestehen aus drei
Phasen: 1. dem Befehlsabruf, 2. der Befehlsdecodierung und 3. der
Befehlsbearbeitung. Die Befehlsabrufroutine 620 nimmt Zugriff auf
den Programmzähler des Dialogprozessors MLCP und lädt seinen Inhalt
in das Speicheradreßregister 305. Wenn das Adreßregister geladen
wird, wird der Zählstand des Programmzählers um eins erhöht und der
Wert abgespeichert. Der Speicherplatz in dem Speicher mit wahlfreiem
Zugriff wird sodann gelesen, um den Befehl für die Decodierung zu
erhalten. Die Decodierung findet auf zwei Pegeln statt: Eine Hauptdecodierung
und eine Nebendecodierung. Die Hauptdecodierung besteht
aus einer 1 aus 16-Identifizierung, durch die der Formattyp festgestellt
wird. Ist der Formattyp einmal ermittelt, so liegt die Nebendecodierung
den tatsächlich auszuführenden Befehl dieses Formats
fest. Schließlich führen die Befehlsbearbeitungsroutinen die angezeigte
Maßnahme durch und können hierbei CCP-Programmindikatoren
setzen oder zurückstellen. Die Bearbeitung eines Kanalsteuerprogrammes
CCP wird durch Wiederholung dieser drei Operationen fortgesetzt
bis ein Warte-Befehl erkannt wird oder 32 Befehle bearbeitet
worden sind, wodurch ein Austritt aus der Befehlsabruf/Bearbeitungsroutine
620 in die Bedienungs-Abtastroutine 604 hervorgerufen
wird.
Eine Firmwareantwort ist für alle Arten von E/A-Anweisungen nicht
erforderlich. Wenn eine Firmwaremaßnahme gefordert ist, so wird
der aus einem E/A-Datenpufferregister gelesene Funktionscode decodiert,
um festzustellen, ob eine Eingabe- oder Ausgabeoperation
auszuführen ist. Nach dieser Decodierung des Funktionscodes findet
eine weitere Decodierung statt, um den Eintritt in die richtige
Bearbeitungsroutine zu gestatten. Ein Eintritt in die E/A-Anweisungsdecodier/Bearbeitungsroutinen
616 wird von der Bedienungs-Abtastroutine
604 gewonnen, wenn eine E/A-Anweisung festgestellt
wird. Die DMA-Aufwandsroutine 624 benutzt die Bedienungs-Abtastroutine
zum Zugriff auf die E/A-Anweisungsdecodier/Bearbeitungsroutinen
616, wenn die Verwendung des E/A-Datenpufferregisters gefordert
ist. Nach der E/A-Anweisungsbearbeitung werden beim Eintritt
von einer DMA-Aufwandsroutine die DMA-Routinen 610 zurückgeholt,
um in die Bedienungs-Abtastroutine 604 überzugehen. Wenn aus
der Bedienungs-Abtastroutine in die Anweisungsdecodier/Bearbeitungsroutinen
616 eingetreten worden ist, so erfolgt der Austritt
zurück in die Bedienungs-Abtastroutine.
Die DMA-Behandlungs/Bearbeitungsroutinen 610 werden benutzt, um
Daten in den Hauptspeicher 106 des Systems einzuschreiben bzw. aus
diesem auszulesen. Viele der Routinen dieses Bereiches werden benutzt,
um die Adresse, den Bereich, die Daten und die zugehörige
Statusinformation fortzuschreiben.
Die DMA-Schreiboperation 626, die zum Senden von Daten von dem
Dialogprozessor MLCP in den Hauptspeicher ausgeführt wird, erfordert
die Benutzung verschiedener Routinen, die den DMA-Behandlungs/Bearbeitungsbereich
umfassen. Diese Routinen fordern das E/A-Datenregister
an und sie gewinnen in dem Fall, daß dieses belegt ist,
auf zwei Weisen Zugriff zu diesem: Falls von der Hardware belegt,
wird ein vorübergehender Halt durchgeführt bis die Hardware verfügbar
ist; und im Falle einer anhängigen E/A-Anweisung wird diese
Anweisung bearbeitet und eine Rückkehr zu diesen Routinen durchgeführt.
Die Routinen laden sodann die drei Bytes der Adresse und
die zwei Bytes der Daten in das E/A-Datenregister. Es werden sodann
Steuersignale gesetzt, und der DMA-Zyklus wird ausgelöst. Die
Firmware wartet sodann auf eine Zyklusvervollständigung und tritt
in die Bedienungs-Abtastroutine 604 direkt oder über die Beendigungsroutine
628 ein.
Die DMA-Leseoperation wird ausgeführt, um Daten von dem Hauptspeicher
in dem Dialogprozessor MLCP zu erhalten, und sie erfordert
die Anwendung verschiedener Routinen, die die DMA-Behandlungs/Bearbeitungsroutinen
610 umfassen. Die Routinen fordern einen Zugriff
auf das E/A-Datenregister auf eine von zwei Weisen an, falls
dieses belegt ist: Ist das Register durch die Hardware belegt, so
wird ein vorübergehender Halt ausgelöst bis die Hardware verfügbar
ist; ist das Register durch eine anhängige E/A-Anweisung belegt,
so wird die Anweisung bearbeitet und eine Rückkehr zu diesen
Routinen durchgeführt. Die Routinen laden sodann die Hauptspeicheradresse
und die Kanalnummer der Quelle in das E/A-Datenregister.
Es werden sodann Steuersignale gesetzt und es wird der Anforderungszyklus
ausgelöst. Die Firmware hält sodann vorübergehend an und
wartet auf eine Antwort von dem Hauptspeicher. Im Falle einer Nicht-Bestätigungs-Antwort
NAK wird der Fehler für nicht-bestehende
Systemmittel gesetzt und es wird in die Bedienungs-Abtastroutine
604 mittels der Beendigungsroutine 628 eingetreten. Wenn eine Bestätigung
ACK von dem Dialogprozessor MLCP empfangen wurde, so
wartet die Firmware auf einen Lesezyklus der zweiten Hälfte (siehe
US-PS 39 93 981), zu welchem Zeitpunkt die Datenunversehrtheit
überprüft wird. Die Datenbytes werden in den Speicher mit wahlfreiem
Zugriff geladen und es erfolgt ein Austritt zu der geeigneten
Prozedur.
Die verzögerten Unterbrechungs-Behandlungsroutinen 608 benutzen
einen Zähler, der die Anzahl der verschiedenen Unterbrechungen anzeigt,
die zuvor nicht bestätigt wurden. Wenn sich der Zähler auf
einem von Null unterschiedlichen Wert bei der Abtastung dieses
Kanals befindet, so testet die Firmware einen Wiederaufnahme-Unterbrechungsindikator.
Wenn dieser Indikator gelöscht ist, so wird
in die Bedienungs-Abtastroutine eingetreten. Für den Fall, daß
der Wiederaufnahme-Unterbrechungsindikator gesetzt ist, wird der
Zählstand des Zählers für die verzögerte Unterbrechung erniedrigt,
und es wird die Unterbrechung erzeugt. Zur Bearbeitung der Unterbrechung
wird das E/A-Datenregister mit folgenden Werten geladen:
Der Bestimmungs-Kanalnummer, der Unterbrechungs-Pegelnummer und der Kanalnummer der Quelle. Die Firmware setzt sodann die geeigneten Steuersignale der Sammelschiene 101 und löst einen Anforderungszyklus aus. Ein vorübergehender Halt wird benutzt, um auf die Antwort zu warten, und für den Fall, daß die Antwort eine Nicht-Bestätigung NAK beinhaltet, wird der Zählstand des Zählers für die verzögerte Unterbrechung erhöht, und es wird die die Unterbrechung anfordernde Routine zurückgeholt. Wenn eine Bestätigungs-Antwort ACK empfangen wird, so wird die anfordernde Routine direkt zurückgeholt, ohne daß der Zählstand des Zählers für die verzögerte Unterbrechung erhöht wird.
Der Bestimmungs-Kanalnummer, der Unterbrechungs-Pegelnummer und der Kanalnummer der Quelle. Die Firmware setzt sodann die geeigneten Steuersignale der Sammelschiene 101 und löst einen Anforderungszyklus aus. Ein vorübergehender Halt wird benutzt, um auf die Antwort zu warten, und für den Fall, daß die Antwort eine Nicht-Bestätigung NAK beinhaltet, wird der Zählstand des Zählers für die verzögerte Unterbrechung erhöht, und es wird die die Unterbrechung anfordernde Routine zurückgeholt. Wenn eine Bestätigungs-Antwort ACK empfangen wird, so wird die anfordernde Routine direkt zurückgeholt, ohne daß der Zählstand des Zählers für die verzögerte Unterbrechung erhöht wird.
In die Datengruppen-Abtastroutine 612 wird von der Kanal-Abtastroutine
622 eingetreten, wenn das Bit 0 des Anweisungsbytes der
Leitungssteuertabelle LCT des Kanals gesetzt ist. Die Routine ergreift
die erforderlichen Maßnahmen, um den Status dieses Kanals
von dem Adapter zu lesen. Wenn der neue Status von dem Adapter
empfangen wird, so wird er mit dem in der Leitungssteuertabelle LCT
gespeicherten Adapterstatus verglichen. Ist der Status unverändert,
so wird eine Rückkehr zu der Bedienungs-Abtastroutine 604 durchgeführt.
Wenn der neue Status von dem Adapter verändert ist, so
wird der neue Status in die Leitungssteuertabelle LCT eingeschrieben,
und es wird das LCT-Kanal-Anweisungsbyte geprüft, um festzustellen,
welche Maßnahme erforderlich ist. Die Datengruppen- oder
CLA-Abtastroutine sei nunmehr anhand der Fig. 13 bis 17 näher erläutert:
Hinsichtlich jeder Dialogleitung steuert der Dialogprozessor
MLCP den Adapter CLA mittels eines Leitungsregisters für diese
Leitung. Der Wert in dem Leitungsregister beeinflußt die Operationen
beider Kanäle der einen Leitung. Das Leitungsregister eines
Adapters CLA wird durch ein Kanalsteuerprogramm CCP geladen, welches
Programm einen oder beide Kanäle der betreffenden Dialogleitung
bedient. Bei dieser Steuerung durch das Kanalsteuerprogramm
CCP tastet die MLCP-Firmware in dem Steuerspeicher 308
periodisch den Adapterstatus CLA im Hinblick auf eine vorgegebene
Dialogleitung ab, wobei dieser in einem Statusregister für diese
Leitung niedergelegt ist. Immer wenn die MLCP-Firmwareabtastung
bestimmte Arten von Statusänderungen, die durch das Kanalsteuerprogramm
CCP im voraus definiert sind, feststellt, wird der gesamte
Inhalt des Statusregisters in dem Byte 14 bzw. 46 der Leitungssteuertabelle
LCT gespeichert, je nachdem, ob ein Sende-
bzw. Empfangsbetrieb vorliegt. Nachfolgend stattfindende Maßnahmen
sind ebenfalls im voraus durch das Kanalsteuerprogramm CCP
definiert.
In die CLA-Abtastroutine 612 wird eingetreten und es erfolgt sodann
eine Bearbeitung in Abhängigkeit davon, ob eine CLA-Statusänderung
vorliegt. Das Flußdiagramm dieser Abtastoperation ist
in näheren Einzelheiten in Fig. 17 dargestellt und ist unter Zuhilfenahme
der in den Fig. 13 bis 16 dargestellten Einzelheiten
der zugehörigen LCT-Bytes ohne weiteres verständlich.
Die CLA-Abtastroutine sei nunmehr beschrieben. Ein Kanalsteuerprogramm
CCP fordert eine MLCP-Firmwareabtastung des Statusregisters
an, wenn das Bit 0 (Abtaststeuerung) des LCT-Bytes 8 bzw.
des LCT-Bytes 40 auf den Wert "1" gesetzt ist. Durch Setzen geeigneter
Bits in einer in dem LCT-Byte 15 bzw. dem LCT-Byte 47
enthaltenen Maskierung definiert das Kanalsteuerprogramm CCP im
voraus, welche Arten von CLA-Statusänderungen die Verschiebung
des gesamten Inhalts des Statusregisters zwischen einem oder
mehreren MLCP-Dialogkanälen und den Dialogdatenblöcken CDB im
Hauptspeicher hervorrufen. Jedes Kanalsteuerprogramm CCP behandelt
einen Dialog-Datenstrom, der von diesen Dialog-Datenblöcken
CDB empfangen oder gesendet wird. Der Datenstrom wird zeichenweise
behandelt und das Kanalsteuerprogramm CCP kann ein einzelnes
Zeichen modifizieren oder löschen bzw. es kann das Zeichen
unverändert übertragen. Das Kanalsteuerprogramm CCP kann ebenfalls
bestimmte Bytes der Leitungssteuertabelle LCT, die zu dem
von dem Programm bedienten Kanal gehört, manipulieren. Diese LCT-Information
bezieht sich auf Dialogsteuerblöcke CCB und die Adapter
CLA. Jedes Kanalsteuerprogramm CCB in dem Dialogprozessor MLCP
ist in aufeinanderfolgenden Speicherplätzen des CCP-Bereichs des
Speichers RAM abgelegt, der sich zwischen den Bytes 512 und 3583
erstreckt (siehe Fig. 6). Mehrere Kanalsteuerprogramme CCP können
in dem Speicher RAM nebeneinander vorliegen, vorausgesetzt, daß
sie nicht überlappen. Ein Kanalsteuerprogramm CCP kann mehr als
einen Dialogkanal bedienen, wobei jedoch die Leitungssteuertabelle
LCT und die Dialogsteuerblöcke CCB eines jeden Kanals in kanalspezifischen
RAM-Speicherplätzen außerhalb des CCP-Bereichs angeordnet
sind, unabhängig davon, ob dieser Kanal durch ein zugeordnetes
Kanalsteuerprogramm CCP oder durch ein mehrere Kanäle bedienendes
Kanalsteuerprogramm CCP bedient wird. Die kanalspezifischen
Speicherbereiche für LCT und CCB gestatten einen Neueintritt
der Kanalsteuerprogramme CCP und daher die Bedienung von
mehr als einem Kanal. Die MLCP-Firmware gestattet dem Kanalsteuerprogramm
CCP den Aufruf eines Subroutinenpegels (außerhalb der
aufeinanderfolgenden CCP-Speicherplätze) und danach die Rückkehr
zu einem nächsten Befehl der Folge nach diesem Aufruf.
Ein Kanalsteuerprogramm CCP ist in dem Speicher RAM 312 des Dialogprozessors
MLCP gespeichert und die anfängliche Startadresse
des Programms muß in die geeigneten Bytes (6, 7, 38, 39) der Leitungssteuertabelle
LCT des Kanals geschrieben werden, der durch
dieses Programm CCP bedient wird. Wenn das Kanalsteuerprogramm
CCP zum ersten Mal gestartet wird, wird die Anfangs-Startadresse
aus der Leitungssteuertabelle LCT in das P-Register (Programmzähler)
des Dialogprozessors MLCP geladen, das aufgrund der MLCP-Firmware
in dem Verarbeitungselement CPE 303 angeordnet ist.
Wenn alle geforderten Kanalsteuerprogramme CCP einmal in dem Speicher
RAM 312 geladen sind und alle Vorbereitungsaktivitäten abgelaufen
sind, so kann das Kanalsteuerprogramm CCP durch die Bearbeitung
eines E/A-Befehls des Hauptspeicherprogramms gestartet
werden. Normalerweise besteht die erste Maßnahme des Kanalsteuerprogrammes
CCP im Laden verschiedener Leitungsregister des geeigneten
Kanals der Adapter CLA. Das Kanalsteuerprogramm CCP kann
sodann einen Warte-Befehl bearbeiten, was von der ersten Dialog-Nachrichtenaktivität
abhängt.
Während der Bearbeitung kann ein Kanalsteuerprogramm CCP durch
eines der folgenden Mittel gestartet werden: Eine Kanal-Unterbrechungsanforderung
von dem geeigneten Adapter CLA (eine Anforderung
für eine CCP-Behandlung); Bearbeitung eines E/A-Befehls in dem
Hauptspeicherprogramm (Ausgangkanalsteuerung - Start Ein/Ausgabe);
oder eine Änderung im CLA-Adapterstatus. Jedesmal wenn ein Kanalsteuerprogramm
CCP gestartet wird, speichert der Dialogprozessor
MLCP seinen kanalspezifischen Zusammenhang von der richtigen Leitungssteuertabelle
LCT zurück. Dieser Zusammenhang umfaßt die richtige
Einstellung des P-Registers (Programmzähler), des R-Registers
(Allgemeinregister) und der Programmindikatoren des Dialogprozessors
MLCP. Wenn das Kanalsteuerprogramm CCP gestartet ist, so gestattet
der Dialogprozessor MLCP eine Bearbeitung von bis zu 32 Befehlen
ohne Unterbrechung. Nachdem 32 Befehle bearbeitet worden
sind, tritt eine sogenannte Firmwarepause ein, und das Kanalsteuerprogramm
CCP wird unterbrochen. Der Zusammenhang des Kanalsteuerprogramms
CCP wird in der Firmware reservierten Bytes der richtigen
Leitungssteuertabelle LCT gespeichert. Die Firmwarepause erlaubt
die Hintergrund-Firmwareabtastung und die Behandlung der Kanal-Unterberechungsanforderung.
Wenn das Kanalsteuerprogramm CCP nach
der Pause wieder aufgenommen wird, wird sein gesicherter Zusammenhang
automatisch durch die Firmware rückgespeichert. Die Datenzeichen-Bearbeitungsschleife
eines Kanalsteuerprogrammes CCP behandelt
typischerweise ein einzelnes Zeichen des Datenstromes und endet
mit einem Warte-Befehl. Wenn der Warte-Befehl des Kanalsteuerprogrammes
CCP bearbeitet wird, so speichert die MLCP-Firmware
in der geeigneten Leitungssteuertabelle LCT den laufenden Inhalt
des P-Registers, des R-Registers und der Programmindikatoren. Dieser
Zusammenhang wird durch den Dialogprozessor MLCP rückgespeichert,
wenn dieses Kanalsteuerprogramm CCP erneut gestartet wird.
Die MLCP-Register und Programmindikatoren, die für das Kanalsteuerprogramm
CCP von besonderer Bedeutung sind, sind folgende:
P-Register (Programmzähler) - ein 12-Bit-Register, das die RAM-Adresse
des nächsten auszuführenden CCP-Befehls enthält; R-Register -
ein 8-Bit-Allgemeinregister, das von den CCP-Befehlen benutzt wird;
E(Equal)-Indikator - ein Indikator, der das Ergebnis der letzten
Bearbeitung eines C-Befehls (Vergleichsbefehl) speichert, wobei bei
erfülltem Vergleich der E-Indikator auf den Wert "1" gesetzt wird
und dieser Indikator durch einen BET-Befehl (Branch if Equal True=Verzweigung
bei erfülltem Vergleich) und einen BEF-Befehl (Branch
if Equal False=Verzweigung bei nicht-erfülltem Vergleich) getestet
werden kann; LC (Last Character=letztes Zeichen)-Indikator, ein
Indikator, der auf den Wert "1" nach Bearbeitung eines Formatlade-
bzw. Formatspeicher-Befehls (LD- bzw. ST-Befehl) gesetzt wird,
wobei durch diesen Befehl das CCB-Bereichsfeld zum Erreichen des
Wertes Null veranlaßt wurde. Der LC-Indikator bleibt auf den Wert
"1" gesetzt, bis der erste LD- bzw. ST-Befehl für den nächsten
Dialogsteuerblock CCB bearbeitet wird, wobei zu diesem Zeitpunkt
der LC-Indikator auf den Wert "0" zurückgestellt wird. Dieser Indikator
kann durch die BLCT- und BLCF-Befehle getestet werden
(BLCT=Branch if Last Character True=Verzweigung, wenn letztes
Zeichen wahr; BLCF=Branch if Last Character False=Verzweigung,
wenn letztes Zeichen flasch). Ebenso beschreibt der LB-Hinweis
(Last Block-indicator=Hinweis auf letzten Block) bei einem Wert
"1" und bei aktivem Dialogsteuerblock CCB den letzten Dialogdatenblock
CDB in einer Nachricht. Der LB-Indikator wird auf den Wert
"1" gesetzt, wenn das LB-Bit im Steuerfeld dieses Dialogsteuerblockes
CCB bei errichtetem Dialogsteuerblock CCB auf den Wert "1"
gesetzt war. In anderen Fällen ist der LB-Indikator auf den
Wert "0" zurückgestellt. Dieser Indikator arbeitet als ein Hinweis
auf das Kanalsteuerprogramm CCP, und er kann durch BLBT- und BLBF-Befehle
getestet werden (BLBT=Branch if Last Block True=Verzweigung
wenn letzter Block wahr BLBF=Branch if Last Block False=Verzweigung
wenn letzter Block falsch). Dieser Indikator wird
durch die Firmware des Dialogprozessors MLCP nicht benutzt.
Es gibt fünf Arten von bearbeitbaren Befehlen, die für das Kanalsteuerprogramm
CCP verfügbar sind, nämlich Verzweigungsbefehle
Doppeloperandenbefehle, Ein/Ausgabe-Befehle, Sende/Empfangs-Befehle
und allgemeine Befehle. Verzweigungsbefehle werden zur Verzweigung
auf Zielspeicherplätze in Abhängigkeit von dem Zustand des zugehörigen
Indikators, z. B. BLCT, benutzt, wobei dieser Befehl bearbeitet
wird, wenn der LC-Indikator des Dialogprozessors MLCP auf
den Wert "1" gesetzt ist. Doppeloperandenbefehle werden benutzt,
um zwei Operanden aufgrund eines einzelnen solchen Befehls zu bearbeiten.
Ein/Ausgabe-Befehle werden benutzt, um die Steuerung,
Synchronisierung, den Status und die Zeichenkonfiguration zwischen
dem R-Register des Dialogprozessors MLCP und den geeigneten Leitungsregistern eines Adapters CLA zu übertragen. Die Ein/Ausgabe-Befehle
können ebenfalls benutzt werden, um Datenzeichen zwischen
dem Dialogprozessors MLCP und einem Leitungsregister eines Adapters
CLA zu übertragen. Sende/Empfangs-Befehle werden benutzt, um Daten
zwischen dem R-Register des Dialogprozessors MLCP und einem Leitungsregister
eines Adapters CLA zu übertragen. Andere Information
wird zwischen dem R-Register und den CLA-Leitungsregistern aufgrund
von Ein/Ausgabe-Befehlen übertragen.
Beispielsweise stehen dem Kanalsteuerprogramm CCP neun allgemeine
Befehle zur Verfügung. Diese Befehle umfassen die nachstehend beschriebenen
NOP-, WAIT-, GNB-, DEC-, RET- und INTR-Befehle. der
NOP-Befehl (No operation=keine Operation) bedeutet, daß keine
Operation ausgeführt wird. Der WAIT-Befehl (Wartebefehl) wird als
letzter Befehl eines jeden Kanalsteuerprogrammes CCP benutzt und
bedeutet, daß die Bearbeitung dieses Programmes aufgegeben und in
der geeigneten Leitungssteuertabelle LCT der Inhalt des P-Registers,
des R-Registers und der Programmindikatoren gespeichert
wird. Der Inhalt dieser Register und Indikatoren, wird zurückgespeichert,
wenn dieses Kanalsteuerprogramm CCP erneut von dem Dialogprozessor
MLCP behandelt wird. Der GNB-Befehl (Get Next Block=hole
nächsten Block) bedeutet, daß der Inhalt der Statusbytes
der Leitungssteuertabelle LCT in das Statusfeld des aktiven Kanalsteuerblockes
CCB übertragen wird; zur gleichen Zeit wird das CCB-Statusvervollständigungsbit
auf den Wert "1" und in dem CCB-Steuerfeld
das gültige CCB-Bit auf den Wert "0" zurückgestellt, wobei
es sich hierbei um das Bit 1 gemäß Fig. 2 handelt; als nächstes
wird die aktive CCB-Hinweisadresse auf den folgenden Dialogsteuerblock
CCB in die Liste für diesen Kanal verschoben. Der nächste
Formatlade (LD)- bzw. Formatspeicher (ST)-Befehl nimmt Bezug auf
diesen neuen Dialogsteuerblock CCB. Der DEC-Befehl (Decrement
R-register=Zähle R-Register abwärts) bedeutet eine Verminderung
des Inhalts des R-Registers des Dialogprozessors MLCP um eins. Der
RET-Befehl (Return Form Subroutine=Rückkehr von Subroutine) bedeutet,
daß die 12-Bit-CCT-Adresse, die in den der Firmware reservierten
LCT-Bytes gespeichert ist, in das P-Register des Dialogprozessors
MLCP zurückgespeichert wird, wenn ein BS-Befehl (Branch
to Subroutine=Verzweigung zur Subroutine) ausgeführt wurde. Der
INTR-Befehl (Interrupt=Unterbrechung) ruft eine Unterbrechung
der Zentraleinheit hervor. Dieser Befehl gestattet dem Kanalsteuerprogramm
CCP die Aufhebung der Hauptspeicher-Programmsteuerung,
wobei die Dialogsteuerblöcke CCB im vervollständigten Zustand eine
Unterbrechung der Zentraleinheit hervorrufen. Eine Verwendung
dieses Befehls besteht darin, einem Kanalsteuerprogramm CCP die
Unterbrechung der Zentraleinheit für einen Empfangskanal zu gestatten,
wenn das Kanalsteuerprogramm CCP das Ende einer Eingangsnachricht
mit veränderlicher Länge festgestellt hat. Da die Eingangsnachricht
von unbestimmter Länge ist, kann in diesem Fall das
Hauptspeicherprogramm nicht vorhersagen, welcher Dialogsteuerblock
CCB aktiv sein wird, wenn das letzte Eingangszeichen empfangen
wird - und eine Unterbrechung bei Vervollständigung eines jeden
Zwischen-Dialogsteuerblockes CCB ist im allgemeinen unerwünscht
wegen der hierdurch entstehenden Belastung der Zentraleinheit.
Wie zuvor beschrieben, bearbeitet jedes Kanalsteuerprogramm CCP
Zeichen für Zeichen einen Zeichenstrom und fährt hiermit fort bis
es sich selbst ausschaltet bzw. ausgeschaltet wird, um die Behandlung
einer anderen Quelle zu gestatten. Solche anderen Quellen
können beispielsweise ein anderes Kanalsteuerprogramm CCP oder
einen Ein/Ausgabe-Befehl betreffen. Die Bearbeitung des Kanalsteuerprogrammes
CCP wird aufgegeben, wenn es eine vorbestimmte
Anzahl von Befehlen bearbeitet hat. Beispielsweise können 32 aufeinanderfolgende
Befehle in dem speziellen Kanalsteuerprogramm CCP
bearbeitet worden sein, bevor die Bearbeitung durch eine sogenannte
Behandlungspause aufgegeben wird. Diese Anzahl von Befehlen ist so
ausgewählt, um sicherzustellen, daß ein Fehlerzustand, beispielsweise
ein Daten-Überlaufzustand auf einem anderen Kanal nicht auftreten
kann.
Gemäß Fig. 19 wird bei Bearbeitung der Abtastroutine 604, wenn
eine Dialogleitung tatsächlich eine Behandlung erfordert und dementsprechend
die Bearbeitung eines Kanalsteuerprogrammes CCP auslösen
muß, in die durch Fig. 19 veranschaulichte Operation im
Block 700 eingetreten und die CLA-Bedienungsanforderung gemäß
Block 702 aufgerufen. An dieser Stelle wird der sogenannte Pausenzähler
voreingestellt, d. h., der Pausenzähler wird jedesmal voreingestellt,
wenn ein neues Kanalsteuerprogramm CCP zu bearbeiten
ist oder jedesmal, wenn in das gleiche Kanalsteuerprogramm CCP von
der Behandlungs-Abtastroutine eingetreten wird. Dies ist im Block
704 veranschaulicht. Der Pausenzähler kann in dem Verarbeitungselement
CPE 303 in einem der Arbeitsregister enthalten sein. Bei
Voreinstellung des Pausenzählers auf einen vorgegebenen Wert
wird die Befehls-Abrufroutine 706, die in Fig. 11 in Form der
Routine 620 dargestellt ist, zur Bearbeitung freigegeben, worauf
der Pausenzähler entweder hinsichtlich seines Zählstandes erniedrigt
bzw. erhöht wird, was von der Voreinstellung des Pausenzählers
abhängt. Der Inhalt des Pausenzählers wird gemäß Block 708 erniedrigt
und anschließend wird festgestellt, ob der Pausenzähler
einen vorbestimmten Wert von beispielsweise Null erreicht hat.
Ist der Pausenzähler beispielsweise auf die Zahl 32 voreingestellt
worden und danach abwärts gezählt worden, so bedeutet der Zählstand
Null, daß dieses Kanalsteuerprogramm CCP aufgegeben werden
soll, um eine andere Quelle zu behandeln, die dies erfordert.
Wenn der Pausenzähler nicht den Zählstand Null erreicht, was durch
die Nein-Antwort des Blockes 710 angezeigt ist, so wird der CCP-Befehl
gemäß dem Block 712 tatsächlich abgerufen und gemäß dem
Block 714 bearbeitet, worauf der nächste Befehl für dieses spezielle
Kanalsteuerprogramm nach dem Eintritt in die Befehls-Abrufroutine
im Block 706 abgerufen wird. Dieses Verfahren setzt sich
fort, bis der Pausenzähler den Zählstand Null erreicht, in welchem
Fall der Block 710 eine Ja-Antwort ausgibt und die Bearbeitung
dieses speziellen Kanalsteuerprogramms CCP aufgegeben wird, worauf
der Prozeß mit der Behandlungs-Abtastroutine verlassen wird. Die
Ja-Antwort des Blockes 710 veranlaßt einen Eintritt in die Warte-Befehlsroutine
in Block 716, es sei denn, daß die Behandlungsanforderung
nicht zurückgestellt, und sie veranlaßt ferner die
Sicherung des dieser CCP-Bearbeitung zugeordneten Zusammenhangs
in geeigneten Registern, wie dies durch den Block 718 angezeigt
ist. Die Dialogleitung-Behandlungspause kann sodann in die Behandlungs-Abtastroutine
gemäß dem Block 720 austreten. Jede Quelle,
die somit eine Behandlung erfordert, d. h. eine E/A-Anweisung ebenso
wie die verschiedenen eine CCP-Bearbeitung erfordernden Kanäle
einschließlich dem gerade aufgegebenen Kanal, wird somit nicht an
einer Behandlung während einer übertrieben langen Zeit gehindert.
Jede solche eine Behandlung anfordernde Quelle wird dementsprechend
bedient, ohne daß irgendwelche Fehler aufgrund von Zeitverzögerungen
in dem System auftreten.
Wie zuvor erwähnt, gibt es mehr als einen Dialogsteuerblock CCB
pro Kanal. Mit mehr als zwei sogenannten Dialogsteuerblöcken CCB
pro Kanal werden die beiden Dialogsteuerblöcke so errichtet, daß
der eine Dialogsteuerblock CCB die Steuerung übernimmt wenn der
andere Dialogsteuerblock CCB vervollständigt ist. Wenn jedoch der
erste Block benutzt wird und weiterhin ein Datenstrom ankommt, so
muß der andere Block unmittelbar umgeschaltet werden. Diese Umschaltung
muß sehr schnell geschehen, so daß tatsächlich keine
Zeichen verlorengehen. Es hat sich jedoch herausgestellt, daß sogar
zwei solcher Dialogsteuerblöcke CCB nicht ausreichend sind.
Beispielsweise ist es beim Empfang möglich, den ersten Block zu
vervollständigen und sodann sehr schnell die Nachricht in den zweiten
Block zu holen. Dementsprechend wird ein dritter Block sofort
benötigt. Dies ist der Fall, da beispielsweise unmittelbar nach
einer Nachricht, die den gesamten ersten Block auffüllt, ein kleiner
Teil der Nachricht den zweiten Block vervollständigen kann,
ohne daß die erforderliche Zeit zur Verfügung steht, den ersten
Block zurückstellen. Das Erfordernis eines dritten Blockes liegt
somit auf der Hand. In den meisten Fällen hat aufgrund der frühen
Beendigung des zweiten Blockes die Zentraleinheit CPU keine ausreichende
Zeit zur Reaktion und zum Anzeigen, daß die ersten zwei
Blöcke oder wenigstens der erste Block nunmehr für eine Verwendung
erneut verfügbar sind bzw. ist. Somit ist ein dritter Block erforderlich
und es sind zumindestens vier Blöcke möglich. Bei Benutzung
von drei Dialogsteuerblöcken CCB ist das Unterbrechungsbit
204 in dem Steuerbyte 5 gemäß Fig. 2 in einem dieser Dialogsteuerblöcke
CCB in Abhängigkeit von der Leitungsgeschwindigkeit
und der Größe der Blöcke im Hauptspeicher gesetzt, so daß wenigstens
ein Dialogsteuerblock CCB beim Empfang der Unterbrechung von
der Zentraleinheit CPU verfügbar ist. Beim Empfang einer solchen
Unterbrechung von der Zentraleinheit CPU wird somit der Dialogsteuerblock
CCB für eine weitere Verwendung ausgelöst.
Der Umschaltmechanismus zwischen den Dialogsteuerblöcken CCB ist
folgender. Zunächst sei festgestellt, daß jeder Dialogsteuerblock
CCB einen speziellen Bereich aufweist. Der Bereich bezieht sich
auf die Größe des Blockes im Speicher. Es gibt Befehle in der Zentraleinheit
CPU und in den Kanalsteuerprogrammen CCP, die eine
Verzweigung veranlassen, wenn das letzte Zeichen wahr ist und somit
eine Umschaltung zwischen den Dialogsteuerblöcken CCB ermöglichen.
Die Art und Weise, in der solche Dialogsteuerblöcke CCB adressiert
werden, ist durch das Element 310 in Fig. 8 veranschaulicht worden.
Diese in Hardware verwirklichte E/A-Anweisungslogik 310 sei nunmehr
anhand von Fig. 20 in näheren Einzelheiten erläutert, wobei hier
ebenfalls die Art und Weise dargestellt ist, in der ein Kanalsteuerprogramm
CCP in seiner Bearbeitung durch eine von der Zentraleinheit
CPU 102 ausgegebene E/A-Anweisung unterbrochen werden kann.
Gemäß Fig. 20 gibt es drei Eingänge von der Sammelschiene 101. Ein
erster Eingang geht zu dem Zwischenspeicher-Adreßzähler 506, ein
zweiter Eingang geht zu dem Funktionscode-Übersetzer 511 und ein
dritter Eingang geht zu dem Sammelschienen-Eingaberegister 504.
Jedes dieser Elemente ist zuvor erläutert worden. An den Ausgang
des Zwischenspeicher-Adreßzähler 506 sind zwei Zwischenspeicher
A 804 und B 806 angeschlossen, die in Fig. 8 gemeinsam als Zwischenspeicher
516 bezeichnet sind. Beide Zwischenspeicher bestehen aus
einem 16×4-Bitspeicherfeld, wobei 4 Bit für jeden der 16 Kanäle vorgesehen
sind. Der Zwischenspeicher 804 wird benutzt, um einen NAK-Indikator,
einen Hinweisindikator und einen CCB-Zählstand zu speichern.
Der Zwischenspeicher 806 wird benutzt, um den Ladezählstand
des Zählers 514 und den Statuszählstand des Zählers 516 entsprechend
zu speichern.
Wie erwähnt wird der Zwischenspeicher 804 zur Speicherung des CCB-Zählstandes
benutzt. Dies ist der Zählstand des CCB-Zählers 810,
der für die Zugriffssteuerung der verschiedenen Dialogsteuerblöcke
CCB benutzt wird. Wenn nicht mehr als vier Dialogsteuerblöcke CCB
pro Kanal vorliegen, so ist zwingend vorgeschrieben, daß nicht
mehr als vier Dialogsteuerblöcke CCB hinsichtlich eines bestimmten
Kanales geladen werden, um Fehler zu vermeiden. Ferner ist
zwingend vorgeschrieben, daß fehlerhafte Statusinformation nicht
gelesen wird. Wenn keine Dialogsteuerblöcke CCB geladen sind, so
muß die Zentraleinheit CPU dementsprechend daran gehindert werden,
den Status eines Dialogsteuerblockes CCB zu lesen, für den keine
gültige Information vorliegt. Der CCB-Zähler 810 verfolgt somit
den Zählstand in den Lade- und Statuszählern 514 und 515, indem er
den Differenz-Zählstand zwischen den beiden Zählständen der Zähler
514 und 515 speichert. Wenn beispielsweise hinsichtlich eines speziellen
Kanales zwei Dialogsteuerblöcke CCB geladen sind, so weist
der CCB-Zähler 810 einen Zählstand von zwei für diesen Kanal auf.
Wenn die nächste Anweisung von der Zentraleinheit CPU die Statusbestimmung
eines Dialogsteuerblockes CCB für diesen Kanal vorgibt,
so wird unter Verwendung der nächsten Statusanweisung als Eingang
die Benutzung dieses Dialogsteuerblockes CCB vervollständigt und
aufgrund einer solchen Anweisung der Dialogsteuerblock CCB zurückgestellt,
wodurch der CCB-Zähler 810 auf einen Zählstand von eins
zurückgestellt wird.
Das Sammelschienen-Eingangsregister 504 empfängt Daten über die
Sammelschiene 101 und schreibt solche Daten mittels des Datenmultiplexers
408 in den Speicher RAM 312. Das Register 504 ist ebenfalls
gemäß Fig. 8 angeordnet und dient der Datenübertragung zu
der Sammelschiene 101. Die von dem Register 504 empfangenen Daten
bzw. die zu diesem übertragenen Daten sind jene Daten, die sich an
dem durch den Adressenmultiplexer 410 adressierten Speicherplatz
befinden. Der Adressenmultiplexer 410 besitzt grundsätzlich vier
Eingänge in der dargestellten Weise. Da die Dialogsteuerblöcke
CCB gemäß Fig. 6 in dem Adressenbereich von 3584 bis 4095 abgelegt
sind, werden die signifikantesten Bits 0, 1 und 2 auf den Binärwert
"1" gesetzt, um unabhängig von der Adressierung der Bits 3
bis 11 den anfänglichen Speicherplatz in dem Speicher RAM 312 für
die Dialogsteuerblöcke CCB zu adressieren. Die nächsten vier signifikantesten
Bits 3 bis 6 am Eingang des Adressenmultiplexers 410
werden von dem Zwischenspeicher-Adreßzähler 506 empfangen, der
seinerseits diese vier Adreßbits (Kanalauswahl) von der Sammelschiene
101 empfängt. Der Zähler 506 wird benutzt, um einen der
16 Speicherplätze der Zwischenspeicher 804 und 806 zu adressieren,
wie dies ebenfalls durch die vier hochrangigen Bits bei der Adressierung
des CCB-Bereichs im Speicher RAM 312 geschieht. Die Bits
7 und 8 werden durch den CCB-Adressenmultiplexer 808 adressiert,
der Eingangssignale entweder von dem Ladezähler 514 oder dem Statuszähler
515 aufnimmt. Während die Eingänge 3 bis 6 die Adressierung
der Blöcke der vier Dialogsteuerblöcke CCB somit ermöglichen,
ermöglichen die Adreßeingänge der Leitungen 7 und 8 die
Adressierung des individuellen Dialogsteuerblockes CCB, wobei jeder
Steuerblock eine Länge von 8 Bytes aufweist. Der letzte Eingang
wird von dem Funktionscode-Umsetzer 511 hinsichtlich der am
wenigsten signifikanten Bits 9 bis 11 des Adressenmultiplexers 410
erhalten, wodurch die Adressierung eines individuellen Bytes in
einem Dialogsteuerblock CCB ermöglicht wird.
Wie zuvor erwähnt, ist der Zwischenspeicher 810 ebenfalls in der
Lage, NAK- und Hinweis-Indikatoren zu speichern. Der NAK-Hinweis
im Zwischenspeicher 804 wird gesetzt, wenn vier Dialogsteuerblöcke
CCB für einen speziellen Kanal nach der letzten nächsten Statusanweisung
geladen worden sind. Der NAK-Hinweis wird unmittelbar zu
der Zentraleinheit CPU zurückgesendet und zeigt eine fehlerhafte
Anweisung an, wenn die Zentraleinheit CPU das Laden eines anderen
Dialogsteuerblockes CCB für diesen speziellen Kanal versucht. Auf
dieses Weise wird der Zentraleinheit unmittelbar ein NAK-Hinweis
angezeigt, ohne daß sie auf den Dialogprozessor MLCP warten muß,
um zu diesem Zeitpunkt die Gültigkeit der ausgegebenen Anweisung
prüfen zu können. Der Hinweisindikator wird andererseits benutzt,
um die Tatsache zu speichern, daß keine laufend geladenen Dialogsteuerblöcke
CCB für diesen speziellen Kanal vorliegen, wobei
über ein NAK-Signal angezeigt wird, daß die Statusanforderung für
die Dialogsteuerblöcke CCB dieses Kanals fehlerhafte ist und daß
keine Dialogsteuerblöcke CCB errichtet sind, was zu einer Leseunterdrückung
von ungültiger Statusinformation aus dem Dialogsteuerblock
CCB führt.
Im Betrieb der Logik gemäß Fig. 20 erfolgt mittels des Decodierers
802 eine Decodierung eines Teiles des von dem Umsetzer
511 empfangenen Funktionscodes, wobei durch ein LDSCLK-Signal
oder ein STSCLK-Signal angezeigt wird, daß entweder eine Ladeanweisung
oder eine Statusanweisung von der Zentraleinheit CPU empfangen
worden ist. Die Ladeanweisung erhöht den Zählstand des
CCB-Zählers 810, während die Statusanweisung den Zählstand des
CCB-Zählers 810 erniedrigt. Da der Dialogsteuerblock CCB in Abhängigkeit
von einer Ladeanweisung geladen wird, wird der Inhalt
des CCB-Zählers zusätzlich im Zwischenspeicher 804 für eine spätere
auf den speziellen adressierten Kanal bezogene Verwendung
gespeichert. Der so gespeicherte Wert wird in den CCB-Zähler beim
Beginn einer nachfolgenden Ladeanweisung zurückgespeichert. Die
gleiche Operation findet hinsichtlich der Statusanweisung statt,
mit der Ausnahme, daß der CCB-Zähler 810 in seinem Zählstand erniedrigt
wird. Nach einer solchen Statusbearbeitung wird der fortgeschriebene
Status von dem Zähler 515 in den Zwischenspeicher 806
geladen.
Jedesmal, wenn somit entweder eine Lade- oder Statusanweisung von
der Zentraleinheit CPU vorliegt, um einen Dialogsteuerblock CCB
zu adressieren, wird somit der Ladezähler 514 oder der Statuszähler
515 in seinem Zählstand erhöht und der CCB-Zähler 810 wird
hinsichtlich seines Zählstandes entweder erhöht oder erniedrigt.
Nach jeder solchen Anweisung sind die Werte der Zähler 810, 514
und 515 in den entsprechenden Zwischenspeichern 804 und 806 gespeichert.
Der Vergleicher 812 wird verwendet, um festzustellen,
ob der CCB-Zähler 810 seinen maximalen bzw. minimalen Zählstand
erreicht hat oder nicht. Liegt ein maximaler Zählstand von vier
vor, so wird das SETNAK-Signal erzeugt, um eine unmittelbare NAK-Antwort
über die NAK-Antwortlogik 800 an die Zentraleinheit CPU
für den Fall zu erzeugen, daß die Zentraleinheit CPU eine weitere
CBB-Ladeanweisung für diesen speziellen Kanal ausgibt. Der Vergleicher
812 liefert ferner eine SETFLAG-Anweisung, wenn der
CCB-Zähler den Zählstand Null aufweist und hierdurch anzeigt, daß
keine weiteren Dialogsteuerblöcke CCB für diesen Kanal errichtet
sind. Wenn die nächste Anweisung für diesen Kanal eine Statusanweisung
vorgibt, so empfängt die Zentraleinheit CPU eine NAK-Antwort
über die Logik 800. Die NAK-Antwortlogik 800 ist vollständig
in dem zuvor erwähnten US-Patent 39 93 981 dargestellt und beschrieben.
Der Funktionscode-Umsetzer 511 liefert ferner eine Decodierung von
von der Sammelschiene empfangenen Signalen, um beispielsweise einen
Lese/Schreibspeicherzyklus gemäß dem Signal PRDTB5 auszulösen oder
einen Ein/Ausgabe-Firmwarebefehl gemäß dem Signal PRDTB4 anzuzeigen.
Das letzte Signal wird benutzt, um der Zentraleinheit CPU die
Durchbrechung der Bearbeitung eines Kanalsteuerprogrammes CCP zu
ermöglichen, um auf eine von der Zentraleinheit CPU ausgegebene
E/A-Anweisung ohne Verzögerung eine Antwort zu liefern, unabhängig
von der Tatsache, daß ein Kanalsteuerprogramm CCP bearbeitet wurde.
Wie bereits erwähnt, wird das Kanalsteuerprogramm CCP solange nicht
unterbrochen bis es selbst eine Warte-Anweisung ausgibt oder zur
Ausgabe einer solchen Anweisung durch die Pausentechnik des Dialogprozessors
MLCP veranlaßt wird. Der Dialogprozessor MLCP kann
ebenfalls die CCP-Programme unterbrechen, wenn eine E/A-Anweisung
von der Zentraleinheit CPU vorliegt. Diese E/A-Anweisung gemäß dem
Signal PRDTB4 wird von der Gatterlogik 816 empfangen, der zusätzlich
das Systemtaktsignal sowie ein Hinweis auf den Beginn des
Befehlsabrufs von dem Decodierer 814 zugeführt wird. Das Kanalsteuerprogramm
CCP wird somit in seiner Bearbeitung nicht unterbrochen
bis es tatsächlich die Bearbeitung des laufenden Befehls
vervollständigt hat und dabei ist, einen weiteren Befehl abzurufen.
Wenn die Gatterlogik 816, die funktionsmäßig ein UND-Gatter sein
kann, vollständig vorbereitet ist, so wird ein CCP-Bearbeitungs-Aufgabesignal
an das ODER-Gatter 818 geliefert. Dieses Signal setzt
den Steuerspeicher 308 auf eine Adresse, die der Startadresse der
Firmware für die Bearbeitung von durch die Zentraleinheit CPU ausgegebene
Ein/Ausgabe-Befehlen entspricht. Die Organisation der
Firmware-Anweisungen im Steuerspeicher 308 ist dergestalt, daß
diese E/A-Anweisungen durch eine Routine bearbeitet werden, die
adressiert wird, wenn die beiden signifikantesten Bits der Steuerspeicheradresse
auf den Binärwert "0" gesetzt sind und die verbleibenden
Bits wie beim CCP-Befehlsabruf gesetzt sind. Das Haupt-Löschsignal
über dem Gatter 818 stellt die beiden Flip-Flops 820
und 822 sowie andere Flip-Flops zurück, die benutzt werden, um
den Steuerspeicher 308 zwecks Auslösung des Dialogprozessors MLCP
zu adressieren. Dies geschieht durch Rückstellung der Flip-Flops
820 und 822, die einen Teil des Adressiermechanismus bei
der Adressierung des Steuerspeichers 308 bilden. Die ausgewählte
E/A-Anweisung wird somit adressiert und die CCP-Bearbeitung wird
unterbrochen, um die angezeigte E/A-Anweisung mit höherer Priorität
bearbeiten zu können.
Die verschiedenen funktionellen Routinen, die durch die Firmware
des Dialogprozesors MLCP gemäß der vorliegenden Erfindung geliefert
werden, sind im Zusammenhang mit Fig. 11 erläutert worden.
Die Haupt-Funktionsschritte, die die Firmware beim Gesamtbetrieb
des Dialogprozessors MLCP ausführt, sind in Fig. 21 dargestellt
und sollen nunmehr erläutert werden. Nach der Auslösung
im Block 900 wird in Block 902 der Basislogiktest BLT durchgeführt.
Danach folgt ein Hauptknotenpunkt 904 der CPU-Firmware,
der zu einem Block 906 führt, in dem die Behandlungs-Abtastroutine
abläuft, durch die die Zentraleinheit CPU und die Leitungsadapter
bedient werden. Während der Behandlungs-Abtastroutine wird im
Block 908 überprüft, ob eine Ein/Ausgabe-Anweisung von der Zentraleinheit
CPU ausgegeben worden ist oder nicht und im Falle einer
Nein-Antwort wird in Block 910 festgestellt, ob ein Leitungsadapter
eine Unterbrechung ausgegeben hat oder nicht. Lag eine E/A-Anweisung
von der Zentraleinheit CPU vor, so wird die Anweisung
decodiert und im Block 912 bearbeitet, um im Knotenpunkt 904 erneut
in die Routine eingeführt zu werden. Liegt eine Leitungsadapter-Unterbrechung
im Block 910 vor, so wird das Kanalsteuerprogramm
programm CCP in den Blöcken 914 und 916 ausgelöst und bearbeitet
und sodann erneut über den Knotenpunkt 904 in die Routine eingeführt.
Gibt der Block 910 eine Nein-Antwort aus, so wird in die Hintergrund-Behandlungs-Abtastroutine
eingetreten, wobei der Kanalabtaster
erhöht wird. Der Kanalabtaster ist in dem Verarbeitungselement
CPE 303 gespeichert und wird zur Adressierung der Leitungssteuertabelle
LCT benutzt. Typischerweise wird jeder Kanal
aufeinanderfolgend abgetastet bevor irgendeine andere Behandlung
erfolgt. In die Hintergrund-Behandlungs-Abtastroutine wird somit
im Block 918 eingetreten und der Kanalabtaster wird anschließend
im Block 920 fortgeschaltet. An dieser Stelle wird der Kanalabtaster
geprüft, um im Block 922 geprüft, um im Block 922 festzustellen, ob der Kanalabtaster
den Wert "0" erreicht hat. Die Behandlung dieser Prüfung
liegt darin, jedem der 16 Kanäle die aufeinanderfolgende Abtastung
zu ermöglichen, um festzustellen, ob das Erfordernis einer Bedienung
vorliegt. Wenn die Frage im Block 922 mit Nein beantwortet
wird, so wird zu dem Knotenpunkt 924 weitergeschritten, um diesen
speziellen durch den Kanalabtaster adressierten Kanal zu bedienen.
Wenn die Frage im Block 922 mit Ja beantwortet wird, so wird in
den Block 926 eingetragen, um festzustellen, ob das Wiederaufnahme-Unterbrechungs-Flip-Flop
gesetzt ist oder nicht. Die Bedeutung
dieser Maßnahme liegt darin, daß der Zentraleinheit CPU
keine Unterbrechung angezeigt wird, wenn diese bereits einen Unterbrechungspegel
mit einer höheren Priorität als die der an die
Sammelschiene 101 angeschlossenen Einheit bearbeitet. Hinsichtlich
Einzelheiten dieses Unterbrechungsmechanismus sei an dieser
Stelle auf die US-PS 39 84 820 verwiesen. Wenn die Zentraleinheit
CPU ihren Unterbrechungspegel ändert gibt sie an die an die
Sammelschiene 101 angeschlossenen Geräte eine Unterbrechungs-Pegeländerung
aus, wodurch angezeigt wird, daß eine Pegeländerung
stattgefunden hat und dementsprechend eine Unterbrechung erneut
versucht werden kann. Hierdurch wird das Wiederaufnahme-Unterbrechungs-Flip-Flop
(RINT) gesetzt, und es wird in diesem Fall
eine Ja-Antwort im Schritt 926 erzeugt. Die so erzeugte Ja-Antwort
wird in einem mehr oder weniger permanenten Speicher gespeichert,
und es wird das RINT-Flip-Flop zurückgestellt, was im
Block 928 veranschaulicht ist. Wenn die Frage im Block 926 mit
Nein beantwortet wird, so wird in den Knotenpunkt 924 direkt
eingetreten. In jedem Fall wird nach der Operation in dem Block
928 das Byte 9 oder 41 der Leitungssteuertabelle LCT aus der
Tabelle gelesen, auf die durch den Kanalabtaster hingewiesen
wird, was durch den Block 930 angezeigt ist. In Abhängigkeit von
den Antworten in den Entscheidungsblöcken 932 und 934 erfolgt
anschließend entweder eine Blockmodus-Lese- oder eine Blockmodus-Schreib-Operation.
Blockmodus-Lesen bedeutet, daß die Daten von dem Dialogprozessor
MLCP gelesen und in den Hauptspeicher eingeschrieben werden, und
daß dementsprechend die Ja-Antwort des Blockes 932 die Bearbeitung
einer DMA-Schreibroutine verursacht, durch die die Daten in
den Hauptspeicher 106 geschrieben werden. Dies ist durch den
Block 936 veranschaulicht. Wenn kein Blockmodus-Lesen angezeigt
ist, so wird in eine Blockmodus-Schreiboperation eingetreten,
wenn die Frage im Block 934 mit Ja beantwortet wird, wobei in
diesem Fall im Block 938 eine DMA-Leseroutine durchgeführt wird.
Nach der Bearbeitung in den Blöcken 936 und 938 wird in die Behandlungs-Abtastroutine
im Verzweigungspunkt 904 wieder eingetreten.
Wenn keine Blockmodus-Schreiboperation vorliegt, so wird
in den Entscheidungsblock 940 eingetreten, wobei festgestellt
wird, ob der Start einer Ein/Ausgabe-Anweisung vorliegt oder
nicht. Wird die Frage mit Ja beantwortet, so wird im Block 914
das Kanalsteuerprogramm CCP ausgelöst und anschließend im Block
916 bearbeitet. Wenn die Frage im Block 940 mit Nein beantwortet
wird, so wird in die Datengruppen-Abtastroutine eingetreten,
wenn die Frage im Block 942 mit Nein beantwortet wird, das heißt,
wenn keine verzögerten Unterbrechungen vorliegen. Bei einer
Nein-Antwort wird die Kanalanweisung in die Bytes 8 oder 40 der
Leitungssteuertabelle LCT des speziellen Kanals gelsen, was
durch den Block 944 veranschaulicht ist. Schließlich wird eine
Entscheidung getroffen, ob eine Datengruppenabtastung vorliegt
oder nicht. Dies geschieht im Block 946. Wird die Frage mit Nein
beantwortet, so wird in den Knotenpunkt 904 eingetreten, während
bei einer Beantwortung der Frage mit Ja mit der Datengruppenabtastung
im Block 948 begonnen wird. Wenn gemäß dem Block 950
keine Statusänderung vorliegt, so wird in den Knotenpunkt 904
erneut eingetreten, während bei einer Statusänderung zu dem Entscheidungsblock
952 weitergeschritten wird. Weitere Einzelheiten
dieser Datengruppenabtastung sind in Fig. 17 dargestellt. Wenn
die Frage im Block 952 mit Ja beantwortet wird, so wird ein Umgehungshinweis
auf eine verzögerte Unterbrechung im Block 954
gesetzt und es wird erneut in die Behandlungs-Abtastroutine eingetreten.
Wenn die Frage im Block 952 mit Nein beantwortet wird,
so wird gefragt, ob ein Kanalsteuerprogramm gestartet werden soll
oder nicht, was durch den Block 956 veranschaulicht ist. Im Falle
einer Beantwortung der Frage mit Nein wird in die Behandlungs-Abtastroutine
erneut eingetreten und im Falle einer Ja-Antwort
wird das Kanalsteuerprogramm in den Blöcken 914 und 916 ausgelöst
und bearbeitet.
Wenn die Frage im Block 942 mit Ja beantwortet wird, das heißt,
wenn verzögerte Unterbrechungen vorliegen, so wird in den Block
960 eingetreten, um festzustellen, ob der Umgehungshinweis während
einer vorangegangenen Bearbeitung des Blockes 954 gesetzt worden
ist oder nicht. Ist der Hinweis gesetzt, so gibt der Block 960
eine Ja-Antwort aus, und es wird in den Block 964 eingetreten,
wodurch die Zentraleinheit CPU unterbrochen wird. Danach wird in
eine Behandlungs-Abtastroutine eingetreten und es kann eine Unterbrechung
der Zentraleinheit CPU durch eine von der Zentraleinheit
CPU zurückempfangene E/A-Anweisung bearbeitet werden, was
im Block 912 geschieht, falls die Frage im Block 908 mit Ja beantwortet
wird. Andernfalls werden andere Quellen, die eine Bedienung
anfordern, aufgesucht.
Wenn der Umgehungshinweis nicht gesetzt ist, so wird im Block
962 geprüft, ob das Wiederaufnahme-Unterbrechungs-Flip-Flop gesetzt
ist oder nicht. Ist das RINT-Flip-Flop nicht gesetzt, so
wird in die Behandlungs-Abtastroutine erneut eingetreten, während
im gesetzten Zustand in den Block 964 eingetreten wird, wodurch
die Unterbrechung der Zentraleinheit CPU erzeugt wird. Die verschiedenen
Unterbrechungsquellen werden somit auf eindeutige
Weise behandelt, um einen wirksamen Betrieb des Systems bei gleichzeitiger
Erhöhung des Datendurchflusses zu erzielen.
Es ist somit ersichtlich, daß die primäre Funktion der Adapter
CLA in einer Wandlerfunktion besteht, um beim Senden ein Byte in
ein serielles Bitformat und beim Empfang ein serielles Bitformat
in Bytes umzuwandeln. Die Bytes werden wortweise, das heißt zwei
Bytes auf einmal zum Hauptspeicher übertragen. Eine andere Funktion
der Adapter CLA besteht in der Entlastung des Dialogprozessors
MLCP bei der Behandlung verschiedener elektrischer Charakteristiken,
die den unterschiedlichen Arten von Leitungen zugeordnet
sind. Es wurde erkennbar, daß die Funktion des Dialogprozessors
MLCP im Empfangsmodus darin besteht, jene Zeichen zu
Blöcken im Hauptspeicher zusammenzusetzen. Der Dialogprozessor
MLCP führt ferner verschiedene Steueroperationen hinsichtlich
dieser Blöcke durch, beispielsweise eine Steuerzeichen-Zählerprüfung
usw. Beim Empfang empfängt somit der Dialogprozessor MLCP
die Zeichen von den Adaptern CLA, die ihrerseits Zeichen Bit
für Bit von den Dialogleitungen empfangen. Der Dialogprozessor
MLCP speichert bis zu zwei empfangene Bytes oder Zeichen auf einmal
und speichert diese in den geeigneten Byte-Speicherplätzen
der Leitungssteuertabelle LCT ab. Mittels des Dialogsteuerblockes
CCB überträgt und speichert er hierbei eine Kette solcher Bytes
in dem geeigneten Block im Hauptspeicher. Beim Zusammensetzen
dieser Blöcke mittels der Datensteuerblöcke CCB werden die Blöcke
als gut und fehlerhaft bezeichnet, d. h., der Statusindikator
zeigt an, ob eine intakte Zeichenkette empfangen wurde oder nicht.
Im Sendemodus gilt das Umgekehrte. Der Dialogprozessor MLCP
nimmt Byte für Byte einen Block von Zeichen im Hauptspeicher auf,
vorzugsweise aufgrund der Datenbreite bei der Übertragung auf
der Sammelschiene 101 ein Wort auf einmal. Sodann überträgt er
Byte für Byte die Zeichen zu dem Adapter CLA, welcher seinerseits
die Bytes bitweise seriell überträgt. Wenn die Übertragung
eines solchen Blockes vervollständigt ist, gibt der Dialogprozessor
MLCP eine Unterbrechung aus und informiert die Zentraleinheit
CPU von diesem Ereignis. Durch die Dialogsteuerblöcke
CCB, die die Startadresse im Hauptspeicher und den Bereich vorgeben,
ist somit die Informationsübertragung zwischen dem Hauptspeicher
und den Dialogleitungen virtuell unabhängig von der
Zentraleinheit CPU und erfordert nur ein Minimum an Steuerung
durch die Zentraleinheit CPU. Am Ende der Nachrichtenübertragung
wird dies der Zentraleinheit CPU mitgeteilt, obgleich mehr als
ein Dialogsteuerblock CCB für diese Nachricht benutzt wird, und
diese nimmt die geeigneten Maßnahmen vor.
Es wurde ferner gezeigt, daß innerhalb des Dialogprozessors MLCP
drei grundlegende Elemente vorgesehen sind, die auf die übertragenen
bzw. empfangenen Bytes oder Zeichen einwirken. Wie erwähnt,
handelt es sich bei diesen Elementen um die Dialogsteuerblöcke
CCB, die Dialogsteuerprogramme CCP und die Listensteuertabellen
LCT. Das Dialogsteuerprogramm CCP stellt primär einen Steuermechanismus
dar, der die Dialogsteuerblöcke CCB und die Listensteuertabellen
LCT benutzt, um solche Zeichen zu bearbeiten. Beispielsweise
bearbeitet das Kanalsteuerprogramm CCP die verschiedenen
Bytes und kann beispielsweise die Daten für die CRC-Prüfung
speichern, eine Umwandlung vornehmen, die Anzahl solcher Bytes
zählen oder die Steuerzeichen prüfen und in Abhängigkeit vom
Empfang solcher Steuerzeichen zusätzlich Information hinzufügen
oder bestimmte Informationen löschen. Das Kanalsteuerprogramm
CCP wird normalerweise durch den Adapter CLA ausgelöst, wenn dieser
entweder anzeigt, daß er ein Zeichen von der Zentraleinheit CPU
benötigt oder daß er ein Zeichen aufweist, das der Dialogprozessor
MLCP zu dem Hauptspeicher übertragen soll.
Die Adapter CLA arbeiten somit als Bit-Prozessoren, während
die Zentraleinheit CPU grundsätzlich als Block-Prozessor arbeitet,
da sie tatsächlich die Kanalsteuerprogramme CCP in dem Dialogprozessor
MLCP errichtet. Der Dialogprozessor MLCP arbeitet
über sein Kanalsteuerprogramm CCP als ein Byte- oder Zeichen-Prozessor.
Wenn beispielsweise ein Block von Zeichen im Hauptspeicher
an drei verschiedene Anschlüsse über drei verschiedene
Dialogleitungen übertragen werden muß, wobei jeder solcher Anschluß
ein unterschiedliches Dialogformat erfordert, so können
durch Benutzung von drei Kanalsteuerprogrammen CCP die Daten eines
einzigen Blockes im Hauptspeicher über drei solche Dialogleitungen
im geeigneten Format zu jedem der Empfangsanschlüsse übertragen
werden. Die Übertragung dieser Bytes aus dem Block im
Speicher wird mit einer von den Leitungen unabhängigen Geschwindigkeit
für diesen speziellen Anschluß bewerkstelligt, so daß
beispielsweise Hochgeschwindigkeits-Dialogleitungen den gesamten
Block in weniger als einer Sekunde empfangen können, während
beispielsweise eine Druckereinheit die Information in einer Zeitperiode
von 10 Sekunden empfangen kann. Bei der Übertragung der
Bytes über beispielsweise drei Dialogleitungen wird ein Byte von
dem Hauptspeicherblock zu drei verschiedenen Leitungssteuertabellen
LCT übertragen, wobei jede Leitungssteuertabelle LCT einer
unterschiedlichen Leitung zugeordnet ist und hinsichtlich jeder
Tabelle LCT zu drei getrennten Zeiten übertragen werden kann.
Diese Bytes werden zu der Leitungssteuertabelle LCT in Abhängigkeit
von der Geschwindigkeit übertragen, mit der der Adapter CLA
hinsichtlich dieser speziellen Dialogleitung eine Bedienung anfordert.
Claims (1)
- Datenverarbeitungsanlage mit einem Dialogprozessor zur Informationsübertragung zwischen mehreren Dialogleitungen und einem Hauptspeicher, mit einer Zentraleinheit zur Vorgabe von Steuerinformation an den Dialogprozessor, um bestimmte Informationsübertragungen auszulösen und mit wenigstens einem Adapter als Schnittstelle zwischen den Dialogleitungen und dem Dialogprozessor, wobei der Dialogprozessor umfaßt:
Einen Hilfsspeicher mit mehreren Speicherabschnitten unter ersten den Dialogleitungen zugeordneten Adressen zum Speichern von Daten gemäß mehreren Steuertabellen, wobei jede Steuertabelle einer Leitung zugeordnet ist und Information sowohl für Empfangs- als auch für Sendeoperationen zwischen den Dialogleitungen und dem Dialogprozessor bzw. umgekehrt speichert und wobei die Steuertabelle ferner Speicherplätze für die temporäre Speicherung von zwischen dem Speicher und jeder Dialogleitung zu übertragender Information und für die Speicherung von Steuerinformation aufweist,
zusätzliche Speicherabschnitte in dem Hilfsspeicher zum Speichern von Daten entsprechend mehreren Steuerroutinen, wobei jede Steuerroutine mehrere Befehle zur Bearbeitung einer auf einem bestimmten Dialogkanal übertragenen Informationsfolge umfaßt, um die Informationsübertragung zwischen dem Dialogprozessor und einem an den Kanal angeschlossenen Gerät zu ermöglichen, und
eine auf Behandlungsanforderungen der Zentraleinheit und der Kanaladapter ansprechende Steuereinrichtung, dadurch gekennzeichnet, daß
jede Steuertabelle (LCT) Speicherplätze für die Speicherung von Information betreffend den Status eines jeden Adapters (CLA0-CLA3) enthält;
jede Steuertabelle (LCT) Speicherplätze für die Speicherung von Hinweisadreßdaten für den Zugriff auf eine vorbestimmte Steuerroutine enthält; und
die Steuereinrichtung (303, 310, 315) auf Grund der Hinweisadreßdaten eine entsprechende Steuerroutine auswählt, wobei die Steuereinrichtung weiterhin eine Einrichtung (307, 308) zur Befehlsausführung entsprechend der ausgewählten Steuerroutine aufweist, um die Informationsübertragung zwischen einem der Dialogkanäle und dem Dialogprozessor gemäß den Befehlen der ausgewählten Steuerroutine zu bearbeiten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/760,782 US4261033A (en) | 1977-01-19 | 1977-01-19 | Communications processor employing line-dedicated memory tables for supervising data transfers |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2801563A1 DE2801563A1 (de) | 1978-07-20 |
DE2801563C2 true DE2801563C2 (de) | 1992-10-15 |
Family
ID=25060181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19782801563 Granted DE2801563A1 (de) | 1977-01-19 | 1978-01-14 | Dialogprozessor |
Country Status (9)
Country | Link |
---|---|
US (1) | US4261033A (de) |
JP (1) | JPS5826581B2 (de) |
AU (1) | AU522617B2 (de) |
BE (1) | BE863014A (de) |
CA (1) | CA1106073A (de) |
DE (1) | DE2801563A1 (de) |
FR (1) | FR2378314B1 (de) |
GB (1) | GB1597202A (de) |
NL (1) | NL190459C (de) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0013301B1 (de) * | 1978-12-04 | 1982-06-30 | International Business Machines Corporation | Multiprozessorsystem mit Warteschlangeneinrichtung für den Zugriff zu gemeinsam benutzbaren Dateneinrichtungen |
US4374416A (en) * | 1979-06-27 | 1983-02-15 | Burroughs Corporation | Linear sequencing microprocessor having word and byte handling |
US4379328A (en) * | 1979-06-27 | 1983-04-05 | Burroughs Corporation | Linear sequencing microprocessor facilitating |
US4649470A (en) * | 1980-02-11 | 1987-03-10 | Data General Corporation | Data processing system |
GB2075802B (en) * | 1980-05-12 | 1984-05-31 | Control Data Corp | Network access device |
US4392207A (en) * | 1980-09-09 | 1983-07-05 | Burroughs Corporation | Card reader-data link processor |
US4405981A (en) * | 1980-09-29 | 1983-09-20 | Honeywell Information Systems Inc. | Communication multiplexer having an apparatus for establishing a single line priority |
US4426679A (en) | 1980-09-29 | 1984-01-17 | Honeywell Information Systems Inc. | Communication multiplexer using a random access memory for storing an acknowledge response to an input/output command from a central processor |
US4476522A (en) * | 1981-03-09 | 1984-10-09 | International Business Machines Corporation | Programmable peripheral processing controller with mode-selectable address register sequencing |
WO1983003316A1 (en) * | 1982-03-16 | 1983-09-29 | Burroughs Corp | Memory selection in a multiple line adapter organization |
US4520452A (en) * | 1982-03-16 | 1985-05-28 | Burroughs Corporation | Memory selection in a multiple line adapter organization |
US4494194A (en) * | 1982-09-30 | 1985-01-15 | Burroughs Corporation | Line support processor for data transfer system |
US4792896A (en) * | 1983-12-07 | 1988-12-20 | 516277 Ontario Limited | Storage controller emulator providing transparent resource sharing in a computer system |
JPS60119587U (ja) * | 1984-01-20 | 1985-08-13 | 曙ブレーキ工業株式会社 | 筆記具立て |
US4787028A (en) * | 1985-09-03 | 1988-11-22 | Ncr Corporation | Multicommunication protocol controller |
US4855905A (en) * | 1987-04-29 | 1989-08-08 | International Business Machines Corporation | Multiprotocol I/O communications controller unit including emulated I/O controllers and tables translation of common commands and device addresses |
JPS6450152A (en) * | 1987-08-20 | 1989-02-27 | Fujitsu Ltd | Communication controller |
US4975835A (en) * | 1987-10-30 | 1990-12-04 | Casio Computer Co., Ltd. | Variable length data processing apparatus for consecutively processing variable-length data responsive to one instruction |
US4977497A (en) * | 1988-03-23 | 1990-12-11 | Mitsubishi Denki Kabushiki Kaisha | Data processor |
US5063494A (en) * | 1989-04-12 | 1991-11-05 | Unisys Corporation | Programmable data communications controller |
US5185865A (en) * | 1989-08-04 | 1993-02-09 | Apple Computer, Inc. | System for simulating block transfer with slave module incapable of block transfer by locking bus for multiple individual transfers |
US5247671A (en) * | 1990-02-14 | 1993-09-21 | International Business Machines Corporation | Scalable schedules for serial communications controller in data processing systems |
US5347634A (en) * | 1990-03-15 | 1994-09-13 | Hewlett-Packard Company | System and method for directly executing user DMA instruction from user controlled process by employing processor privileged work buffer pointers |
US5465355A (en) * | 1991-09-04 | 1995-11-07 | International Business Machines Corporation | Establishing and restoring paths in a data processing I/O system |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3699525A (en) * | 1970-11-27 | 1972-10-17 | Honeywell Inf Systems | Use of control words to change configuration and operating mode of a data communication system |
GB1323048A (en) * | 1971-03-03 | 1973-07-11 | Ibm | Communications control unit |
FR2136845B1 (de) * | 1971-05-07 | 1973-05-11 | Inf Cie Intern | |
SE352755B (de) * | 1971-12-10 | 1973-01-08 | Ibm Svenska Ab | |
JPS4876447A (de) * | 1972-01-14 | 1973-10-15 | ||
US3740728A (en) * | 1972-01-19 | 1973-06-19 | Hughes Aircraft Co | Input/output controller |
US3766526A (en) * | 1972-10-10 | 1973-10-16 | Atomic Energy Commission | Multi-microprogrammed input-output processor |
FR2258113A5 (de) * | 1973-11-30 | 1975-08-08 | Honeywell Bull Soc Ind | |
US3909800A (en) * | 1973-12-18 | 1975-09-30 | Honeywell Inf Systems | Improved microprogrammed peripheral processing system |
US3955180A (en) * | 1974-01-02 | 1976-05-04 | Honeywell Information Systems Inc. | Table driven emulation system |
FR2257112B1 (de) * | 1974-01-03 | 1977-06-24 | Honeywell Bull Soc Ind | |
FR2261567B1 (de) * | 1974-02-20 | 1977-09-23 | Honeywell Bull Soc Ind | |
US4104718A (en) * | 1974-12-16 | 1978-08-01 | Compagnie Honeywell Bull (Societe Anonyme) | System for protecting shared files in a multiprogrammed computer |
US3972030A (en) * | 1975-01-02 | 1976-07-27 | Honeywell Information Systems, Inc. | Peripheral control capable of dynamically executing command sequences |
US3976977A (en) * | 1975-03-26 | 1976-08-24 | Honeywell Information Systems, Inc. | Processor for input-output processing system |
GB1549821A (en) * | 1975-04-11 | 1979-08-08 | Sperry Rand Corp | Communications multiplexer module |
US4024508A (en) * | 1975-06-19 | 1977-05-17 | Honeywell Information Systems, Inc. | Database instruction find serial |
US3993981A (en) * | 1975-06-30 | 1976-11-23 | Honeywell Information Systems, Inc. | Apparatus for processing data transfer requests in a data processing system |
US4060849A (en) * | 1975-10-28 | 1977-11-29 | Compagnie Internationale Pour L'informatique Cii-Honeywell Bull | Data input and output controller |
US4056843A (en) * | 1976-06-07 | 1977-11-01 | Amdahl Corporation | Data processing system having a plurality of channel processors |
US4079452A (en) * | 1976-06-15 | 1978-03-14 | Bunker Ramo Corporation | Programmable controller with modular firmware for communication control |
US4124891A (en) * | 1976-11-18 | 1978-11-07 | Honeywell Information Systems Inc. | Memory access system |
US4115852A (en) * | 1976-12-07 | 1978-09-19 | Harris Data Communications, Inc. | Microprogrammed controller |
-
1977
- 1977-01-19 US US05/760,782 patent/US4261033A/en not_active Expired - Lifetime
- 1977-12-21 CA CA293,535A patent/CA1106073A/en not_active Expired
-
1978
- 1978-01-06 AU AU32214/78A patent/AU522617B2/en not_active Expired
- 1978-01-10 NL NLAANVRAGE7800281,A patent/NL190459C/xx not_active IP Right Cessation
- 1978-01-14 DE DE19782801563 patent/DE2801563A1/de active Granted
- 1978-01-17 FR FR7801268A patent/FR2378314B1/fr not_active Expired
- 1978-01-18 BE BE184397A patent/BE863014A/xx not_active IP Right Cessation
- 1978-01-18 GB GB2017/78A patent/GB1597202A/en not_active Expired
- 1978-01-19 JP JP53004792A patent/JPS5826581B2/ja not_active Expired
Also Published As
Publication number | Publication date |
---|---|
NL7800281A (nl) | 1978-07-21 |
CA1106073A (en) | 1981-07-28 |
NL190459C (nl) | 1994-03-01 |
BE863014A (fr) | 1978-05-16 |
GB1597202A (en) | 1981-09-03 |
FR2378314A1 (fr) | 1978-08-18 |
NL190459B (nl) | 1993-10-01 |
JPS5390833A (en) | 1978-08-10 |
AU522617B2 (en) | 1982-06-17 |
FR2378314B1 (fr) | 1985-08-23 |
AU3221478A (en) | 1979-07-12 |
US4261033A (en) | 1981-04-07 |
DE2801563A1 (de) | 1978-07-20 |
JPS5826581B2 (ja) | 1983-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2801563C2 (de) | ||
DE2719253C3 (de) | Schnittstellenschaltung für Datenverarbeitungsanlagen | |
DE2657848C2 (de) | ||
DE2744531C2 (de) | Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage | |
DE2523372C3 (de) | Eingabe-/Ausgabe-Anschlußsteuereinrichtung | |
DE1524102C3 (de) | Elektronische, aus Baueinheiten aufgebaute Datenverarbeitungsmaschine | |
DE2854397A1 (de) | Pufferspeichereinheit fuer ein datenverarbeitungssystem | |
EP0006164B1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE2641741A1 (de) | Rechnersystem aus mehreren miteinander verbundenen und zusammenwirkenden einzelrechnern | |
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE2118581A1 (de) | Datenverarbeitungssystem | |
DE1449532B2 (de) | Datenverarbeitungsanlage | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE2054830C3 (de) | Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge | |
DE2522748A1 (de) | Datenverarbeitungssystem | |
DE2422802A1 (de) | Datenverarbeitungsanlage | |
DE2928488A1 (de) | Speicher-subsystem | |
DE1499206C3 (de) | Rechenanlage | |
DE3013070C2 (de) | Schaltungsanordnung zur Bearbeitung von aus mehreren peripheren Geräten herangeführten Anforderungssignalen innerhalb einer datenverarbeitenden Einrichtung | |
DE2164793A1 (de) | Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit | |
DE3121742A1 (de) | Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung | |
EP0062141B1 (de) | Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem | |
DE2363846A1 (de) | Verfahren zum steuern des transfers von daten zwischen einem speicher und einem oder mehreren peripheren geraeten und nach diesem verfahren arbeitende datenverarbeitungsanlage | |
DE2617127A1 (de) | Mehrfachprogramm-datenverarbeitungssystem | |
DE2458286A1 (de) | Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: HONEYWELL BULL INC., MINNEAPOLIS, MINN., US |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |