运行虚拟机的控制方法和装置制造方法

文档序号:6551942阅读:178来源:国知局
运行虚拟机的控制方法和装置制造方法
【专利摘要】本发明实施例提供一种运行虚拟机的控制方法和装置,该方法包括:在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值;当根据所述宿主机的状态值确定所述宿主机处于宿主机非核心态时,则读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值;当根据所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时,则控制所述第一虚拟机访问所述第一寄存器;通过该运行虚拟机的控制方法和装置,优化了虚拟机访问控制寄存器的过程,减小了虚拟机访问控制寄存器引起的关闭重启次数,降低了宿主机的性能开销。
【专利说明】运行虚拟机的控制方法和装置

【技术领域】
[0001]本发明实施例涉及计算机【技术领域】,尤其涉及一种运行虚拟机的控制方法和装置。

【背景技术】
[0002]随着云计算的流行,系统虚拟化得到了越来越快的发展,越来越多的架构推出了虚拟化的解决方案,例如MIPS架构通常采用半虚拟化硬件规范或全虚拟化硬件规范。其中,全虚拟化硬件规范中,基于已有的精简指令集架构(Micropr-ocessor withoutinterlocked piped stages,简称MIPS),增加了额外的操作模式及相关寄存器,并且增加了双地址翻译及相关寄存器;而半虚拟化硬件规范中,相比与全虚拟硬件规范,只增加了额外的操作模式及相关寄存器。
[0003]具体的,虚拟机在宿主机(也称物理机)上运行时,需要虚拟机的虚拟地址与宿主机的物理地址之间的翻译做以运行支持,从而在全虚拟化的硬件规范中,通过使用TLB (Translat1n Lookaside Buffer,翻译为转换旁视缓冲器)来实现虚拟机的虚拟地址与宿主机的物理地址之间的翻译,因此全虚拟化的硬件规范中,基于已有的MIPS架构下的TLB的基础上,设置了额外的TLB,以供虚拟机使用,相应的,也设置了额外的用于控制该额外的TLB的寄存器。但半虚拟化硬件规范是为了减少MIPS架构下全虚拟化硬件规范实现的复杂度而提出的一种折中方案,相比于全虚拟化方案,不具有额外的TLB,因此也不具有专门供虚拟机使用的用于控制上述额外TLB的寄存器。因此当虚拟机基于已有的MIPS架构,通过访问控制TLB寄存器以使用TLB时,该虚拟机则被迫关闭,需要通过宿主机上的VMM (Virtual Machine Monitor,虚拟机管理器)访问控制TLB寄存器,从而通过TLB以实现虚拟机的虚拟地址与宿主机的物理地址之间的翻译,随后上述被迫关闭的虚拟机再次启动继续运行。
[0004]可以理解的,虚拟机的运行会多次需要进行虚拟机的虚拟地址与宿主机的物理地址之间的翻译,由此导致多次使用控制TLB寄存器以访问TLB的事件,因此在现有技术中,虚拟机需要多次被迫关闭,随后再重启,而虚拟机的多次关闭重启,增大了宿主机的性能开销。


【发明内容】

[0005]本发明实施例提供一种运行虚拟机的控制方法和装置,用于优化虚拟机访问控制寄存器的过程,减小虚拟机访问控制寄存器引起的关闭重启次数,降低性能开销。
[0006]第一方面,本发明实施例提供一种运行虚拟机的控制方法,包括:
[0007]在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值;
[0008]当根据所述宿主机的状态值确定所述宿主机处于宿主机非核心态时,则读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值;
[0009]当根据所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时,则控制所述第一虚拟机访问所述第一寄存器。
[0010]结合第一方面,在第一实施方式中,所述根据所述宿主机的状态值确定所述宿主机处于宿主机非核心态,包括:
[0011]判断所述宿主机的状态值是否标识为非核心状态,当所述宿主机的状态值标识为非核心状态,确定所述宿主机处于宿主机非核心状态;
[0012]所述,根据所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态,包括:
[0013]判断所述虚拟机的状态值是否标识为核心状态,当所述虚拟机的状态值标识为核心状态,确定所述宿主机处于宿主机非核心状态。
[0014]结合第一方面第一实施方式,在第二实施方式中,所述控制方法应用于处理器,且所述处理器中新增有判断逻辑,所述判断逻辑,在执行访问控制寄存器指令时触发,用于判断所述宿主机的状态值是否标识为非核心状态,还用于判断所述虚拟机的状态值是否标识为核心状态。
[0015]结合第一方面至第一方面第二实施方式中的任一种实施方式,在第三实施方式中,当所述第一虚拟机本次运行过程开始之前,所述控制方法还包括:
[0016]将所述第一虚拟机对应的暂存空间所存储的前次现场数据恢复至所述控制寄存器,以使所述第一虚拟机开始本次运行过程;
[0017]所述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
[0018]结合第一方面第三实施方式,在第四实施方式中,当所述第一虚拟机本次运行过程结束时,所述控制方法还包括:
[0019]将所述第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
[0020]结合第一方面第四实施方式中的任一种实施方式,在第四实施方式中,所述第一寄存器为用于控制转换旁视缓冲器TLB的寄存器。
[0021]第二方面,本发明实施例提供一种运行虚拟机的控制装置,包括:
[0022]获取模块,用于在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值;
[0023]确定模块,用于根据所述获取模块获得的所述宿主机的状态值确定所述宿主机处于宿主机非核心态,
[0024]则所述确定模块触发所述获取模块读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值;
[0025]当所述确定模块根据所述获取模块获得的所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时,
[0026]则所述确定模块触发控制模块,所述控制模块用于控制所述第一虚拟机访问所述第一寄存器。
[0027]结合第二方面,在第一实施方式中,所述确定模块,包括:
[0028]第一判断单元,用于判断所述获取模块获得的宿主机的状态值是否标识为非核心状态,当所述宿主机的状态值标识为非核心状态,确定所述宿主机处于宿主机非核心状态;
[0029]第二判断单元,用于判断所述获取单元获取的虚拟机的状态值是否标识为核心状态,当所述虚拟机的状态值标识为核心状态,确定所述宿主机处于宿主机非核心状态。
[0030]结合第二方面第一或第二实施方式,在第三实施方式中,所述控制装置还包括:
[0031]存储模块,用于将所述第一虚拟机对应的暂存空间所存储的前次现场数据恢复至所述控制寄存器,以使所述第一虚拟机开始本次运行过程;
[0032]所述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
[0033]结合第二方面第三实施方式,在第四实施方式中,所述存储模块还用于
[0034]将所述第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
[0035]结合第二方面第四实施方式,在第五实施方式中,所述第一寄存器为用于控制转换旁视缓冲器TLB的寄存器。
[0036]在本发明实施例提供的运行虚拟机的控制方法和装置,当第一虚拟机访问控制寄存器中的第一寄存器时,即使宿主机处于非核心态,但根据第一虚拟机的状态位获知第一虚拟机处于核心态,便可控制该第一虚拟机访问第一寄存器,不需要使第一虚拟机重启,便可完成对第一寄存器的访问,从而减小了宿主机上虚拟机发生重启的次数,进而可减小宿主机用于重启虚拟机的开销。

【专利附图】

【附图说明】
[0037]图1为本发明运行虚拟机的控制方法实施例一的流程图;
[0038]图2为本发明运行虚拟机的控制方法实施例二的流程图;
[0039]图3为本发明运行虚拟机的控制装置实施例一的结构图;
[0040]图4为本发明运行虚拟机的控制装置实施例二的结构图。

【具体实施方式】
[0041]图1为本发明运行虚拟机的控制方法实施例一的流程图。如图1所示,本实施例的执行主体为运行虚拟机的控制装置,该控制装置可以采用软件和/或硬件的方式实现,优选的,该控制装置可以设置在承载虚拟机的宿主机(也称宿主机)上,具体的,该控制方法包括:
[0042]S101、在第一虚拟机的本次运行过程中,当第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值。
[0043]上述第一虚拟机为宿主机当前运行的虚拟机,可以理解的,虚拟机的运行需要宿主机作为承载的载体,因此可以将虚拟机看作宿主机上的一种进程,则虚拟机作为进程是按照进程内的指令在宿主机上运行,当某一条指令指示该虚拟机访问控制寄存器时,运行虚拟机的控制装置可以访问宿主机的状态寄存器,以读取宿主机的状态位,从而获得宿主机的状态值。
[0044]S102、当根据宿主机的状态值确定宿主机处于宿主机非核心态时,读取第一虚拟机的状态位,获得第一虚拟机的状态值。
[0045]基于已有的MIPS架构,宿主机上的虚拟机访问控制寄存器的行为是不能在宿主机非核心态下发生的,若发生虚拟机在宿主机非核心态下访问控制寄存器的特殊情况时,则由宿主机处理这种特殊情况,并且虚拟机进行重启;在本实施例中,为了实现第一虚拟机不发生重启便可访问控制寄存器,因此,本实施例中运行虚拟机的控制装置进一步获取第一虚拟机的状态值;具体的,上述控制装置继续访问状态寄存器,读取第一虚拟机的状态位,以获得第一虚拟机的状态值;其中控制装置在本步骤所访问的状态寄存器与SlOl中访问的状态寄存器可以为同一个,但根据宿主机的系统架构的不同,如虚拟机的状态位由另一个状态寄存器保存时,则本步骤中控制装置所访问的状态寄存器与SlOl中的状态寄存器可以不一样。
[0046]S103、当根据虚拟机的状态值确定第一虚拟机处于虚拟机核心态时,则控制第一虚拟机访问第一寄存器。
[0047]可以理解的,宿主机上运行的一个虚拟机相当于在宿主机上的虚拟了一个完整的计算机系统,则独立的以该虚拟的计算机系统的角度来看,该虚拟的计算机系统也是具有核心态和非核心态的区分;基于已有的MIPS架构,上述第一寄存器属于特权资源,仅能在虚拟机的核心态下被访问,因此运行虚拟机的控制装置只能允许第一虚拟机在虚拟机核心态下才可访问第一寄存器。
[0048]具体的,在实际应用中,上述控制寄存器中的第一寄存器可以为用于控制转换旁视缓冲器TLB的寄存器,而第一虚拟机访问第一寄存器时,根据实际应用的不同,可能会更改第一寄存器中所存储的数据,或者查询第一寄存器中的数据。
[0049]举例来说,第一虚拟机需要使用TLB实现虚拟机的虚拟地址与宿主机的物理地址之间的翻译时,只要根据S103确定第一虚拟机处于虚拟机核心态下,运行虚拟机的控制装置可以控制第一虚拟机直接访问控制TLB寄存器,从而完成对TLB的操作,例如增加或修改地址翻译的内容。
[0050]在本实施例中,当第一虚拟机访问控制寄存器中的第一寄存器时,即使宿主机处于非核心态,但运行虚拟机的控制装置根据第一虚拟机的状态位获知第一虚拟机处于核心态,便可控制该第一虚拟机访问第一寄存器,不需要使第一虚拟机重启,便可完成对第一寄存器的访问,从而减小了宿主机上虚拟机发生重启的次数,进而可减小宿主机用于重启虚拟机的开销。
[0051]图2为本发明运行虚拟机的控制方法实施例二的流程图。如图2所示,本实施例是在图1所示的实施例的基础上,做出进一步的描述,具体的,本实施例的执行主体仍然为运行虚拟机的控制装置,该运行虚拟机的控制装置集成在本实施例运行虚拟机的控制方法所应用的处理器中,所述处理器与现有技术相比,新增由判断逻辑,该判断逻辑在运行虚拟机的控制装置执行访问控制寄存器指令时触发,具体如下:
[0052]S201、将第一虚拟机对应的暂存空间所存储的前次现场数据恢复至控制寄存器,以使第一虚拟机开始本次运行过程。
[0053]可选的,本实施例中的虚拟机可以为KVM(Kernel-based Virtual Machine,基于内核的虚拟机),其中现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
[0054]如前述实施例中所述,虚拟机在每一次的运行过程中,由于运行虚拟机的控制装置控制第一虚拟机访问了控制寄存器,而虚拟机对控制寄存器的访问会更改控制寄存器中的数据,即虚拟机在一次运行过程中,使控制寄存器中的数据发生更新,当虚拟机完成本次运行过程后,宿主机继续运行其他任务,若前述更新后的数据仍然存储在控制寄存器中,则会影响宿主机的正常运行,且宿主机此时的运行也会访问控制寄存器,则会将控制寄存器中虚拟机更新的数据覆盖或修改,则上述虚拟机再次运行时,无法正常运行,因此,通常在虚拟机结束一次运行过程的同时,将控制寄存器中所存储的、对应于该虚拟机本次运行过程的更新后的数据,作为本次的现场数据(context)保存至该虚拟机对应的暂存空间中,以便虚拟机在下次运行时进行现场恢复。常见的index寄存器、EntryHi寄存器等,虚拟机在一次运行过程中会访问这些寄存器,并使这些寄存器中的数据发生更新,举例来说,在虚拟机A的第一次运行过程中,虚拟机A访问控制寄存器,并将用于表示翻译地址的变量i的赋值由0001更改为0101,若虚拟机I在进行第二次运行之前,若针对虚拟机A没有进行现场数据恢复,则虚拟机A在控制寄存器中无法获得正确信息“i = 0101”,从而虚拟机A无法确定正确的地址,则虚拟机A的运行会发生错误,不可正常运行,因此需要执行S201,针对第一虚拟机进行现场数据的恢复;上述“第一次”和“第二次”为相对概念,即在tl时刻运行了虚拟机A,在t2时刻再次运行虚拟机A,则对于t2时刻来说,tl时刻运行的虚拟机过程为第一次运行,而t2时刻则为第二次运行;可以理解的,当t3时刻再次运行虚拟机A时,对于t3时刻来说,t2时刻则为第一次运行,t3时刻为第二次运行;
[0055]具体的,当第一虚拟机在前次运行结束时,便将针对第一虚拟机的前次现场数据存储至该第一虚拟机对应的暂存空间,则在第一虚拟机开始本次运行过程之前,将第一虚拟机对应的暂存空间所存储的前次现场数据恢复至控制寄存器,以使第一虚拟机开始本次运行过程;其中暂存空间是宿主机上针对该宿主机所承载的各个虚拟机对应设置的各个存储空间,该各个暂存空间用于存储对应的各个虚拟机的现场数据。
[0056]当然可以理解的,若该第一虚拟机是首次在宿主机上运行则上述暂存空间存储的是运行虚拟机的初始化数据,可以将该初始化数据看做第一虚拟机进行本次运行所需的现场数据。
[0057]S202、在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时触发判断逻辑;
[0058]S203、判断逻辑读取宿主机的状态位,获得宿主机的状态值。
[0059]S204判断逻辑判断所述宿主机的状态值是否标识为非核心状态;若是,执行S205 ;若否,则停止。
[0060]当所述宿主机的状态值标识为非核心状态,判断逻辑确定所述宿主机处于宿主机非核心状态。
[0061]基于现有的MIPS架构,虚拟机不能在宿主机的核心态下运行,因此当通过S204判断为宿主机核心态,则说明当前宿主机运行的程序是非虚拟机,则本实施例不再实施,即运行虚拟机的控制装置停止工作。
[0062]S205、判断逻辑读取第一虚拟机的状态位,获得第一虚拟机的状态值。
[0063]S206、判断逻辑判断第一虚拟机的状态值是否标识为核心状态;若是,执行S207 ;若否,则执行S208。
[0064]S207、基于判断逻辑判断第一虚拟机处于虚拟机核心态,控制第一虚拟机访问第一寄存器。
[0065]具体参照S103,且在执行完本步骤后继续运行该第一虚拟机,可以理解的,在随后的运行过程中,当第一虚拟机根据指令需要再次访问控制寄存器时,则返回S202,直至该第一虚拟机的本次运行过程结束,则执行S208。
[0066]S208、将第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
[0067]上述本次现场数据存储至第一虚拟机对应的暂存空间后,若第一虚拟机需要再一次运行时,则运行虚拟机的控制装置将上述本次现场数据则作为前次现场数据,再次由前述S201开始控制第一虚拟机的下一次运行过程。
[0068]上述S208的发生情况分为两种,一种是第一虚拟机正常运行结束,则执行S208之后则停止,一种是第一虚拟机需要访问第一寄存器,但根据S206的判断,不能控制第一虚拟机直接访问第一寄存器,则需关闭第一虚拟机,在关闭之前,需要执行S208,随后执行S209。
[0069]S209、控制第一虚拟机关闭,并控制VMM代替第一虚拟机访问第一寄存器。
[0070]基于已有的MIPS架构,宿主机上承载的虚拟机系统可以简单的分为宿主机承载的虚拟机和虚拟机管理器。虚拟机在宿主机上运行时,可进行普通的操作,例如用户程序;但虚拟机的运行过程中会出现特殊情况,如某些特权指令(例如上述访问第一寄存器),执行某些有害指令等;当发生这些特殊情况时,运行虚拟机的控制装置关闭当前正在运行的虚拟机,并开启虚拟机管理器,由虚拟机管理器在宿主机的核心态下处理该特殊情况,待虚拟机管理器处理完成后,再次运行该虚拟机,具体可参照现有技术,在此不再赘述;
[0071]可以理解的,将第一虚拟机(虚拟机A)关闭,VMM代替第一虚拟机访问第一寄存器之后,虚拟机A还需继续运行,则将虚拟机A作为第一虚拟机,由S201处重新开始执行。
[0072]在本实施例中,当第一虚拟机访问控制寄存器中的第一寄存器时,即使宿主机处于非核心态,但运行虚拟机的控制装置根据第一虚拟机的状态位获知第一虚拟机处于核心态,便可控制该第一虚拟机访问第一寄存器,不需要使第一虚拟机重启,便可完成对第一寄存器的访问,从而减小了宿主机上虚拟机发生重启的次数,进而可减小宿主机用于重启虚拟机的开销。
[0073]图3为本发明一种运行虚拟机的控制装置实施例一的结构图。如图3所示,该控制装置包括:
[0074]获取模块31,用于在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值;
[0075]确定模块32,用于根据所述获取模块31获得的所述宿主机的状态值确定所述宿主机处于宿主机非核心态,
[0076]则所述确定模块32触发所述获取模块31读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值;
[0077]当所述确定模块32根据所述获取模块31获得的所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时,
[0078]则所述确定模块32触发控制模块33,所述控制模块33用于控制所述第一虚拟机访问所述第一寄存器。
[0079]在本实施例中,当第一虚拟机访问控制寄存器中的第一寄存器时,即使宿主机处于非核心态,但运行虚拟机的控制装置根据第一虚拟机的状态位获知第一虚拟机处于核心态,便可控制该第一虚拟机访问第一寄存器,不需要使第一虚拟机重启,便可完成对第一寄存器的访问,从而减小了宿主机上虚拟机发生重启的次数,进而可减小宿主机用于重启虚拟机的开销。
[0080]图4为本发明运行虚拟机的控制装置实施例二的结构图。如图4所示,本实施例是在图3所示的实施例的基础上做出进一步描述,上述确定模块32包括第一判断单元321,用于判断所述获取模块获得的宿主机的状态值是否标识为非核心状态,当所述宿主机的状态值标识为非核心状态,确定所述宿主机处于宿主机非核心状态;第二判断单元322,用于判断所述获取单元获取的虚拟机的状态值是否标识为核心状态,当所述虚拟机的状态值标识为核心状态,确定所述宿主机处于宿主机非核心状态。
[0081]进一步的,所述控制装置还包括存储模块34,用于将所述第一虚拟机对应的暂存空间所存储的前次现场数据恢复至所述控制寄存器,以使所述第一虚拟机开始本次运行过程;
[0082]所述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
[0083]进一步的,所述存储模块34还用于
[0084]将所述第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
[0085]进一步的,所述第一寄存器为用于控制转换旁视缓冲器TLB的寄存器。
[0086]本实施例中的第一判断单元321和第二判断单元322在实际应用中,具体可以为前述判断逻辑,该判断逻辑可以为软件和/或硬件,例如该判断逻辑包括处理器中新增的逻辑判断电路,或者是应用在处理器上的逻辑判断程序,或者是逻辑判断电路和控制逻辑判断电路的程序。
[0087]在本实施例中,当第一虚拟机访问控制寄存器中的第一寄存器时,即使宿主机处于非核心态,但运行虚拟机的控制装置根据第一虚拟机的状态位获知第一虚拟机处于核心态,便可控制该第一虚拟机访问第一寄存器,不需要使第一虚拟机重启,便可完成对第一寄存器的访问,从而减小了宿主机上虚拟机发生重启的次数,进而可减小宿主机用于重启虚拟机的开销。
[0088]需要补充说明的是,上述各个装置实施例中的各个模块对应执行上述各个方法实施例中的各个步骤,具体的执行过程和技术效果可参考上述各个方法实施例,在此不再赘述。
[0089]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0090]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种运行虚拟机的控制方法,其特征在于,包括: 在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值; 当根据所述宿主机的状态值确定所述宿主机处于宿主机非核心态时,则读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值; 当根据所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时,则控制所述第一虚拟机访问所述第一寄存器。
2.根据权利要求1所述的控制方法,其特征在于, 所述根据所述宿主机的状态值确定所述宿主机处于宿主机非核心态,包括: 判断所述宿主机的状态值是否标识为非核心状态,当所述宿主机的状态值标识为非核心状态,确定所述宿主机处于宿主机非核心状态; 所述,根据所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态,包括: 判断所述虚拟机的状态值是否标识为核心状态,当所述虚拟机的状态值标识为核心状态,确定所述宿主机处于宿主机非核心状态。
3.根据权利要求2所述的控制方法,其特征在于,所述控制方法应用于处理器,且所述处理器中新增有判断逻辑,所述判断逻辑,在执行访问控制寄存器指令时触发,用于判断所述宿主机的状态值是否 标识为非核心状态,还用于判断所述虚拟机的状态值是否标识为核心状态。
4.根据权利要求1-3任一项所述的控制方法,其特征在于,当所述第一虚拟机本次运行过程开始之前,所述控制方法还包括: 将所述第一虚拟机对应的暂存空间所存储的前次现场数据恢复至所述控制寄存器,以使所述第一虚拟机开始本次运行过程; 所述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
5.根据权利要求4所述的控制方法,其特征在于,当所述第一虚拟机本次运行过程结束时,所述控制方法还包括: 将所述第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
6.根据权利要求5所述的控制方法,其特征在于,所述第一寄存器为用于控制转换旁视缓冲器TLB的寄存器。
7.一种运行虚拟机的控制装置,其特征在于,包括: 获取模块,用于在第一虚拟机的本次运行过程中,当所述第一虚拟机需访问控制寄存器中的第一寄存器时,读取宿主机的状态位,获得宿主机的状态值; 确定模块,用于根据所述获取模块获得的所述宿主机的状态值确定所述宿主机处于宿主机非核心态, 则所述确定模块触发所述获取模块读取所述第一虚拟机的状态位,获得所述第一虚拟机的状态值; 当所述确定模块根据所述获取模块获得的所述虚拟机的状态值确定所述第一虚拟机处于虚拟机核心态时, 则所述确定模块触发控制模块,所述控制模块用于控制所述第一虚拟机访问所述第一寄存器。
8.根据权利要求7所述的控制装置,其特征在于,所述确定模块,包括: 第一判断单元,用于判断所述获取模块获得的宿主机的状态值是否标识为非核心状态,当所述宿主机的状态值标识为非核心状态,确定所述宿主机处于宿主机非核心状态;第二判断单元,用于判断所述获取单元获取的虚拟机的状态值是否标识为核心状态,当所述虚拟机的状态值标识为核心状态,确定所述宿主机处于宿主机非核心状态。
9.根据权利要求7或8所述的控制装置,其特征在于,所述控制装置还包括: 存储模块,用于将所述第一虚拟机对应的暂存空间所存储的前次现场数据恢复至所述控制寄存器,以使所述第一虚拟机开始本次运行过程; 所述现场数据用于在虚拟机第一次运行结束之后保证该虚拟机正确进行第二次运行。
10.根据权利要求9所述的控制装置,其特征在于,所述存储模块还用于 将所述第一虚拟机的本次现场数据存储至所述第一虚拟机对应的暂存空间。
11.根据权利要求10所述的控制装置,其特征在于,所述第一寄存器为用于控制转换旁视缓冲 器TLB的寄存器。
【文档编号】G06F9/455GK104050017SQ201410310784
【公开日】2014年9月17日 申请日期:2014年7月1日 优先权日:2014年7月1日
【发明者】台运方, 蔡万伟, 刘奇, 张戈 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1