调整计算机程序的动态优化的制作方法

文档序号:6498669阅读:240来源:国知局
调整计算机程序的动态优化的制作方法
【专利摘要】本申请一般地公开了用于在执行期间调整计算机程序的动态优化的技术和实施方式。
【专利说明】调整计算机程序的动态优化

【背景技术】
[0001]除非在本文中另外表明,否则本部分中所描述的方法对于本申请中的权利要求来说不是现有技术并且不由于包括在本部分中而被承认是现有技术。
[0002]对数字信息获得未授权访问权限的机会在持续增长。尤其是当越来越多的计算装置(例如,智能电话、平板电脑、笔记本计算机、桌面计算机、服务器,等)可被第三方访问(例如,通过互联网,等)。此外,云计算技术(例如,共享数据中心、共享计算环境,等)普及性的提高增大了对数字信息未授权访问的机会。一方可以使用各种技术来获得对数字信息的未授权访问。一种被称为“侧信道攻击(side channel attack) ”的技术可以从与过程(例如,计算机程序,等)相关的参数提取数字信息。侧信道攻击可被用来访问数字信息、破解加密系统,等。
[0003]通常,侧信道攻击可依赖于与目标过程的并置(collocating)。侧信道攻击然后可以使用间接的手段促进访问(例如,读取、观看,等)与目标过程相关的信息(例如,存储器地址、加密密钥,等)。更具体地说,侧信道攻击可以识别目标过程的执行(例如,通过存储器块可用性观察、通过CPU核限流观察、通过存储器高速缓存观察,等)。然后,与目标过程相关的活动可以从系统被提取。经常,可使用用于识别目标过程的类似技术来提取相关的活动。此外,与计算环境相关的已知特性(例如,时序、资源使用率、CPU指令集,等)也可被用来提取与目标过程相关的活动。
[0004]针对侧信道攻击的传统对策可能涉及将复杂的数学计算添加至目标过程、对“假”数据执行重复的计算,等等。然而,如可以认识到的,这些对策可能需要对目标过程的源代码的更改,可能增加计算开销,等等。


【发明内容】

[0005]在本文中详细说明了用于在执行期间调整计算机程序的动态优化的各种说明性方法。示例方法可包括:接收机器可执行指令的中间表示(IR),对所接收的IR执行优化以生成中间被优化的IR的一个或多个,所述一个或多个中间被优化的IR在比完全被优化的IR的百分比低的预定的百分比的范围内,以及在所述机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个。
[0006]本公开还描述了其中存储有指令的各种示例机器可读非暂态介质,所述指令在被执行时使装置在执行期间调整计算机程序的动态优化。示例机器可读非暂态介质可具有存储在其中的指令,所述指令在被一个或多个处理器执行时可操作地使得编程翻译模块:接收机器可执行指令的中间表示(IR),对所接收的IR执行优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定的百分t匕,以及在机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个。
[0007]本公开此外还描述了示例系统。示例系统可包括处理器、可通信地耦合到所述处理器的程序翻译模块、以及具有存储于其中的指令的机器可读介质,所述指令在被所述处理器执行时可操作地使得所述程序翻译模块:接收机器可执行指令的中间表示(IR),对所接收的IR执行优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定的百分比,以及在机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个。
[0008]前述概要仅仅是说明性的,并且不意图以任何方式是限制性的。除了说明性的方面,上述实施例和特征、另外的方面、实施例和特征将通过参考附图和下面的详细描述而变得显而易见。

【专利附图】

【附图说明】
[0009]在本说明书的结尾部分中特别地指出并清楚地要求保护主题。
[0010]根据结合附图进行的以下描述和随附权利要求,本公开的前述和其它特征将变得更加完全地显而易见。理解这些附图仅示出根据本公开的若干实施例,并且因此不应当被认为是其范围的限制。将通过使用附图来以附加的特征和细节描述本公开。
[0011]在附图中:
[0012]图1是示例“即时”(JIT)编译环境的框图;
[0013]图2是用于调整计算机程序的动态优化的示例方法的流程图;
[0014]图3是不例计算机程序广品;以及
[0015]图4是全部根据本公开的至少某些实施例布置的示例计算装置的框图。

【具体实施方式】
[0016]以下描述阐明各种示例以及特定细节,以提供对要求保护的主题的彻底的理解。然而,本领域技术人员将理解的是,可能在没有本文中所公开的特定细节中的一些或更多的情况下实现要求保护的主题。另外,在一些环境中,没有对众所周知的方法、过程、部件和/或电路进行详细描述,以免不必要地模糊要求保护的主题。
[0017]在以下详细描述中,对附图进行参考,所述附图形成详细描述的一部分。除非上下文另外指示,否则在附图中,相似的符号通常标识相似的部件。在详细描述、附图和权利要求中描述的说明性实施例并不意味着是限制性的。可以利用其它实施例以及可以进行其它改变,而不脱离本文所提供的主题的精神或范围。将易于理解的是,如在本文中一般地描述的和在图中示出的那样,本公开的各方面可以以广泛多样的不同配置被布置、替代、组合和设计,所有这些都被明确地构想并成为本公开的一部分。
[0018]除其它之外,本公开被吸引至与在执行期间调整计算机程序的动态优化有关的方法、装置、系统和计算机可读介质。
[0019]如上面所表示的,信息(例如,数字数据、加密信息,等)可能易受侧信道攻击。在日益增多地共享计算资源(例如,共享数据中心、共享计算环境,等)时尤其是这样。例如,一方可以通过从共享计算环境间接地提取信息(例如,利用如上面所介绍的侧信道攻击)来访问与在相同的共享计算环境中执行的另一方的计算过程相关的信息。
[0020]总的来说,本公开的各种实施例可随着计算机程序的执行动态地修改计算机程序的部分(例如,体系结构、存储器使用、执行策略,等)。这样,可能增大使间接信息(例如,存储器使用、处理器负载、高速缓存访问等)关联到与计算机程序相关信息的难度。因此,计算机程序对侧信道攻击的抵抗力也可被增强。为了提供对侧信道攻击的抵抗力,可以实施本公开的各种实施例(例如,通过共享计算环境供应商、计算机程序、安全系统、加密系统,等等)。应认识到的是,本公开的各种实施例的益处可以是对侧信道攻击的抵抗力。因此,虽然对侧信道攻击的抵抗力可能贯穿本公开全文被提到,但它不是对本文中详细说明的各种实施例的要求。
[0021]如上面所表示的,本公开的各种实施例可包括在执行期间修改计算机程序。例如,本公开的一些实施例可结合即时(JIT)编译环境被实施。因此,JIT编译环境可被配置为在执行期间动态地修改计算机程序。更具体地说,通过示例而不是限制的方式,JIT编译环境可被配置为在计算机程序的运行期编译过程中所使用的各种优化策略之间进行调整。因此,计算机程序的特性(例如,存储和计算之间的资源分配、存储器位置、循环分支,等)可被修改。
[0022]如将被认识到的,这些修改可增大使用侧信道攻击识别和访问信息的难度。经由其它的示例(同样不是限制的方式),云计算供应商可实施如上面详细说明的JIT编译环境。因此,云计算供应商可向其客户提供增强侧信道攻击抵抗力的可能。此外,这种好处不会要求客户必须修改他们的计算机程序以与云计算供应商的JIT编译环境兼容。
[0023]此外,本公开的各种实施例可以在用户(例如,客户,等)不知晓的情况下被实施(例如,通过云计算供应商,等)。此外,在各种优化策略之间进行调整的影响可以被调整,例如通过改变允许的效率水平。这样,可以连同提供上面详细说明的增强的侧信道抵抗力的好处一起提供各种服务水平(例如,安全策略、成本结构、计算效率,等)。
[0024]虽然使用JIT编译环境来说明本文中被详细说明的各种实施例,但一些实施例可使用其他编译技术来实施。例如,可以使用解释编译环境来实施本公开的至少一些实施例。另外,可以使用静态编译环境来实施本公开的至少一些实施例。
[0025]图1示出根据本公开的至少某些实施例布置的示例JIT编译环境100。JIT编辑环境100可用来促进计算装置(未示出)对软件程序(未示出)的执行。如将被认识到的,软件程序可能通常需要被翻译(例如,编译,等)成指令(例如,机器代码,等),所述指令可被它们最终将在其上运行的计算装置执行。JIT编译环境100可允许软件程序的至少一部分在运行期、也就是说当程序正在计算装置上执行时被翻译。因此,JIT编译环境100可包括源编译器110和运行期环境120。
[0026]通常,源编译器110可生成源代码114的中间表示(IR) 112。随后,运行期环境120可通过使用IR 112来促进计算装置对软件程序的执行。源代码114可以是用于计算机程序的任何合适的源代码文件,源编译器110能够将其翻译成IR 112。此外,各种语言(例如,Java、C#、C++、Ruby、Python、Javascript、Dart 等)可被用来表示源代码 114。
[0027]IR 112有时被称为“字节码”、“对象文件”或“稀疏二进制(thin binary)”,且可以不是“机器代码”。更具体地说,IR 112可以不是可由计算装置本地执行的。然而,如将被认识到的,IR 112在计算机体系结构之中可以是可移植的。也就是说,IR 112可以不专用于特定类型(例如,处理器体系结构、操作系统、存储器地址大小,等)的计算机。因此,IR 112可与适当的运行期环境120—起被用来在各种不同的计算装置上执行软件程序。如将被认识到的,在一些实施例的情况下,JIT编译环境100可被实施在单个计算装置(例如,台式计算机、服务器、虚拟机,等)上。此外,在一些实施例的情况下,JIT编译环境100的各部分可被实施在多个计算装置上。例如,运行期环境120可在一个计算装置上被实施,而编译器110、IR 112和源代码114可在另一计算装置上被实施。
[0028]如将被认识到的,源代码114可定义结合图1被提到的软件程序。因此,IR 112也可定义软件程序。如将进一步被认识到的,使运行期环境120使用IR 112执行软件程序的好处是,使得开发人员不需要分发源代码114或可替换地分发不同计算机架构和操作系统特定的多个可执行文件。例如,软件开发人员可使用源编译器110来生成IR 114,然后将其分发。然后,具有适当的运行期环境120的任何人可以执行该软件程序。因此,在本公开的一些实施例的情况下,可提供使用源代码114的运行期环境。此外,在本公开的一些实施例的情况下,可提供仅仅运行期环境120和IR 112。
[0029]运行期环境120可包括运行期编译器121、分析器122、优化器123和优化调整器124。通常,运行期编译器121可生成可执行文件125,然后分析器122可对其进行剖析。优化器123可根据该剖析生成被优化的IR 126的集合,优化调整器124可在运行期环境120的操作期间在被优化的IR 126之间进行切换。更具体地说,优化调整器124可使运行期环境120在软件程序的执行期间使用不同的被优化的IR 126。
[0030]如所陈述的,运行期编译器121可从IR 112生成可执行文件125 (例如,机器代码,等)。计算装置(例如,运行期环境120正运行于其上,与运行期环境120正运行于其上的计算装置通信的计算装置,等)然后可使用该可执行文件125执行该软件程序。运行期编译器121可在软件程序正执行时生成可执行文件125。此外,运行期编译器121可在操作中的任何特定时间生成可执行文件125的子集。例如,运行期编译器121可以仅将IR112的执行软件程序的期望部分所必要的部分翻译成可执行文件125。在一些实施方式中,运行期环境120可将可执行文件125存入高速缓存以供稍后再利用。
[0031]分析器122可收集有关可执行文件125在运行期环境120中正在怎样执行的统计资料(例如,存储器使用、函数执行频率、函数执行持续时间、指令使用频率,等)。优化器123然后可根据所收集的统计资料优化(例如,内联库函数、将哈希表格从正被计算移动至正被存储在存储器中、使循环反转、使循环倾斜(skew),等)IR 112(或IR 112的一部分)。更特别地,优化器123可生成优化(例如,编译设置、编译策略,等),在从IR 112生成可执行文件125时所述优化可被运行期编译器121使用。虽然在本文中提到了“优化IR 112”、“生成中间优化的IR”或类似短语,但应当认识到的是,在一些实施例的情况下,可通过调整用于将IR 112编译成可执行文件125的设置来优化IR 112。
[0032]如将认识到的,编译、剖析和优化循环可以是动态的。也就是说,其可在运行期环境120正在运行时操作。例如,运行期编译器121可从IR 112编译一些可执行文件125。随后,分析器122可收集关于可执行文件125的执行的统计资料。之后,优化器123可根据所收集的统计资料生成用于IR 112的优化。运行期编译器121然后可根据所生成的优化重新编译IR 112。运行期环境120可再次将可执行文件125存入高速缓存以供稍后使用。
[0033]在本公开的各种实施例的情况下,优化器123可存储多个中间被优化的IR 126。更特别地,优化器123可存储用于IR 112的多个可供选择的优化,在下文中被称为“中间被优化的IR” 126。例如,在没有限制的情况下,优化器123可使用两个不同的优化策略(例如,根据相同的编译器的不同版本,支持不同优化技术,为各种系统资源设置不同的有效优化成本,限制算法类型的选择,随机地将IR优化到比完全优化低的预定的百分比,等)生成用于IR 112的优化,并且然后将各种优化策略存储作为被优化的IR 126。
[0034]如所陈述的,在本公开的一些实施例的情况下,被优化的IR的126可被优化至比完全的被优化低一定程度(例如,百分比、性能量度、多个优化,多个编译设置,等)。应当认识到的是,虽然被优化的IR 126在本文中被称为是低于完全的被优化,但其性能可以低于、基本上等于或高于完全被优化的IR(例如,使用“理想的”优化被编译的IR,等)的性能。更具体地说,被优化的IR 126可被优化至不同的最佳点。例如,被优化的IR 126可对应于其中用于每个被优化的IR 126的存储器块大小都不同的编译设置。
[0035]在一些实施例的情况下,用于每个被优化的IR 126的优化点(例如,优化等级,等)可以基于资源使用(例如,最大可允许资源使用,等)或安全等级(例如,根据威胁等级、部署地点安全性,等)。此外,优化器123可基于群体标准(populat1n criteria)例如,(替换物的最小数量、最低群体特征差积(populat1n signature difference product),等)确定所要产生的被优化的IR 126的数量。
[0036]在本公开的一些实施例中,优化器123可通过改变(例如,随机地、周期性地,按照计划,等)优化拟合函数(例如,调整处理资源的成本,调整存储器使用的成本,等)来确定用于每个被优化的IR 126的优化点。
[0037]在本公开的一些实施例的情况下,可根据来自分析器122的信息随着时间的流逝确定不同的最佳点。例如,优化器123可利用人工智能技术(例如,使用机器学习、模糊逻辑,等)来确定满足特定标准(例如,性能量度、其他优化点之间的区别,等)的各种优化点,其然后可被用来生成被优化的IR 126。
[0038]在一些实施例中,优化器123可使用技术的组合(例如,指定标准、拟合函数的改变、随着时间进行学习,等)生成被优化的IR 126。
[0039]如上面所表示的,在各种实施例中,优化器123可生成被优化的IR 126。此外,如所陈述的,在一些实施例中,该过程是动态的。也就是说,优化器123可在IR 112正在使用运行期环境120运行时根据分析器122生成的信息重复地生成被优化的IR 126。在一些实施例例如运行期环境120第一次针对特定IR(例如,IR 112)被运行的情况下,可在通过运行期编译器121生成可执行文件之前创建被优化的IR 126。
[0040]优化调整器124然后可以调整(例如,随机地、周期性地、根据操作特征,等)运行期编译器121使用被优化的IR 126中的哪个来编译(或重新编译)可执行文件125。例如,如果用于被优化的IR 126的操作特征(例如,根据哈希,等)是明显不同的,那么优化调整器124可以比操作特征轻微不同的情况更慢地在被优化的IR 126之间进行切换。此夕卜,优化调整器124可根据安全等级使能和禁止在被优化的IR 126之间的调整。例如,如果在计算装置(例如,计算机、服务器、虚拟机、分布式计算节点,等)上执行的所有过程都是友好的(例如,被同一实体拥有、被授予“安全”证书,等),则优化调整器124可禁止在被优化的IR 126之间进行调整。
[0041]图2示出根据所公开的主题的至少一些实施例布置的用于在执行期间调整计算机程序的动态优化的示例方法的流程图。在一些描述部分中,参考图1中示出的JIT编译环境100的元件描述了该方法的说明性实施方式。然而,所描述的实施例不限于该描述。更具体地说,图1中所示的一些元件可从在本文中被详细说明的方法的一些实施方式中被省略。此外,未在图1中示出的其他元件可被用来实施在本文中被详细说明的示例方法。
[0042]此外,图2采用框图来示出在本文中被详细说明的示例方法。这些框图可陈述可能被描述作为处理步骤、功能操作、事件和/或动作等并且可被硬件、软件和/或固件执行的各种功能块或动作。可在各种实施方式中实现对被详细说明的功能块的很多替换。例如,可以采用未在图中示出的干预动作和/或未在图中示出的附加动作,和/或可以删除在图中示出的动作中的一些。在一些示例中,在一个图中示出的动作可使用针对另一图所讨论的技术被操作。此外,在一些示例中,在这些图中示出的动作可使用并行处理技术被操作。可进行上述描述以及未被描述的其它重新布置、替代、改变、更改等,而不锅里要求保护的主题的范围。
[0043]图2示出用于在执行期间调整计算机程序的动态优化的示例方法200。以块210(“接收机器可执行指令的中间表示(IR)”)为开始,运行期环境120可包括被配置为接收机器可执行指令的中间表示(IR)的逻辑和/或特征。通常,在块210,优化器123可以接收IR 112。例如,优化器123可通过从IR 112被存储的存储位置访问IR 112来接收IR112。另外,优化器123可通过例如从IR 112被存储的服务器下载IR 112来接收IR 112。另外,优化器123可从已从源114生成了 IR 112的、位于相同环境中的编译器110接收IR112。
[0044]从块210继续至块220 ( “对所接收的IR执行优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR低的预定的百分比”),优化器123可包括被配置为对所接收的IR执行优化以生成中间被优化的IR的逻辑和/或特征。通常,在块220,优化器123可将一个或多个不同的优化应用到IR 112 ;因此,将生成一个或多个被优化的IR 126。如上面所表示的,在一些实施例中,被优化的IR 126对应于不同的优化点(例如,不同的编译策略,等)。例如,被优化的IR 126可能是使用仅仅一定百分比的可用优化被优化的。此外,被优化的IR 126可使用不同的优化策略被优化(例如,根据相同编译器的不同版本,支持不同的优化技术,将IR随机地优化到低于完全优化的预定百分比,等)。此外,被优化的IR 126可使用不同的优化拟合函数被优化。然而,如上面详细说明的,被优化的IR 126可以不一定具有比使用理想条件优化的IR 112更低的性能特性。
[0045]从块220继续至块230 (“在机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个”),优化调整器124可包括被配置为调整运行期编译器121使用哪个被优化的IR 126来生成可执行文件125的逻辑和/或特征。通常,优化调整器124可以调整(例如,随机地、周期性地、根据操作特征,根据事件,等)运行期编译器121使用被优化的IR 126中的哪个来重新编译可执行文件125。例如,如果用于被优化的IR 126的操作特征(例如,根据哈希,等)是明显不同的,那么优化调整器124可以比操作特征轻微不同的情况更慢地在被优化的IR 126之间进行切换。
[0046]通常,针对图2且在本文中的其它地方所述的方法可被实施作为可在任何合适的计算系统上执行的计算机程序产品等。例如,可以提供用于调整计算机程序的动态优化的计算机程序产品。示例计算机程序产品针对图3且在本文中其它地方被描述。
[0047]图3示出根据本公开的至少某些实施例布置的示例计算机程序产品300。计算机程序产品300可包括具有存储于其中的指令的机器可读非暂态介质,所述指令在被执行时使机器根据本文中所讨论的过程和方法调整计算机程序的动态优化。计算机程序产品300可包括信号承载介质302。信号承载介质302可包括一个或多个机器可读指令304,所述机器可读指令304在被一个或多个处理器执行时可以可操作地使得计算装置能够提供本文中所描述的功能。在各种示例,一些或所有机器可读指令可被本文中所讨论的装置使用。
[0048]在一些示例中,机器可读指令304可包括接收机器可执行指令的中间表示(IR)。在一些示例中,机器可读指令304可包括:执行对所接收的IR的优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定的百分比。在一些示例中,机器可读指令304可包括在机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个。在一些示例中,机器可读指令304可包括存储所述一个或多个中间被优化的IR。在一些示例中,机器可读指令304可包括在动态运行期编译器处接收所述IR。在一些示例中,机器可读指令304可包括在即时(JIT)编译器处接收所述IR。在一些示例中,机器可读指令304可包括接收字节码。在一些示例中,机器可读指令304可包括接收虚拟机型指令。在一些示例中,机器可读指令304可包括以随机方式利用所述一个或多个中间被优化的IR中的至少一个。在一些示例中,机器可读指令304可包括以随机时间或者事件相关的方式利用所述一个或多个中间被优化的IR中的至少一个。在一些示例中,机器可读指令304可包括以随机方式调整所述预定百分比。
[0049]在一些实施方式中,信号承载介质302可涵盖计算机可读介质306,诸如但不限于:硬盘驱动器、压缩盘(CD)、数字通用盘(DVD)、数字磁带、存储器等等。在一些实施方式中,信号承载介质302可涵盖可记录介质308,诸如但不限于:存储器、读/写(R/W)⑶、R/WDVD等等。在一些实施方式中,信号承载介质302可涵盖通信介质310,诸如但不限于:数字和/或模拟通信介质(例如光纤线缆、波导、有线通信链路、无线通信链路等等)。在一些示例中,信号承载介质302可涵盖机器可读非暂态介质。
[0050]通常,针对图2且在本文中的其它地方所述的方法可被实施在任何合适的服务器和/或计算系统中。可针对图4且在本文中其它地方描述示例系统。在一些示例中,资源、数据中心、数据群集、云计算环境或本文中所讨论的其他系统可被实施在多个物理地点或位置上。通常,计算机系统可被配置为调整计算机程序的动态优化。
[0051]图4是示出根据本公开的至少某些实施例布置的示例计算装置400的框图。在各种示例中,计算装置400可被配置为如本文中所讨论的那样调整计算机程序的动态优化。在各种示例中,计算装置400可被配置为如本文中所讨论的那样作为服务器系统或作为工具调整计算机程序的动态优化。在基本配置401的一示例中,计算装置400可包括一个或多个处理器410和系统存储器420。存储器总线430可被用于所述一个或多个处理器410和系统存储器420之间的通信。
[0052]取决于期望的配置,所述一个或多个处理器410可以是任何类型,包括但不限于微处理器(μ P)、微控制器(μ C)、数字信号处理器(DSP)或它们的任何组合。所述一个或多个处理器410可包括一个或多个等级的高速缓存(诸如等级一的高速缓存411和等级二的高速缓存412)、处理器核413和寄存器414。示例处理器核413可包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或它们的任何组合。存储器控制器415也可与所述一个或多个处理器410 —起被使用,或在一些实施方式中存储器控制器415可以是处理器410的内部部分。
[0053]取决于期望的配置,系统存储器420可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或它们的任何组合。系统存储器420可包括操作系统421、一个或多个应用422以及程序数据424。一个或多个应用422可包括程序翻译模块应用423,程序翻译模块应用423可被布置为执行如本文中所述的功能、动作和/或操作,包括本文中所述的功能块、动作和/或操作。程序数据424可包括供程序翻译模块应用423使用的调整和优化数据425。在一些示例实施例中,所述一个或多个应用422可被布置为利用操作系统421上的程序数据424而运行。该所述的基本配置401在图4中通过虚线内的那些部件而被示出。
[0054]计算装置400可具有其它特征或功能以及用于促进基本配置401和任何所需的装置和接口之间的通信的附加接口。例如,总线/接口控制器440可被用来促进基本配置401与一个或多个数据存储装置450之间经由存储接口总线441的通信。所述一个或多个数据存储装置450可以是可移除存储装置451、不可移除存储装置452或它们的组合。可移除存储装置和不可移除存储装置的示例举几个例子来说包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘装置、诸如压缩盘(⑶)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器。示例计算机存储介质可包括在信息存储的任何方法或技术中被实施的易失性和非易失性、可移除和不可移除的介质,诸如计算机可读指令、数据结构、程序模块或其它数据。
[0055]系统存储器420、可移除存储装置451和不可移除存储装置538都是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、R0M、EEPR0M、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储器装置或可用于存储期望的信息以及可被计算装置400访问的任何其它介质。任何这样的计算机存储介质可以是计算装置400的一部分。
[0056]计算装置400也可包括用于促进从各种接口装置(例如,输出接口、外围接口和通信接口)到基本配置401的经由总线/接口控制器440的通信的接口总线442。示例输出接口 460可包括图形处理单元461和音频处理单元462,其可被配置为与诸如显示器或扬声器的各种外部装置经由一个或多个A/V端口 463进行通信。示例外围接口 470包括串行接口控制器471或并行接口控制器472,其可被配置为与诸如输入装置(例如,键盘、鼠标、笔、声音输入装置,触摸输入装置等)或其它外围装置(例如,打印机、扫描仪等)的外部装置经由一个或多个I/O端口 473进行通信。示例通信接口 480包括网络控制器481,其可被布置为促进与一个或多个其它计算装置483经由一个或多个通信端口 482在网络通信链路上的通信。通信连接是通信介质的一个示例。通信介质通常可以被体现为计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据,并且可包括任何信息递送介质。“调制数据信号”可以是具有其特性集合中的一个或多个或者被更改以便对信号中的信息进行编码的信号。举例来说,而非限制,通信介质可包括诸如有线网络或直接有线连接的有线介质、诸如声学、射频(RF)、红外(IR)和其它无线介质的无线介质。如本文中所使用的术语计算机可读介质可包括存储介质和通信介质两者。
[0057]计算装置400也可被实施作为小型便携式(或移动)电子装置的一部分,所述电子装置诸如蜂窝电话、移动电话、平板装置、膝上型计算机、个人数据助理(PDA)、个人媒体播放器装置、无线网表装置、个人耳机装置、专用装置或包括以上功能中的任何功能的混合装置。计算装置400也可被实施作为包括笔记本计算机和非笔记本计算机配置两者的个人计算机。此外,计算装置400可被实施作为无线基站或者其他无线系统或装置的一部分。
[0058]在对存储在诸如计算机存储器的计算系统存储器内的数据位或二进制数字信号的操作的符号表示或算法方面提供了前面详细说明的描述中的一些部分。这些算法描述或表示是数据处理领域中的普通技术人员用来向本领域其它技术人员传达他们的工作的实质所使用的技术的示例。在这里并且通常算法被认为是导致期望结果的自洽操作序列或类似处理。在本文中,操作或处理涉及对物理量的物理操作。通常地,虽然不一定,这样的量可采取能够被存储、传输、组合、比较或以其它方式被操作的电或磁信号的形式。将这样的信号称为位、数据、值、元素、符号、字符、词语、数字、数值等已证明有时是方便的,尤其是出于常见使用的原因。然而,应当理解的是,所有这些和类似术语都与适当的物理量相关联并且仅仅是方便的标签。除非特别地声明,否则,如从以下讨论中显而易见的,应当理解的是,贯穿整个本说明书,利用诸如“处理”、“计算”、“计算”、“确定”等的词语的讨论指的是对计算装置的存储器、寄存器或其它信息存储装置、传输装置或显示装置内的被表示为物理电子或磁量的数据进行操作或转换的动作或处理。
[0059]要求保护的主题在范围方面并不限于本文中所述的特定实施方式。例如,一些实施方式可以是在硬件中,诸如被用来运行在例如装置或装置的组合上,而其他实施方式可以是在软件和/或固件中。同样,虽然要求保护的主题在范围方面在这方面不被限制,但一些实施方式可包括一个或多个物品,诸如信号承载介质、存储介质和/或多个存储介质。诸如例如CD-ROM、计算机磁盘、闪存等的这种存储介质可具有存储在其上的指令,所述指令在被诸如例如计算系统、计算平台或其他系统的计算装置执行时可导致根据要求保护的主题(诸如例如前面所述的实施方式之一)的处理器的执行。作为一种可能性,计算装置可包括一个或多个处理单元或处理器、诸如显示器、键盘和/或鼠标的一个或多个输入/输出装置以及诸如静态随机存取存储器、动态随机存取存储器、闪存和/或硬盘驱动的一个或多个存储器。
[0060]在系统的各方面的硬件和软件实施方式之间几乎没有差别留下;硬件或软件的使用通常是(但并不总是,因为在某些情景中在硬件和软件之间的选择可能变得重要)代表成本与效率折衷的设计选择。存在本文中所述的过程和/或系统和/或其它技术可借以被实现的各种手段(例如,硬件、软件和/或固件),并且优选的手段将随着其中过程和/或系统和/或其它技术被部署的情景的不同而改变。例如,如果实施者确定速度和准确性是极为重要的,那么实施者可选择主要为硬件和/或固件的手段;如果灵活性是极为重要的,那么实施者可选择主要为软件的实施方式;或者,但同样可替换地,实施者可选择硬件、软件和/或固件的某组合。
[0061]前面的详细描述已经通过使用框图、流程图和/或示例阐述了装置和/或过程的各种实施例。在这样的框图、流程图和/或示例包含一个或多个功能和/或操作的程度上,本领域技术人员将理解的是,这样的框图、流程图或示例内的每个功能和/或操作可通过许多各种不同的硬件、软件、固件或实际上它们的任何组合被单独地和/或集体地实现。在一实施例中,本文中所述的主题的若干部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其他集成形式来实现。然而,本领域技术人员将认识至IJ,本文中所公开的实施例的一些方面作为整体或部分地可被等价地实施在集成电路中,作为在一个或多个计算机上运行的一个或多个计算机程序(例如,作为在一个或多个计算机系统上运行的一个或多个程序),作为在一个或多个处理器上运行的一个或多个程序(例如作为在一个或多个微处理器上运行的一个或多个程序),作为固件,或作为实际上它们的任何组合,并且,设计电路和/或为软件和或固件写代码将是本领域技术人员根据本公开所熟练掌握的技能。此外,本领域技术人员将理解,本文中所述的主题的机制能够作为各种形式的程序产品被分发,并且不管用于实际实现该分发的信号承载介质的特定类型如何本文中所述的主题的说明性实施例都适用。信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器(HDD)、压缩盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路等等)。
[0062]本领域技术人员将理解,以本文中所阐述的方式描述装置和/或过程并且然后使用工程实践将这样描述的装置和/或过程集成到数据处理系统中在本领域中是常见的。也就是说,本文中所述的装置和/或过程的至少一部分可经由合理量的实验被集成到数据处理系统中。本领域技术人员将认识到,典型的数据处理系统通常包括系统单元外壳、视频显示装置、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统、驱动器、图形用户界面和应用程序的计算实体、诸如触摸板或屏的一个或多个交互装置,和/或包括反馈环和控制马达的控制系统(例如,用于感测传动定位系统的位置和/或速率的反馈;用于移动和/或调整部件和/或数量的控制马达)中的一个或多个。典型的数据处理系统可利用任何合适的商业上可获得的部件来实施,诸如在数据计算/通信和/或网络计算/通信系统中常见的那些。
[0063]本文中所述的主题有时示出包含于不同的其它部件中的不同部件,或者与不同的其它部件相连接。应当理解的是,这样示出的架构仅仅是示例性的,并且实际上可以实施实现相同功能的许多其它架构。在概念性意义上,用以实现相同的功能的部件的任何布置是有效地“关联的”以便实现期望的功能。因此,在本文中被组合以实现特定功能的任何两个部件可被视为彼此“相关联”以便实现期望的功能,不管是架构还是中间部件。同样,这样关联的任何两个部件也可被视为是彼此“可操作地相连接”或者“可操作地相耦合”以实现期望的功能,并且能够这样关联的任何两个部件还可被视为是彼此“可操作地可耦合的”以实现期望的功能。可操作地可耦合的特定示例包括但不限于物理上可连接和/或物理上相互作用的部件和/或无线地可交互和/或无线地交互的部件和/或逻辑上交互和/或逻辑上可交互的部件。
[0064]关于基本上任何复数和/或单数术语在本文中的使用,本领域技术人员可以按照其适用于的情景和/或应用而从复数转化到单数和/或从单数转化到复数。为了清楚起见,在本文中可能明确地阐述了各种单数/复数变换。
[0065]本领域技术人员将理解的是,总之,本文中且尤其是所附权利要求(例如所附权利要求的主体)中所使用的术语通常意图是“开放的”术语(例如术语“包括”应当被解释为“包括但不限于”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限于”,等等)。本领域技术人员将进一步理解的是,如果所引入的权利要求叙述的特定数字是有意的,这样的意图将被明确叙述在权利要求中,并且在没有这样的叙述的情况下不存在这样的意图。例如,作为理解的辅助,下面所附的权利要求可以包含引入性短语“至少一个”和“一个或多个”的使用以引入权利要求叙述。然而,这样的短语的使用不应被解释为暗示着通过不定冠词“一”或“一个”引入权利要求叙述将包含这样引入的权利要求叙述的任何特定权利要求限定到包含只有一个这样的叙述的实施例,即使当该同一权利要求包括引入性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时也是这样(例如,“一”和/或“一个”应当被解释为意味着“至少一个”或“一个或多个”);对于用来引入权利要求叙述的定冠词的使用来说情况是同样的。此外,即使明确记载了所引入的权利要求叙述的特定数字,本领域技术人员也将认识到,这样的记载应当被解释为意味着至少所记载的数字(例如,在没有其它修饰的情况下,“两个叙述”的直率叙述意味着至少两个叙述或者两个或更多叙述)。此外,在其中使用类似于“A、B和C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B和C等中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、具有A和B —起、具有A和C 一起、具有B和C 一起以及/或者具有A、B和C 一起等的系统)。在其中使用类似于“A、B或C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B或C等中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、具有A和B —起、具有A和C 一起、具有B和C 一起以及/或者具有A、B和C 一起等的系统)。本领域技术人员将进一步理解的是,实际上任何转折性词语和/或提供两个或更多替换术语的短语无论是在说明书、权利要求中还是在附图中都应当被理解为构想包括这些术语中的一个、这些术语中的任一个或这些术语两个的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。
[0066]本说明书中对“实施方式”、“一个实施方式”、“一些实施方式”或“其它实施方式”的提及可
[0067]意味着,结合一个或多个实施方式所述的特定特征、结构或特性可被包括在至少一些实施方式中,但不一定在所有实施方式中。前面的描述中“实施方式”、“一个实施方式”或“一些实施方式”的各种出现并不一定都指代相同的实施方式。
[0068]虽然已经使用各种方法和系统在本文中描述和示出了一定的示例性技术,但本领域技术人员应当理解的是,可进行各种其它修改并且等同物可被替代,而不脱离要求保护的主题。此外,可以进行很多修改以使特定情形适应要求保护的主题的教导,而不脱离本文中所述的中心概念。因此,意图是,要求保护的主题不限于所公开的特定示例,相反这样的要求保护的主题还可包括落入所附权利要求及其等同物的范围内的所有实施方式。
【权利要求】
1.一种方法,包括: 接收机器可执行指令的中间表示(IR); 执行对所接收的IR的优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定百分比;以及 在所述机器可执行代码的执行期间利用所述一个或多个中间被优化的IR中的至少一个。
2.根据权利要求1所述的方法,还包括存储所述一个或多个中间被优化的IR。
3.根据权利要求1所述的方法,其中接收所述IR包括在动态运行期编译器处接收所述IR。
4.根据权利要求2所述的方法,其中所述动态运行期编译器包括即时(JIT)编译器。
5.根据权利要求1所述的方法,其中接收所述IR包括接收字节码。
6.根据权利要求1所述的方法,其中接收所述IR包括接收虚拟机型指令。
7.根据权利要求1所述的方法,其中利用所述一个或多个中间被优化的IR中的所述至少一个包括:以随机方式利用所述一个或多个中间被优化的IR中的所述至少一个。
8.根据权利要求1所述的方法,其中利用所述一个或多个中间被优化的IR中的所述至少一个包括:以随机时间相关的方式利用所述一个或多个中间被优化的IR中的所述至少一个。
9.根据权利要求1所述的方法,其中利用所述一个或多个中间被优化的IR中的所述至少一个包括:以随机方式调整所述预定的百分比。
10.一种机器可读非暂态介质,具有存储在其中的指令,所述指令被一个或多个处理器执行时可操作地使得编程翻译模块: 接收机器可执行指令的中间表示(IR); 对所接收的IR执行优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定百分比;以及 在所述机器可执行代码的执行期间对所述一个或多个中间被优化的IR中的至少一个加以利用。
11.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现对所述一个或多个中间被优化的IR的存储。
12.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现在动态运行期编译器处接收所述IR。
13.根据权利要求12所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现在即时(JIT)编译器处接收所述IR。
14.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现对字节码的接收。
15.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现对虚拟机型指令的接收。
16.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现以随机方式利用所述一个或多个中间被优化的IR中的所述至少一个。
17.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现以随机时间相关的方式利用所述一个或多个中间被优化的IR中的所述至少一个。
18.根据权利要求10所述的机器可读非暂态介质,其中所存储的所述指令在被一个或多个处理器执行时还可操作地使得所述编程翻译模块实现以随机方式调整所述预定的百分比。
19.一种用于利用中间表不(IR)的系统,包括: 处理器; 可通信地耦合至所述处理器的编程翻译模块;以及 具有存储在其中的指令的机器可读介质,所述指令在被所述处理器执行时可操作地使得所述编程翻译模块: 接收机器可执行指令的中间表示(IR); 对所接收的IR执行优化以生成一个或多个中间被优化的IR,所述一个或多个中间被优化的IR是比完全被优化的IR的百分比低的预定百分比;以及 在所述机器可执行代码的执行期间对所述一个或多个中间被优化的IR中的至少一个加以利用。
20.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现对所述一个或多个中间被优化的IR的存储。
21.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现在动态运行期编译器处接收所述IR。
22.根据权利要求21所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现在即时(JIT)编译器处接收所述IR。
23.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现对字节码的接收。
24.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现对虚拟机型指令的接收。
25.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现以随机方式利用所述一个或多个中间被优化的IR中的所述至少一个。
26.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现以随机时间相关的方式利用所述一个或多个中间被优化的IR中的所述至少一个。
27.根据权利要求19所述的系统,其中所存储的所述指令在被所述处理器执行时还可操作地使得所述编程翻译模块实现以随机方式调整所述预定的百分比。
【文档编号】G06F9/45GK104350465SQ201280073894
【公开日】2015年2月11日 申请日期:2012年6月11日 优先权日:2012年6月11日
【发明者】E·克鲁格里克 申请人:英派尔科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1