DE2801563A1 - Dialogprozessor - Google Patents

Dialogprozessor

Info

Publication number
DE2801563A1
DE2801563A1 DE19782801563 DE2801563A DE2801563A1 DE 2801563 A1 DE2801563 A1 DE 2801563A1 DE 19782801563 DE19782801563 DE 19782801563 DE 2801563 A DE2801563 A DE 2801563A DE 2801563 A1 DE2801563 A1 DE 2801563A1
Authority
DE
Germany
Prior art keywords
dialog
control
processor
channel
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19782801563
Other languages
English (en)
Other versions
DE2801563C2 (de
Inventor
John P Grandmaison
Robert E Huettner
Richard A Lemay
John H Vernon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Information Systems Italia SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2801563A1 publication Critical patent/DE2801563A1/de
Application granted granted Critical
Publication of DE2801563C2 publication Critical patent/DE2801563C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • G06F13/34Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Description

Die vorliegende Erfindung bezieht sich auf einen Dialogprozessor nach dem Gattungsbegriff des-Anspruches 1. Ein solcher Dialogprozessor findet in Datenverarbeitungssystemen Anwendung und wird vor allem bei der Bedienung von Dialogkanälen benutzt.
Ein programmierbarer Dialogprozessor kann als ein digitaler Computer betrachtet werden, der peripher zu einem anderen Datenverarbeitungscomputer angeordnet und so programmiert ist, daß er Betriebs- und Schnittstellenanforderungen eines Datenaustausch-Netzwerkes erfüllt. Durch die Ausführung von Datenaustauschfunktionen des Dialogprozessors kann das gesamte Datenverarbeitungssystem trotz Änderungen hinsichtlich der Dialoganforderungen sehr flexibel und anpassungsfähig gemacht werden. Daten-Dialogprozessoren, Steuerungen oder Adapter sind als programmierbar bezeichnet worden und sind dies in vielen Fällen bis zu einem bestimmten Grad auch gewesen. Einige dieser programmierbaren Geräte werden durch Schalter programmiert und andere Geräte gestatten den Programmen der Zentraleinheit die Einstellung verschiedener Parameter hinsichtlich der Dialogleitungen bzw. Kanäle. Einige dieser Dialogprozessoren basieren auf einem Standardaufbau einer Zentraleinheit. Diese bekannten Dialogprozessoren sind einer Zentraleinheit vorgeschaltet, wodurch eine Programmierfähigkeit und eine gewisse Flexibilität unter Inkaufnahme zusätzlicher Kosten gewöhnlich erzielt wird. Es ist wünschenswert, daß die Dialog-Steuereinheit bzw. der Dialogprozessor bis zu einem maximal möglichen Ausmaß programmierbar ist, um hierdurch eine Flexibilität und Anpassungsfähigkeit unabhängig von den wechselnden Bedingungen in dem System zu erzielen. Die sich ändernden Bedingungen in dem System betreffen die verschiedenen Arten von Dialogleitungen, die angetroffen werden können. Es ist daher wünschenswert, Mechanismen vorzusehen, durch die Programme in den Dialogprozessoren bearbeitet werden können, wodurch die Steuerung der verschiedenen Dialogkanäle bzw. Leitungen ermöglicht wird. Diese Steuerung soll die Prüfung von Statusänderungen, die Manipulation von Daten und das Laden, sowie das
809829/0930
Senden bzw. Empfangen solcher Daten zwischen den Dialogleitungen und dem Hauptspeicher des Systems umfassen. Es ist ferner wünschenswert, eine solche in dem Dialogprozessor enthaltene programmierbare Steuerung mit der Möglichkeit auszustatten, die Geschwindigkeit und verschiedene Identifikationsbits/ wie z.B. Stop-, Marklerungs-, Trenn- und Synchronbits zu steuern sowie verschiedene Steuerzeichen, Bits und Paritätshinweise zu behandeln. Ferner ist es wünschenswert, einen Mechanismus für die ordnungsgemäße Bearbeitung einer Vielzahl solcher Programme vorzusehen, um die übertragung von Daten über die Dialogleitungen zu steuern und auf Onterbrechungszustände zu reagieren.
Einer der Hauptengpässe in einem Dialogsystem kann durch die Schnittstelle zu dem Hauptspeicher und die Steuerung der Datenübertragung zu dieser Schnittstelle gebildet werden. Es sind Systeme in der Vergangenheit entworfen worden, die einen Speicherzugriff für jedes Byte oder jeden Teil eines empfangenen Bytes erfordern. Es ist daher wünschenswert, die Geschwindigkeit des Systems durch das Vorsehen einer Mehrfachblock-Übertragung bei jedem Senden oder Empfangen zu verbessern, so daß der Dialogprozesaor zur übertragung von Bits, Bytes oder Blöcken von Daten angewiesen werden kann, und es ist ferner wünschenswert, durch die Erzeugung einer Unterbrechung anzuzeigen, daß solche Übertragungen durch den Dialogprozeseor vervollständigt worden sind. Der DialogprozesBor soll hierbei auf den Umfang der Dialogaufgabe zugeschnitten sein, cum den Gesamtaufwand auf einem Minimum zu halten. Die Verwendung von Standard-Zentraleinheiten bei Dialogprozeesoren erfüllt diese Forderung nicht. Ferner sollen Dialogprozessoren Programme enthalten, die von den verschiedenen Leitungsprozeduren gemeinsam benutst werden können* Bs ist ferner wün schenswert, den Datendurchfluß zu verbessern, das heißt, die für eine Datenübertragung erforderliche Seit auf ein Minimum zu be schränken und sicherzustellen, daß eine Dialogleitung bei ihrer Funktion im Empfangs- bzw. Sendemodus keinen übersteigerten Betrag an zugeteilter Dialogzeit verwendet.
809829/0930
Es ist daher die Aufgabe der vorliegender; Erfindung, einen verbesserten programmierbaren Dialogprozessor für die Verwendung in einem Datenverarbeitungssystem anzugeben, der die eingangs genannten Forderungen erfüllt. Die Lösung dieser Aufgabe gelingt gemäß der im Anspruch. 1 gekennzeichneten Erfindung. Weitere vorteilhafte Ausgestaltungen der Erfindung sind den Unteransprüchen entnehmbar.
Gemäß der Erfindung weist ein Datenverarbeitungssystem 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 ent-
809829/0930
- 10 - 28Q1563
hä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 ist ferner eine Einrichtung in dem Prozessor vorgesehen, die auf die Kanaladapter, die Steuertabellen und die Steuerroutinen anspricht, uia 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:
Pig. 1 ein Blockdiagramm eines Mehrleitungs-Dialogprozessors (MLCP), der in einem Datenverarbeitungssystem angeordnet ist;
Fig. 2 das Format von durch den Prozessor gemäß der vorliegenden Erfindung bei dem dynamischen Speicherzugriff verwendeten Dialog-Steuerblöcken;
Fig. 3 eine von dem Prozessor benutzte Leitungs-Steuertabelle zur Steuerung der Datenströme der in einem typischen System angeordneten Dialogleitungen;
Fig. 4 ein Blockdiagramm des Haupt-Hardwareaufbaues eines bevorzugten Ausführungsbeispieles des Mehrleitungs-Dialogprozessors gemäß der vorliegenden Erfindung;
Fig. 5 ein detaillierteres Blockdiagramm der Hardwareelemente in einem bevorzugten Ausführungsbeispiel des Mehrleitungs-Dialogprozessors gemäß der vorliegenden Erfindung;
Fig. 6 ein die Organisation eines internen Speichers darstellendes Diagramm, wobei der Speicher in dem Dialogprozessor gemäß der vorliegenden Erfindung enthalten ist;
Fig. 7 ein Blockdiagramm der Dialogleitung-Adapter-Schnittstellenlogik und des zentralen Verarbeitungselementes des Mehrleitungs-Dialogprozessors gemäß der vorliegenden Erfindung;
809829/0930
28Q1563
Fig. 8 ein Blockdiagramm der Haupt-Hardware-Schnittstellenelemente des erfindungsgemäßen Prozessors zur Schnittstellenbildung mit einer elektrischen Sammelschiene;
Fig. 9 ein Blockdiagramm zur Veranschaulichung der Art und Weise, in der Daten von dem Mehrleitungs-Dialogprozessor gemäß der vorliegenden Erfindung empfangen werden;
Fig. 10 ein Blockdiagramm zur Veranschaulichung der Art und Weise, in der Daten durch den Mehrleitungs-Dialogprozessor gemäß der vorliegenden Erfindung gesendet werden;
Fig. 11 ein Blockdiagramm zur Veranschaulichung eines Überblickes über den Firmwarefluß des Mehrleitungs-Dialogprozessors gemäß der vorliegenden Erfindung;
Fig. 12 das Format des Steuerspeicherwortes des erfindungsgemäßen Mehrleitungs-Dialogprozessors;
Fig. 13 bis 16 Einzelheiten verschiedener Bytes, die in den Leitungs-Steuertabellen des erfindungsgemäßen Mehrleitungs-Dialogprozessors enthalten sind;
Fig. 17 ein Flußdiagramm einer Abtastoperation, wie sie durch den erfindungsgemäßen Mehrleitungs-Dialogprozessor verwendet wird;
Fig. 18 ein Blockdiagramm der allgemeinen Betriebszustände des erfindungsgemäßen Mehrleitungs-Dialogprozessors;
Fig. 19 ein Flußdiagramm zur Veranschaulichung der Zwischenhalt-Funktion des erfindungsgemäßen Mehrleitungs-Dialogprozessors;
Fig. 20 ein detailliertes Logik-Blockdiagramm der in Hardware verwirklichten Anweisungslogik des erfindungsgemäßen Mehrleitungs-Dialogprozessors; und
Fig. 21 ein funktionelles Flußdiagramm der Firmware des erfindungsgemäßen Mehrleitungs-Dialogprozessors.
809829/0930
28.Q1563
Gemäß Pig. 1 ist ein typischen Datenverarbeitungssystem dargestellt, das einen Mehrleitungs-Dialogprozessor MLCP-103 verwendet. Die gemeinsame elektrische Systemsammeischiene 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 1Ol als Teil des Datenverarbeitungssystems angeschlossen sein. Im bevorzugten Ausführungsbeispiel gibt es funktionsmäßig keine Beschränkung hinsichtlich der Anzahl der zusätzlichen Steuerungen in dem Datenverarbeitungssystera, 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 /Jrandspeichereinheiten handelt. Einzelheiten eines solchen Datenverarbeitungssystems und der Art und Weise, in der die verschiedenen Einheiten mit der Systemsammeischiene 101 verbunden werden, können der US-PS 3.993.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 Leitungsechnittstellen !wischen den Dialogleitungen und dem Dialogprozefsor MLCP-103 umfassen, was von dem Umfang der Leitungs-Adapterfunktion abhängt, die durch einen bestimmten Adapter CLA iu unterstützen ist* Die Dialogleitungen, die mit dem Dialogprozessor MLCP-103 eine Schnittstelle bilden, sind in Fig« 1 gemeinsam als Leitungen 105 bezeichnet. Is sei darauf verwiesen, daß die Dialogleitungen in einfacher Weise elektrische Verbindungen su einem OerIt, wie beispielsweise einem Terminal oder su einem Modem über öffentliche Telefonleitungen sein können.
809829/0930
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öffentlicht 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 Dialagprozessor 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 Punktionen 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-Dailogprozessor 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 ..... -.. - 309929/0930 ■-."'.'
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öckenCCB 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 Leseoder Schreiboperation hinsichtlich dieses Speicherpuffers durch eine DMA-Operation der Dialogleitung gesendet werden soll. Das SL-FeId 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-FeId 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-FeId 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 an-
809829/0930-
•zeigt, 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 DialogprozessorMLCP 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 Leitungsrichtung zugeordnet ist , Statusinformation, Steuerinformation, Datenspeicherung für die Wortinformation von zwei Byte, die auf dem
809829/0930
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-Adressen 6, 7, 18 und 19 für den Empfangskanal). Die CCP-Hinweisadresse verweiet auf den nächsten Speicherplatz, auf den durch den Dialogkanal in dem Steuerprogramm CCP Bezug zu nehmen ist, wenn eine Kanalbedienung vorgesehen werden muß. Die Anzahl von Maschinenbefehlen in jedem Steuerprogramm CCP ist beliebig. Ein typisches Steuerprograram CCP wird später beschrieben.
Fig. 4 seigt ein allgemeines Blockdiagramm des bevorzugten Ausführungebeispieles eines Mehrleitungs-Dialogprozessors MLCP-103. Der Datenstrom 205 stellt den Dialog-Datenstrom dar, der von einer der acht im vollen Duplex-Betrieb arbeitenden Dialogleitungen 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. Di· Sammelschiene 101 stellt die elektrische Sammelschiene dar, welche ein Mittel
809829/0930 .
für den Nachrichtenaustausch, zwischen dem Dialogprozessor MLCP und den verbleibenden Einheiten des Datenverarbeitungssystems bildet. Die Sammelschienen-Schnittstelle 202 führt die geeigneten Hardwaredialoge, das heißt die Informationsübertragungen hinsichtlich der elektrischen Sammelschiene aus. Einzelheiten einer solchen Sammelschienen-Schnittstelle können der eingangs erwähnten US-PS 3.993.981 entnommen werden.
Der Dialogprozessor MLCP-206 steuert zentral die Operationen der verschiedenen Dialog-Datenströme. Die Dialog-Leitungsadapter CLA 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-SteuertabeIlen 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 3.984.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 detaillierteres Blockdiagramm des Mehrleitungs-Dialogprozessors der vorliegenden Erfindung dargestellt. Die elektrische Sammelschiene 101 ist an die Sammelschienenregister- und Steuerlogik 302 angeschlossen, die in der Schnittstelle 202 gemäß Pig. 4 enthalten ^t9 g 2 9 / Q 9 3 0 "
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 Anweisund 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
. erzeugten
auch die durch die HardwareVE7Ä-Anweisungen 310 koordinieren mittels der Sammeischienenregister- 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
809829/0930
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 Blocklesebzw. 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 ate 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-Leitungsadapterη CLA bildet. Das Element 314 stellt die Hardware dar, welche die Startadressen der Flrmware-Mikroprogramraroutinen 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
809829/0930
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ührt. 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 Dialog-Prozessors MLCP bedient werden soll und welche der bis zu vier Leitungsrichtungen (vier Kanäle) innerhalb des speziellen Leitungsadapterß 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 abgefragt werden. Der Prioritätsunterbrechunge- und Adressengenerator 315 legt ferner die Priorität zwischen den anderen sich im Wettbewerb befindlichen Elementen für eine Benutzung durch da* zentrale Verarbeitungselement CPE fest. Beispiele für jene anderen Elemente sind durch verzögerte Unterbrechungen und in Firmware verwirklichte E/A-Anweisungen gegeben.
809829/0930
Es sei hler vermerkt, daß d±e Priorität der Kanäle innerhalb des Dialogprozessors MLCP eine interne Priorität darstellt. Die Priorität eines Kanales innerhalb des Dialogprozessors MLCP wird durch jene Kanaladresse festgelegt, die von der CLA-Adapterposition des Dialogprozessors MLCP abhängt. 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 Pestwertspeicher 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 Flrmware-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 Dialögleitungen 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 4096 Byte benötigt. Die verbleibenden vier hochrangigen Bits sind in einem externen Register gespeichert, das als Lese/Schreib-Adressenverriegelung (Element 411 in Fig. 7) bezeichnet ist.
809829/0930
Das zentrale Element der Hardwarelogik des zentralen Verarbeitungselementes CPE-303 wird durch vier hochintegrierte Schaltkreise eines 2-Bit-Mikroprozessors gebildet, die zusammengesehaltet 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 beschriebenen 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 Grenze von insgesamt vier Dialogsteuerblöcken CCB pro Kanal, was int allgemeinen von der Größe des verfügbaren Speichers abhängt).
, 309829/0938
Mehrere Dialogsteuerblocke 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 tOl 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 Steuerlogik 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 Dialogprozessor 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.
809829/0930
Der. Mikroprozessor 303 hesitzt 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.
per Zeilenadapter-Prioritätsunterbrechungs- und Adressengenerator 315 bildet ebenfalls einen Eingang für den Firmwareroutinen-Startadressengenerator 314. Diese Logik 315 fordert die Erzeugung einer Firmwareroutinen-Startadresse durch den Startadressengenerator immer dann an, wenn eine ünterbrechungsbehandlung durch einen Leitungsadapter gefordert wird. Wenn weder ein Selbsttest, noch eine in Firmware verwirklichte E/A-Anweisung, noch eine Unterbrechungs- · behandlung 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 irgend einen der obigen Zustände durchgeführt, die den Start einer neuen CPE-Subroutlnenbearbeitung erfordern.
Bevor der Dialogprozessor MLCP anhand der Fig. 7 und 8 näher erläutert wird, sei der vorstehende Sachverhalt nochmals zusammengefaßt. Eb wurde gezeigt, daß es sich bei dem Dialogprozessor MLCP-103 um einen programmierbaren Mehrleitungs-Dialogfprozessor 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 SU 72000 Bits pro Sekunde können hinsichtlich der Datenübertragung durch den Dialogprozessor MLCP unterstützt werden. Der Dialogproseaeor MLCP umfaßt die hinsichtlich aller Dialogleitungen gemeinsam benutzten Elemente. Diese Elemente umfassen den durch die Firmware gesteuerten Mikroprozessor, einen Speicher mit wahlfreiem iugriff RAM,
809829/0530
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.
Jede mit einem Adapter CLA verbundene Leitung bildet einen VoIlduplex-Datenweg und jede Leitungsrichtung bildet einen Kanal zu dem Dialogprozessor MLCP. Jeder Kanal ist in der Lage, entweder Dialogdaten 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 Polgen von Datenelementen als Steuerzeichen, Nachrichtenbegrenzungen, DMA-Blockgrenzen oder Block-Prüfzeichen erkennt.
809829/0930
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 Dialog-
809829/0930
prozessor 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
Dialogprozessor 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-Firmware ab tastung 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 Bitpositionen 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.
809829/0930
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-ünterbrechungspegel 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 Pehlerzustä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 Dialogprozessora 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 (Empfangeoperation) oder von dem Dialogdaten erhalten werden (Sendeoperation). Der HauptSQeicherbereich wird als Dialogdatenblock CDB bezeichnet. Die Firmware des Dialogprozessors MLCP benutzt die von dem Programmierer gelieferte Information in dem
6Q9829/093Ü
28Q1563
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- nach Wahl durch den Programmierer mit erhöhter Bearbeitungszeit ausführen, wobei das Kanalsteuerprogramm ausgeprägte Prüf- und Vorbereitungsfunktionen aus- · führt. Wenn das Kanalsteuerprogramm CCP aufgrund seiner Programmierung Datenzeichen-, Byte- oder Bitfunktionen neben grundlegenden 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ß die 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.
809829/0930
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; 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 ünterbrechungssteuerung, 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 geforderten 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 einem 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 enthaltenen 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
809829/0930
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-ünterbrechungsanforderung 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 Dialogprozeseors 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
B0 9829/0930
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 da» 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 Programmes 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 Daten«eichen laden bevor der Warte-Befehl ausgegeben wird. In diesen Fall wird das Datenzeichen erneut in das R-Register während der die Reaktivierung des Programmes CCP begleitenden Wiederherstellung des lusaaaenhangs geladen.
t>ie Betiehung swischen physikalischen Dialogdatenblöcken CDB und logischen Dialognachrichten wird vollständig durch das ProgrsM gesteuert. Wenn im Empfangsnodus das Progras· CCP «inen Speicher-
609829/0930
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
809829/0&30
S ϊ » -
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 ünterbrechungszustand 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 von dem Dialogprozessor MLCP on die Adapter CLA.
0OÖ829/O93O
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 festlegt, 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-Punktionen 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 Verschiebund 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, dl· verschiedene Eingänge von den Mehrfach-Eingangsschienen auswählen.
B09829/0Ö3Ö
Der Steuerspeieher 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 Steuerspeicherbzw. 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-Blti) von den 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.
809829/0930
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-Samraelschiene 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 und 31 des SteuerSpeichers) in einem Hardwareregister gespeichert, das für die verschiedenen Multiplexer die Quelle für die Auswahlfunktion bildet.
809829/0930
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 dieses 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-Adres- eencodierer 413 als Eingang die 16 ünterbrechungsleitungen von der Dialogleitung-Adapterschnittstelle 401 mit einer Leitung für
809829/0930
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 O bis 15 durchnumeriert sind) aufweist und diese Leitungsnummer in Form einer Vierbit-Adresse codiert, die in die CLA-Adressenverrlegelung 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 anfordert, um festzustellen, ob irgendwelche Unterbrechungen von den CLA-Kanälen aufgrund einer höheren CLA-Unterbrechungsprioritftt 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. .
B09829/0930
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 dea Signales mit der höchsten Priorität, das eine Bearbeitung durch eine Firmwrareroutlne 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 Firntwareroutine 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 Steuerfeldeignale 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 Taktayklue und der Durchführung logischer Operationen für die Verzweigung auf zwei Markierungen von dem Element CPE-303.(Ubertragsmarkierung und Nulltest-Markierung). Der Generator 426 ist in der Lage, Ergebnisse der übertrag- und Nullte·t-Markierungen zu verriegeln. Dar Generator 426 kann ferner den Übertrageeingang des Elemente· CPE-303 entweder auf "0" oder "1" aetxen.
Die hineichtlich de« zentralen Verarbeitungeelemente· 103 dargestellten Daten- unA Adreiauegänge bilden die Datenausgany·- und Hauptspeicher-Adreftauegangeeignmle der integrierten Schaltkreise des Mlkroprosessors 3002. Is ist erkennbar, das der Adressenausgang des Elemente· CPE-303 als Eingang de« Mressenaultiplexer des Lese/Schreibspeichers BMf zugeführt wird.
80S829/0930 ·
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 3.760.379 verwiesen. Die RAM-Auffrisch-Steuerlogik 417 muß daher zwecks Ausführung von Speicheroperationen adressiert werden und ist daher auf den Adressenmultiplexer 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.
809829/0930
Der Ausgang des Adressenmultiplexers 410 ist direkt an den Adresseneingang des Lese/Schreibspeieher3 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 Auffrlschlogik 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 verwirklicht, die sich aus einem 64x64-Speicherfeld zusammensetzen. Jede der 64 Spalten des 64x64-Speicherfeldes muß alle 32 /as 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/us 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 dea Lese/Schreibspeichers 312 gebildet wird.
Der Eingangs-Datenmultiplexer 408 gibt in den Lese/Schreibspeicher 312 Datenbytes mit 8 Bit ein. Eine Datenquelle des Eingangs-Datenwultiplexers 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.
809829/0930
280156a
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 δ 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 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 Firm ware verwirklichte Anweisung für die Erzeugung der nächsten Ad resse hervorruft.
809829/09 3 0
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 Ansahl 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-Erjeeugung 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 ver-
809829/0930 ' -
arbeitet 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 Bit 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 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
• ■ ■ · <
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 er-
809829/0930
46 " 28Q1563
folgt über den Sammelschienenmultiplexer 502. Es gibt vier Dateneingänge hinsichtlich des Sairanelschienenmultiplexers 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 Sairanelschienenmultiplexers 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-Bestä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 3.993.981 näher beschrieben ist. Die Warte-Antwort zeigt an, daß das Sammelschienenregister 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 Dialog-
809329/0 9 30
28 QI5
steuerblock 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ßasislogiktest BLT 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 Antwortlogik 505 eine Bestätigungs-Antwort ACK.
Die Samtnelschienen-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 Antwortlogik 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-Verrlegelung 508, die Subkanal-Adressenverriegelung 506, den Zähler 510, die Hardware-Anweisungsfortschaltung 511, den Zwischenspeicher RAM-516, die beiden zwei Bit-Zä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-Anweisungsfortschaltung 511 ist ein programmierbarer Festwertspeicher PROM, der den Funktionscode der Verriegelung 508 als Startadresee 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
809 829/0 930
28Q1563
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-Anweisungsfortschaltung 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-Anweisungsfortschaltung 511 ausgegeben 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-Anweisungsfortschaltung 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-Anweieungs-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.
809829/0930
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 Speicheränforderung; die in Kardware verwirklichten E/AAnweisungen 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 MikrοSekunden, 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>ns 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-Adressenverriegelung 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:
8098 29/0930
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 anfanglich 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
809829/0930
Selbsttest anzuzeigen, so wird die Kanaladressenverriec,elung 506 schrittweise von Null auf 15 erhöht, um jeden Kanal zu adressieren und deren Hlnwei.sadressen 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 Firmettare 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 Dialogsteuerprograinme CCP, die Dialogsteuerblöcke CCB und die Leitungssteuertabellen 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
809829/0930
der Hardware verwirklichte Anweisungen bearbeitet. Sollte der Befehl eine programmierte HauptlöscJmng 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 beschritten 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 festgestellte 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 festgestellt wurde, so wird in einen Bereich eingetreten, der als E/A-Anweisungsdecod.ier/Bearbeitungsroutine 616 bezeichnet ist.
809829/0930
Nach Bearbeitung der geeigneten Anweisung kann die Firmware zu der Bedienungs^A&tast/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-Bereitschaftsroutine 618 Cwenn 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-Abtastroutine 604 ein.
809329/0930
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-Anwei-Bungsanforderungen 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 vorrangige 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
809829/0930
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 Kanalsteuerprograitimes 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 Forrnattyp einmal ermittelt, so legt 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 Befehlabruf/Bearbeitungsroutine 620 in die Bedienungs-Abtastroutine 604 hervorgerufen wird.
809829/0930
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 pecodierung 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/Bearbeltungsroutinen 616,. wenn die Verwendung des E/A-Datenpufferregisters gefordert ist. tfach 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 belegtf wird ein vorübergehender Halt durchgeführt bis die Hardware verfügbar ist} und in 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
809829/0930 ·
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 Hauptspeicher-, adresse 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 3.993.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 ünterbrechungs-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
809 8 2 9/0930
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 NichtBestä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 O 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:
009829/0930
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 Sendebzw. 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 numehr 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
809829/0930
mehreren MLCP-Dialogkanälen und den Dialogdatenblöcker. CDB im Hauptspeicher hervorrufen. Jedes Kanalsteuerprogramra 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 «ehr 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 au 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 (Programmlähler) des Dialogprozessors MLCP geladen, das aufgrund der MLCP-
809829/09 3 0
Firmware in dem Verarbeitungselement CPE-303 angeordnet ist. Wenn alle geforderten Kanalsteuerprogramme CCP einmal in dem Speicher RAM-312 geladen sind und alle Vorbereitungsaktivitaten abgelaufen sind, sp 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-Unterbrechungsanforderung. 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
109821/0930
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. Dieeer 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-Registerein 8 Bit-Allgemeinregister, das von den CCP-Befehlen benutzt wird; P(Equal )-Indikator- ein Indikator, der das Ergebnis der letzten Bearbeitung eines C-Befehls (Vergleichsbefehl) speichert, wobei bei erfülltem Vergleich der Ε-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 "O" zurückgestellt wird. Dieser Indikator kann durch die BLCT- und BLCF-Befehle getestet werden (BLCT = Branch if Last Charcter True = Verzweigung, wenn letztes Zeichen Wahr; BLCF = Branch if Last Character False = Verzweigung, wenn letztes Zeichen falsch). 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"
809829/0930
gesetzt war. In anderen Fällen ist der LB-Indikator auf den Wert "O" zurückgestellt. Dieser Indikator arbeitet als ein Hinweis auf das Kanalsteuerprogramm CCP und er kann durch BLBT- und BLBF-Befehle getestet werden CBLBT = 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/Einpfangs-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 Dialogprozessor 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
8 09829/0930
der geeigneten Leitungssteuertabelle LCT der Inhalt des P-Regieters, des- R-Registers und der Prograiranindikatoren 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 "O" zurückgestellt, wobei es sich hierbei um das Bit 1 gemäß Fig. 2 handelt; als nächstes vird 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 From 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
809829/0930
28Q1563
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 beschriebe^ 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 Kanalsteuer programmes 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
809829/0930
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 ist, 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.
809829/093&
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ückzustellen. 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 Ölälogsteuerblö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.
809829/0930
Der Umschaltmechanismus zwischen den Dialogsteuerblöckeri 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 veranschlicht 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ählers 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 16x4-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
809829/0930
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
809829/093 0
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 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 diese Weise wird der Zentraleinheit unmittelbar ein NAK-Hinweis angezeigt, ohne daß sie auf den Dialogprozessor MLCP warten muß, um 2U 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 fehlerhaft ist und daß keine Dialogsteuerblöcke CCB errichtet sind, was zu einer Leseunterdrückung von ungültiger Statusinformation aus dem Dialogsteuerblock CCB führt.
809829/0930
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 81 ο/ 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 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
809829/0930
~ 72 -
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 Kanai 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 3.993.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 aus-
809829/0930
gegebenen Ein/Ausgabe-Befehlenentspricht. 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 "O" 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 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 Dialogprozessors 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/AAnweisung 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 Kanalsteuer-
' 809829/0930
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 inj 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 festzustellen, ob der Kanalabtaster den Wert "0" erreicht hat. Die Bedeutung 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 eingetreten, 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 3.984.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
809829/0930-
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 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 gelesen, was durch den Block 944 veranschaulicht ist. Schließlich wird eine
809829/0930
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 ira Block 912 geschieht, falls die Frage im Block 908 mit Ja beantwortet wird. Andernfalls werden andere Quellen, die eine Bedienung anfordern, aufgesucht.
809829/0930
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 Leitungssteuert.abelle 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 Datensteuerblocke CCB werden die Blöcke als gut und fehlerhaft bezeichnet, d.h., der Statusindikator zeigt an, ob eine intakte Zeichenkette empfangen wurde oder nicht.
809829/0930
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 Listeneteuertabellen 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.
• 809829/0930
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 .
809829/0930
90-le e rs e ite

Claims (17)

  1. HONEYWELL INFORMATION SYSTEMS INC. 13. Januar 1978
    Smith Street
    Waltbam, Mass., USA 5101565 Ge
    Dialogprozessor
    Patentansprüche:
    fy Dialogprozessor für ein Datenverarbeitungssystem zur Informationsübertragung zwischen mehreren Dialogleitungen und einem Hauptspeicher in dem System, wobei jede Leitung zwei Kanäle aufweist, eine Zentraleinheit Steuerinformation für den Dialogprozessor erzeugt und wenigstens ein Adapter zwischen die Leitungen und den Dialogprozessor geschaltet ist, gekennzeichnet durch
    A. jeweils eine Steuertabelle für jede der Leitungen, die Speicherplätze für Information sowohl für Empfangsoperationen, bei denen Information durch den Prozessor von den Leitungen empfangen wird, als auch für Sendeoperationen, bei denen Information von dem Prozessor an die Leitungen gesendet wird, aufweisen, wobei die Steuertabellen-Speicherplätze Speicherplätze zur temporären Speicherung von Informationen aufweisen und es sich bei diesen Informationen um zwischen dem Speicher und jeder der Leitungen zu übertragende Information, um eine dem Status eines jeden Adapters zugeordnete Information, um eine Steuerinformation und um eine Hinweisadresse zu einer vorbestimmten Steuerroutine handelt;
    Hz/Ra 809829/0930
    ORIGINAL INSPECTED
    B. mehrere Steuerroutinen, wobei jede Steuerroutine mehrere Befehle 2ur Bearbeitung eines bestimmten hinsichtlich eines Kanales übertragenen Informationsstromes umfaßt und die Befehle der Informationsverarbeitung dienen, um die Übertragung zu oder von einem Gerät zu bewirken, das die Information sendet oder empfängt; und
    C. auf jeden Adapter und die Steuertabellen ansprechende Einrichtungen, um die Übertragung der Information zwischen den Kanälen und dem Prozessor zu behandeln.
  2. 2) Dialogprozessor nach Anspruch 1, gekennzeichnet durch :
    A. mehrere Steuerblöcke, wobei pro Kanal wenigstens ein Steuerblock vorgesehen ist und der Steuerblock jeweils aufweist: eine Einrichtung zur Angabe der Startadresse eines Blockes von Speicherplätzen im Speicher, eine Einrichtung zur Angabe des Bereichs dieser Blöcke und eine jedem Kanal zugeordnete Statusinformation; und
    B. eine in dem Prozessor enthaltene und auf die Steuerblöcke ansprechende Einrichtung zur Behandlung der Übertragung der Information zwischen dem Prozessor und dem Speicher.
  3. 3) Dialogprozessor nach Anspruch 2,dadurch gekennzeichnet , daß die Einrichtung zur Behandlung der Informationsübertragung zwischen den Kanälen und dem Prozessor ebenfalls auf die Steuerblöcke anspricht.
  4. 4) Dialogprozessor nach Anspruch 3,gekennzeichnet durch :
    A. eine Speichereinrichtung zum Speichern der Steuertabellen, der Steuerroutinen und der Steuerblöcke;
    B. ein mikroprogrammiertes Datenverarbeitungselement mit Mitteln zum Adressieren der Speichereinrichtung; und
    809829/0930
    C. eine auf die Zentraleinheit oder den Adapter ansprechende Einrichtung zur Beeinflussung der Adressiermittel, um die Speichereinrichtung zu adressieren.
  5. 5) Dialogprozessor nach Anspruch 3 mit Schnittstelleneinrichtungen zur Bildung einer elektrischen Schnittstelle mit mehreren Adaptern, dadurch gekennzeichnet, daß die Schnittstelle aufweist:
    A. eine Einrichtung zum Lösen von Konflikten zwischen Anforderungen von den Adaptern; und
    B. eine Einrichtung zum Prüfen der Gültigkeit der durch die Schnittstelle übertragenen Information.
  6. 6) Dialogprozessor nach Anspruch 3, gekennzeichnet durch:
    A. eine elektrische Sammelschiene zum Verbinden des Prozessors mit der Zentraleinheit; und
    B. eine in dem Prozessor enthaltene Einrichtung zur Schnittstellenbildung zwischen dem Prozessor und der Sammelschiene, wobei diese Einrichtung aufweist:
    1. eine Einrichtung zur Erzeugung einer positiven Bestätigung an die Zentraleinheit, wenn der Prozessor bereit ist, die Informationsübertragung von der Zentraleinheit anzunehmen,
    2. eine Einrichtung zur Erzeugung einer negativen Bestätigung an die Zentraleinheit, wenn der Prozessor nicht bereit ist, die Informationsübertragung von der Zentraleinheit anzunehmen, und
    3. eine Einrichtung zur Erzeugung einer quasi-negativen Bestätigung an die Zentraleinheit, wenn der Prozessor nicht bereit ist aber in Kürze bereit sein wird, die Informationsübertragung von der Zentraleinheit anzunehmen»
    809829/0930
    !
  7. 7) Dialogprozessor nach. Anspruch. 3, gekennzeichnet
    [durch:
    A. einen Steuerspeicher zum Liefern von Firmware-Befehlen zur Steuerung der Prozessoroperation;
    B. eine Einrichtung zur Festlegung, ob der Prozessor einen Firmware-Befehl zu bearbeiten hat; und
    C. ein mikroprogrammiertes Datenverarbeitungselement zur Bearbeitung der Firmware-Befehle.
  8. 8) Dialogprozessor nach Anspruch 3f dadurch gekennzeichnet , daß jedem Kanal eine vorbestimmte Anzahl von Steuerblöcken zugeteilt ist.
  9. 9) Dialogprozessor nach Anspruch 8, gekennzeichnet durch :
    A. eine Einrichtung zum Anzeigen der von dem jeweiligen Kanal zu irgendeinem vorgegebenen Zeitpunkt benutzten Anzahl von Steuerblocken; und
    B. eine Einrichtung zum Sperren der Benutzung irgendwelcher weiteren Steuerblöcke, wenn die Anzahl der benutzten Steuerblöcke größer als eine vorbestimmte Anzahl ist.
  10. 10) Dialogprozessor nach Anspruch 3, gekennzeichnet durch: ·
    A. eine Einrichtung zur Bearbeitung der Befehle in der Routine, wodurch die Einrichtung zur Behandlung der Informationsübertragung zwischen den Kanälen und dem Prozessor freigegeben wird; und
    B. eine Einrichtung zur Aufgabe der Bearbeitung der Befehle in der Routine, wenn die Anzahl der ohne Unterbrechung behandelten Befehle dieser Routine eine vorbestimmte Anzahl erreicht.
    809829/0930
  11. 11) Dialogprosessor nach. Anspruch 3, gekennzeichnet durch.:
    A. eine im Speicher gespeicherte eindeutige Steuerroutine, die aufgrund ihrer Konfiguration mit einem eindeutigen an den Kanal angeschlossenen Gerät kompatibel ist;
    B. eine Einrichtung zur übertragung der eindeutigen Steuerroutine zu dem Prozessor zwecks Speicherung in dem Speicher; und
    C. eine Einrichtung zur Bearbeitung der eindeutigen Steuerroutine jedesmal dann, wenn das eindeutige Gerät die Informationsübertragung anfordert.
  12. 12) Dialogprozessor nach Anspruch 11,dadurch gekennzeichnet , daß jede Routine unterschiedlich konfiguriert sein kann, um hinsichtlich eines vorgegebenen an das System angeschlossenen Gerätes die Informationsübertragung in einem eindeutigen Format zu ermöglichen.
  13. 13) Dialogprozessor nach Anspruch 12, gekennzeichnet durch die Freigabe der Routine für die gemeinsame Benutzung durch mehr als einen Kanal.
  14. 14) Dialogprozessor nach Anspruch 3, gekennzeichnet durch:
    A. eine Einrichtung zur Anzeige, ob die Zentraleinheit eine Anweisung zur Bearbeitung durch den Prozessor erzeugt hat;
    B. eine Einrichtung zur Bearbeitung der Anweisung, wenn sie durch die Zentraleinheit erzeugt worden ist;
    C. eine Einrichtung zur Anzeige, ob der Kanal eine Unterbrechung zur Verarbeitung durch den Prozessor erzeugt hat; und
    D. eine Einrichtung zur Bearbeitung der Unterbrechung, wenn keine von der Zentraleinheit erzeugte Anweisung vorliegt.
    809829/0930
  15. 15) Dialogprozessor nach. Anspruch 14, gekennzeichnet durch:
    A. eine Einrichtung zur Anzeige des Status eines jeden Kanales;
    B. eine Einrichtung zum Abtasten eines jeden Status, um festzustellen, ob eine Statusänderung vorliegt; und
    C. eine Einrichtung zur Bearbeitung einer zuvor festgestellten Anweisung in dem Prozessor, wenn sich der Status geändert hat.
  16. 16) Dialogprozessor nach Anspruch 3, gekennzeichnet durch mehr als eine Steuerroutine zur Bearbeitung des Informationsstromes eines bestimmten Kanales.
  17. 17) Dialogprozessor nach Anspruch 3,dadurch gekennzeichnet, daß die Einrichtung zur Behandlung der Informationsübertragung zwischen dem Prozessor und dem Speicher ebenfalls auf die Steuertabelle anspricht.
    809829/0930
DE19782801563 1977-01-19 1978-01-14 Dialogprozessor Granted DE2801563A1 (de)

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 true DE2801563A1 (de) 1978-07-20
DE2801563C2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0013301A1 (de) * 1978-12-04 1980-07-23 International Business Machines Corporation Multiprozessorsystem mit Warteschlangeneinrichtung für den Zugriff zu gemeinsam benutzbaren Dateneinrichtungen

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4379328A (en) * 1979-06-27 1983-04-05 Burroughs Corporation Linear sequencing microprocessor facilitating
US4374416A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear sequencing microprocessor having word and byte handling
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
US4520452A (en) * 1982-03-16 1985-05-28 Burroughs Corporation Memory selection in a multiple line adapter organization
WO1983003316A1 (en) * 1982-03-16 1983-09-29 Burroughs Corp 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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2221926A1 (de) * 1971-05-07 1972-11-16 Cii Prozessor mit Mehrfachkopplung von Periphergeraeten
DE2252282B2 (de) * 1971-12-10 1974-06-27 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Anordnung zur Folgesteuerung von Datenübertragungsleitungen
US3993981A (en) * 1975-06-30 1976-11-23 Honeywell Information Systems, Inc. Apparatus for processing data transfer requests in a data processing system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2221926A1 (de) * 1971-05-07 1972-11-16 Cii Prozessor mit Mehrfachkopplung von Periphergeraeten
DE2252282B2 (de) * 1971-12-10 1974-06-27 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Anordnung zur Folgesteuerung von Datenübertragungsleitungen
US3993981A (en) * 1975-06-30 1976-11-23 Honeywell Information Systems, Inc. Apparatus for processing data transfer requests in a data processing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Müller, Peter, Lexikon der Datenverarbeitung, 2. Aufl., München, Verlag Moderne Industrie, 1969, S. 570 u. 571 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0013301A1 (de) * 1978-12-04 1980-07-23 International Business Machines Corporation Multiprozessorsystem mit Warteschlangeneinrichtung für den Zugriff zu gemeinsam benutzbaren Dateneinrichtungen

Also Published As

Publication number Publication date
JPS5390833A (en) 1978-08-10
CA1106073A (en) 1981-07-28
NL190459C (nl) 1994-03-01
BE863014A (fr) 1978-05-16
FR2378314A1 (fr) 1978-08-18
NL190459B (nl) 1993-10-01
AU3221478A (en) 1979-07-12
FR2378314B1 (fr) 1985-08-23
JPS5826581B2 (ja) 1983-06-03
DE2801563C2 (de) 1992-10-15
GB1597202A (en) 1981-09-03
AU522617B2 (en) 1982-06-17
NL7800281A (nl) 1978-07-21
US4261033A (en) 1981-04-07

Similar Documents

Publication Publication Date Title
DE2801563C2 (de)
DE3610433C2 (de) Verfahren zum Steuern einer Maschine mit einer speicherprogrammierbaren Steuerung mit Funktionsplaninterpreter
DE2744531C2 (de) Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage
DE2719253C3 (de) Schnittstellenschaltung für Datenverarbeitungsanlagen
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE2523372C3 (de) Eingabe-/Ausgabe-Anschlußsteuereinrichtung
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
EP0011685B1 (de) Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung
DE2854397A1 (de) Pufferspeichereinheit fuer ein datenverarbeitungssystem
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE2417795C2 (de) Datenverarbeitungsanlage
EP0014850B1 (de) Einrichtung zur Erweiterung des Standard-Makroinstruktionssatzes in einer Datenverarbeitungsanlage
DE2714805A1 (de) Datenverarbeitungssystem
EP0048767A1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE1449532B2 (de) Datenverarbeitungsanlage
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2806024A1 (de) Speichersystem mit fehlerfeststell- und korrekturmoeglichkeit
DE1920454A1 (de) Datenverarbeitungsanlage
DE2209136B2 (de) Steuer- und Anpassungsschaltung für Datenverarbeitungsanlagen
DE4011745A1 (de) Taskverfolgungseinrichtung
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE2928488A1 (de) Speicher-subsystem
EP0006164A1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE4220698A1 (de) System zur dynamischen verknuepfung modularer abschnitte von computersoftware

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