[发明专利]使用预测执行的处理器条件代码的优化分析驱动编译方法无效
申请号: | 200780007426.8 | 申请日: | 2007-02-24 |
公开(公告)号: | CN101395581A | 公开(公告)日: | 2009-03-25 |
发明(设计)人: | 汤姆森·乔治;毕尤·托马斯 | 申请(专利权)人: | NXP股份有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 中科专利商标代理有限责任公司 | 代理人: | 朱进桂 |
地址: | 荷兰艾*** | 国省代码: | 荷兰;NL |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 预测 执行 处理器 条件 代码 优化 分析 驱动 编译 方法 | ||
技术领域
本发明总体涉及计算机系统,更具体地说,涉及用于为计算机系统产生可执行程序代码的编译器。
背景技术
从计算机时代的黎明以来,计算机系统已发展成为极其复杂的设备,并且可以在许多不同场合发现计算机系统的身影。硬件和软件(如计算机程序)两方面的巨大进步极大地改进了计算机系统的性能。同早期的计算机程序相比,现代软件已变得非常复杂。计算机程序的执行时间(因而性能)同计算机程序运行时所执行的指令的数量紧密相关。因此,随着计算机程序大小以及复杂度的增加,计算机程序的执行时间也有所增加。
同早期计算机程序不同,现代计算机程序通常是用易于为人类程序员所理解的高级语言编写的。被称为编译器的特殊软件工具获取被称为“源代码”的、人类可读形式的计算机程序,并将其转换为计算机系统可以执行的“机器代码”或“目标代码”。由于编译器产生最终可执行于计算机系统上的机器码指令流,因此编译器将源代码转换为目标代码的方式将影响计算机程序代码的执行时间。
计算机程序特别是复杂的计算机程序的执行时间是计算机程序内指令排列以及类型的函数。循环影响计算机程序的执行时间。如果计算机程序包含许多循环,或包含任何被执行了相对较多次数的循环,那么执行循环所花费的时间将极大地影响计算机程序的执行时间。
影响VLIW架构中性能的关键元件是编译器的指令调度器。指令调度器负责将由核心编译器产生的顺序代码翻译成超长指令字(VLIW)指令,每个超长指令字(VLIW)指令包含可以通过VLIW并行发出的独立操作。指令调度器对术语上称为调度单元的基本块进行运算。判决树和防护判决树是调度单元的示例。
为了对现代计算机程序的性能进行优化,开发了分析器(profiler),用于预测和/或测量计算机程序的运行时性能。分析器通常产生分析(profile)数据,该分析数据用于估计执行计算机程序的不同部分的频率。利用分析数据,优化器(如优化编译器)就可以做出判断,从而优化计算机程序中的循环,以便提高计算机程序的执行速度。
专利申请号WO2003003195A1中公开了分析驱动编译方法,以使编译器能够做出智能的折衷判断。该分析驱动编译方法已被部署于超长指令字(VLPW)处理器的编译器中,用于预测程序的分支目标。然而,在这些已知方法中,当程序代码中需要条件执行时,需要引导编译器在防护操作或专用判决树间做出最佳选择。因此,当程序代码中需要条件执行时,需要在防护操作或判决树间决策的、改进的编译方法,然而这种要求无法令人满意。
发明内容
本发明公开了一种在分析驱动编译过程中的数字设备中程序代码的编译方法。提供了一种通过为编译器提供附加智能的方式对程序代码的执行进行优化的方法。本发明提供了一种条件分支方法,该方法根据提供给编译器的信息选择使用防护指令或独立的判决树。在分析驱动编译的第一编译回合(编译-执行)阶段识别称为“热点”的代码段,然后进行开销估计,以判断针对标识条件代码分支使用附加判决树还是防护操作。该信息将作为输入提供给分析驱动编译的最后阶段。
为了识别程序代码的不同部分,执行分析驱动编译的初步编译阶段。在该阶段中识别主代码和分支代码。还确定分支代码负荷(BCLD)以及增加了的主代码负荷(IMCLD),其中BCLD定义为包含分支代码中跳转指令的超长指令字(VLIW)的数量。IMCLD定义为,由于将分支代码并入与主循环相对应的判决树的防护操作的引入而产生的附加负荷。当估计上述参数时,还在分析驱动编译的运行(执行)阶段对分支代码执行频率(NBE)以及主代码执行频率(NME)进行估计。如果执行分支代码的概率较低,那么相应的处理负荷也将较低,其中分支代码的处理负荷是由BCLD和NBE的乘积确定的。如果分支代码处理负荷小于门限,那么由分支的独立判决树引起的附加负荷将小于利用带有防护的单个判决树引起的负荷。该门限是由IMCLD和NME的乘积确定的。NBE和NME的值是在第一次运行后馈入编译器的。因此,编译器可以明智地判断出,针对程序代码中的热点使用单个判决树还是多个判决树。热点被定义为占相当数量处理负载的程序代码的不同部分,因而是优化的适合候选对象。在程序中识别出具有条件代码的热点时,编译器必须对在分析驱动编译中验证上述条件,以便作出判决。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于NXP股份有限公司,未经NXP股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200780007426.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:在网格环境中部署平台相关应用的方法、系统和程序产品
- 下一篇:模拟电子表