CN102662726A - 虚拟机的模拟方法和计算机设备 - Google Patents

虚拟机的模拟方法和计算机设备 Download PDF

Info

Publication number
CN102662726A
CN102662726A CN2012100970390A CN201210097039A CN102662726A CN 102662726 A CN102662726 A CN 102662726A CN 2012100970390 A CN2012100970390 A CN 2012100970390A CN 201210097039 A CN201210097039 A CN 201210097039A CN 102662726 A CN102662726 A CN 102662726A
Authority
CN
China
Prior art keywords
tlb
access instruction
virtual machine
instruction
cpu
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
CN2012100970390A
Other languages
English (en)
Other versions
CN102662726B (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp 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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201210097039.0A priority Critical patent/CN102662726B/zh
Publication of CN102662726A publication Critical patent/CN102662726A/zh
Application granted granted Critical
Publication of CN102662726B publication Critical patent/CN102662726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种虚拟机中旁路转换缓冲的模拟方法和装置。其中,虚拟机将目标CPU中的TLB表项填写到本地CPU的TLB中,当目标CPU要执行一个访存指令时,虚拟机将该访存指令翻译为本地CPU可执行的访存指令;虚拟机执行翻译后的访存指令时,本地CPU的TLB将访存指令携带的虚拟地址转换为物理地址,供翻译后的访存指令访问,由此完成目标CPU要执行的访存指令的访存操作。本发明使用硬件和软件结合的方法实现了异构虚拟机中TLB的模拟,提高了TLB的模拟效率。

Description

虚拟机的模拟方法和计算机设备
技术领域
本发明涉及计算机***结构、虚拟机技术领域,尤其涉及一种虚拟机的模拟方法和计算机设备。
背景技术
旁路转换缓冲(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的模拟效率。
附图说明
图1为本发明实施例提供的一种虚拟机的模拟方法流程图;
图2为本发明实施例提供的又一虚拟机的模拟方法流程图;
图3为本发明实施例提供的一种计算机设备示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。首先对本申请文件中使用的名词术语进行解释:
1、本地平台是指虚拟机软件所在的运行平台,是真实的物理平台;
2、目标平台是指虚拟机软件在运行期间模拟的平台,也就是在虚拟机中运行的目标软件所依托的平台。
3、本地CPU为本地平台中的CPU,目标CPU为目标平台中的CPU。
4、虚拟机的本地平台和目标平台相同时,称为同构虚拟机,否则称为异构虚拟机。
5、TLB命中是指TLB中包含传入的虚拟地址对应的表项,能够转换成物理地址。TLB不命中是指TLB中不包含传入的虚拟地址对应的表项。
6、目标操作***是指虚拟机中运行的操作***,本地操作***是在本地物理主机上运行的操作***。
图1为本发明实施例提供的一种虚拟机的模拟方法流程图。本实施例详细描述了利用软件和硬件共同完成虚拟机中TLB的模拟的过程。如图1所示,本实施例包括以下步骤:
步骤101,虚拟机取出目标CPU要执行的第一访存指令。
虚拟机在执行目标程序的过程中,以循环方式不断从目标内存中取出下一条要执行的指令,如果该指令是访存指令,则使用本发明实施例提供的方法模拟该访存指令的执行过程;否则,指令的执行与本发明无关。
需要说明的是,本发明实施例所提供的方法适用于异构虚拟机,即本地CPU和目标CPU的体系结构不相同。
另外,本发明实施例中,本地CPU和目标CPU均支持虚拟存储***,并且本地CPU和目标CPU均包含用于虚拟地址和物理地址转换的硬件TLB;本地CPU中的TLB和目标CPU中的TLB要支持相同大小的页面单位,这一条件在现有主要平台中通常都能得到满足,因此本发明实施例提供的方法的可行性较好;本地CPU提供对于TLB的操作指令,即TLB表项的读写指令,以便虚拟机能够使用这些指令读写本地TLB。
步骤102,虚拟机获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令。
虚拟机获取所述第一访存指令对应的第二访存指令的具体方法为:虚拟机根据翻译后指令保存队列,判断第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将第一访存指令翻译为本地CPU可执行的第二访存指令。
虚拟机在模拟执行取出的第一访存指令时,首先在翻译后指令保存队列中进行检索,查看该指令是否已经被翻译为本地CPU可以执行的第二访存指令。翻译后指令保存队列是虚拟机中用于保存所有翻译后代码的一个队列,如果要执行的指令已经被翻译,则虚拟机直接将翻译后的本地CPU可以执行的第二访存指令取出并执行。如果翻译后指令保存队列中没有目标CPU执行的第一访存指令对应的本地CPU执行的第二访存指令,则虚拟机翻译第一访存指令,并将翻译后的代码保存在该翻译后指令保存队列中,以便虚拟机下次再执行第一访存指令时,无须重新翻译,直接从该队列中取出并执行翻译后的第二访存指令。
虚拟机将目标CPU中的第一访问指令翻译成本地CPU的第二访存指令所使用的方法是:采用二进制指令翻译规则保证翻译前、翻译后指令在语义上的等价性。翻译后的指令序列中包含对于本地内存的访问动作,指令中包含的虚拟地址与翻译之前相同。
需要说明的是,本实施例中的第二访存指令可以为一个单一指令,也可以为一个指令序列,即多个指令,这由目标CPU和本地CPU的体系结构决定。
步骤103,虚拟机执行所述第二访存指令时,本地CPU的旁路转换缓冲TLB将所述第二访存指令携带的虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项。
虚拟机在获取到翻译后的第二访存指令时,将该指令序列投入本地CPU运行,第二访存指令中携带了目标CPU要访问的虚拟地址,本地CPU内部的TLB以硬件方式检查该TLB中包含该虚拟地址对应的表项,即查询该虚拟地址是否能够转换为物理地址,也就是使用TLB本身的异常处理机制来判断是否能够将该虚拟地址转换为物理地址。其中,上述虚拟地址被模拟指令要访问的虚拟地址,物理地址为本地物理内存地址,对应于目标内存的区域。
将目标CPU中的TLB表项填写到本地CPU的TLB中,实现了使用纯硬件方法模拟目标TLB的查询和地址转换流程,步骤102中的翻译后代码中将只有翻译后的访存指令,无须生成TLB的检索、是否命中的判断代码,从而使翻译代价降低到最小幅度,执行速度远远高于使用纯软件方法的几十条指令的规模。
步骤104,本地CPU的TLB中存在所述虚拟地址对应的表项时,本地CPU的TLB将所述虚拟地址转换为物理地址,用以使本地CPU将所述物理地址作为所述第二访存指令的实际访问地址,正常执行所述第二访存指令。
虚拟机将第二访存指令投入本地CPU运行后,由本地CPU根据第二访存指令中的虚拟地址,在TLB中获取虚拟地址对应的物理地址。只要本地操作***将本地CPU配置为启用页表转换的模式,本地CPU在执行指令时首先经过TLB进行“虚拟地址-物理地址”转换,TLB将要转换的虚拟地址与自身保存的所有表项进行匹配检查,如果存在相同虚拟地址的表项,则返回对应的物理地址,供本地CPU在执行后续的访存流程中使用。
本地CPU将转换后的物理地址为访存的实际位置,根据指令的语义执行本地内存的访问动作,以正常完成第二访存指令的执行。
由于TLB一般具有较高的命中率,因此TLB命中,第二访存指令正常执行完成的情形占TLB模拟的重要比例,又由于TLB命中时不会产生异常,因此也无需在内核中执行异常处理部分,使得虚拟机在整体上产生了较大规模的性能提升。
本发明实施例中,当目标CPU要执行一个访存指令时,虚拟机首先获取将该访存指令对应的本地CPU可执行的访存指令;虚拟机执行翻译后的访存指令时,本地CPU的TLB将访存指令携带的虚拟地址转换为物理地址,供翻译后的访存指令访问,由此完成目标CPU要执行的访存指令的访存操作。由此,本发明使用硬件和软件结合的方法实现了异构虚拟机中TLB的模拟,提高了虚拟机中TLB的模拟效率
图2为本发明实施例提供的又一虚拟机的模拟方法流程图。如图2所示,本实施例包括以下步骤:
步骤201,虚拟机取出目标CPU要执行的第一访存指令。
虚拟机在执行目标程序的过程中,以循环方式不断从目标内存中取出下一条要执行的指令,如果该指令是访存指令,则使用本发明实施例提供的方法模拟该访存指令的执行过程;否则,指令的执行与本发明无关。
步骤202,虚拟机根据翻译后指令保存队列,判断第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将第一访存指令翻译为本地CPU可执行的第二访存指令。
虚拟机在模拟执行取出的第一访存指令时,首先在翻译后指令保存队列中进行检索,查看该指令是否已经被翻译为本地CPU可以执行的第二访存指令。翻译后指令保存队列是虚拟机中用于保存所有翻译后代码的一个队列,如果要执行的指令已经被翻译,则虚拟机直接将翻译后的本地CPU可以执行的第二访存指令取出并执行。如果翻译后指令保存队列中没有目标CPU执行的第一访存指令对应的本地CPU执行的第二访存指令,则虚拟机翻译第一访存指令,并将翻译后的代码保存在该翻译后指令保存队列中,以便虚拟机下次再执行第一访存指令时,无须重新翻译,直接从该队列中取出并执行翻译后的第二访存指令。
步骤203,虚拟机执行所述第二访存指令时,由本地CPU根据所述第二访存指令携带的虚拟地址,本地CPU的旁路转换缓冲TLB将所述虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项。
虚拟机在获取到翻译后的第二访存指令时,将该指令序列投入本地CPU运行,第二访存指令中携带了目标CPU要访问的虚拟地址,本地CPU内部的TLB以硬件方式检查该TLB中包含该虚拟地址对应的表项,即查询该虚拟地址是否能够转换为物理地址,也就是使用TLB本身的异常处理机制来判断是否能够将该虚拟地址转换为物理地址。其中,上述虚拟地址被模拟指令要访问的虚拟地址,物理地址为本地物理内存地址,对应于目标内存的区域。
根据所述第二访存指令携带的虚拟地址,查询本地CPU的TLB中是否存在所述虚拟地址对应的表项之前,本实施例还包括:步骤206,将目标CPU中的被模拟的TLB表项填写到本地CPU的TLB中。
虚拟机执行步骤206的操作的时机与目标CPU中执行这一项硬件动作的时机相同。
优选地,在目标操作***调度新进程时,虚拟机会将目标CPU中的被模拟的TLB表项填写到本地CPU的TLB中。
优选地,在目标CPU上执行页表更新动作时,虚拟机会将目标CPU中更新后的TLB表项替换本地CPU中相应的TLB表项。
优选地,在目标CPU发生TLB miss异常时,虚拟机会执行表项替换动作,使用目标内存中的页表内容替换本地CPU中的TLB表项。
优选地,虚拟机还可以使用本地CPU提供对于TLB的操作指令,显示修改本地CPU中的TLB表项。
将目标CPU中的TLB表项填写到本地CPU的TLB中,实现了使用纯硬件方法模拟目标TLB的查询和地址转换流程,步骤202中的翻译后代码中将只有翻译后的访存指令,无须生成TLB的检索、是否命中的判断代码,从而使翻译代价降低到最小幅度,执行速度远远高于使用纯软件方法的几十条指令的规模。
步骤204,本地CPU的TLB中存在所述虚拟地址对应的表项时,本地CPU的TLB将所述虚拟地址转换为物理地址,用以使本地CPU正常执行所述第二访存指令。
虚拟机将第二访存指令投入本地CPU运行后,由本地CPU根据第二访存指令中的虚拟地址,在TLB中获取虚拟地址对应的物理地址。只要本地操作***将本地CPU配置为启用页表转换的模式,本地CPU在执行指令时首先经过TLB进行“虚拟地址-物理地址”转换,TLB将要转换的虚拟地址与自身保存的所有表项进行匹配检查,如果存在相同虚拟地址的表项,则返回对应的物理地址,供本地CPU在执行后续的访存流程中使用。
步骤205,本地CPU的TLB中不存在所述虚拟地址对应的表项时,本地CPU产生TLB miss异常,并转入执行本地操作系注册的异常处理例程入口,由本地操作***针对所述TLB miss异常进行模拟处理。
如果本地CPU的TLB中不存在所述虚拟地址对应的表项,本地CPU产生TLB miss异常,由本地操作***中的异常处理功能模块来处理该异常。
由本地操作***针对所述TLB miss异常进行模拟处理具体为:本地操作***在异常处理例程中识别异常产生的原因,判断所述异常为来自虚拟机的TLB miss异常后,模拟目标CPU中产生TLB miss异常的硬件处理方法进行处理。
需要说明的是,在不同的体系结构中,TLB miss异常处理过程不同。在硬件管理的TLB中(以X86为代表),TLB在发生miss异常时,首先由CPU在物理内存中执行页表查找动作,如果在页表中查找到有效的物理地址,则把这次查找结果反填到TLB中,从而在下次访问相同虚拟地址时能够直接在TLB中得到转换。在软件管理的TLB中(以MIPS为代表),TLB在发生miss异常时,CPU本身只向操作***报告异常,由操作***完成物理内存中页表的查找动作,如果在页表中查找到有效的物理地址,则由操作***调用特定的TLB读写指令,显式的把这次查找结果反填到TLB中。无论是在哪一种类型中,虚拟机都是模拟与目标硬件相匹配的行为,在目标CPU的TLB被修改的时机,执行本地TLB的相应修改。
本发明实施例中,虚拟机将目标CPU中的TLB表项填写到本地CPU的TLB中,当目标CPU要执行一个访存指令时,虚拟机将该访存指令翻译为本地CPU可执行的访存指令;虚拟机执行翻译后的访存指令时,本地CPU的TLB将访存指令携带的虚拟地址转换为物理地址,供翻译后的访存指令访问,由此完成目标CPU要执行的访存指令的访存操作;如果本地CPU的TLB中不包含访存指令携带的虚拟地址对应的表项,本地CPU产生TLB miss异常,并转入执行本地操作系注册的异常处理例程入口,由本地操作***模拟目标CPU中产生TLB miss异常的硬件处理方法处理该异常。由此,本发明使用硬件和软件结合的方法实现了异构虚拟机中TLB的模拟,提高了虚拟机中TLB的模拟效率。
下面以一个目标CPU要执行的访存指令为例,说明异构虚拟机中TLB模拟的方法。
假设主机中的CPU为MIPS结构的CPU,虚拟机的CPU为X86的CPU,在X86CPU中使用4K页面,在MIPS CPU中则一般能够支持4K、16K等不同的页面大小,甚至能够在CPU运行期间混合使用不同页面单位的页表,满足使用本方法的前提条件。在MIPS指令集中提供4条TLB操作指令:TLBP(查询条目)、TLBR(读条目)、TLBWI(写条目)、TLBWR(随机写条目)。这四条指令都是特权指令,必须在特权态下执行,提供了操作本地TLB的全部必要手段。
假设虚拟机使用连续的本地物理内存模拟X86物理内存,其起始物理地址为0x40000000。在X86CPU中,某应用程序的页表中存在下面的映射:
[虚拟地址0x80000000,物理地址0x50000]
并且这一条映射已经在本地CPU的TLB中存在,其内容为:
[虚拟地址0x80000000,物理地址0x40050000]
如果应用程序执行下面的访存指令:
MOV EAX,[0x80000002]
经过虚拟机翻译成下面的MIPS指令:
lui t0,0x8000
ori t0 0x0002
1w s0,0(t 0)
其中,寄存器t0保存了原有X86指令要访问的虚拟地址;s0用于模拟目标EAX寄存器,用于保存从内存中读取的数据。
本地MIPS在执行最后一条1w指令时,以虚拟地址的页面基地址(0x80000000)查询TLB,与TLB中表项相匹配,从而取出物理页面基地址为0x40050000。这一物理地址再加上原虚拟地址的页内偏移量(0x2),得到最终访问的本地物理地址为0x40050002。这一地址正是虚拟机模拟的X86目标物理地址,从而使模拟执行的MOV指令的语义得到正确模拟。
通过上述具体的示例描述,说明了本发明实施例提供的TLB模拟方法的可行性好,效率高。
相应地,本发明还提供了一种虚拟机中旁路转换缓冲的模拟装置。图3为本发明实施例提供的一种计算机设备示意图。如图3所示,本实施例包括以下单元:
虚拟机301,虚拟机301包括:取指单元303,用于取出目标CPU要执行的第一访存指令;指令获取单元304,用于获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令。
需要说明的是,本发明实施例所提供的虚拟机既可以为同构虚拟机,也可以为异构虚拟机,即本地CPU和目标CPU可以是相同的体系结构,也可以是不同的体系结构。对于同构虚拟机,虚拟机可以直接利用本地CPU模拟目标CPU的TLB执行流程,因此,本发明实施例将只针对异构虚拟机中TLB的模拟进行详细描述。
另外,本发明实施例中,本地CPU和目标CPU均支持虚拟存储***,并且本地CPU和目标CPU均包含用于虚拟地址和物理地址转换的硬件TLB;本地CPU中的TLB和目标CPU中的TLB要支持相同大小的页面单位,这一条件在现有主要平台中通常都能得到满足,因此本发明实施例提供的装置具有广泛的适用性;本地CPU提供对于TLB的操作指令,即TLB表项的读写指令,以便虚拟机能够使用这些指令读写本地TLB。
指令获取单元304具体用于:根据翻译后指令保存队列,判断所述第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将所述第一访存指令翻译为所述第二访存指令,并将所述第二访存指令存入所述翻译后指令保存队列。
虚拟机在模拟执行取出的第一访存指令时,指令获取单元304首先在翻译后指令保存队列中进行检索,查看该指令是否已经被翻译为本地CPU可以执行的第二访存指令。翻译后指令保存队列是虚拟机中用于保存所有翻译后代码的一个队列,如果要执行的指令已经被翻译,则虚拟机直接将翻译后的本地CPU可以执行的第二访存指令取出并执行。如果翻译后指令保存队列中没有目标CPU执行的第一访存指令对应的本地CPU执行的第二访存指令,则虚拟机翻译第一访存指令,并将翻译后的代码保存在该翻译后指令保存队列中,以便虚拟机下次再执行第一访存指令时,无须重新翻译,直接从该队列中取出并执行翻译后的第二访存指令。
虚拟机将目标CPU中的第一访存指令翻译成本地CPU的第二访存指令所使用的方法是:采用二进制指令翻译规则保证翻译前、翻译后指令在语义上的等价性。翻译后的指令序列中包含对于本地内存的访问动作,指令中包含的虚拟地址与翻译之前相同。
需要说明的是,本实施例中的第二访存指令可以为一个单一指令,也可以为一个指令序列,即多个指令,这由目标CPU和本地CPU的体系结构决定。
本地CPU302,本地CPU302包括:TLB305,用于将所述第二访存指令携带的虚拟地址与TLB305中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项;本地CPU302的TLB305中存在所述虚拟地址对应的表项时,TLB305将所述虚拟地址转换为物理地址,用以使本地CPU302正常执行所述第二访存指令
优选地,虚拟机301还包括:TLB操作单元306,用于将目标CPU中的被模拟的旁路转换缓冲TLB表项填写到本地CPU302的TLB305中。
虚拟机将翻译后的访存指令投入本地CPU302运行,由本地CPU302模拟目标CPU执行访存指令,在本地CPU执行访存指令的过程中,本地TLB305以硬件方式检查该TLB中的表项,以判断是否能够将访存指令携带的虚拟地址装换为物理地址,如果能,则正常执行访存指令,否则模拟目标硬件的方法处理TLB miss异常。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种虚拟机的模拟方法,其特征在于,所述方法包括:
虚拟机取出目标CPU要执行的第一访存指令;
虚拟机获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令;
虚拟机执行所述第二访存指令时,本地CPU的旁路转换缓冲TLB将所述第二访存指令携带的虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项;
本地CPU的TLB中存在所述虚拟地址对应的表项时,本地CPU的TLB将所述虚拟地址转换为物理地址,用以使本地CPU将所述物理地址作为所述第二访存指令的实际访问地址,正常执行所述第二访存指令。
2.如权利要求1所述的虚拟机的模拟方法,其特征在于,所述判断是否存在所述虚拟地址对应的表项之后还包括:本地CPU的TLB中不存在所述虚拟地址对应的表项时,本地CPU产生TLB失败TLB miss异常,并转入执行本地操作***注册的异常处理例程入口,由本地操作***针对所述TLB miss异常进行模拟处理。
3.如权利要求1所述的虚拟机的模拟方法,其特征在于,所述本地CPU的TLB将所述虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项之前还包括:虚拟机将目标CPU中的被模拟的TLB表项填写到本地CPU的TLB中。
4.如权利要求1所述的虚拟机的模拟方法,其特征在于,所述虚拟机获取所述第一访存指令对应的第二访存指令具体为:虚拟机根据翻译后指令保存队列,判断所述第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将所述第一访存指令翻译为所述第二访存指令,并将所述第二访存指令存入所述翻译后指令保存队列。
5.如权利要求3所述的虚拟机的模拟方法,其特征在于,所述目标CPU和所述本地CPU为不同的体系结构;所述目标CPU中的TLB和所述本地CPU中的TLB支持的页面单位的大小相同。
6.如权利要求1所述的虚拟机的模拟方法,其特征在于,所述第二访存指令具体为一个访存指令,或一个访存指令序列。
7.如权利要求2所述的虚拟机的模拟方法,其特征在于,所述由本地操作***针对所述TLB miss异常进行模拟处理具体为:本地操作***在异常处理例程中识别异常产生的原因,判断所述异常为来自虚拟机的TLB miss异常后,模拟目标CPU中产生TLB miss异常的硬件处理方法进行处理。
8.一种计算机设备,其特征在于,所述计算机设备包括:
虚拟机,所述虚拟机包括:取指单元,用于取出目标CPU要执行的第一访存指令;指令获取单元,用于获取所述第一访存指令对应的第二访存指令,所述第二访存指令为虚拟机翻译所述第一访存指令而得到的本地CPU可执行的指令;
本地CPU,所述本地CPU包括:旁路转换缓冲TLB,用于将所述第二访存指令携带的虚拟地址与TLB中的表项进行匹配检查,判断是否存在所述虚拟地址对应的表项;本地CPU的TLB中存在所述虚拟地址对应的表项时,TLB将所述虚拟地址转换为物理地址,用以使本地CPU将所述物理地址作为所述第二访存指令的实际访问地址,正常执行所述第二访存指令。
9.如权利要求8所述的计算机设备,其特征在于,所述虚拟机还包括:TLB操作单元,用于将目标CPU中的被模拟的旁路转换缓冲TLB表项填写到本地CPU的TLB中。
10.如权利要求8所述的计算机设备,其特征在于,所述指令获取单元具体用于:根据翻译后指令保存队列,判断所述第一访存指令是否已经被翻译为本地CPU的第二访存指令,若是,则从所述翻译后指令保存队列中获取所述第二访存指令;否则将所述第一访存指令翻译为所述第二访存指令,并将所述第二访存指令存入所述翻译后指令保存队列。
11.如权利要求9所述的计算机设备,其特征在于,所述目标CPU和所述本地CPU为不同的体系结构;所述目标CPU中的TLB和所述本地CPU中的TLB支持的页面单位的大小相同。
CN201210097039.0A 2012-04-01 2012-04-01 虚拟机的模拟方法和计算机设备 Active CN102662726B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210097039.0A CN102662726B (zh) 2012-04-01 2012-04-01 虚拟机的模拟方法和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210097039.0A CN102662726B (zh) 2012-04-01 2012-04-01 虚拟机的模拟方法和计算机设备

Publications (2)

Publication Number Publication Date
CN102662726A true CN102662726A (zh) 2012-09-12
CN102662726B CN102662726B (zh) 2015-07-29

Family

ID=46772226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210097039.0A Active CN102662726B (zh) 2012-04-01 2012-04-01 虚拟机的模拟方法和计算机设备

Country Status (1)

Country Link
CN (1) CN102662726B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455363A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN106371890A (zh) * 2016-08-29 2017-02-01 山东乾云启创信息科技股份有限公司 一种gpu的模拟方法
CN108595349A (zh) * 2017-12-28 2018-09-28 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN110209603A (zh) * 2019-05-31 2019-09-06 龙芯中科技术有限公司 地址转换方法、装置、设备及计算机可读存储介质
CN114546897A (zh) * 2020-11-26 2022-05-27 龙芯中科技术股份有限公司 内存访问方法、装置、电子设备及存储介质
CN114996176A (zh) * 2022-07-29 2022-09-02 飞腾信息技术有限公司 访存方法、计算设备以及存储介质
WO2023165317A1 (zh) * 2022-03-02 2023-09-07 阿里巴巴(中国)有限公司 内存访问方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060112212A1 (en) * 2004-11-23 2006-05-25 Hob Gmbh & Co. Kg Virtual machine computer system for running guest operating system on a central processing means virtualized by a host system using region ID virtual memory option
CN101751345A (zh) * 2008-12-10 2010-06-23 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
CN102306126A (zh) * 2011-08-24 2012-01-04 华为技术有限公司 内存管理方法、装置和***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060112212A1 (en) * 2004-11-23 2006-05-25 Hob Gmbh & Co. Kg Virtual machine computer system for running guest operating system on a central processing means virtualized by a host system using region ID virtual memory option
CN101751345A (zh) * 2008-12-10 2010-06-23 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
CN102306126A (zh) * 2011-08-24 2012-01-04 华为技术有限公司 内存管理方法、装置和***

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455363A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN103455363B (zh) * 2013-08-30 2017-04-19 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN106371890A (zh) * 2016-08-29 2017-02-01 山东乾云启创信息科技股份有限公司 一种gpu的模拟方法
CN106371890B (zh) * 2016-08-29 2019-05-28 山东乾云启创信息科技股份有限公司 一种gpu的模拟方法
CN108595349A (zh) * 2017-12-28 2018-09-28 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
WO2019128200A1 (zh) * 2017-12-28 2019-07-04 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN108595349B (zh) * 2017-12-28 2020-01-31 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN110209603A (zh) * 2019-05-31 2019-09-06 龙芯中科技术有限公司 地址转换方法、装置、设备及计算机可读存储介质
CN114546897A (zh) * 2020-11-26 2022-05-27 龙芯中科技术股份有限公司 内存访问方法、装置、电子设备及存储介质
WO2023165317A1 (zh) * 2022-03-02 2023-09-07 阿里巴巴(中国)有限公司 内存访问方法和装置
CN114996176A (zh) * 2022-07-29 2022-09-02 飞腾信息技术有限公司 访存方法、计算设备以及存储介质

Also Published As

Publication number Publication date
CN102662726B (zh) 2015-07-29

Similar Documents

Publication Publication Date Title
CN102662726A (zh) 虚拟机的模拟方法和计算机设备
CN102707900B (zh) 虚拟盘存储技术
US9336036B2 (en) System method for memory virtualization control logic for translating virtual memory in space of guest memory based on translated codes in response to memory failure
CN103493027B (zh) 虚拟磁盘存储技术
US8656222B2 (en) Method and system for recording a selected computer process for subsequent replay
US8171255B1 (en) Optimization of paging cache protection in virtual environment
US8661181B2 (en) Memory protection unit in a virtual processing environment
US8688432B2 (en) Method, apparatus and full-system simulator for speeding MMU simulation
US20140108701A1 (en) Memory protection unit in a virtual processing environment
US7856542B1 (en) Paging cache optimization for virtual machine
US20150278106A1 (en) Transparent code patching including updating of address translation structures
US7506096B1 (en) Memory segment emulation model for virtual machine
CN102662869B (zh) 虚拟机中的内存访问方法和装置及查找器
US11138128B2 (en) Controlling guard tag checking in memory accesses
EP2281237B1 (en) Device emulation support within a host data processing apparatus
CN101118499A (zh) 异构硬件体系间软件移植的***
US11397541B2 (en) Controlling guard tag checking in memory accesses
CN110709823A (zh) 使用jit编译器并绕过所选择目标代码块的转译的目标***的仿真
US7694301B1 (en) Method and system for supporting input/output for a virtual machine
CN100399298C (zh) 操作Linux内核页表加速模拟PowerPC体系结构的方法
JP7369720B2 (ja) アクションをトリガするための装置及び方法
CN117453286A (zh) 一种申威simd指令对i/o空间的访问方法、装置、设备及介质
IL279812B2 (en) Treatment of the loss of the fennel label
CN111527480A (zh) 数据处理装置中的地址转换
CN101957775A (zh) 用于支持多处理器虚拟机环境中的地址翻译的方法和装置

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.