-
Bei Datenverarbeitungsanlagen mit gespeichertem Programm besteht das
Problem, beim Auftreten abnormer Arbeitsbedingungen innerhalb der Maschine selbst
oder auch in den der Maschine angeschlossenen Geräten das gerade laufende Programm
zu unterbrechen und ein Unterprogramm zur Berücksichtigung und Beseitigung dieser
abnormen Arbeitsbedingungen abzufahren. In der deutschen Auslegeschrift
1201586
ist bei einer Datenauswertemaschine dieses Problem und eine
Lösung desselben aufgezeigt.
-
Als abnorme Arbeitsbedingungen sind beispielsweise bei einem kommerziellen
Rechner fehlerhaftes Arbeiten der Datenein- und -ausgabegeräte zu verstehen. Sehr
viel wichtiger ist es, bei einem Prozeßrechner derartige Programmunterbrechungen
vorzusehen. Die Leistungsfähigkeit eines Prozeßrechners steht im direkten Verhältnis
zu der Anzahl der möglichen Programmunterbrechungen. Der Prozeßrechner verkehrt
direkt mit dem Prozeß, und es muß möglich sein, den Prozeß über ein Unterbrechungsprogramm,
das vorrangig ein gerade laufendes Programm unterbricht, so zu beeinflussen, daß
ein Unterbrechungssignal, das z. B. erhöhten Druck oder Temperatur anzeigt, beseitigt
wird. Zur Lösung dieser Aufgabe sind folgende Maßnahmen bekannt: In jedem Fall sind
den Geräten, die ein Unterbrechungssignal erzeugen können, Speicher, sogenannte
Merker, zugeordnet, die bei Auftreten eines Unterbrechungssignals markiert werden.
Zugleich sind alle Unterbrechungssignal-Leitungen zu einer Sammelleitung zusammengefaßt.
Über diese Sammelleitung wird der Rechner bei Vorliegen eines Unterbrechungssignals
veranlaßt, das gerade laufende Programm zu unterbrechen. In einem bekannten Fall
adressiert er sodann alle in Frage kommenden Geräte, bzw. die den Geräten zugeordneten
Merker, nacheinander und erhält von dem oder den die Unterbrechung verursachenden
Geräten auf einer getrennten Leitung ein Signal. Durch das Vorliegen der Adresse,
die dem Gerät, daß das Unterbrechungssignal erzeugt, zugeordnet ist, kann eine entsprechende
Programmverzweigung (Unterprogramm) zur Bedienung dieses Gerätes veranlaßt werden.
Im allgemeinen wird das Unterprogramm zuerst aufgerufen, das dem Gerät mit der höchsten
Priorität zugeordnet ist. Eventuell noch anstehende Unterbrechungssignale, die jedoch
rangniedriger sind, können gemerkt werden.
-
Eine weitere bekannte Lösung sieht vor, das sich der Rechner bei Vorliegen
eines Unterbrechungssignals ein oder mehrere Zustandswörter über den Eingabekanal
hereinholt, wobei in dem Zustandwort für jedes in Frage kommende Gerät eine Binärstelle
vorgesehen ist. Die Geräte, die ein Unterbrechungssignal erzeugen, markieren die
entsprechende Binärstelle im Zustandswort. Es muß sodann intern über das Programm
jeder Markierung die Adresse des entsprechenden Gerätes zugeschrieben werden. Erst
dann kann die Programmverzweigung zur Bedienung des Gerätes mit der höchsten Wertigkeit
erfolgen, bzw. es können andere, ebenfalls ein Unterbrechungssignal erzeugende Geräte
gemerkt werden.
-
Der Nachteil dieser bekannten Lösungen ist darin zu sehen; daß man
einmal an der Peripherie des Rechners die Unterbrechungssignale schaltungsgemäß
zusammenfassen muß und zum anderen im Rechner selbst über das Programm die zusammengefaßten
Signale wiederum auseinanderpflücken muß, um zu erkennen, welchem Gerät das Unterbrechungssignal
zugeordnet ist. Eine solche Arbeitsweise erfordert einmal sehr viel Zeit zum Bearbeiten
eines Unterbrechungssignals und zum anderen relativ viel Programmierung, was gleichbedeutend
ist mit einem hohen Speicherplatzbedarf.
-
Aufgabe der Erfindung ist es, eine Einrichtung zur Unterbrechung eines
Programmablaufes zu schaffen, welche auf einfache und zeitsparende Weise die Programmunterbrechung
durchführt und eine Programmverzweigung ermöglicht.
-
Die Erfindung betrifft eine Einrichtung zur Unterbrechung eines Programmablaufes
bei einer programmgesteuerten, elektronischen Rechenanlage, die mit Geräten in Verkehr
steht, die bei Vorliegen bestimmter
Arbeitszustände ein Programmunterbrechungssignal
erzeugen, wobei die Programmunterbrechungssignale verschiedenrangig bewertet sind.
Die obengenannten, nachteiligen Eigenschaften der bekannten Lösungen werden dadurch
vermieden, daß eine logische Schaltung vorgesehen ist, die für jedes ein Programmunterbrechungssignal
erzeugende Gerät ein spezifisches, das Gerät kennzeichnende Kodewort erzeugt und
die weiterhin so aufgebaut ist, daß sie beim Auftreten mehrerer Programmunterbrechungssignale
zunächst nur das dem ranghöchsten Programmunterbrechungssignal zugeordnete Kodewort
an den Eingabekanal des Rechners weitergibt und daß dieses Kodewort direkt zur Programmverzweigung
benutzt wird.
-
An Hand der Zeichnungen werden zwei Ausführungsbeispiele der Erfindung
im folgenden näher erläutert.
-
F i g. 1 zeigt eine erste Schaltungsanordnung zur Durchführung der
erfinderischen Programmunterbrechung. Jedem Gerät, das ein Unterbrechungssignal
erzeugen kann, ist ein Speicher Slo . . . Sln zugeordnet. Ein Speicher dieser ersten
Speicherreihe wird dann gesetzt, d. h., er gibt an seinem bejahten Ausgang ein L-Signal
aus, wenn das ihm zugeordnete Gerät ein Unterbrechungssignal erzeugt. Die bejahten
Ausgangssignale der Speicher Slo ... Sln werden mit einem Übernahmetakt
T1 in die Speicher S2o ... S2n einer zweiten Speicherreihe übernommen.
Alle bekannten Ausgänge der Speicher S20 ... S2. sind über eine ODER-Stufe
O zusammengefaßt, die demnach ein L-Signal an ihrem Ausgang abgibt, wenn zumindest
einer der Speicher S2o ... S2. gesetzt ist, was wiederum bedingt, daß mindestens
ein Gerät ein Unterbrechungssignal liefert. Durch ein L-Signal am Ausgang der ODER-Stufe
O wird dem Rechner gemeldet, daß ein Unterbrechungssignal vorliegt. Da zugleich
mehrere Geräte ein Unterbrechungssignal erzeugen können, weiß der Rechner zunächst
nur, daß ein Unterbrechungssignal vorliegt. Er weiß nicht, um welche Geräte es sich
handelt bzw. welches Gerät am vorrangigsten bedient werden muß. Um dies zu erkennen
und dann das entsprechende Unterprogramm zur Berücksichtigung und Beseitigung der
Unterbrechungssignale einzublenden, geht das erfinderische Verfahren folgenden Weg:
Es wird extern und programmunabhängig das ranghöchste Unterbrechungssignal ermittelt,
d. h., von n möglichen Unterbrechungssignalen wird nur ein Signal, und zwar das
ranghöchste aussortiert. Dieses im
-Kode anstehende Signal wird in eine mehrstellige Binärzahl umgeschlüsselt, die
sodann im Rechner zur Programmverzweigung, d. h. zum Aussuchen des zugehörigen Unterprogramms
herangezogen werden kann. Im Ausführungsbeispiel nach F i g. 1 geschieht die Prioritätserkennung
der Unterbrechungssignale in der Weise, daß dem ranghöchsten Gerät die Speicher
S1", S2. und dem rangniedrigsten Gerät die Speicher S3., S2o zugeordnet sind. Sodann
ist der bejahte Ausgang des dem ranghöchsten Unterbrechungssignal zugeordneten Speichers
S2. direkt auf den zugeordneten n-ten Eingang der Kodierungsmatrix M geführt. Alle
nachfolgenden bejahten Ausgänge der Speicher S2.-1 . . . S21, S2, sind jeweils
auf einen Eingang von UND-Stufen Un-1 ... U1, U' geführt, deren andere Eingänge
von den negierten Ausgangssignalen der davorliegenden ranghöheren Speicher Un
. . . U2, U1 belegt sind. Die Ausgänge der UND-Stufen Utz-1 ... U1,
Uo sind sodann auf die ihnen fest zugeordneten Eingängen -1 ... 1, 0 der
Kodiermatrix M geführt. Im praktischen Ausführungsbeispiel kann beispielsweise die
Zahl der möglichen Unterbrechungssignale auf 16 beschränkt sein, so daß die Zahl
n von 0 bis 15 läuft. In bekannter Weise können beispielsweise die Ziffern 0 bis
15 über eine Diodenmatrix in eine 4stellige Binärzahl (8-4-2-1) verschlüsselt werden.
Diese 4stellige Binärzahl kann sodann über den Eingabekanal der programmgesteuerten
Eingabe dem Rechner eingegeben und direkt zur Programmverzweigung benutzt werden.
-
Von den Eingangsleitungen 0, 1, 2 ... n, die zur Kodierungsmatrix
M führen, kann auf Grund der Prioritätslogik immer nur eine mit L-Signal belegt
sein. Zusammen mit einem Löschtakt T3 bilden die Eingangsleitungen 0, 1, 2
... fz die beiden Eingänge von UND-Stufen Ulo, U, ... Ul1z,
deren Ausgänge wiederum auf die Löscheingänge der Speicher Slo, S11 . . .
Sln geführt sind, so daß, falls eine der Eingangsleitungen 0, 1, 2 ... n
L-Signal führt und der Löschtakt T3 erscheint, der zugeordnete Speicher Slo, Si,
. . .. Sln gelöscht wird.
-
Mit einem gemeinsamen Löschtakt T4 können alle Speicher S2., S21,
S2. gelöscht werden. Da sich das ranghöchste Unterbrechungssignal zusammen mit dem
Löschtakt T3 immer kurz nachdem es erkannt ist selbst löscht, kann es vorkommen,
daß das zur Behebung des Unterbrechungssignals ra gerade laufende Unterprogramm
von einem rangniedrigen Unterbrechungssignal n - k wiederum unterbrochen
wird usw. Eine solche Arbeitsweise des Rechners ist nach Möglichkeit auszuschließen.
Der Rechner kann zu diesem Zweck ein sogenanntes Maskenwort ausgeben, das nach Erkennen
eines momentan ranghöchsten Unterbrechungssignals alle rangniederen Unterbrechungssignale
abdeckt, d. h. sie nicht zur Wirkung kommen läßt.
-
Dies kann, wie in F i g. 1 gestrichelt angedeutet, durch Zwischenschalten
einer UND-NICHT-Stufe UNMn . . . UNmo zwischen die Speicher S1. . . . Slo
und S2. ... S2o geschehen. Die UND-NICHT-Stufen werden einmal von
den bejahenden Ausgängen der Speicher S1. . . . Slo und zum anderen von den bejahten
Ausgängen der eigens für die Speicherung des Maskenwortes vorgesehenen Speicher
Sm" ... SAro beaufschlagt. Der Einfachheit halber wurden der Maskenspeicher
und die zugeordnete UND-NICHT-Stufe nur einmal eingezeichnet.
-
F i g. 2 zeigt eine weitere vorteilhafte Schaltungsanordnung zur Durchführung
der Programmunterbrechung. Ihre Arbeitsweise soll nachstehend beschrieben werden
Den die Unterbrechungssignale erzeugenden Geräten sind wiederum Speicher Slo
... Sln nachgeschaltet, wobei wiederum der Speicher S1. zur Speicherung des
ranghöchsten und der Speicher Slo zur Speicherung des rangniedrigsten Unterbrechungssignals
dient.
-
Ein Zähler Z zählt von seinem höchsten Zählstand rückwärts, wobei
der höchste Zählstand entsprechend der Zahl der Unterbrechungssignale erzeugenden
Geräte voreinstellbar sein soll. Im dargestellten Beispiel zählt der Zähler binärverschlüsselt
auf Grund seiner vier Stellenwertigkeiten (8-4-2-1) von der Höchstzahl 15 herunter
bis 0. Die 4stellige Binärzahl wird einer Dekodiermatrix M zugeführt, die den Zählstand
im
Kode ausgibt. Die Signale im
-Kode beaufschlagen zusammen mit den bejahten Ausgangssignalen
der
Speicher Sln ... Slo wiederum UND-Stufen Un ... Uo. Die UND-Stufen
werden von dem Zähler Z über die Dekodiermatrix M mit fallender Wertigkeit angezählt.
Liegt außer dem gerade erscheinenden Zähltakt auch ein Unterbrechungssignal an,
so gibt die entsprechende UND-Stufe an ihrem Ausgang ein L-Signal ab. Alle Ausgänge
der UND-Stufen Um ... Uo sind über eine ODER-Stufe O zusammengefaßt,
deren Ausgangssignal den Rechner einmal auf die Programmunterbrechung vorbereitet
und zum anderen den Zähler Z stoppt. Der momentane Zählstand des Zählers in binärverschlüsselter
Form wird sodann über den Eingabekanal der programmgesteuerten Eingabe dem Rechner
eingegeben und dient wiederum direkt zur Programmverzweigung. Der dem registrierten
Unterbrechungssignal zugeordnete Speicher wird wiederum über ein Löschsignal T gelöscht,
das den UND-Stufen Uln ... Ulo zusammen mit den Ausgängen der UND-Stufen
U" . . . Uo zugeführt wird. Die Ausgänge der UND-Stufen Uln ...
Ulo beaufschlagen die Löscheingänge der Speicher Sln ... Slo.
-
Es muß mit einem weiteren Löschsignal LÖ dafür gesorgt werden, daß
der Zähler Z, nachdem ein Unterbrechungssignal erkannt worden ist, wieder in seine
Anfangszählstellung zurückgestellt wird.
-
Gegenüber der zuletzt beschriebenen Schaltungsanordnung besitzt die
zuerst beschriebene Schaltungsanordnung den Vorteil, daß für den Fall, daß ein ranghöheres
Unterbrechungssignal während der Bearbeitung eines rangniederen Unterbrechungssignals
auftritt, dieses auch sofort durchgreifen kann. Bei der zuletzt beschriebenen Schaltungsanordnung
findet ein ranghöheres Unterbrechungssignal erst im nächstfolgenden Zählzyklus seine
Berücksichtigung.
-
Die erfinderische Programmunterbrechung und die zur Durchführung desselben
dienenden Schaltungsanordnungen besitzen den großen Vorteil, daß sie nachträglich
an jeden Rechner anzufügen sind, ohne daß der Zentralteil des Rechners verändert
werden muß. Ein weiterer wesentlicher Vorteil der erfinderischen Lösung liegt in
der Ersparnis von Programmierungsarbeit und damit an Speicherplatz und Zeit beim
Aussuchen des oder der das Programm unterbrechenden Signale. Gegenüber den bekannten
Lösungen ergibt sich dadurch eine wesentliche Erhöhung der Verkehrsleistung an den
Unterbrechungseingängen.