一种提高非敏感特权指令执行效率的系统虚拟机及方法

文档序号:6374311阅读:854来源:国知局
专利名称:一种提高非敏感特权指令执行效率的系统虚拟机及方法
技术领域
本发明涉及计算机硬件体系结构和系统虚拟化领域,尤其是涉及ー种提高非敏感特权指令执行效率的系统虚拟机及方法。
背景技术
虚拟机指令分为两类敏感指令和非敏感指令(无害指令)。敏感指令指的是任何改变或依赖系统资源的指令,敏感指令不可以在物理CPU上直接执行;反之,非敏感指令可以在物理机器上直接执行,因此敏感指令执行需要产生异常。同吋,由于虚拟机需要运行于非特权态下,虚拟机的特权指令执行时也会产生异常,敏感指令和特权指令的关系如图I所示。因为会产生异常,所以CPU虚拟化的瓶颈在于特权指令和敏感指令。
在现有技术中,加速敏感指令和特权指令的方式分为两种一种是在CPU中增加额外的操作模式;另一种是软件方式(例如修改操作系统代码方式、ニ进制翻译等)。在CPU中增加额外的操作模式后,敏感指令影响不了宿主机的特权资源,而且在这种操作模式下也分特权态和非特权态,因此绝大部分敏感指令和特权指令不会产生异常,对于没有这种硬件辅助虚拟化设计的架构,无法使用这种方式。软件方式针对的是没有硬件辅助虚拟化设计支持的CPU,用一系列非特权非敏感指令替代特权指令和敏感指令;然而,该方法的修改范围有限制,可扩展性较差。因此,目前需要一种解决软件替代方法不能处理某些非敏感的特权指令的缺陷的方法,能使得非敏感的特权指令在系统虚拟机中高效安全的执行。

发明内容
为解决上述问题,本发明提供了一种提高非敏感特权指令执行效率的系统虚拟机及方法。在第一方面,本发明提供了一种提高非敏感特权指令执行效率的系统虚拟机。该系统虚拟机包括宿主机和至少ー个虚拟机,所述宿主机和虚拟机运行在CPU上,所述CPU包括寄存器,其特征在于,所述寄存器额外设置控制位,用于控制非敏感特权指令能否在虚拟机中直接执行;其中,宿主机在陷入虚拟机之前,判断虚拟机的状态,根据判断結果,设置所述控制位。进ー步的,所述虚拟机执行虚拟机操作系统时,设置控制位为打开,则允许非敏感特权指令在虚拟机上直接运行;所述虚拟机退出虚拟机操作系统时,设置控制位为关闭,则禁止非敏感特权指令在虚拟机上直接运行。进ー步的,所述宿主机包括虚拟机监视器VMM,通过设置所述虚拟机监视器VMM,使得在宿主机进入虚拟机之前,判断虚拟机的状态。在第二方面,本发明提供了一种提高非敏感特权指令执行效率的方法。该方法实现于上述系统虚拟机,宿主机和虚拟机运行在CPU上,所述CPU包括寄存器,所述寄存器上有控制非敏感特权指令能否在虚拟机中直接执行的控制位。该方法步骤具体包括宿主机在陷入虚拟机之前,判断虚拟机的状态,根据判断结果,设置所述控制位。进ー步的,所述虚拟机执行虚拟机操作系统时,设置所述控制位为打开,则允许非敏感特权指令在虚拟机上直接运行;所述虚拟机退出虚拟机操作系统时,设置控制位为关闭,则禁止非敏感特权指令在虚拟机上直接运行。进ー步的,设置虚拟机监视器VMM,使得在宿主机陷入虚拟机之前,判断虚拟机的状态。进ー步的,判断虚拟机的状态根据操作系统的地址和用户程序的地址判断的。进ー步的,通过编译虚拟机操作系统区分操作系统的地址和用户程序的地址。
本发明解决了软件替代方法不能处理某些非敏感特权指令的缺陷,并且本发明提供的系统虚拟机和方法相较于在多增加ー个新的操作模式的CPU在实现上要简单很多。本发明提供的方法有效的提高的非敏感特权指令的执行效率,并且保证了其执行时的正确性及安全性。


图I为敏感指令、非敏感指令和特权指令之间的关系的示意图;图2为本发明一个实施例中的软硬件协同设计方法步骤的流程图。
具体实施例方式非敏感特权指令的特点是在没有增加额外操作模式时,虚拟机一般执行在CPU的非特权态下,因此若在虚拟机中执行特权指令会造成异常。然而对于这些非敏感特权指令是属于非敏感指令的,如果将其在虚拟机中直接执行,理论上是可以执行的,但是有产生异常的可能性,造成虚拟机的安全性问题。为了提高这类指令在虚拟机中的执行效率,同时保证虚拟机的安全性,提出了一种系统虚拟机及一种软硬件协同设计的方法。通过硬件设计保证非敏感特权指令在虚拟机中执行的可行性,通过软件设计来保证非敏感特权指令在虚拟机中运行时的安全性。下面通过附图和实施例,对本发明的技术方案做进ー步的详细描述。本实施例以ー种基于MIPS架构的龙芯CPU上实现本发明提供系统虚拟机及方法为例进行说明。该CPU具有两种非特权态(即管理态和用户态)。cache指令是MIPS架构中的非敏感特权指令。由于MIPS访问CACHE只能通过cache指令,因此无法通过软件方式提高cache指令在虚拟机中的执行速度,然而在虚拟机操作系统执行过程中会多次执行cache指令,非常影响操作系统性能。因此,通过对软硬件设计结合的方式提高cache指令在虚拟机中的执行效率,并保证其在虚拟机中的安全性。下面分别从硬件设计和软件设计上介绍其实现方式。图2为软硬件协同设计的方法步骤流程图。硬件设计上系统虚拟机包括宿主机及至少ー个虚拟机,本实施例中,宿主机和虚拟机都运行在基于MIPS架构的龙芯CPU上。在龙芯CPU内部协处理器0中22号寄存器新增一位控制位,用于控制cache指令能否在宿主机上直接执行。具体的,在增加控制位之前,宿主机在陷入虚拟机时,虚拟机运行于非特权状态,协处理器不可用,cache指令产生异常,所以cache指令不能安全的在虚拟机上直接执行。为了解决上述问题,在增加控制位之后,宿主机在陷入虚拟机时,执行cache指令需查看CPU内部的协处理器0中的22号寄存器。通过22号寄存器上的控制位状态来判断是否允许cache指令在虚拟机中直接执行。其中,设置控制位的状态是通过软件设计实现的,该设计保证了 cache指令在虚拟机上直接运行时的安全性。软件设计上首先,编译虚拟机操作系统,将虚拟机操作系统地址和虚拟机用户程序地址完全分开,使CPU在执行虚拟机吋,不会有地址冲突,以保证cache指令运行时的安全性。
ー个具体的实施例中,通过修改操作系统的编译地址和使用地址,使得操作系统运行和访问的地址均位于管理态下;此外,用户程序是运行在用户态的。具体的,编译虚拟机操作系统,包括两方面一方面是修改虚拟机操作系统的编译地址,另ー方面是修改虚拟机操作系统的使用地址。通过这两方面既保证了虚拟机操作系统代码运行在管理态下,又保证了虚拟机操作系统中数据的访问地址全部位于管理态下,所以虚拟机运行虚拟机操作系统时,虚拟机运行于管理态,虚拟机运行用户程序时,虚拟机运行于用户态,使虚拟机处于不同状态时运行的地址完全分开,不产生冲突。其次,修改虚拟机监视器VMM的设置,使得在宿主机陷入虚拟机之前,判断虚拟机的状态。通过判断结果来设置控制位的状态。具体的,当虚拟机运行操作系统时,因为CPU执行虚拟机操作系统,在上述过程中已经将虚拟机操作系统进行重新编译,所以cache指令在虚拟机中直接执行不会产生异常,所以此时设置控制位为打开,允许cache指令能够在虚拟机中直接执行。当虚拟机退出操作系统时,设置控制位为关闭,禁止cache指令在虚拟机中直接执行。根据上述实施例可以看出,本发明提供系统虚拟机及方法,通过硬件设计增加控制位,保证了非敏感特权指令在虚拟机中直接执行的可行性,并通过软件设计保证非敏感特权指令在虚拟机中直接执行时的安全性。因为非敏感特权指令能够直接并且安全的在虚拟机中执行,所以提高非敏感特权指令在虚拟机中的执行效率。以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了进ー步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种提高非敏感特权指令执行效率的系统虚拟机,包括宿主机和至少ー个虚拟机,所述宿主机和虚拟机运行在CPU上,所述CPU包括寄存器,其特征在干,所述寄存器额外设置控制位,用于控制非敏感特权指令能否在虚拟机中直接执行; 其中,宿主机在陷入虚拟机之前,判断虚拟机的状态,根据判断结果,设置所述控制位。
2.如权利要求I所述的系统虚拟机,其特征在于,所述虚拟机执行虚拟机操作系统时,设置所述控制位为打开,允许非敏感特权指令在虚拟机上直接运行;所述虚拟机退出虚拟机操作系统时,设置所述控制位为关闭,则禁止非敏感特权指令在虚拟机上直接运行。
3.如权利要求I所述的系统虚拟机,其特征在于,所述宿主机包括虚拟机监视器VMM,通过设置所述虚拟机监视器VMM,使得在宿主机进入虚拟机之前,判断虚拟机的状态。
4.一种提高非敏感特权指令执行效率的方法,宿主机和虚拟机运行在CPU上,所述CPU包括寄存器,所述寄存器上有控制非敏感特权指令能否在虚拟机中直接执行的控制位,所述方法步骤具体包括 宿主机在陷入虚拟机之前,判断虚拟机的状态,根据判断结果,设置所述控制位。
5.如权利要求4所述的方法,其特征在于,所述虚拟机执行虚拟机操作系统时,设置所述控制位为打开,则允许非敏感特权指令在虚拟机上直接运行;所述虚拟机退出虚拟机操作系统时,设置所述控制位为关闭,则禁止非敏感特权指令在虚拟机上直接运行。
6.如权利要求4所述的方法,其特征在干,设置虚拟机监视器VMM,使得在宿主机陷入虚拟机之前,判断虚拟机的状态。
7.如权利要求5所述的方法,其特征在干,判断虚拟机的状态根据操作系统的地址和用户程序的地址判断的。
8.如权利要求6所述的方法,其特征在干,通过编译虚拟机操作系统区分操作系统的地址和用户程序的地址。
全文摘要
本发明提供了一种提高非敏感特权指令执行效率的系统虚拟机及方法。该提高非敏感特权指令执行效率的系统虚拟机,包括宿主机和至少一个虚拟机,所述宿主机和虚拟机运行在CPU上,所述CPU包括寄存器,其特征在于,所述寄存器额外设置控制位,用于控制非敏感特权指令能否在虚拟机中直接执行;其中,宿主机在陷入虚拟机之前,判断虚拟机的状态,根据判断结果,设置所述控制位。本发明通过对硬件的简单修改使用软件进行控制,有效的提高的非敏感特权指令在虚拟机中的执行效率,并且保证了其执行时的正确性及安全性。
文档编号G06F9/455GK102855154SQ201210271838
公开日2013年1月2日 申请日期2012年8月1日 优先权日2012年8月1日
发明者台运方, 蔡万伟 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1