Intel APIC Architecture
From Free net encyclopedia
←Older revision | Newer revision→
The Intel APIC Architecture is a system of Advanced Programmable Interrupt Controllers (APICs) designed by Intel for use in Symmetric Multi-Processor (SMP) computer systems. It was originally implemented by the Intel 82093AA and 82489DX, and is found in most x86 SMP motherboards. It is one of several attempts to solve interrupt routing efficiency issues in multiprocessor computer systems.
Contents |
Overview
There are two components in the Intel APIC system, the Local APIC (LAPIC) and the IOAPIC. The LAPIC is integrated into each CPU in the system, and the IOAPIC is used throughout the system's peripheral buses. There is typically one IOAPIC for each peripheral bus in the system. In original system designs, LAPICs and IOAPICs were connected by a dedicated APIC bus. Newer systems use the system bus for communication between all APIC components.
In systems containing an 8259 PIC, the 8259 may be connected to the LAPIC in the system's bootstrap processor (BSP), or to one of the system's IOAPICs.
LAPICs
LAPICs manage all external interrupts for the processor that it is part of. In addition, it is able to accept and generate inter-processor interrupts (IPIs) between LAPICs. LAPIC's may support up to 224 usable IRQ vectors from an IOAPIC. Vectors numbers 0 to 31, out of 0 to 255, are reserved for exception handling by x86 processors.
IOAPICs
IOAPICs contain a redirection table, which is used to route the interrupts it receives from peripheral buses to one or more LAPICs.
Considerations
Design Issues
The Intel APIC architecture is well known for having a large amount of jitter in its interrupt latency.
Hardware Bugs
There are a number of known bugs in implementations of APIC systems, especially with concern to how the 8259 is connected.
There are defective BIOS which do not setup interrupt routing properly. This includes the errors in the implementation of ACPI tables and Intel Multiprocessor Specification tables.
Operating System Issues
It can be a cause of system failure, as some versions of some operating systems do not support it properly. If this is the case, disabling IO-APIC may cure the problem. For Linux, try the 'noapic nolapic' kernel parameters; for FreeBSD, the 'hint.apic.0.disabled' kernel environment variable.
In Linux, problems with IO-APIC are one of several causes of error messages concerning "spurious 8259A interrupt: IRQ7.". It is also possible that IO-APIC causes problems with network interfaces based on via-rhine driver, causing a transmission time out. Uniprocessor kernels with APIC enabled can cause spurious interrupts to be generated.
See also
- Intel 8259
- Advanced Programmable Interrupt Controller
- Programmable Interrupt Controller
- Inter-Processor Interrupt
- Interrupt
- Interrupt Handler
- Non-Maskable Interrupt
External links
- Intel MultiProcessor Specification Version 1.4 May 1997 (PDF)
- Intel® 82093AA I/O Advanced Programmable Interrupt Controller (I/O APIC) Datasheet
- Key Benefits of the I/O APIC Microsoft's explanation of I/O APIC
- Importance of Implementing APIC-Based Interrupt Subsystems on Uniprocessor PCs
- Advanced Programmable Interrupt Controller A short introduction of what APIC is and its benefitsca:APIC
de:Advanced Programmable Interrupt Controller es:APIC fr:IO-APIC pl:APIC