|
Programmierter E/A-Transfer
Einfache E/A-Schnittstellen für programmierten E/A-Transfer
bestehen wesentlich aus (siehe Umdruck): - E/A-Datenregister (EADR)
- E/A-Steuer- und Statusregister (EASR)
- Adreß- und Steuerlogik
Sie ist normalerweise an den Systembus der CPU angeschlossen. Das EADR dient zur Zwischenspeicherung des zu übertragenden Datenwerts (zeitliche Anpassung). Neben den zu übertragenden Daten braucht die Schnittstelle Signale zur richtigen Abwicklung des Datentransfers: - Statussignale von der Peripherie
z. B. Anzeige, dass das Peripheriegerät einen neuen Wert ins EADR geliefert hat oder bereit ist, den nächsten Wert zu übernehmen. - Steuersignale zur Peripherie
z. B. Anzeige, dass der vorhergehende Datenwert gelesen wurde und die Peripherie einen neuen Wert ins EADR einschreiben kann. - Steuersignale zur Schnittstelle selbst
z. B. Signale zum Einstellen bestimmter Betriebsmodi bei programmierbaren Schnittstellen. Diese Signale werden - soweit sie für längere Zeit zur Verfügung stehen müssen - im EASR gespeichert. Das EASR kann auch aus separaten Registern für Status- und Steuersignale bestehen. Normalerweise verfügt ein Computer
über mehr als eine E/A-Schnittstellen Adressierung
erforderlich. Für die Adressierung der E/A-Schnittstellen gibt
es zwei Möglichkeiten:
- Getrennte Adressierung(Isolated I/O, I/O-Mapped I/O)
Der Rechner verfügt über spezielle E/A-Befehle und
einen eigenen E/A-Adreßraum. Die E/A-Adresse wird oft auch
Port genannt. Sie wird entweder auf separaten Adressleitungen zu
den Schnittstellen geführt oder über den normalen
Adreßbus geleitet. In diesem Fall gibt es (eine)
zusätzliche Steuerleitung(en) zur Unterscheidung zwischen E/A-
und Speicheradressen. Da i.a. der E/A-Adreßraum kleiner als
der Speicheradreßraum ist, wird nur ein Teil der
A-Bus-Leitungen verwendet (z.B. 8080/8085: 8 Bit, 80386: 10 Bit).
- Speicheradressierung(Memory Mapped I/O)
Der E/A-Adreßraum wird in den Speicher-Adreßraum
abgebildet, d.h. bestimmte Adressen stellen keine Speicheradressen,
sondern E/A-Adressen dar geringfügige Einschränkung
des Speicheradreßraums. Die E/A-Adressen werden von der CPU
genauso behandelt und angesprochen, wie Speicheradressen.
E/A-Operationen werden mit den normalen Transportbefehlen
durchgeführt (z. B. Load, Store) Einsparung
zusätzlichen Aufwandes für Adreß-/Steuerleitungen
und für spezielle E/A-Befehle.
Im allgemeinen erhalten EADR und EASR eine eigene, separate Adresse. Beide
sind am Datenbus angeschlossen. Steuersignale werden wie Datenwerte
ins EASR geschrieben, Statussignale werden wie Datenworte aus dem
EASR gelesen - die Verarbeitung muss in der CPU durch geeignete
Befehle erfolgen (z.B. log. Verknüpfung).
Programmgesteuerter programmierter Transfer
Die E/A-Befehlsfolge steht innerhalb eines Programms und wird im
Rahmen der normalen Programmausführung abgearbeitet. Die
gesamte Initiative zur E/A geht vom Programm aus. Zeigt der Inhalt
des EASR an, dass keine neuen Daten im EADR stehen, muss das
Programm erneut das EASR abfragen Warteschleife,
"Polling". Dabei können zwei "Randbereiche" Probleme verursachen:
- Die Zeit, die das Programm braucht, um einen Eingabewert
zu bearbeiten ist manchmal (oder sogar immer) länger als
die Zeitspanne innerhalb der sich das Eingangssignal ändern
kann es werden Ereignisse "übersehen".
- Bei "langsamen" Peripheriegeräten ist der
Computer während der Übertragung eines Datenblocks die
meiste Zeit mit Abfragen bschäftigt, die in den meisten
Fällen negativ ausfallen.
Unterbrechungsgesteuerter programmierter Transfer
Die E/A-Befehlsfolge wird durch einen von der E/A-Schnittstelle
ausgelösten Interrupt gestartet. Der Interrupt wird von der
Schnittstelle abgesetzt, wenn ein Datenwort empfangen wurde und im
EADR steht (bzw. wenn ein Datenwort aus dem EADR abgeholt wurde).
Die CPU braucht nicht in einer Programmschleife zu warten, sondern
kann in der Zwischenzeit ein anderes Programm bearbeiten, das durch
den Interrupt kurzzeitig unterbrochen wird.
Der interruptgesteuerte Transfer gestattet zudem die
quasi-simultane Bedienung mehrerer langsamer Schnittstellen. Zur
Realisierung muß eine Interrupt-Leitung von der E/A-Schnittstelle
(EASR) zum Unterbrechungswerk der CPU vorhanden sein.
Vorteil des programmierten Transfers: Sehr einfache Schnittstellen,
die übersichtlich und leicht zu verwenden sind.
Nachteil des programmierten Transfers: Für den
Transfer jedes einzelnen Datenworts wird die CPU benötigt.
Diese muss dabei relativ viel Verwaltungsaufwand leisten
(Laden/lesen EASR, Interrupt-Behandlung) die maximale
Datenrate ist sehr begrenzt.
|
|
|