22C:116, Lecture 23, Spring 2002

Douglas W. Jones
University of Iowa Department of Computer Science

  1. Multiprocessor Systems

    Multiprocessors have been built since the early 1960's, and they have been commercially successful since the late 1960's. Multiprocessor computer systems have been built in a number of ways:

    Symmetric Shared Memory Multirpocessors
    With these systems, each CPU is the equal of all of the others. All of memory is accessible from all CPU's, and the cost of a memory access does not depend on which CPU is performing the access or on which location is being accessed. The first commercial multiprocessors, mainframe systems built by Burroughs and sold in the mid to late 1960's, were in this category. Carnegie-Mellon's C.mmp system, with 16 16-bit PDP-11 processors, is an important example from the early 1970's.

    Assymetric Shared Memory Multirpocessors
    With these systems, one CPU is the master processor, and the others are slave processors. Generally, the operating system runs primarily on the control processor, while the slave processors are largely free to run user code. Frequently, the master processor has access to all of memory, but the slaves have limited access to the memory reserved for the master. IBM's first shared-memory multiprocessor mainframes were in this category; modern coprocessor-based systems are in this class, so any PC with a DSP chip could be classes as an asymmetric shared memory multiprocessor.

    Non-Uniform Memory Access Multiprocessors
    With these systems, each CPU is the equal of all of the others. All of memory is accessible from all CPU's, but the cost of a memory reference depends on what processor is accessing memory and on what location is being accessed. Each processor typically has fast access to local memory and slow access to non-local memory. While small symmetric multiprocessors with uniform memory access times are fairly easy to build, as the number of processors grows, non-uniform access times are a common result. This class of architectures emerged in the 1970's with Cm* at Carnegie-Mellon University; most symmetric multiprocessors with over about 20 processors have been in this class. The largest machines in this class have had over 1000 processors.

    Tightly Coupled Multicomputers
    With these systems, memory is not shared! Instead, the system consists of a set of computer-modules, each with CPU and memory, interconnected by a high bandwidth network. The Cal-Tech Cosmic Cube was the first large-scale machine in this class. This consisted of 64 computer modules, each with an 8-bit Z-80 microprocessor and 64K bytes of memory, interconnected by 8-bit parallel ports connecting machines in a point-to-point manner along the edges of a 6-dimensional hypercube. Intel followed up on this with the IPSC (Intel Personal Supercomputer) family of machines, based on 8086 (and later, 80x86) processors using point-to-point ethernet interconnections along hypercube edges. These machnes were sold with between 4 and 256 computer modules.

    All of the above pose interesting operating system problems. It should be noted that all of these are MIMD machines (multiple instruction stream, multiple data processing element), and that another class of parallel computer systems exists, tagged by the acronym SIMD (single instruction stream multiple data stream). SIMD machines have only one CPU, but that CPU contains multiple arithmetic units. ILLIAC IV, designed in the late 1960's, had 64 ALU's in its CPU. The Connection Machine series of machines made by Thinking Machines began as SIMD machines, with 1024 extremely simple ALU's inside the CPU. In the final model of the connection machine, the ALU's were replaced with CPU's, so the final machine was an MIMD system.

    Generally, SIMD machines are used as coprocessors on a conventional machine, so the SIMD machine itself poses few interesting operating system problems. Furthermore, most coprocessor-based systems don't have interesting operating systems. The master processor simply assigns the coprocessor to the application that needs it, and the working assumption is that the coprocessor will be completely owned by that application until that application is done.

    The interesting operating system issues, therefore, are largely confined to symmetric shared-memory MIMD machines, including those with non-uniform memory access, and to tightly coupled multiprocessors.