Does your computer support multiple processing?

Multiprocessing - Multiprocessing

Use of two or more central processing units (CPUs) within a single computer system

Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor, or the ability to assign tasks between them. There are many variations on this basic theme, and the definition of multiprocessing can vary depending on the context, mainly depending on the definition of the CPUs (multiple cores on one chip, multiple chips in one package, multiple packages in one system unit, etc.). ).

According to some online dictionaries, a Multiprocessor a computer system with two or more processing units (multiple processors), each of which shares main memory and peripheral devices, in order to process programs simultaneously. A 2009 textbook defined the multiprocessor system similarly, but note that the processors may "share some or all of the memory and I / O functions of the system." there was also one closely coupled system as a synonym.

At the operating system level, Multiprocessing is sometimes used to refer to the execution of multiple concurrent processes in use on a system, with each process running on a separate CPU or core, as opposed to a single process at an instant. When used with this definition, multiprocessing is sometimes compared to multitasking, which may use a single processor but switch it in time slices between tasks (ie, a time-sharing system). Multiprocessing, however, means real parallel execution of several processes with more than one processor. Multiprocessing does not necessarily mean that a single process or task is using more than one processor at the same time. The term parallel processing is commonly used to denote this scenario. Other authors prefer to refer to the operating system techniques as multiprogramming and the term Multiprocessing to reserve for the hardware aspect of more than one processor. The remainder of this article describes multiprocessing in this hardware sense only.

In Flynn's taxonomy, multiprocessors, as defined above, are MIMD machines. Because the term "multiprocessor" usually refers to tightly coupled systems in which all processors share memory, multiprocessors are not the entire class of MIMD machines that include multicomputer systems for messaging.


Possibly the first expression of the idea of ​​multiprocessing was written by Luigi Federico Menabrea in 1842, about Charles Babbage's Analytical Engine (as translated by Ada Lovelace): “The machine can be brought into play to give multiple results on the same Time that greatly shortens the entire set of processes. "

Key issues

Processor symmetry

In one Multiprocessor system all CPUs can be the same or some can be reserved for special purposes. A combination of hardware and operating system software design considerations determines the symmetry (or lack of it) in a particular system. For example, hardware or software considerations may require that only a particular CPU respond to all hardware interrupts, while all other work in the system can be evenly distributed among the CPUs. or the execution of kernel mode code can be limited to only a particular CPU, whereas user mode code can be executed in any combination of processors. Multiprocessor systems are often easier to design when such restrictions are imposed. However, they tend to be less efficient than systems that use all CPUs.

Systems that treat all CPUs equally are called SMP systems (Symmetric Multiprocessing). In systems where not all CPUs are the same, system resources can be allocated in a number of ways, including ASMP (asymmetric multiprocessing), NUMA (non-uniform memory access) multiprocessing, and clustered multiprocessing.

Master / slave multiprocessor system

In a master / slave multiprocessor system, the master CPU controls the computer and the slave CPU (s) perform assigned tasks. The CPUs can differ completely in terms of speed and architecture. Some (or all) CPUs can have a common bus, each can also have a private bus (for private resources), or they can be isolated except for a common communication path. The CPUs can also share a common main memory and / or have a private main memory that the other processors cannot access. The roles of master and slave can change from one CPU to the other.

An early example of a master / slave multiprocessor system is the Tandy / Radio Shack TRS-80 model 16 desktop computer, released in February 1982, and the Xenix multi-user / multitasking operating system, the Microsoft version of UNIX (TRS), executed -XENIX). The model 16 has 3 microprocessors, an 8-bit Zilog Z80 CPU with 4 MHz, a 16-bit Motorola 68000 CPU with 6 MHz and an Intel 8021 in the keyboard. When the system booted, the Z-80 was the master, and the Xenix boot process initialized the slave 68000 and transferred control to the 68000, whereupon the CPUs switched roles and the Z-80 became a slave processor for everyone Responsible for I / O operations, including hard drive, communications, printer and network, as well as keyboard and integrated monitor, while the operating system and applications were running on the 68000 CPU. The Z-80 can be used for other tasks.

The earlier TRS-80 Model II, released in 1979, can also be viewed as a multiprocessor system as the keyboard contains both a Z-80 CPU and an Intel 8021 microprocessor. The 8021 made the Model II the first desktop computer system to have a separate detachable, lightweight keyboard connected by a single thin, flexible wire, and likely the first keyboard to use a dedicated microprocessor. Both attributes were later copied by Apple and IBM years later.

Command and data streams

In multiple processing, the processors can be used to execute a single sequence of instructions in multiple contexts (single instructions, multiple data, or SIMD, often used in vector processing), multiple sequences of instructions in a single context (multiple instructions, single instructions) -data or MISD used for redundancy in resilient systems and sometimes used to describe pipeline processors or hyper-threading, or multiple instruction sequences in multiple contexts (multiple statements, multiple data, or MIMD).

Processor coupling

Tightly coupled multiprocessor system

Tightly coupled multiprocessor systems contain several CPUs that are connected at the bus level. These CPUs can have access to a central shared memory (SMP or UMA) or participate in a memory hierarchy with local and shared memory (SM) (NUMA). The IBM p690 Regatta is an example of a high-end SMP system. Intel Xeon processors dominated the multiprocessor market for business PCs and were the only major x86 option until the release of AMD's Opteron line of processors in 2004. Both areas of processors had their own onboard cache but had access to them shared storage provided; the Xeon processors via a common pipe and the Opteron processors via independent paths to the system RAM.

Chip multiprocessors, also known as multi-core computing, include more than one processor located on a single chip, and can be viewed as the most extreme form of tightly coupled multiprocessing. Multi-processor mainframe systems are often closely interconnected.

Loosely coupled multiprocessor system

Loosely coupled multiprocessor systems (often referred to as clusters) are based on several independent single or dual processors. Computers are connected via a high-speed communication system (Gigabit Ethernet is common). A Linux Beowulf cluster is an example of a loosely coupled system.

Tightly coupled systems perform better and are physically smaller than loosely coupled systems, but historically required a larger initial investment and can quickly depreciate. Nodes in a loosely coupled system are usually standard, inexpensive computers and can be recycled as independent machines when they are removed from the cluster.

Power consumption also plays a role. Tightly coupled systems are usually much more energy efficient than clusters. This is because significant economics can be achieved by designing components that work together from the outset in tightly coupled systems, while loosely coupled systems use components that were not necessarily specifically designed for use in such systems.

Loosely coupled systems can run different operating systems or operating system versions on different systems.

See also