Monday, April 14, 2014

SMP and ESMP: The feature is parallel and the future of parallelism is here!



Abstract
Multi-core; this is not a new nomenclature, even to common people now. According to studies, the future of embedded system mainly plays with Multi-core due to the upcoming demands and complexity. Multi-core can provide great potential benefits for embedded systems only when we utilize it. Parallel programming is one of them, which can squeeze-out the total power of Multi-core.
Let’s have a look into SMP (Symmetric Multiprocessing) and ESMP (Extended Symmetric Multiprocessing), the two different approaches to Multiprocessing, which changes the way we writing programs.
Introduction
Since from the emerging, Multi-core mark its presence in a wide range of mainstream computational devices such as, servers, desktops and even Smartphone. The beauty of Multi-Core technology is that, it can offer advantage in both performance and overall system efficiency. But how we can utilize it up to the maximum? Well, the simple answer is so called parallel programming. Parallel programming is different from the usual sequence programming method in which, it can drive more than one driven thread simultaneously.
So, if you have a Multi-core system and you written some nice parallel program, does it works as you desired straightway? The answer is a big NO. This is because, ultimately, you need a Multiprocessing mode (i.e., an approach to deal with Multi-core - Multiprocessing communication in a system) for telling to your OS (operating system) that you going to do something amazing!
SMP and ESMP are two fantastic Multiprocessing modes which actually do the OS even better.
Before start digging into these modes, let’s have a look into the advantage of using SMP and ESMP as following
1.      Provide greater scalability and parallelism when compared to AMP (Asymmetric Multiprocessing), along with simpler shared resource management.
2.      Suitable for application development in which, applications not known at design time.
3.      Efficient for applications that may suspend (e.g., due to memory access) and need to restart on any core.
4.      Allow protocol processing in parallel.
5.      For multi-threaded applications.
6.      Suitable for large server applications.
7.      Easy for HW designers to step and repeat.
How SMP and ESMP work?
Symmetric Multiprocessing (SMP): In SMP, a single OS can manage the entire processor cores simultaneously. Since, the OS have better insight into the core elements throughout its life, it can allocate and mange the resource on multiple cores with little or no input from the developer.


The power of SMP actually lies with how it manages the resources. With single copy of OS, SMP can dynamically allocate the resources to a specific thread, rather than to CPU cores. This ultimately uplifts the utilization of available processor power.

Extended Symmetric Multiprocessing (ESMP): In the real world, just a SMP or AMP classification does not meet the actual requirement always. Suppose we want to use SMP system (with all homogeneous CPU cores), but not entirely for general purpose, then we must have to go with ESMP mode. ESMP is an extended version of SMP mode in which all CPU cores are homogeneous, yet they are not entirely “general purpose” with respect to use. ESMP CPU cores have same set of instruction architecture extensions. The configuration parameters are same for all CPU cores too. This makes ESMP to perform specific class of applications.
SMP and ESMP are two multiprocessor models, which makes efficient utilization of resources across Multi- Cores in a system. SMP and ESMP play a vital role in the advance parallelism, which can make wonders in the embedded technology in near future. If you have a multi-core system and know how to make parallelism, then SMP is the key to unlock your future.
Reference: