基于特权指令库的CPU虚拟化方法技术

技术编号:27465355 阅读:21 留言:0更新日期:2021-03-02 17:27
本发明专利技术公开了一种基于特权指令库的CPU虚拟化方法,其特征在于:所述CPU虚拟化方法基于至少一个物理处理器PCPU、CPU多核架构的操作系统、至少一个虚拟处理器VCPU、虚拟机管理器和配置有特权指令库的固件,虚拟处理器状态管理数据结构VCPUCB,用于维护VCPU特权状态的一组数据结构,包含处理器内部实现相关的状态信息,虚拟处理器状态管理数据结构VCPUCB放置在内存中;虚拟状态基地址寄存器VCPUCB_PTR,用于存储指向虚拟处理器状态管理数据结构VCPUCB的基地址。本发明专利技术实现了处理器虚拟化中重要的VCPU进入和VCPU退出的支持,支持虚拟机管理器中开发VCPU调度接口,支持切换处理器特权状态到虚拟机模式,对虚拟机管理器和操作系统内核透明,在不增加任何硬件扩展接口下实现对CPU虚拟化支持。对CPU虚拟化支持。对CPU虚拟化支持。

【技术实现步骤摘要】
基于特权指令库的CPU虚拟化方法


[0001]本专利技术属于中央处理器
,尤其涉及一种基于特权指令库的CPU虚拟化方法。

技术介绍

[0002]随着计算系统的资源规模大幅扩展、处理能力不断增强、资源种类日益丰富、应用需求灵活多样,寻求新型的计算机理与模式已成为未来信息
面临的重大挑战。计算系统虚拟化和云计算作为一种新型计算模式推动计算机技术的发展,早已成为业界研究的热点。
[0003]国产处理器起步较晚,在处理器体系结构上并没有同Intel VT技术一样对虚拟化有系统且完备的硬件体系结构支持。本专利技术利用现有的国产处理器操作系统接口,针对处理器虚拟化对国产处理器操作系统接口深度定制封装,结合半虚拟化技术,解决国产处理器体系结构上的虚拟化问题。

技术实现思路

[0004]本专利技术目的在于提供一种基于特权指令库的CPU虚拟化方法,该CPU虚拟化方法实现了处理器虚拟化中重要的VCPU进入和VCPU退出的支持,支持虚拟机管理器中开发VCPU调度接口,支持切换处理器特权状态到虚拟机模式,对虚拟机管理器和操作系统内核透明,在不增加任何硬件扩展接口下实现对CPU虚拟化支持。
[0005]为达到上述目的,本专利技术采用的技术方案是:一种基于特权指令库的CPU虚拟化方法,其特征在于:所述CPU虚拟化方法基于至少一个物理处理器PCPU、CPU多核架构的操作系统、至少一个虚拟处理器VCPU、虚拟机管理器和配置有特权指令库的固件,处理器运行时分为以下三种状态:特权态:运行特权指令库的状态,在该状态下可访问处理器内部控制寄存器,支持从特权态切换到用户态或者核心态,处理器异常、中断、调用特权指令等均会自动进入特权态特权指令库中运行;内核态:运行操作系统内核指令的状态,该状态下可调用内核级特权指令和执行普通指令,调用内核级特权指令会进入特权指令库中相应的实现中执行完成后返回;用户态:运行用户程序指令的状态,该状态下可调用用户级特权指令和执行普通指令,调用用户级特权指令会进入特权指令库中相应的实现中执行完成后返回;对计算机设置如下:虚拟处理器状态管理数据结构VCPUCB,用于维护VCPU特权状态的一组数据结构,包含处理器内部实现相关的状态信息,虚拟处理器状态管理数据结构VCPUCB放置在内存中;当发生VCPU切换时,需要将所需保留的处理器特权状态保留至虚拟处理器状态管理数据结构VCPUCB中,切换VCPUCB_PTR基地址寄存器到目标VCPU对应的虚拟处理器状态管理数据结构VCPUCB的基地址后,将其中保留的处理器特权状态恢复;
虚拟处理器状态管理数据结构VCPUCB的数据结构如下:VCPU_USP:VCPU用户态栈指针,VCPU_KSP:VCPU核心态栈指针,VCPU_VCPUCB:当前CPU运行的VCPU对应的VCPUCB地址,HOST_VCPUCB:当前CPU运行的宿主机VCPUCB地址,USP:宿主机用户态栈指针,KSP:宿主机核心态栈指针;虚拟状态基地址寄存器VCPUCB_PTR,用于存储指向虚拟处理器状态管理数据结构VCPUCB的基地址;虚拟处理器基础状态寄存器VPCR,用于保存虚拟处理器的基本状态信息;虚拟处理器退出VCPU EXIT,在处理器运行过程中判断到某敏感操作事件发生时,需要退出虚拟机模式,进入宿主机模式,包括以下步骤:S1、切换VCPUCB_PTR至宿主机VCPUCB基地址,S2、根据处理器体系结构要求,将宿主机VCPUCB中保存的处理器特权状态设置到处理器内部控制寄存器中,S3、判断CPU运行状态,如果是核心态,保留栈指针寄存器到VCPUCB中的VCPU_KSP,否则保留到VCPU_USP,S4、取VCPUCB中的KSP到栈指针寄存器和另一临时寄存器,标记为TMPR,S5、计算S4中TMPR中栈指针地址对应的物理地址,S6、采用物理地址读指令读取以TMPR为基地址,偏移为0的值,并存入TMPR,伪指令示意为load_phys tmpr,0x0(tmpr),S7、S6中取出的TMPR寄存器中的值指向CPU_REGS数据结构中ps的物理地址,保存当前处理器进程状态到以TMPR为基地址,偏移为0的地址,即CPU_REGS数据结构数据结构中ps位置,S8、保存当前处理器运行地址到以TMPR为基地址,偏移为8的地址,即CPU_REGS数据结构中pc位置,S9、保存当前处理器全局指针到以TMPR为基地址,偏移为16的地址,即CPU_REGS数据结构中gp位置,S10、保存当前处理器参数寄存器0到以TMPR为基地址,偏移为24的地址,即CPU_REGS数据结构中a0位置,S11、保存当前处理器参数寄存器1到以TMPR为基地址,偏移为32的地址,即CPU_REGS数据结构中a1位置,S12、保存当前处理器参数寄存器2到以TMPR为基地址,偏移为40的地址,即CPU_REGS数据结构中a2位置,S13、报错当前处理器r0寄存器到以TMPR基地址,偏移为-0x4C0的地址,即CPU_REGS数据结构中r0位置,至此完成VCPU_EXIT的状态保存;虚拟处理器进入VCPU ENTER,由虚拟机管理器调用的内核级特权指令,该指令调用后将进入特权指令库中的具体实现,由特权指令库切换CPU上下文到目标VCPU上下文中执行,包括以下步骤:
S1、进入VCPU ENTER流程时要求a0寄存器指向VCPU的VCPUCB地址,a1寄存器指向CPU_REGS数据结构中PS的位置,S2、核心栈指针减去0x30大小,保留ps、pc、gp、a0、a1、a2寄存器到核心栈,S3、保留栈指针寄存器内容到VCPUCB中KSP位置,S4、保留a0寄存器内容到当前VCPUCB中的VCPU_VCPUCB中,S5、保留当前VCPU_PTR内容到a0指向的VCPU的VCPUCB中的HOST_VCPUCB中,S6、以a1寄存器为基地址,取出gp,a0,a1,a2,pc到相应的寄存器,S7、保存处理器特权状态到当前VCPUCB_PTR指向的VCPUCB数据结构中,S8、将a0寄存器中的值设置到VCPUCB_PTR,切换VCPUCB_PTR指向虚拟机VCPU的VCPUCB基地址,S9、从虚拟机VCPU的VCPUCB中读取处理器特权状态,并设置到处理器硬件中,S10、使能硬件中断,S11、判断待返回的处理器状态,如返回内核态,将栈指针寄存器设置为VCPU_KSP的值,如返回用户态,设置为VCPU_USP的值,S12、判断VCPU是否有待处理的虚拟中断,如没有,进入步骤13,如有进入S14,S13、根据S6取出的pc返回到相应地址执行,并退出特权态,返回用户态或者核心态运行,S14、为VCPU操作系统内核准备中断调用栈现场,进入操作系统内核注册的中断调用函数处理。
[0006]上述技术方案中进一步改进的技术方案如下:1. 上述方案中,所述虚拟处理器的基本状态信息为虚拟CPU的ID,约定ID为0的VCPU上下文为宿主机特权状态,约定ID非0的VCPU上下文为虚拟处理器状态。
[0007]2. 上述方案中,所述CPU_REGS数据结构存放了处理器的非特权的通用寄本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于特权指令库的CPU虚拟化方法,其特征在于:所述CPU虚拟化方法基于至少一个物理处理器PCPU、CPU多核架构的操作系统、至少一个虚拟处理器VCPU、虚拟机管理器和配置有特权指令库的固件,处理器运行时分为以下三种状态:特权态:运行特权指令库的状态,在该状态下可访问处理器内部控制寄存器,支持从特权态切换到用户态或者核心态,处理器异常、中断、调用特权指令等均会自动进入特权态特权指令库中运行;内核态:运行操作系统内核指令的状态,该状态下可调用内核级特权指令和执行普通指令,调用内核级特权指令会进入特权指令库中相应的实现中执行完成后返回;用户态:运行用户程序指令的状态,该状态下可调用用户级特权指令和执行普通指令,调用用户级特权指令会进入特权指令库中相应的实现中执行完成后返回;对计算机设置如下:虚拟处理器状态管理数据结构VCPUCB,用于维护VCPU特权状态的一组数据结构,包含处理器内部实现相关的状态信息,虚拟处理器状态管理数据结构VCPUCB放置在内存中;当发生VCPU切换时,需要将所需保留的处理器特权状态保留至虚拟处理器状态管理数据结构VCPUCB中,切换VCPUCB_PTR基地址寄存器到目标VCPU对应的虚拟处理器状态管理数据结构VCPUCB的基地址后,将其中保留的处理器特权状态恢复;虚拟处理器状态管理数据结构VCPUCB的数据结构如下:VCPU_USP:VCPU用户态栈指针,VCPU_KSP:VCPU核心态栈指针,VCPU_VCPUCB:当前CPU运行的VCPU对应的VCPUCB地址,HOST_VCPUCB:当前CPU运行的宿主机VCPUCB地址,USP:宿主机用户态栈指针,KSP:宿主机核心态栈指针;虚拟状态基地址寄存器VCPUCB_PTR,用于存储指向虚拟处理器状态管理数据结构VCPUCB的基地址;虚拟处理器基础状态寄存器VPCR,用于保存虚拟处理器的基本状态信息;虚拟处理器退出VCPU EXIT,在处理器运行过程中判断到某敏感操作事件发生时,需要退出虚拟机模式,进入宿主机模式,包括以下步骤:S1、切换VCPUCB_PTR至宿主机VCPUCB基地址,S2、根据处理器体系结构要求,将宿主机VCPUCB中保存的处理器特权状态设置到处理器内部控制寄存器中,S3、判断CPU运行状态,如果是核心态,保留栈指针寄存器到VCPUCB中的VCPU_KSP,否则保留到VCPU_USP,S4、取VCPUCB中的KSP到栈指针寄存器和另一临时寄存器,标记为TMPR,S5、计算S4中TMPR中栈指针地址对应的物理地址,S6、采用物理地址读指令读取以TMPR为基地址,偏移为0的值,并存入TMPR,伪指令示意为load_phys tmpr,0x0(tmpr),S7、S6中取出的TMPR寄存器中的值指向CPU_REGS数据结构中ps的物理地址,保存当前
处理器进程状态到以TMPR为基地址,偏移为0的地址,即CPU_REGS数据结构数据结构中ps位置,S8、保存当前处理器运行地址到以TMPR为基地址,偏移为8的地址,即CPU_REGS数据结构中pc位置,S9、保存当前处理器全局指针到以TMPR为基地址,偏移为16的地址,即CPU_REGS数据结构中gp位置,S10、保存当...

【专利技术属性】
技术研发人员:王星焱郑岩黄高阳杨政刘松
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1