Most people associate virtualization with IT data center environments, such as server farm consolidation, but virtualization can also play an important role in embedded and communications applications, particularly as they migrate to multi-core processors. Benefits include system cost reduction, increased performance and functionality, and increased security and reliability.
In the computing space, virtualization is defined as an environment in which multiple Operating Systems (OS) run on a single physical machine (processor). Each OS runs in its own partition, or "Virtual Machine" (VM). This is implemented by inserting an additional software layer between the hardware and the OS, called the Virtual Machine Monitor (VMM). The VMM schedules the OSs and manages the hardware resources in much the same way that an OS manages the execution of applications. OSs can be multiple copies of the same or a mix of different ones, and both of these models can be useful in embedded systems as I'll describe below.
Virtualization is a decades-old concept with roots in the mainframe computing era. What's new is the advanced hardware support built into Intel® Architecture (IA) processors and chipsets. Intel(r) Virtualization Technology (VT) simplifies processor virtualization, enabling high performance as well as reductions in VMM software size and complexity. Unlike the IT environment that is dominated by a few ubiquitous platform architectures and OSs, the embedded space is more fragmented and requirements differ among vertical market segments. Many embedded systems even rely on proprietary OSs "home grown" for a specific product. Without the features of Intel® VT, the complexity and costs to develop VMMs targeting the diverse needs of multiple embedded segments were very high, if not prohibitive. Intel® VT enables a host of commercial products that meet real-time embedded requirements from vendors including Green Hills, LynuxWorks, TenAsys, VirtualLogix, and Wind River.
Virtualization can be useful in embedded multi-core applications in a number of ways. These include: leveraging existing applications without having to multi-thread them, legacy OS migration, system consolidation, providing multiple security domains, and providing redundant computing environments.
Leveraging existing applications. I've previously written about threading an existing serial application for increased performance on multi-core. That's a process that can be complex and time-consuming. Depending on the nature of the application, an alternative is to simply run multiple copies of the unchanged code. For example, this would allow a communications packet processing application to handle multiple packets in parallel. This could be either a permanent solution or an interim step towards eventually threading the code.
Legacy migration. Virtualization enables the coexistence of a legacy OS with a new OS (OS co-location). With this approach you can preserve legacy code without the need to modify it, while adding new functionality under a different OS. An example here is adding features to a network router where the legacy router code runs under a home grown OS and the new code is threaded for multi-core running on SMP Linux.
VMM configured with a legacy uniprocessor RTOS on
a dedicated core and SMP OS on the remaining cores
System consolidation. Many embedded applications have real-time processing requirements that can't be met by a GPOS such as Windows*, hence the existence of the Real-time OS (RTOS). Yet Windows offers a complete and familiar human interface, a rich software development environment, and extensive availability of tools and software components (databases, etc). Consider a controller for a medical device such as an MRI in which all of the operator interface, graphics display, etc. is developed under Windows while the real-time code that actually controls the machine is under an RTOS. Virtualization allows you to leverage all of that by running a GPOS in parallel with an RTOS on multi-core, eliminating the need for separate processors for each.
Multiple security domains and redundant computing environments. Virtualization supports application isolation in security-critical and safety-critical systems. Additionally, system reliability and availability can be enhanced by providing redundant computing environments. This feature enables active/standby software instances that reduce the need for hardware redundancy, as well as the capability to perform hot software upgrades without taking the system out of service.
Intel® VT enables advanced features that are highly desirable in the embedded space. To read more about this topic, visit: http://download.intel.com/technology/itj/2006/v10i3/v10-i3-art05.pdf
*Windows is a registered trademark of Microsoft Corporation.