Interruptsystem
Wenn Daten von oder zu einem Speichermedium oder einer Schnittstelle transportiert werden müssen, muß der PC seine aktuelle Arbeit unterbrechen. Obwohl diese Unterbrechungen nur Millionstel Sekunden betragen, ist man bemüht, solche Unterbrechungen auf ein Mindestmaß zu beschränken. So sollen zum Beispiel unnötige Wartepausen, die ein ständiges Überprüfen der Schnittstelle bzw. des Speichermediums erfordern würde, vermieden werden. Um das zu vermeiden, führt der Rechner nur dann Unterbrechungen ein, wenn auch wirklich Bedarf dafür besteht. Deshalb meldet die Controller-Karte dem Hauptprozessor eine Art Unterbrechungs-anforderung, einen Interrupt Request ( IRQ ) wenn ein solcher Bedarf besteht.
Jeder Kommunikationspartner eines PCs bekommt eine eigene Interrupt-Nummer. Für jede dieser Nummern gibt es im PC eine Signalleitung. Hierbei ist zu beachten, dass jedes in Frage kommende Teil eine eigene und freie Interrupt-Nummer hat bzw. bekommt. Gäbe es eine Doppel- belegung, so würden zwei unterschiedliche Erweiterungen oder Systemkomponenten auf die Anforderung reagieren, und es käme zu einer Art Kollision auf dem Datenbus, so dass keine der beiden Komponenten richtig funktionieren würde. Fordert eine Karte oder eine Baugruppe eine Unterbrechung ( Interrupt ) an, so erkennt der Prozessor anhand der Nummer, welche Komponente diese Unterbrechung angefordert hat.
Eine Reihe von Interrupt-Nummern sind im System bereits fest vergeben : Sie werden von unverzichtbaren Funktionsgruppen wie etwa Festplatte, Diskettenlaufwerk, Tastatur usw. genutzt. Andere Nummern sind frei geblieben und dürfen mit Hilfe von Treibern bzw. Jumpern auf den Karten an zusätzlich eingebaute Erweiterungen vergeben werden.
Dabei ist zu beachten :
- 8-Bit-Karten können nur Interupts bis einschließlich Nummer 7 verwenden, aber alle Karten über 8-Bit können Interruptnummern bis einschließlich 15 verwenden
- falls es mehr als eine serielle Schnittstelle gibt, belegt die zusätzliche (COM2 oder COM 4) den Interupt 3
- für eine zweite parallele Schnittstelle (LPT2) ist die Interrupt-Nummer 5 reserviert
Bei einem standartgemäßen PCs sieht die Interruptbelegung folgendermaßen aus :
IRQ 0
System-Timer
IRQ 1
Tastaturpuffer
IRQ 2
Interrupt-Controller
IRQ 3
COM 2 (und ggf. COM 4)
IRQ 4
COM 1 (und ggf. COM 3)
IRQ 5
LPT2
IRQ 6
Diskettencontroller
IRQ 7
LPT1 (und ggf. LPT 3)
IRQ 8
Echtzeituhr
IRQ 9
Umleitung von IRQ 2
IRQ 10
frei
IRQ 11
frei
IRQ 12
frei
IRQ 13
Mathematischer Coprozessor
IRQ 14
Festplatten-Controller
IRQ 15
frei
Die I/O-Basisadresse
Zusätlich zur Interrupt-Nummer muss für jede Erweiterungskarte, die zum Datentransfer ( Input / Output ) eingesetzt wird, eine Basisadresse festgelegt werden. Die Angabe erfolgt wie bei Speicheradressen üblich, in hexadezimaler Schreibweise. Diese Basisadresse gibt dann den Bereich des Arbeitsspeichers an, in dem die Karte mit dem Treiberprogramm die Daten austauscht. Diese I/O-Bereiche befinden sich bereits am Anfang des Hauptspeichers und umfassen meistens nur einige Bytes. Wird eine Adresse doppelt belegt, so kann es wie bei den Interrupt-Nummer zu einem Gerätekonflikt kommen.
Die vom I/O-Bereich verwendeten Adressen sind im MS-DOS-Standart festgeschrieben. Die folgende Tabelle zeigt, an welchen Stellen und in welchen Bereich sich die Adressen normalerweise befinden :
Systeminterne Nutzung
0000h bis 00FFh
Festplatten-Controller
01F0h
Joystick-Port
0200h
Soundkarten (häufig)
0220h
Scanner-Interface, Video-Digitizer (häufig)
0300h
Netzwerkkarten (häufig)
0360h
Grafikkarte
03D0h
Disketten-Controller
03F0h
Die Adressen 03F8h, 02F8h, 03E8h und 02E8h werden von den COM-Ports belegt und die Adressen 0378h, 0278h und 03BCh sind für parallele Schnittstellen reserviert.
Der DMA-Zugriff
Die normale Funktionsweise von I/O-Karten sieht vor, die Daten über die o.g. Basisadressen zu verwalten. Diese Form ist bei korrekter Konfiguration zwar recht störungssicher, birgt aber auch einige Nachteile in sich : Insbesondere, wenn größere Datenmengen verwaltet werden müssen (wie etwa beim CD-ROM), ist diese Methode langsam, da der nur wenige Bytes große I/O-Adressbereich wie ein Flaschenhals wirkt und einen höheren Datendurchsatz verhindert. Deshalb wurde für eine schnelle Datenübertragung von großen Datenmengen in den Arbeitsspeicher ein Verfahren entwickelt, dass als Direct Memory Access (direkter Speicherzugriff) bezeichnet wird. Mit diesem Verfahren werden, wie es der Name schon sagt, die Daten direkt in den Arbeitsspeicher geschrieben. Dort stehen sie zur Weiterverarbeitung direkt zur Verfügung und müssen nicht erst zeitaufwendig durch die Treibersoftware dorthin kopiert werden.
Auch für den DMA-Betrieb gibt es im PC verschiedene Kanäle, die auch als DRQ (DMA Request) bezeichnet werden. Erneut handelt es sich aber hierbei lediglich um Kanäle, über die nur eine Anforderung erfolgt und keine Daten transportiert werden. Einige DMA-Kanäle werden für systeminterne Funktionen benötigt, andere sind hingegen frei :
Die unteren DMA-Nummern, bis einschließlich DMA 4, werden normalerweise vom PC-System für eigene Zwecke benutzt. Die Kanäle 0,1 und 3 können aber trotzdem verwendet werden, wohingegn der 2. Kanal als Disketten-Controller und der 4. Kanal als RAM-Controller voll beansprucht werden. Die Kanäle 5-7 stehen aber zur freien Verfügung.
|