OpenPIC and MPIC


In order to compete with Intel's Advanced Programmable Interrupt Controller, which had enabled the first Intel 486-based multiprocessor systems, in early 1995 AMD and Cyrix proposed as somewhat similar-in-purpose OpenPIC architecture supporting up to 32 processors. The OpenPIC architecture had at least declarative support from IBM and Compaq around 1995. No x86 motherboard was released with OpenPIC however. After the OpenPIC's failure in the x86 market, AMD licensed the Intel APIC Architecture for its AMD Athlon and later processors.
IBM however developed their MultiProcessor Interrupt Controller based on the OpenPIC register specification. In the reference IBM design, the processors share the MPIC over a DCR bus, with their access to the bus controlled by a DCR Arbiter. MPIC supports up to four processors and up to 128 interrupt sources. Through various implementations, the MPIC was included in PowerPC reference designs and some retail computers.
IBM used a MPIC based on OpenPIC 1.0 in their RS/6000 F50 and one based on OpenPIC 1.2 in their RS/6000 S70. Both of these systems also used a dual 8259 on their PCI-ISA bridges. An IBM MPIC was also used in the RS/6000 7046 Model B50.
The Apple Hydra Mac I/O chip implemented a MPIC alongside a SCSI controller, ADB controller, GeoPort controller, and timers. The Apple implementation of "Open PIC" in their first MIO chip for the Common Hardware Reference Platform was based on version 1.2 of the register specification and supported up to two processors and up to 20 interrupt sources. A MPIC was also incorporated in the newer K2 I/O controller used in the Power Mac G5s.
Freescale also uses a MPIC on all its PowerQUICC and QorIQ processors. The Linux Kernel-based Virtual Machine supports a virtualized MPIC with up to 256 interrupts, based on the Freescale variants.