CN101295265A - 全***isa仿真***及其识别进程的方法 - Google Patents
全***isa仿真***及其识别进程的方法 Download PDFInfo
- Publication number
- CN101295265A CN101295265A CNA2007101047433A CN200710104743A CN101295265A CN 101295265 A CN101295265 A CN 101295265A CN A2007101047433 A CNA2007101047433 A CN A2007101047433A CN 200710104743 A CN200710104743 A CN 200710104743A CN 101295265 A CN101295265 A CN 101295265A
- Authority
- CN
- China
- Prior art keywords
- storehouse
- page
- process storehouse
- code
- page table
- 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
Links
Images
Classifications
-
- 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/45537—Provision of facilities of other operating environments, e.g. WINE
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
一种在全***ISA仿真器中识别进程的方法,该方法包括基于进程的页表基地址识别出进程,当所述页表基地址发生改变时,则识别出进程间的切换,当试图修改页表的进程的页表基地址不等于该页表中已记录的进程的页表基地址时,则识别出已记录进程的终止。利用该识别出的进程,将基于内容索引的二进制翻译结果保存到相应的进程库中,可以实现翻译结果的永久性保存,并可以在前次执行程序的基础上实现翻译和优化的重用,从而提高了全***ISA仿真器的整体性能。
Description
技术领域
本发明一般地涉及全***ISA仿真***,更具体地,本发明涉及在全***ISA仿真器中识别进程。
背景技术
全***ISA仿真器是支持在一个ISA(指令集架构)平台上运行另一个ISA平台的操作***和应用程序的工具,例如,在PowerPC机器上运行x86Linux和相应的应用程序。这是扩展现有平台的使用以减少不同ISA平台之间服务器数量的一项重要方法,以便在现有平台上开发和调试预硬件环境的软件。
当前的全***ISA仿真器可以分为两类:一类是基于解释的,即在主平台上顺序地解释和仿真目标ISA的每一条指令。另一类是基于二进制翻译的,当遇到没有翻译的目标二进制代码段时,此类的仿真器将目标二进制代码段翻译成主二进制代码,接着将其存储到主平台的翻译缓存,并最后直接执行翻译的代码。通常基于二进制翻译的仿真器能够比基于解释的仿真器获得更高的性能,因为基于二进制翻译的仿真器采用批处理的方式翻译和仿真多个目标指令,而不是每次仅翻译一条指令。
基于二进制翻译的仿真器通常以下面的方式检查是否已经翻译了目标二进制代码段:首先计算出目标二进制代码段的起始物理地址,接着在翻译缓存中查找该地址,如果找到则意味着目标代码段已经被翻译。即,利用目标二进制代码段的物理地址来对翻译结果进行索引。但由于在程序退出和重新执行后,目标二进制代码段的物理地址可能发生改变,所以利用物理地址进行索引的翻译结果无法保存在例如硬盘的永久性介质中。所以在缓存复位的情况下,当前的基于二进制翻译的仿真器将不得不丢弃一些翻译出的二进制代码段,并且当再次遇到这些代码段时再重新对其进行翻译。改进仿真器的性能的另一种常见方式是基于例如评测(profiling)动态地优化翻译出的代码。但是由于上述利用物理地址进行索引的相同原因,优化后的代码也无法保存在永久性介质中。由于优化和翻译是耗时的,所以重新翻译代码和重新优化代码将对仿真器的整体性能造成负面影响。
因此,需要一种新的方式来对翻译结果进行索引,从而利用该方式将翻译结果保存在永久性介质中。已知程序的代码页是需要被翻译和优化的仅有部分,即,程序的代码页是其唯一的特征。因此如果可以利用代码页的内容,即基于内容来对翻译和优化结果进行索引,则这些翻译结果可以被保存在永久性介质中。
尽管利用上述的思想可以对翻译的结果进行永久性保存,但由于在全***ISA仿真器中,所有的应用程序是运行在仿真的OS(操作***)上而不是直接运行在仿真器上,因此对于全***ISA仿真器来说,其只能看到指令流、机器状态以及存储区映射,而无法区分不同的程序和识别出单独的进程。由于全***ISA仿真器无法识别出单独的各个进程,则即使利用上述的思想将基于内容索引的翻译结果进行永久性保存,也只能将其放入到巨大的翻译库中,而不是放入到许多应用程序专用的进程库中。很明显,由于无法识别出进程,则全***ISA仿真器将在巨大的翻译库中查找保存的翻译结果,这将是耗时费力的,并且维护大的翻译库相比较于小的进程库来说将导致更多的开销和成本。
另外,全***ISA仿真器还经常用于生成针对应用的评测数据,然而由于不能识别出进程,所以仿真器很难做到在没有其他应用程序同时发生的交错情况下生成专用于目标应用程序的评测数据。
因此当前需要一种用于在全***ISA仿真器中识别进程的方法,并且利用识别出的进程在全***ISA仿真器中执行基于内容的动态二进制翻译保存。
发明内容
本发明的目的是在全***ISA仿真器中识别进程,并利用识别出的进程实现对基于内容的动态二进制翻译结果的保存。
为了实现上述目的,本发明提出一种在全***ISA仿真器中识别进程的方法,该方法包括基于进程的页表基地址识别出进程,当所述页表基地址发生改变时,则识别出进程间的切换。当试图修改页表的进程的页表基地址不等于该页表中已记录的进程的页表基地址时,则识别出已记录进程的终止。
本发明还提出根据上述识别出的进程,仿真器执行基于内容的动态二进制翻译保存,包括以下步骤:计算代码页的哈希值,基于该哈希值在该代码页的进程库中进行查找以确定该代码页是否被翻译,如果所述代码页没有被翻译过,则所述仿真器执行翻译并接着将该翻译结果存储在所述进程库中。
本发明还提出一种全***ISA仿真***,包括:进程识别装置,用于基于进程的页表基地址识别出进程,当所述页表基地址发生改变时,则识别出进程间的切换,当试图修改页表的进程的页表基地址不等于该页表中已记录的进程的页表基地址时,则识别出已记录进程的终止;翻译代码查找装置,用于计算代码页的哈希值,基于该哈希值在该代码页的进程库中进行查找以确定该代码页是否被翻译;翻译代码保存装置,用于当所述代码页没有被翻译时,对所述代码页进行翻译并将翻译结果保存在所述代码页的进程库中。
根据本发明的方法和装置,可以基于识别的进程实现永久性保存翻译结果以及对先前已执行程序的翻译和优化的重用,从而提高全***ISA仿真器的整体性能和执行效率,同时减小了仿真过程中的开销并优化了代码。
附图说明
通过以下结合附图的说明,并且随着对本发明的更全面了解,本发明的其他目的和效果将变得更加清楚和易于理解,其中:
图1是示出根据本发明的方法实现基于内容的动态二进制翻译保存的装置的框图;
图2是示出现代架构中从虚拟地址到物理地址的映射过程的示意图;
图3是示出根据本发明的方法识别进程的流程图;
图4是示出在全***ISA仿真器中不执行识别进程的基于内容的动态二进制翻译保存的流程图;
图5是示出根据本发明的方法的翻译缓存组织的示意图;
图6是示出根据本发明的方法执行基于内容的动态二进制翻译保存的流程图;以及
图7是示出图6中的进程库查找模块中的流程图。
在所有的上述附图中,相同的标号表示具有相同、相似或相应的特征或功能。
具体实施方式
以下,将结合附图来描述本发明的实施方式。
图1是示出根据本发明的方法实现基于内容的动态二进制翻译保存的装置的框图,该装置包括进程识别模块、翻译代码查找模块以及翻译代码保存模块,其中翻译代码查找模块中可选地包括进程库查找模块。以下将对这些模块进行相应的描述。
图2是示出现代架构中从虚拟地址到物理地址的翻译过程。在该现代架构中,存在用于指向当前进程的页表的一些特殊寄存器,例如x86架构中的CR3、PowerPC架构中的SDR1。通过监视这些寄存器的变化,可以知道进程的改变。同样地,在全***ISA仿真器中,针对每个进程必须存在一个唯一的页表,通过该页表可以将虚拟地址翻译成实际的物理地址。可选地,将该页表的基地址存储在类似上述的寄存器中,进程识别模块通过监视该寄存器来获知所有进程的切换。例如当发现新的寄存器值时,则可以识别出开始了一个新的进程,当发生进程切换时,则必须改变该寄存器以适应下一个进入的进程。
图3是示出根据本发明的方法的识别进程的流程图。在该全***ISA仿真器中,寄存器CR3指向进程的页表,该页表存储在主平台实际存储区中用于仿真的存储区内,并且将该存储区标记为只读区域,可选地,通过进程的CR3/SDR1值将所有进程的页表寄存在进程数据库中。接着利用全***ISA仿真器对针对该区域进行的写尝试设置异常处理,当对该页表进行任何的修改时,则触发该异常处理。当发生对页表尝试进行修改的异常处理时,进程识别模块在步骤300中,确定当前进程的CR3值是否与在该页表中记录的CR3值相等,如果不相等,则在步骤310中可以确定识别出已记录进程的终止。解除针对该页表的旧的进程记录,包括从存储区中卸载页表目录的旧的进程库。如果相等,则可以确定这是同一个进程,此时该进程可以调用mmap( )函数以重新映射一些页。接着在步骤330中,对页表和页目录进行相应的修改。
图4中示意性示出在全***ISA仿真器中没有执行进程识别从而不区分程序的基于内容的二进制翻译保存方法的流程图。下面简要描述相关的步骤,当执行一个新的目标代码页时,首先计算出该代码页的哈希值,接着通过该代码页的哈希值在代码库中查找该代码页以确定该代码页是否已经被翻译,如果找到,则执行该翻译出的代码,否则翻译该代码页并将该翻译出的代码放置到代码库中,接着执行该翻译出的代码,由于无法利用进程库对基于内容索引的二进制翻译结果进行保存,所以在该巨大的代码库中进行查找是相当复杂的。
图5是示出根据本发明的方法的翻译缓存组织的示意图。基于本发明的在全***ISA仿真器中识别进程的方法,可以将主平台中的翻译缓存分成两种,一种是主平台存储区中的快速缓存,另一种是主平台中存储盘的永久性缓存。如图所示,存储区中的翻译缓存(即快速缓存)中存在多个进程库,每个进程库具有唯一的CR3值以区分不同的进程库,在每个进程库中存储有多个以哈希值彼此区分的翻译代码。在存储盘中的永久性缓存中同样也存在多个进程库,每个进程库中的多个翻译代码以哈希值彼此区分,永久性缓存是快速缓存的一个超集。翻译出的代码仅能够在快速缓存上直接执行,当第一次执行进程库时,需要将进程库从主平台的永久性缓存加载到快速缓存。
图6是示出根据本发明的方法执行基于内容的动态二进制翻译保存的流程图。下面结合图1,对图6进行详细的描述。在图1的翻译代码查找模块中执行以下的步骤,其中在步骤510,开始执行新的目标代码页。在步骤520中,计算出该代码页的哈希值,例如可以通过类似MD5的摘要算法来计算出该哈希值。接着在步骤530中,利用当前的进程CR3值在主平台的存储区的快速翻译缓存中查找以确定是否已经加载了该进程库,如果在快速翻译缓存中没有找到该进程库,则进入步骤540,在该步骤进入进程库查找模块。否则直接前进到步骤550,在该步骤中利用页哈希值查找进程库以确定代码页是否已经被翻译。当确定没有翻译该代码页时,图1中的翻译代码保存模块在步骤560中执行对该代码页的翻译,接着在步骤570中,将翻译出的代码保存到识别出的进程库中。接着在步骤580中,执行翻译出的代码,并在步骤590中确定是否已经执行完该代码页,如果没有执行完,则返回到步骤580继续执行,否则返回到步骤510重新执行新的代码页。
图7是示出图6的进程库查找模块中的流程图。在步骤610中确定是否是第一次针对该代码页进行查找,如果是,则在步骤615中将存储盘中的所有进程库标记为候选进程库,否则前进到步骤620中,在该步骤中利用代码页的哈希值查找所有的候选进程库以确定是否存在包含该代码页的进程库。当确定不存在这样的进程库时,则流程图前进到步骤625,则该步骤中确定是否为该代码页加载了临时进程库,如果没有,则在步骤630中为当前的进程新建代码库,接着在步骤680返回,如果已经为该代码页加载了临时进程库,则在步骤635中将该进程库标记为新的进程库,接着在步骤680返回。如果在步骤620中确定存在包含该代码页的进程库,则在步骤640中确定该进程库的数目是否大于1,如果大于1,则在步骤645中新建临时进程库,接着将用于该代码页的翻译代码加载到临时进程库中,并在步骤655中将找到的所有带有该代码页的进程库标记为候选进程库,以便在执行下一个代码页时直接在这些候选进程库中执行查找,从而大幅度提高查找效率,流程在步骤680中返回。如果在步骤640中确定该进程库的数目等于1,则在步骤660中确定是否为该代码页加载了临时进程库,如果已经加载了,则将该临时进程库标记为已被加载过的进程库,并在步骤670中,将找到的该进程库加载到快速存储区中,接着在步骤680处返回。如果在步骤660中确定没有为该代码页加载临时进程库,则就将该找到的进程库加载到快速存储区中,接着在步骤680处进程库查找模块前进到图5中所示的步骤550处。
应当注意,为了使本发明更容易理解,上面的描述省略了对于本领域的技术人员来说是公知的、并且对于本发明的实现可能是必需的更具体的一些技术细节。
提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。
因此,选择并描述实施方式是为了更好地解释本发明的原理及其实际应用,并使本领域普通技术人员明白,在不脱离本发明实质的前提下,所有修改和变更均落入由权利要求所限定的本发明的保护范围之内。
Claims (16)
1.一种在全***ISA仿真器中识别进程的方法,该方法包括:
基于进程的页表基地址识别出进程,当所述页表基地址发生改变时,则识别出进程间的切换,当试图修改页表的进程的页表基地址不等于该页表中已记录的进程的页表基地址时,则识别出已记录的进程的终止。
2.根据权利要求1所述的方法,其中包括利用所述进程的页表基地址的值将所述进程的页表记录在进程数据库中。
3.根据权利要求1所述的方法,其中所述页表基地址存储在寄存器中,通过监视该寄存器来确定所述页表基地址的改变。
4.根据权利要求1所述的方法,其中所述页表存储在主平台的存储区内,并且将该存储区设置成只读区域,利用所述仿真器设置异常处理,当试图对所述只读区域中的所述页表进行任何修改时则触发该异常处理来识别进程是否终止。
5.根据权利要求1所述的方法,其中所述仿真器基于该方法执行基于内容的动态二进制翻译保存,所述翻译保存包括执行以下步骤:
翻译代码查找步骤,包括计算代码页的哈希值,基于该哈希值在该代码页的进程库中进行查找以确定该代码页是否被翻译;
翻译代码保存步骤,包括当所述代码页没有被翻译过时,则所述仿真器执行翻译并接着将该翻译结果存储在所述进程库中。
6.根据权利要求5所述的方法,其中所述进程库存储在主平台存储器的快速翻译缓存中,所述翻译结果仅在该快速翻译缓存中直接执行,所述进程库还存储在主平台存储器的永久性缓存中,该永久性缓存存储的进程库是所述快速翻译缓存存储的进程库的超集。
7.根据权利要求6所述的方法,其中翻译代码查找步骤另外包括利用当前进程库的页表基地址在所述快速翻译缓存中查找所述进程库的步骤。
8.根据权利要求7所述的方法,其中包括当在所述快速翻译缓存中没有查找到所述进程库时,则执行将所述进程库从所述永久性缓存加载到所述快速翻译缓存的步骤。
9.根据权利要求8所述的方法,其中将所述进程库加载到所述快速翻译缓存的步骤包括利用所述代码页的哈希值在所述永久性缓存中查找所述进程库的步骤。
10.根据权利要求9所述的方法,其中在所述永久性缓存中查找所述进程库的步骤包括:
将所述永久性缓存中要查找的所有进程库标记为候选进程库,利用所述代码页的哈希值来确定是否存在包含该代码页的候选进程库,
当所述候选进程库中不存在包含该代码页的进程库时,如果没有为该代码页建立临时进程库时,则为该代码页建立新的进程库,否则将该临时进程库标记为新的进程库并且将该进程库加载到所述快速缓存;
当所述候选进程库中存在包含该代码页的进程库并且包含该代码页的进程库的数目大于一时,则新建一个临时进程库,将翻译代码加载到该临时进程库以便加载到所述快速缓存,接着将包含该代码页的所有进程库标记为所述候选进程库以作为下一个代码页所要查找的候选进程库;
当包含该代码页的进程库的数目为一时,则将包含该代码页的所述进程库加载到快速缓存。
11.一种全***ISA仿真***,包括:
进程识别装置,用于基于进程的页表基地址识别出进程,当所述页表基地址发生改变时,则识别出进程间的切换,当试图修改页表的进程的页表基地址不等于该页表中已记录的进程的页表基地址时,则识别出已记录进程的终止;
翻译代码查找装置,用于计算代码页的哈希值,基于该哈希值在该代码页的进程库中进行查找以确定该代码页是否被翻译;
翻译代码保存装置,用于当所述代码页没有被翻译过时,对所述代码页进行翻译并将翻译结果保存在所述进程库中。
12.根据权利要求11所述的***,其中所述页表基地址存储在寄存器中,通过监视该寄存器来确定所述页表基地址的改变。
13.根据权利要求11所述的***,其中所述页表存储在主平台的存储区内,并且将该存储区设置成只读区域,所述进程识别装置设置异常处理,当试图对该只读区域中的所述页表进行任何修改时则触发该异常处理来识别进程是否终止。
14.根据权利要求11所述的***,其中所述进程库存储在主平台存储器的快速翻译缓存中,所述翻译结果仅在该快速翻译缓存中直接执行,所述进程库还存储在主平台存储器的永久性缓存中,该永久性缓存存储的进程库是所述快速翻译缓存存储的进程库的超集。
15.根据权利要求14所述的***,其中所述翻译代码查找装置中还包括进程库查找装置,当在所述快速翻译缓存中没有查找到所述进程库时,该进程库查找装置用于在所述永久性缓存中查找所述进程库以便将该进程库加载到所述快速翻译缓存。
16.根据权利要求15所述的***,其中在所述永久性缓存中查找所述进程库以便加载该进程库包括:
将所述永久性缓存中要查找的所有进程库标记为候选进程库,利用所述代码页的哈希值来确定是否存在包含该代码页的候选进程库,
当所述候选进程库中不存在包含该代码页的进程库时,如果没有为该代码页建立临时进程库时,则为该代码页建立新的进程库,否则将该临时进程库标记为新的进程库并且将该进程库加载到所述快速缓存;
当所述候选进程库中存在包含该代码页的进程库并且包含该代码页的进程库的数目大于一时,则新建一个临时进程库,将翻译代码加载到该临时进程库以便加载到所述快速缓存,接着将包含该代码页的所有进程库标记为所述候选进程库以作为下一个代码页所要查找的候选进程库;
当包含该代码页的进程库的数目为一时,则将包含该代码页的所述进程库加载到快速缓存。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101047433A CN101295265A (zh) | 2007-04-25 | 2007-04-25 | 全***isa仿真***及其识别进程的方法 |
US12/107,835 US8255201B2 (en) | 2007-04-25 | 2008-04-23 | Full-system ISA emulating system and process recognition method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101047433A CN101295265A (zh) | 2007-04-25 | 2007-04-25 | 全***isa仿真***及其识别进程的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101295265A true CN101295265A (zh) | 2008-10-29 |
Family
ID=39888417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101047433A Pending CN101295265A (zh) | 2007-04-25 | 2007-04-25 | 全***isa仿真***及其识别进程的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8255201B2 (zh) |
CN (1) | CN101295265A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013139014A1 (en) * | 2012-03-22 | 2013-09-26 | Intel Corporation | Nested emulation and dynamic linking environment |
CN107851008A (zh) * | 2015-07-14 | 2018-03-27 | 密克罗奇普技术公司 | 在具有有限存储器寻址的现存微处理器架构中用于增大数据存储器的方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8726248B2 (en) * | 2008-06-12 | 2014-05-13 | Oracle America, Inc. | Method and apparatus for enregistering memory locations |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
KR20120117151A (ko) * | 2011-04-14 | 2012-10-24 | 삼성전자주식회사 | 디바이스에서 가상 머신 마이그레이션 과정을 수행하기 위한 장치 및 방법 |
US10089093B1 (en) * | 2011-05-24 | 2018-10-02 | BlueStack Systems, Inc. | Apparatuses, systems and methods of switching operating systems |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US9063760B2 (en) * | 2011-10-13 | 2015-06-23 | International Business Machines Corporation | Employing native routines instead of emulated routines in an application being emulated |
US9542191B2 (en) * | 2012-03-30 | 2017-01-10 | Intel Corporation | Hardware profiling mechanism to enable page level automatic binary translation |
US9405551B2 (en) | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US9875273B2 (en) * | 2014-01-31 | 2018-01-23 | Sap Se | Methods and systems for managing configuration settings |
US9292639B1 (en) * | 2014-10-30 | 2016-03-22 | Cadence Design Systems Inc. | Method and system for providing additional look-up tables |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5598473A (en) * | 1994-08-17 | 1997-01-28 | Ibm Corporation | Digital signature generator/verifier/recorder (DS-GVR) for analog transmissions |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US6886085B1 (en) * | 2000-04-19 | 2005-04-26 | International Business Machines Corporation | Method and apparatus for efficient virtual memory management |
US6615300B1 (en) * | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
US7191440B2 (en) * | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
US7565509B2 (en) * | 2002-04-17 | 2009-07-21 | Microsoft Corporation | Using limits on address translation to control access to an addressable entity |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
EP1447742A1 (en) * | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
US7536682B2 (en) | 2003-04-22 | 2009-05-19 | International Business Machines Corporation | Method and apparatus for performing interpreter optimizations during program code conversion |
US7139892B2 (en) * | 2003-05-02 | 2006-11-21 | Microsoft Corporation | Implementation of memory access control using optimizations |
US7934204B2 (en) | 2003-07-15 | 2011-04-26 | International Business Machines Corporation | Partitioning code in program code conversion |
US7805710B2 (en) | 2003-07-15 | 2010-09-28 | International Business Machines Corporation | Shared code caching for program code conversion |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050071823A1 (en) * | 2003-09-29 | 2005-03-31 | Xiaodong Lin | Apparatus and method for simulating segmented addressing on a flat memory model architecture |
WO2005104686A2 (en) * | 2004-04-14 | 2005-11-10 | Ipass Inc. | Dynamic executable |
US7917740B1 (en) * | 2004-05-11 | 2011-03-29 | Advanced Micro Devices, Inc. | Virtualization assist for legacy x86 floating point exception handling |
CN100573443C (zh) * | 2004-12-30 | 2009-12-23 | 英特尔公司 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
US7386669B2 (en) | 2005-03-31 | 2008-06-10 | International Business Machines Corporation | System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US7454590B2 (en) * | 2005-09-09 | 2008-11-18 | Sun Microsystems, Inc. | Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores |
US7330958B2 (en) * | 2005-09-22 | 2008-02-12 | International Business Machines Corporation | Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries |
US20080077767A1 (en) * | 2006-09-27 | 2008-03-27 | Khosravi Hormuzd M | Method and apparatus for secure page swapping in virtual memory systems |
US8136124B2 (en) * | 2007-01-18 | 2012-03-13 | Oracle America, Inc. | Method and apparatus for synthesizing hardware counters from performance sampling |
-
2007
- 2007-04-25 CN CNA2007101047433A patent/CN101295265A/zh active Pending
-
2008
- 2008-04-23 US US12/107,835 patent/US8255201B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013139014A1 (en) * | 2012-03-22 | 2013-09-26 | Intel Corporation | Nested emulation and dynamic linking environment |
CN104246695B (zh) * | 2012-03-22 | 2019-05-10 | 英特尔公司 | 嵌套仿真和动态链接环境 |
US10761867B2 (en) | 2012-03-22 | 2020-09-01 | Intel Corporation | Nested emulation and dynamic linking environment |
CN107851008A (zh) * | 2015-07-14 | 2018-03-27 | 密克罗奇普技术公司 | 在具有有限存储器寻址的现存微处理器架构中用于增大数据存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
US8255201B2 (en) | 2012-08-28 |
US20080270740A1 (en) | 2008-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101295265A (zh) | 全***isa仿真***及其识别进程的方法 | |
US6820255B2 (en) | Method for fast execution of translated binary code utilizing database cache for low-level code correspondence | |
KR100866627B1 (ko) | 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 | |
CN102841865B (zh) | 高性能缓存***和方法 | |
US10146545B2 (en) | Translation address cache for a microprocessor | |
US10534612B2 (en) | Hybrid polymorphic inline cache and branch target buffer prediction units for indirect branch prediction for emulation environments | |
US20040064810A1 (en) | Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions | |
CN101299192B (zh) | 一种非对齐访存的处理方法 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
US6430675B1 (en) | Hardware system for fetching mapped branch target instructions of optimized code placed into a trace memory | |
CN105701033A (zh) | 取决于模式而可动态配置以选择一或多个组的多模式组相联高速缓存存储器 | |
CN103207772B (zh) | 一种优化实时任务wcet的指令预取内容选取方法 | |
US20110153308A1 (en) | Virtualization apparatus and processing method thereof | |
CN103955354B (zh) | 重定位方法和装置 | |
CN104239237A (zh) | 一种tlb管理方法及装置 | |
US20060288188A1 (en) | Translating a string operation | |
CN111625279A (zh) | 基于动态链接库的动静融合二进制翻译方法及*** | |
CN105608214A (zh) | 对布控车牌号码进行快速搜索的方法 | |
CN103176914A (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
CN102662726A (zh) | 虚拟机的模拟方法和计算机设备 | |
CN101963907A (zh) | 一种计算机程序热点的动态剖析机制 | |
CN102662631A (zh) | 间接分支指令处理方法和装置 | |
KR101237746B1 (ko) | 데이터 백업 장치 및 방법 | |
CN104239236A (zh) | 旁路转换缓冲缺失的处理方法及旁路转换缓冲 | |
KR100936401B1 (ko) | 자바 바이트코드 변환방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20081029 |