DE2164793A1 - Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit - Google Patents

Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit

Info

Publication number
DE2164793A1
DE2164793A1 DE19712164793 DE2164793A DE2164793A1 DE 2164793 A1 DE2164793 A1 DE 2164793A1 DE 19712164793 DE19712164793 DE 19712164793 DE 2164793 A DE2164793 A DE 2164793A DE 2164793 A1 DE2164793 A1 DE 2164793A1
Authority
DE
Germany
Prior art keywords
unit
code
units
memory
real
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.)
Pending
Application number
DE19712164793
Other languages
English (en)
Inventor
Louis Austin Tex. Hornung (V.StA.)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2164793A1 publication Critical patent/DE2164793A1/de
Pending 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Description

PATB NTANTTALT HOLEEK
DIPL·. ING. K. S 8 ü H G
89 A PG m. miais
m
I. 140
Augsburg, den 22. Dezember 1971
International Business Machines Corporation, Armonk, N.Y. 10 504, V.St.A.
Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/Ausgabe-Einheiten mittels einer Zentraleinheit
Die Erfindung betrifft Verfahren und Datenverarbeitungsanlagen zur Steuerung einer Vielzahl von Eingabe/Ausgabe-Einheiten mittels einer Zentraleinheit.
Unter derartigen Verfahren ist insbesondere eine indirekte Adressierungstechnik zur Eingabe/Ausgäbe (E/A>Steuerung zu verstehen, welche eine gemeinsame Programm-
209830/0979
benutzung, d.h. die Benutzung eines einzelnen Programmes durch mehrere identische E/A-Einheiten erleichtert.
Mit dem Auftauchen großer Zentraleinheiten und der Verwendung von immer mehr Datenstationen und E/A-Einheiten ist die E/A-Steuerung immer wichtiger geworden. Es sind mehrere Verfahren bekannt, bei welchen E/A-Einheiten sogenannte Cycle-Steal-Unterbrechungen vornehmen können. Bei einem dieser Verfahren wird eine Suchringmethode verwendet, wobei die Steuerung sequentiell von E/A-Einheit zu E/A-Einheit weitergeschaltet wird und wobei diejenigen Einheiten, welche in Tätigkeit zu treten verlangen, dann auf die Steuerung ansprechen, wenn es ihnen gestattet wird. Wenn eine E/A-Einheit in Tätigkeit zu treten verlangt, muß ein Kenncode zu der Zentraleinheit übertragen werden, um dieser anzugeben, welche Einheit in Tätigkeit zu treten verlangt hat. Die Zentraleinheit kann mittels dieses Kenncodes ein geeignetes E/A-Adreßregister aussuchen und die Unterbrechungsanforderung ausführen. Sodann können Daten aus der Zentraleinheit auf einem Datenübertragungsweg an die betreffende E/A-Einheit ausgegeben werden bzw. es können Daten aus dieser E/A-Einheit sodann in die Zentraleinheit eingegeben werden. Das alles ist bei
209830/0979
Verwendung der. Suchringmethode durchführbar, indem die E/A-Einheiten durch besonderes in der E/A-Instruktion enthaltene Identifikationsmerkmale in herkömmlicher Weise adressiert werden. Die bekannte Suchringmethode ermöglicht jedoch in ihrer echten Form keine angemessene Prioritätsunterbrechung für Hochleistungs-E/A-Einheiten, außerdem ist die Reaktionszeit zu groß. Prioritätsunterbrechungen sind jedoch erwünscht, denn unter einer Vielzahl von E/A-Einheiten befinden sich stets einige, welche schneller in Tätigkeit zu treten verlangen als andere.
Ein bekanntes Prioritätsunterbrechungsverfahren ist das Matrixsteuerverfahren. Bei diesem Matrixsteuerverfahren ist jeder E/A-Einheit eine Unterbrechungsleitung zugeordnet, welche von der E/A-Einheit dann aktiviert wird, wenn diese in Tätigkeit zu treten verlangt. Ein Kombinationsschaltkreis innerhalb der Matrix stellt fest, welche der in Tätigkeit zu treten verlangenden Einheiten die höchste Priorität besitzt und die Zentraleinheit nimmt dann die Unterbrechung vor. Eines der Probleme, welches bei einem Prioritätsunterbrechungsverfahren auftritt, besteht darin, daß der Einheit mit der höchsten Priorität mitgeteilt werden muß, daß sie ausgewählt worden ist. üblicherweise wird zu diesem Zweck
209830/0979
an die Einheiten ein eindeutiger Kenncode abgegeben. Die Einheiten vergleichen sodann diesen eindeutigen Kenncode jeweils mit ihrem eigenen Code, um festzustellen, welche von ihnen ausgewählt worden ist. Dieser Kenncode kann bei einer Unterbrechung der gleiche Code sein, wie er bei der Ausführung einer E/A-Instruktion zum Aktivieren der E/A-Einheit verwendet wird. Nimmt man eine Anordnung mit 32 Datenstationen an, so muß die E/A-Instruktion ein 5~Bit-Einheitscodefeld haben. In einem System, welches 32 E/A-Einheiten bedienen kann, muß dieses 5-Bit-Peld reserviert werden, und zwar unabhängig davon, ob 2 oder 32 Einheiten augenblicklich angeschlossen sind. Zur Maximierung der Möglichkeiten des Instruktionsrepertoirs für eine gegebene Wortlänge ist es offenbar erwünscht, daß die Länge des Einheitscodefeldes in der E/A-Instruktion auf einem Minimum gehalten wird.
Durch die Erfindung soll die Aufgabe gelöst werden, ein Verfahren und eine Datenverarbeitungsanlage zur Steuerung einer Vielzahl von E/A-Einheiten mittels einer Zentraleinheit anzugeben, bei welchen das einer Einheit zugeordnete Codefeld in der E/A-Instruktion kürzer ist als bei den bekannten Verfahren und Datenverarbeitungsanlagen.
209830/0979
Im Sinne der Lösung dieser Aufgabe beinhaltet die Erfindung ein Verfahren zur Steuerung einer Vielzahl von E/A-Einheiten mittels einer.Zentraleinheit, welches durch folgende Schritte gekennzeichnet ist:
a) Pestlegen jeweils eines echten Einheitscodes für jede E/A-Einheit,
b) Speichern eines jeder der benutzten E/A-Einheiten zugeordneten echten Einheitscodes in einem Speicher der Zentraleinheit,
c) Anwenden einer E/A-Instruktion, welche ein Arbeitseinheitscodefeld und ein Punktionscodefeld enthält,
d) Verwenden der in der E/A-Instruktion enthaltenen Arbeitseinheitscodes zum Adressieren der in dem Speicher gespeicherten echten Einheitscodes während der Ausführung der E/A-Instruktion, um einen echten Einheitscode zu erhalten, und
e) Decodieren dieser erhaltenen echten Einheitscodes mittels eines Adreßdecodierers, um ein eindeutiges
- 5 209830/0979
E/A-Adreßregister für jede Einheit zu erhalten.
Außerdem beinhaltet die Erfindung eine Datenverarbeitungsanlage zur Durchführung des Verfahrens nach der Erfindung. Eine solche Datenverarbeitungsanlage ist gemäß der Erfindung gekennzeichnet durch eine Vielzahl von E/A-Einheiten, welchen jeweils ein eindeutiger echter Einheitscode und jeweils ein Vergleicher zum Empfang dieses echten Einheitscodes zugeordnet sind, ferner durch eine mit jeweils den E/A-Einheiten über einen Einheitscodeübertragungsweg verbundene Zentraleinheit, und durch eine Unterbrechungsanforderungsleitung für jede der E/A-Einheiten, wobei die Zentraleinheit einen Speicher zum Speichern echter Einheitscodes an Plätzen, welche durch Arbeitseinheitscodes adressiert werden, außerdem einen E/A-Adreßregisterspeicher zum Speichern der Adressen von Speicherplätzen im Speicher, die von den E/A-Einheiten benutzt werden, sowie Einrichtungen zum Entnehmen desjenigen echten Einheitscodes aus dem Echteinheitscodespeicher, welcher durch das Arbeitseinheitscodefeld der E/A-Instruktion bestimmt ist, und zum Ausgeben des ermittelten echten Einheitscodes über den Einheitscodeübertragungsweg an die E/A-Einheiten, und einen Adreßdecodierer aufweist, welcher ebenfalls die an die E/A-Einheiten abgegebenen echten
209830/0979
Einheitscodes empfängt und das eindeutige E/A-Adreßregister aus dem E/A-Adreßregisterspeicher zur Verwendung durch diejenige Einheit auswählt, welche dem ausgegebenen echten Einheitscode entspricht.
Bei dem Verfahren bzw. der Datenverarbeitungsanlage zur E/A-Steuerung nach der Erfindung ist jeder E/A-Einheit in der Anlage ein eindeutiger echter Einheitscode zugeordnet, welcher zur Kennzeichnung einer besonderen, an die Anlage angeschlossenen E/A-Einheit unter einer Vielzahl von E/A-Einheiten während der Ausführung einer Eingabe- und Ausgabeinstruktion und außerdem während eines Cycle-Steal-Betriebes dient. Die E/A-Instruktion enthält an Stelle des echten Codes der Einheit einen Arbeitscode der Einheit. Bei einem System mit 32 Einheiten kann ein 3-Bit-Arbeitseinheitscode an Stelle des echten 5-Bit-Codes der Einheit verwendet werden. Während der Ausführung einer E/A-Instruktion wird der 3-Bit-Arbeitseinheitscode zum Adressieren eines bestimmten Platzes in einem zugehörigen Speicherteil verwendet, in welchem die echten Einheitscodes gespeichert sind. Der dem Arbeitseinheitscode zugeordnete echte Einheitscode wird dann sowohl an einen Decodierer zum Auswählen eines zugeordneten E/A-Adreßregisters als auch über den Einhextscodeübertragungsweg an die E/A-Einheiten ausgegeben. Die Speicheradresse, zu welcher oder von
- 7 -209830/0979
welcher Daten während einer anschließenden Cycle-Stealünterbrechung zu übertragen sind, wird in das ausgewählte E/A-Adreßregister übertragen. In jeder angeschlossenen E/A-Einheit wird ein Vergleich zwischen dem innerhalb jeder Einheit festverdrahteten örtlichen echten Einheitscode und dem auf dem Einheitscodeübertragungsweg zugeführten Code vorgenommen, um festzustellen, ob es sich um die ausgewählte Einheit handelt. Die auszuführende Funktion, welche durch die E/A-Instruktion festgelegt ist, wird in der ausgewählten E/A-Einheit gespeichert. Während anschließender Unterbrechungen aktiviert jede E/A-Einheit, welche durch eine E/A-Instruktion aktiviert worden ist, ihre eigene Unterbrechungsleitung. Mit Hilfe einer Matrix wird festgestellt, welche der in Tätigkeit zu treten verlangenden E/A-Einheiten die höchste Priorität hat. Die Datenausgabe der Matrix wird zum Adressieren des E/A-Adreßregisterspeichers verwendet, um die Adresse im Speicher zu erhalten, welche der ausgewählten Einheit zugeordnet ist. Außerdem wird die Datenausgabe der Matrix einem Einheitscodecodierer zugeführt, welcher an den Einheitsübertragungsweg einen 5-Bit-Einheitscode abgibt, der die ausgewählte E/A-Einheit anzeigt. Die betreffende Einheit stellt ihre Auswahl durch einen Vergleich des übertragenen Einheitscodes mit ihrem örtlich gespeicherten Einheitscode
209830/097 9
fest. Während jeder Unterbrechung werden die Inhalte des E/A-Adreßregisters indiziert, um eine Folge aufeinanderfolgender Adressen für eine Folge von zu einer bestimmten Einheit gehörender Unterbrechungen zu erhalten.
Ein Überlappungsbetrieb sämtlicher 32 E/A-Einheiten wird dadurch erreicht, daß das Arbeitseinheitscodeverfahren unter der Steuerung des überwachungsprogramms. angewendet wird, welches wahlweise unterschiedliche echte Einheitscodes in den Echteinheitscodespeicher lädt, so daß bei nur einer Operation ein Arbeitseinheitscode einer bestimmten E/A-Einheit und während anschließender weiterer Operationen der Arbeitseinheitscode verschiedenen E/A-Einheiten zugeordnet wird, und zwar entsprechend dem echten Einheitscode, welcher von dem Überwachungsprogramm gespeichert ist. Eine gemeinsame Prpgrammbenützung wird also durch Umschalten zwischen echten Einheitscodes erreicht, welche einem bestimmten Arbeitseinheitscode in dem Echteinheitscodespeicher zugeordnet sind.
Zur Durchführung des Arbeitseinheitscodeverfahrens nach der Erfindung ist kein ungewöhnlicher Hardware-Aufbau der Zentraleinheit erforderlich, da zum Auswählen
209830/0979
einer Speicheradresse während einer E/A-Instruktionsausführung und während der anderen Verarbeitungsbefehle die gleiche Adressierungseinrichtung über das Speicheradreßregister verwendet wird. Darüberhinaus kann die E/A-Instruktion derart formatgebunden werden, daß das Arbeitseinheitscodefeld in der Instruktion die gleichen Bitpositionen wie eines der Adreßfeider in einem Zwei-Adreß-Instruktionsformat einnimmt. Zur übertragung des Arbeitseinheitscodes in das Speicheradreßregister k sind demzufolge keine zusätzlichen Datenübertragungswege erforderlich.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird im folgenden näher beschrieben. Es zeigen:
Fig. 1 die Zusammenschaltung einer
Zentraleinheit und dieser zugeordneter E/A-Einheiten mit einer Matrix,
Fig. 2 als Einzelheit ein Logikdiagramm
der in Fig. 1 dargestellten Matrix,
- 10 -
209830/0979
die Fig. 3a
und 3b ein E/A-Instruktionsformat und
ein Zwei-Adreß-Registerrechenformat, welches bei einem mit einer Matrix versehenen System unter Anwendung des Arbeitseinheitscodeverfahrens nach der Erfindung verwendet werden kann,
Fig. 4 einen Schaltplan der in Fig. 1
dargestellten Zentraleinheit und der E/A-Einheiten,
Fig. 5 ein Logikdiagramm eines in
Fig. 4 dargestellten Einheitscode codierers , und
Fig.6 eine Wertetabelle zur Erläuterung
des Betriebes des in Fig. 5 dargestellten Einheitscodecodierers .
- 11 -
209830/0979
Ein in Pig· 1 dargestelltes vollständiges Blockdiagramm zeigt eine Zentraleinheit mit zugeordneten Eingabe/Ausgabe(E/A)-Einheiten, welche in Sternschaltung an die Zentraleinheit angeschlossen sind, und mit einer Matrix zur Vorrang- bzw. Prioritätsunterbrechungsauswahl. In einer Sternschaltung ist jede E/A-Einheit direkt mit der Zentraleinheit verbunden, im Gegensatz zu einer Hintereinanderschaltung, bei welcher die E/A-Einheiten über einander mit der Zentraleinheit verbunden sind. Die Zentraleinheit 1 enthält ein gespeichertes Programm und ist außerdem mit einem Arbeitsspeicher versehen. Eine derartige Zentraleinheit ist an sich bekannt und es werden deshalb nur diejenigen Teile der Zentraleinheit näher beschrieben, welche zum Verständnis der Erfindung wesentlich sind. Eine Vielzahl von E/A-Einheiten 7, 8, ist mit der Zentraleinheit 1 verbunden. Die E/A-Einheit ist über einen Datenübertragungsweg 10 mit der Zentraleinheit verbunden, während die E/A-Einheiten 8 und 9 jeweils über Leitungen 16 und 13 mit diesem Datenübertragungsweg 10 verbunden sind. Die E/A-Einheit 7 ist außerdem mit der Zentraleinheit 1 über eine Taktsteuerleitung 11 verbunden, während die E/A-Einheiten 8 und 9 über Leitungen 17 und 14 mit dieser Taktsteuerleitung 11 und damit auch mit der Zentraleinheit verbunden sind.
- 12 -
209830/0979
Eine Adreßleitung 12 ist mit der E/A-Einheit 7 verbunden, während die E/A-Einheiten 8 und 9 jeweils über Leitungen 18 und 15 mit dieser Adreßleitung und damit auch mit der Zentraleinheit 1 verbunden sind. Die E/A-Einheiten bis 9 sind über Leitungen 4 bis 6 jeweils mit einer Matrix 3 verbunden. Die Leitungen 4 bis 6 sind Unterbrechungsanforderungsleitungenj die Matrix 3 liefert eine Datenausgabe abhängig davon, welche der E/A-Einheiten die höchste Priorität hat. Eine Angabe darüber, welche der E/A-Einheiten mit der höchsten Priorität in Tätigkeit zu treten verlangt, wird der Zentraleinheit 1 über eine Leitung 2 zugeführt. Die Zentraleinheit 1 gibt daraufhin über die Leitung 12 das Adreßidentifikationsmerkmal der ausgewählten E/A-Einheit ab, wodurch die ausgewählte E/A-Einheit aktiviert wird.
Pig. 2 zeigt ein ausführliches Logikdiagramm der in Fig. 1 dargestellten Matrix 3. Unterbrechungsanforderungsleitungen IRR1 bis IRR,2, welche von den E/A-Einheiten hergeführt sind, bilden die Eingänge der Matrix, während Unterbrechungsanforderungsleitungen * bis IRR-,ρ1 die Ausgänge der Matrix bilden. Die
Unterbrechungsanforderungsleitung IRR1 ist die Leitung mit der höchsten Priorität, da sie direkt durch die
- 13 -
209830/0979
Matrix hindurchgeführt ist und als Leitung IRR.1 wieder erscheint, während die Unterbrechungsanforderungsleitung IRR,2 die Leitung mit der niedrigsten Priorität ist. Die Unterbrechungsanforderungsleitung IRR1 ist über einen Inverter 20 und über eine Leitung 21 mit einer UND-Schaltung 22 verbunden, welch letztere außerdem eine Dateneingabe von der Leitung IRR2 empfängt. Der Ausgang des Inverters 20 ist außerdem über eine Leitung mit einer UND-Schaltung 25 verbunden, welche ihrerseits ein invertiertes IRRp-Signal über einen Inverter 23 empfängt. Der Ausgang der UND-Schaltung 25 ist über eine Leitung 26 mit einer UND-Schaltung 27 verbunden, welch letztere den UND-Ausgang der Leitung IRR, bildet. Die UND-Schaltung 27 empfängt gleichfalls eine Dateneingabe von der Leitung IRR,. Der Ausgang der UND-Schaltung ist außerdem über eine Leitung 28 mit einer UND-Schaltung 30 verbunden, welche über einen Inverter 29 das invertierte Signal von der Leitung IRR, empfängt. Der Ausgang der UND-Schaltung 30 ist über eine Leitung 31 mit einer UND-Schaltung 32 verbunden, welche außerdem eine Dateneingabe von der Leitung IRR1, empfängt. Diese Folge von Schaltverbindungen setzt sich bis zur letzten Stufe 32 fort. Demzufolge liefert ein Inverter 33 ein invertiertes Signal aus der vorhergehenden Stufe mit der
- 14 -
209830/0979
höheren Priorität an eine UND-Schaltung 35» welche außerdem ein Eingangssignal über eine Leitung 34 aus der vorhergehenden Stufe höherer Priorität empfängt und über Leitungen 36 und 38 eine Datenausgabe an eine UND-Schaltung 37 liefert, welch letztere eine weitere Dateneingabe über eine Leitung 4l von der Leitung IRR-Z2 empfängt. An die Leitung IRR™ ^-s^ außerdem über eine Leitung 43 ein Inverter 42 angeschlossen, welcher sein Ausgangssignal an eine UND-Schaltung 40 abgibt, die ein weiteres Eingangssignal aus einer UND-Schaltung 35 über eine Leitung 39 empfängt und ein invertiertes logisches Summenausgangssignal abgibt. Dieses invertierte logische Summenausgangssignal zeigt lediglich an, ob irgendwelche der Unterbrechungsanforderungsleitungen 1 bis 32 auf positivem Pegel sind. Demzufolge ist das invertierte logische Summensignal dann auf positivem Pegel, wenn keine der E/A-Einheiten in Tätigkeit zu treten verlangt.
In der folgenden Beschreibung wird angenommen, daß ein positiver logischer Pegel, welcher auf einer Unterbrechungsanforderungsleitung vorhanden ist, eine Anforderung anzeigt, während ein negativer logischer Pegel das NichtVorhandensein einer Anforderung anzeigt. Gleich-
- 15 -
209830/0979
falls zeigt ein am Ausgang der Matrix erscheinender positiver logischer Pegel an, daß die zugeordnete Leitung die höchste Priorität hat. Außerdem ist der Ausgang sämtlicher UND-Schaltungen jeweils auf einem negativen logischen Pegel, sofern nicht jeweils beide Eingänge einer UND-Schaltung positiv sind.
Gemäß der Darstellung in Fig. 2 bewirkt ein positiver Pegel auf IRR1, daß am Ausgang IRR1* ein positiver Pegel erscheint. Sämtliche anderen Matrixausgänge müssen negativ sein, ausgenommen das invertierte logische Summenausgangssignal. Das gilt aufgrund der Schaltverbindungen zwischen den Invertern und UND-Schaltungen von Stufe zu Stufe unabhängig davon, ob andere Unterbrechungsanforderungsleitungen geringerer Priorität positive Signale führen oder nicht. Zu Erläuterungszwecken sei deshalb angenommen, daß an IRR1 und IRR2 jeweils positive Signale anliegen. Der Ausgang der UND-Schaltung 22, welcher anzeigt, daß 1 die höchste Priorität hat, wird durch die
Inversion des von IRR1 an den Inverter 20 angelegten positiven Signals gesperrt, da dieser über die Leitung dem Eingang der UND-Schaltung 22 ein negatives Signal zuführt. Dieses negative Signal aus dem Inverter 20
- 16 -
209830/0979
liegt ebenfalls über die Leitung 24 an einem Eingang der UND-Schaltung 25 an und bewirkt, daß diese ein negatives Signal abgibt, d.h. daß deren Ausgang auf einem negativen logischen Pegel ist. Das negative Signal aus der UND-Schaltung 25 liegt gleichfalls an der UND-Schaltung 30 an, so daß diese ein negatives Ausgangssignal abgibt. Auf diese Weise kann gezeigt werden, daß an sämtlichen UND-Schaltungen 25 bis 40 ein negatives Eingangssignal anliegt, sofern das Signal aus dem Inverter 20 negativ ist. Das gilt unabhängig davon, ob die zugeordneten Unterbrechungsanforderungsleitungen IRRp bis IRR-,ρ ein positives Signal .führen oder nicht.
Nimmt man andererseits an, daß die Leitung IRR1 ein negatives Signal führt, so ist das Ausgangssignal des Inverters 20 positiv und das Ausgangssignal der UND-Schaltung 22 ist ebenfalls positiv, wenn das Signal auf der Leitung IRR2 positiv ist. Das Ausgangssignal des Inverters 23 ist jedoch negativ, wenn 2 positiv ist, so daß auch die UND-Schaltung 25 ein negatives Ausgangssignal hat und die gleiche Sperrwirkung, wie oben bereits beschrieben, hervorruft. Das gleiche gilt durch die gesamte Matrix hindurch, so daß IRR^2 nur ausgewählt werden kann, wenn keine Leitungen mit
- 17 ■-
209830/0979
höherer Priorität ausgewählt sind.
Fig. 3a zeigt das Instruktionsformat für eine E/A-Instruktion, während Fig. 3b das Format einer Recheninstruktion zeigt. Diese Formate werden gezeigt, um einen Vergleich zwischen den beiden Instruktionen zu erleichtern. Insbesondere ist zu beachten, daß das Arbeitseinheitscodefeld WDC aus Bits besteht, die die gleichen Positionen wie das Q-Registeradreßfeld haben. In beiden Fällen werden diese Felder zur Speicheradressierung verwendet. Im folgenden ist noch näher dargelegt, daß die E/A-Instruktion in der gleichen Weise wie die Recheninstruktion und mit den gleichen Registern und den gleichen Datenübertragungswegen gehandhabt werden kann, so daß keine Spezialhardware vorgesehen zu werden braucht.
Für eine mehr ins einzelne gehende Beschreibung wird im folgenden auf Fig. 4 Bezug genommen. Zur Vereinfachung der Besehreibung dieser Figur werden jeweils von einem Kreis umrahmte Zahlen verwendet, um die Anzahl von Leitungen in den verschiedenen Übertragungswegen anzugeben. Demgemäß enthält der Datenübertragungsweg 48, welcher mit den E/A-Einheiten verbunden ist, 8 Leitungen;
- 18 -
209830/0979
der Exnheitscodeübertragungsweg 47 enthält fünf Leitungen, der Funktionsübertragungsweg 46 enthält 3 Leitungen, der Takt Steuerübertragungsweg enthält 4 Leitungen und jede ünterbrechungsanforderungsleitung besteht aus einer einzigen, jeweils von einer E/A-Einheit hergeführten Leitung.
Gemäß der Darstellung in Fig. 4 ist die Zentraleinheit 1 mittels der Datenübertragungswege mit einer Anzahl von E/A-Einheiten verbunden. Zu Erläuterungszwecken sind 32 E/A-Einheiten gewählt worden, von welchen die Einheiten 41, 42 und 43 dargestellt sind. Die E/A-Einheiten enthalten jeweils eine gleiche Steuerlogik zum Anschluß an die Zentraleinheit. Jede E/AEinheit enthält ein Datenregister, welches Daten aus der Zentraleinheit bzw. Daten zur Weiterleitung an die Zentraleinheit über die Datenübertragungsleitung 48 speichert. Außerdem enthält jede E/A-Einheit einen örtlichen bzw. echten Einheitscode, welcher im folgenden als echter Einheitscode bezeichnet wird. Dabei handelt es sich um einen eindeutigen Code für jede E/A-Einheit, welcher innerhalb derselben festverdrahtet ist. Der von einer bestimmten Einheit verwendete Code muß der bestimmten Dateneingabe der von dieser Einheit verwendeten
- 19 -
209830/0979
Matrix 8o angepaßt sein, damit er mit dem von einem Codierer 74 erzeugten Code übereinstimmt. Die relativen Prioritäten der verschiedenen E/A-Einheiten werden ' durch deren festverdrahtete echte Einheitscodes bestimmt. Der echte Einheitscode wird einem Vergleicher zugeführt, welcher außerdem eine Dateneingabe über den Einheitscodeübertragungsweg 47 empfängt, so daß dann, wenn ein Vergleich positiv ausfällt, an eine Polgesteuerlokik innerhalb der jeweiligen E/A-Einheit ein Signal abgegeben wird. Die Polgesteuerlogik der Einheit ist ein besonderer Logikschaltkreis, dessen Auslegung vom Typ der Einheit abhängt. Die Polgesteuerlogik ist mit dem Funktionsübertragungsweg 46 verbunden, so daß die von der Zentraleinheit diktierte Punktion (E/A-Instruktion) in ihr gespeichert werden kann. Die Polgesteuerlogik ist außerdem mit einer Taktsteuerleitung 45 und mit einer Unterbrechungsanforderungsleitung 44 in herkömmlicher Weise verbunden. Jede E/A-Einheit weist, wie oben bereits erwähnt, ihre eigene Unterbrechungsanforderungsleitung auf, so daß 32 Unterbrechungsanforderungsleitungen mit der Matrix 80 verbunden sind, welche in Fig. 4 innerhalb der Zentraleinheit dargestellt ist. Die oben erwähnten Übertragungswege sind jeweils Datenübertragungswege herkömmlicher Art. Die Polgesteuerlogik der Einheit ist
- 20 -
209830/0979
lediglich in Blockform dargestellt, da ihr besonderer Aufbau zum Verständnis des Erfindungsgegenstandes nicht von Bedeutung ist.
Die Zentraleinheit enthält ein herkömmliches Speicheradreßregister 50, welches über eine Leitung mit einem Hauptspeicher 49 verbunden ist. Der Hauptspeicher 49 enthält acht Adressen, welche für den Echteinheitscodespeicher ADC reserviert sind. Die Arbeitseinheitscodefelder der E/A-Instruktionen geben die drei Bits niedriger Ordnung des Echteinheitscodespeichers an, wobei die Bits höherer Ordnung impliziert sind. Der Echteinheitscodespeicher wird geladen, wenn das Steuerprogramm geladen wird. Bei vielen Anwendungsfällen, bei welchen nicht mehr als acht E/A-Einheiten vorhanden sind, wird der Echteinheitscodespeicher nach der Anfangsladung nicht geändert. In Fällen gemeinsamer Programmbenutzung (program sharing) wird jedoch der Echteinheitscodespeicher geladen und unter der Steuerung durch das überwachungsprogramm dynamisch geändert. In dem Echteinheitscodespeicher sind acht Plätze vorhanden, was im folgenden noch näher erläutert ist. Jeder dieser acht Plätze kann einen echten Einheitscode enthalten und jeder der acht Plätze bzw. echten Einheitscodes wird
- 21 -
209830/0979
durch einen eindeutigen Arbeitseinheitscode adressiert. Bei Änderung des Anlagebetriebs lädt das überwachungsprogramm andere echte Einheitscodes in das Feld, so daß ein bestimmter Arbeitseinheitscode unter der Steuerung durch das überwachungsprogranim verschiedene echte Einheitscodes adressieren kann, was zu einer größeren Flexibilität der Anlage führt. Außerdem können, was im folgenden noch näher erläutert ist, die den Arbeitseinheitscode zugeordneten echten Einheitscodes geändert werden, um eine gemeinsame Programmbenutzung zu ermöglichen, bei welcher zahlreiche E/A-Einheiten an einem gemeinsamen Programm teilnehmen können, indem eine Vielzahl von E/A-Einheiten durch eine einzige E/A-Instruktion oder durch eine Folge von Instruktionen in verschiedenen Zeitpunkten unter der Steuerung durch das Überwachungsprogramm adressiert wird.
Die Ausgabedaten des Hauptspeichers k$ werden über eine Leitung 53 einem Hauptdatenregister 54 zugeführt, von welch letzterem die Ausgabedaten über eine Leitung 56 einem weiteren Datenregister 57 zugeführt werden. Die Ausgabedaten des Hauptdatenregisters 5 4 können außerdem über eine Leitung 55 einem Instruktionsregister 58 und über Leitungen 70 und 71 einem Addierer
- 22
209830/0979
zugeführt werden. Die Datenausgabe aus den einzelnen Feldern des Instruktionsregisters 56 erfolgt an eine OP-Decodierleitung 60, einen Punktionsübertragungsweg 61, ein Q-Adreßregister 62 und ein P-Adreßregister 63. Betrachtet man erneut die Figuren 3a und 3b, so wird klar, daß die Funktion bei einer E/A-Instruktion auf dem Funktionsübertragungsweg eine Länge von 4 Bits aufweist, während sie bei einer Recheninstruktion an einer Folgesteuerlogik 86 eine Länge von 2 Bits aufweist. Außerdem wird klar, daß das Q-Adreßfeld der Instruktion bei einer E/A-Instruktion für den Arbeitseinheitscode, bei einer Recheninstruktion hingegen in herkömmlicher Weise verwendet wird. In beiden Fällen werden die Inhalte des Feldes dem Speicheradreßregister zur Speicheradressierung zugeleitet. Obwohl die Größe des Feldes sowie der Wert der implizierten Bits höherer Ordnung in beiden Fällen verschieden sind, was in der Datenverarbeitung üblich ist, sind die Datenübertragungswege gleich. Das P-Register schließlich weist eine Länge von 5 Bits sowohl für die E/A-Instruktion als auch für die Recheninstruktion auf.
Die Funktionsübertragungsleitung 6l ist mit dem Funktionsübertragungsweg 46 verbunden, welch letzterer
- 23 -
209830/0979
mit j edem der E/A-Einheiten verbunden ist. Die Q-Adreß- und P-Adreßteile des Instruktionsregisters, welche auf Leitungen 62 und 63 erscheinen, werden auf einer Leitung 64 weitergeleitet, welche mit einer Eingabeleitung 84 des Speicheradreßregisters verbunden ist.
Ausgabedaten aus dem weiteren Datenregister 57 werden über eine Leitung 69 dem Addierer 68 zugeführt. Das ermöglicht zusammen mit den Dateneingaben aus dem Hauptdatenregister 54, daß herkömmliche Rechenoperationen zwischen den beiden Datenregistern ausgeführt werden können. Die Ausgabedaten des Addierers werden sodann über eine Leitung 67 in den Hauptspeicher 49 eingegeben. Eine Torsteuerung, welche aus Vereinfachungsgründen nicht dargestellt ist, gestattet unter der Steuerung der Polgesteuerlogik 86, daß die Inhalte des Datenregisters 54 oder des Datenregisters 57 über den Addierer 68 an eine Leitung 67 weitergegeben werden. Durch diese Torsteuerung werden außerdem implizierte Werte, wie beispielsweise "1" erzeugt, welche beispielsweise für Indexzwecke eingeführt werden. Ausgabedaten des weiteren Datenregisters 57 werden außerdem über Leitungen 69 und 65 dem Einheitscodeübertragungsweg
- 24 -
209830/0979
zugeleitet. Der Einheitscodeübertragungsweg 47 ist außerdem über eine Leitung 66 mit einem Adreßdecodierer 73 verbunden. Der Ausgang des Adreßdecodierers 73 ist über Leitungen 77 und 78 mit einem E/A-Adreßregisterspeicher verbunden. Der E/A-Adreßregisterspeicher, im folgenden E/A-AR-Speicher genannt, ist einfach ein Speicher, welcher die Adresse enthält, zu welcher oder von welcher, je nach dem ob eine Eingabe- oder Ausgabeoperation auszuführen ist, mit der betreffenden E/A-Einheit Daten zu übertragen sind. Für jede der 32 E/A-Einheiten ist in dem E/A-AR-Speicher 8l ein Wort vorgesehen, welches mittels des echten Einheitscodes adressiert wird. Deshalb besteht, wie dargestellt, die Leitung 78 tatsächlich aus 32 elektrischen Leitungen, und der E/A-AR-Speicher gibt an jede der ausgewählten Leitungen entsprechend der von der Matrix 80 festgelegten Priorität eine Adresse aus. Die in dem E/A-AR-Speicher gespeicherte Adresse wird während einer Unterbrechung über Leitungen 83 und 84 dem Speicheradreßregister 50 zugeführt und die Inhalte des E/A-AR-Speichers werden durch Eingeben in den Addierer 68 über Leitungen 52 und 53» über das Hauptdatenregister 54, über Leitungen 71 und 70, und von dem Addierer aus zurück zum E/A-AR-Speicher über Leitungen 67 und 82 indiziert.
- 25 -
209830/0979
Die 32 Unterbrechungsanforderungsleitungen der E/A-Einheiten sind mit der Matrix 80 verbnden, deren logisches Summenausgangssignal über eine Leitung 85 an der Folgesteuerlogik 68 der Zentraleinheit anliegt, wodurch eine noch anhängige Unterbrechungsanforderung erkannt wird. Die Matrix 80 weist außerdem 32 mit dem E/A-AR-Speicher verbundene Ausgangsleitungen auf, welche durch Leitungen 76, 78 und 79 dargestellt sind'. Die Ausgangsleitungen der Matrix 80 sind außerdem über ^ eine Leitung 75 mit einem Einheitscodecodierer 74 verbunden. Dieser Einheitscodecodierer 74 gibt einen eindeutigen 5-Bit-Code über eine Leitung 66 an den Einheitscodeübertragungsweg 47 ab, so daß sämtliche E/A-Einheiten feststellen können, ob ihre jeweilige Unterbrechungsanforderung bearbeitet wird.
Zum leichteren Verständnis der Erfindung wird zunächst noch eine E/A-Instruktion beschrieben. Als erstes wird das Laden einer Punktion in die E/A-Ein-P heiten und anschließend das Unterbrechen durch die E/A-Einheiten, um entweder Daten aus der Zentraleinheit zu empfangen oder Daten an die Zentraleinheit zu liefern, beschrieben. Eine E/A-Instruktion wird aus dem Haupt-
- 26 -
209830/0979
speicher 49 abgerufen und über die Leitung 53 dem Hauptdatenregister 54 und weiter über die Leitung 55 dem Instruktionsregister 58 zugeleitet. Gemäß dem in Fig. 3a dargestellten Format des Instruktionswortes ist ein OP-Codefeld vorgesehen, welches angibt, daß es sich um eine E/A-Instruktion handelt. Der OP-Code wird über die Leitung 60 der Folgesteuerlogik 86 zugeführt. Außerdem wird die besondere Funktion, bei welcher es sich um eine Zustandsprüfung, einen Test usw. handeln kann, über die Leitung 6l dem Funktionsübertragungsweg 46 zugeführt. Diese Funktion wird sodann gleichzeitig sämtlichen E/A-Einheiten 4l bis 43 zugeführt. Während diese Funktion dem Funktionsübertragungsweg zugeführt wird, wird der Teil des Instruktionswortes, welcher sich in dem Q-Adreßteil des Instruktionsregisters befindet, über Leitungen 64 und 84 dem Speicheradreßregister 50 zugeleitet. Wie oben bereits erwähnt, sind acht Arbeitseinheitscodes vorgesehen, welchen jeweils ein echter Einheitscode zugeordnet ist, der durch das überwachungsprogramm geladen wird. In jedem bestimmten Zeitpunkt ist jedoch nur ein echter Einheitscode einem Arbeitseinheitscode zugeordnet. Der Arbeitseinheitscode wird zum Adressieren des Speicherteils an das Speicheradreßregister 50 angelegt, um den zugehörigen echten Einheitscode zu
- 27 -
209830/0979
erhalten. Dieser echte Einheitscode wird sodann über das Hauptdatenregister 54 und über die Leitung 56 dem weiteren Datenregister 57 und von diesem aus über Leitungen 65 und 69 dem Einheitscodeübertragungsweg zugeführt, wodurch er gleichzeitig sämtlichen E/A-Einheiten zugeführt wird. Der echte Einheitscode liegt in jeder E/A-Einheit an dem Vergleicher an, welcher einen Vergleich zwischen dem örtlichen Einheitscode der E/A-Einheit anstellt. Diejenige E/A-Einheit,deren örtlicher Einheitscode identisch ist, speichert mittels der Polgesteuerlogik der E/A-Einheit die Funktion, welche in diesem Augenblick an dem Funktionsübertragungsweg anliegt. In gleicher Weise werden die Funktionen in die anderen E/A-Einheiten in der Datenverarbeitungsanlage geladen. Es ist zu beachten, daß den E/A-Einheiten der ihnen jeweils zugeordnete Arbeitseinheitscode nicht bekannt ist. Sie sind eindeutig durch den örtlichen 5-Bit-Einheitscode gekennzeichnet.
. Die E/A-Instruktion hat hauptsächlich die Aufgabe,
die adressierte E/A-Einheit zu steuern. Die E/A-Einheit kann derart aktiviert werden, daß entweder eine Dateneingabe oder eine Datenausgabe bzw. ein Lesen oder Schreiben von Daten mittels der Wandler der Einheit
- 28 -
209830/0979
erfolgt. Je nach dem Typ der E/A-Einheit kann ein einzelnes Byte oder ein Datenblock, d.h. mehrere Bytes aus sequentiellen Adressen im Hauptspeicher, eingegeben oder .ausgegeben werden. Es können weitere Punktionen der Einheit je nach deren Bauart festgelegt werden, z.B. "Rücklauf" oder "Suchen" im Falle eines Magnetbandes. Die Instruktion kann außerdem eine Zustandsprüfung der E/A-Einheit beinhalten. Diese Punktionen werden jeweils von dem Punktionsfeld der E/A-Einheit angegeben. Im allgemeinen werden während der Ausführung der E/A-Instruktion echte Daten im Wege von Eingabe- oder Ausgabedaten nicht übertragen. Diese Daten werden zwischen dem Hauptspeicher und der E/A-Einheit während einer anschließenden Unterbrechung ausgetauscht, welche gewöhnlich aufgrund einer an die betreffende E/A-Einheit abgegebenen E/A-Instruktion erfolgt. Diese Unterbrechung kann entweder eine in der Datenverarbeitungstechnik allgemein bekannte Cycle-Steal-Unterbrechung oder aber eine Programmunterbrechung sein, welche in der Datenverarbeitung gleichfalls bekannt ist. bei der bevorzugten Ausführungsform der Datenverarbeitungsanlage nach der Erfindung wird das Cycle-Steal-Verfahren verwendet. Die Erfindung ist jedoch in gleicher Weise ohne Schwierigkeiten auch bei Datenverarbeitungsanlagen anwendbar,
- 29 -
209830/0979
bei welchen das Programmunterbrechungsverfahren verwendet wird. Eine E/A-Einheit erhält eine Unterbrechung, indem sie eine Unterbrechungsanforderung auslöst. In der folgenden Beschreibung wird immer dann, wenn die Unterbrechungsanforderung einer E/A-Einheit berücksichtigt worden ist, gesagt, daß die E/A-Einheit in Tätigkeit tritt.
Wenn eine E/A-Einheit unter der Steuerung durch die Polgesteuerlogik in der E/A-Einheit in Tätigkeit zu treten verlangt, bringt sie die ihr zugeordnete ^ Unterbrechungsanforderungsleitung auf "1" bzw. auf positiven Pegel. Es sind, wie bereits erwähnt, 32 Unterbrechungsanf orderungsleitungen vorhanden, welche jeweils mit der Matrix 80 in der Zentraleinheit verbunden sind. Die Matrix 80 stellt dann fest, welche E/A-Einheit die höchste Priorität hat und bringt eine dieser E/AEinheit entsprechende Ausgangsleitung auf positiven Pegel, wodurch bewirkt wird, daß der E/A-AR-Speicher unter der Steuerung der Folgesteuerlogik 86, welche über die Leitung 85 von der Matrix 80 die Anzeige empfangen hat, daß eine oder mehrere E/A-Einheiten in Tätigkeit zu treten verlangen, eine von 32 Adressen im Speicher liefert, mit welcher anschließend während der Ausführung einer Bearbeitung zu arbeiten ist. Eine
- 30 -
209830/0979
ausführliche Beschreibung der Matrix 80 wurde bereits mit Bezug auf Fig. 2 gegeben. Die Datenausgabe der Matrix 80, die angibt, welche der E/A-Einheiten prioritätsgebunden zu betätigen ist, wird außerdem dem Einheitscodecodierer 74 zugeleitet. Dieser Codierer gibt sodann abhängig davon, welche Leitung ausgewählt worden ist, einen 5-Bit-Code über die Leitung 66 an den Einheitscode-Übertragungsweg und damit an die E/A-Einheiten ab. In oben bereits beschriebener Weise wird sodann ein Codevergleich vorgenommen, um festzustellen, welche E/A-Einheit ausgewählt worden ist. Die betreffende E/A-Einheit meldet danach über den Punktionsübertragungsweg 46 der Folgesteuerlogik 68, ob die Unterbrechung für eine Dateneingabe oder eine Datenausgabe gilt. Bei den meisten E/A-Einheiten ist die Art der Datenübertragung in der vorher bereits an die E/A-Einheit abgegebenen E/A-Instruktion enthalten und in der E/A-Einheit gespeichert. Außerdem empfängt die E/A-Einheit Daten über den Datenübertragungsweg 48 oder gibt an diesen Daten ab. Während der Ausführung der E/A-Instruktion wird, wie oben bereits erwähnt, der echte Einheitscode über die Einheitscodeleitung 47 ausgegeben, um eine der E/A-Einheiten auszuwählen. Dieser Code wird jedoch ebenfalls über Leitungen 66 und 72 an den Adreßdecodierer 73 abgegeben. Der Adreßdecodierer
- 31 -
209830/0979
decodiert das 5-Bit-Muster und bringt eine der 32 in den E/A-AR-Speicher 81 führenden Leitungen auf positiven Pegel, um das dem 5-Bit-Code zugeordnete Eingabe/Ausgabe-Adreßregister auszuwählen, bei welchem es sich um das gleiche Register handelt, welches von der Matrix dann ausgewählt wird, wenn eine E/A-Einheit, die das gleiche 5-Bit-Muster wie ihr echter Einheitscode hat, über ihre Unterbrechungsanforderungsleitung eine Unterbrechung verlangt. Es ist deshalb erforderlich, daß die betreffende Unterbrechungsanforderungsleitung 44, welche von einer bestimmten E/A-Einheit benutzt wird, an den eindeutigen örtlichen Einheitscode angepaßt ist, der in der E/A-Einheit festverdrahtet ist.
In Fig. 5 ist ein Logikdiagramm des Adreßdecodierers 73 dargestellt, während Fig. 6 die diesem zugeordnete Wertetafel zeigt. In Fig. 6 enthält eine mit "Leitung" bezeichnete Spalte die Kennzeichnungen IRR1 bis IRR,2. Diese Kennzeichnungen entsprechen den \ Eingängen der Matrix 80 in Fig. 4. Die Ausgänge der Matrix 80 sind die Leitungen IRR1 1 bis IRR,.', welche entsprechend der von der Matrix festgelegten Priorität auf positiven Pegel gebracht werden. Nicht mehr als eines der Ausgangssignale kann in einem Zeitpunkt wahr-
209830/0979
sein. In der hier verwendeten Nomenklatur ist die Datenausgabe der Matrix jeweils als eine Zahlt mit einem hochgesetzten Strich dargestellt, welch letzterer keine (Negation anzeigt, sondern lediglich zur Unterscheidung von der Dateneingabe in die Matrix dient. Die aus der Matrix 80 herauskommenden Leitungen sind an die Eingänge des in Fig. 5 dargestellten Einheitscodecodierers "Jk angeschlossen.
Die in Fig. 5 dargestellten logischen Blöcke bewirken jeweils eine logische ODER-Verknüpfung der an sie angelegten Eingangssignale. Nimmt man beispielsweise IRR52 1, so sind DV1 bis DV1-. jeweils auf positivem logischem Pegel, wenn IRR,' auf positivem Pegel ist. Außerdem folgt aus den Fig. 5 und 6, daß sich ein nur aus Nullen gebildetes Bit-Muster ergibt, wenn IRR1 1 auf positivem Pegel ist. Es ergibt sich ein Bit-Muster, in welchem sämtliche Bits mit Ausnahme von DV1 Nullen sind, immer dann, wenn IRR2 1 auf positivem Pegel ist. In gleicher Weise ergeben sich Codes, welche durch eindeutige Bitmuster auf den Leitungen DV1 bis DV^ dargestellt sind, durch Auswahl einer der Ausgangsleitungen IRR1 1 bis IRR '.
Zur Erleichterung des Nachweises, daß bei dem Arbeitseinheitscodeverfahren nach der Erfindung keine Abänderung der gewöhnlichen Zentraleinheit erforderlich
209830/0979
- 33 -
ist, wird im folgenden kurz eine Recheninstruktion beschrieben und mit einer E/A-Instruktion verglichen. In der Recheninstruktion in Fig. 3b hat die Punktion eine Länge von 2 Bits, im Gegensatz zur E/A-Instruktion, bei welcher die Punktion eine Länge von vier Bits aufweist. Die OP-Codes sind gleich lang. Bei beiden Instruktionen werden der OP-Code und die Punktion in die Folgesteuerlogik 86 eingegeben, um dem Betrieb der Zentraleinheit zu steuern. In der Recheninstruktion haben die Q-Registeradresse und die P-Registeradresse jeweils eine Länge von fünf Bits. Die Q-Registeradresse in der Recheninstruktion wird dem Speicheradreßregister 50 über Leitungen 62, 64 und 84 zugeleitet und zum Auswählen eines von 32 Mehrzweckregistern verwendet, welches sich im Hauptspeicher 49 befindet. Die fünf Bits niedriger Ordnung der Adresse des Registers sind in dem Q-Adreßfeld der Instruktion angegeben. Die Bits höherer Ordnung der Adresse bestehen lediglich aus Nullen. In der E/A-Instruktion wird das gleiche Feld, welches jedoch eine Länge von drei Bits aufweist, dazu verwendet, über das Speicheradreßregister 50 eines von acht Wörtern zu adressieren, dessen Inhalt gleich einem von 32 echten Einheiscodes ist. Der echte Einheitscode wird in der gleichen Weise
- 34 209830/0979
adressiert, wie die Inhalte des Q-Registers der Recheninstruktion, mit Ausnahme der Größe des Feldes in der Instruktion und der Werte der zugehörigen Bits höherer Ordnung der Instruktion. Die implizierten Bits höherer Ordnung des Echteinheitscode-Speichers können sämtlich Null sein, wie es bei Mehrzweckregistern der Fall ist; in diesem Fall können die betreffenden Wörter des Speichers in beiden Richtungen adressiert werden. Alternativ können die Bits höherer Ordnung im Wert abweichen, beispielsweise können sämtliche "1" sein» wodurch eine Trennung beim Gebrauch der Wörter erreicht wird. Die Wahl der Werte der implizierten Adreßbits hängt von einer Vielzahl höchst subjektiver Faktoren ab, beispielsweise von dem übrigen Instruktionsrepertoire, von dem besonderen Anwendungsfall der Konstruktion und von der persönlichen Vorliebe des Konstrukteurs.
Die Ähnlichkeiten zwischen dem Arbeitseinheitscodefeld der E/A-Instruktion und dem Q-Adreßfeld der Recheninstruktion hören auf, wenn die Inhalte der durch diese Felder adressierten Wörter ermittelt worden sind. Der echte Einheitscode wird von dem Adreßdecodierer 73 zum auswählen einer der Eingangsleitungen 78 des E/A-AR-Speichers 81 verwendet. Bei
- 35 209830/0 9 79
der Recheninstruktion wird der Inhalt des von dem Q-Adreßfeldes adressierten Wortes in dem weiteren Datenregister 57 so lange gespeichert, bis der Inhalt des von dem P-Adreßfeld angegebenen Registers in der gleichen Weise wie der von der Q-Adresse adressierte Inhalt zugänglich gemacht und im Hauptdatenregister 5^ gespeichert worden ist. Die beiden Operanden, welche durch die Q- und P-Adreßfeider angegeben sind, werden dem Addierer 68 von den beiden Datenregistern 5^ und 57 über Leitungen 1Jk, 70 und 69 zugeführt. Damit ist dargelegt, daß die Operation des Arbeitseinheitscodes und der Q-Registeradresse auf einen gleichen Operationstyp mit unterschiedlichen Feldlängen führt. Demzufolge ist es bei Verwendung der oben beschriebenen Arbeitseinheitscode-E/A-Steuerung nach der Erfindung nicht erforderlich, daß in der Zentraleinheit ungewöhnliche oder zusätzliche Datenübertragungswege vorgesehen werden.
Bei der Datenverarbeitungsanlage bzw. dem E/A-Steuerverfahren nach der Erfindung weist jede E/A-Einheit einen eindeutigen echten Einheitscode auf, welcher während der Ausführung einer Eingabe- und Ausgabeinstruktion und bei Unterbrechungen verwendet wird. Die E/A-Instruktion enthält anstelle des echten Codes
- 36 209830/0979
der Einheit (in der Beschreibung echter Einheitscode genannt) einen Arbeitscode der Einheit (in der Beschreibung Arbeitseihheitscode genannt). Während der Ausführung einer E/A-Instruktion wird ein 3-Bit-Arbeitseinheitscode zum Adressieren eines Speicherteils verwendet, in welchem die zugeordneten echten Einheitscodes gespeichert sind. Der dem Arbeitseinheitscode zugeordnete echte Einheitscode wird sodann an einen Decodierer ausgegeben, um ein zugeordnetes Eingabe/Ausgabe-Adreßregister auszuwählen, und außerdem über den Einheitscodeübertragungsweg an die E/A-Einheiten ausgegebene Zwischen dem eindeutigen örtlichen echten Einheitscode, welcher in jeder E/A-Einheit festverdrahtet ist, und dem übertragenen Code wird ein Vergleich angestellt, um festzustellen, welche E/A-Einheit ausgewählt worden ist. Die sodann von der E/A-Instruktion auszuführende Funktion wird in der ausgewählten E/A-Einheit gespeichert. Während anschließender Unterbrechungen aktiviert jede E/A-Einheit, welche in Tätigkeit zu treten verlangt, ihre eigene Unterbrechungsleitung. Eine Matrix bestimmt, welche der E/A-Einheiten die höchste Priorität hat. Die Datenausgabe der Matrix wird zum Adressieren des E/A-Adreßregisterspeichers verwendet, um diejenige Adresse im Speicher zu erhalten,
- 37 209830/0979
welche der betreffenden ausgewählten E/A-Einheit zugeordnet ist. Außerdem wird die Datenausgabe der Matrix einem Einheitscodecodierer zugeleitet, welcher an den Einheitsübertragungsweg einen 5-Bit-Einheitscode abgibt, so daß die betreffende ausgewählte Einheit unter mehreren möglichen E/A-Einheiten, welche in Tätigkeit zu treten verlangen, mittels eines Vergleiches des übertragenen Einheitscodes mit ihrem örtlich gespeicherten Einheitscode gemeldet wird.
Mit dem erfindungsgemäßen Verfahren zum indirekten Adressieren von E/A-Einheiten wird nicht nur das zum Auswählen einer Einheit in der Instruktion benötigte Feld verkürzt, sondern darüberhinaus auch ein Überlappungsbetrieb sämtlicher Einheiten unter Verwendung des Überwachungsprogramms ermöglicht, welch letzteres wahlweise verschiedene echte Einheitscodes in den Echteinheitscode-Speicher lädt, so daß für eine Operation ein Arbeitseinheitscode einer ersten E/A-Einheit und
* während anschließender Operationen verschiedene E/A-Einheiten entsprechend dem in dem Echteinheitscode-Speicher durch das Überwachungsprogramm gespeicherten echten Einheitscode zugeordnet ist. Eine gemeinsame Programmbenutzung ist auf diese Weise durch Umschalten
- 38 209830/0979
zwischen echten Einheitscodes möglich, die einem gegebenen Arbeitseinheitscode in dem Echteinheitscode-Speicher zugeordnet sind.
In der vorhergehenden Beschreibung ist der Ausdruck "gemeinsame Programmbenutzung" zur Definition eines Verfahrens verwendet worden, bei welchem zwei oder mehr Tasks auf Time-Sharing-Basis, d.h. zeitlich verzahnt, ausgeführt werden. Die bei jeder Task vorkommenden Bearbeitungsschritte und Entscheidungen sind identisch. Die Tasks sind zwar unabhängig voneinander, enthalten jedoch unterschiedliche Daten und weisen jeweils ihre eigenen eindeutigen Datenstationen bzw. E/A-Einrichtungen auf. Da die Tasks jeweils die gleiche Verarbeitung verlangen, können sie durch gleiche Programme ausgeführt werden, wobei jedes Programm die Steuerung für eine Task liefert. Bei der gemeinsamen Programmbenutzung sind jedoch die Programme nicht nur gleich, sondern es wird auch ein einziges Programm zur Ausführung einer Vielzzahl von Tasks verwendet. Man kann damit sagen, daß nicht nur ein Time-Sharing gder Zentraleinheit (hardware) sondern auch ein Time-Sharing des Programms (software) stattfndet.
- 39 -
209830/0979
Der überwachungsteil des Programms schaltet das Programm von einer Task auf eine andere um. Das Überwachungsprogramm stellt bestimmte Bedingungen in der Zentraleinheit her, so daß die eine Task betreffenden Daten in einem bestimmten Augenblick adressiert werden und daß die eine andere Task betreffenden Daten in einem anderen Augenblick adressiert werden. Gleichzeitig mit dem Umschalten von den Daten einer Task auf die Daten einer anderen Task muß das Überwachungsprogramm außerdem dafür sorgen, daß die richtigen E/A-Einheiten
adressiert werden. Das Arbeitseinheitscodeverfahren nach der Erfindung ist für eine gemeinsame Programmbenutzung ideal geeignet. Die E/A-Einheit, welche in einem bestimmten Zeitpunkt durch eine bestimmte E/A-Instruktion oder durch eine Folge von Instruktionen adressiert wird, ist einfach und allein von dem Inhalt des Echteinheitscode-Speichers abhängig, welcher von dem Arbeitseinheitscode adressiert wird. Das Überwachungsprogramm ändert die E/A-Einheiten, die durch die E/A-Instruktionen adressiert werden, indem es den Inhalt des Echteinheitscode-Speichers ändert.
Im Rahmen der Erfindung bietet sich dem Fachmann über das beschriebene Ausführungsbeispiel hinaus selbst-
209830/0979
verständlich eine Vielzahl von Vereinfachungs- und Verbesserungsmöglichkeiten sowohl hinsichtlich der Datenverarbeitungsanlage als auch des Verfahrens nach der Erfindung.
- 41 -
209830/0979

Claims (1)

  1. Patentansprüche
    £l> Verfahren zur Steuerung einer Vielzahl von Eingabe/Ausgäbe (E/A)-Einheiten mittels einer Zentraleinheit, gekennzeichnet durch folgende Schritte:
    a) Pestlegen jeweils eines echten Einheitscodes für jede E/A-Einheit,
    b) Speichern eines jeder der benutzten E/AEinheiten zugeordneten echten Einheitscodes in einem Speicher der Zentraleinheit,
    c) Anwenden einer E/A-Instruktion, welche ein Arbeitseinheitscodefeld und ein Punktionscodefeld enthält,
    d) Verwenden der in der E/A-Instruktion enthaltenen Arbeitseinheitscodes zum Adressieren der in dem Speicher gespeicherten echten Einheitscodes während der Ausführung der E/A-Instruktion, um
    - 42 209830/0979
    is
    einen .echten Einheitscode zu erhalten, und
    e) Decodieren dieser erhaltenen echten Einheitscodes mittels eines Adreßdecodxerers, um ein eindeutiges E/A-Adreßregister für jede Einheit zu erhalten.
    2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die aus dem Speicher der echten Einheitscodes erhaltenen echten Einheitscodes außerdem an die E/AEinheiten weitergegeben werden, welche diese echten Einheitscodes mit ihrem jeweils zugeordneten echten Code vergleichen und bei Übereinstimmung derselben die von der E/A-Instruktion angegebene Funktion ausführen.
    3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß ein Überwachungsprogramm verwendet wird, welches wahlweise die jeweils den Arbeitseinheitscodes zugeordneten echten Einheitscodes ändert.
    k. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß jeder E/A-Einheit eine eindeutige Unterbrechungsanforderungsleitung zugeordnet wird, welche dann betätigt wird, wenn eine Einheit in Tätigkeit
    2098 30/09 79
    zu treten verlangt.
    5. Verfahren nach Anspruch 1I, dadurch gekenn- ' zeichnet, daß durch das Betätigen der ünterbrechungsanf orderungs leitungen durch die Einheiten mittels einer Matrix das Auswählen des gleichen E/A-Adreßregistersbewirkt wird, welches dann ausgewählt worden wäre, wenn der echte Einheitscode aus der betreffenden Einheit in den Decodierer eingegeben worden wäre.
    6. Verfahren nach Anspruch 5» dadurch gekennzeichnet, daß dann, wenn mehrere E/A-Einheiten ihre jeweils zugeordneten Unterbrechungsanforderungsleitungen gleichzeitig aktivieren, von der Matrix die E/A-Einheit mit der höchsten Priorität ausgewählt wird.
    7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß die von der Matrix abgegebenen Daten, welche die E/A-Einheit mit der höchsten Priorität angeben, einem Einheitscodecodierer zugeleitet werden, welcher einen Code, der dem der ausgewählten E/A-Einheit zugeordneten Code entspricht, an einen Einheitscode-Übertragungsweg abgibt, welcher ihn dann den E/A-Einheiten zuführt, um festzustellen, welche E/A-Einheit von der
    209830/0979
    ts
    Matrix ausgewählt worden ist.
    8.'Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß ein überwachungsprogramm verwendet wird, welches wahlweise die echten Einheitscodes ändert, welche einem oder mehreren der Arbeitseinheitscodes zugeordnet sind.
    9· Datenverarbeitungsanlage zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 8, gekennzeichnet durch eine Vielzahl von E/A-Einheiten (41, 42, 43), welchen jeweils ein eindeutiger echter Einheitscode und jeweils ein Vergleicher zum Empfang dieses echten Einheitscodes zugeordnet sind, ferner durch eine mit jeweils den E/AEinheiten über einen Einheitscodeübertragungsweg (47) verbundene Zentraleinheit(1), und durch eine Unterbrechungsanforderungsleitung (44) für jede der E/A-Einheiten, wobei die Zentraleinheit einen Echteinheitscodespeicher (ADC) zum Speichern echter Einheitscodes an Plätzen, welche durch die Arbeitseinheitscodes adressiert werden, außerdem einen E/A-Adreßregisterspeicher (81) zum Speichern der Adressen von Speicherplätzen im Speicher, die von den Einheiten benutzt werden, sowie Einrichtungen (54, 57» 58, 74) zum Entnehmen desjenigen echten Einheitscodes
    - 45 209830/0979
    au8 dem EchteinheitsCodespeicher, welcher durch das Arbeitseinheitscodefeld der E/A-Instruktion bestimmt ist, und zum Ausgeben des ermittelten echten Einheitscodes über den Einheitscodeübertragungsweg (47) an die E/A-Einheiten, und einen Adreßdecodierer (73) aufweist, welcher ebenfalls die an die E/A-Einheiten abgegebenen echten Einheitscodes empfängt und das eindeutige E/A—Adreßregister aus dem E/A-Adreßregisterspeicher (81) zur Verwendung durch diejenige E/A-Einheit auswählt, welche dem ausgegebenen echten Einheitscode entspricht.
    10. Anlage nach Anspruch 9, gekennzeichnet durch eine Matrix (80), welche jeweils mit den Unterbrechungsanforderungsleitungen (44) der E/A-Einheiten (41, 42, 43) verbunden ist und deren Ausgang mit dem E/A-Adreßregisterspeicher (81) verbunden ist, so daß dieser entsprechend der Datenausgabe aus der Matrix adressiert wird.
    11. Anlage nach Anspruch 10, dadurch gekennzeichnet, daß die Matrix (80) eine Prioritätsbestimmungseinrichtung (Fig. 2) aufweist, welche dann, wenn mehrere E/A-Einheiten (41, 42, 43) gleichzeitig in Tätigkeit zu treten verlangen, dem E/A-Adreßregisterspeicher (81)
    - 46 209830/0979
    die Adresse der'E/A-Einheit mit der höchsten Priorität zuleitet.
    12. Anlage nach Anspruch 10 oder 11, dadurch gekennzeichnet, daß die Zentraleinheit (1) einen Einheitscodecodierer (71I) aufweist, welcher mit dem Ausgang der Matrix (80) verbunden ist und entsprechend der Datenausgabe der Matrix einen Ausgabecode an den Einheitscode-Übertragungsweg (47) abgibt und sämtlichen E/A-Einheiten (1Il, 42, 43) zuführt, um diesen anzuzeigen, welche der in Tätigkeit zu treten verlangenden E/A-Einheiten von der Matrix ausgewählt worden ist.
    13. Anlage nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, daß der Echteinheitscodespeicher (ADC) durch ein Arbextsexnheitscodefeld einer E/A-Instruktion adressiert wird.
    - 47 209830/0979
    Leerseite
DE19712164793 1970-12-30 1971-12-27 Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit Pending DE2164793A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10268570A 1970-12-30 1970-12-30

Publications (1)

Publication Number Publication Date
DE2164793A1 true DE2164793A1 (de) 1972-07-20

Family

ID=22291127

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19712164793 Pending DE2164793A1 (de) 1970-12-30 1971-12-27 Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit

Country Status (4)

Country Link
US (1) US3668651A (de)
DE (1) DE2164793A1 (de)
FR (1) FR2124023A5 (de)
GB (1) GB1363687A (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4929703A (de) * 1972-07-06 1974-03-16
US3961312A (en) * 1974-07-15 1976-06-01 International Business Machines Corporation Cycle interleaving during burst mode operation
US3972023A (en) * 1974-12-30 1976-07-27 International Business Machines Corporation I/O data transfer control system
US4209838A (en) * 1976-12-20 1980-06-24 Sperry Rand Corporation Asynchronous bidirectional interface with priority bus monitoring among contending controllers and echo from a terminator
US4181934A (en) * 1976-12-27 1980-01-01 International Business Machines Corporation Microprocessor architecture with integrated interrupts and cycle steals prioritized channel
US4339793A (en) * 1976-12-27 1982-07-13 International Business Machines Corporation Function integrated, shared ALU processor apparatus and method
JPS5463634A (en) * 1977-10-03 1979-05-22 Nec Corp Bus controller
US4188664A (en) * 1977-11-15 1980-02-12 Phillips Petroleum Company I/O Terminal identification
US4181941A (en) * 1978-03-27 1980-01-01 Godsey Ernest E Interrupt system and method
US4445175A (en) * 1981-09-14 1984-04-24 Motorola, Inc. Supervisory remote control system employing pseudorandom sequence
US4458312A (en) * 1981-11-10 1984-07-03 International Business Machines Corporation Rapid instruction redirection
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
GB2192739B (en) * 1986-07-18 1991-02-13 Intel Corp Selective input/output port protection
US7734926B2 (en) * 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7356668B2 (en) * 2004-08-27 2008-04-08 Microsoft Corporation System and method for using address bits to form an index into secure memory
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7822993B2 (en) * 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US20120179847A1 (en) * 2011-01-12 2012-07-12 Standard Microsystems Corporation Method and System for Implementing Bus Operations with Precise Timing
EP2903248B1 (de) * 2012-09-28 2020-06-24 Kubota Corporation Datenkommunikationssystem für eine arbeitsmaschine
US10814811B2 (en) * 2017-09-30 2020-10-27 Physician Electronic Networks, L.L.C. Collision detection system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3372378A (en) * 1964-04-27 1968-03-05 Ibm Input/output unit switch
US3411143A (en) * 1966-01-13 1968-11-12 Ibm Instruction address control by peripheral devices
US3432813A (en) * 1966-04-19 1969-03-11 Ibm Apparatus for control of a plurality of peripheral devices
US3539998A (en) * 1967-07-12 1970-11-10 Burroughs Corp Communications system and remote scanner and control units
US3559187A (en) * 1968-11-13 1971-01-26 Gen Electric Input/output controller with linked data control words

Also Published As

Publication number Publication date
GB1363687A (en) 1974-08-14
US3668651A (en) 1972-06-06
FR2124023A5 (de) 1972-09-15

Similar Documents

Publication Publication Date Title
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
DE2744531C2 (de) Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE2856483C2 (de)
DE2714805C2 (de)
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE3852997T2 (de) Rechnersystem und Verfahren für die Überwachung von nichtstationären Datenstrukturen in einem Rechnersystem.
DE2635592A1 (de) Multiprozessor-abrufsystem
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2813128A1 (de) Mikroprogrammspeicher
DE2411963B2 (de) Datenverarbeitungsanlage
DE2750721A1 (de) Ein/ausgabe-system
DE1929010B2 (de) Modular aufgebaute datenverarbeitungsanlage
DE2019444A1 (de) Datenverarbeitungsanlage
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE1197650B (de) Parallel-Addierer
DE1474063A1 (de) Datenverarbeitungsanlage
EP0062141B1 (de) Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem
DE69726400T2 (de) Festkörper-datenprozessor mit vielseitiger mehrquellen-unterbrechungsorganisation
DE2548720A1 (de) Mikroprogramm-steuerwerk
DE2403669C3 (de) SpezialComputer
EP0057755B1 (de) Mikrorechnersystem zum raschen Auffinden von Kennzeichenblöcken
CH495584A (de) Datenverarbeitungsanlage
DE2164718A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/Ausgabe-Einheiten mittels einer Zentraleinheit
DE1774845A1 (de) Einrichtung zur Adressenpruefung und -modifizierung in einem Datenverarbeitungssystem mit dynamischer Adressenverschiebung