PC richtig konfigurieren: Interrupts
Jeder
redet drüber, aber keiner weiß, was dahinter steckt.
1. Vorwort
Die "Heilige Kuh" im Bereich der PC-Ressourcen sind die sogenannten Unterbrecher, zu gut englisch "Interrupt" oder auch nur kurz IRQ (Interrupt ReQuest) genannt. Während man sich unter aktuellen Betriebssystemen kaum noch mit sonstigen Ressourcen wie DMA-Kanälen, I/O-Ports, RAM- oder ROM-Adressen herumschlagen muss (es würde nebenbei bemerkt auch keinen Performance-Vorteil bringen wenn man's täte, aber alte DOS-Hasen werden sich erinnern), ist die Sache mit den IRQs nach wie vor brisant. Fast jeder hat schon mal gehört, dass sich zwei Karten keinen Interrupt "teilen" sollen; wie man so etwas beseitigt, weiß schon kaum jemand, und mehr steht auch in den einschlägigen PC-Zeitschriften nicht drin. Hier also eine kleine Abhandlung zum Thema - danach ist der geschätzte Leser hoffentlich schlauer.
2. Interrupt - was das denn?
Als Anfang der 80'er Jahre der erste PC entwickelt wurde, bestand der sogenannte "Chipsatz" noch aus einer ganzen Reihe von kleinen schwarzen Käfern, von denen jeder seine bestimmte Funktion hatte - eben ein "Satz" von Computerchips - daher auch der Name. Heute besteht ein solcher Chipsatz meist nur noch aus einem oder zwei Bausteinen, damals waren es viel mehr. Nach wie vor enthält so ein Chipsatz als wichtigste Komponenten sogenannte "Controller". Früher waren das einzelne Chips, heute sind sie eben alle integriert. Einer dieser Controller war und ist der "Interrupt-Controller". Eigentlich sind es seit 286'er-Zeiten sogar zwei davon, aber das würde hier zu weit führen. Das Prinzip versteht man am Besten anhand eines Beispiels.
3. Beispiel
Mal angenommen es gäbe keine Interrupts, und so ein PC wird ja nun mal vorwiegend mit der Tastatur bedient. Dann müsste der Prozessor regelmäßig, zum Beispiel jede tausendstel Sekunde, bei der Tastatur nachfragen "Hat bei dir jemand was gedrückt?", und die Tastatur antwortet in 999 Prozent aller Fälle mit "nö kannst weitermachen". Wenig später fragt der Prozessor dann wieder, und die Antwort ist wieder "nö kannst weitermachen", und wieder, und wieder....
Es ist wohl einleuchtend: Wäre die Sache so geregelt, dann würde unsere CPU die meiste Zeit damit verbringen, Geräte abzufragen, anstatt sich z. B. um Audio-Berechnungen zu kümmern. Man nennt dieses Verfahren auf gut englisch auch "Polling", und es ist unter Performance-Gesichtspunkten betrachtet nicht besonders toll. Daher arbeitet auch nur eine einzige Standard-Komponente mit Polling, und das ist der Druckerport (obwohl er meist einen IRQ zugewiesen hat, nein das muss jetzt keiner verstehen, glaubt mir einfach es ist so). Nur so nebenbei: Die Grafikkarte braucht eigentlich auch keinen IRQ, es sei denn, man benutzt das Power-Management oder 3D-Funktionen.
4. Die Lösung des Problems
Zurück zu unserer Tastatur: Sie kriegt jetzt einen IRQ zugewiesen. Immer wenn eine Taste gedrückt wird, meldet sie über den Interrupt-Controller an den Prozessor: "Stop, hier gibt's Arbeit". Dann unterbricht die CPU ihre momentane Tätigkeit, kümmert sich sofort um die Eingabe, und wenn sie fertig ist, macht sie mit dem weiter, was sie zuvor angefangen hatte. Auf diese Art und Weise ist sichergestellt, dass jeder Tastendruck sofort verarbeitet wird, aber der Prozessor keine Zeit verschwendet, denn solange ich keine Taste drücke, macht die CPU völlig andere Dinge und kümmert sich nicht um die Tastatur - es wird eben kein Interrupt ausgelöst.
Also nochmal in Kurzform: Hat eine Komponente einen IRQ zugewiesen, dann kann sie den Prozessor dazu bringen, dass er sich sofort um sie kümmert wenn's nötig ist, auch wenn der vorher was völlig anderes gemacht hat.
5. Standard-Interrupts
Jeder PC hat genau 15 Interrupts zur Verfügung. Davon sind aber die meisten bereits mit bestimmten Komponenten untrennbar verbunden. Weil das so ist, muss man eben wissen, welche davon nicht verwendbar sind (gesperrt), welche verwendbar sind sofern man bestimmte Geräte deaktiviert (bedingt frei), und welche grundsätzlich frei verwendbar sind (frei). Daher hier eine Tabelle mit den Interrupt-Nummern und ihrer Verwendung im PC.
| IRQ Nr. | Beschreibung | gesperrt | bedingt frei | frei |
| 0 | Timer | X | ||
| 1 | Tastatur | X | ||
| 3 | COM 2 bzw. COM 4 (serielle Schnittstellen) | X | ||
| 4 | COM 1 bzw. COM 3 (serielle Schnittstellen) | X | ||
| 5 | *FREI* | X | ||
| 6 | Diskettenlaufwerk | X | ||
| 7 | LPT 1 (Druckerport, parallele Schnittstelle) | X | ||
| 8 | Echtzeituhr | X | ||
| 9 | *FREI* | X | ||
| 10 | *FREI* | X | ||
| 11 | *FREI* | X | ||
| 12 | PS/2 - Mausanschluss | X | ||
| 13 | Co-Prozessor | X | ||
| 14 | Festplattencontroller (IDE 1) | X | ||
| 15 | Festplattencontroller (IDE 2) | X |
Hieraus lässt sich eine Faustregel ableiten: Wenn einem Benutzer die IRQs ausgehen, dann kann er serielle Schnittstellen, Druckerport, PS/2-Maus oder die beiden IDE-Controller im BIOS deaktivieren, sofern er sie nicht braucht - als Ergebnis erhält man einen freien, und damit verwendbaren IRQ. Hier zeigt sich auch bereits, dass diese Situation mit "Zuwenig IRQs" gar nicht so schnell eintreten kann - wer braucht schon beide seriellen Schnittstellen UND den PS/2-Mausanschluss auf einmal? Genau.
6. Ja aber.... und die Nummer 2?
Bestimmt hat der geneigte Leser oben aufgepasst, und vermisst den IRQ 2 - der taucht in der Tabelle nämlich nicht auf. Man könnte entweder sagen, es gibt ihn nicht, oder auch die IRQs 9 und 2 sind ein und derselbe - wie auch immer, das soll uns nicht kümmern. Fest steht: Den IRQ 2 darf man niemals gleichzeitig mit dem IRQ 9 belegen, daher stellen wir uns einfach mal vor, dass es ihn gar nicht gibt. Übrigens macht das Windows genauso, was gar nicht so dumm ist, auch wenn es die Realität nicht genau wiedergibt. Nur bis ich die erklärt hätte...
7. PCI-Karten und IRQs
Heute schlägt sich kaum noch jemand mit den alten ISA-Karten herum (die wenigsten neuen PCs haben überhaupt noch Steckplätze dafür). Wenn doch, dann gilt als Faustregel: Die brauchen ihren eigenen IRQ, den auch sonst niemand haben darf. Kleine Egoisten also. Fertig.
Die allermeisten Karten heutzutage sind entweder für den PCI-Bus bestimmt (das sind die weißen Steckplätze innen im PC) oder für den AGP-Bus (nur ein Steckplatz für die Grafikkarte, mit der PCI-Geschichte in einem Topf zu sehen). Dazu zählen auch die internen Komponenten USB-Controller und OnBoard-Sound, jeweils sofern vorhanden.
In einem normalen PC könnte das also was die PCI-Komponenten angeht, so aussehen - die Nummern dienen nur der Übersicht und sind ansonsten belanglos:
| Komponente Nr. | Beschreibung |
| 1 | AGP-Grafikkarte |
| 2 | USB-Controller |
| 3 | Netzwerkkarte |
| 4 | Audiokarte |
| 5 | OnBoard-Sound |
| 6 | ISDN-Karte oder internes Modem |
Wer noch einen SCSI-Hostadapter benutzt, kann den auch noch dazurechnen. Ganz schön viele, oder? Zum Glück beherrschen die allermeisten PCI-Karten etwas, das uns die Sache erleichtert, nämlich:
8. IRQ-Sharing
Auf gut deutsch: Mehrere PCI-Karten (*nicht* ISA-Karten oder reservierte Komponenten s.o.) können sich einen IRQ teilen, ihn also gemeinsam benutzen. Das muss auch so sein, denn: Fast alle aktuellen Chipsätze sind so konstruiert, dass allen PCI-Komponenten zusammen nur 4 IRQs zur Verfügung stehen. Wer seinen Blick nach oben richtet, der wird schnell erkennen, dass unter dieser Voraussetzung in einem Audio-PC nur dann jede Karte ihren eigenen IRQ kriegen kann, wenn es sich um einen PC ohne Netzwerkkarte, OnBoard-Sound und SCSI-Hostadapter handelt. Seltene Sache eigentlich - gerade im Hobby-Bereich sind da vermutlich noch viel mehr Komponenten im Spiel. Um diese Situation ein wenig zu entschärfen, könnte man USB-Controller und OnBoard-Soundkarte aus dem Spiel zu nehmen: Wenn man sie nicht unbedingt braucht, reicht es fast immer, sie im BIOS des Rechners zu deaktivieren.
Wenn dennoch mehr als vier PCI-Komponenten drin sind, dann muss man damit leben, dass mehrere Karten denselben IRQ belegen. Wenn's geht sollte man aber vermeiden, dass ausgerechnet die Audio-Karte keinen eigenen IRQ für sich alleine hat. Das wäre ja noch verständlich, wenn nicht manche Karten mit dem IRQ-Sharing nicht zurechtkommen würden. Wer so eine im Rechner hat, merkt das relativ schnell: Teilt sie sich ihren Interrupt mit einer anderen Karte, funktioniert sie entweder gar nicht, oder nicht richtig. Dann hilft nur Experimentieren, so dass eben diese Karte ihren eigenen IRQ kriegt.
9. IRQ-Prioritäten
Eine sehr interessante Sache: Die verschiedenen IRQs werden in unterschiedlicher Priorität abgearbeitet. Angenommen unsere CPU kriegt einen Interrupt und will sich um die Tastatur kümmern. Wenn jetzt ein andere Interrupt anklopft, der eine höhere Priorität hat, dann hat dieser Vorrang und die Tastatur muss solange warten. Hat er eine niedrigere Priorität, dann wird die Tastatur-Geschichte zu Ende erledigt, dann kommt der nächste Interrupt dran, und erst dann macht die CPU mit ihrer 'normalen' Arbeit weiter. In jedem Fall werden alle anstehenden IRQs abgearbeitet, die Frage ist eben nur, in welcher Reihenfolge. Dieses Prinzip nennt man FILO ('First In Last Out').
Logischerweise wär's nicht schlecht, wenn unsere Audio-Karte einen IRQ mit möglichst hoher Priorität kriegt - schließlich soll sie ja immer und vorrangig störungsfrei funktionieren. Ob ein Netzwerk-Datenpaket eine hundertstel Sekunde später ankommt, ist dagegen nicht so wichtig. Die Audiokarte aber sollte immer Vorrang haben.
Die Reihenfolge der IRQ - Prioritäten im PC ist die Folgende:
0 => 1 => 9 => 8 => 10 => 11 => 12 => 13 => 14 => 15 => 3 => 4 => 5 => 6 => 7
Wenn wir's mal auf die IRQs reduzieren, die wir beeinflussen können, dann bleibt folgende Kette:
9 => 10 => 11 => 12 => 3 => 4 => 5 => 7
Demnach wissen wir jetzt also: Die Audiokarte sollte am besten den IRQ 9, wenn's damit Probleme gibt (kommt ab und an vor) den IRQ 10 kriegen. Auf dem IRQ Nummer 5, der sonst immer wieder gern für Soundkarten benutzt wird, hat sie nichts verloren, denn der ist ja nun einer der am wenigsten bevorrechtigten Interrupts.
10. In die Praxis
Praktisch gesehen sollten Sie spätestens jetzt einmal den Gerätemanager unter Systemsteuerung / System aufrufen und dort unter Ansicht / Ressourcen nach Typ die Verteilung der Interrupts bestaunen. Wenn Ihnen dort auffällt, dass alle Ihre PCI-Geräte denselben IRQ benutzen, dann haben Sie den Rechner vermutlich als ACPI-System installiert und sind an dieser Stelle raus (ja Hoecker). Unter ACPI lässt sich die Verteilung der IRQs nämlich überhaupt nicht beeinflussen - da kümmert sich Windows völlig autark drum.
Wenn die PCI-Karten unterschiedliche Interrupts haben, dann notieren sie sich, wer hier was hat, vor allen Dingen aber, welche Komponenten denselben IRQ benutzen. Mal angenommen, Grafikkarte und Audiokarte haben denselben Interrupt. Dann wissen Sie an dieser Stelle: Der Steckplatz, in dem die Audiokarte steckt, hat immer denselben IRQ wie die Grafikkarte. Teilt sich eine weitere Karte ihren Interrupt mit dem USB-Controller, dann wissen Sie: Der Steckplatz wo diese drinsteckt hat ebenfalls immer dieses Problem. Haben Sie Steckplatz-Alternativen, dann empfiehlt es sich, die Karten durch einfaches Austauschen im Rechner so umzustecken, dass so wenige Karten wie möglich den gleichen IRQ benutzen, und vor allen Dingen die Audiokarte in einem Steckplatz sitzt, der sich den IRQ mit keiner anderen Komponente teilt.
Wenn dieses geschehen ist, werfen Sie einen Blick in das System-BIOS Ihres Rechners. Meist gibt es hier die Möglichkeit, den vier PCI-Leitungen unterschiedliche Interrupts manuell zuzuweisen. Das sollten Sie auch tun, und zwar die Interrupts 9, 10, 11, und 5. Jetzt booten sie den Rechner neu und sehen nach, was mit den IRQs passiert ist. An dieser Stelle hilft oft nur ausprobierne, d. h. wieder runterfahren, erneut ins BIOS, und dort die Reihenfolge ändern. Das tun Sie solange, bis die Audiokarte den IRQ 9 oder 10 für sich alleine hat. Manchmal möchte eine Grafikkarte unbedingt den IRQ 9 haben, manchmal weigert sich ein SCSI-Controller was anderes als den IRQ 10 zu benutzen - das muss man eben ausprobieren. Die 'unwichtigste' Karte (könnte in einem Audio-PC z. B. die Netzwerkkarte sein) kriegt auf jeden Fall den Interrupt Nummer 5.
11. Ergebnis
Selbst wenn jemand ihren PC über's Netzwerk mit Datenpaketen zuschüttet - die Audiowiedergabe sollte dies jetzt in keinem Fall mehr beeinträchtigen. Da der IRQ 9 bzw. 10 von der Priorität her noch vor der Maus, den seriellen und parallelen Schnittstellen und der Festplatte liegt, kann jetzt eigentlich nichts mehr stören. Ein gutes Gefühl oder? In diesem Sinne: Viel Spaß am Gerät. :)





