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 ZentraleinheitInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling 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)
- 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/0979iseinen .echten Einheitscode zu erhalten, unde) 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ätigkeit2098 30/09 79zu 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 der209830/0979tsMatrix 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/0979au8 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/0979die 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/0979Leerseite
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)
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 |
US4339793A (en) * | 1976-12-27 | 1982-07-13 | International Business Machines Corporation | Function integrated, shared ALU processor apparatus and method |
US4181934A (en) * | 1976-12-27 | 1980-01-01 | International Business Machines Corporation | Microprocessor architecture with integrated interrupts and cycle steals prioritized channel |
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 |
GB2192739B (en) * | 1986-07-18 | 1991-02-13 | Intel Corp | Selective input/output port protection |
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 |
US7822993B2 (en) * | 2004-08-27 | 2010-10-26 | Microsoft Corporation | System and method for using address bits to affect encryption |
US7356668B2 (en) * | 2004-08-27 | 2008-04-08 | Microsoft Corporation | System and method for using address bits to form an index into secure memory |
US7653802B2 (en) * | 2004-08-27 | 2010-01-26 | Microsoft Corporation | System and method for using address lines to control memory usage |
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 |
US7734926B2 (en) * | 2004-08-27 | 2010-06-08 | Microsoft Corporation | System and method for applying security to memory reads and writes |
US20120179847A1 (en) * | 2011-01-12 | 2012-07-12 | Standard Microsystems Corporation | Method and System for Implementing Bus Operations with Precise Timing |
CN104205792B (zh) * | 2012-09-28 | 2016-08-24 | 株式会社久保田 | 作业机的数据通信系统 |
US10814811B2 (en) * | 2017-09-30 | 2020-10-27 | Physician Electronic Networks, L.L.C. | Collision detection system |
Family Cites Families (5)
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 |
-
1970
- 1970-12-30 US US102685A patent/US3668651A/en not_active Expired - Lifetime
-
1971
- 1971-11-16 FR FR7141962A patent/FR2124023A5/fr not_active Expired
- 1971-12-16 GB GB5843271A patent/GB1363687A/en not_active Expired
- 1971-12-27 DE DE19712164793 patent/DE2164793A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
FR2124023A5 (de) | 1972-09-15 |
US3668651A (en) | 1972-06-06 |
GB1363687A (en) | 1974-08-14 |
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 |