IRQ's & Interrupt Vektortabelle

2

Ich habe viel über IRQs gelesen und es scheint, dass es widersprüchliche und veraltete Informationen gibt. Einiges davon geht auf Windows 95 zurück. Hier ist, worüber ich verwirrt bin.

  1. Werden sowohl Software-Interrupts als auch Hardware-Interrupts von der Interrupt-Vektortabelle verwaltet und ausgelöst? Wenn nicht, wie dann anders gesteuert.

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

  3. Verwenden sie jetzt, da wir PCI Express haben, IRQs im PCI-Modus (falls vorhanden), wie funktionieren sie (unterbrechungsweise)?

BEARBEITEN 4. In diesem Bild sieht es so aus, als ob es viele IRQs gibt, die dem Speicher zugeordnet sind. Was sind die Implikationen davon? Es gibt weit mehr als 16 IRQs. Ich weiß, dass APIC mehr erlaubt, aber so viele?

Bildbeschreibung hier eingeben

Danke im Voraus :-)

rubixibuc
quelle

Antworten:

2

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 bereit, die Geräte zur Signalisierung der Aufmerksamkeit verwenden konnten. Der programmierbare Interrupt-Controller (eigentlich ein Paar kaskadierter 8259A-Chips) reagierte auf diese Leitungen, indem er sie priorisierte und der CPU signalisierte, wenn einer aktiv war. Dies führte dazu, dass die CPU eine Interrupt-Serviceroutine aufrief. Die IRQs 0-7 lösten int 8-F aus und die IRQs 8-15 lösten int 70-77 aus. Interrupts konnten auch über den Befehl software int ausgelöst werden und veranlassten die CPU, eine Routine aufzurufen, auf die der entsprechende Slot in der Interrupt-Vektortabelle zeigt.

Anstelle von 16 IRQ-Leitungen, die von allen Geräten am Bus gemeinsam genutzt werden, stellte PCI 4 verschiedene IRQ-Leitungen für jeden Steckplatz auf dem Bus mit der Bezeichnung INTA-INTD bereit, sodass jedes Gerät bis zu 4 verschiedene IRQs für den eigenen Gebrauch haben kann. In der Praxis verwenden Geräte nur INTA, das die Hardware an bestimmte IRQs weiterleitet.

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

Der APIC unterstützt 256 Interruptvektoren.

Psusi
quelle
Cool :-), aber wo passt PCI Express in all das? Es gab einmal eine Mischung aus ISA- und PCI-Bussen auf der Hauptplatine, wie wurden diese kombiniert? Tut auch die Zunahme der Interruptvektoren mit APIC, wo die neuen zugewiesen werden. Ich gehe davon aus, ISA bleibt gleich, PCI bleibt gleich, oder bekommt man eine Erhöhung?
Rubixibuc
Bedeutet dies, dass der APIC 256 Vektoren auf 16 (was ich von Ihrem 8-F, 70-77 erraten habe, was ich nicht verstehe) physische Drähte de-muxt, die als E / A in den CPU-Chip eintreten? Ist diese Zahl eine Konstante für alle x86-Architekturen?
PPC
@PPC, nein, der APIC unterstützt direkt 256 Interrupt-Vektoren, die ihm über ein serielles Protokoll, iirc, einen Zweidrahtbus, der alle CPUs, die Northbridge und alle IO-APICs verbindet, signalisiert werden. Die alten 16 IRQs waren physische 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