CN101751345A - 在主机中运行客户机的程序的模拟器和模拟方法 - Google Patents
在主机中运行客户机的程序的模拟器和模拟方法 Download PDFInfo
- Publication number
- CN101751345A CN101751345A CN200810185788A CN200810185788A CN101751345A CN 101751345 A CN101751345 A CN 101751345A CN 200810185788 A CN200810185788 A CN 200810185788A CN 200810185788 A CN200810185788 A CN 200810185788A CN 101751345 A CN101751345 A CN 101751345A
- Authority
- CN
- China
- Prior art keywords
- page table
- client computer
- impact damper
- main frame
- program
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在主机中运行客户机的程序的模拟器和模拟方法。模拟器包含:初始化装置,被配置为设置位于主机中的管理程序页表的内容,所述管理程序页表用于将客户机物理地址空间映射到主机物理地址空间;二进制翻译装置,被配置为在翻译代码中使用程序逻辑地址来进行内存访问;命中失误处理装置,被配置为通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新,所述主机页表缓冲器用于缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目;和更新跟踪装置,被配置为响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。
Description
技术领域
本发明涉及基于动态二进制翻译的全系统模拟技术,尤其涉及全系统模拟中的内存地址翻译。
背景技术
在计算机领域存在不同的指令集体系结构。例如Intel的x86指令集体系结构、IBM的PowerPC指令集体系结构等等。针对一种指令集体系结构编译的操作系统和应用程序目标代码通常不能直接在基于不同指令集体系结构的计算机中执行。
全系统模拟器(下文中简称为模拟器)运行在基于一种指令集体系结构的计算机(下文中简称为主机)上,但可模拟出基于不同指令集体系结构的计算机(下文中简称为客户机)。借助模拟器,针对客户机编译的操作系统和应用程序目标代码能够在主机上执行,就像直接在客户机上执行那样。
计算机软件通常基于逻辑地址来访问内存数据。当计算机执行访问内存的指令时,借助于内存管理单元(MMU)将逻辑地址转换为物理地址,以进行最终的内存访问。在准备执行软件时,建立定义逻辑地址空间到物理地址空间的映射的页表。为提高速度,通过页表缓冲器(TLB)来缓冲页表的条目。在下文中,除非专门指出,所提及的地址均指用于数据访问的地址。
为提高处理速度,模拟器通常采用动态二进制翻译技术,来将客户机的软件翻译成基于主机指令集体系结构的代码序列(下文中称为翻译代码)。在进行二进制翻译时,模拟器需要模拟客户机的MMU的处理,以将客户机程序的逻辑地址翻译为客户机的物理地址(即主机逻辑地址)。当主机执行翻译代码时,由主机的MMU将翻译成的客户机物理地址翻译为主机物理地址。
当模拟器执行客户机程序时,在二进制翻译环节需要将客户机逻辑地址翻译成客户机物理地址。这个处理大大降低了模拟器的执行效率。
发明内容
鉴于现有技术的上述情况,需要提供一种改进模拟器执行效率的手段。
本发明的一个实施例提供了一种在主机中运行客户机的程序的模拟器,包括:初始化装置,被配置为设置位于主机中的管理程序页表的内容,所述管理程序页表用于将客户机物理地址空间映射到主机物理地址空间;二进制翻译装置,被配置为在翻译代码中使用程序逻辑地址来进行内存访问;命中失误处理装置,被配置为通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新,所述主机页表缓冲器用于缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目;和更新跟踪装置,被配置为响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。
本发明的一个实施例提供了一种在主机中运行客户机的程序的模拟方法,包括:设置位于主机中的管理程序页表的内容,所述管理程序页表用于将客户机物理地址空间映射到主机物理地址空间;进行二进制翻译,其中在翻译代码中使用程序逻辑地址来进行内存访问;通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新,所述主机页表缓冲器用于缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目;和响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。
在本发明的实施例中,由于模拟器省略了模拟客户机的MMU的处理以将客户机逻辑地址翻译成客户机物理地址的过程,因而提高了执行效率。
附图说明
参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。
图1是示出根据本发明实施例的模拟器和主机的示例性结构的框图。
图2以和现有技术对比的方式示出了根据本发明实施例的二进制翻译装置的翻译处理。
图3示出了根据本发明实施例的在主机中运行客户机程序的模拟方法的流程图。
图4示出了根据本发明实施例的在主机中运行模拟器的方法的流程图。
图5是示出其中实现本发明的计算机的示例性结构的框图。
具体实施方式
下面参照附图来说明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
图1是示出根据本发明实施例的模拟器和主机的示例性结构的框图。
如图1所示,模拟器101包括二进制翻译装置110、初始化装置111、命中失误处理装置112和更新跟踪装置113。主机102包括管理程序页表120、页故障处理装置121、页表缓冲器122和内存管理单元123。
主机的地址翻译机制
如图1所示,主机102包括页表缓冲器122和管理程序页表120。如后面会详细描述的,页表缓冲器122缓冲将程序(即模拟器101执行的客户机程序)逻辑地址空间的地址映射到客户机物理地址空间的地址的条目。管理程序页表120将客户机物理地址空间映射到主机物理地址空间。例如,管理程序页表120包含将客户机物理地址空间的地址映射到主机物理地址空间的地址的条目。在容量允许的情况下,可以在管理程序页表120中实现完整的映射。可选地,也可以在内存中存储完整映射,并且由管理程序页表120缓冲完整映射的部分映射。应当注意,虽然图1中将页表缓冲器122和管理程序页表120示出为与内存管理单元123分离,然而取决于具体实现,它们也可以部分或全部地被包含在内存管理单元123中。
如后面会详细描述地,主机102可执行客户机程序的翻译代码。当主机102执行涉及内存访问的代码时,将内存访问所涉及的程序逻辑地址传送给内存管理单元123,内存管理单元123生成相应的主机物理地址并送到地址线上,使得主机102完成对主机物理地址指示的内存位置的寻址。内存管理单元123利用页表缓冲器122和管理程序页表120将程序逻辑地址转换为相应的主机物理地址。例如,内存管理单元123从页表缓冲器122中找到将程序逻辑地址对应为客户机物理地址的映射关系(例如映射条目),根据此映射关系得到相应的客户机物理地址。接着,内存管理单元123根据管理程序页表120中的映射关系将客户机物理地址转换为主机物理地址。
如果没有在页表缓冲器122中找到针对所接收的客户机逻辑地址的条目,即发生了命中失误,则通知页故障处理装置121。
如果没有在管理程序页表120中找到针对所获得的客户机物理地址的映射关系(在管理程序页表120只缓冲部分映射关系的情况下),则从内存中找到期望的映射关系并换入到管理程序页表120中。
优选地,页表缓冲器122和管理程序页表120可通过硬件来实现,从而自动地完成从程序逻辑地址到客户机物理地址再到主机物理地址的转换。具体地,可基于INTEL公司的扩展页表(EPT)或AMD公司的嵌套页表(NPT)技术来实现页表缓冲器122和管理程序页表120。EPT和NPT是硬件辅助虚拟化方面的技术,可为虚拟机提供硬件地址翻译支持。通过用模拟器来代替虚拟机,可以利用EPT和NPT技术来实现页表缓冲器122和管理程序页表120。
在页表缓冲器122和管理程序页表120非专用于翻译代码的情况下,内存管理单元123需要确定所接收的程序逻辑地址是否属于翻译代码,以便通过页表缓冲器122和管理程序页表120进行正确的地址翻译。可通过各种技术来实现此目的。在一个例子中,可通过执行状态来区分模拟器101和翻译代码。例如,当运行模拟器101本身的代码时,将执行状态切换为管理程序状态;当运行翻译代码时,将执行状态切换为客户状态。在另一个例子中,可为模拟器101和翻译代码分配不同的进程标识,而翻译代码的进程标识为具有表示翻译代码的指定特征的进程标识。可通过标签(例如进程标识、状态)技术来区分出页表缓冲器122和管理程序页表120中涉及翻译代码的映射。
初始化机制
所属技术领域的技术人员明白,当模拟器101要运行时,主机102的操作系统为模拟器101分配逻辑地址空间,并初始化页表。该页表记载从模拟器101的逻辑地址空间到主机物理地址空间的映射。模拟器101在开始运行时,初始化客户机的各种特性,其中,从其逻辑地址空间中分配出部分空间,以作为客户机的物理地址空间。模拟器101在要执行客户机程序时,为客户机程序分配逻辑地址空间,并且为所模拟的客户机内存管理单元的页表缓冲器准备针对该客户机程序的页表,以将客户机程序的逻辑地址空间映射到客户机物理地址空间。当然,在允许客户机程序动态申请内存的情况下,客户机程序逻辑地址空间到客户机物理地址空间的映射可能发生改变。
当模拟器101要加载执行一个客户机程序时,初始化装置111设置管理程序页表120的内容。具体地,初始化装置111在管理程序页表120中设置从客户机物理地址空间(即模拟器101从其逻辑地址空间中为客户机的物理内存分配的空间)到主机物理地址空间的映射关系。在容量允许的情况下,可以在管理程序页表120中设置完整的映射。可选地,也可以在内存中存储完整映射,并且由管理程序页表120缓冲完整映射的部分映射。在后者的情况下,可由主机102来检测和处理管理程序页表120的页故障。
在上述实施例中,假定客户机物理地址与模拟器逻辑地址是一致的。在客户机物理地址与模拟器逻辑地址不一致的情况下,可以在设置管理程序页表120时根据预定映射规则将客户机物理地址转换为模拟器逻辑地址,并将转换成的模拟器逻辑地址作为管理程序页表120的映射关系所涉及的客户机物理地址。
动态二进制翻译
模拟器101在执行客户机程序时,逐段或整个地将客户机程序的目标代码翻译成基于主机指令集体系结构的代码序列并交给主机执行。二进制翻译110负责进行这种翻译,其中在翻译代码中,使用程序逻辑地址来进行内存访问。
图2以和现有技术对比的方式示出了根据本发明实施例的二进制翻译装置的翻译处理。
图2示出了客户机程序的一个涉及内存访问的指令“stw r20,24(r21)”,其语义是将寄存器r20的内容存储在由寄存器r21的内容加24所得的地址指示的(逻辑)内存位置。如图2所示,按照现有技术的二进制翻译处理,该指令被翻译成包括三个步骤的主机指令序列。第一个步骤是计算客户机程序逻辑地址Guest_LA=r21+24。第二个步骤是计算客户机物理地址Guest_PA=TLB_translate(Guest_LA),其中TLB_translate是模拟客户机的内存管理单元的功能以得到与Guest_LA相应的客户机物理地址Guest_PA(即,模拟器逻辑地址)的功能调用。第三个步骤是将寄存器r20的内容存储在地址HostMem[Guest_PA]处(HostMem表示主机进行的地址翻译)。如图2所示,在二进制翻译装置110翻译成的主机指令序列中,只包含两个步骤,即计算客户机程序逻辑地址Guest_LA=r21+24的步骤,和将寄存器r20的内容存储在地址HostMem[Guest_LA]处的步骤。与现有技术的指令序列相比,省略了现有技术指令序列中的第二个步骤,即计算客户机物理地址Guest_PA=TLB_translate(Guest_LA)的步骤,因而提高了二进制翻译的效率。
虽然图2只示出了存储的例子,然而根据本发明实施例的二进制翻译装置110同样也可处理涉及加载的情况。
页表缓冲器的维护
当模拟器101开始执行客户机程序时或在模拟器101执行客户机程序过程中,对于翻译代码中主机当前执行的内存访问指令,客户机的页表缓冲器和主机的页表缓冲器可能未包含涉及该内存访问指令所要访问的程序逻辑地址的条目。在这种情况下,会发生命中失误并中断当前指令的执行,并且页故障处理装置121会得到有关命中失误的页故障通知。页故障处理装置121可通过各种方式得到通知,例如通过页故障中断、通过来自内存管理单元123或页表缓冲器122的通知信号或直接被发现命中失误的模块调用。
页故障处理装置121可根据翻译代码的特征(例如,具有指定特征的进程标识或特定执行状态等等)识别出翻译代码的执行所引起的页表缓冲器中的命中失误,并通知模拟器101来配置页表缓冲器122以处理命中失误。
在模拟器101中,由命中失误处理装置112来处理来自页故障处理装置121的通知。命中失误处理装置112通过将翻译代码的执行所引起的页表缓冲器122中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新。也就是说,当命中失误处理装置112被通知在页表缓冲器122中发生命中失误时,也认为在客户机的页表缓冲器中也不存在用于将当前内存访问指令所要访问的程序逻辑地址映射到客户机物理地址的所需条目。相应地,命中失误处理装置112从客户机的页表中将所需条目取到客户机的页表缓冲器中。在客户机的页表缓冲器中有空闲空间的情况下,可以直接将所需条目放置在空闲位置;否则的话,可根据预定策略淘汰客户机的页表缓冲器中的某个条目并替换为所需条目。
如前所述,命中失误处理装置112负责对客户机的页表缓冲器进行更新。更新跟踪装置113则响应于客户机页表缓冲器的更新,对主机的页表缓冲器122进行相同的更新。也就是说,如果客户机的页表缓冲器中添加了一个条目,则更新跟踪装置113将相同的条目添加到页表缓冲器122中。如果客户机的页表缓冲器中淘汰了一个条目,则更新跟踪装置113将相同的条目从页表缓冲器122中淘汰。通过命中失误处理装置112和更新跟踪装置113的处理,保持客户机的页表缓冲器和主机的页表缓冲器122间在涉及翻译代码的条目方面的同步。
相应地,在更新跟踪装置113最终处理了命中失误后,恢复被中断的当前指令的执行。
在模拟器101开始执行客户机程序时,客户机的页表缓冲器和主机的页表缓冲器122可以不包含翻译代码的条目。然而为提高效率,可以由模拟器101根据预定预测策略在生成客户机程序的页表时向客户机的页表缓冲器中设置部分条目以作为初值。更新跟踪装置113则响应于客户机的页表缓冲器中针对客户机程序的初值的设置,对主机的页表缓冲器122中针对所述程序的内容进行相同的初值设置,即将相同的部分条目设置在页表缓冲器122中以作为初始值。
在客户机程序的执行过程中,如果允许客户机申请动态内存分配,或者在允许其它动态内存调整或清理的情况下,客户机的页表中针对客户机程序的条目的内容可能发生改变。如果发生改变的条目当前被缓冲在客户机的页表缓冲器和主机的页表缓冲器122中,则模拟器101用改变的条目刷新当前被缓冲在客户机的页表缓冲器和主机的页表缓冲器122中的相应条目,以避免发生地址翻译错误。在这种情况下,更新跟踪装置113响应于根据预定事件,即,由于动态内存分配、调整、清理等等而对页表条目的修改,对客户机的页表缓冲器中针对客户机程序的内容的刷新,对主机的页表缓冲器中针对所述程序的内容进行相同的刷新。更新跟踪装置113可通过各种方式得知客户机的页表缓冲器中的这种刷新。例如,可从模拟器101中负责刷新的模块得知,或通过模拟器101模拟的涉及刷新的中断来得知,等待。
可通过各种方式将主机102的页故障处理装置121与模拟器101的命中失误处理装置112关联起来。例如,可以由初始化装置111向主机102注册命中失误处理装置112,使得主机102(例如页故障处理装置121)在检测到翻译代码的执行所引起的主机页表缓冲器122中的命中失误时,启动命中失误处理装置112。在这种情况下,主机可包括注册装置(未示出),用于接受模拟器101的注册,以便对模拟器102进行有关命中失误的通知。
可通过各种方式实现注册装置。例如,主机102的操作系统可作为注册装置,其指定特定的可链接模块作为当检测到翻译代码的执行所引起的主机页表缓冲器122中的命中失误时要调用的模块,并且在该模块中实现命中失误处理装置112的处理逻辑。或者,可以将命中失误处理装置112设置为主机102的中断处理例程,并且由页故障处理装置121当检测到翻译代码的执行所引起的主机页表缓冲器122中的命中失误时产生相应的中断。在这种情况下,操作系统的中断管理系统可作为注册装置。或者,可以向主机102的页故障处理装置121提供命中失误处理装置112的句柄,以便直接调用。在这种情况下,接受并管理进程句柄的操作系统模块可作为注册装置。
模拟方法
图3示出了根据本发明实施例的在主机中运行客户机程序的模拟方法的流程图,该主机可以是如图1所示的主机102。
如图3所示,模拟方法从步骤300开始。在步骤302,设置管理程序页表的内容。具体地,在管理程序页表中设置从客户机物理地址空间到主机物理地址空间的映射关系。在容量允许的情况下,可以在管理程序页表中设置完整的映射。可选地,也可以在内存中存储完整映射,并且由管理程序页表缓冲完整映射的部分映射。
在上述实施例中,假定客户机物理地址与模拟器逻辑地址是一致的。在客户机物理地址与模拟器逻辑地址不一致的情况下,可以在设置管理程序页表时根据预定映射规则将客户机物理地址转换为模拟器逻辑地址,并将转换成的模拟器逻辑地址作为管理程序页表的映射关系所涉及的客户机物理地址。
在步骤304,进行二进制翻译,其中在翻译代码中使用程序逻辑地址来进行内存访问。可逐段或整个地将客户机程序的目标代码翻译成基于主机指令集体系结构的代码序列并交给主机执行。步骤304的二进制翻译的示例如前参照图2所述。虽然图2只示出了存储的例子,然而根据本发明实施例的二进制翻译同样也可处理涉及加载的情况。
在步骤306,执行翻译代码。当最初开始执行翻译代码时或在执行翻译代码过程中,对于翻译代码中当前执行的内存访问指令,客户机的页表缓冲器和主机的页表缓冲器可能未包含涉及该内存访问指令所要访问的程序逻辑地址的条目。在这种情况下,会发生命中失误并中断当前指令的执行。
在执行翻译代码过程中,如果发生将翻译代码的执行所引起的主机页表缓冲器中的命中失误,则在步骤308,通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新。也就是说,当在主机的页表缓冲器中发生命中失误时,也认为在客户机的页表缓冲器中也不存在用于将当前内存访问指令所要访问的程序逻辑地址映射到客户机物理地址的所需条目。相应地,从客户机的页表中将所需条目取到客户机的页表缓冲器中。在客户机的页表缓冲器中有空闲空间的情况下,可以直接将所需条目放置在空闲位置;否则的话,可根据预定策略淘汰客户机的页表缓冲器中的某个条目并替换为所需条目。
在步骤310,响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。也就是说,如果客户机的页表缓冲器中添加了一个条目,则将相同的条目添加到主机的页表缓冲器中。如果客户机的页表缓冲器中淘汰了一个条目,则将相同的条目从主机的页表缓冲器中淘汰。通过步骤308和310的处理,保持客户机的页表缓冲器和主机的页表缓冲器间在涉及翻译代码的条目方面的同步。
相应地,当在步骤310最终处理了命中失误后,恢复被中断的当前指令的执行。当执行完翻译代码时,在步骤312确定是否存在未进行二进制翻译的客户机程序代码。如果没有,则方法在步骤314结束。如果有,则返回步骤304。
在开始执行客户机程序时,客户机的页表缓冲器和主机的页表缓冲器可以不包含翻译代码的条目。然而为提高效率,可以根据预定预测策略在生成客户机程序的页表时向客户机的页表缓冲器中设置部分条目以作为初值。相应地,模拟方法可包括响应于客户机的页表缓冲器中针对客户机程序的初值的设置,对主机的页表缓冲器中针对所述程序的内容进行相同的初值设置,即将相同的部分条目设置在页表缓冲器中以作为初始值。
在客户机程序的执行过程中,如果允许客户机申请动态内存分配,或者在允许其它动态内存调整或清理的情况下,客户机的页表中针对客户机程序的条目的内容可能发生改变。如果发生改变的条目当前被缓冲在客户机的页表缓冲器和主机的页表缓冲器中,则用改变的条目刷新当前被缓冲在客户机的页表缓冲器和主机的页表缓冲器中的相应条目,以避免发生地址翻译错误。在这种情况下,模拟方法可包括响应于根据预定事件,即,由于动态内存分配、调整、清理等等而对页表条目的修改,对客户机的页表缓冲器中针对客户机程序的内容的刷新,对主机的页表缓冲器中针对所述程序的内容进行相同的刷新。
模拟方法可以包括向主机注册更新客户机页表缓冲器的步骤308,使得主机在检测到翻译代码的执行所引起的主机页表缓冲器中的命中失误时,启动所述更新客户机页表缓冲器的步骤308。可通过各种方式实现注册。例如,主机的操作系统可指定特定的可链接模块作为当检测到翻译代码的执行所引起的主机页表缓冲器中的命中失误时要调用的模块,并且在该模块中实现步骤308的处理逻辑。或者,可以将步骤308实现为主机的中断处理例程,并且当检测到翻译代码的执行所引起的主机页表缓冲器中的命中失误时产生相应的中断。或者,可以向主机提供实现步骤308的进程的句柄,以便直接调用。
运行模拟器的方法
图4示出了根据本发明实施例的在主机中运行模拟器的方法的流程图。
如图4所示,方法从步骤400开始。在步骤402,由模拟器将主机页表缓冲器配置为缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目。模拟器可如前面参照步骤308和310所述对主机页表缓冲器进行配置。
在步骤404,由模拟器将主机管理程序页表配置为将客户机物理地址空间映射到主机物理地址空间。模拟器可如前面参照步骤302所述对主机页表缓冲器进行配置。
在步骤406,利用主机页表缓冲器和主机管理程序页表,将经过模拟器的二进制翻译得到的所述程序的翻译代码中的内存地址,转换为相应的主机物理地址。如前面参照图1所述,主机页表缓冲器缓冲将客户机程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目。主机管理程序页表将客户机物理地址空间映射到主机物理地址空间。可从主机页表缓冲器中找到将程序逻辑地址对应为客户机物理地址的条目,根据此条目得到相应的客户机物理地址。接着,根据主机管理程序页表中的映射关系将客户机物理地址转换为主机物理地址。
在步骤408,识别出翻译代码的执行所引起的页表缓冲器中的命中失误,并通知模拟器配置页表缓冲器。当模拟器开始执行客户机程序时或在模拟器执行客户机程序过程中,对于翻译代码中主机当前执行的内存访问指令,客户机的页表缓冲器和主机的页表缓冲器可能未包含涉及该内存访问指令所要访问的程序逻辑地址的条目。在这种情况下,会发生命中失误并中断当前指令的执行。可根据翻译代码的特征(例如,具有指定特征的进程标识或特定执行状态等等)识别出翻译代码的执行所引起的页表缓冲器中的命中失误,并通知模拟器来配置主机页表缓冲器以处理命中失误。
方法在步骤410结束。应当注意,虽然图4中按照顺序示出了步骤402、404、406和408,然而这并不表示对这些步骤的执行顺序的限制。这些步骤可能以任何顺序执行,并且其中某个或某些步骤可能重复执行。
图4所示的方法还可以包括接受模拟器的注册,以便对模拟器进行步骤408的通知。
本发明的设备和方法实现环境如图5所示。
在图5中,中央处理单元(CPU)501根据只读存储器(ROM)502中存储的程序或从存储部分508加载到随机存取存储器(RAM)503的程序执行各种处理。在RAM 503中,也根据需要存储当CPU 501执行各种处理时所需的数据。
CPU 501、ROM 502和RAM 503经由总线504彼此连接。输入/输出接口505也连接到总线504。
下述部件连接到输入/输出接口505:输入部分506,包括键盘、鼠标等等;输出部分507,包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等等,和扬声器等等;存储部分508,包括硬盘等等;和通信部分509,包括网络接口卡比如LAN卡、调制解调器等等。通信部分509经由网络比如因特网执行通信处理。
根据需要,驱动器510也连接到输入/输出接口505。可拆卸介质511比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器510上,使得从中读出的计算机程序根据需要被安装到存储部分508中。
在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质511安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图5所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质511。可拆卸介质511的例子包含磁盘(包含软盘)、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD))和半导体存储器。或者,存储介质可以是ROM 502、存储部分508中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。
在前面的说明书中参照特定实施例描述了本发明。然而本领域的普通技术人员理解,在不偏离如权利要求书限定的本发明的范围的前提下可以进行各种修改和改变。
Claims (10)
1.一种在主机中运行客户机的程序的模拟器,包括:
初始化装置,被配置为设置位于主机中的管理程序页表的内容,所述管理程序页表用于将客户机物理地址空间映射到主机物理地址空间;
二进制翻译装置,被配置为在翻译代码中使用程序逻辑地址来进行内存访问;
命中失误处理装置,被配置为通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新,所述主机页表缓冲器用于缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目;和
更新跟踪装置,被配置为响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。
2.如权利要求1所述的在主机中运行客户机的程序的模拟器,其中,所述更新跟踪装置还被配置为响应于客户机的页表缓冲器中针对所述程序的初值的设置,对主机的页表缓冲器中针对所述程序的内容进行相同的初值设置。
3.如权利要求1或2所述的在主机中运行客户机的程序的模拟器,其中所述更新跟踪装置还被配置为响应于根据预定事件对客户机的页表缓冲器中针对所述程序的内容的刷新,对主机的页表缓冲器中针对所述程序的内容进行相同的刷新。
4.如权利要求1或2所述的在主机中运行客户机的程序的模拟器,其中所述初始化装置还被配置为向主机注册所述命中失误处理装置,使得主机在检测到翻译代码的执行所引起的主机页表缓冲器中的命中失误时,启动所述命中失误处理装置。
5.如权利要求1或2所述的在主机中运行客户机的程序的模拟器,其中所述主机页表缓冲器和管理程序页表基于硬件实现。
6.一种在主机中运行客户机的程序的模拟方法,包括:
设置位于主机中的管理程序页表的内容,所述管理程序页表用于将客户机物理地址空间映射到主机物理地址空间;
进行二进制翻译,其中在翻译代码中使用程序逻辑地址来进行内存访问;
通过将翻译代码的执行所引起的主机页表缓冲器中的命中失误作为客户机页表缓冲器中的命中失误,对客户机页表缓冲器进行更新,所述主机页表缓冲器用于缓冲将程序逻辑地址空间的地址映射到客户机物理地址空间的地址的条目;和
响应于客户机页表缓冲器的更新,对主机页表缓冲器进行相同的更新。
7.如权利要求6所述的在主机中运行客户机的程序的模拟方法,还包括:
响应于客户机的页表缓冲器中针对所述程序的初值的设置,对主机的页表缓冲器中针对所述程序的内容进行相同的初值设置。
8.如权利要求6或7所述的在主机中运行客户机的程序的模拟方法,还包括:
响应于根据预定事件对客户机的页表缓冲器中针对所述程序的内容的刷新,对主机的页表缓冲器中针对所述程序的内容进行相同的刷新。
9.如权利要求6或7所述的在主机中运行客户机的程序的模拟方法,还包括:
向主机注册所述更新客户机页表缓冲器的步骤,使得主机在检测到翻译代码的执行所引起的主机页表缓冲器中的命中失误时,启动所述更新客户机页表缓冲器的步骤。
10.如权利要求6或7所述的在主机中运行客户机的程序的模拟方法,其中所述主机页表缓冲器和管理程序页表基于硬件实现。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101857882A CN101751345B (zh) | 2008-12-10 | 2008-12-10 | 在主机中运行客户机的程序的模拟器和模拟方法 |
US12/633,299 US8397050B2 (en) | 2008-12-10 | 2009-12-08 | Simulator and simulating method for running guest program in host |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101857882A CN101751345B (zh) | 2008-12-10 | 2008-12-10 | 在主机中运行客户机的程序的模拟器和模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751345A true CN101751345A (zh) | 2010-06-23 |
CN101751345B CN101751345B (zh) | 2012-04-11 |
Family
ID=42267759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101857882A Active CN101751345B (zh) | 2008-12-10 | 2008-12-10 | 在主机中运行客户机的程序的模拟器和模拟方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8397050B2 (zh) |
CN (1) | CN101751345B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662726A (zh) * | 2012-04-01 | 2012-09-12 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN106371890A (zh) * | 2016-08-29 | 2017-02-01 | 山东乾云启创信息科技股份有限公司 | 一种gpu的模拟方法 |
CN110770708A (zh) * | 2017-06-16 | 2020-02-07 | 阿里巴巴集团控股有限公司 | 用于硬件虚拟化的方法和装置 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
CN114996176A (zh) * | 2022-07-29 | 2022-09-02 | 飞腾信息技术有限公司 | 访存方法、计算设备以及存储介质 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
KR101612594B1 (ko) | 2011-01-27 | 2016-04-14 | 소프트 머신즈, 인크. | 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑 |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
US20120233439A1 (en) * | 2011-03-11 | 2012-09-13 | Boris Ginzburg | Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices |
US8726404B2 (en) | 2011-11-14 | 2014-05-13 | Intel Corporation | Regulating access to and protecting portions of applications of virtual machines |
WO2013074071A1 (en) * | 2011-11-14 | 2013-05-23 | Intel Corporation | Regulating access to and protecting portions of applications of virtual machines |
US8966211B1 (en) * | 2011-12-19 | 2015-02-24 | Emc Corporation | Techniques for dynamic binding of device identifiers to data storage devices |
US9721091B2 (en) * | 2012-02-28 | 2017-08-01 | Red Hat Israel, Ltd. | Guest-driven host execution |
EP2972798B1 (en) | 2013-03-15 | 2020-06-17 | Intel Corporation | Method and apparatus for guest return address stack emulation supporting speculation |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
TWI489279B (zh) * | 2013-11-27 | 2015-06-21 | Realtek Semiconductor Corp | 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法 |
US9329884B2 (en) * | 2014-07-11 | 2016-05-03 | Intel Corporation | Managing generated trace data for a virtual machine |
US10055242B2 (en) | 2015-10-16 | 2018-08-21 | Microsoft Technology Licensing, Llc | Virtualizing audio decoding hardware |
US9965620B2 (en) * | 2015-12-24 | 2018-05-08 | Intel Corporation | Application program interface (API) monitoring bypass |
WO2017216735A1 (en) * | 2016-06-14 | 2017-12-21 | Cymmetria, Inc. | Employing code signing as a tool in cyber-security deception |
US9965375B2 (en) | 2016-06-28 | 2018-05-08 | Intel Corporation | Virtualizing precise event based sampling |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
US10282305B2 (en) | 2016-07-18 | 2019-05-07 | International Business Machines Corporation | Selective purging of entries of structures associated with address translation in a virtualized environment |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
US10162764B2 (en) | 2016-07-18 | 2018-12-25 | International Business Machines Corporation | Marking page table/page status table entries to indicate memory used to back address translation structures |
US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US11070581B1 (en) * | 2017-08-24 | 2021-07-20 | Wells Fargo Bank, N.A. | Eliminating network security blind spots |
US20190163642A1 (en) | 2017-11-27 | 2019-05-30 | Intel Corporation | Management of the untranslated to translated code steering logic in a dynamic binary translation based processor |
CN108415795B (zh) * | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN114201269B (zh) * | 2022-02-18 | 2022-08-26 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330942B2 (en) * | 2004-07-31 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method for efficient virtualization of physical memory in a virtual-machine monitor |
US7383374B2 (en) * | 2005-03-31 | 2008-06-03 | Intel Corporation | Method and apparatus for managing virtual addresses |
US7499057B2 (en) * | 2005-09-09 | 2009-03-03 | Microsoft Corporation | Address translation in an integrated graphics environment |
US7500048B1 (en) * | 2005-12-15 | 2009-03-03 | Vmware, Inc. | Transparent page sharing on commodity operating systems |
US8127288B2 (en) * | 2006-01-17 | 2012-02-28 | International Business Machines Corporation | Installing and updating interpreted programming language applications using a designated virtual machine |
US7490191B2 (en) * | 2006-09-22 | 2009-02-10 | Intel Corporation | Sharing information between guests in a virtual machine environment |
US7552298B2 (en) * | 2006-09-28 | 2009-06-23 | Broadcom Corporation | Method and system for deferred pinning of host memory for stateful network interfaces |
CN101246452B (zh) * | 2007-02-12 | 2010-12-15 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
CN101216778B (zh) * | 2008-01-21 | 2011-04-13 | 中国科学院计算技术研究所 | 一种risc处理器装置及其指令地址转换查找方法 |
US8037280B2 (en) * | 2008-06-11 | 2011-10-11 | Vmware, Inc. | System and method for improving memory locality of virtual machines |
-
2008
- 2008-12-10 CN CN2008101857882A patent/CN101751345B/zh active Active
-
2009
- 2009-12-08 US US12/633,299 patent/US8397050B2/en active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662726A (zh) * | 2012-04-01 | 2012-09-12 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN102662726B (zh) * | 2012-04-01 | 2015-07-29 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN106371890A (zh) * | 2016-08-29 | 2017-02-01 | 山东乾云启创信息科技股份有限公司 | 一种gpu的模拟方法 |
CN106371890B (zh) * | 2016-08-29 | 2019-05-28 | 山东乾云启创信息科技股份有限公司 | 一种gpu的模拟方法 |
CN110770708A (zh) * | 2017-06-16 | 2020-02-07 | 阿里巴巴集团控股有限公司 | 用于硬件虚拟化的方法和装置 |
CN110770708B (zh) * | 2017-06-16 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 用于硬件虚拟化的方法和装置 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
CN113867820B (zh) * | 2021-09-29 | 2024-05-28 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
CN114996176A (zh) * | 2022-07-29 | 2022-09-02 | 飞腾信息技术有限公司 | 访存方法、计算设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US8397050B2 (en) | 2013-03-12 |
US20100161875A1 (en) | 2010-06-24 |
CN101751345B (zh) | 2012-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751345B (zh) | 在主机中运行客户机的程序的模拟器和模拟方法 | |
CN101203838B (zh) | 直接存储器存取转换的地址窗口支持 | |
CN101351773B (zh) | 基于存储器访问数据结构执行直接高速缓存访问事务 | |
US20190121751A1 (en) | Virtualizing physical memory in a virtual machine system | |
CN103597451B (zh) | 用于高可用性的存储器镜像和冗余生成 | |
CN100585574C (zh) | 对于直接存储器存取地址转换的高速缓存支持 | |
CN102985910B (zh) | 对无用存储单元收集的系统和方法 | |
US20080005447A1 (en) | Dynamic mapping of guest addresses by a virtual machine monitor | |
US20070052715A1 (en) | Device, system and method of graphics processing | |
CN101243396B (zh) | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
CN103282881A (zh) | 通过虚拟化直接共享智能设备 | |
CN104221005B (zh) | 用于从多线程发送请求至加速器的机制 | |
CN109471668A (zh) | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 | |
CN102662726B (zh) | 虚拟机的模拟方法和计算机设备 | |
CN104503825A (zh) | 一种基于kvm混合式设备虚拟化方法 | |
US5734858A (en) | Method and apparatus for simulating banked memory as a linear address space | |
JP2990195B2 (ja) | レガシ指令のエミュレ―ション装置及び方法 | |
US9766918B2 (en) | Virtual system device identification using GPU to host bridge mapping | |
KR20220061983A (ko) | 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공 | |
US20080162805A1 (en) | Method and Apparatus for Using Non-Addressable Memories of a Computer System | |
US11288207B2 (en) | Apparatus and method for processing address translation and invalidation transactions | |
CN113051194A (zh) | 缓冲存储器、gpu、处理系统及缓存访问方法 | |
CN118132195A (zh) | 基于gem5的CXL内存池化系统模拟方法及装置 | |
CN115390987A (zh) | 一种基于在arm64架构虚拟机中支持qxl显示的方法 |
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 |