60 likes | 87 Views
Learn about the crucial role of Advanced Programmable Interrupt Controllers in multiprocessor systems, the signaling of external interrupt requests, and the routing of I/O requests from peripherals to CPUs. Explore the Redirection Table, delivery modes, trigger modes, and more through practical examples and resources.
E N D
Advanced Programmable Interrupt Controllers Multiprocessor-systems require enhanced circuitry for signaling of external interrupt-requests
Multiple Logical Processors DUAL CORE CPU CPU 0 CPU 1 I/O APIC LOCAL APIC LOCAL APIC Advanced Programmable Interrupt Controller is needed to perform ‘routing’ of I/O requests from peripherals to CPUs (The legacy PICs are masked when the APICs are enabled)
Redirection Table Entry 63 56 55 48 32 destination extended destination reserved 31 16 15 14 13 12 11 10 9 8 7 0 reserved M A S K E / L R I R R H / L S T A T U S L / P delivery mode interrupt vector 000 = Fixed 001 = Lowest Priority 010 = SMI 011 = (reserved) 100 = NMI 101 = INIT 110 = (reserved) 111 = ExtINT Trigger-Mode (1=Edge-triggered, 0=Level-triggered) Remote IRR (for Level-Triggered only) 0 = Reset when EOI received from Local-APIC 1 = Set when Local-APICs accept Level-Interrupt sent by IO-APIC Interrupt Input-pin Polarity (1=Active-High, 0=Active-Low) Destination-Mode (1=Logical, 0=Physical) Delivery-Status (1=Pending, 0=Idle)
I/O APIC Documentation “Intel I/O Controller Hub (ICH7) Family Datasheet” available online at http://www.intel.com/design/chipsets/datashts/307013.htm
Our ‘ioapic.c’ kernel-module • This Linux module creates a pseudo-file (named ‘/proc/ioapic’) which lets users view the current contents of the I/O APIC Redirection-Table registers • You can compile and install this module for our classroom and CS Lab machines or our Core-2 Duo (“anchor”) machines
Our ‘anchor’ systems Mapping of IRQ-lines to Interrupt-ID numbers 0 (masked) C (mouse) 0x89 1 (keyboard) 0x39 D ( ) 0x91 2 (timer) 0x31 E (hard-disk) 0x99 3 ( ) 0x41 F ( ) 0xA1 4 (serial-uart) 0x49 10 (ethernet) 0xA9 5 ( ) 0x51 11 ( ) 0xB1 6 (diskette-controller) 0x59 12 ( ) 0xB9 7 (parallel-port) 0x61 13 ( ) 0xC1 8 (real-time-clock) 0x69 14 (masked) 9 (acpi) 0x71 15 (masked) A ( ) 0x79 16 (masked) B ( ) 0x81 17 ( ) 0xC9