Pick the right multicore virtualization use case for your design
Virtualization technology provides an environment that enables the sharing of hardware resources (CPUs, memory, I/O) on a single computer system, allowing multiple operating systems to simultaneously share the system. The potential benefits to sharing a system by using virtualization are substantial cost and power savings as well as great flexibility.
As shown in Figure 1, below, virtualization is enabled by a software abstraction layer called a hypervisor (or virtual machine monitor) which creates and manages virtual machines which are isolated environments in which guest operating systems run.
The hypervisor layer operates at a privilege level higher than that of the guest operating systems, thus enabling the hypervisor to enforce partition boundaries, enforce system security, and ensure that virtual machines are isolated and cannot interfere with each other.
Hypervisor implementations can offer a wide range of capabilities and services ranging from simple partitioning of system hardware to the sharing and oversubscription of CPU or I/O resources. With the growing use of processors with multiple CPU cores in embedded systems, virtualization technology is increasingly being used to manage the complex software environments running on these devices.
This article will describe a number of different virtualization use cases for embedded systems, and discuss hardware and software virtualization technologies that can be used to address these use cases.
Use Case 1 – Hardware Consolidation
A key trend that is driving the need for virtualization technologies in multi-core embedded devices is system consolidation (Figure 2 below). Systems that in a previous version consisted of multiple discrete processors or even multiple boards can now take those functions and potentially combine them onto a single processor that has multiple cores, providing significant savings for a system’s bill-of-materials and power consumption. A number of the other use cases discussed in this article are variations on this theme of consolidation.
Click on image to enlarge.
Hardware consolidation typically involves combining multiple software domains as well. The discrete domains being combined may be comprised of homogeneous or heterogeneous operating systems. A common architecture (Figure 3, below) found in systems that do network processing involves two domains: 1) a data plane which is responsible for network packet processing (for example forwarding or routing packets) and 2) a control plane, which responsible for management functions such as managing routing tables.
Click on image to enlarge.
An architecture like this is a natural candidate for using virtualization to consolidate the control and data plane functions on a single processor.