公开/公告号CN101271436A
专利类型发明专利
公开/公告日2008-09-24
原文格式PDF
申请/专利权人 联想(北京)有限公司;
申请/专利号CN200710064538.9
申请日2007-03-19
分类号G06F13/24(20060101);G06F9/455(20060101);
代理机构11243 北京银龙知识产权代理有限公司;
代理人许静
地址 100085 北京市海淀区上地信息产业基地创业路6号
入库时间 2023-12-17 20:45:19
法律状态公告日
法律状态信息
法律状态
2009-12-16
授权
授权
2008-11-19
实质审查的生效
实质审查的生效
2008-09-24
公开
公开
技术领域
本发明涉及计算机系统中的APIC(Advanced Programmable InterruptController,高级可编程中断控制器),特别是一种虚拟机系统及其APIC访问处理方法。
背景技术
APIC主要应用于多处理器操作系统,是为了解决中断请求太少和处理器间中断而产生的,因此,APIC对计算机来讲主要是起到以下的两个作用:管理中断请求的分配,把中断请求扩展到24个,以适应更多的设备;管理多CPU。
APIC系统由本地APIC、IO APIC和APIC串行总线组成,每个处理器中集成了一个本地APIC,而IO APIC是系统芯片组中一部分,APIC总线负责连接IO APIC和各个本地APIC。
本地APIC接收该处理器产生的本地中断(如时钟中断)以及由该处理器产生的处理器间中断,并从APIC串行总线接收来自IO APIC的消息;IO APIC负责接收所有外部的硬件中断,并翻译成消息选择发给接收中断的处理器,以及从本地APIC接收处理器间中断消息。
关于APIC详细的描述请参考《IA-32 Inel Architecture Software Developer′sManual Volume 3 Chapter 8》。
现有的虚拟机系统通过拦截对APIC芯片的MMIO(Memory Map Input andOutput,内存映射输入输出)访问,完成APIC的虚拟化,然而上述的操作会引起陷入虚拟机的操作,并且需要解析对内存的访问指令,造成APIC访问效率很低,整个系统效率不高。
发明内容
本发明的目的在于提供一种虚拟机系统的高级可编程中断控制器的访问处理方法,实现简单,同时尽量少引入陷入虚拟机的操作和解码操作以提高APIC的访问效率。
为了实现上述目的,本发明提供了一种虚拟机系统的高级可编程中断控制器的访问处理方法,包括:
地址映射步骤,虚拟机监视器建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,并将地址映射列表加入到虚拟机客户操作系统的页表中;
APIC访问控制步骤,客户操作系统访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现访问,客户操作系统访问APIC中的第二类型寄存器时,根据地址映射列表直接访问;
对第一类型寄存器的操作将导致APIC的其它寄存器产生变化,对第二类型寄存器的操作不影响APIC的其它寄存器。
上述的方法,其中,所述第一类型寄存器为EOI寄存器、TPR寄存器和ICR寄存器。
上述的方法,其中,所述地址映射步骤具体包括:
步骤21,客户操作系统启动后初始化APIC;
步骤22,虚拟机监视器获取APIC的初始化地址,并分配APIC虚拟寄存器空间;
步骤23,虚拟机监视器建立APIC的初始化地址与APIC虚拟寄存器空间之间的页表映射;
步骤24,虚拟机监视器将该建立的页表映射加入到客户操作系统的页表当中。
上述的方法,其中,所述客户操作系统访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现访问具体为:
步骤31,客户操作系统的MMIO访问为APIC的第一类型寄存器;
步骤32,陷入到虚拟机监视器;
步骤33,解析出汇编指令;
步骤34,解析出操作数后调用虚拟APIC函数完成APIC功能;
步骤35,设置寄存器的返回值后将其返回客户操作系统。
为了更好的实现上述目的,本发明还提供了一种虚拟机系统,包括虚拟机监视器和客户操作系统,其中:
所述虚拟机监视器中设置有地址映射模块,用于建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,并将地址映射列表加入到客户操作系统的页表中;
所述客户操作系统中包括一APIC访问控制模块,用于监控内存访问,在客户操作系统的MMIO访问为APIC的第一类型寄存器时,强制陷入到虚拟机监视器,在客户操作系统访问APIC中的第二类型寄存器时,根据地址映射列表直接访问;
对第一类型寄存器的操作将导致APIC的其它寄存器产生变化,对第二类型寄存器的操作不影响APIC的其它寄存器。
上述的虚拟机系统,其中,所述虚拟机监视器中设置有APIC处理模块,用于解析出汇编指令,解析出操作数后调用虚拟APIC函数完成APIC功能,并设置寄存器的返回值后将其返回客户操作系统。
上述的虚拟机系统,其中,所述第一类型寄存器为EOI(End Of Interrupt,中断应答)寄存器、TPR(Task Priority Register,任务优先级寄存器)和ICR(Interrupt Command Register,中断命令寄存器)。
本发明具有以下有益效果:
建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,GOS访问APIC时,大量减少了陷入虚拟机和解码的操作,使APIC的访问周期由原来的近万个时钟周期减少到几十个时钟周期;
拦截的APIC寄存器只有三个,操作简单。
附图说明
图1为本发明的方法的流程示意图;
图2为地址映射步骤的详细流程示意图;
图3为本发明中GOS访问APIC中的第一类型寄存器的流程示意图。
具体实施方式
为便于理解,对本发明进行详细描述之前,在此先对本发明的实施例中所涉及到的几个概念进行说明。
在APIC的寄存器之中存在两种类型的寄存器,如下所述:
第一类型寄存器,对该类寄存器的操作将导致APIC的其它寄存器产生变化,如EOI(End Of Interrupt,中断应答)寄存器,对其操作会引起IOAPIC寄存器的刷新,对TPR(Task Priority Register,任务优先级寄存器)的写操作将导致PPR寄存器的值改变,对ICR寄存器的写操作将导致IPI(InterProcessor Interrupt,处理器间中断)改变。
第二类型寄存器,对该类寄存器的操作不影响APIC的其它寄存器。
本发明的虚拟机系统及其高级可编程中断控制器的访问处理方法中,通过将APIC的MMIO地址映射到一个内存空间,并将该页表映射加入到GOS(Guest Operation System,客户操作系统)的页表中,这样GOS可直接通过页表实现APIC的访问,提高了APIC的访问效率。
本发明的虚拟机系统的高级可编程中断控制器的访问处理方法如图1所示,包括如下步骤:
地址映射步骤,VMM(Virtual Machine Monitor,虚拟机监视器)建立APIC虚拟寄存器空间和APIC初始化地址(即APIC的MMIO地址)的页表映射,并将地址映射列表加入到GOS的页表当中;
APIC访问控制步骤,GOS访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现对APIC中的第二类型寄存器的访问;GOS访问APIC中的第二类型寄存器时,根据页表直接访问。
下面分别对各步骤进行进一步详细的描述。
如图2所示,地址映射步骤具体包括:
步骤21,GOS启动,初始化APIC;
步骤22,VMM获取APIC的初始化地址(即APIC的MMIO地址),并分配APIC虚拟寄存器空间;
步骤23,VMM建立APIC的初始化地址(即APIC的MMIO地址)与APIC虚拟寄存器空间之间的页表映射;
步骤24,VMM将该建立的页表映射加入到GOS的页表当中。
在建立了APIC的初始化地址(即APIC的MMIO地址)与APIC虚拟寄存器空间之间的页表映射之后,实际情况下,GOS已经可以通过该页表映射实现对APIC的直接访问。
由于对第一类型寄存器的操作将导致其它寄存器的变化,因此对于GOS访问APIC中寄存器应该加以区别对待,即:
GOS访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现对APIC中的第二类型寄存器的访问;GOS访问APIC中的第二类型寄存器时,根据页表直接访问。
下面分别对该两种方式分别进行描述。
GOS访问APIC中的第一类型寄存器如图3所示,具体包括如下步骤:
步骤31,GOS的MMIO访问为APIC的第一类型寄存器;
步骤32,陷入到虚拟机监视器;
步骤33,解析出汇编指令;
步骤34,解析出操作数后调用虚拟APIC函数完成APIC功能;
步骤35,设置寄存器的返回值后将其返回GOS。
本发明的虚拟机系统包括虚拟机监视器和客户操作系统,其中:
虚拟机监视器中设置有地址映射模块,用于建立APIC虚拟寄存器空间和APIC初始化地址(即APIC的MMIO地址)的页表映射,并将地址映射列表加入到GOS的页表当中;
客户操作系统中包括一APIC访问控制模块,用于监控内存访问,在GOS的MMIO访问为APIC的第一类型寄存器时,强制陷入到虚拟机监视器;
虚拟机监视器中设置有APIC处理模块,用于解析出汇编指令,解析出操作数后调用虚拟APIC函数完成APIC功能,并设置寄存器的返回值后将其返回GOS。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 该系统包括可编程多媒体控制器,通过用户访问以控制可编程多媒体控制器的方法,可编程多媒体控制器系统的操作方法以及系统控制器可编程多媒体
机译: 使用高级可编程中断控制器传递实时中断
机译: 系统管理和高级可编程中断控制器