I/O Advanced Programmable Interrupt Controller
| Diese Seite ist ein Artikel, welcher mehr haben könnte.. Wenn du mehr darüber weißt oder recherchieren willst, bist du aufgerufen, dies zu tun. Wenn du dir in einer Sache nicht sicher bist, dann stell es auf die Diskussionsseite. |
Die I/O APIC (= I/O Advanced Programmable Interrupt Controller) löst den Programmable Interrupt Controller in einem SMP- bzw. NUMA-System ab. Da der PIC die IRQs ausschließlich an den BSP (= Bootstrap Processor) senden kann, ist in einem System mit mehreren Prozessoren eine I/O APIC notwendig. Darüber hinaus stellt die I/O APIC statt nur 16 IRQ-Leitungen wie der PIC normalerweise 24 IRQ-Leitungen zur Verfügung. Dies minimiert das IRQ-Sharing in Systemen mit sehr vielen Geräten. Außerdem ist die Programmierung der I/O APIC schneller, da sie nicht über I/O Ports, sondern über Speicherbereiche abläuft.
Programmierung
Die I/O APIC besitzt ein Indexregister (I/O Register Select bzw. IOREGSEL) und ein Datenregister (I/O Window bzw. IOWIN). Das Indexregister befindet sich an Offset 0x00 und das Datenregister an Offset 0x10 im Speicherbereich des I/O APIC, der bei einem PIIX3 Chipsatz bei 0xfec00xy00 (x und y werden mit dem APICBASE Register im PIIX3 festgelegt) beginnt. Im Allgemeinen ist die Basisadresse der I/O APICs über die Multiprocessor Tabellen bzw. die ACPI-Tabellen auslesbar. Beide sind les- und schreibbar. Mit dem Indexregister wählt man ein internes Register der I/O APIC aus und kann dann über das Datenregister das interne Register auslesen bzw. beschreiben.