Perhaps the most significant technology, from a microarchitectural standpoint, to be discussed at IDF was the up and coming role that virtualization will play in new Intel MPUs. Virtualization refers to the ability of a system or component to transparently provide a virtual machine (VM) interface to the rest of the world. This abstract layer is typically inserted between the other layers of a system that we are familiar with, such as the hardware, ISA, OS or applications. One familiar example is the Java Virtual Machine (JVM), which lies between the native OS of a system and the applications. All Java programs are interpreted or compiled for the JVM, and each OS vendor is responsible for implementing JVM support. This allows Java programs to “compile once, run everywhere” and has made Java one of the most popular programming languages in high end heterogeneous environments.
Virtualization is typically used in three different ways: replication, optimization and translation. Replication essentially allows a particular layer of your system (ISA, OS, hardware etc.) to host several different layers above it, with each of the hosted layers unaware of the others. One example, which should be quite familiar, is the multitasking ability of most modern OSes, depicted in Figure 6.
Figure 7 – Multitasking Environment
In this case, the OS provides the necessary facilities, hardware resources and system calls, to multiple applications simultaneously, with each program being unaware of the other applications running. In larger servers, it is quite common to see not only multiple applications hosted on each OS, but multiple OS images (or instances) hosted on a single system image. This is achieved by placing a Virtual Machine Monitor (VMM) between the hardware and each ‘guest’ operating system, as seen in Figure 8. All system resources are managed by the VMM, which creates the illusion that each guest is running on separate hardware. If a guest OS requests access to the memory, storage subsystems or other resources, the request is actually intercepted by the VMM, which ensures that the hardware access is performed in a correct manner that does not disrupt the other guests. One of the key advantages of using a VMM is that each one of the guests OSes or applications is isolated from one another. So when one OS crashes, the other guests will continue to run without any disruptions.
Figure 8 – VMM Hosting Two OS Instances
Be the first to discuss this article!