x86硬件辅助虚拟化技术解析

日期: 2010-05-12 作者:林昊翔 来源:TechTarget中国 英文

  在计算机领域,虚拟化技术从最初概念的提出到现在已经走过了几十个年头。虚拟化技术在很多领域都已经被广泛运用,但我们最常用的x86平台却迟迟没有提供硬件级虚拟化支持。近几年来x86平台硬件性能大幅提高,硬件资源浪费的现象越来越严重。而虚拟化技术可以在一台计算机上运行多个独立的虚拟操作系统,维护成本和其它非技术成本会有相当程度的降低。随着英特尔和AMD的硬件辅助虚拟化技术的成熟,虚拟化技术成了近来IT界的热点话题。然而,大家对于虚拟化的认识大多还停留在字面理解上,什么是虚拟化?x86硬件辅助虚拟化(Intel VT和AMD-V)又是怎么一回事呢?希望本文能够为大家解开谜团。

  2005年英特尔发布了第一款支持虚拟化技术的处理器,其竞争对手AMD也在2006年紧接着将虚拟化技术应用到处理器产品上。随着两大核心平台厂商虚拟化技术的逐渐成熟并获得周边虚拟化软件厂家的支持,硬件辅助虚拟化正以不可阻挡之势来到众人面前,越来越多的桌面CPU和芯片组开始支持虚拟化技术,让这个以前主要应用在服务器和大型机领域的技术渐渐走入寻常百姓家。从表格中大家就能够看出,硬件辅助虚拟化技术可以说囊括了计算机体系架构中最重要的几个方面,而且还在一直发展当中。到现在为止,两家的CPU虚拟化技术走过了四五年时间已经慢慢成熟,内存和I/O虚拟化也都有了成熟的规范,可以说已经进入了虚拟化2.0的时代。

硬件辅助虚拟化

英特尔/AMD硬件辅助虚拟化技术对比

  虚拟化起源于对分时系统的需求,在1959年的国际信息处理大会上,一篇名为《大型高速计算机中的时间共享》被认为是虚拟化技术的最早论述。抽象地说,虚拟化是资源的逻辑表示,它不会受物理限制的约束。在计算机科学方面的虚拟化定义有很多种,其中有一种定义笔者认为相对更贴切和便于理解:“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其它资源提供了一个逻辑视图,而不是物理视图。”

  找准x86平台硬件辅助虚拟化技术的位置

  在正文开始之前,我们先来解读一下本文的主题——x86硬件辅助虚拟化。“认请自己的位置”是老人们给我们的教诲,所以要认识x86硬件辅助虚拟化首先必须明白它在虚拟化技术中英特尔/AMD硬件辅助虚拟化技术对比的“位置”。虚拟化技术应用十分广泛,分类方法也多种多样,下图是笔者根据国外一些虚拟化大师的介绍并融入自己的理解绘制而成的。硬件辅助虚拟化只是“虚拟化-系统虚拟化-平台虚拟化”体系末端的一个分支,包括x86硬件辅助虚拟化和非x86硬件辅助虚拟化。支持虚拟化的硬件技术非常多,我们这次要讲的Intel VT和AMD-V只是其中的两项而已。

硬件辅助虚拟化

硬件辅助虚拟化是虚拟化技术中非常小的一个范畴

硬件

提供虚拟机支持的硬件技术清单

虚拟机

前期的知识储备:系统虚拟化和虚拟机

  硬件辅助虚拟化属于系统虚拟化类别,其最终的呈现方式是虚拟机,因此要了解硬件辅助虚拟化,我们首先需要做好前期的知识储备:什么是系统虚拟化,什么是虚拟机?

  寻求需要的替代品——系统虚拟化

  在x86运行模式中有一种可能一些老玩家还会有印象:虚拟8086模式(Virtual 8086 Mode),它是为了让一些老程序能够在保护模式下运行而提供的。大家在获得便利的同时可能忽略了一点,这其实就是x86给大家带来的虚拟化技术。其实系统虚拟化就是对计算机这个“抽象对象”的虚拟化,我们可以认为它的实现形式是在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一形式的资源,提供给上层系统使用。

  虚拟化层直接加到了传统的计算机体系层次结构中,难道不会破坏原有的体系结构吗?其实虚拟化层从某种意义上说就像一个替代品,谁的替代品呢?硬件抽象层和API抽象层的替代品,它们只不过是在一定程度上取代了系统中原有硬件抽象层和API抽象层的部分功能,使得工作在这个代工的虚拟化层上面的客户机操作系统能够正常工作而已。

  虚拟化技术的产物——虚拟机

  前面给大家讲解了虚拟化及计算机体系中抽象层的概念,当我们把虚拟化概念应用到计算机(具体的机器)上时,虚拟机的概念就出现了。虚拟机是指在一个硬件平台上模拟多个独立的、ISA结构和实际硬件相同的虚拟硬件系统,在每个虚拟硬件系统上都可以运行不同的操作系统(Guest OS),这些客户操作系统通过虚拟机监视器(VMM,后面会讲到其类型)访问实际的物理资源。1974年Popek和Goldberg在《Formal Requirements for Virtualizable Third Generation Architectures》一文是这样描述虚拟机的:“它可以看作是物理机的一种高效隔离的复制”。

虚拟机

虚拟机通过增加了一个新的软件层——虚拟机监控器(VMM)而使得其上运行的多个操作系统可以共享硬件资源

  小知识:计算机体系中的抽象层

  从图中我们可以看到计算机体系结构存在两个抽象层:硬件抽象层(HAL)和API抽象层。在计算机中,硬件抽象层(Hardware Abstraction Layer,HAL)是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,允许计算机操作系统在逻辑层而不是硬件层与硬件设备交互。调用程序不用了解硬件的具体设计细节,只需要给出抽象层所需的参数即可。这个抽象接口通常包括CPU的各种寄存器、内存管理模块和I/O端口等信息(需要注意的是,CPU、内存和I/O正是英特尔和AMD硬件辅助虚拟化技术中最主要的三个方向)。

API抽象层

  API抽象层抽象的是一个进程所能控制的系统功能的集合,包括创建新进程、内存申请和归还、进程间同步与共享、文件系统和网络操作等。虚拟化和计算机体系中的抽象层有着非常密切的关系,通常虚拟化技术就是对体系中的相关抽象层的模拟替代,让虚拟软件层上面的客户机操作系统产生一定的“错觉”,而平台虚拟化和应用程序虚拟化在一定程度上就是取代计算机体系中的硬件抽象层和API抽象层的工作。诸如硬件辅助虚拟化、ISA虚拟化其实都是属于硬件抽象层虚拟化范畴之内,而JVM之类的高级语言虚拟化则是API抽象层虚拟化的典范。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐