提供关联关系并执行代码优化的方法和装置制造方法及图纸

技术编号:8387068 阅读:224 留言:0更新日期:2013-03-07 07:45
本发明专利技术提供了执行性能优化的方法和系统,所述方法包括:在第一物理平台上获取与第一代码的执行相关的性能采样数据,根据所述性能采样数据确定指令序列与性能缺陷事件之间的关联关系,以及将所述关联关系提供给其他物理平台。在第二物理平台上可以获取所述关联关系,并利用所述关联关系优化第二代码,从而优化第二代码在第一物理平台上的执行性能。本发明专利技术提供的装置与上述方法对应。利用本发明专利技术的方法和装置,可以基于在目标物理平台上生成关联关系,在开发平台上对开发代码进行优化,从而实现跨平台的性能优化,并使得优化过程更加便利高效。

【技术实现步骤摘要】

本专利技术涉及计算机执行性能的优化,更具体而言,涉及跨物理平台进行的性能优化。
技术介绍
信息技术的发展对计算机的执行性能提出了越来越高的要求。实践中,执行性能不仅依赖于计算机的物理平台,还取决于软件应用在执行时对物理平台的利用效率。如果软件和硬件之间具有良好的协同性(synergy),也就是,软件应用能够充分地利用物理平台的执行能力,才会获得比较高的执行性能。 为了提高执行性能,在开发和运行软件应用时,往往需要对软件应用进行优化,使其更好地适配于硬件平台。具体地,在软件代码执行过程中,处理器会对指令的执行情况进行采样和记录,形成性能采样数据。该性能采样数据可以反映出指令执行时发生的与硬件性能相关的行为和事件。通过分析这样的性能采样数据,可以获知特定指令在特定硬件平台上的执行状况。基于获得的执行状况,就可以对指令代码进行优化,消除引起性能缺陷的事件,从而提闻执行性能。具体而言,现有的多种处理器单元都可以提供硬件信号来指示出硬件性能事件。为了获取这些性能事件,可以在硬件平台上设置性能监视单元,该监视单元包含多种专用的硬件性能计数器,每个计数器通过转换器连接到一个硬件信号。OS内核中运行的采样器可以对这些计数器进行采样,上述采样可以周期性地进行或由性能监视器的溢出异常来触发。采样日志可以存储在内存缓冲之中,最后写入一个文档,由此形成性能采样数据。典型地,根据不同的硬件结构,在处理器中可能发生几十甚至上千种不同的硬件性能事件。这样的事件例如包括,指令高速缓存不命中(ICacheMiss),数据高速缓存不命中(DCacheMiss), TLB不命中(TLBMiss),指令流水线中止(Stall),流水线等待(Recycle),等等。事件的类型主要依赖于处理器的物理结构。这些事件会改变处理器的状态,是影响执行性能的重要因素。图I示出一个典型的性能采样数据的例子。在图I的例子中,性能采样数据被安排为一个表格,表格的每个条目,例如每行,示出一个指令的执行情况,包括指令的信息和与该指令相关的性能事件统计。指令的信息包括,例如,指令的模块名称(Mod),指令地址(Addr),(跳转指令的)目标地址(TargetAddr),指令操作码(Opcode),操作数(Operand),采样数(ticks)等;与该指令相关的性能事件统计包括发生如上所述的ICacheMiss,DCacheMiss, TLBMiss, Stall, Recycle等事件的采样信息。可以理解,根据物理平台的结构和性能监视单元的配置,性能采样数据可以包含更多的或不同的性能事件。一般地,所记录的至少一部分性能事件与指令执行时的性能缺陷有关。例如,图I中记录的各种高速缓冲不命中(CacheMiss)事件会使得处理器不能直接从高速缓冲中读取数据,流水线的Stall和Recycle事件会使得指令流的执行暂时地挂起或等待,等等。这些事件的发生都会使得处理器的执行速度和效率降低,引起性能缺陷,因此可以将这类事件称为性能缺陷事件。因此,通过分析以上的性能采样数据,获得与性能缺陷相关的指令信息,就有可能克服这些缺陷,从而对代码进行优化,提高处理器的执行性能。图2示出现有技术中进行代码优化的示意图。如图所示,在同一物理平台上提供有优化器和执行单元。各种代码,包括软件应用的源代码、中间代码或转化之后的二进制代码,首先被输入到优化器中。如果代码是首次执行,那么优化器直接将代码转送到执行单元。在执行单元执行这些代码的过程中,如上所述,性能监视单元会生成与代码执行相关的性能采样数据。一旦获得这样的性能采样数据,优化器就可以通过分析性能采样数据而获得与性能缺陷相关的事件。基于性能缺陷事件,优化器可以对代码进行调整和优化,来试图消除或减小性能缺陷事件。接着,优化器将经过优化的代码再次传送到执行单元进行执行,从而再次生成性能采样数据。通过再次分析性能采样数据,优化器再次对代码进行优化,进一步去除性能缺陷。于是,经过这样的反复执行和调整,可以使得软件应用的代码更好地适合于执行平台。 在图2所示的优化过程中,代码的优化是基于对性能采样数据的分析,而性能采样数据是基于该代码在特定平台上的执行而生成的,因此,必须要在目标物理平台上首先对代码进行执行才可能对其进行优化,执行和优化须在同一物理平台上进行。然而,在实践中,软件应用的开发通常由技术人员在开发平台上进行,而其执行则通常在客户的硬件平台上进行。由于执行软件应用的硬件平台的物理特征各种各样,要针对每一硬件平台进行代码优化就需要在各种平台上进行代码执行,这必然产生非常昂贵的优化成本。另一方面,性能采样数据能够反映出物理平台上执行的指令信息,因此,由开发人员在客户的硬件平台上执行代码优化的方式有可能带来安全方面的隐患,例如泄漏源代码信息,或者泄漏客户方面的机密信息。因此,现有的性能优化方案在多方面存在不足。
技术实现思路
鉴于以上提出的问题,本专利技术提出一种跨平台进行性能优化的方案,旨在克服现有技术中存在的至少一项问题。具体地,根据本专利技术第一方面,提出一种提供关联关系的方法,包括获取与第一代码的执行相关的性能采样数据,该性能采样数据包括与所述第一代码对应的指令的信息和与所述指令对应的性能缺陷事件的信息;根据所述性能采样数据,构建至少一个指令序列,并确定所述至少一个指令序列与性能缺陷事件之间的关联关系;以及,将所述关联关系提供给其他物理平台,以供在该其他物理平台上基于所述关联关系执行第二代码的优化。根据本专利技术第二方面,提出一种执行代码优化的方法,包括获取如第一方面所提供的关联关系;根据所述关联关系,确定第~■代码对应的性能缺陷事件;以及基于确定的性能缺陷事件,优化第二代码。根据本专利技术第三方面,提出一种提供关联关系的装置,包括采样数据获取单元,配置为获取与第一代码的执行相关的性能采样数据,该性能采样数据包括与所述第一代码对应的指令的信息和与所述指令对应的性能缺陷事件的信息;关联关系确定单元,配置为根据所述性能采样数据,构建至少一个指令序列,并确定所述至少一个指令序列与性能缺陷事件之间的关联关系;以及,关联关系提供单元,配置为将所述关联关系提供给其他物理平台,以供在该其他物理平台上基于所述关联关系执行第二代码的优化。根据本专利技术第四方面,提出一种执行代码优化的装置,包括关联关系获取单元,配置为获取如第三方面的装置所提供的关联关系;缺陷确定单元,配置为根据所述关联关系,确定第二代码对应的性能缺陷事件;以及代码优化单元,配置为基于确定的性能缺陷事件,优化第二代码利用本专利技术的方法和装置,可以基于在目标物理平台上生成的指令序列与性能缺陷事件之间的关联关系,在开发平台上对开发代码进行优化,使其更好地适合于目标平台,从而实现跨平台的性能优化,并使得优化过程更加便利高效。附图说明图I示出一个典型的性能采样数据的例子;图2示出现有技术中进行代码优化的示意图;图3示出根据本专利技术一个实施例的提供关联关系的方法的流程图;·图4示出根据本专利技术一个实施例的执行代码优化的方法的流程图;图5A示出根据本专利技术一个实施例的确定关联关系的子步骤;图5B示出根据本专利技术另一实施例的确定关联关系的子步骤;图6示出根据本专利技术一个实施例对指令序列进行激烈和编码的例子;图7示出根据本专利技术一个实本文档来自技高网
...

【技术保护点】
一种提供关联关系以供代码优化的方法,包括:获取与第一代码的执行相关的性能采样数据,该性能采样数据包括与所述第一代码对应的指令的信息和与所述指令对应的性能缺陷事件的信息;根据所述性能采样数据,构建至少一个指令序列,并确定所述至少一个指令序列与性能缺陷事件之间的关联关系;以及将所述关联关系提供给其他物理平台,以供在该其他物理平台上基于所述关联关系执行第二代码的优化。

【技术特征摘要】

【专利技术属性】
技术研发人员:邹嘉范伟侯锐M·沃斯特王艳琦孙正雅
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1