一种虚拟化地址空间隔离系统及方法
技术领域
本发明实施例涉及计算机操作系统与虚拟化技术领域,尤其涉及一种实现虚拟化地址空间隔离系统及方法。
背景技术
车载系统通常包括车载液晶仪表系统和娱乐导航系统,随着集成电路技术的提高,车载液晶仪表系统和娱乐导航系统有集成化趋势,多个具有不同功能的软件系统会运行在单一芯片,而为了做到较高的安全等级,减少不同系统之间运行的干扰,软件系统需要运行在不同的虚拟机中。对于虚拟机,存在地址空间隔离要求:在虚拟机上运行的OS地址空间做到彼此隔离,彼此不能访问。
现有技术中,为了实现虚拟机的地址空间隔离,需要导入具有二级页表映射的系统级MMU(下文简称为SMMU)。
图1为现有技术中虚拟化地址空间隔离系统架构图,如图1所示,在虚拟机(DOMU)中运行的每一个可以访问APB SALVE(主要是IP模块寄存器)以及AXI SLAVE(主要是内存)的硬件设备(MASTER主机)发起的地址空间访问都须经过SMMU(完成虚拟地址(VA) -> 中间地址(IPA) -> 物理地址(PA)的转换),其中,一级页表映射(VA->IPA)由虚拟机操作系统来设置(对于ARM系统虚拟机操作系统工作在EL1),二级页表映射(IPA -> PA),由在特权等级的虚拟机监视器(HYPERVISOR)来设置(对于ARM系统HYPERVISOR工作在EL2层级),确保各个虚拟机能够访问的地址空间隔离。上述的一级页表映射不是必须的,但二级页表映射是必须的。
上述虚拟化地址空间隔离系统,为了完成物理隔离,每个虚拟机中能够进行DDR/寄存器问的硬件(一般称为DDR master)都需要配置二级页表映射(每个master都需要配置由HYPERVISOR控制的二级页表映射),当进行DDR访问时,如果虚拟地址到物理地址的转换没有被缓存(Page Table look-up miss)时会大大增加访问内存的延时(两级页表映射需要更多次页表项的查询),而且由于SMMU的导入大大增加了从芯片设计到软件设计的复杂性,增加了芯片面积,同时对系统访存性能也有很大的影响。
发明内容
为了解决现有技术存在的不足,本发明提供一种实现虚拟化地址空间隔离系统及方法,无需使用SMMU,免去二级页表映射,实现对各个虚拟机物理地址的硬件隔离,降低软件设计的复杂性。
为实现上述目的,本发明提供的实现虚拟化地址空间隔离系统,包括,Dom0虚拟机、DomU虚拟机、虚拟机监视器、访问权限管理模块,以及地址空间,其中,
所述Dom0虚拟机,其用于创建所述DomU虚拟机,并通过虚拟机监视器设置所述DomU虚拟机所能访问的物理地址空间;
所述虚拟机监视器,用于资源的管理,以及特权敏感指定的陷入与模拟;
所述访问权限管理模块,其对所述DomU虚拟机的访问请求进行权限检查,完成DomU之间物理地址访问的隔离。
进一步地,所述访问权限管理模块,其对所述DomU虚拟机的访问请求进行硬件域ID和地址检查。
进一步地,所述访问权限管理模块,当检查所述DomU虚拟机的访问请求的硬件域ID和地址与设置的所述DomU虚拟机ID、所能访问的物理地址空间相同时,则运行所述DomU虚拟机访问所述地址空间。
更进一步地,所述访问权限管理模块,进一步包括,ABP外设访问权限管理模块和AXI外设访问权限管理模块,其中,
所述ABP外设访问权限管理模块,其对来自ABP总线上的外设的访问请求进行权限检查,控制其对IP模块寄存器的物理地址空间的访问;
所述AXI外设访问权限管理模块,其对来自AXI总线上的外设的访问请求进行权限检查,控制其对内存的物理地址空间的访问。
为实现上述目的,本发明还提供了一种实现虚拟化地址空间隔离方法,包括以下步骤:
对Dom0虚拟机、DomU虚拟机、虚拟机监视器、访问权限管理模块进行硬件域设置;
Dom0虚拟机创建DomU虚拟机,并为每一个所述DomU虚拟机配置能访问的物理地址空间;
访问权限管理模块接收DomU虚拟机的访问请求,并进行权限检查;
DomU虚拟机对物理地址空间的进行访问。
进一步地,所述对Dom0虚拟机、DomU虚拟机、虚拟机监视器、访问权限管理模块进行硬件域设置的步骤,是将所述对Dom0虚拟机、DomU虚拟机、虚拟机监视器设置在不同的硬件域上,将所述访问权限管理模块分配在所述虚拟机监视器所在硬件域。
更进一步地,所述访问权限管理模块接收DomU虚拟机的访问请求,并进行权限检查的步骤,进一步包括:
访问权限管理模块对DomU虚拟机的访问请求进行解析,将访问请求中的硬件域ID与设置的所述DomU虚拟机硬件域ID相比对;
将访问请求中的访问地址与设置的所述DomU虚拟机的访问地址相比对。
本发明提供的实现虚拟化地址空间隔离系统及方法,无需使用SMMU即可做到各个虚拟机物理地址的硬件隔离,降低了软件设计的复杂性、同时减小芯片面积和增加访问内存的延时,提高了系统的访存性能。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的内容和实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为现有技术中虚拟化地址空间隔离系统架构图;
图2为根据本发明的虚拟化地址空间隔离系统架构图;
图3为根据本发明的访问权限管理模块硬件框图;
图4为根据本发明的虚拟化地址空间隔离方法流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明的实施例中,
硬件域(Domain):是一组硬件的组合,一个硬件域中的资源无法被另一个硬件域所访问。一个系统中可以有多个Domain,Domain中的硬件可以在启动阶段指定。对于Domain中AXI/APB Master对地址空间访问时传输过程会导入Domain信息(例如:访问DDR内存时用AXI协议中AxUser来传递),利用这个信息,硬件(访问权限管理模块)可以对来自不同域的访存传输进行控制。
实施例1
图2为根据本发明的虚拟化地址空间隔离系统架构图,如图2所示,本发明的虚拟化地址空间隔离系统,包括,Dom0虚拟机20、第一DomU虚拟机21、第二DomU虚拟机22、虚拟机监视器(HYPERVISOR)23、访问权限管理模块(Access Permission Control)24,以及地址空间25,其中,
Dom0虚拟机20、第一DomU虚拟机21、第二DomU虚拟机22,分别设置在不同的硬件域。
Dom0虚拟机20,其用于创建DomU虚拟机,并通过虚拟机监视器23为各个DomU虚拟机设置所能访问的物理地址空间。
在本发明的一个实施例中,Dom0虚拟机20,作为Type-I型虚拟机监视器的特权DOM,负责DomU虚拟机的管理,比如:start/stop/create/kill/reset,其运行在ARM EL0/EL1。
虚拟机监视器23,其负责设置访问权限管理模块24的模块寄存器及DomU虚拟机所能访问的物理地址空间。
在本发明的一个实施例中,虚拟机监视器23,负责设置第一DomU虚拟机21、第二DomU虚拟机22所能访问的物理地址空间。
在本发明的一个实施例中,虚拟机监视器,用于资源的管理(例如中断管理/CPU管理/内存管理/系统调度),以及特权敏感指定的陷入与模拟(trap与simulate,对于使用ARMCPU的系统而言运行在特权等级EL2)。
访问权限管理模块24,其接收DomU虚拟机发起的访问请求,并进行权限检查,完成DomU之间设备物理地址访问的隔离,控制Dom0虚拟机和DomU虚拟机访问。
在本发明的一个实施例中,访问权限管理模块24接收第一DomU虚拟机21、第二DomU虚拟机22发起的访问请求,并进行权限检查,完成第一DomU虚拟机21与第二DomU虚拟机22之间设备物理地址访问的隔离。
权限检查包括:硬件域ID检查、访问地址检查、安全(Security)检查、特权检查(Privilege)等。
在本发明的一个实施例中,访问权限管理模块24,设置在所保护的资源(如IP模块寄存器和内存地址)前,负责对本资源发起的访问进行权限检查。其中,权限检查包括:硬件域/访问地址/Security/Privilege权限等,上述信息都通过传输来扩散。
实施例2
图3为根据本发明的访问权限管理模块硬件框图,如图3所示,本发明的访问权限管理模块24,包括,ABP外设访问权限管理模块30和AXI外设访问权限管理模块31,其中,
ABP外设访问权限管理模块30,其对来自ABP外设的访问请求进行权限检查,控制ABP外设对IP模块寄存器303的物理地址空间的访问。
AXI外设访问权限管理模块31,其对来自AXI外设的访问请求进行权限检查,控制AXI外设对内存313的物理地址空间的访问。
在本发明的一个实施例中,ABP外设访问权限管理模块30,还包括第一硬件域ID检查模块301和第一地址检查模块302,其中,第一硬件域ID检查模块301对来自ABP外设的访问请求进行硬件域ID进行检查。第一地址检查模块302对来自ABP外设的访问请求进行访问物理地址空间的检查。
在本发明的一个实施例中,AXI外设访问权限管理模块31,还包括第二硬件域ID检查模块311和第二地址检查模块312,其中,第二硬件域ID检查模块311对来自AXI外设的访问请求进行硬件域ID进行检查。第二地址检查模块312对来自AXI外设的访问请求进行访问物理地址空间的检查。
在本发明的一个实施例中,通过ABP外设访问权限管理模块30权限检查的ABP外设访问请求,可以对IP模块寄存器303的物理地址空间进行访问。
在本发明的一个实施例中,通过AXI外设访问权限管理模块31权限检查的AXI外设访问请求,可以对内存313的物理地址空间进行访问。
实施例3
图4为根据本发明的虚拟化地址空间隔离方法流程图,下面将参考图4,对本发明的虚拟化地址空间隔离方法进行详细描述。
首先,在步骤401,系统启动过程中,对虚拟机监视器、Dom0虚拟机、DomU虚拟机,以及访问权限管理模块进行硬件域的设置。
在该步骤中,分别将虚拟机监视器、Dom0虚拟机、DomU虚拟机设置在不同的硬件域中,将访问权限管理模块设置在虚拟机监视器所在的硬件域。
在本发明的一个实施例中,系统启动过程(以TYPE1 HYPERVISOR XEN启动为例:芯片上电 -> 片上ROM -> BOOTLOADER -> HYPERVISOR -> Dom0 -> DomU)在BOOTLOADER阶段设置硬件域:HYPERVISOR/DOM0/DOMU分别在不同的硬件域,同时把访问权限管理模块(Access Permission Control模块)分配在虚拟机监视器(HYPERVISOR)所在硬件域,因此只有虚拟机监视器所在硬件域能操作访问权限管理模块。
在步骤402,创建DomU虚拟机并为其分配地址空间。
在该步骤中,Dom0在创建各个DomU虚拟机的过程中给各个DomU虚拟机分配地址空间,在虚拟机监视器中设置访问权限管理模块寄存器:设置各个DOMU所能访问的物理地址空间。例如:第一DomU虚拟机能访问(0,1G)地址物理空间,第二DomU虚拟机能访问(1G~2G)地址空间。
在步骤403,接收DomU虚拟机的访问请求,并进行权限检查。
在该步骤中,访问权限管理模块对访问请求进行解析,将访问请求中的硬件域ID以及访问地址与为DomU虚拟机分配地址空间进行比对。例如,第一DomU虚拟机内3D模块(GPU)发起访问请求对AXI SLAVE(DDR)进行访问,地址(100M,200M),传输在AXI总线AxUSR上携带有DOMAIN信息(硬件域ID),当访问请求到达访问权限管理模块,访问权限管理模块解析传输信息:[第一DomU虚拟机,地址(100M,200M)],把这一访问请求与启动阶段(创建各个DomU虚拟机)时虚拟机监视器的设置信息相比对,结果是允许访问。
第二DomU虚拟机内DMA模块也发起访问请求,地址(800M,900M),当访问请求到达访问权限管理模块后,访问权限管理模块判断为访问违规(access violation),阻止本次访问。
在步骤404,对物理地址空间进行访问。
在本发明的一个实施例中,DomU虚拟机之间设备物理地址访问的隔离由访问权限管理(Access Permission Control)模块来完成。
DomU虚拟机内设备(除CPU外)物理地址的隔离由MMU完成:VA->IPA,其中IPA=PA。这一步骤是可选的。
DomU虚拟机CPU对地址空间的访问,由于虚拟化的CPU在AXI总线上无法带上VMID信息(用来唯一标志DomU),因此无法使用访问权限管理模块来对不同DomU内CPU对地址空间的访问进行区分。需要使用二级页表映射来确保DomU间CPU访问物理地址的隔离。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。