.q28555 Anzeige
.q28555 .q28555

Wissen: IRQs im Überblick

Meistens gibt es nur 16 und jedes Gerät will einen der kostbaren IRQs. Wenn sich dann noch zwei Geräte einen teilen müssen gibt es fast immer Probleme, aber warum eigentlich? Was sind IRQs?

 

 

 

 

 

Wozu werden sie benötigt? All diesen Fragen wollen wir im folgenden Report auf den Grund gehen. Beginnen wir mit der Erklärung, was IRQs eigentlich sind, so steht am Anfang eine Anforderung an den Mikroprozessor, welche von einem IRQ ausgeht. Daher kommt auch der Name des IRQs, nämlich Interrupt Request, zu deutsch Unterbrechungsanforderung. Jedes Gerät am Computer benötigt einen IRQ, von Tastatur über die seriellen Schnittstellen bis hin zu den PCI-Slots. Hat nun der Prozessor die Anforderung erhalten unterbricht dieser die momentane Rechenarbeit und packt diese in einen speziellen Speicher, den Stack und widmet sich dem eingegangenen Signal. Bei nur einem Signal hört sich das noch relativ einfach an, aber was passiert wenn vier oder fünf  dieser nahezu gleichzeitig Unterbrechungsanforderungen stellen?

Eigentlich nichts, wenn die Kontrolleinheit der IRQs, der PIC (Programmable Interrupt Controller), ordnungsgemäß arbeitet. Der PIC wurde im Jahre 1981 erstmals von IBM eingeführt und auf den Namen PIC-Typ 8259 getauft, welcher damals bis zu acht IRQs zur Verfügung stellen konnte. Seit 1984 wird auf den meisten Platinen der sogenannte AT-PIC verwandt, dabei handelt es sich um zwei in Reihe geschaltete PICs vom Typ t8259. Dadurch ist es heutzutage möglich bis zu 16 IRQs (eigentlich noch mehr, aber dazu später mehr) zu verwenden, wobei einer allerdings für die Verbindung von PIC zu PIC belegt ist.

Wie der PIC arbeitet wollen wir am folgenden Beispiel erklären: Um den Einstieg einfach zu halten gehen wir erst mal nur von einem Gerät aus, welches eine Anforderung stellt und einem Prozessor mit nur einem Unterbrechungseingang. So fordert Gerät 1 eine Unterbrechung an, welche der Prozessor auch unverzüglich gewähren kann, da keine anderen Geräte im Spiel sind, welche ebenfalls Anforderungen stellen könnten oder von denen besagte Anfrage vielleicht sogar ausging. Kommen nun Gerät 2 und 3, beide müssen sich zudem noch eine IRQ-Leitung teilen, hinzu wird das ganze um einiges komplizierter.

So übermittelt der PIC die eingegangene Unterbrechungsanforderung an den Prozessor, welcher nun jedes Gerät des IRQ-Kanals nacheinander abfragt, um festzustellen von welchem Gerät die Anforderung ausging. Das wiederum ist nur über den Treiber des besagten Gerätes möglich, was sich wie folgt verhält: Der PIC sendet zuerst die Speicheraddresse von Gerät 2 über den Datenbus an die CPU. Die CPU merkt sich die Speicheraddresse und fragt zudem den Treiber, ob das Gerät eine Anforderung gestellt hat. Erst wenn der Treiber das bestätigt kann Gerät 2 arbeiten, hat Gerät 2 jedoch keine Anforderung gestellt geht das ganze von neuem mit Gerät 3 los.

An und für sich ist IRQ-Sharing kein Problem, auch in unserem Beispiel nicht – allerdings nur, wenn Gerät 2 wesentlich öfter Unterbrechungsanforderungen an die CPU stellt als Gerät 3. Denn der Vorgang wird viel zeitintensiver und rechaufwendiger wenn der Speicher zweimal adressiert werden muss. In folgendem Schema wollen wir Ihnen diesen Vorgang etwas näher bringen.

Schritt 1: Gerät 3 sendet eine Anforderung nach Rechenzeit an den PIC. Der PIC sucht sich in einer speziellen Tabelle die Speicheraddresse des Treibers.

Schritt 2: Der PIC leitet die Anforderung an die CPU weiter.

Schritt 3: Der PIC leitet die Speicheraddresse über den Datenbus an die CPU weiter.

Schritt 4: Die CPU unterbricht unverzüglich die aktuelle Arbeit, sichert diese und legt sie auf dem sogenannten Stack ab. Anschließend wird die Speicheraddresse aus dem Detenbus entgegengenommen.

Schritt 5: Die CPU sucht nun im SPeicher den Treiber des entsprechenden Gerätes.

Schritt 6: Der Treiber nimmt im Speicher die Unterbrechungsanforderung entgegen.

Schritt 7: Nun teilt der Treiber dem Gerät die Bestätigung mit, welches erst jetzt arbeiten kann.

Die Verteilung der IRQ erfolgt nach einem ungeschriebenen Gesetz, so ist zum Beispiel die Tastatur immer IRQ 1, der Taktgeber IRQ 0 und der PS/2-Anschluss mit der Nummer 12.

Sollte es doch einmal zur IRQ-Konflikten kommen, also hackt zum Beispiel der Ton bei einer DVD oder beim gemütlichen Abend mit der TV-Karte kommt das Bild nur in Stücken, könnte es helfen einfach die Karten geduldig umzustecken. Wenn dieser Schritt dann noch nicht hilft bleibt als letzte Möglichkeit das abschalten des ACPI-Modus samt anschließender Neuinstallation.

Andere Fehlerquellen gibt es zu Unmengen: So kann schon die Verdrahtung auf der Platine der IRQ Leitungen zum PIC sehr fehleranfällig sein. Bei moderneren Platinen wird mittlerweile ein sogenannter I/O-APIC verwandt, dieser fügt den Standard-Leitungen (0-15) weitere acht hinzu. Trotz der zusätzlichen IRQs ist keine Besserung in Sicht, denn trotzdem stehen dank technischer Schwierigkeiten nur vier IRQs für PCI-Geräte zur Verfügung. Dazu zählen aber nicht nur Steckkarten wie Netzwerkarten usw., sondern auch alle extern an den PCI-Bus angeschlossenen Geräte. So steht in den meisten Fällen nur ein IRQ für echtzeitkritische PCI-Geräte zur Verfügung.

In den letzten Monaten gab es immer wieder Versuche die Lage weiter zu bessern, so zum Beispiel mit VIAs Southbridge VT8325, oft verwendet auf KT400-Boards. Die VT8325 unterstützt bis zu acht PCI-IRQs, von denen allerdings wieder nur vier für den externen PCI-Bus zur Verfügung stehen. Die restlichen vier IRQs stehen dabei nur für interne Chipsatzfunktionen frei, also Sound-Interfaces (z.B. AC97) oder USB-Anschlüsse. Falls nun aber ein Platinenhersteller externe Soundchips auf der Platine (z.B. C-Media) wird ein IRQ der ersten vier beansprucht. Zum Abschluss wollen wir Ihnen noch einmal die Standardverteilung der IRQs in einer Tabelle zeigen.

 

IRQs im Überblick
IRQ 0 Systemtaktgeber
IRQ 1 Tastatur
IRQ 2 Zweiter PIC
IRQ 3 Zweite serielle Schnittstelle
IRQ 4 Erste serielle Schnittstelle
IRQ 5 FREI/Zweite parallele Schnittstelle
IRQ 6 Floppydrive
IRQ 7 Erste parallele Schnittstelle
IRQ 8 Systemuhr
IRQ 9 FREI
IRQ 10 FREI
IRQ 11 FREI
IRQ 12 PS/2-Anschluss
IRQ 13 Numerischer CO-Prozessor
IRQ 14 Primärer IDE-Kanal
IRQ 15 Sekundärer IDE-Kanal
Selbst wenn keine Erweiterungskarten verwendet werden sind nur vier IRQs frei.

Anzeige:

Mit * markierte Links sind Affiliate-Links. Mit dem Kauf über diesen Link erhalten wir eine Verkaufsprovision, ohne dass du mehr bezahlst.

standard_avatar_apc Redaktion

Aus Gründen der besseren Lesbarkeit wird auf die gleichzeitige Verwendung männlicher, weiblicher und diverser Sprachformen (m/w/d) verzichtet. Alle Personenbezeichnungen gelten gleichermaßen für alle Geschlechter.

^