Abstract
Twelve years have passed since VMware engineers first virtualized the x86 architecture. This technological breakthrough kicked off a transformation of an entire industry, and virtualization is now (once again) a thriving business with a wide range of solutions being deployed, developed and proposed. But at the base of it all, the fundamental quest is still the same: running virtual machines as well as we possibly can on top of a virtual machine monitor.
We review how the x86 architecture was originally virtualized in the days of the Pentium II (1998), and follow the evolution of the virtual machine monitor forward through the introduction of virtual SMP, 64 bit (x64), and hardware support for virtualization to finish with a contemporary challenge, nested virtualization.
- K. Adams and O. Agesen. A comparison of software and hardware techniques for x86 virtualization. In ASPLOS-XII: Proceedings of the 12th international conference on Architectural support for programming languages and operating systems, pages 2--13, 2006. Google ScholarDigital Library
- O. Agesen. Binary translation of returns. In Workshop on Binary Instrumentation and Applications, pages 7--14, October 2006.Google Scholar
- AMD. AMD64 Architecture Programmer s Manual Volume 2: System Programming, June 2010. Chapter 15.Google Scholar
- V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: a transparent dynamic optimization system. In PLDI 00: Proceedings of the ACM SIGPLAN 2000 conference on programming language design and implementation, pages 1--12, 2000. Google ScholarDigital Library
- M. Ben-Yehuda, M. D. Day, Z. Dubitzky, M. Factor, N. Har El, A. Gordon, A. Liguori, O. Wasserman, and B.-A. Yassour. The turtles project: Design and implementation of nested virtualization. In OSDI 10: 9th USENIX Symposium on Opearting Systems Design and Implementation. USENIX Association, 2010. Google ScholarDigital Library
- R. Bhargava, B. Serebrin, F. Spadini, and S. Manne. Accelerating two-dimensional page walks for virtualized systems. In ASPLOS XIII: Proceedings of the 13th international conference on Architectural support for programming languages and operating systems, pages 26--35, 2008. Google ScholarDigital Library
- P. E. Ceruzzi. History of digital computers. In A. Ralston, E. D. Reilly, and D. Hemmendinger, editors, Encyclopedia of Computer Science, pages 545--570. Nature Publishing Group, Londo, UK, 4th edition, 2000.Google Scholar
- Y. Chen. Dynamic binary translation from x86-32 code to x86-64 code for virtualization. Master s thesis, Massachusetts Institute of Technology, 2009. http://hdl.handle.net/1721.1/53095.Google Scholar
- B. Cmelik and D. Keppel. Shade: a fast instruction-set simulator for execution profiling. In SIGMETRICS 96: Proceedings of the 1996 ACM SIGMETRICS international conference on measurement and modeling of computer systems, pages 128--137, 1994. Google ScholarDigital Library
- Intel Corporation. Intel® Virtualization Technology Specification for the IA-32 Intel® Architecture, April 2005.Google Scholar
- D. L. Osisek, K. M. Jackson, and P. H. Gum. ESA/390 interpretive-execution architecture, foundation for VM/ESA. IBM Systems Journal, 30(1):34--51, 1991. Google ScholarDigital Library
- W.-C. Poon and A. K. Mok. Bounding the running time of interrupt and exception forwarding in recursive virtualization for the x86 architecture. Technical Report VMware-TR-2010-003, VMware, Inc., 3401 Hillview Avenue, Palo Alto, CA 94303, USA, Oct 2010.Google Scholar
- G. J. Popek and R. P. Goldberg. Formal requirements for virtualizable third generation architectures. Commun. ACM, 17(7):412--421, 1974. Google ScholarDigital Library
- G. J. Popek and C. S. Kline. The PDP-11 virtual machine architecture: A case study. In Proceedings of the fifth ACM symposium on Operating systems principles, SOSP 75, pages 97--105, 1975. Google ScholarDigital Library
- J. S. Robin and C. E. Irvine. Analysis of the intel pentium s ability to support a secure virtual machine monitor. In SSYM 00: Proceedings of the 9th conference on USENIX Security Symposium, Berkeley, CA, USA, 2000. USENIX Association. Google ScholarDigital Library
- D. J. Scales, M. Nelson, and G. Venkitachalam. The design of a practical system for fault-tolerant virtual machines. SIGOPS Oper. Syst. Rev., 44(4), 2010. Google ScholarDigital Library
- J. Sugerman, G. Venkitachalam, and B.-H. Lim. Virtualizing I/O devices on VMware Workstation s hosted virtual machine monitor. In USENIX Annual Technical Conference, General Track, pages 1--14, 2001. Google ScholarDigital Library
- VMware. Timekeeping in VMware Virtual Machines, May 2010. http://www.vmware.com/vmtn/resources/238.Google Scholar
- C. A. Waldspurger. Memory resource management in VMware ESX server. SIGOPS Oper. Syst. Rev., 36(SI):181--194, 2002. Google ScholarDigital Library
- L. D. Wittie. Microprocessors and microcomputers. In A. Ralston, E. D. Reilly, and D. Hemmendinger, editors, Encyclopedia of Computer Science, pages 1161--1169. Nature Publishing Group, London, UK, 4th edition, 2000.Google Scholar
- M. Xu, V. Malyugin, J. Sheldon, G. Venkitachalam, and B. Weissman. Retrace: Collecting execution trace with virtual machine deterministic replay. In Proceedings of the 3rd Annual Workshop on Modeling, Benchmarking and Simulation, 2007.Google Scholar
Index Terms
- The evolution of an x86 virtual machine monitor
Recommendations
A comparison of software and hardware techniques for x86 virtualization
Proceedings of the 2006 ASPLOS ConferenceUntil recently, the x86 architecture has not permitted classical trap-and-emulate virtualization. Virtual Machine Monitors for x86, such as VMware ® Workstation and Virtual PC, have instead used binary translation of the guest kernel code. However, both ...
Bringing Virtualization to the x86 Architecture with the Original VMware Workstation
This article describes the historical context, technical challenges, and main implementation techniques used by VMware Workstation to bring virtualization to the x86 architecture in 1999. Although virtual machine monitors (VMMs) had been around for ...
A comparison of software and hardware techniques for x86 virtualization
ASPLOS XII: Proceedings of the 12th international conference on Architectural support for programming languages and operating systemsUntil recently, the x86 architecture has not permitted classical trap-and-emulate virtualization. Virtual Machine Monitors for x86, such as VMware ® Workstation and Virtual PC, have instead used binary translation of the guest kernel code. However, both ...
Comments