Asymmetric Multiprocessing

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.

This means that when one processor works on the operating system tasks, another CPU may be involved in executing the tasks given by the users.

Understanding Asymmetric Multiprocessing

What is 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.

Read Also:  What is Coprocessor? Example, Uses, Advantages & More

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:

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.

However, the asymmetric architectures are pretty hard to implement, which is why they fail to dominate the PC and server sectors.

The Heterogeneous System Architecture or HSA eases the burden of the designers and at the same time offers different other benefits such as:

The primary objective of the asymmetric multiprocessing architecture is to:

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:

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.

Read Also:  What is Parallel Processing? Types, Examples & More

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.



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:

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:

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.

Read Also:  What is Max Clock Speed in Processor? (Explained)

To avoid it, scheduling is needed to avoid such migrations in the first place.

Symmetric Vs Asymmetric Multiprocessing

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.