当前位置: 首页 > 专利查询>微软公司专利>正文

在运行时处绑定可执行代码制造技术

技术编号:9741981 阅读:134 留言:0更新日期:2014-03-07 05:07
本发明专利技术涉及用于在运行时处绑定可执行代码的方法、系统和计算机程序产品。本发明专利技术的实施例包括对代码指定方面的后绑定以改善执行性能。运行时基于运行时信息动态地绑定较低级代码以优化较高级算法的执行。对执行性能有必要(例如,较高)影响的较高级算法的方面可以是后绑定的目标。通过使用对具有必要执行性能影响的方面的后绑定可以用最小的运行时间成本实现改善的性能。

【技术实现步骤摘要】
【国外来华专利技术】在运行时处绑定可执行代码背景1.背景和相关技术计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。一种用于生成可执行代码的机制是编译。在编译时,编译器接收以较高级编程语言编写的算法的源码级描述。编译器的任务在于从源码级描述生成用于目标环境的可执行代码。在运行时处,可执行代码在目标环境中运行。通常,在编译时仅有与算法输入有关的部分粗略信息可用。由此,编译器无法作出与算法输入的许多方面(诸如,举例而言,输入的大小)有关的任何假设。如此,编译器通常生成能够在运行时处处理所有可能输入的可执行代码。遗憾地是,所编译的可执行代码的生成是以非最优的性能为代价的。例如,在执行期间,一些执行的指令对于指定输入而言可能是冗余的,并且可能消耗比处理特定输入所需的更多的系统资源(诸如存储器和寄存器)。用于执行代码的另一机制是解释。解释器接收以较高级编程语言编写的算法并且解释该算法以供直接执行。经解释的语言可在某种程度上处理经编译的代码的非最优性能。但是,每次运行都重新解释该算法的影响常常会超过生成更优化代码的好处。即时(JIT)编译技术包括从编译器输出的中间代码到目标机器可执行代码的运行时转换。作为此运行时转换(或即时编译)的一部分,可以使用各种优化来生成并执行针对执行期间观察到的特定输入的更高效的执行代码。然而,基于JIT的系统在运行时编译全部代码,从而会付出较大的运行时开销或转换。简要概沭本专利技术涉及用于在运行时绑定可执行代码的方法、系统和计算机程序产品。本专利技术的实施例包括供编译器和运行时进行互操作以基于运行时信息来实现改善的代码性能的各种机制。较高级源代码的语句和表达式被访问。检测到较高级源代码包括至少一个指定方面,针对该方面,相应的代表性较低级指令的执行效率基于执行期间接收到的输入数据的配置变化到必要的程度。所访问的较高级源代码的语句和表达式被编译成较低级代码的代表性较低级指令。编译包括为该至少一个指定方面编译多个不同的代表性较低级指令。多个不同的代表性较低级指令中的每一个被配置成正确地实现该至少一个指定方面的意图。多个不同的代表性较低级指令中的至少一个代表性较低级指令基于接收到的输入数据的不同配置针对执行效率被优化。较低级指令的执行在运行时处被配置。分析将被提供到较高级源代码的至少一个指定方面的输入数据的配置。确定为执行而基于所提供的输入数据的配置来优化选自多个不同的代表性较低级指令的指定的代表性较低级指令。指定的较低级指令被绑定到可执行代码以实现较高级源代码的至少一个指定方面的意图。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。在随后的描述中阐述,并且部分地将从本说明书中显而易见,或可以通过本专利技术的实施来获知。本专利技术的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本专利技术的这些以及其他特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本专利技术的实践而获知。附图简沭为了描述可以获得本专利技术的上文所列举的及其他优点和特征的方式,将通过参考附图中所示的本专利技术的各具体实施例来呈现上文简要描述的本专利技术的更具体的描述。可以理解,这些附图仅描述本专利技术的典型实施例,从而不被认为是对其范围的限制,本专利技术将通过使用附图用附加特征和细节来描述和说明,在附图中:图1A示出了促成在运行时处绑定可执行代码的示例计算机架构。图1B示出使用较低级代码的多个版本来在运行时处绑定可执行代码。图1C示出使用抽象接口来在运行时处绑定可执行代码。图2示出了用于在运行时处绑定可执行代码的示例方法的流程图。详细描沭本专利技术涉及用于在运行时绑定可执行代码的方法、系统和计算机程序产品。本专利技术的实施例包括供编译器和运行时进行互操作以基于运行时信息来实现改善的代码性能的各种机制。较高级源代码的语句和表达式被访问。检测到较高级源代码包括至少一个指定方面,针对该指定方面,相应的代表性较低级指令的执行效率基于执行期间接收到的输入数据的配置变化到必要的程度。所访问的较高级源代码的语句和表达式被编译成较低级代码的代表性较低级指令。编译包括为该至少一个指定方面编译多个不同的代表性较低级指令。多个不同的代表性较低级指令中的每一个被配置以正确地实现该至少一个指定方面的意图。多个不同的代表性较低级指令中的至少一个代表性较低级指令基于接收到的输入数据的不同配置针对执行效率被优化。较低级指令的执行在运行时处被配置。分析将被提供到较高级源代码的至少一个指定方面的输入数据的配置。确定为执行而基于所提供的输入数据的配置来优化选自多个不同的代表性较低级指令的指定的代表性较低级指令。指定的较低级指令被绑定到可执行代码以实现较高级源代码的至少一个指定方面的意图。本专利技术的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本专利技术范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本专利技术的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(SSD )(如基于RAM)、闪存、相变存储器(PCM)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输本文档来自技高网...

【技术保护点】
一种在计算机系统处用于在运行时处绑定代码以改善性能的方法,所述计算机系统包括处理器和系统存储器,所述计算机系统还包括编译器和运行时,所述编译器被配置成把较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令,所述运行时被配置成执行可执行代码,所述方法包括:访问较高级源代码的语句和表达式的动作;检测到较高级源代码包括至少一个指定方面的动作,针对所述指定方面,相应的代表性较低级指令的执行效率基于执行期间接收到的输入数据的配置变化到必要的程度;把所访问的较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令的动作,包括:针对所述至少一个指定方面编译多个不同的代表性较低级指令的动作,所述多个不同的代表性较低级指令中的每一个被配置成正确地实现所述至少一个指定方面的意图,所述多个不同的代表性较低级指令中的至少一个基于接收到的输入数据的不同配置针对执行效率被进行优化;配置所述较低级指令在运行时的执行的动作,包括:分析将被提供到所述较高级源代码的所述至少一个指定方面的输入数据的配置的动作;确定为执行而基于所提供的输入数据的配置来优化选自多个不同的代表性较低级指令的指定的代表性较低级指令的动作;以及把所述指定的较低级指令绑定到可执行代码以实现所述较高级源代码的所述至少一个指定方面的意图的动作。...

【技术特征摘要】
【国外来华专利技术】2011.06.10 US 13/158,2261.一种在计算机系统处用于在运行时处绑定代码以改善性能的方法,所述计算机系统包括处理器和系统存储器,所述计算机系统还包括编译器和运行时,所述编译器被配置成把较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令,所述运行时被配置成执行可执行代码,所述方法包括: 访问较高级源代码的语句和表达式的动作; 检测到较高级源代码包括至少一个指定方面的动作,针对所述指定方面,相应的代表性较低级指令的执行效率基于执行期间接收到的输入数据的配置变化到必要的程度; 把所访问的较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令的动作,包括: 针对所述至少一个指定方面编译多个不同的代表性较低级指令的动作,所述多个不同的代表性较低级指令中的每一个被配置成正确地实现所述至少一个指定方面的意图,所述多个不同的代表性较低级指令中的至少一个基于接收到的输入数据的不同配置针对执行效率被进行优化; 配置所述较低级指令在运行时的执行的动作,包括: 分析将被提供到所述较高级源代码的所述至少一个指定方面的输入数据的配置的动作; 确定为执行而基于所提供的输入数据的配置来优化选自多个不同的代表性较低级指令的指定的代表性较低级指令的动作;以及 把所述指定的较低级指令绑定到可执行代码以实现所述较高级源代码的所述至少一个指定方面的意图的动作 。2.如权利要求1所述的方法,其特征在于,针对所述至少一个指定方面编译多个不同的代表性较低级指令的动作包括: 编译代表性较低级指令的一个版本的动作,为了在运行时处与不使用缓冲器混叠的输入数据一起使用而优化所述代表性较低级指令的一个版本;以及 编译代表性较低级指令的另一个版本的动作,所述代表性较低级指令的另一个版本用于在运行时处与使用缓冲器混叠的输入数据一起使用。3.如权利要求2所述的方法,其特征在于,其中分析将被提供到所述较高级源代码的所述至少一个指定方面的输入数据的配置的动作包括确定所述输入数据不使用缓冲器混叠的动作;并且 其中把所述指定的较低级指令绑定到可执行代码以实现所述较高级源代码的所述至少一个指定方面的意图的动作包括在运行时处把所述代表性较低级指令的一个版本绑定到可执行代码的动作。4.如权利要求1所述的方法,其特征在于,其中针对所述至少一个指定方面编译多个不同的代表性较低级指令的动作包括: 编译抽象接口以表示所述至少一个指定方面的动作;以及 编译可在运行时处动态地链接到所述抽象接口的较低级代码的多个不同部分的动作。5.如权利要求4所述的方法,其特征在于,其中编译抽象接口以表示所述至少一个指定方面的动作包括编译物理到逻辑线程ID映射接口的动作;以及 其中编译可在运行时处动态地链接到所述抽象接口的较低级代码的多个不同部分的动作包括: 为直接的物理到逻辑线程ID映射编译较低级代码的一部分的动作;以及 为更通用的间接的物理到逻辑线程ID映射编译较低级代码的另一部分的动作。6.一种供在计算机系统处使用的计算机程序产品,所述计算系统包括编译器和运行时,所述编译器被配置把较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令,所述运行时被配置执行可执行代码,所述计算机程序产品用于一种用于在运行时处绑定代码以改善性能的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,所述指令在由处理器执行时,使得所述计算机系统执行所述方法,所述方法包括以下: 访问较高级源代码的语句和表达式; 检测到所述较高级源代码包括至少一个指定方面,针对所述指定方面,相应的代表性较低级指令的执行效率基于执行期间接收到的输入数据的配置变化到必要的程度; 把所访问的较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令,包括: 针对至少一个指定方面编译多个不同的代表性较低级指令,所述多个不同的代表性较低级指令中的每一个被配置成正确地实现所述至少一个指定方面的意图,所述多个不同的代表性较低级指令中的每一个基于接收到的输入数据的不同配置针对执行效率被进行优化; 配置所述较低级指令在运行时的执行,包括: 分析将被提供到所述较高级源代码的所述至少一个指定方面的输入数据的配置; 确定为执行而基于所提供的输入数据的配置来优化选自所述多个不同的代表性较低级指令的指定的代表性较低级指令;以及 把所述指定的较低级指令绑定到可执行代码以实现所述较高级源代码的所述至少一个指定方面的意图。7.如权利要求6所述的计算机程序产品,其特征在于,其中在执行时使得所述计算机系统把所访问的较高级源代码的语句和表达式编译成较低级代码的代表性较低级指令的计算机可执行指令包括在执行时使得所述计算机系统把C++代码编译成...

【专利技术属性】
技术研发人员:A·K·阿加瓦尔W·朱Y·莱瓦诺尼
申请(专利权)人:微软公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1