英特尔和AMD现在都是新增了针对虚拟化的操作模式和相关指令,而在机理相似的虚拟机控制结构方面,英特尔称呼它为VMCS,而AMD则叫VMCB。尽管在一些指令和模式细节上两者依然存在不同,但在整体实现原理上基本上没有太大差别,主要不同可参见图8和图9。
图8 英特尔方面,新增的虚拟化相关指令较多,而且分工明确,通过引入新的根操作模式(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)来解决旧有的陷入再模拟漏洞。
图9 而AMD方面,则新增的指令较少,VMRUN指令是整个虚拟化技术的基础,和英特尔引出了两种专用模式不同的是,AMD只引入了Guest Mode操作模式。
图10 在AMD虚拟化架构中,VMRUN指令处于核心地位,它是衔接宿主机指令流和客户指令流的关键,而在英特尔方面则是细分了若干指令分别进行专项处理。
在此笔者并非给大家展示两家技术细节,而是要告诉大家什么是x86平台的硬件辅助虚拟化。因此本期将以英特尔处理器的虚拟化技术为例进行讲解。