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.