Der Advanced Programmable Interrupt Controller (APIC, nicht zu verwechseln mit ACPI) sorgt für die Verteilung von Interrupts in x86 und Itanium basierenden Computersystemen.
Der APIC besteht im Gegensatz zum PIC aus zwei Komponenten, dem
Für die CPU-Familien Pentium, Pentium Pro, Pentium II und Pentium III (Generation P5 und P6) kommt ein zusätzliches APIC-Bus-System dazu das die einzelnen APICs untereinander verbindet. Seit dem Pentium 4 (Generation NetBurst und Core) werden die Nachrichten zwischen den APICs über den normalen plattformspezifischen System-Bus ausgetauscht.
Vereinfacht funktioniert das System so, dass der I/O-APIC die Interrupt Requests von den Geräten im System entgegennimmt, und sie als Interrupt Messages auf die Local APICs in den Prozessoren des Systems verteilt. Die Local APICs leiten dann wiederum den jeweils höchstpriorisierten Interrupt an den CPU-Kern weiter. Ist dieser abgearbeitet, leitet der Local APIC den nächsten Interrupt weiter.
Das APIC System wurde ursprünglich von Intel entwickelt um die Interruptverteilung in Multiprozessorsystemen zu ermöglichen, was mit dem vorhandenen XT-PIC nicht realisierbar war. Mittlerweile verwenden auch immer mehr Einzelprozessorsysteme das APIC System, da es noch weitere Probleme des XT-PIC beseitigt:
APIC wird heutzutage von allen aktuellen Betriebssystemen unterstützt, ist aber auch für eine Reihe von Fehlern verantwortlich, da die Implementierungen teilweise fehlerhaft sind.