CN101425020A - 对mmu仿真进行加速的方法、装置和全系统仿真器 - Google Patents

对mmu仿真进行加速的方法、装置和全系统仿真器 Download PDF

Info

Publication number
CN101425020A
CN101425020A CNA2007101670392A CN200710167039A CN101425020A CN 101425020 A CN101425020 A CN 101425020A CN A2007101670392 A CNA2007101670392 A CN A2007101670392A CN 200710167039 A CN200710167039 A CN 200710167039A CN 101425020 A CN101425020 A CN 101425020A
Authority
CN
China
Prior art keywords
client
address
host
emulator
address translation
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.)
Pending
Application number
CNA2007101670392A
Other languages
English (en)
Inventor
章宇
A·盖特
王华勇
王鲲
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CNA2007101670392A priority Critical patent/CN101425020A/zh
Priority to US12/259,891 priority patent/US8688432B2/en
Publication of CN101425020A publication Critical patent/CN101425020A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种用于通过在宿主系统上的直接地址映射而对存储器管理单元(MMU)仿真进行加速的方法、装置和全系统仿真器,所述宿主系统支持全系统仿真器,在所述全系统仿真器上仿真客户系统,所述方法包括以下步骤:在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域;将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及将所述安全区域供所述客户系统的至少一部分使用。

Description

对MMU仿真进行加速的方法、装置和全系统仿真器
技术领域
本发明一般地涉及计算机系统仿真领域,并且具体而言涉及一种用于通过在宿主系统上的直接地址映射而对存储器管理单元(memorymanagement unit,MMU)仿真进行加速的方法、装置和全系统仿真器。
背景技术
几乎所有的计算机体系结构都可以通过仿真器来进行评估和研究。仿真器通过允许设计者快速地评估各种各样的体系结构的性能,降低了成本,并且节省了项目的开发时间。
例如,在Joshua J.Yi、David J.Liljia所著的“Simulation of ComputerArchitectures:Simulators,Benchmarks,Methodologies,andRecommendations”(IEEE Transactions on Computers,2006年3月,第55卷,第3期,第268-280页)中,对仿真器技术及其分类进行了粗略的介绍。
仿真器在一台计算机上使用软件程序来仿真某一真实计算机中的所有组件。典型的计算机体系结构由一个或多个中央处理单元(CPU)、存储器、外围设备和总线组成,其中,CPU是计算机的核心并用于执行计算任务,总线上附接了存储器和各种外围设备。
全系统仿真器是用于为操作系统(OS)和应用提供虚拟化执行环境的程序。例如,全系统仿真器可以使得PowerPC Linux和相关的Linux应用程序能够在x86的Windows平台上运行。二进制翻译(BT)技术是当前的一种用于加速全系统仿真器的技术。二进制翻译可以是静态的或动态的(与执行时间有关)。在静态二进制翻译(Static binary translation,SBT)中,翻译过程在程序的执行甚至仿真器的执行之前开始实施。所有的源二进制代码仅被翻译一次。在所述翻译过程的阶段之后,不再实施翻译,而所输出的二进制代码可以在需要时被执行任意多次。在动态二进制翻译(Dynamic binary translation,DBT)中,仅当代码被需要和执行时进行翻译。当代码首次被翻译时,其被存储在高速缓存中,并在执行同一代码的任何时候被重新使用。翻译在运行时被实施,所以对于仿真代码所花费的时间来说,必须要加上翻译代码的时间。因此,翻译必须被尽可能快地实施。这也意味着执行已翻译代码的利益必须大大超过翻译代码所花费的时间。
采用动态翻译技术实现的全系统仿真器的典型例子包括:在由Richard Uhlig、Roman Fishtein、Oren Gershon、Israel Hirsh和Hong Wang所著的“SoftSDV:A Presilicon Software Development Environment for theIA-64 Architecture”(Intel Technology Journal Q4,1999年)中公开的仿真器;以及QEMU(可参见http://fabrice.bellard.free.fr/qemu/)。此外,典型的全系统仿真器还包括:Simics系统(可参见http://virtutech.com/)、Skyeye系统(可参见http://www.skyeye.org/index.shtml)和Wukong系统(可参见http://embedded.zju.edu.cn/wukong/)。
在本文中,将针对使用DBT技术的全系统仿真器进行描述,并且为了简单起见,将利用DBT技术的全系统仿真器简称为全系统仿真器。
大多数现代计算机都包含MMU,其用于将软件所使用的虚拟地址翻译成用来访问存储器和I/O设备的物理地址。MMU为操作系统和所有的应用创建了虚拟地址空间,其自由地将物理存储页面映射到虚拟地址存储页面。MMU为每个虚拟页面设置了不同的属性和保护。因此,MMU仿真是全系统仿真的一个重要部分。但是由于MMU是一种具有复杂行为的复杂硬件,用软件仿真所述行为是困难的,因此,已知的用于实现MMU仿真的解决方案引入了较大的性能开销。
例如,在Emmett Witchel和Mendel Rosenblum所著的“Embra:fastand flexible machine simulation”(Proceedings of the 1996 ACMSIGMETRICS International Conference on Measurement and Modelingof Computer Systems,美国宾夕法尼亚州费城,1996年,第68-79页)中,公开了一种使用MMU仿真的全系统仿真器。其中,提供了下述的报告结果:如果对MMU进行仿真,当客户机(guest machine)和宿主机(hostmachine)都是无内部互锁流水级的微处理器(Microprocessor withoutInterlocked Piped Stages,MIPS)机器时,则整个系统的速度会降低1/3或1/4。同时,在申请人进行的试验中,当在x86宿主机上仿真PowerPC ISA(Instruction Set Architecture,指令集体系结构)时,在典型的指令分布模式下,MMU仿真自身导致了速度降低大约41%。在此,所述典型的指令分布模式的意思是,在所有动态指令中,平均1/3的指令为加载/存储指令,并且平均1/5的指令为分支。
图1示出了传统的MMU仿真的逻辑结构。如图1所示,在该图的左侧示出了翻译之前的一个示例性代码段,在图1的中间示出了在对该示例性代码段进行翻译之后所得到的代码段,而在图1的右侧示出了地址转换旁路缓冲器(Translation Lookaside Buffer,TLB)中所存储的内容(在下文中,将其称为TLB表)。
MMU在TLB的帮助下完成地址翻译的任务。TLB表中的每个TLB条目(entry)包含4k大小的虚拟存储页面的地址(即,虚拟地址)以及该页面的相应物理存储器地址,并且其中还包含有某些比特位用于权限和保护的目的(为了简单起见,在图1中并未示出这些比特位)。需要注意的是,在仿真器中,TLB表就是一个大数组,所以可以直接存取,并且这里所说的TLB表是在仿真器内部仿真的TLB表,而不是真实硬件的TLB表。
代码段中的每条加载/存储(load/store)指令都需要进行地址翻译,而地址翻译的过程很复杂。一般说来,在进行代码二进制翻译时,一条客户机的加载/存储指令需要被翻译成多条宿主机的指令才能完成相应功能。一般是把加载/存储指令翻译成函数调用,在该函数内部完成复杂功能。也就是说,将一条客户机的加载/存储指令翻译成宿主机上的一个函数。其中,与加载和存储指令相对应的函数是事先确定好的。对于不同公司的仿真器产品而言,对应的函数可能是不同的,但是在同一个仿真器中其对应的函数是固定的。所以,在翻译过程中,只需将每条客户机上的加载指令翻译成一个与之对应的宿主机上的函数调用,将每条客户机上的存储指令翻译成另一个与之对应的宿主机上的函数调用。由于对加载/存储指令的执行都需要进行地址翻译和访问,因此在下文中对二者的具体功能不做区分,本发明仅关注于地址翻译过程的优化。
在当前的MMU仿真方法中,把每条加载/存储指令翻译成对TLB搜索进行建模的函数的调用。在每次需要进行地址翻译时,对仿真的TLB进行搜索(如图1所示)。如果虚拟地址在TLB中,则可以获得相应的物理地址。如果虚拟地址不在TLB中,则MMU可以生成一个TLB缺失异常(TLB-miss exception),或者MMU自动地从仿真的内存中读取页表填充到TLB中。搜索结果包括虚拟页号和物理页号,其中,在32位计算机系统的情形中,虚拟页号和物理页号在一般情况下均为32位长的地址,其中低12位为0。这是因为,在一般的32位计算机系统中,一个32位长的地址可以分成两部分,其中,高20位为页号,低12位为页内偏移(对于64位的计算机系统可执行类似的处理)。页内偏移在虚拟地址空间和物理地址空间内是相同的。
如上所述,在典型的指令分布模式中,平均1/3的指令为加载/存储指令。由于需要频繁地执行加载/存储指令,所以MMU的速度会直接影响到整个系统的性能。然而,由于TLB搜索是非常耗时的过程,所以仿真的MMU运行速度不会很快。
从真实硬件上来看,TLB本质上是一个高速缓存,因此,有关TLB的查找或搜索算法实质上就是高速缓存的查找或搜索算法,因此,可以参见“Computer Architecture:A Quantitative Approach”(作者:John L.Hennessy,David A.Patterson,译者:郑纬民,汤志忠,汪东升,电子工业出版社2004年7月出版,ISBN号为:7-5053-9916-0)。简单地说,TLB可以被看作是包含很多行,每一行都包含一个虚拟地址和一个物理地址(如图1所示)。
基本的TLB搜索方法有两种:
(1)如果知道某个虚拟地址,则在TLB中逐行地进行对比,如果发现某一行的虚拟地址相同,就返回该行中对应的物理地址。如果在真实硬件中实现,搜索的速度会非常快,因为硬件可以并行地搜索多行,例如,可以一次搜索100行或更多行。因此,无论搜索多少行,其所需的时间都和搜索一行的时间是相同的。这种TLB被称为全相联的TLB(fully-associated TLB)。
(2)假定一个虚拟地址只能放在某一固定的行上面。例如,可以规定:如果虚拟地址被10除后余1,就放在第一行,余2就放在第2行,等等诸如此类。这样的话,TLB就只需要有10行即可。但是,可能会出现有很多虚拟地址都可以放在同一行中的情况,从而产生了冲突。因此,一般的做法是,谁最近被使用过,就把谁放在该位置上。这样的话,搜索起来很方便,对于给定的一个虚拟地址而言,首先找到它对应的行号,然后判断该行上的虚拟地址和给出的虚拟地址是否相同,如果相同,就表示该虚拟地址在TLB中找到了,因此,返回该行中所包含的物理地址。这种TLB可以被称为组相联的TLB(set-associated TLB)。
从仿真器的角度来看,仿真器的目的是要对真实硬件进行仿真,所以仿真器要仿真上述TLB搜索的过程。对全相联的TLB而言,软件不能做到并行搜索(并行搜索用软件实现开销很大,得不偿失),只能逐行地去对比,这往往是通过一个循环体程序来实现的。这样的话,对于一个包含64行的TLB,就需要比较64次,所以TLB搜索的速度很慢。而对于组相联的TLB而言,可以直接算出行号,然后再去进行搜索,但是其搜索的速度还是不够快。经过实践分析,如果将计算和比较的过程计算在内,QEMU需要至少20条汇编指令才能完成上述功能。
例如,当客户机ISA是PowerPC,而宿主机ISA为x86时,在一个良好设计的全系统仿真器QEMU中,一条加载/存储指令被翻译为大约20条汇编指令。
不过,在现有技术的仿真器中,上述这样的指令翻译效率所实现的MMU仿真的速度仍然不尽如人意,因此,需要提供新的仿真MMU的方法和全系统仿真器,以进一步减少对加载/存储指令进行翻译后的指令数目,从而提高MMU仿真以及全系统仿真的运行速度。
发明内容
为了克服现有技术中所存在的缺陷,并进一步加快MMU仿真的速度,进而提高整个系统的性能,而提出了本发明。
根据本发明的一个方面,提出了一种用于通过在宿主系统上的直接地址映射而对存储器管理单元(MMU)仿真进行加速的方法,所述宿主系统支持全系统仿真器,在所述全系统仿真器上仿真客户系统,所述方法包括以下步骤:
在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域;
将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及
将所述安全区域供所述客户系统的至少一部分使用。
根据本发明的另一方面,提出了一种用于通过在宿主系统上的直接地址映射而对存储器管理单元(MMU)仿真进行加速的装置,所述宿主系统支持全系统仿真器,在所述全系统仿真器上仿真客户系统,所述装置包括:
边界设置装置,用于在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域;
仿真器转移装置,用于将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及
安全区域管理装置,用于将所述安全区域供所述客户系统的至少一部分使用。
根据本发明的又一方面,提出了一种用于通过在宿主系统上的直接地址映射而对存储器管理单元(MMU)仿真进行加速的全系统仿真器,包括以上所述的装置。
本发明所提出的用于通过在宿主系统上的直接地址映射而对存储器管理单元仿真进行加速的方法、装置和全系统仿真器,省略了大量的地址翻译过程,从而大大减少了需要执行的宿主指令,因此,显著提高了MMU仿真以及全系统仿真的运行速度和系统性能。
附图说明
在附带的权利要求中阐明了被认为是本发明新颖特性的特征。然而,通过参考以下结合附图的说明性实施例的详细描述,将最好地理解本发明本身以及其优选使用模式、另外的目的和优点,在附图中:
图1示出了传统的MMU仿真的逻辑结构;
图2A和2B示出了在全系统动态二进制翻译中的传统的地址翻译机制;
图3示出了根据本发明的地址转换过程的简要示图;
图4示出了通常的代码翻译过程与本发明的代码翻译过程的比较;
图5是根据本发明优选实施例的示例性仿真器操作的整体流程图;
图6是仿真器的初始化操作的流程图;
图7示出了仿真器自身和安全区域在为仿真器分配的宿主逻辑空间中的分布;
图8示出了分段错误异常被触发之后的TLB条目填充操作的流程图;
图9A和图9B是分别描述了针对32位客户系统和64位客户系统进行的对加载/存储指令进行翻译和执行的流程图;
图10示出了使客户TLB条目无效化的操作的流程图;以及
图11示出了根据本发明的全系统仿真器的框图。
需要注意,在全体附图中,相同或相似的标号指代的是相同或相似的单元或组件。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实现方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多实现方式所特定的决定,以便实现开发人员的具体目标,例如符合与系统及业务相关的那些限制条件,其中,这些限制条件会随着实施方式的不同而改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于这个公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。
此外,还需要说明的一点是,为了避免因不必要的细节而混淆了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其它细节。
为了更好地理解本发明的基本原理以便更好地实施本发明,首先参考图2A和2B,图2A和2B示出了在全系统动态二进制翻译中的传统的地址翻译机制。在图2A中,从下往上依次为:宿主机210、宿主操作系统(OS)220、动态二进制翻译器230、客户操作系统(OS)240、应用250。其中,宿主OS 220运行于宿主机210上。宿主OS 220支持动态二进制翻译器230的运行。从而,通过动态二进制翻译器230,客户OS 240以及在其上运行的应用250被宿主机220和宿主OS 220所支持。具体而言,客户OS 240以及在其上运行的应用250在运行时所要访问的有效地址(EA)能够通过动态二进制翻译器230被翻译为宿主机210上的宿主OS 220所支持的物理地址(PA)。
需要注意,本发明可以应用于任意的宿主机,并且对宿主机的硬件资源和宿主OS没有任何特殊的要求。同样,本发明可以支持任意可用的客户OS以及在其上运行的应用,而无需对它们进行任何修改或改变。
图2B更具体示出了所述地址翻译机制。当一应用在客户系统上运行时,其中的指令进行地址调用,该地址被称为客户OS中的有效地址(EA),也被称为逻辑地址,其是虚拟地址。在客户MMU(其也是被仿真的)中,所调用的有效地址被转换为客户OS中的物理地址(PA),所述客户物理地址仍旧是虚拟地址,因此需要继续通过映射表被转换为宿主OS中的有效地址(宿主EA)。在可替换实施例中,所述客户OS中的物理地址可以直接代表宿主OS中的有效地址,而不再需要映射表。接着,所述宿主OS中的有效地址通过宿主MMU(通常为真实硬件)被转换为宿主OS中的物理地址(宿主PA)。这样,该应用中的指令所进行的地址调用才可以完成。
本发明旨在消除从客户OS中的有效地址(客户EA)到宿主OS中的有效地址(宿主EA)的地址转换过程(如虚线框中所示出的),以便减少地址翻译机制的开销,以及提高系统仿真的性能。图3示出了本发明所要实现的地址转换过程的简要示图。显而易见,通过实施本发明,在大多数情况下,客户OS中的有效地址可以作为宿主OS中的有效地址而被直接传递到宿主MMU,并被宿主MMU映射到宿主OS中的物理地址,因此软件地址翻译的开销被完全移除,从而大幅提高系统的整体运行速度和效率。客户MMU仍旧保留,因为它可以用来处理未通过本发明的机制处理的一些指令,详细细节稍后将在下文中描述。
接着用一个具体示例来说明本发明所能实现的效果。参见图4,图4示出了通常的代码翻译过程与本发明的代码翻译过程的比较。在x86的宿主机上仿真PowerPC的客户系统的情形中,例如在客户系统上运行的客户指令为:
stw r20,24(r21),
该指令所执行的操作是将客户寄存器r21中的数值加上24,得到客户系统中的有效地址(EA),然后将客户寄存器r20中的数值存储到该有效地址对应的存储器单元中。对于该指令,在通常的翻译过程中,首先在客户系统上进行逻辑到物理的寄存器转换以及有效地址(EA)计算,这会占用大约5条宿主指令。接着实施客户有效地址(客户EA)到客户物理地址(客户PA)的翻译(如图2的虚线框所示),这会占用大约15条宿主指令。经过翻译后,所得到的指令为:
mov eax1,(%ebx1),
其中,eax1是宿主寄存器,其中的值等于客户寄存器r20中的值,ebx1也是宿主寄存器,其中的值等于从客户EA所翻译的客户PA,也即宿主EA(假设已经经过映射或者不需要映射表)。之后,宿主EA将被传递到宿主MMU并被翻译为宿主PA。
与通常的代码翻译过程相比而言,在本发明的解决方案中,对于同一条客户指令:
stw r20,24(r21),
该指令仅需要在客户系统上进行逻辑到物理的寄存器转换以及有效地址(EA)计算,这会占用大约5条宿主指令。然后,如上所述,通过本发明的机制,客户EA可以被直接用作宿主EA,并且所得到的指令为:
mov eax2,(%ebx2),
其中,eax2是宿主寄存器,其中的值等于客户寄存器r20中的值,ebx2也是宿主寄存器,其中的值等于客户EA,也即宿主EA(因为在本发明实施例中,二者是等同的)。之后,宿主EA将被传递到宿主MMU中并被翻译为宿主PA。
可以看出,根据本发明的翻译代码过程可以节省从客户EA到宿主EA的地址翻译过程所引入的几乎所有系统开销,从而将所生成的宿主指令数量从大约20条减少为大约5条。在对于现有技术的DBT仿真器QEMU的试验中,所得到的数据示出,通过实施本发明而达到的理想性能收益可以达到180%左右。
以上通过示例描述了本发明的基本思想和所要达到的效果,下面将结合附图详细地介绍本发明的具体实施方法。
由于对MMU仿真的已知解决方案将每条加载/存储指令翻译成执行TLB查找的函数调用,而TLB查找是很费时的,因此,考虑到下述事实,即,在宿主机上运行的仿真器会被分配很大的逻辑空间,例如,在64位宿主机上运行的仿真器会占据264字节的逻辑空间,而在多数情况下仿真器实际上仅消耗很小一部分区域,则能够设想,可以令在仿真器上运行的客户系统与仿真器自身安全地共享所述逻辑空间。那么,在客户系统执行每条加载/存储指令时,所仿真的MMU不必进行TLB查找,而是直接将客户EA对应于宿主EA。接着,由宿主MMU(宿主CPU中的硬件)来完成从宿主EA到宿主PA的地址翻译过程。由此,在现有技术中客户EA到宿主EA的地址翻译过程被省去,从而节省了大量的系统开销。
具体而言,可以在为仿真器分配的逻辑空间区域中设置某一边界,从而仿真器可以把其自身的代码和数据移动到该边界之上的逻辑空间区域,并将该边界之下的区域保留为安全区域,以供所仿真的客户系统使用,其中所述边界是一个特定的逻辑地址。如此一来,在低于所述边界(即,处于安全区域中)的客户系统中使用的客户EA可以被看作是宿主系统中的宿主EA,并可通过宿主MMU直接映射到宿主PA。通过此方式,对于在仿真的客户系统中对安全区域中的地址的几乎所有加载/存储指令来说,由所仿真的客户MMU实施的TLB查找和EA到PA翻译的工作负荷实际上被移除。只要该安全区域足够大以容纳整个客户系统,则几乎所有TLB查找都不再需要。例如,在64位的宿主机上仿真32位的客户系统的情况下,由于为仿真器分配的地址空间远大于32位的客户系统所需的地址空间,所以可以在所分配的地址空间中为该客户系统保留出大得足以容纳整个客户系统的安全区域。而在64位的宿主机上仿真64位的客户系统的情况下,尽管无法为该客户系统保留出可以容纳整个客户系统的安全区域,但可以将安全区域供客户系统的一部分所使用。这通过采用一种地址安全判断机制来实现。如果加载/存储指令所访问的地址确实落在安全区域中,则本发明的方法将很好地适用。如果加载/存储指令所访问的地址未落在安全区域中,则使用通常的地址翻译方法,即,调用客户MMU的TLB查找和EA到PA翻译的过程。在下文中的具体实施例中,为了便于描述和理解,在未明确另行指定的情况下,均假定宿主机为64位,但是在诸如128位、32位的宿主机上也可以同等地应用本发明。
注意,尽管在本发明的优选实施例中将安全区域设置为在边界之下,但这并不是必须的。本领域技术人员可以容易地想到,在可替换实施例中,安全区域也可以位于边界之上,而将仿真器占用的空间设置为在边界之下。
下面对本发明的方法进行详细的说明。现在参考图5,图5是根据本发明优选实施例的示例性仿真器操作的整体流程图。首先,所述方法的过程开始于步骤500,并继续进行到步骤505,在其中进行仿真器的初始化操作。该初始化操作可以在宿主系统为仿真器分配的逻辑空间中根据所设置的边界划分出安全区域,并将客户系统和仿真器自身分别置于安全区域和安全区域以上的区域(可被称为仿真器占用区域)中。以下参考图6描述了所述初始化操作的具体流程。
现在参考图6,示出了仿真器的初始化操作的流程图。首先所述初始化操作开始于步骤600,并继续进行到步骤605,在其中设置边界和安全区域,其中所述安全区域是在在为仿真器分配的逻辑空间中位于边界之下的区域。这样,如上面已经描述的,对于宿主系统为仿真器分配的逻辑空间区域来说,除了可以用仿真器占用区域来容纳仿真器本身之外,还可以用安全区域来容纳所仿真的系统的至少一部分。
在所仿真的系统(即客户系统)为32位的情形中,将所述安全区域的边界固定地设置为0xFFFFFFFF。也就是说,在为仿真器分配的宿主逻辑空间中,从0xFFFFFFFF到0x00000000的4G字节被设置为安全区域,供客户系统使用。由于客户系统为32位,因此所设置的4G的安全区域已经大到足以容纳整个客户系统所需要的空间。
在所仿真的系统(即客户系统)为64位的情形中,所述安全区域的边界被设置为一个特定地址。对该地址的设置取决于仿真器自身所占用的大小以及在其上所仿真的客户系统及其应用所需要的大小。一般而言,针对同一仿真器,该边界可以被程序员或者管理员设置为固定值。所述边界可以被设置为比0xFFFFFFFF更高的一个地址,以便创建更大的安全区域。安全区域越大,能供客户系统使用的空间就越大,从而能够带来更多的性能改善。
在步骤605所述边界被设置之后,即安全区域的大小被确定,接着所述操作进行到步骤610,将仿真器自身从所占用的初始宿主逻辑空间(存储了仿真器的代码和数据)转移到所述边界之上的空间中。所述边界为0xFFFFFFFF(32位客户系统的情形)或者某一特定地址(64位客户系统的情形)。图7示出了在步骤610完成之后仿真器自身和安全区域在为仿真器分配的宿主逻辑空间中的分布。在宿主系统为仿真器分配的宿主逻辑空间中,仿真器与安全区域被所述边界划分为两个部分。上部分为用于存储仿真器的代码和数据的仿真器占用部分,而下部分为供客户系统使用的安全区域。如上所述,在可替换实施例中,仿真器占用区域可以在边界之下,而安全区域可以在边界之上,而此时的边界也将是另外的值。
在某些情形中,由于一些技术原因仿真器无法被转移。例如,仿真器需要调用位于安全区域中的固定地址的函数或者具有指向安全区域中的固定地址的指针的函数。在此时,可以不必转移仿真器,而是将仿真器保留在其原始位置,并将安全区域调整到更高的地址空间。对于在客户系统上运行的加载/存储指令的翻译模式,可以向所述翻译模式注入在有效地址(EA)计算完成之后的一条加法操作或指令。从而,在未来每当加载/存储指令出现时,该加法操作或指令向加载/存储指令所要访问的初始的客户EA附加一个地址偏移,从而将客户系统所要访问的逻辑地址转到位于更高位置的地址空间中的安全区域。由于该操作针对每次加载/存储操作仅增加了一条加法操作或指令,从而引入了额外的极小的开销,所以此特定情形对于系统性能的影响很小。因此在以下的描述中,为了简明和便于理解,假定该情形并未发生,即,无需向客户EA附加地址偏移。
接着,回到图6的初始化操作,所述操作继续进行到步骤615,在其中将安全区域标记为未映射区域,即,将安全区域中的所有地址标记为未映射地址。这样做的目的是,任意指令对此区域中的某一地址的首次访问将发现未映射地址,从而触发分段错误异常(segmentation faultexception)。在触发此异常之后可以执行进一步的客户TLB填充操作,将在下文中详细描述。在步骤615之后,所述初始化操作结束于620。
现在回到图5的过程,在步骤505的仿真器的初始化操作完成之后,在指令的翻译执行流程中,在步骤508判断仿真器所要执行的指令是否是客户加载/存储指令。如果否,则在步骤509对该指令实施通常的翻译和执行操作。否则,如果该指令是客户加载/存储指令,则在步骤510翻译该指令并生成相应的宿主指令,即,用于仿真客户加载/存储指令的多条宿主指令,如上文所描述的。所述宿主指令用于在宿主系统上进行逻辑到物理的寄存器转换以及计算客户有效地址(EA),该客户EA将被用来访问宿主物理地址空间。需要注意,步骤510是可选的步骤,仅在每一特定的加载/存储指令第一次出现时才需要对该指令进行翻译。在加载/存储指令第一次被翻译之后,所翻译的宿主指令可被存储在存储装置中,诸如仿真器中的翻译缓存模块。这样,当下一次调用该指令时,就可以直接从所述翻译缓存模块中调用翻译后的指令,即,步骤510可以被跳过。
在此时,需要一种将客户逻辑页面映射到宿主物理页面以及仿真客户TLB状态的机制。所述操作接着进行到步骤515,在其中宿主MMU将检查该客户EA是否是未映射的。如果判断结果是肯定的,则所述操作进行到步骤520,在其中分段错误异常被触发,并且在分段错误异常被触发之后实施客户TLB条目填充操作。应该注意,在安全区域中的任一地址被首次访问时,其均处于未映射状态,因此必然会触发分段异常错误以及随后实施客户TLB条目填充操作。以下参考图8描述了所述TLB条目填充操作的具体流程。
首先需要指出,对客户TLB的条目进行填充的原因主要是因为在客户操作系统的运行过程中需要客户TLB中的信息,并且需要对客户TLB进行操作,因此,在仿真过程中需要保证客户TLB中的状态与其实际状态一致。此处的实际状态,指客户操作系统在真实的宿主CPU硬件上运行时,TLB中的状态。由于TLB的状态改变,通常仅在对其进行条目填充和条目无效两种操作时发生,因而,需要对这两种操作进行仿真。并且,只要能够正确仿真这两种操作,即可保证客户TLB的状态与其实际状态一致。
TLB条目填充操作在某一个客户EA所在的逻辑页面首次被访问到的时候发生。由此,需要捕捉该页面首次被访问的时刻。为此,需要将安全区域中的所有客户EA(事实上也是宿主EA)初始化为未映射。这样,当一个客户EA被访问时,如果该客户EA所在的页面从未被访问过,即,该客户EA为未映射,则此时就是该页面被首次访问的时刻。由此,可以在被触发的异常服务进程中对客户TLB的条目填充操作进行仿真。同时,在宿主MMU中,该宿主EA到宿主PA的映射关系也会被建立起来。也即,客户TLB条目填充的时刻也正是宿主EA到宿主PA的映射关系被建立的时刻。
现在参考图8,示出了分段错误异常被触发之后的TLB条目填充操作的流程图。所述TLB条目填充操作包括增加新的TLB条目以及更新现有的TLB条目的操作。在翻译代码执行流程中,当仿真器遇到加载/存储指令并执行该指令时,如果宿主MMU检测到指令所使用的初始客户EA是未映射地址,则分段错误异常被触发,步骤805。接着进行TLB条目填充操作,所述操作是一种服务例程,其中将仿真客户TLB操作。首先,在步骤810,进行客户TLB检查。接着在步骤815,判断TLB在此时是否已满。如果判断结果是否定的,则在步骤820向客户TLB中填入新的条目。接着在步骤835,由宿主MMU将包括初始的客户EA的逻辑页面直接映射到宿主物理页面。如果在步骤815的判断结果是肯定的,则在步骤825用新的条目来替换客户TLB中的现有条目,并且在步骤830将对应于该现有条目的宿主存储器中的物理页面去除映射。接着在步骤835,由宿主MMU将包括初始的客户EA的逻辑页面直接映射到宿主物理页面。这样,加载/存储指令就能够在步骤530进行存储器访问并执行相应的加载/存储指令的操作,如下文将详细描述的。而当该逻辑页面中的该客户EA下一次被访问时,该客户EA成为已映射地址,则加载/存储指令就可以通过客户EA直接访问宿主存储器的相应位置,而不会触发任何异常。客户TLB在所有对存储器的正常访问中均不被访问,而仅在仿真客户TLB的条目填充和条目无效操作时才需要进行访问。
另外,实际上,在可替换实施例中,如果客户系统自身可以确保当页表条目不在TLB中(例如被临时存储到寄存器中)时也不会被修改,则一种对本发明的方法进行进一步优化的技术可以被实现。即,当客户TLB已满并且需要填入新的TLB条目时,直接向客户TLB中添加该新条目而不进行TLB条目替换和物理页面去除映射的工作。这样做的原因在于,在仿真过程中,客户TLB实质上是软件数据结构,其可以容纳比实际设定数量更多的条目,同时,宿主TLB可以大于客户TLB。这样,就可以仿真大于其实际大小的客户TLB以同时容纳更多TLB条目,而避免了相关的TLB条目替换和物理页面去除映射的开销。理论上,所仿真的客户TLB的大小最大可以达到宿主TLB的大小。
当在客户系统上运行了多个应用,并进行应用切换时,即把一个应用临时切换到另一个应用时,逻辑页面到宿主物理页面的映射对应关系将会被改变。而当前一应用被切换回来时,所述映射对应关系会被再次改变。如果这样的切换频繁发生,势必造成系统开销的大幅增长并影响整体性能。因此,另一种优化技术在于,在所述前一应用被切换时,与其相关的逻辑页面到宿主物理页面的映射对应关系可以被保存到额外的空间(例如寄存器)中并保持不变,从而在该应用被切换回来时,这些映射对应关系可以被立刻应用。
如上所述,在所述TLB条目填充操作完成之后,之前处于未映射状态的地址被保存到客户TLB中,从而在之后对该地址的调用中,其可以直接被应用。
现在返回图5,在步骤520的TLB条目填充操作完成之后,或者如果在步骤515的判断结果是否定的,即所使用的客户EA是已映射的,则所述操作进行到步骤530,在其中基于所述加载/存储指令的具体功能进行存储器访问并执行相应的加载/存储指令的操作。
为了便于更清楚的理解,以下参考图9A和图9B描述了所述对加载/存储指令进行翻译和执行的具体流程。图9A和图9B是分别描述了针对32位客户系统和64位客户系统进行的对加载/存储指令进行翻译和执行的流程图。注意,仅在出现未映射的客户EA时才会由于触发分段错误异常以及随后的客户TLB条目填充过程,该客户EA在之后被访问时都会是已映射的,因此,在图9A和图9B中省略了所述操作。
在针对32位客户系统的图9A的流程中,在步骤905,首先在客户系统上进行逻辑到物理的寄存器转换。然后在步骤910,进行有效地址(EA)计算。所计算出的EA是客户EA。这两个步骤可以在图5中的步骤510的期间执行,二者均是本领域内已知的,在此不做进一步说明。由于32位客户系统可以被完全容纳于上述安全区域中,因此不需要进行客户EA是否处于安全区域的判断。接着在步骤915,进行直接存储器访问。由于所计算出的客户EA可以被直接用作宿主机上的宿主EA,因此可以通过宿主EA经由宿主MMU进行直接存储器访问。之后,对加载/存储指令的执行完成。
在针对64位客户系统的图9B的流程中,首先在步骤955,在客户系统上进行逻辑到物理的寄存器转换。然后在步骤960,进行有效地址(EA)计算。所计算出的EA是客户EA。上述两个步骤与图9A中的步骤905和910相同,可以在图5中的步骤510的期间执行。由于64位客户系统无法被完全容纳于上述安全区域中,因此在步骤965,判断所述客户EA是否处于安全区域。如果判断结果是肯定的,则在步骤970进行直接存储器访问。与图9A的步骤915相同,由于所计算出的客户EA可以直接用作宿主机上的宿主EA,因此可以通过宿主EA经由宿主MMU进行直接存储器访问。如果在步骤965的判断结果是否定的,则所述客户EA不在安全区域中,本发明的机制无法被应用。接着遵循传统的地址翻译流程,在步骤975由所仿真的客户MMU实施客户EA到客户PA的翻译以及TLB查找,以及在步骤980通过所翻译的客户PA(等同于宿主EA或可映射到宿主EA)进行通常的存储器访问。之后,对加载/存储指令的执行完成。由于在图9B的流程中嵌入了安全区域检查,而该检查自身引入了一定的开销。于是,当对64位客户系统进行仿真时,通过实现本发明的方法所能实现的性能提高取决于有多少要访问的有效地址落在所述安全区域中。
回到图5所述的过程,在步骤530完成对存储器的访问以及对所述加载/存储指令的操作。接着在步骤535判断是否存在更多加载/存储指令。如果是,则所述操作循环回到步骤510,继续进行对下一个加载/存储指令进行处理。直到不存在更多加载/存储指令时,所述操作在步骤540结束。
另外,当客户逻辑页面到宿主物理页面的映射发生变化时,为了确保正确的映射关系,使得客户TLB的状态与其实际状态一致,则需要了解所有的客户TLB条目无效操作的发生以便及时进行去除映射的工作。这可以通过将一个代码段插入到所有TLB无效指令的翻译模式中来实现,如图10所示。
现在参考图10,示出了使客户TLB条目无效的操作的流程图。首先将一个特定代码段插入到翻译模式中,以便在TLB条目变得无效之后立即进行去除映射的工作。所述操作首先开始于步骤1000,并继续进行到步骤1005,在客户指令执行流程中出现TLB无效指令。在发现TLB无效指令之后,所述代码段就开始进行客户TLB条目无效操作,步骤1010。即,使得相关的TLB条目变为无效条目。在步骤1015将对应于此条目的宿主存储器中的逻辑页面去除映射。接着所述操作在步骤1020结束。通过所述使客户TLB条目无效的操作,可以保持宿主存储器映射关系与客户TLB的状态同步。
以上是对根据本发明的用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的方法进行的详细描述,在同一发明构思下,提供了一种用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的装置和全系统仿真器。图11示出了根据本发明的全系统仿真器的框图。如图11所示,所述全系统仿真器包括客户系统1100以及根据本发明的动态二进制翻译器1150。在所述动态二进制翻译器1150中应用了根据本发明的用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的方法而设计的装置,所述装置主要由初始化模块1105、指令翻译优化模块1115及客户TLB控制模块1120组成。
客户系统1100为在根据本发明的全系统仿真器上所仿真的客户系统,其提供了在其上运行操作系统和应用所需的全部单元,包括:仿真的存储器1101、仿真的MMU和TLB 1102、仿真的寄存器1103、以及仿真的I/O设备1104。
其中,仿真的存储器1101是由宿主机分配的虚拟内存。客户系统中的操作系统和应用都存储在这个仿真的存储器中。从所仿真的客户系统的角度来看,仿真的存储器1101就好像是实际机器内的物理存储器一样。仿真的MMU和TLB 1102可以仿真地址翻译功能。仿真的寄存器1103可以仿真客户机系统中的寄存器。例如,如果客户系统是x86,则仿真的寄存器可以包括eax、ebx等。如果客户系统是PowerPC,则仿真的寄存器可以包括r0、r1等。仿真的寄存器1103在宿主机系统上通过32位或64位长的整数来进行仿真。仿真的I/O设备1104类似于串行端口、物理接口卡等。
由于通常情况下客户系统需要具备这些设备的功能,所以全系统仿真器必须仿真这些单元。当然,根据设计需要,所述全系统仿真器还可以仿真其它设备,在此为了简单起见并未示出。
如图11所示,根据本发明的动态二进制翻译器1150进一步包括:初始化模块1105、指令翻译模块1110、指令翻译优化模块1115、客户TLB控制模块1120、翻译缓存模块1125以及仿真器控制模块1130。如前所述,初始化模块1105、指令翻译优化模块1115以及客户TLB控制模块1120组成了根据本发明的用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的装置。
初始化模块1105用于执行仿真器的初始化操作。初始化模块1105进一步包括:边界设置装置1106、仿真器转移装置1107和安全区域管理装置1108。具体而言,边界设置装置1106用于在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域(其中在优选实施例中,所述安全区域是在所述逻辑空间中位于边界之下的区域);仿真器转移装置1107用于将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及安全区域管理装置1108用于将所述安全区域供所述客户系统的至少一部分使用,以及将最初所设置的安全区域标记为未映射区域。
指令翻译模块1110与传统的全系统仿真器中的指令翻译模块相同。即,对要执行的指令进行翻译,并将指令传送到翻译缓存模块1125中进行存储。在遇到客户指令中的加载/存储指令时,则将所述指令传送给指令翻译优化模块1115进行翻译。
指令翻译优化模块1115负责在指令翻译模块1110遇到客户系统的加载/存储指令时,具体使用本发明中提出的加载/存储指令翻译模式对此类指令进行翻译,并将翻译后生成的代码回传给指令翻译模块1110。所述翻译模式的具体流程可以参见图5、图9A和9B并结合上文的相应描述,在此不再详细叙述。
客户TLB控制模块1120负责对所仿真的TLB进行管理,包括填入新的TLB条目、更新TLB条目、以及使TLB的现有条目无效。所述操作都是为了保证客户TLB中的状态与其实际状态一致。所述操作的具体流程可以参照图8、图10并结合上文的相应描述,在此不再详细叙述。
仿真器控制模块1130用于在仿真器运行过程中对各个模块的操作进行调度控制。
以上是对根据本发明的用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的方法、装置和全系统仿真器进行的详细描述。应该注意,由于TLB在实地址模式下不工作,因此本发明的方法、装置和全系统仿真器在此模式下也不工作。从而当所仿真的客户系统(通常为早期的系统)在实地址下运行时,根据本发明的方法、装置和全系统仿真器仅进行对加载/存储指令的通常翻译。而当客户系统切换到保护地址模式之后,根据本发明的方法、装置和全系统仿真器可以对存储器访问进行优化,从而提供了改善的性能。这意味着,本发明可以完全兼容早期的系统。实际上,由于现代计算机系统极少在实地址模式下运行,因此该设计方案对仿真性能基本没有影响。
以下列出了本发明对于性能提高的试验结果。表1是在全系统仿真器QEMU上仿真32位的客户系统的情形中,在未实施本发明和已实施本发明的仿真器上分别运行dhrystone和bzip2而得出的试验结果,所述试验结果是通过Benchmark测试软件所得出的数据,其中dhrystone和bzip2是用来进行测试而运行的软件应用。在此情形中,所有的加载/存储指令均可跳过传统的客户有效地址到宿主有效地址的翻译过程,而直接通过客户有效地址进行宿主存储器访问。
表1
Figure A200710167039D00281
由表1可以看出,经过本发明优化的全系统仿真器可以大大地缩短代码执行时间,从而实现比传统的全系统仿真器更快的代码执行速度。其中,如表1所示,运行dhrystone达到的速度提高为1.8倍,而运行bzip2达到的速度提高为2.0倍。
表2是在全系统仿真器QEMU上仿真64位的客户系统的情形中,在未实施本发明和已实施本发明的仿真器上分别运行dhrystone和bzip2而得出的试验结果。在此情形中,仅有部分的加载/存储指令可以跳过传统的客户有效地址到宿主有效地址的翻译过程,而直接通过客户有效地址进行宿主存储器访问,而其余的加载/存储指令需要执行传统的地址翻译过程。
表2
由表2可以看出,在该试验结果中,性能收益取决于客户系统落在安全区域中的比例(命中率)。如上文所描述的,所访问的客户地址落在安全区域中的比例越高,所获得的性能改善就越高。当所访问的客户地址落在安全区域中的比例(命中率)为0时,经过本发明优化的全系统仿真器并未显示出性能上的改善,这是因为在处理加载/存储指令的过程中,均按照通常的方法进行地址翻译,且引入了额外的指令开销(参见图9B),所以反而微弱地影响了系统性能。而随着所访问的客户地址落在安全区域中的比例(命中率)增大,本发明对性能的改善也越来越大。在极端情况下,当所访问的客户地址落在安全区域中的比例(命中率)为100%时,与仿真32位的客户系统的情形相同,所有的加载/存储指令均可跳过传统的地址翻译过程而直接进行宿主存储器访问。因此经过本发明优化的全系统仿真器可以大大地缩短代码执行时间,从而实现比初始的全系统仿真器更快的速度。其中,如表2所示,运行dhrystone达到的最大速度提高为1.5倍,而运行bzip2达到的最大速度提高为1.6倍。需要指出,在通常情况下,命中率为0的事件几乎不可能发生。进一步地,可以由程序员或管理员确定将客户系统的哪些部分放入安全区域中,所以所述命中率在编程中是可控的,因此可以在设计和编程阶段就将命中率预先置于一个较高的水平,从而确保了通过实施本发明对系统性能的改善。
以上是参考实施例对本发明的用于通过在宿主系统上的直接地址映射而对MMU仿真进行加速的方法、装置和全系统仿真器的详细描述。尽管在所描述的优选实施例中仅介绍了在64位的宿主机上仿真32位或者64位客户系统的情形,但是对于本领域普通技术人员来说显而易见,在任意位的宿主机上仿真小于或等于其位数的客户系统的情形中同样适用本发明,例如,在128位甚至更高位的宿主机上仿真64位、128位的客户系统。
如本领域普通技术人员可以了解的,本发明可以体现为方法、系统和/或计算机程序产品。因此,本发明可以呈现为完全硬件实施形式、完全软件实施形式或者软件和硬件组合实施形式。此外,本发明可以被呈现为在机器可读媒体上包括的计算机程序产品,机器可读媒体上存储了用于对计算机系统进行编程以执行根据本发明的过程的机器可执行程序指令。这里所使用的术语“机器可读媒体”包括向计算机系统提供用于执行的指令的任意媒体。这种媒体可以采用多种形式,包括但是不局限于:非易失性媒体、易失性媒体和传输媒体。非易失性媒体的常见形式例如包括软盘、软磁盘、硬盘、磁带或者任何其它磁媒体、光盘ROM(CD-ROM)或者任何其它光媒体、打孔卡或者任何其它带有孔图案的物理媒体、可编程ROM(PROM)、可擦写PROM(EPROM)、电EPROM(EEPROM)、闪速存储器、任何其它存储芯片或者盒式磁带(cartridge)、或者计算机系统可以读取并适合存储指令的任何其它媒体。
此外,可以理解,方框图和/或流程图中的每个方框以及方框图和流程图中的一些方框的组合可以用一些计算机程序指令实现。这些计算机程序指令可以提供给一通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生一机器,使得这些指令通过计算机或其它可编程数据处理设备的处理器的执行创建用于实现在方框图和/或流程图内或者方框内所指定的功能的装置。
尽管已经参考优选实施例具体地示出并描述了本发明,但其不是为了以公开的形式穷举或限制本发明。对于本领域的普通技术人员,可以在形式上和细节上进行各种改变而不会背离本发明的精神和范围。选择并描述了实施例是为了最好地解释本发明的原理和实际的应用,以及为了使本领域的其它普通技术人员能够理解对于各种实施例的本发明,所述实施例具有适合于预期的具体使用的各种修改。

Claims (20)

1.一种用于通过在宿主系统上的直接地址映射而对存储器管理单元仿真进行加速的方法,所述宿主系统支持全系统仿真器,在所述全系统仿真器上仿真客户系统,所述方法包括以下步骤:
在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域;
将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及
将所述安全区域供所述客户系统的至少一部分使用。
2.根据权利要求1所述的方法,其中:
当运行宿主系统的宿主机为64位而所仿真的客户系统为32位时,所述边界被设定为0xFFFFFFFF,从而所述安全区域可以容纳整个客户系统;以及
当运行宿主系统的宿主机为64位而所仿真的客户系统也为64位时,所述边界为一个特定的固定值,从而所述安全区域可以容纳客户系统的某些部分,其中将客户系统的哪些部分放置于所述安全区域中是可控的。
3.根据权利要求1所述的方法,其中所述将全系统仿真器自身从所占用的宿主逻辑空间转移到所述仿真器占用区域中的步骤进一步包括:
如果所述全系统仿真器无法被转移到所述仿真器占用区域,则将所述全系统仿真器保留在其原始位置,而将所述安全区域向上或向下调整;以及
向所述客户系统中的加载/存储指令的翻译模式中注入下述操作:在未来的加载/存储指令所要访问的初始的客户有效地址的计算完成之后向其附加一个地址偏移,以用于访问位于调整后的地址空间中的所述安全区域。
4.根据权利要求1所述的方法,进一步包括:在所述安全区域被设置之后,将最初所设置的安全区域标记为未映射区域。
5.根据权利要求4所述的方法,进一步包括:
当在所述客户系统上执行加载/存储指令时,确定所述加载/存储指令要访问的客户有效地址是否是未映射地址;
如果所述加载/存储指令要访问的客户有效地址不是未映射地址,则进行存储器访问并执行所述加载/存储指令的操作;以及
如果所述加载/存储指令要访问的客户有效地址是未映射地址,则对所述全系统仿真器所仿真的存储器管理单元中的地址转换旁路缓冲器中的条目进行填充,以及使得所述客户有效地址是已映射地址,并随后进行存储器访问并执行所述加载/存储指令的操作。
6.根据权利要求5所述的方法,其中所述进行存储器访问并执行所述加载/存储指令的操作的步骤进一步包括:
如果所述加载/存储指令所要访问的客户有效地址位于所述安全区域之中,则所述客户有效地址直接用作宿主系统中可识别的宿主有效地址,使得所述加载/存储指令能够直接对宿主机中的存储器进行存储器访问;以及
如果所述加载/存储指令所要访问的客户有效地址位于所述安全区域之外,则使得所述存储器管理单元通过所述地址转换旁路缓冲器查找进行客户有效地址到客户物理地址的转换,然后通过对应于客户物理地址的宿主有效地址对宿主机中的存储器进行存储器访问。
7.根据权利要求5所述的方法,其中所述对所述全系统仿真器所仿真的存储器管理单元中的地址转换旁路缓冲器中的条目进行填充的步骤是通过由于所述加载/存储指令所要访问的有效地址为未映射地址而触发异常而得以进行的。
8.根据权利要求5所述的方法,其中所述对所述全系统仿真器所仿真的存储器管理单元中的地址转换旁路缓冲器中的条目进行填充的步骤进一步包括:
进行所述地址转换旁路缓冲器的检查;
如果所述地址转换旁路缓冲器未满,则直接向所述地址转换旁路缓冲器中填入新的条目;
如果所述地址转换旁路缓冲器已满,则替换所述地址转换旁路缓冲器中的现有条目,并将对应于现有条目的宿主物理页面去除映射;以及
将所述客户有效地址对应的逻辑页面直接映射到宿主物理页面。
9.根据权利要求8所述的方法,其中,如果所仿真的客户系统自身可以确保当页表条目不在所述地址转换旁路缓冲器中时也不会被修改,则使所述地址转换旁路缓冲器容纳比实际设定数量更多的条目,从而直接将该条目添加到所述地址转换旁路缓冲器中,而不进行所述地址转换旁路缓冲器中的条目替换和物理页面去除映射的工作,其中所述地址转换旁路缓冲器的大小最大可以达到宿主机中的宿主地址转换旁路缓冲器的大小。
10.根据权利要求1所述的方法,进一步包括:使所述地址转换旁路缓冲器的条目无效的步骤,所述步骤包括:
检测地址转换旁路缓冲器无效指令;
使得相关的地址转换旁路缓冲器的条目变为无效条目;以及
将对应于此条目的宿主机中的存储器中的逻辑页面去除映射。
11.一种用于通过在宿主系统上的直接地址映射而对存储器管理单元仿真进行加速的装置,所述宿主系统支持全系统仿真器,在所述全系统仿真器上仿真客户系统,所述装置包括:
边界设置装置,用于在所述宿主系统为所述全系统仿真器分配的逻辑空间中设置边界,从而将所述逻辑空间划分为安全区域和仿真器占用区域;
仿真器转移装置,用于将全系统仿真器自身从所占用的初始宿主逻辑空间转移到所述仿真器占用区域中;以及
安全区域管理装置,用于将所述安全区域供所述客户系统的至少一部分使用。
12.根据权利要求11所述的装置,其中所述边界设置装置进一步用于:
当运行宿主系统的宿主机为64位而所仿真的客户系统为32位时,将所述边界设定为0xFFFFFFFF,从而所述安全区域可以容纳整个客户系统;以及
当运行宿主系统的宿主机为64位而所仿真的客户系统也为64位时,将所述边界设定为一个特定的固定值,从而所述安全区域可以容纳客户系统的某些部分,其中将客户系统的哪些部分放置于所述安全区域中是可控的。
13.根据权利要求11所述的装置,其中所述仿真器转移装置进一步用于:
如果所述全系统仿真器无法被转移到所述仿真器占用区域,则将所述全系统仿真器保留在其原始位置,而将所述安全区域向上或向下调整;以及
向所述客户系统中的加载/存储指令的翻译模式中注入下述操作:在未来的加载/存储指令所要访问的初始的客户有效地址的计算完成之后向其附加一个地址偏移,以用于访问位于调整后的地址空间中的所述安全区域。
14.根据权利要求11所述的装置,其中所述安全区域管理装置进一步包括:用于将最初所设置的安全区域标记为未映射区域的装置。
15.根据权利要求11所述的装置,进一步包括:
指令翻译模块,用于对所述客户系统上执行的指令进行翻译,并在遇到加载/存储指令时,将所述指令传送给指令翻译优化模块进行翻译;
指令翻译优化模块,用于:当执行所述加载/存储指令时,确定所述加载/存储指令要访问的客户有效地址是否是未映射地址,并且如果所述客户有效地址不是未映射地址,进行存储器访问并执行所述加载/存储指令的操作;以及
客户地址转换旁路缓冲器管理模块,用于如果所述加载/存储指令要访问的客户有效地址是未映射地址,则对所述全系统仿真器所仿真的存储器管理单元中的地址转换旁路缓冲器中的条目进行填充,以及使得所述客户有效地址是已映射地址。
16.根据权利要求15所述的装置,其中所述指令翻译优化模块进一步包括:
用于如果所述加载/存储指令所要访问的客户有效地址位于所述安全区域之中,则所述客户有效地址直接用作宿主系统中可识别的宿主有效地址,使得所述加载/存储指令能够直接对宿主机中的存储器进行存储器访问的装置;以及
用于如果所述加载/存储指令所要访问的客户有效地址位于所述安全区域之外,则使得所述存储器管理单元通过所述地址转换旁路缓冲器查找进行客户有效地址到客户物理地址的转换,然后通过对应于客户物理地址的宿主有效地址对宿主机中的存储器进行存储器访问的装置。
17.根据权利要求15所述的装置,其中所述地址转换旁路缓冲器管理模块对所仿真的存储器管理单元中的地址转换旁路缓冲器中的条目进行填充是通过由于所述指令管理模块确定所述加载/存储指令所要访问的有效地址为未映射地址而触发异常而得以进行的。
18.根据权利要求15所述的装置,其中所述地址转换旁路缓冲器管理模块进一步包括:
用于进行所述地址转换旁路缓冲器的检查的装置;
用于如果所述地址转换旁路缓冲器未满,则直接向所述地址转换旁路缓冲器中填入新的条目的装置;
用于如果所述地址转换旁路缓冲器已满,则替换所述地址转换旁路缓冲器中的现有条目,并将对应于现有条目的宿主物理页面去除映射的装置;以及
用于将所述客户有效地址对应的逻辑页面直接映射到宿主物理页面的装置;
其中,所述地址转换旁路缓冲器管理模块进一步包括下述装置,用于:如果所仿真的客户系统自身可以确保当页表条目不在所述地址转换旁路缓冲器中时也不会被修改,则使所述地址转换旁路缓冲器容纳比实际设定数量更多的条目,从而直接将该条目添加到所述地址转换旁路缓冲器中,而不进行所述地址转换旁路缓冲器中的条目替换和物理页面去除映射的工作,其中所述地址转换旁路缓冲器的大小最大可以达到宿主机中的宿主地址转换旁路缓冲器的大小。
19.根据权利要求11所述的装置,所述地址转换旁路缓冲器管理模块进一步包括:用于使所述地址转换旁路缓冲器的条目无效的装置,其包括:
用于检测地址转换旁路缓冲器无效指令的装置;
用于使得相关的地址转换旁路缓冲器的条目变为无效条目的装置;以及
用于将对应于此条目的宿主机中的存储器中的逻辑页面去除映射的装置。
20.一种用于通过在宿主系统上的直接地址映射而对存储器管理单元仿真进行加速的全系统仿真器,包括根据权利要求11至19中任何一项所述的装置。
CNA2007101670392A 2007-10-31 2007-10-31 对mmu仿真进行加速的方法、装置和全系统仿真器 Pending CN101425020A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CNA2007101670392A CN101425020A (zh) 2007-10-31 2007-10-31 对mmu仿真进行加速的方法、装置和全系统仿真器
US12/259,891 US8688432B2 (en) 2007-10-31 2008-10-28 Method, apparatus and full-system simulator for speeding MMU simulation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2007101670392A CN101425020A (zh) 2007-10-31 2007-10-31 对mmu仿真进行加速的方法、装置和全系统仿真器

Publications (1)

Publication Number Publication Date
CN101425020A true CN101425020A (zh) 2009-05-06

Family

ID=40589089

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007101670392A Pending CN101425020A (zh) 2007-10-31 2007-10-31 对mmu仿真进行加速的方法、装置和全系统仿真器

Country Status (2)

Country Link
US (1) US8688432B2 (zh)
CN (1) CN101425020A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182268A (zh) * 2013-05-27 2014-12-03 三星电子株式会社 仿真系统及其方法和包括所述仿真系统的计算机系统
CN105989758A (zh) * 2015-02-05 2016-10-05 龙芯中科技术有限公司 地址翻译方法和装置
CN109426503A (zh) * 2017-07-21 2019-03-05 华为技术有限公司 提供仿真激励的方法及装置
CN109885466A (zh) * 2019-01-25 2019-06-14 上海创景信息科技有限公司 处理器c8000的仿真方法、系统及介质
CN110874332A (zh) * 2016-08-26 2020-03-10 北京中科寒武纪科技有限公司 内存管理单元及其管理方法
CN115599001A (zh) * 2022-12-15 2023-01-13 中国航空工业集团公司西安飞机设计研究所(Cn) 一种机载phm系统仿真验证环境

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529729B2 (en) * 2010-11-16 2016-12-27 International Business Machines Corporation Location of memory management translations in an emulated processor
CN102592083B (zh) * 2011-12-27 2014-12-10 深圳国微技术有限公司 用于提高soc芯片系统安全的存储保护控制器及方法
US9021454B2 (en) * 2012-11-08 2015-04-28 Unisys Corpoation Operand and limits optimization for binary translation system
US9336341B2 (en) * 2012-12-07 2016-05-10 International Business Machines Corporation Memory frame proxy architecture for synchronization and check handling in a simulator
US9507729B2 (en) * 2013-10-01 2016-11-29 Synopsys, Inc. Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
US10437699B2 (en) 2015-01-21 2019-10-08 International Business Machines Corporation Measuring execution time of benchmark programs in a simulated environment
EP3274824B1 (en) * 2015-03-27 2021-03-17 Intel Corporation Efficient address translation
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
GB2570161B (en) * 2018-01-16 2020-03-25 Advanced Risc Mach Ltd Simulation of exclusive instructions
US10423537B2 (en) * 2018-01-31 2019-09-24 Arm Limited Address space resizing table for simulation of processing of target program code on a target data processing apparatus
TWI682395B (zh) * 2019-02-01 2020-01-11 睿寬智能科技有限公司 固態硬碟的未映射位址的重導向方法
CN114510889B (zh) * 2022-02-15 2024-07-30 中电科申泰信息科技有限公司 一种基于申威处理器芯片架构的tlb模拟器及调试方法
US20240020060A1 (en) * 2022-07-15 2024-01-18 Western Digital Technologies, Inc. Management of host file-system defragmentation in a data storage device
US20240020272A1 (en) * 2022-07-15 2024-01-18 Western Digital Technologies, Inc. Logical-to-physical mapping for defragmentation of host file system in a data storage device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US20020046305A1 (en) 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7089377B1 (en) * 2002-09-06 2006-08-08 Vmware, Inc. Virtualization system for computers with a region-based memory architecture
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7881921B1 (en) * 2006-07-05 2011-02-01 Synopsys, Inc. Caching information to map simulation addresses to host addresses in computer system simulations

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182268A (zh) * 2013-05-27 2014-12-03 三星电子株式会社 仿真系统及其方法和包括所述仿真系统的计算机系统
CN104182268B (zh) * 2013-05-27 2019-01-18 三星电子株式会社 仿真系统及其方法和包括所述仿真系统的计算系统
CN105989758A (zh) * 2015-02-05 2016-10-05 龙芯中科技术有限公司 地址翻译方法和装置
CN105989758B (zh) * 2015-02-05 2019-03-19 龙芯中科技术有限公司 地址翻译方法和装置
CN110874332A (zh) * 2016-08-26 2020-03-10 北京中科寒武纪科技有限公司 内存管理单元及其管理方法
CN109426503A (zh) * 2017-07-21 2019-03-05 华为技术有限公司 提供仿真激励的方法及装置
CN109426503B (zh) * 2017-07-21 2022-05-31 华为技术有限公司 提供仿真激励的方法及装置
CN109885466A (zh) * 2019-01-25 2019-06-14 上海创景信息科技有限公司 处理器c8000的仿真方法、系统及介质
CN109885466B (zh) * 2019-01-25 2022-07-05 上海创景信息科技有限公司 处理器c8000的仿真方法、系统及介质
CN115599001A (zh) * 2022-12-15 2023-01-13 中国航空工业集团公司西安飞机设计研究所(Cn) 一种机载phm系统仿真验证环境
CN115599001B (zh) * 2022-12-15 2023-04-07 中国航空工业集团公司西安飞机设计研究所 一种机载phm系统仿真验证环境

Also Published As

Publication number Publication date
US8688432B2 (en) 2014-04-01
US20090119089A1 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
CN101425020A (zh) 对mmu仿真进行加速的方法、装置和全系统仿真器
CN101246452B (zh) 执行快速的mmu模拟的方法和装置、以及全系统模拟器
Moraru et al. Consistent, durable, and safe memory management for byte-addressable non volatile main memory
TWI387927B (zh) 程式碼轉換之部分無效碼刪除最佳化
US10592430B2 (en) Memory structure comprising scratchpad memory
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
US20060212654A1 (en) Method and apparatus for intelligent instruction caching using application characteristics
US10140212B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
JP2021532468A (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
US20150095585A1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
CN101814049A (zh) 一种内存泄漏探测方法
US7949848B2 (en) Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program
US7313668B2 (en) Immediate virtual memory
CN111433742B (zh) 用于数据处理的装置和方法、非暂态存储介质
TW201945940A (zh) 隨機標籤設定指令
JP2020525934A (ja) 命令の実行を制御する装置および方法
CN101620573B (zh) X86体系结构内存管理单元虚拟化方法
Wang et al. Crash recoverable ARMv8-oriented B+-tree for byte-addressable persistent memory
CN111566628B (zh) 控制存储器访问中的守卫标签检查的设备和方法
CN113986775A (zh) 一种risc-v cpu验证中页表项生成方法、系统及装置
Wu et al. WDBT: Wear Characterization, Reduction, and Leveling of DBT Systems for Non-Volatile Memory
Guo et al. Fast TLB simulation for RISC-V systems
CN107430521A (zh) 高效地址转换
CN101571831A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20090506