Over the past few years, virtualization technology has been widely adopted in the enterprise market to make the best use of ever more powerful microprocessors with multiple processing cores. virtualization has certainly proven itself in the back office environment and this is now quickly spreading to include the embedded market.
Virtualization of enterprise servers allows a single physical server to perform as multiple, logical servers, hosting multiple instances of Windows, Linux or other operating systems. These systems are often using dual- and quad-core processors from Intel and AMD. The move to multicore is accelerating, and most vendors have presented their "many-core" roadmap for beyond four cores. The multi- and many-core chips from the enterprise market are now making their way into the embedded market with more than 25 percent of embedded processors that were shipped in 2008 being multicore.
The new multicore devices are bringing a true change in the way embedded developers are designing their systems. There are several key differences in the way that embedded developers are looking at multicore and virtualization.
Virtualization provides the capability of running multiple instances of operating systems on a single processor. Each instance is usually referred to as a virtual machine or virtual board. The virtual board provides an environment in which a guest operating system operates in isolation. A virtual machine manager (or 'hypervisor') manages the virtual boards and arbitrates scheduling as well as memory and device access. virtualization can be utilised in single-core or multicore processors.
A multicore processor has multiple processing cores connected to shared memory. A common way to utilise a multicore processor is by running a single operating system in a symmetric multiprocessing configuration. The single operating system instance has a single scheduler and can dispatch processes and tasks to the different cores. One of the benefits of SMP is that it makes load balancing across the different cores straightforward. However, SMP does not allow the multiple cores on the processor to execute different operating systems, for example, a general purpose operating system as well as a real-time operating system. The single operating system instance in SMP mode is also a single point of failure; if the system crashes, all of the cores will crash and will need to reboot.
The multiple cores in the processor can also be configured in an asymmetric multiprocessing configuration, where each core has a separate operating system that schedules its tasks on that one core. The operating systems on the core can either be the same type (multiple instances of Linux) or a mix of operating systems (e.g., Wind River Linux and VxWorks).
Embedded systems are different from enterprise IT systems. They are constrained in the power they can use, the amount of memory and the form factor. Of course, IT systems are constrained as well, but embedded takes it to the limit.
These constraints mean that many of the server virtualization solutions optimised for Windows and enterprise Linux are not well-suited.
Virtualization allows designers to consolidate different pieces of functionality that have traditionally required multiple, dedicated processors into a single processor, single or multicore. This reduces the device's cost, increases its functionality, and allows innovation to create differentiated devices.
Virtualization solutions for embedded need to be configurable and adaptable to run on constrained hardware. The following are some of the considerations that developers are looking for:
* Real-time responses: Real-time means fast and deterministic responses to events. virtualization, of course, requires context switches between the different virtual boards. These context switches need to be fast and not impact determinism.
* Reliability: A fault in one virtual board needs to be contained and cannot bring the entire system down. The faulty board can be reset individually to restore it into service.
* Boot time: The time from power-on to a responsive system is important in many industries, for example automotive.
* Memory footprint: Embedded systems have a lot more memory than they did even a couple of years ago; but memory is still on a budget. virtualization requires memory, but the amount needs to be minimized.