The different combinations of design responses and tradeoffs give rise to a wide variety of multiprocessor system architectures. Perhaps the most fundamental decision in designing a multiprocessor system is whether the system will be symmetrical or asymmetrical. In an asymmetrical multiprocessor system, the processors are assigned different roles. Some parts of the software may be able to operate as though they were running in a uniprocessor. The existence of a single processor handling specific work creates a unique point of failure for the system as a whole.
Any processor is capable of running any thread in the system.
Any processor can handle any external interrupt. This interchangeability means that all of the processors are potentially available to handle whatever needs to be done next. The cost of this flexibility is primarily borne by the hardware and software designers, although symmetry also makes the limits on the multiprocessability of the workload more noticeable, as we shall see. Different systems may have different cache configurations. A single processor is initially in control during the boot process.