*** Welcome to piglix ***

C.mmp


The C.mmp was an early MIMD multiprocessor system developed at Carnegie Mellon University by William Wulf (1971). The notation C.mmp came from the PMS notation of Bell and Newell, where a CPU was designated as C and a variant was noted by the dot notation; mmp stood for Multi-Mini-Processor

Sixteen PDP-11 minicomputers were used as the processing elements (named Compute Modules in the system). Each CM had a local memory of 8K and a local set of peripheral devices. One of the challenges was that a device was only available through its unique connected processor, so the I/O system (designed by Roy Levin) hid the connectivity of the devices and routed the requests to the hosting processor. If a processor went down, the devices connected to its Unibus became unavailable, which became a problem in overall system reliability. Processor 0 (the boot processor) had the disk drives attached.

Each of the Compute Modules shared these communication pathways:

Since the PDP-11 only had an address space of 16-bits, an additional address translation unit was added to expand the address space to 25 bits for the shared memory space. The UniBus architecture provided 18 bits of address, and the two high-order bits were used to select one of four relocation registers which selected a bank of memory. Proper management of the relocation registers was one of the challenges of programming the operating system kernel.

The original C.mmp design used magnetic core memory, but during its lifetime, higher performance dynamic RAM became available and the system was upgraded.

The original processors were PDP-11/20 processors, but in the final system, only five of these were used; the remaining 11 were PDP-11/40 processors, which were modified by having additional writeable microcode space. All modifications to these machines were designed and built at CMU.

Most of the 11/20 modifications were custom changes to the motherboard, but because the PDP-11/40 was implemented in microcode, a separate "proc-mod" board was designed that intercepted certain instructions and implemented the protected operating system requirements. For example, it was necessary, for operating system integrity, that the stack pointer register never be odd. On the 11/20, this was accomplished by clipping the lead to the low-order bit of the stack register. On the 11/40, any access to the stack was intercepted by the proc-mod board and generated an illegal data access trap if the low-order bit was 1.


...
Wikipedia

...