In This Article
What is Asymmetric Multiprocessing?
Asymmetric multi-processing in computers signifies the process of using several processors in an operation but all of them are not treated equally.
In an asymmetric method of processing, completely different tasks are handled by the processors.
- Asymmetric processing is a process that was first used in multi-processing systems.
- This method of processing allows for increasing the computing power of the systems but in an affordable way.
- The processors in asymmetric processing may share the same memory but are designed to perform completely different computing purposes.
- In this type of an arrangement, the interconnected processors are not treated equally.
- The processors involved in an asymmetric multiprocessing system may have a master slave relationship between them.
Understanding Asymmetric Multiprocessing
An asymmetric multiprocessing, also known as AMP or ASMP, is actually a multiprocessor computer system where all of the Central Processing Units or CPUs are interconnected.
In simple words, asymmetric multiprocessing is a process in which the processing load is divided and each of the processors is allocated a particular task to execute, wherein each of the processors shares a different architecture.
Different processors involved in the system may perform different tasks at the operating system or hardware level.
This means that, among the multiple interconnected CPUs, one may be allowed to carry out the codes of the operating system.
On the other hand, another CPU may be allowed to perform only the I/O operations.
However, this is not the universal standard. In some other asymmetric processing system, any processor may be allowed to carry out operating system code and execute I/O operations.
This means that, from the perspective of the processors and the roles played by them, they are more or less symmetric.
Despite that, a few or all of the peripherals connected to these systems may be linked to a specific CPU, making them asymmetric in nature from the peripheral attachment viewpoint.
The multiprocessor systems follow a fixed guideline while assigning tasks to the processors in an asymmetric processing technique.
However, the operation is a bit complicated but it surely maintains the efficiency of the system.
There is an intermediate run-time layer with a core that is called the HSA Intermediate Language or HSAIL.
The run time stack is created by compiling the architecture compilation stack with a high-level language such as C++.
It is backed by the LLVM or Low Level Virtual Machine infrastructure used in OpenCL.
This multiprocessing method was the only way to handle a number of CPUs before symmetric multiprocessing was available.
It still happens to be a less costly option even with the availability of SMP.
This is particularly true because asymmetric multiprocessing systems are much easier to design and handle than an SMP system.
However, the modern multi-processing systems do not use asymmetric multi-processing.
Instead, they use Symmetric Multi-Processing or SMP. In this process, the same resources can be accessed by all of the processors but each of them is not treated differently.
Asymmetric Multiprocessing Architecture
In asymmetric multiprocessing, the processors involved do not share the same architecture. This specific type of architecture allows making the best and most efficient use of the silicon.
The AMP architectures are typically found in the application processors of the mobile phones. These usually have several different cores such as:
- CPU cores
- Audio cores
- Video cores
- Separate discrete graphics cores and
- Imaging cores.
This heterogeneous architecture helps the mobile devices to meet their baseline expectations with the core AMPs due to the better heat dissipation and power consumption decisions of this design.
The Heterogeneous System Architecture or HSA eases the burden of the designers and at the same time offers different other benefits such as:
- A better performance
- More scalability
- Lower power consumption and
- Better heat dissipation.
The primary objective of the asymmetric multiprocessing architecture is to:
- Simplify heterogeneous programming to complement CPU computing and make it pervasive
- Increase the power efficiency of the asymmetric multiprocessing systems and
- Provide better means and robust development solutions to help develop innovative and advanced applications and content.
The architecture with easy software programming offers unique abilities to the Graphics Processing Units or GPUs of the asymmetric multiprocessing systems in particular.
They can handle parallel workloads a lot more proficiently than the ARM of x86 processors.
This is because the developers of the HSA designed it at a much more advanced and higher abstraction level to allow easier programming by using extra libraries and mainstream programming languages.
The hardware-specific finalizer in the architecture plays a significant role in converting HSAIL into the native instruction set of the computing unit and it can run at run-time, installation time, or compile time, depending on the necessities.
At this point, several different specifics of diverse computing units are addressed.
It is the features and quality of the finalizer that will determine the computing abilities of each hardware element.
Asymmetric Multiprocessing Example
One of the most obvious examples of asymmetric multiprocessing is the baseband System on Chip in the modem used in mobile phones. There is a DSP or Digital Signal Processor and an ARM processor in it for signal processing and control.
Some other examples include most of the embedded consumer applications and System on Chips such as:
- Qualcomm Snapdragon SoC
- Set-top boxes
- Digital televisions and
- Automotive infotainment.
Asymmetric Multiprocessing Master Slave
In an asymmetric multiprocessing system, there may be a master slave relationship existing between the processors involved. This means that one processor can assign a specific process or processes to another processor.
In this relationship, there is one master processor that controls the other slave processors. Here, the slave processors typically receive the specific tasks or processes from the master processor.
In this specific approach, if at any point in time the master processor fails to perform the particular task assigned to it, then the slave processor functions as the master CPU.
Now, if the slave processor fails, in that case, the task is allocated to the other slaves to continue the process.
- The Real Time Operating System does not share the images but has a number of images for each core
- Such type of processing can be used in a heterogeneous setting
- There are a large number of cores
- Much easier to design and handle
- More reliable because if one processor fails the system will not stop working
- Larger throughput since all processors work in tandem and
- Less costly than single processor systems in the long run.
- Issues with scalability
- Pretty hard to implement in every type of system
- The full potential of the systems is utilized by a only few specific types of mechanisms
- Initial cost is high
- Larger pool of main memory and resources is required since it is shared by all the processors
- Scheduling processes and imparting resources are difficult and
- Needs more complex operating systems.
Asymmetric Multiprocessing Scheduling
Asymmetric multiprocessing scheduling refers to allocating processes based on the priority and importance of them by a master processor to two or more slave processors to handle the task.
Though all the processors in this arrangement are interconnected to each other, they are not self-scheduling.
The process of scheduling in asymmetric multiprocessing is quite complex and involves several different aspects and considerations such as:
- Load balancing among the multiple processors involved either through push migration or pull migration
- Access to shared data while executing a process at the same time and
- Cache affinity.
The approach followed in asymmetric multiprocessing for processor scheduling is based primarily on the master-slave relationship between the processors.
Typically, both the I/O processors and process scheduling are handled by the master processor in this arrangement. As for the users’ processes, these are typically handled by the slave servers.
Processor affinity is an important aspect to consider during the scheduling process. This is actually the likeness of the process for the processor on which it runs.
There are basically two types of processor affinity such as:
- Soft affinity where the system tries to run a process on the same processor but there is no guarantee and
- Hard affinity where the process is allowed to state the subset of CPUs on which it may run.
Due to this affinity, the data accessed by the process while it is running on a processor is populated in the cache memory of that particular CPU in order to satisfy the data access calls made by the process.
However, when the process is transferred to another processor, the content in the cache memory of the previous processor is invalidated and new data has to be populated. This involves a cost.
To avoid it, scheduling is needed to avoid such migrations in the first place.
Symmetric Vs Asymmetric Multiprocessing
- All the processors in a symmetric multiprocessing system are treated equally and can carry out any type of process as needed but in asymmetric multiprocessing systems they are not treated equally
- The processes are taken by the processors in a symmetric multiprocessing system from a ready queue when needed but there is a specific guideline followed in asymmetric multiprocessing systems
- Tasks are distributed among other processors in a symmetric multiprocessing system if a processor fails but in asymmetric multiprocessing systems when the master processor fails, the slave becomes the master and if the slave CPU fails the task is distributed among the other slaves
- In symmetric multiprocessing systems all the processors share the same architecture but in asymmetric multiprocessing it may be different
- Symmetric multiprocessing systems are difficult to design and handle in comparison to asymmetric multiprocessing systems
- The symmetric multiprocessor systems are comparatively more expensive than the asymmetric systems
- In symmetric multiprocessing systems the tasks of the operating system are performed by the individual processor but in asymmetric multiprocessing systems they are performed by the master processor
- All processors in the symmetric multiprocessing systems communicate with each other through the shared memory but in asymmetric multiprocessing systems there is no communication between the processors since these are controlled by the master processor
- Symmetric multiprocessing is more complex because it needs proper synchronization of the processors to maintain the load balance but in asymmetric multiprocessing the access to data is in the hands of the master processor
- Symmetric multiprocessing is fit for homogeneous cores only but asymmetric multiprocessing is applicable to both homogeneous as well as heterogeneous cores
- Symmetric multiprocessing has self-scheduling ability but asymmetric multiprocessing does not and
- Symmetric multiprocessing can be used in general purpose systems but, in comparison, asymmetric multiprocessing can be used in embedded systems.
Is Windows Asymmetric Multiprocessing?
No, it is not. Ideally, the design of the Microsoft Windows NT-based operating system is such that it will run smoothly on Symmetric Multiprocessor or SMP and uniprocessor platforms.
The kernel-mode drivers are also designed to perform in the same way. Also, the Windows 2000 operating system supports only SMP and not asymmetric multiprocessing.
Asymmetric multiprocessing offers the users a similar execution environment as the traditional uniprocessor systems and follows a fairly simple course for porting legacy code with average methods and debugging tools.
It also offers a direct means to control CPU use with the same version or type of OS or a different one.