IRQ & Interrupt-Vektortabelle

2147
rubixibuc

Ich habe viel über IRQs gelesen, und es scheint, dass es widersprüchliche und veraltete Informationen gibt. Einige davon stammen aus Windows 95. Hier bin ich verwirrt.

  1. Werden sowohl Software-Interrupts als auch Hardware-Interrupts von der Interrupt-Vektortabelle verwaltet und ausgeführt. Wenn nicht wie werden dann anders gesteuert.

  2. Ich habe gelesen, dass es einen Unterschied zwischen IRQs im PCI-Modus und IRQs im ISA-Modus gibt. Ist das wahr? Wenn ja, wie stellen Sie den Modus ein und wie funktionieren sie anders?

  3. Nun, da wir PCI Express haben, verwenden sie PCI-Modus-IRQs (falls vorhanden), wie funktionieren sie (unterbrechungsmäßig).

BEARBEITEN 4. Betrachtet man dieses Bild, so scheint es, dass es viele IRQs gibt und dass sie dem Speicher zugeordnet sind. Was bedeutet das? Es gibt weit mehr als 16 IRQs. Ich weiß, dass APIC mehr zulässt, aber so viele?

IRQ & Interrupt-Vektortabelle

Danke im Voraus :-)

2

1 Antwort auf die Frage

2
psusi

Es gibt keine unterschiedlichen Modi, es gibt unterschiedliche Hardware auf dem alten ISA-Bus und dem PCI-Bus. Der ISA-Bus stellte 16 IRQ-Leitungen auf dem Bus zur Verfügung, mit denen Geräte Aufmerksamkeit signalisieren könnten. Der programmierbare Interrupt-Controller (eigentlich ein Paar kaskadierter 8259A-Chips) reagierte auf diese Leitungen, indem er sie priorisierte und der CPU signalisierte, wenn eine aktiv war. Dies veranlasste die CPU, eine Interrupt-Service-Routine aufzurufen. Die IRQs 0-7 traten auf 8-F und die IRQs 8-15 auf 70-77. Interrupts können auch über die Software int-Anweisung ausgelöst werden und veranlassen die CPU, eine Routine aufzurufen, auf die der entsprechende Steckplatz in der Interrupt-Vektortabelle zeigt.

Anstelle von 16 IRQ-Leitungen, die von allen Geräten auf dem Bus gemeinsam genutzt werden, hat PCI an jedem Steckplatz mit dem Namen INTA-INTD vier verschiedene IRQ-Leitungen zur Verfügung gestellt, so dass jedes Gerät bis zu 4 verschiedene IRQs zur eigenen Verwendung haben kann. In der Praxis verwenden Geräte nur INTA, das von der Hardware an bestimmte IRQs geleitet wird.

Die Zahlen, die Sie im Bild sehen, sind keine Speicheradressen, sondern lediglich die hexadezimale Darstellung der IRQ-Nummer.

Die APIC unterstützt 256 Interrupt-Vektoren.

Cool :-), aber wo passt PCI Express in all das? Es gab einmal eine Mischung aus ISA- und PCI-Bussen auf der Hauptplatine, wie diese kombiniert wurden? Mit APIC nimmt auch die Anzahl der Interrupt-Vektoren zu, wobei die neuen zugewiesen werden. Ich gehe davon aus, dass ISA gleich bleibt, PCI, bleibt gleich, oder bekommt man eine Erhöhung? rubixibuc vor 12 Jahren 0
Bedeutet das, dass der APIC 256 Vektoren auf 16 (die ich aus Ihrer 8-F, 70-77, die ich nicht verstehe, erraten) physische Drähte dekomprimiert, die als IO in den CPU-Chip gelangen? Ist diese Zahl eine Konstante für alle x86-Architekturen? PPC vor 11 Jahren 0
@PPC, nein, der APIC unterstützt direkt 256 Interrupt-Vektoren, die ihm über ein serielles Protokoll über Iirc, einen Zweidrahtbus, der alle CPU, die Northbridge und alle IO-APICs verbindet, signalisiert werden. Die alten 16 IRQs waren physikalische Leitungen auf dem ISA-Bus, die mit 8259A-PICs verbunden waren, die sie auf die Software-Interrupt-Vektoren 8-F und 70-77 abbildeten. psusi vor 11 Jahren 0