Multiprocessor systems (also: multiprocessor systems ) are computers that have two or more processors . They are mostly used as servers or high-performance workstations . The operating system then assigns the individual tasks (the processes ) to the individual processor cores as required .
According to Flynn's classification , multiprocessor systems fall into the class of closely coupled MIMD systems (MIMD = Multiple Instruction, Multiple Data ). With this, the various processors have a common memory .
In scientific institutions in which large computing power is required, several computers are often combined to form a computer network in order to achieve a similar effect. Then one speaks of loosely coupled MIMD systems. Often, however, each individual computer in such a cluster still has several processors itself, so it is a tightly coupled MIMD system in itself.
Multiprocessor systems are very common today. Since the x86 processors available today usually no longer have just one computing core (as was the case until about the year 2000), but mostly two or more ( multi-core processors ), a clearer distinction must be made between today
- Multi-core processor ... a processor with multiple cores, and
- the multiprocessor system in the narrower sense ... a computer system that has more than one processor socket on the multi-processor motherboard, and in which more than one of these sockets is equipped.
Sometimes the operating system should assign the processes to a specific processor, depending on the type of memory connection:
- With Uniform Memory Access ( UMA ) is called when the multi-processor motherboard on all present there all the processors memory access "equivalent".
- The counter-concept is called Non-Uniform Memory Access ( NUMA ). Each processor has "its" main memory; if another processor wants to access it, it must request this access via the main memory manager (see MESI and MOESI protocol).
With the NUMA structure that is widespread today, the operating system must therefore ensure that processes that request (virtual) main memory receive it in the real RAM that belongs to "their" processor. Conversely, the operating system must ensure that an inactive process that is available for execution is assigned, if possible, to a processor core of the processor in whose ram the process is located.
The term “ multiprocessing ” refers to the ability of a computer to process more than one thread at the same time. In this context, the term “multiprocessing” is derived from “multi” (several) and “processes”. In most cases, these storylines can also be processed separately from one another. A group of threads that are shielded from all other threads, but not from each other (thus “belonging together”), is a so-called process , often also called a task .
For multiprocessing several (at least two), largely independent processor cores are necessary. A multiprocessor system is therefore always capable of multiprocessing.
Nowadays, instead of the term multiprocessing, the term multitasking is often used. Historically, however, the division of only one computing core, e.g. B. describes several tasks in the time slice method. Instead of actually processing several processes simultaneously, only exactly one process is processed at any one time; The quick change between several processes (using short time slices) appears to the user as if the processes were being processed "simultaneously".
Nowadays, both processes are used simultaneously in modern computer systems: There are several processor cores that can actually execute threads at the same time (separated from one another or running in the same context) - in addition, each processor core is again assigned threads or processes in a time slice process.
Sometimes there is also talk of hardware-side multithreading , in contrast to software-side multithreading , in which all the division of computing time is programmed by the application program - from the point of view of the processor, it is only exactly one thread / process.