Multi-core and embedded virtualization offer embedded device and equipment manufacturers the chance to consolidate and innovate. They can consolidate multiple individual processors into a single processor, whether single core or multi-core, and innovate by improving the capabilities of their devices beyond what was previously achievable.

Embedded devices need to constantly improve by enhancing user interfaces and advancing capabilities such as networking. Device developers have always tried to improve their systems, but multi-core and virtualisation offer the ability to come up with new designs and deliver new features that were previously not possible. 

More Cores
Multi-core processors are typically associated with higher performance. More cores deliver more MIPS (millions of instructions per second) so execute more code in a shorter time span with less power consumption.

This is certainly of interest for many device makers in the networking industry. These devices include radio base stations, radio network controllers and other major nodes in the wireless and wireline network. They are measured by the amount of traffic they can handle, the amount of subscribers they can support and so forth.

However, many embedded systems are not performance-limited. Take for example automotive entertainment, set-top boxes, industrial control and others. For these systems, performance is important but it is not the bottleneck. Still, in the next few years, there will be new devices in these categories that will contain multi-core processors. If performance is not a primary driver, why are these devices converting to multi-core?

One Processor, One OS
The size and power of these devices limit the number of processors they can have, often to only one, and sometimes to two if the need is really significant. Every processor executes a single operating system that has its own specialty area. Wind River’s VxWorks is used for real-time critical code. Linux or Windows is used for GUI-heavy applications, though not for hard real-time behavior. If both graphics and real-time are needed then a mixture is needed, which would mean adding graphics to VxWorks, or real-time to Linux, which are both possible, but not always ideal.

Figure 1 -- One processor, one core, one operating systemThere are several different capabilities that operating systems can specialise in: security; safety; graphical user interface; real-time and determinism; and open source software availability. 

The graphical user interface, real-time and determinism, and safety and security are self-explanatory. Software availability refers to software that is available as open source that device developers want to reuse. Why develop a proprietary piece of software if a suitable open source version is available? Linux clearly is the king of the hill in open source software.

Customers select the capabilities most important to them, select an operating system that delivers this and try to fit other required capabilities into it. So if real-time is most important, the system would run VxWorks, and the GUI would have to fit in.

If there are other needs that are important, such as an elaborate GUI or maybe safety certification, the user may opt to add another processor to the board, with another operating system, but there is an associated cost in dollars, power usage or board size.

A better way to design systems with strong requirements for more than one operating systems is to combine them on a single or multi-core OS. Previously this would require multiple different processors. However, with multi-core processors, a single processor has sufficient horsepower to execute multiple different operating systems without significant overhead. For example, for real-time and GUI, a single multi-core Intel processor such as a Core 2 can execute VxWorks and Windows. Or if PowerPC is the processor of choice, VxWorks and Linux can easily run on a single P2020.

Embedded Virtualization
A multi-core processor certainly has sufficient horsepower. But horsepower alone is not enough. Executing multiple operating systems requires separation, which is what virtualisation provides. Virtualisation partitions the multiple cores into separate virtual machines, making sure that each operating system has its own designated processing core (or cores), memory and devices.

Separation is important because without it the multiple operating systems could corrupt each other’s memory spaces, use devices they were never meant to use and so on. This can create problems during development as well as in fielded systems. For example, a Windows update could reboot Windows and shutdown the real-time OS with it.

Figure 2 -- Virtualization to provide partitioningVirtualization provides the capability to partition the multi-core chip into multiple virtual machines. A physical core can be assigned to a virtual machine and the performance will be close to native; in fact, it’s often so close that the performance impact is difficult to measure. 

Multiple physical cores can also be assigned to a virtual machine, using symmetric multiprocessing. In other words, a single 12-core could be partitioned in a number of single-core partitions and a number of multi-core partitions, all depending on the requirements of the particular device and the applications that would run on top of it.

Core Sharing
Multiple virtual machines can share a single core, such as in a single-core Intel Atom or a single core PowerPC E500. Even these single core processors can be used to execute multiple operating systems. In this case, virtualisation schedules the virtual machines to execute on top of the single core. This impacts timing, but the scheduler can be made deterministic, allowing a real-time and a general purpose OS to run deterministically on a single core while meeting hard real-time deadlines. 

One way to do this is to replace two low-frequency processors with a single higher-frequency unit. The impact on the timing behavior needs to be kept in mind, but the payoff in power and space savings can be more than worth it.

Figure 3 -- Virtualization to share coresThe Multi-core and Virtualization Revolution
There is a revolution ongoing in the embedded industry, driven by the availability of multi-core processors and embedded virtualization layers. Multi-core is not just a way to deliver more processing power, it also provides the possibility to consolidate existing multiprocessor systems onto single, or multi-core chips. On top of that it also allows for innovation of existing devices, additional capabilities that were simply not possible with existing processors.

This revolution is going to change the embedded industry. The early adopters of this technology will be able to differentiate themselves. They will be able to deliver smaller devices with lower power usage, but with more capabilities. The early adopters are already building these devices and Wind River is there to support them with a broad product portfolio that allows customers to reduce risk and time to market, while benefitting from the benefits described above.