 |
Die Interruptstrukturen aller peripheren Systemelemente beinhalten eine
automatisch wirkende Logik zur Auswahl der höchstwertigen Interruptanforderung.
Hierzu werden sämtliche interruptfähige Peripherieelemente mit Hilfe ihrer IEI-
und IEO-Anschlüsse in Reihe geschaltet. In dieser Kaskadierungskette (daisy
chain) erhält das vorderste Element H-Pegel am IEI-Eingang. Dieser Pegel setzt
sich in der gesamten Kette fort, vorausgesetzt, dass kein peripheres Gerät eine
Interruptforderung aus der Peripherie empfängt. Sinngemäß besteht die
Kaskadierungskette auch intern in den peripheren Systemelementen, indem die
einzelnen Kanäle über eine IEI-IEO-Linie in Reihe geschaltet sind. Die Priorität
der peripheren Systemelemente bzw. deren Kanäle ist in der IEI-IEO-Kette somit
durch die Lage dieser Elemente festgelegt. Weiter vorn liegende Geräte haben
immer die höhere Anmeldepriorität. Der höchstwertige Kanal (Port A bei PIO und
SIO, Kanal 0 des CTC) des ersten Elements in der Kette kann durch eine
freigegebene Interruptanforderung die gesamte Prioritätenkette blockieren, da
sein IEI-Eingang immer an H-Potential liegt.
Die Kaskadierungskette wirkt H-aktiv. Somit kann ein peripheres Systemelement,
das am IEI-Eingang einen H-Pegel empfängt, eine anstehende Interruptforderung
bei gesetztem Interruptfreigabeflipflop des Elements an die CPU weiterleiten. Es
aktiviert seinen INT-Ausgang. Der IEO-Ausgang wird gleichzeitig inaktiv und
bewirkt das Durchschleifen des L-Pegels in der nachfolgenden Kette. Dieser
L-Pegel bewirkt nun bei den nachfolgenden Peripherieelementen, dass eine
anstehende Interruptforderung nicht zum Prozessor weitergeleitet wird.
Nichtpriorisierte Elemente können somit Programmabläufe (ISR) von höherwertigen
Peripherieelementen nicht unterbrechen. Die Interruptquittierungslogik der
peripheren Systemelemente wirkt abhängig vom Interruptanmelde- und
Interruptquittierungszustand des jeweiligen Geräts. Ein interruptanmeldendes
niederwertigeres Element wird durch die Interruptanforderung eines
höherwertigeren Peripherieelements veranlasst, seine Anmeldung zurückzunehmen.
Die Interruptanmeldung des in der Prioritätenkette weiter vorn liegenden Geräts
wird bei Interruptfreigabe des Prozessors wirksam, die CPU schiebt die
zugehörige ISR in den Programmablauf ein. Nach Rückkehr des Prozessors aus
dieser Routine in das zuvor aktuelle Programmniveau erfolgt dann die erneute
Anmeldung des niederwertigeren (zwischengespeicherten) Geräteinterrupts, da der
Programmbearbeitungszustand des priorisierten Elements rückgesetzt wurde. Das
niederwertigere Peripherieelement empfängt H-Pegel am Freigabeeingang IEI.
Andererseits kann ein höherwertigeres peripheres Systemelement bei einer
quittierten Interruptanmeldung eines niederwertigeren seine Interruptanmeldung
an die CPU weitergeben und die Interruptprioritätenkette durch Durchschleifen
eines L-Signals blockieren. Diese höherpriorisierte Interruptanmeldung kann aber
nur wirksam werden, wenn in der bearbeiteten ISR die Interruptfreigabe des
Prozessors vorgenommen wurde (durch Befehl EI). In diesem Fall wird die ISR des
höherwertigeren Peripherieelements in den Programmablauf eingeschoben. Es
erfolgt eine Verschachtelung der Interruptbearbeitungsroutinen. Nach Beendigung
dieser (höherwertigen) ISR schließt sich die weitere Bearbeitung der
unterbrochenen niederwertigeren Bearbeitungsroutine an. Anderenfalls aber
(prozessorseitige Interruptsperrung in der ISR des niederwertigeren Geräts) wird
zuerst die niederwertigere Serviceroutine beendet. Nach Rückkehr in die zuvor
unterbrochene Programmabarbeitung kann bei dortiger Interruptfreigabe des
Prozessors die nach wie vor anstehende Interruptanmeldung des höherwertigeren
peripheren Elements wirksam werden. Damit in diesem Fall das niederwertigere
Peripherieelement dennoch beim Rückkehrbefehl RETI als aktives,
interruptbearbeitendes Element ermittelt werden kann, müssen höherpriorisierte
Peripherieelemente mit nichtquittierten Interruptanmeldungen ihren IEO-Ausgang
während der Ausführung des RETI-Befehls (Befehlsbytefolge EDH, 4DH) freigeben.
Die Interruptkaskadierungskette dient also zur systemweiten Auswahl des jeweils
höchstwertigen interruptanfordernden peripheren Systemelements. Hierbei ist
dieses höchstwertige Element während der Interruptquittierung des Prozessors
durch die Signalverhältnisse am IEI-Eingang (H-Pegel) und am IEO-Ausgang
(L-Pegel) gekennzeichnet. Von diesen Pegelverhältnissen wird im
Interruptquittierungszyklus das Setzen des Interruptbearbeitungsflipflops des
Systeinelements abgeleitet sowie die Aussendung des Interruptvektors ausgelöst.
Bei der Rückkehr aus der Interruptbearbeitungsroutine wird mit Hilfe der
Kaskadierungskette das höchstwertige in der Interruptbearbeitung befindliehe (Interruptbearbeitungsflipflop
gesetzt) Peripherieelement ermittelt. Dieses Element ist während der Abarbeitung
des RETI-Befehls durch H-Pegel am IEI-Eingang und L-Pegel am IEO-Ausgang
gekennzeichnet. Es kann somit seinen Bearbeitungszustand zurücksetzen und die
nachfolgende IEI-IEO-Linie freigeben.
In Mikrorechnern mit vielen peripheren Systemelementen (mehr als vier) treten
beim Einschwingvorgang der Kaskadierungskette im Interruptquittierungszyklus
Zeitprobleme auf. Für das Einschwingen der Kette steht die Zeit zwischen dem
Aktivwerden des M1-Signals und dem Aktivwerden des
IORQ-Signals zur Verfügung.
Die Zeit zwischen dem Aktivwerden beträgt im System UB880 bei der maximalen
Systemtaktfrequenz (fc = 2,5 MHz) und unter Worst-case-Bedingungen tn = 870 ns
(mögliche Verzögerung durch Steuerbustreiber nicht berücksichtigt). Demgegenüber
tritt an einem Peripherieelement, das interruptmäßig passiv ist (keine
Anmeldung, keine Bearbeitung), beim Durchschleifen eines L-Pegels von IEI nach
IEO eine Verzögerungszeit von tDL(I0) = 190 ns auf. Beim interruptanmeldenden
peripheren Element kann weiterhin das Rücksetzen seines
Interruptfreigabeausgangs IEO gegenüber dem Aktivwerden des M1-Signals um
maximal tDM(IO) = 300 ns verzögert werden, wenn die Interruptforderung gerade
kurz vor Eintreffen des M1-Signals im Element ausgelöst wurde. Des weiteren ist
eine Voreinstellzeit am Eingang IEI des letzten peripheren Systemelements in der
Kette vor Eintreffen des aktivierten IORQ-Signals zu berücksichtigen, damit eine
evtl. anliegende niederwertigere Interruptforderung dieses Elements noch
gesperrt werden kann. Diese Voreinstellzeit beträgt ts (IEI) = 140 ns. Die
wirksame Zeit für den Einschwingvorgang an den passiven Peripherieelementen
beträgt deshalb nur t = 430 ns. In dieser Zeit muss das Durchschleifen des
L-Pegels durch n - 2 Elemente (n Anzahl aller in der Kette liegenden
Peripherieelemente des Mikrorechners) gesichert werden. Für große Mikrorechner
muss deshalb eine Hardwarelösung geschaffen werden, die ein korrektes
Einschwingen der IEI-IEO-Linie gewährleistet. Prinzipiell kann hierbei entweder
die wirksame Zeit für den Einschwingvorgang vergrößert werden, oder die
Verzögerungszeit der peripheren Elemente muss verringert werden. Im Bild 4.2.9
ist die Logik eines WAIT-Generators dargestellt, der im M1-Maschinenzyklus der
Interruptquittierung durch Hardwareprogrammierung (Brücken) bis zu acht
WAIT-Zustände erzeugt. Gleichzeitig wird durch Torung ein IORQ-Signal für die
Peripherie gebildet, das gegenüber dem CPU-Signal IORQ um tD = 400 bis 3200 ns
(bei Systemtaktfrequenz fc = 2,5 MHz) verzögert wird. Die Zeit für den
Einschwingvorgang der Kaskadierungskette kann somit entsprechend der vorhandenen
Anzahl von Peripheriebauelementen erweitert werden. In Tafel 4.2.1 ist der
Zusammenhang zwischen Lage der Brücken, Zahl der hierdurch erzeugten
WAIT-Zustände und Anzahl der einzusetzenden interruptfähigen Peripherieelemente
ausgewiesen. Der Vorteil der im Bild 4.2.9 dargestellten Hardwaremodifikation
besteht darin, dass der notwendige Schaltungsaufwand nur einmal, üblicherweise
auf der CPU-Leiterkarte eines Rechners, für das gesamte System erforderlich ist.
Die Einfügung der WAIT-Zustände beeinflusst die Leistungsfähigkeit des
Mikrorechners selbst bei vielen peripheren Systemelementen und bei vielen
Interruptreaktionen i. allg. nur wenig. Bild 4.2.10 zeigt das Zeitverhalten des
angepassten M1-Zyklus der Interruptquittierung.
Die alternative Lösung für die Absicherung des Einschwingvorgangs der
Interruptkaskadierungskette besteht in der Verminderung der Durchlaufzeiten des
L-Pegels bei den peripheren Elementen. Da die Kette H-aktiv wirkt, muss zur
„vorausschauenden" Weitergabe des L-Pegels die AND-Verknüpfung zwischen den IEI-
und IEO-Linien angewendet werden. Im Bild 4.2.11 ist diese einfachste
Möglichkeit der Realisierung einer Umgehungslogik (look ahead logic)
dargestellt. Die Verzögerungszeit beim Durchschleifen des L-Pegels wird nur noch
durch die Durchlaufzeiten der Gatter bestimmt und beträgt tD = 30 ns
(1 Gatter D 100, 1 Inverter D204) bzw. tD = 35 ns (2 Gatter D 100).
Bei der Systemtaktfrequenz f, = 2,5 MHz können also hierbei ohne Anwendung
weiterer Maßnahmen bis zu 16 Peripherieelemente eingesetzt werden (1/4 bei
Verwendung von '/2 D 100). Im Bild 4.2.12 ist eine etwas veränderte
Schaltungsanordnung der Umgehungslogik angegeben, die den Einsatz von maximal 29
Systemelementen erlaubt. Die Schaltungsverzögerung wird durch die
Zusammenfassung der Elemente in Vierergruppen verringert.
Bei der praktischen Realisierung eines Mikrorechners bzw. eines -rechnersystems
ist unter diesen Gesichtspunkten abzuschätzen, wie viele periphere Elemente
eingesetzt werden müssen. Hierbei ist zu berücksichtigen, dass z. B. die
Zusammenfassung der Elemente in Vierergruppen meist nicht sinnvoll ist. Im
Vordergrund steht die funktionelle Zusammenfassung der Elemente, da wegen der
Verdrahtungsstruktur der Mikrorechner (Busstruktur; einheitliche gedruckte
Rückseitenverdrahtung od. dgl.) für Steckeinheiten je ein IEI- und IEO-Anschluss
vorteilhaft ist. Der Einsatz einer kombinierten Hardwarelösung ist deshalb beim
Aufbau sehr großer Mikrorechner ebenfalls denkbar. |