CN115840618A - 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 - Google Patents
一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 Download PDFInfo
- Publication number
- CN115840618A CN115840618A CN202211664900.7A CN202211664900A CN115840618A CN 115840618 A CN115840618 A CN 115840618A CN 202211664900 A CN202211664900 A CN 202211664900A CN 115840618 A CN115840618 A CN 115840618A
- Authority
- CN
- China
- Prior art keywords
- address
- register
- virtual machine
- hypervisor
- accessing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置,所述方法包括:在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作。本发明的技术方案通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
Description
技术领域
本方案属于计算机操作系统领域,尤其涉及一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置。
背景技术
由于hypervisor需要支撑多个虚拟机vm的运行,而往往硬件资源有限,所以hypervisor需要模拟相关的硬件,以支持各个vm的运行。对于硬件的模拟,通常采用“陷入再模拟”的方法。通过设置模拟设备的地址空间为kernel和用户态不可读写权限,当kernel或用户态读写该地址时,陷入到hypervisor中,hypervisor需要通过该异常地址,分析获得该地址对应的模拟设备,再根据设备基地址,和读写地址,获取到指定设备的指定寄存器。
对于设备寄存器,不同的设备寄存器数量不同。为区别某个设备的不同寄存器,通常采用如下的多个if语句逐一对比判断策略来对不同寄存器做辨别操作。
if(addr==reg1)
{
...
}else if(addr==reg2)
{
...
}
...
else if(addr==regN)
{
...
}
或者采用Switch+Case逐一对比判断策略来对不同寄存器做辨别操作。
Switch(address)
{
Case reg1:
...
Case reg2:
...
Case regN:
...
}
显然,该方式的性能随着寄存器数量的增加了降低。因此,会对hypervisor整体的性能造成较大影响。
发明内容
有鉴于此,本发明实施例提供了一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置,所述方法包括:在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作。本发明的技术方案通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
第一方面,本发明实施例提供了一种hypervisor中虚拟机模拟设备寄存器的访问方法,包括:在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号,虚拟机VM是运行在hypervisor上的虚拟机,模拟设备D是虚拟机VM的任一模拟设备;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。
由上,本发明实施例的技术方案通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
在第一方面的一种可能实施方式中,还包括:虚拟机VM启动时Hypervisor为虚拟机VM的每个模拟设备创建寄存器指针数组,并把该模拟设备的各寄存器的逻辑处理程序的地址指针注册到该寄存器指针数组中。
由上,本发明实施例的技术方案通过把模拟设备的各寄存器的逻辑处理程序的地址指针注册到该寄存器指针数组中,从而通过该寄存器指针数组快速获得该模拟设备各寄存器的逻辑处理程序的地址指针。
在第一方面的一种可能实施方式中,所述Hypervisor根据第一地址获得模拟设备D中被访问寄存器的编号,包括:根据第一地址在虚拟机VM内部的地址区间确定所访问设备为模拟设备D;根据模拟设备D的基地址和第一地址获得第二地址,第二地址为所访问寄存器在模拟设备D的内部地址;根据第二地址获得所述编号。
由上,本发明实施例的技术方案根据虚拟机的第一地址获得被访问的寄存器在相应的模拟设备的内部地址,从而获得该寄存器的编号,从而用于快速获得该寄存器的逻辑处理程序的地址指针。
在第一方面的一种可能实施方式中,所述根据第二地址获得所述编号,包括:根据第二地址通过第一HASH表获得所述编号,每个虚拟机的每个模拟设备对应一个第一HASH表,该第一HASH表的键索引为相应的第二地址,键值为该相应的第二地址对应的寄存器编号。
由上,本发明实施例的技术方案根据第二HASH表快速获得被访问寄存器的编号,从而进一步提高Hypervisor的性能。
在第一方面的一种可能实施方式中,所述Hypervisor根据第一地址获得模拟设备D中被访问寄存器的编号,包括:根据第一地址通过第二HASH表获得所述编号,每个虚拟机对应一个第二HASH表,该第二HASH表的键索引为相应的第一地址,键值为该相应的第一地址对应的寄存器编号。
由上,本发明实施例的技术方案通过第一HASH表根据第一地址快速获得被访问寄存器的编号,从而进一步提高Hypervisor的性能。
在第一方面的一种可能实施方式中,还包括:虚拟机VM启动时Hypervisor把第一地址设置为不可访问,使虚拟机VM访问第一地址时陷入到Hypervisor中。
由上,本发明实施例的技术方案通过把第一地址设置为不可访问,从而使虚拟机VM访问第一地址时陷入到Hypervisor中。
在第一方面的一种可能实施方式中,所述虚拟机VM访问模拟设备D的第一地址,具体包括:虚拟机VM的用户态或核心态访问第一地址,该访问包括读或写。
由上,本发明实施例的技术方案支持虚拟机VM的用户态或核心态快速访问虚拟设备的寄存器。
第二方面,本发明实施例提供了一种hypervisor中虚拟机模拟设备寄存器的访问装置,包括:寄存器编号获得模块,用于在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号,虚拟机VM是运行在hypervisor上的虚拟机,模拟设备D是虚拟机VM的任一模拟设备;程序索引获得模块,用于Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。
由上,本发明实施例的技术方案通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
在第二方面的一种可能实施方式中,还包括寄存器表格注册模块,用于虚拟机VM启动时Hypervisor为虚拟机VM的每个模拟设备创建寄存器指针数组,并把该模拟设备的各寄存器的逻辑处理程序的地址指针注册到该寄存器指针数组中。
由上,本发明实施例的技术方案通过把模拟设备的各寄存器的逻辑处理程序的地址指针注册到该寄存器指针数组中,从而通过该寄存器指针数组快速获得该模拟设备各寄存器的逻辑处理程序的地址指针。
在第二方面的一种可能实施方式中,所述寄存器编号获得模块包括:第二地址获得模块,用于根据第一地址在虚拟机VM内部的地址区间确定所访问设备为模拟设备D;编号快速获得模块,用于根据模拟设备D的基地址和第一地址获得第二地址,第二地址为所访问寄存器在模拟设备D的内部地址;根据第二地址获得所述编号。
由上,本发明实施例的技术方案根据虚拟机的第一地址获得被访问的寄存器在相应的模拟设备的内部地址,从而获得该寄存器的编号,从而用于快速获得该寄存器的逻辑处理程序的地址指针。
在第二方面的一种可能实施方式中,所述编号快速获得模块具体用于根据第二地址通过第一HASH表获得所述编号,每个虚拟机的每个模拟设备对应一个第一HASH表,该第一HASH表的键索引为相应的第二地址,键值为该相应的第二地址对应的寄存器编号。
由上,本发明实施例的技术方案根据第二HASH表快速获得被访问寄存器的编号,从而进一步提高Hypervisor的性能。
在第二方面的一种可能实施方式中,所述寄存器编号获得模块具体用于,包括:根据第一地址通过第二HASH表获得所述编号,每个虚拟机对应一个第二HASH表,该第二HASH表的键索引为相应的第一地址,键值为该相应的第一地址对应的寄存器编号。
由上,本发明实施例的技术方案通过第一HASH表根据第一地址快速获得被访问寄存器的编号,从而进一步提高Hypervisor的性能。
在第二方面的一种可能实施方式中,还包括:寄存器地址设置模块,用于虚拟机VM启动时Hypervisor把第一地址设置为不可访问,使虚拟机VM访问第一地址时陷入到Hypervisor中。
由上,本发明实施例的技术方案通过把第一地址设置为不可访问,从而使虚拟机VM访问第一地址时陷入到Hypervisor中。
在第二方面的一种可能实施方式中,所述虚拟机VM访问模拟设备D的第一地址,具体包括:虚拟机VM的用户态或核心态访问第一地址,该访问包括读或写。
由上,本发明实施例的技术方案支持虚拟机VM的用户态或核心态快速访问虚拟设备的寄存器。
第三方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。
附图说明
图1为本发明的一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的流程示意图;
图2为本发明的一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的流程示意图;
图3为本发明的一种hypervisor中虚拟机模拟设备寄存器的访问装置实施例一的结构示意图;
图4为本发明的一种hypervisor中虚拟机模拟设备寄存器的访问装置实施例二的结构示意图;
图5为本发明各实施例计算设备的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
本发明实施例提供了一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置,所述方法包括:在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作。本发明的技术方案通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
下面结合附图介绍本发明的各实施例。
首先结合图1介绍本发明的一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一。
在一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一中,hypervisor为每个虚拟机各模拟设备注册一个寄存器指针数组,虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。本实施例通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
图1示出了一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的流程,包括步骤S110至S140。
为了叙述方便,以访问虚拟机VM的模拟设备D的一个寄存器为例。
S110:Hypervisor在创建虚拟机VM时为虚拟机的模拟设备D注册一个指针数组Reg_handler[n]。
其中,虚拟机VM的每个模拟设备都注册一个指针数组,该模拟设备D的指针数组中每个元素的索引n为模拟设备D的一个寄存器的识别号,元素值为该寄存器对应的逻辑处理程序指针。
其中,虚拟机VM访问模拟设备D的一个寄存器时,本质上为获得相应的逻辑处理程序,并执行该逻辑处理程序,从而获得寄存器的访问结果。
S120:虚拟机VM通过模拟设备D的第一地址访问模拟设备D的寄存器,且被陷入Hypervisor中。
其中,虚拟机VM访问模拟设备D的第一地址包括:虚拟机VM的用户态或核心态访问第一地址。
其中,第一地址为模拟设备D任一寄存器在虚拟机VM的内部地址,各第一地址在Hypervisor启动虚拟机VM时设置为不可读写,对虚拟机VM的用户态或核心态均为不可访问,虚拟机VM的用户态或核心态访问各第一地址会陷入到Hypervisor中。
S130:Hypervisor根据第一地址获得模拟设备D中被访问的寄存器编号。
在一些实施例中,Hypervisor先根据第一地址所在区间确定所访问设备为模拟设备D,接着根据模拟设备D的基地址和第一地址获得第二地址,第二地址为所访问寄存器在模拟设备D的内部地址;再通过模拟设备D的第一HASH表根据第二地址快速获得寄存器编号,该第一HASH表的键索引为第二地址,键值为寄存器编号。
在另一些实施例中,Hypervisor利用模拟设备D的第二HASH表根据第一地址快速获得寄存器编号,该第二HASH表的键索引为第一地址,键值为寄存器编号。
S140:Hypervisor根据获得的寄存器编号查询模拟设备D的寄存器指针数组Reg_handler[n],获得被访问寄存器对应的逻辑处理程序的指针,从而通过运行该逻辑处理程序来获得访问结果。
由上,根据获得的寄存器编号查询模拟设备D的寄存器指针数组获得被访问寄存器对应的逻辑处理程序的指针,相对于逐一辨别的方式提高了获得寄存器对应的逻辑处理程序的速度。
综上,一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号;Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。本实施例通过查询寄存器指针数组的方式快速获得被访问寄存器的逻辑处理程序的地址,相对于通过逐一辨别的方式,快速获得访问结果,提升了hypervisor性能。
下面结合图2介绍本发明的一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二。
一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二继承了一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的方法,具有一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的优点,并通过HASH表快速获得被访问模拟设备的寄存器编号,从而进一步提高hypervisor的性能。
图2示出了一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的流程,包括步骤S210至S260。
为了叙述方便,继续以访问虚拟机VM的模拟设备D的一个寄存器为例。
S210:Hypervisor启动虚拟机VM时为模拟设备D注册一个寄存器指针数组Reg_handler[n],并为模拟设备D建立一个HASH表。
其中,寄存器指针数组Reg_handler[n]同一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一中的寄存器指针数组。
其中,模拟设备D的HASH表的键索引为模拟设备D各寄存器在虚拟机VM内部第二地址,键值为该相应的第二地址对应的寄存器编号。
其中,HASH表需要建立键索引与表项位置一一对应关系,在虚拟机VM启动后就不再修改。寄存器指针数组可以后续修改,示例地,当通过更新模拟设备D的驱动程序时修改一些寄存器对应的逻辑处理程序,其地址指针可能会变化,从而更新模拟设备D的寄存器指针数组。采用HASH表+寄存器指针数组结合的方式不仅查询速度快,还便于后期模拟设备D的升级。
S220:Hypervisor启动虚拟机VM时还把虚拟机VM的模拟设备D的各寄存器设为不可访问。
其中,模拟设备D的各寄存器在虚拟机VM内部地址在Hypervisor启动虚拟机VM时设置为不可读写,对虚拟机VM的用户态或核心态均为不可访问,虚拟机VM的用户态或核心态访问各第一地址会陷入到Hypervisor中。
S230:虚拟机VM在启动后通过访问模拟设备D的第一地址来访问虚拟设备D的寄存器,且被陷入Hypervisor中。
其中,第一地址为在虚拟机VM内模拟设备D任一寄存器的地址,各第一地址在Hypervisor初始化时设置为不可读写,访问各第一地址会陷入Hypervisor中。
其中,虚拟机VM访问第一地址包括:虚拟机的用户态或核心态访问第一地址。
S240:Hypervisor根据第一地址在虚拟机VM内部所在区间确定所访问设备为模拟设备D,并根据模拟设备D的基地址和第一地址获得第二地址。
其中,虚拟机VM中每个模拟设备的地址区间是在虚拟机VM预先分配的,每个模拟设备在虚拟机VM内的基地址也是预先的。
其中,第二地址为所访问寄存器在模拟设备D的内部地址,第一地址减去模拟设备D的基地址就是第二地址。
S250:Hypervisor通过模拟设备D的HASH表根据第二地址获得寄存器编号。
由上,通过模拟设备D的HASH表根据第二地址可以快速获得寄存器编号,相对于一一判别的方式,HASH表查询方式更快。
S260:Hypervisor根据获得的寄存器编号查询指针数组Reg_handler[n],获得所访问的空间地址对应的逻辑处理程序,从而通过该逻辑处理程序处理完成访问。
其中,本步骤的原理和优点请参考一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的步骤S140。
综上,一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二通过HASH表快速获得被访问模拟设备的寄存器编号,从而进一步提高hypervisor的性能。
下面结合图3和图4介绍本发明的各装置实施例。
图3示出了一种hypervisor中虚拟机模拟设备寄存器的访问装置实施例一的结构,包括:寄存器表格注册模块310、寄存器访问模块320、寄存器编号获得模块330和程序指针获得模块340。
为了叙述方便,以访问虚拟机VM的模拟设备D的一个寄存器为例。
寄存器表格注册模块310,用于Hypervisor在创建虚拟机VM时为虚拟机的模拟设备D注册一个指针数组Reg_handler[n]。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的步骤S110。
寄存器访问模块320用于虚拟机VM通过模拟设备D的第一地址访问虚拟设备的寄存器,且被陷入Hypervisor中。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的步骤S120。
寄存器编号获得模块330,用于Hypervisor根据第一地址获得模拟设备D中被访问的寄存器编号。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的步骤S130。
程序指针获得模块340,用于Hypervisor根据获得的寄存器编号查询模拟设备D的寄存器指针数组Reg_handler[n],获得被访问寄存器对应的逻辑处理程序的指针,从而通过运行该逻辑处理程序来获得访问结果。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例一的步骤S140。
图4示出了一种hypervisor中虚拟机模拟设备寄存器的访问装置实施例二的结构,包括:寄存器表格注册模块410、寄存器地址设置模块420、寄存器访问模块430、第二地址获得模块440、编号快速获得模块450和程序指针获得模块460。
为了叙述方便,以访问虚拟机VM的模拟设备D的一个寄存器为例。
寄存器表格注册模块410用于Hypervisor启动虚拟机VM时为模拟设备D注册一个寄存器指针数组Reg_handler[n],并为模拟设备D建立一个HASH表。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S210。
寄存器地址设置模块420用于Hypervisor启动虚拟机VM时还把虚拟机VM的模拟设备D的各寄存器设为不可访问。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S220。
寄存器访问模块430用于虚拟机VM在启动后通过访问模拟设备D的第一地址来访问虚拟设备D的寄存器,且被陷入Hypervisor中。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S230。
第二地址获得模块440用于Hypervisor根据第一地址在虚拟机VM内部所在区间确定所访问设备为模拟设备D,并根据模拟设备D的基地址和第一地址获得第二地址。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S240。
编号快速获得模块450用于Hypervisor通过HASH表根据第二地址获得寄存器编号。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S250。
程序指针获得模块460用于Hypervisor根据获得的寄存器编号查询指针数组Reg_handler[n],获得所访问的空间地址对应的逻辑处理程序,从而通过该逻辑处理程序处理完成访问。其原理和方法请参照一种hypervisor中虚拟机模拟设备寄存器的访问方法实施例二的步骤S260。
本发明实施例还提供了一种计算设备,下面图5详细介绍。
该计算设备500包括,处理器510、存储器520、通信接口530、总线540。
应理解,该图所示的计算设备500中的通信接口530可以用于与其他设备之间进行通信。
其中,该处理器510可以与存储器520连接。该存储器520可以用于存储该程序代码和数据。因此,该存储器520可以是处理器510内部的存储单元,也可以是与处理器510独立的外部存储单元,还可以是包括处理器510内部的存储单元和与处理器510独立的外部存储单元的部件。
可选的,计算设备500还可以包括总线540。其中,存储器520、通信接口530可以通过总线540与处理器510连接。总线540可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线540可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器510可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器510采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器520可以包括只读存储器和随机存取存储器,并向处理器510提供指令和数据。处理器510的一部分还可以包括非易失性随机存取存储器。例如,处理器510还可以存储设备类型的信息。
在计算设备500运行时,所述处理器510执行所述存储器520中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备500可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备500中的各个模块的上述和其它操作和/或功能分别为了实现本方法实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本方法实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述译码方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。
Claims (10)
1.一种hypervisor中虚拟机模拟设备寄存器的访问方法,其特征在于,包括:
在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号,虚拟机VM是运行在hypervisor上的虚拟机,模拟设备D是虚拟机VM的任一模拟设备;
Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。
2.根据权利要求1所述方法,其特征在于,还包括:
虚拟机VM启动时Hypervisor为虚拟机VM的每个模拟设备创建寄存器指针数组,并把该模拟设备的各寄存器的逻辑处理程序的地址指针注册到该寄存器指针数组中。
3.根据权利要求1所述方法,其特征在于,所述Hypervisor根据第一地址获得模拟设备D中被访问寄存器的编号,包括:
根据第一地址在虚拟机VM内部的地址区间确定所访问设备为模拟设备D;
根据模拟设备D的基地址和第一地址获得第二地址,第二地址为所访问寄存器在模拟设备D的内部地址;
根据第二地址获得所述编号。
4.根据权利要求1所述方法,其特征在于,所述根据第二地址获得所述编号,包括:
根据第二地址通过第一HASH表获得所述编号,每个虚拟机的每个模拟设备对应一个第一HASH表,该第一HASH表的键索引为相应的第二地址,键值为该相应的第二地址对应的寄存器编号。
5.根据权利要求1所述方法,其特征在于,所述Hypervisor根据第一地址获得模拟设备D中被访问寄存器的编号,包括:
根据第一地址通过第二HASH表获得所述编号,每个虚拟机对应一个第二HASH表,该第二HASH表的键索引为相应的第一地址,键值为该相应的第一地址对应的寄存器编号。
6.根据权利要求1所述方法,其特征在于,还包括:虚拟机VM启动时Hypervisor把第一地址设置为不可访问,使虚拟机VM访问第一地址时陷入到Hypervisor中。
7.根据权利要求1所述方法,其特征在于,所述虚拟机VM访问模拟设备D的第一地址,具体包括:虚拟机VM的用户态或核心态访问第一地址,该访问包括读或写。
8.一种hypervisor中虚拟机模拟设备寄存器的访问装置,其特征在于,包括:
寄存器编号获得模块,用于在虚拟机VM通过访问内部第一地址访问模拟设备D相应的寄存器时,Hypervisor根据第一地址获得所述寄存器的编号,虚拟机VM是运行在hypervisor上的虚拟机,模拟设备D是虚拟机VM的任一模拟设备;
程序索引获得模块,用于Hypervisor根据所述编号通过查询模拟设备D的寄存器指针数组获得被访问寄存器的逻辑处理程序的地址,从而运行该逻辑处理程序进行所述访问对应的操作,所述寄存器指针数组的每个元素索引为寄存器的编号,元素值为相应寄存器的逻辑处理程序地址指针。
9.一种计算设备,其特征在于,包括:
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程5序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至7任一所述方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行权利要求10至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211664900.7A CN115840618B (zh) | 2022-12-23 | 2022-12-23 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211664900.7A CN115840618B (zh) | 2022-12-23 | 2022-12-23 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840618A true CN115840618A (zh) | 2023-03-24 |
CN115840618B CN115840618B (zh) | 2023-08-11 |
Family
ID=85579168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211664900.7A Active CN115840618B (zh) | 2022-12-23 | 2022-12-23 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840618B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795493A (zh) * | 2023-08-22 | 2023-09-22 | 飞腾信息技术有限公司 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
CN107015845A (zh) * | 2015-12-02 | 2017-08-04 | 想象技术有限公司 | Gpu虚拟化 |
CN107783913A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种应用于计算机的资源访问方法和计算机 |
US20180248700A1 (en) * | 2017-02-27 | 2018-08-30 | Red Hat, Inc. | Systems and methods for providing i/o state protections in a virtualized environment |
-
2022
- 2022-12-23 CN CN202211664900.7A patent/CN115840618B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
CN107015845A (zh) * | 2015-12-02 | 2017-08-04 | 想象技术有限公司 | Gpu虚拟化 |
CN107783913A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种应用于计算机的资源访问方法和计算机 |
US20180248700A1 (en) * | 2017-02-27 | 2018-08-30 | Red Hat, Inc. | Systems and methods for providing i/o state protections in a virtualized environment |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795493A (zh) * | 2023-08-22 | 2023-09-22 | 飞腾信息技术有限公司 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
CN116795493B (zh) * | 2023-08-22 | 2023-10-31 | 飞腾信息技术有限公司 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115840618B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102269006B1 (ko) | 독립적인 사용자 및 관리자 도메인을 갖는 메모리 보호 키 아키텍처 | |
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US9904527B1 (en) | Optimizing API implementer programs using fine-grained code analysis | |
US20180067866A1 (en) | Translate on virtual machine entry | |
US9703562B2 (en) | Instruction emulation processors, methods, and systems | |
US7454547B1 (en) | Data exchange between a runtime environment and a computer firmware in a multi-processor computing system | |
EP3757859A2 (en) | Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity | |
US20040186988A1 (en) | Method, system, and computer-readable medium for updating memory devices in a multi-processor computer system | |
US10606677B2 (en) | Method of retrieving debugging data in UEFI and computer system thereof | |
US10489582B1 (en) | Firmware security vulnerability verification service | |
US11650754B2 (en) | Data accessing method, device, and storage medium | |
US11640300B2 (en) | Byte comparison method for string processing and instruction processing apparatus | |
US10452423B2 (en) | Method and apparatus for light-weight virtualization contexts | |
CN115840618B (zh) | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 | |
US8645667B2 (en) | Operating system management of address-translation-related data structures and hardware lookasides | |
US9792042B2 (en) | Systems and methods for set membership matching | |
US8024362B2 (en) | System and method for erasing and writing desktop management interface data under a linux system | |
EP3871081A1 (en) | Register renaming-based techniques for block-based processors | |
US10552376B1 (en) | Accessing files stored in a firmware volume from a pre-boot application | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US9086895B1 (en) | Controlling hardware driver selection | |
CN110941452B (zh) | 一种配置方法、bios芯片和电子设备 | |
US11768967B2 (en) | Address verification for direct memory access requests | |
Ali et al. | UEFI BIOS Compatibility for Multiple SOC Based on Device Capability Detection | |
CN113946531A (zh) | 确定在串行总线的设备或功能之间的专用连接 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |