虚拟机的模拟方法和计算机设备技术

技术编号:7758901 阅读:140 留言:0更新日期:2012-09-14 00:31
本发明专利技术涉及一种虚拟机中旁路转换缓冲的模拟方法和装置。其中,虚拟机将目标CPU中的TLB表项填写到本地CPU的TLB中,当目标CPU要执行一个访存指令时,虚拟机将该访存指令翻译为本地CPU可执行的访存指令;虚拟机执行翻译后的访存指令时,本地CPU的TLB将访存指令携带的虚拟地址转换为物理地址,供翻译后的访存指令访问,由此完成目标CPU要执行的访存指令的访存操作。本发明专利技术使用硬件和软件结合的方法实现了异构虚拟机中TLB的模拟,提高了TLB的模拟效率。

【技术实现步骤摘要】

本专利技术涉及计算机系统结构、虚拟机
,尤其涉及一种虚拟机的模拟方法和计算机设备
技术介绍
旁路转换缓冲(Translation Look-aside Buffer, TLB)模拟对虚拟机的性能有关键性影响,在CPU执行的所有指令中,超过50 %的指令是访存指令。现在一般CPU均支持虚 拟存储机制,即指令中含有的逻辑地址经过页表转换为物理地址。TLB即为用于加速页表转换的硬件支持部件,具有较高的执行频率。当前虚拟机中主要采用纯软件的方法实现TLB模拟。在开源虚拟机系统(例如Bochs,QEMU等)中,均以纯软件方法模拟虚拟机系统中TLB的执行机制,包括遍历TLB表项;判断表项是否匹配输入的虚拟地址;如果命中,返回表项中包含的物理地址;如果不命中,执行异常处理。纯软件的模拟方法具有良好的可移植性,但是引入了较高的模拟代价对于目标CPU执行的一条访存指令,用于模拟TLB查找算法所需要的模拟指令一般至少几十条。在对虚拟机性能有较高要求的场合,TLB模拟环节容易形式性能瓶颈。为了克服纯软件方法的缺点,某些虚拟机采用硬件模拟方式,以本地物理TLB模拟目标TLB,这种模拟方法主要用于同体系结构的虚拟机(例如Vmware、VirtualBox, KVM等),即本地CPU的TLB中保存目标系统中应用程序的页表快照,以本地CPU直接执行目标CPU的访存指令。硬件模拟方式比纯软件方法具有突出的效率优势,但是限制了可移植性,只能在相同体系结构的虚拟机中才能使用。对于异构虚拟机,由于无法在本地CPU上直接执行目标体系结构的访存指令,因此也无法直接利用本地CPU的TLB模拟目标TLB。
技术实现思路
本专利技术的目的是针对现有技术的缺陷,提供一种虚拟机的模拟方法和计算机设备,实现了利用软件和硬件共同完成虚拟机中TLB的模拟,该模拟方法可以同时适用于异构虚拟机,TLB模拟效率高。为了达到上述目的,本专利技术提供了一种虚拟机的模拟方法,所述方法包括以下步骤虚拟机取出目标CPU要执行的第一访存指令;获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令;虚拟机执行所述第二访存指令时,本地CPU的旁路转换缓冲TLB将所述第二访存指令携带的虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项;本地CPU的TLB中存在所述虚拟地址对应的表项时,本地CPU的TLB将所述虚拟地址转换为物理地址,用以使本地CPU将所述物理地址作为所述第二访存指令的实际访问地址,正常执行所述第二访存指令。优选地,所述判断是否存在所述虚拟地址对应的表项之后还包括本地CPU的TLB中不存在所述虚拟地址对应的表项时,本地CPU产生TLB miss异常,并转入执行本地操作系统注册的异常处理例程入口,由本地操作系统针对所述TLB miss异常进行模拟处理优选地,所述本地CPU的TLB将所述虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项之前还包括虚拟机将目标CPU中的被模拟的TLB表项填写到本地CPU的TLB中。优选地,所述虚拟机获取所述第一访存指令对应的第二访存指令具体为虚拟机根据翻译后指令保存队列,判断所述第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将所述第一访存指令翻译为所述第二访存指令,并将所述第二访存指令存入所述翻译后指令保存队列。 优选地,所述目标CPU和所述本地CPU为不同的体系结构;所述目标CPU中的TLB和所述本地CPU中的TLB支持的页面单位的大小相同。优选地,所述第二访存指令具体为一个访存指令,或一个访存指令序列。 优选地,所述由本地操作系统针对所述TLB miss异常进行模拟处理具体为本地操作系统在异常处理例程中识别异常产生的原因,判断所述异常为来自虚拟机的TLB miss异常后,模拟目标CPU中产生TLB miss异常的硬件处理方法进行处理。相应地,为了达到上述目的,本专利技术实施例还提供了一种计算机设备,所述计算机设备包括虚拟机,所述虚拟机包括取指单元,用于取出目标CPU要执行的第一访存指令;指令获取单元,用于获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令;所述计算机设备还包括本地CPU,所述本地CPU包括旁路转换缓冲TLB,用于将所述第二访存指令携带的虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项;本地CPU的TLB中存在所述虚拟地址对应的表项时,TLB将所述虚拟地址转换为物理地址,用以使本地CPU将所述物理地址作为所述第二访存指令的实际访问地址,正常执行所述第二访存指令。优选地,本专利技术实施例中的虚拟机还包括TLB操作单元,用于将目标CPU中的被模拟的旁路转换缓冲TLB表项填写到本地CPU的TLB中。优选地,所述指令获取单元具体用于根据翻译后指令保存队列,判断所述第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将所述第一访存指令翻译为所述第二访存指令,并将所述第二访存指令存入所述翻译后指令保存队列。优选地,所述目标CPU和所述本地CPU为不同的体系结构;所述目标CPU中的TLB和所述本地CPU中的TLB支持的页面单位的大小相同。本专利技术的上述实施例中,虚拟机将目标CPU中的TLB表项填写到本地CPU的TLB中,当目标CPU要执行一个访存指令时,虚拟机将该访存指令翻译为本地CPU可执行的访存指令;虚拟机执行翻译后的访存指令时,本地CPU的TLB将访存指令携带的虚拟地址转换为物理地址,供翻译后的访存指令访问,由此完成目标CPU要执行的访存指令的访存操作;如果本地CPU的TLB中不包含访存指令携带的虚拟地址对应的表项,本地CPU产生TLB miss异常,并转入执行本地操作系注册的异常处理例程入口,由本地操作系统模拟目标CPU中产生TLB miss异常的硬件处理方法处理该异常。由此,本专利技术使用硬件和软件结合的方法实现了异构虚拟机中TLB的模拟,提高了虚拟机中TLB的模拟效率。附图说明图I为本专利技术实施例提供的一种虚拟机的模拟方法流程图;图2为本专利技术实施例提供的又一虚拟机的模拟方法流程图;图3为本专利技术实施例提供的一种计算机设备示意图。具体实施例方式下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。首先对本申请文件中使用的名词术语进行解释 I、本地平台是指虚拟机软件所在的运行平台,是真实的物理平台;2、目标平台是指虚拟机软件在运行期间模拟的平台,也就是在虚拟机中运行的目标软件所依托的平台。3、本地CPU为本地平台中的CPU,目标CPU为目标平台中的CPU。4、虚拟机的本地平台和目标平台相同时,称为同构虚拟机,否则称为异构虚拟机。5、TLB命中是指TLB中包含传入的虚拟地址对应的表项,能够转换成物理地址。TLB不命中是指TLB中不包含传入的虚拟地址对应的表项。6、目标操作系统是指虚拟机中运行的操作系统,本地操作系统是在本地物理主机上运行的操作系统。图I为本专利技术实施例提供的一种虚拟机的模拟方法流程图。本实施例详细描述了利本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:靳国杰高翔胡伟武
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:

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

1