[发明专利]用以提高仿真器性能的虚拟代码的选择性预编译无效
申请号: | 200680024664.5 | 申请日: | 2006-06-30 |
公开(公告)号: | CN101238438A | 公开(公告)日: | 2008-08-06 |
发明(设计)人: | V·谭 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海专利商标事务所有限公司 | 代理人: | 顾嘉运 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用以 提高 仿真器 性能 虚拟 代码 选择性 预编 | ||
发明领域
本发明一般涉及软件仿真领域,尤其涉及虚拟代码的选择性预编译和内联。
发明技术
当诸如视频游戏的软件应用程序被编译时,它通常被转换成虚拟代码,诸如提供对应用程序的描述以及该应用程序如何来运行的指令的中间仿真二进制码。软件仿真器在应用程序被执行之前的某个时刻对软件应用程序的中间二进制码执行二进制翻译。二进制翻译指将中间二进制码转换成专用于将执行该代码的处理器类型的机器可执行二进制码的过程。然后,可执行二进制码准备好由针对其已进行格式化的处理器来执行。
一种这样的二进制翻译方法称为“及时(just-in-time)”(“JIT”)二进制翻译,由其名字所暗示,它是恰好在代码被执行之前进行的软件代码的二进制翻译。结果,可在各种处理器和计算平台上使用特定中间二进制码,因为成功运行代码所需进行的处理器专用改变不会发生直至恰好在执行之前。JIT翻译还提供了相对快速的加载和引导时间,因为在启动期间不进行二进制翻译。
遗憾的是,在运行时,JIT翻译可对代码的执行产生不利影响。例如,针对代码内的大多数平均复杂的图形函数,典型的游戏系统可能在运行时执行JIT翻译而不对代码的执行产生不利影响(即,不影响图形渲染)。然而,如果遇到特别复杂的图形函数-诸如涉及大段人工智能(“AI”)的图形函数-则可能不存在足以可用于执行函数翻译和代码执行的处理器资源。因此,在回放期间,用户可能注意到代码执行中如明显的“闪烁”或“结巴(stutter)”的瞬间暂停。随着程序设计员坚持不懈地为图形逼真度而努力,这些延迟变得越来越令人不快。
另一种翻译方法涉及软件预编译器的使用。预编译器对表示执行之前的软件应用程序代码的整个静态中间二进制码执行二进制翻译。通常在启动过程期间软件被加载时(在“加载时间”)进行翻译。虽然预编译器的使用提供了运行时较快速、无中断的执行,但是当预编译器执行二进制翻译时的初始加载时间被延长。因而,用户可能体验过度长的系统引导时间,因此,通常不对较大的程序使用预编译器。
在运行时存在与执行机器可执行二进制码中的相对较简单的函数相关的另一问题。例如,许多函数涉及从代码主体到子例程的调用。对子例程的调用以及从该子例程的返回(称为“上下文切换”)需要处理时间。对于大多数函数,上下文切换所需的处理时间与执行函数本身所需的处理时间相比可被忽略。然而,如果函数非常小,则上下文切换所需的处理时间可能在函数所需的总执行时间中占据相当大的百分比。结果,这种函数作为子例程的执行的效率比如果简单地在代码的主体内执行该函数要低。此低效率由于被上下文切换占据了过多的处理时间的,可对JIT翻译以及代码执行的性能产生不利影响。虽然执行这样的函数作为子例程可能是低效率的,但是这种函数通常充当软件开发者的便利手段。因而,简单地创建所有这些函数均位于其主体中的代码并非所期望的。
因此,需要一种克服了上述缺点和缺陷的机制。本发明满足了这种需要。
发明概述
鉴于上述缺点和缺陷,提供了一种方法和计算机可读介质,它们对仿真二进制码执行预引导扫描以检测高于预定复杂度阈值的函数。然后,在启动过程期间,预编译检测到的函数。预引导扫描还可检测低于第二预定复杂度阈值的函数。可将检测到的函数与代码主体内联放置。然后,可在运行时执行及时翻译,其中预编译函数可被直接执行而无需进一步翻译,并且可执行移入内联的任何函数而无需上下文切换。
附图的简要描述
图1是其中可实现本发明的方面的示例计算环境;
图2是示出了根据本发明的实施例的示例方法的流程图;
图3是示出了根据本发明的实施例的示例代码流程的框图;以及
图4A-B是示出了根据本发明的实施例的代码流程的示例更改的框图。
示例性实施例的详细描述
按照以满足法规要求的特征来描述本发明的主题。然而,描述本身并非旨在限制本专利的范围。相反,发明人构想所要求保护的主题还可以其它方式来体现,以包括连同其它现有或将来技术的不同步骤或类似于本文献中所述的要素。此外,尽管这里可使用术语“步骤”来意味着所用方法的不同方面,但是该术语不应当被解释为隐含本文所公开的各种步骤之中或之间的任何特定次序,除非或除明确描述了各个步骤的次序之外。
示例计算环境
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200680024664.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用火山碎屑岩及其风化物制造肥料的方法
- 下一篇:一种立式浓密机