An Acronym for Advanced Programmable Interrupt Controller.

The APIC is split into two parts, the Local APIC and the I/O-APIC.

The Local APIC is found on uniprocessor and mulitprocessor systems and built into recent x86 chips (Pentium Pro and up). The Local APIC can be used by the OperatingSystem to program interrupts to wake up threads, on SMP machines it can be used to send interrupts to another processor. The Local APIC also has a handy timer in it, you can set the timer to whatever you want and it'll start generating interrupts.

The IO-APIC is only really useful for SMP systems. It is used for sending various interrupts to various CPUs in the system. Without an I/O-APIC, interrupts from hardware only get delivered to the boot CPU. Another advantage is that PCI interrupts can be sent around the system without overlapping IRQs.

See also: Intel’s APIC notes