Multicore designs in embedded systems are now becoming mainstream as the cost-effective way to implement the complex functionality required in modern devices. There are essentially two multicore system architectures – AMP and SMP. SMP [Symmetrical Multi-Processing] utilizes a number of identical CPUs, with a single operating system running on them all. All that is required is a special SMP version of the chosen OS. This is not problem for Linux and is also available for many RTOS products, like Nucleus.
For the most part, AMP [Asymmetrical Multi-Processing] has a wider application for embedded systems. And this is where new developments are progressing quickly …
Embedded systems with an AMP architecture are becoming more common. The attraction is that such a multicore system has a number of CPUs, which may be of a variety of architectures. Each processor runs its own operating system, which may be selected individually, or maybe no OS at all. These attributes enable the system to be built in a very optimal way – each CPU and its software are ideally suited to their assigned function.
To date, AMP architectures have simply evolved organically, with developers choosing the software components they needed in a somewhat ad hoc manner. The Multicore Association has provided guidance and defined some standards, like MCAPI, which provides a standard inter-processor communications mechanism.
An issue with AMP systems is overall control of the system, as each CPU is operating autonomously. Things like boot order and resource allocation are not managed in a consistent way. Issues like power management are a nightmare to marshal. Developers either have proprietary mechanisms or maybe use a hypervisor, which could be an excessive overhead.
The recent introduction of OpenAMP changes all that. OpenAMP is a framework for building an AMP system. It does not limit the developer’s creativity in choosing CPUs and OSes, but does provide a standards-based approach to overall system design. Mentor Embedded, who have long led the way in multicore software development, has announced the first commercial implementation of OpenAMP.