As embedded designers face the challenge of developing systems with fewer components and lower power consumption while combining multiple applications, many have turned to virtualization software to simplify the process. Even with a single core processor, virtualization allows designers to merge a real time operating system with a high level, graphics based user interface such as Windows or Linux. However, the introduction of the 2nd generation Intel® Core™ architecture with multiple processors and extended 7 year lifecycle support has tempted design teams to question the need for virtualization software. Specifically, they ask: If I can distribute application software across multiple cores why do I need to create virtual machines? In this blog post, I will cover the advantages of integrating virtual environments along with multicore technology and look at a few products available from the most prominent embedded software vendors.
One of the prime reasons to incorporate multicore is to boost performance through parallel processing. Developers have access to multiple techniques to enable this performance gain including symmetric or asymmetric multiprocessing and virtualization. In the symmetric multiprocessing (SMP) configuration, a single operating system allocates threads or tasks across the available cores while managing common memory and hardware resources. Asymmetric multiprocessing (AMP) allows each core to run independent software so that a single system can easily combine real-time, deterministic tasks with a graphical user interface. With virtualization, a hypervisor isolates and allocates system resources between the operating environments so that real-time, general-purpose, and legacy software can be readily integrated in a multicore system.
In addition to memory and hardware device allocation, virtualization allows the developer to assign multiple cores to compute intensive applications as needed to maximize overall system performance. The virtualization software layer also provides security and separation to guarantee that a software failure in one partition does not impact other partitions. Virtualization also simplifies system upgrades by isolating the hardware and software layers so that designers can easily add or modify peripherals, memory, and cores without restructuring the software architecture. A virtual machine hypervisor provides designers with a way to optimize performance by tweaking the resource mapping even after deployment.
The 2nd generation Intel® Core™ architecture includes multiple features that improve hardware and software performance in a virtual environment. For example, specialized Intel® functions such as Extended Page Tables (EPT) and Page Attribute Table (PAT) provide a hardware assist to the partitioning and allocation of physical memory among virtual machines. You can find plenty of information and technical articles about Intel architecture and virtualization at the Intel® Embedded Community page on Virtualization.
To take advantage of these hardware features that assist virtualization, several embedded software suppliers have updated their products to be compatible with the 2nd generation Intel® Core™ architecture. For example, the Wind River Hypervisor gives designers the ability to configure and partition hardware devices, memory, and cores into “virtual boards” that an operating system uses as its execution environment (See figure 1). These virtual boards can be run on a single processor core or distributed across multiple based on the needs of the system. In all cases, the hypervisor can be used to provide virtualization and protection of memory and device access. The Hypervisor can be configured to use all of its features or it can be scaled down to a minimal “supervisor,” to provide protection, reliability, and scalability in a supervised AMP configuration.
TenAsys Corporation and LynuxWorks also provide virtualization products that match the enhanced performance features of the 2nd generation Intel® Core™ architecture. The TenAsys eVM for Windows embedded virtualization platform allows designers to host an embedded or real-time operating system (RTOS) alongside Windows on the same multicore processor platform. A Windows-based control panel allows the user to assign interrupts, allocate I/O devices, and control the passing of resources, including real-time interfaces, from Windows to the RTOS. LynuxWorks offers the LynxSecure version 5.0 separation kernel and hypervisor that is designed to operate in secure defense environments where data and applications with different security levels need to co-reside on a single device without contamination. The LynxSecure 5.0 secure device virtualization mechanism allows limited physical devices to be virtualized and shared between guest operating systems.
Virtualization is a great way to simplify embedded designs with fewer components while integrating the framework needed to easily combine disparate operating software or future updates. If you are starting on a new project and you are unsure if virtualization is the way to go, please share your concerns with fellow followers of the Intel® Embedded Community. You can keep up with the latest technical articles and product announcements at the Embedded Computing Design archives on Virtualization. Also check back to see how embedded designers use virtual machines in real-time applications to simplify hardware, improve performance, and lower power requirements.
To view other community content on virtualization, see “Virtualization - Top Picks”
OpenSystems Media®, by special arrangement with Intel® Embedded Alliance
Wind River Systems is an Associate member of the by Intel® Embedded Alliance. LynuxWorks and TenAsys are Affiliate members of the Alliance.