Multiprocessing is the use, within the same system, of several CPUs that share resources among them. There are many kinds of multiprocessing systems and they vary according to different aspects. Their type will first depend on the location of the CPUs (i.e., whether they are on the same die, chip or on the same board).
Secondly, the multiprocessing system can vary depending on whether all CPUs execute the same software or not. This is the main difference between a symmetric and an asymmetric multiprocessing system. Another key aspect is the number of resources shared (i.e., do they only share the main memory, part of the memory or some IO devices?). The multiprocessing system can also vary depending on whether all CPUs are identical (homogeneous multicore system) or different (heterogeneous multicore system).
Multiprocessing systems
Multiprocessing has been around for some time. Many years ago, in old PCs, dedicated processors (such as GPUs) were responsible for some specific tasks. In embedded systems, it was also common to use more than one processor. They were usually different, and each would perform the task they were best at.
The image below shows an embedded system with heterogeneous multiprocessors from the late 90s, with an MPC68360 and a Z80180 installed on the same board and sharing a memory.
It was also common to integrate different CPUs on the same chip. In fact, the MPC68360 shown in the image, had one general-purpose CPU and one specifically devoted to communication tasks. They were both installed in the same chip and shared an internal RAM.
However, as the integration level and clock frequency began to increase, problems arose. To solve the issue and gain more processing power, manufacturers began to add several identical CPUs or cores on the same chip. For the past years, these homogeneous multiprocessor system solutions have been dominating the market, allowing us to exploit this power in two ways.
Symmetric multiprocessing
Through symmetric multiprocessing, one operating system can use all the CPUs at once (thus allowing several tasks to be performed simultaneously). To take advantage of this, new hardware and software blocks were developed under the OS.
The abovementioned systems are widely used in general-purpose devices (such as personal computers, mobile phones, tablets, etc.). However, servers really stretch this power to the limit with processors of up to 32 cores.
Asymmetric multiprocessing
Asymmetric multiprocessing, on the other hand, is more commonly used in embedded systems. In this case, there is more than one operating system, and each uses its own CPUs (i.e. a router with a specialized proprietary routing software runs on one CPU, while a general-purpose OS runs on the other).
ARM big.LITTLE: An heterogeneous multicore architecture
This way, the same box can house a professional router and a server with advanced servicesPortable devices, such as mobile phones, have been lately requiring more process power but their batteries are not growing at the same pace. To solve this problem, one solution is to mount, on the same chip, powerful CPUs together with slower and more efficient models. Switching between them, we can maximize the processing power and enter a battery-saving mode when requirements are not as demanding.
The ARM big.LITTLE solution is an example of this heterogeneous multicore architecture.
From the first routers in the 90s, which had heterogeneous systems like the one in the image, to newer homogeneous multicore systems with asymmetric multiprocessing (such as the ones found in the Atlas-i60), at Teldat we have always taken advantage of multiprocessing. Moreover, we will keep adapting the multiprocessing concept to better suit our future developments.