Inter-processor interrupt
In computing, an inter-processor interrupt, also known as a shoulder tap, is a special type of interrupt by which one processor may interrupt another processor in a multiprocessor system if the interrupting processor requires action from the other processor. Actions that might be requested include:
- Flush memory management unit caches, such as translation lookaside buffers, on other processors when memory mappings are changed by one processor;
- Stop when the system is being shut down by one processor.
- Notify an alternate CPU of a malfunction for Alternate CPU Recovery.
- Notify a processor that higher-priority work is available.
- Notify a processor of work that cannot be done on all processors due to, e.g.,
- * asymmetric access to I/O channels
- * special features on some processors
Mechanism
On IBM PC compatible computers that use the Advanced Programmable Interrupt Controller, IPI signaling is often performed using the APIC. When a CPU wishes to send an interrupt to another CPU, it stores the interrupt vector and the identifier of the target's local APIC in the Interrupt Command Register of its own local APIC. A message is then sent via the APIC bus to the target's local APIC, which then issues a corresponding interrupt to its own CPU.
Examples
In a multiprocessor system running Microsoft Windows, a processor may interrupt another processor for the following reasons, in addition to the ones listed above:- queue a DISPATCH_LEVEL interrupt to schedule a particular thread for execution;
- kernel debugger breakpoint.