波佩克与戈德堡虚拟化需求

波佩克与戈德堡虚拟化需求(英语:Popek and Goldberg virtualization requirements)是一组充分条件,用于验证某一计算机体系结构可否被有效虚拟化。杰拉尔德·J·波佩克与罗伯特·P·戈德堡于1974年合作论文《可虚拟第三代架构的规范化条件(英语:Formal Requirements for Virtualizable Third Generation Architectures)》中提出。尽管这组条件基于简单化假设获得,但它们仍为判定一个计算机架构是否能够有效支持虚拟化提供了一个便利方法,也为设计可虚拟化计算机架构给出了指导原则。

引入

系统虚拟机(system virtual machine)是指能够虚拟包括单或多处理器内存、外存及周边设备在内之全体硬件资源的虚拟机。虚拟机监视器(virtual machine monitor,VMM)是一个软件,用于提供虚拟机的抽象(Abstraction)。当分析一个VMM所创造的环境时,有三点性质值得特别关注:

等价性:一个运行于VMM下的程序,其行为应与直接运行于等价物理机上的同程序的行为完全一致。
资源控制:VMM对虚拟资源进行完全控制。
效率性:机器指令中经常使用的那一部分应在没有VMM干预下执行。

波佩克与戈德堡认为VMM应具备上述三个性质。今天来看,VMM通常被认为具备前两个性质即可。

波佩克与戈德堡描述了一台物理机为了能够运行具备以上性质之VMM,其指令集架构(Instruction Set Architecture,ISA)必须满足的特征。尽管这些分析使用所谓“第三代架构模型”(如IBM 360DEC公司的PDP-10)得出相关特征,它们对于现在的计算机也是足够适用的。这个模型包括一个运行于系统或用户模式的CPU,并可以访问线形、统一化可编址内存。它还假设,指令集有一个子集只能运行于系统模式(内核态);内存通过一个重定位寄存器进行寻址。输入/输出中断未被考虑。

虚拟化需求

为导出虚拟化需求,波佩克与戈德堡将ISA的全部指令分为三类。

优先级指令
当处理器处于用户态时自陷,处于内核态时不自陷的指令。
控制敏感指令
试图改变系统资源配置的指令。
行为敏感指令
其行为或结果取决于资源配置状态(如重定位寄存器的内容或处理器所处模式)的指令。

波佩克与戈德堡的分析结果主要归纳如下:

定理1:对于任何传统的第三代计算机,只要其敏感指令是优先级指令的一个子集,就可以为其创建VMM。

直观地说,这条定理指出,欲构造一个VMM,其充分条件是所有可能影响VMM正常工作的指令(即敏感指令)能够自陷并将控制权移交给VMM。这就保证了资源控制;非特权指令则必须被本地(物理机)执行——也就是更有效率地执行。等价性也得到满足。

一个关联问题是递归虚拟化的ISA需求,即探讨在什么样的条件下可以创建一个能运行于自身拷贝上的VMM。波佩克与戈德堡指出,

定理2:一台传统第三代计算机是递归虚拟的,当

  1. 它是可虚拟的;
  2. 可以为它创建一台不加任何时间依赖性的VMM。

处理关键指令

定理1所给出的条件可以通过牺牲第三条性质、效率性来放宽。因此,许多按波佩克与戈德堡之定义应归类为非可虚拟的ISA也有VMM。但是,虚拟这种体系结构意味着对一些关键指令,即敏感且非特权指令,必须作出正确处理。动态重编译中常用的补丁方法在这里得到运用:在运行时发现这样的指令,并以自陷到VMM来替换。

参见

  • 虚拟机