CN101271436A - 虚拟机系统及其高级可编程中断控制器的访问处理方法 - Google Patents

虚拟机系统及其高级可编程中断控制器的访问处理方法 Download PDF

Info

Publication number
CN101271436A
CN101271436A CNA2007100645389A CN200710064538A CN101271436A CN 101271436 A CN101271436 A CN 101271436A CN A2007100645389 A CNA2007100645389 A CN A2007100645389A CN 200710064538 A CN200710064538 A CN 200710064538A CN 101271436 A CN101271436 A CN 101271436A
Authority
CN
China
Prior art keywords
apic
register
virtual machine
visit
operating system
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
Application number
CNA2007100645389A
Other languages
English (en)
Other versions
CN100570587C (zh
Inventor
石勇
陈军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB2007100645389A priority Critical patent/CN100570587C/zh
Publication of CN101271436A publication Critical patent/CN101271436A/zh
Application granted granted Critical
Publication of CN100570587C publication Critical patent/CN100570587C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种虚拟机系统及其高级可编程中断控制器的访问处理方法,其中该方法包括地址映射步骤,虚拟机监视器建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,并将地址映射列表加入到虚拟机客户操作系统的页表中;APIC访问控制步骤,客户操作系统访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现访问,客户操作系统访问APIC中的第二类型寄存器时,根据地址映射列表直接访问;对第一类型寄存器的操作将导致APIC的其它寄存器产生变化,对第二类型寄存器的操作不影响APIC的其它寄存器。本发明使APIC的访问周期大大缩小,同时操作简单。

Description

虚拟机系统及其高级可编程中断控制器的访问处理方法
技术领域
本发明涉及计算机系统中的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。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1. 一种虚拟机系统的高级可编程中断控制器的访问处理方法,其特征在于,包括:
地址映射步骤,虚拟机监视器建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,并将地址映射列表加入到虚拟机客户操作系统的页表中;
APIC访问控制步骤,客户操作系统访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现访问,客户操作系统访问APIC中的第二类型寄存器时,根据地址映射列表直接访问;
对第一类型寄存器的操作将导致APIC的其它寄存器产生变化,对第二类型寄存器的操作不影响APIC的其它寄存器。
2. 根据权利要求1所述的方法,其特征在于,所述第一类型寄存器为中断应答寄存器、任务优先级寄存器和中断命令寄存器。
3. 根据权利要求1所述的方法,其特征在于,所述地址映射步骤具体包括:
步骤21,客户操作系统启动后初始化APIC;
步骤22,虚拟机监视器获取APIC的初始化地址,并分配APIC虚拟寄存器空间;
步骤23,虚拟机监视器建立APIC的初始化地址与APIC虚拟寄存器空间之间的页表映射;
步骤24,虚拟机监视器将该建立的页表映射加入到客户操作系统的页表当中。
4. 根据权利要求3所述的方法,其特征在于,所述客户操作系统访问APIC中的第一类型寄存器时,强制陷入到虚拟机监视器以实现访问具体为:
步骤31,客户操作系统的MMIO访问为APIC的第一类型寄存器;
步骤32,陷入到虚拟机监视器;
步骤33,解析出汇编指令;
步骤34,解析出操作数后调用虚拟APIC函数完成APIC功能;
步骤35,设置寄存器的返回值后将其返回客户操作系统。
5. 一种虚拟机系统,包括虚拟机监视器和客户操作系统,其特征在于:
所述虚拟机监视器中设置有地址映射模块,用于建立APIC虚拟寄存器空间和APIC初始化地址的页表映射,并将地址映射列表加入到客户操作系统的页表中;
所述客户操作系统中包括一APIC访问控制模块,用于监控内存访问,在客户操作系统的MMIO访问为APIC的第一类型寄存器时,强制陷入到虚拟机监视器,在客户操作系统访问APIC中的第二类型寄存器时,根据地址映射列表直接访问;
对第一类型寄存器的操作将导致APIC的其它寄存器产生变化,对第二类型寄存器的操作不影响APIC的其它寄存器。
6. 根据权利要求5所述的虚拟机系统,其特征在于,所述虚拟机监视器中设置有APIC处理模块,用于解析出汇编指令,解析出操作数后调用虚拟APIC函数完成APIC功能,并设置寄存器的返回值后将其返回客户操作系统。
7. 根据权利要求5所述的虚拟机系统,其特征在于,所述第一类型寄存器为中断应答寄存器、任务优先级寄存器和中断命令寄存器。
CNB2007100645389A 2007-03-19 2007-03-19 虚拟机系统及其高级可编程中断控制器的访问处理方法 Active CN100570587C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100645389A CN100570587C (zh) 2007-03-19 2007-03-19 虚拟机系统及其高级可编程中断控制器的访问处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100645389A CN100570587C (zh) 2007-03-19 2007-03-19 虚拟机系统及其高级可编程中断控制器的访问处理方法

Publications (2)

Publication Number Publication Date
CN101271436A true CN101271436A (zh) 2008-09-24
CN100570587C CN100570587C (zh) 2009-12-16

Family

ID=40005418

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100645389A Active CN100570587C (zh) 2007-03-19 2007-03-19 虚拟机系统及其高级可编程中断控制器的访问处理方法

Country Status (1)

Country Link
CN (1) CN100570587C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882113B (zh) * 2009-05-05 2012-02-22 北京大学 一种基于客户操作系统内核代码替换的内存虚拟化方法
CN103853597A (zh) * 2014-02-21 2014-06-11 北京神舟航天软件技术有限公司 实现嵌入式虚拟机平台高频率数据采集方法
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
CN113886018A (zh) * 2021-10-20 2022-01-04 北京字节跳动网络技术有限公司 虚拟机资源分配方法、装置、介质及设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799465B (zh) * 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
US10049064B2 (en) 2015-01-29 2018-08-14 Red Hat Israel, Ltd. Transmitting inter-processor interrupt messages by privileged virtual machine functions
US11809888B2 (en) 2019-04-29 2023-11-07 Red Hat, Inc. Virtual machine memory migration facilitated by persistent memory devices

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882113B (zh) * 2009-05-05 2012-02-22 北京大学 一种基于客户操作系统内核代码替换的内存虚拟化方法
CN103853597A (zh) * 2014-02-21 2014-06-11 北京神舟航天软件技术有限公司 实现嵌入式虚拟机平台高频率数据采集方法
CN103853597B (zh) * 2014-02-21 2017-04-19 北京神舟航天软件技术有限公司 实现嵌入式虚拟机平台高频率数据采集方法
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
US11972285B2 (en) 2017-06-27 2024-04-30 Huawei Technologies Co., Ltd. Interrupt request processing method and apparatus, and virtualized device
CN113886018A (zh) * 2021-10-20 2022-01-04 北京字节跳动网络技术有限公司 虚拟机资源分配方法、装置、介质及设备

Also Published As

Publication number Publication date
CN100570587C (zh) 2009-12-16

Similar Documents

Publication Publication Date Title
CN100570587C (zh) 虚拟机系统及其高级可编程中断控制器的访问处理方法
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US6711642B2 (en) Method and chipset for system management mode interrupt of multi-processor supporting system
US20140181811A1 (en) Hypervisor modification of advanced configuration and power interface (acpi) tables
CN110427337B (zh) 基于现场可编程门阵列的处理器内核及其运行方法
CN102981864A (zh) 信息处理装置和信息处理方法
EP4220394A1 (en) Chip system, method for processing virtual interrupt, and corresponding device
KR20160033517A (ko) 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
US5093776A (en) Information processing system emulation apparatus and method
WO2023280097A1 (zh) 一种缺页异常的处理方法及相应装置
US10949243B2 (en) Reducing IPI overhead with CPU overcommit support via IPI broadcast
CN104618158A (zh) 嵌入式网络虚拟化环境中VirtIO网络虚拟化工作方法
CN101937344A (zh) 一种计算机及其快速启动的方法
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
KR101387986B1 (ko) 가상화 장치
EP2325747A2 (en) Virtual platform for prototyping system-on-chip designs
US20140075176A1 (en) Information processing apparatus
US20050172287A1 (en) Bus management techniques
CN104866357A (zh) 数字信号处理器的boot启动方法及其启动装置
CN112559120B (zh) 定制化pcie总线io虚拟化支撑方法
US9043507B2 (en) Information processing system
JPS6314241A (ja) メモリ拡張方式
US20240086220A1 (en) Delaying interrupts for virtual machines
CN109240797B (zh) 一种虚拟化多媒体处理方法和系统
EP2426603B1 (en) Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant