The M65MP option of OS/360 used the Direct Control feature of the S/360 to generate an interrupt on another processor; on S/370 and its successors, including z/Architecture, the SIGNAL PROCESSOR instruction provides a more formalized interface. The documentation for some IBM operating systems refers to this as a shoulder tap.
On IBM PC compatible computers that use the Advanced Programmable Interrupt Controller (APIC), 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 (ICR) 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.
In a multiprocessor system running Microsoft Windows, a processor may interrupt another processor for the following reasons, in addition to the ones listed above:3
IPIs are given an IRQL of 29.4
"Appendix F: Multiprocessing Extensions" (PDF). OS I/O Supervisor Logic - Release 21 - Program Number 360S-CI-505 (PDF). Program Logic. IBM. p. 271. GY28-6616-9. Retrieved August 28, 2022. http://bitsavers.org/pdf/ibm/360/os/R21.7_Apr73/plm/GY28-6616-9_OS_IO_Superv_PLM_R21.7_Apr73.pdf#page=282 ↩
"AMD Technical Information Portal". docs.amd.com. Retrieved 2024-07-18. https://docs.amd.com/r/en-US/am011-versal-acap-trm/Inter-Processor-Interrupts ↩
"Inter Processor Interrupt usage". Stack Overflow. Retrieved 2024-07-18. https://stackoverflow.com/questions/15091165/inter-processor-interrupt-usage ↩
Matt (2002-04-28). "Understanding IRQL". Archived from the original on 2019-10-14. Retrieved 2014-12-06. https://web.archive.org/web/20191014125625/http://ext2fsd.sourceforge.net/documents/irql.htm ↩