Interrupt (IRQ)

Blockschaltbild

Jedes Computersystem besteht nicht nur aus CPU und Speicher, sondern auch aus der Peripherie, die im Gehäuse eingebaut oder an den äußeren Schnittstellen angeschlossen ist. Bei diesen Geräten handelt es sich um Ein- und Ausgabegeräte. Sie können zum Beispiel Daten von außen entgegennehmen. Zum Beispiel typische Eingaben, wie Maus-Bewegung, Tastatur-Eingaben oder Netzwerk-Verkehr. Damit der Prozessor (CPU) mitbekommt, dass Daten von außen anstehen, muss es die Möglichkeit geben, den Prozessor bei seiner Arbeit zu unterbrechen. Hierzu gibt es die Möglichkeit, dass der Prozessor alle Eingabe-Geräte zyklisch abfragt (Polling). Was bei der Vielzahl an Komponenten in einem Computer bedeuten würde, dass der Prozessor mit nichts anderem mehr beschäftigt wäre. Eine Alternative ist die sogenannten Unterbrechungsanforderung (to interrupt, unterbrechen), die dann eintritt, wenn Daten von außen anstehen. Dazu wurde die Möglichkeit geschaffen den Prozessor auf definierte Weise bei der laufenden Arbeit zu unterbrechen.

Ablauf eines Interrupts

Wenn ein Gerät Daten zur weiteren Verarbeitung zur Verfügung hat oder einfach nur eine Rückmeldung geben will, dann wird dem Prozessor in seiner laufenden Arbeit eine Unterbrechungsanforderung, also ein Interrupt-Request (IRQ) gesendet. Das passiert durch den Interrupt (Leitung), der dem betreffenden Gerät zugewiesen ist.
Wird zum Beispiel ein Taste auf der Tastatur gedrückt, dann schickt der Tastatur-Controller einen IRQ an den Prozessor. Der unterbricht seine aktuelle Tätigkeit und führt einen Befehl an einer bestimmten Speicheradresse aus, die vom IRQ-Eingang abhängig ist und auf den Tastatur-Treiber verweist. In den daraufhin ablaufenden Lese- und Schreiboperationen wird dafür gesorgt, dass der Buchstabe auf dem Bildschirm erscheint.

Interrupt-Auslösegründe

Bei jeder zeitkritischen Anwendung, bei der Daten an den Prozessor gesendet werden müssen, wird ein Interrupt ausgelöst. Für den IRQ können folgende Aktionen verantwortlich sein:

Damit aus Anwendersicht das System optimal funktioniert, ist die Gewichtung zwischen den Interrupts unterschiedlich. So kann sich die CPU um die wichtigen Aufgaben kümmern. Bei Überlastung kann es trotzdem dazu kommen, dass wichtige Daten nicht rechtzeitig oder nur verzögert vom Prozessor verarbeitet werden können.

Ressourcenkonflikte

Innerhalb der PC-Architektur ist die Interrupt-Verwaltung schon immer eine große Schwachstelle gewesen. Üblicherweise benötigen alle Peripherie-Geräte einen eigenen Interrupt. Mit der Zeit kamen immer mehr Geräte und Schnittstellen hinzu. Allerdings wurde die Anzahl der Interrupts nicht erhöht. So kam es, dass von diesem wichtigen Element innerhalb des Computersystems immer zu wenig vorhanden waren. Geplante Aufrüstungen scheiterten in der Regel an der zu geringen Anzahl freier Interrupts.
Dieses grundsätzliche Problem stammt aus der Zeit der ISA-Architektur. Es wurde auch dann nicht besser, als Plug & Play die Hardware-Installation einfacher machen sollte. Erst der PCI-Bus brachte die Möglichkeit des IRQ-Sharings, die gemeinsame Nutzung der Interrupt-Leitungen durch mehrere PCI-Steckkarten.
Da die Anzahl der Interrupts grundsätzlich zu gering ist, übernimmt das Betriebssystem die Rolle der Interrupt-Organisation, die auch die Doppelnutzung durch zwei Komponenten kontrollieren kann.

Interrupt-Verteilung

Es gibt einige Interrupts, die frei belegt werden können. Andere jedoch, sind fest vergeben und dürfen nicht verändert werden.

IRQ Funktion Veränderbar?
0 Systemzeitgeber nein
1 Tastatur nein
2 Programmierbarer Interrupt-Controller nein
3 COM 2 ja
4 COM 1 ja
5 LPT 2/Soundkarte ja
6 Standard-Disketten-Controller nein
7 LPT 1 ja
8 CMOS-/Echtzeitsystemuhr nein
9 intern nein
10 USB-Host-Controller ja
11 Grafikarte/Netzwerkkarte ja
12 Maus nein
13 Nummerischer Coprozessor nein
14 Primary IDE Controller nein
15 Secondary IDE Controller nein
16...23 ... ja

Interrupt-Verteilung am Beispiel von Windows 98 SE

Die folgende Darstellung ist ein Beispiel aus einem PC mit Windows 98 SE. Der Computer in diesem Beispiel hat nur 16 Interrupts. Deshalb sind einige doppelt belegt.

Beispiel der Interruptorganisation

Interrupt-Verteilung am Beispiel von Windows XP

Die folgende Darstellung ist ein Beispiel aus einem PC mit Windows XP. Der Computer in diesem Beispiel hat 24 Interrupts. Sowohl das Betriebssystem, als auch die Hardware unterstützen APIC. Außerdem führt die intensive Nutzung von Peripherie am USB dazu, dass Interrupts ausreichend zur Verfügung stehen.

Beispiel der Interruptorganisation

Der APIC-Modus

Der APIC (Advanced Programmable Interrupt Controller), nicht zu verwechseln mit ACPI, ist eine Steuereinheit für Interrupts in einem Computer.
In Multi-Prozessor-Systemen besitzen die Prozessoren einen Local APIC, über den sie mit den anderen Prozessoren und dem I/O-APIC des Motherboards kommunizieren. Das ist notwendig, damit bei einer Interrupt-Auslösung eindeutig ist, welcher der Prozessoren für diesen Interrupt zuständig ist.
Durch APIC ist es einem Betriebssystem möglich, sofern es APIC unterstützt, Interrupts mehrfach zu belegen. Aus diesem Grund ist APIC heute in jedem Prozessor und auf jedem Motherboard integriert.
Der Einsatz von immer mehr Erweiterungskarten hat dringend nach APIC-Unterstützung durch Chipsatz und Betriebssystem verlangt. Der APIC-Modus hat der Interrupt-Architektur des PCs deutliche Verbesserungen gebracht. Ressourcenkonflikte treten deutlich weniger auf.

Als es noch ISA-Steckkarten gab, mussten die Interrupts per Jumper konfiguriert werden. Später mit den PCI-Steckkarten konnten die Interrupts per Software eingestellt werden. Mit APIC kann das Betriebssystem die Interrupts eigenständig verwalten. Der Anwender muss an dieser Stelle keine Hand mehr anlegen.
Mit der vollautomatischen Interrupt-Verwaltung durch das Betriebssystem wurde dem PC-Bastler eine der lästigsten Aufgaben abgenommen.

Ablauf mit APIC-Modus

Beim Systemstart übernimmt das BIOS die IRQ-Verteilung, um die Geräte nutzen zu können. Zum Beispiel, um das Betriebssystem von der Festplatte oder einem anderen Laufwerk starten zu können. Nach dem Start des Betriebssystems übernimmt es die Kontrolle der IRQ-Verwaltung und nimmt an der IRQ-Verteilung des BIOS Änderungen vor.
Moderne Betriebssysteme erledigen die IRQ-Verwaltung auf APIC-tauglicher Hardware sehr geschickt und ohne manuelle Konfiguration durch den Anwender. Aus diese Grund ist eine manuelle Änderung der IRQ-Verteilung nicht sinnvoll und in der Regel auch gar nicht möglich. In der Regel sind alle Betriebssysteme im APIC-Modus installiert.
Sollte trotzdem der Verdacht auftreten, dass das automatische IRQ-Sharing Probleme bereitet, dann hilft nur das Vertauschen der vorhandenen Steckkarten.