首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 140 毫秒
1.
函数内联(Function Inlining)是使用函数体代替函数调用的一种编译优化技术。LLVM中原生的内联模型只根据函数体的大小来判断函数内联与否,而没有考虑函数的调用次数和后续的优化。针对这个问题,提出了基于函数调用次数(NFC)和考虑后续循环合并(BLF)的新内联模型。首先,通过NFC模型对被多次调用的函数进行内联,进而减少更多因函数调用而产生的额外消耗。其次,通过BLF模型能够识别出进行内联后可以进一步进行循环合并优化的函数,为后续循环合并优化提供支持。实验结果表明,提出的函数内联优化技术是可行的,测试程序平均加速比为1.52%。  相似文献   

2.
计算机体系结构的不断演进使现代计算环境日益复杂化.这要求编译优化能够在充分利用硬件特性的同时适应适应这一演进.往复式编译优化技术通过对程序施以不同的转换并根据试运行的结果来指导对大而复杂的优化空间的搜索,有关研究表明适当的搜索算法可以找到其中好的点,从而显著提高程序运行性能.本文介绍了这项技术的基本思路和实现技术,简要回顾当前该领域内的前沿研究工作,并结合作者的相关经验,深入讨论其未来发展方向.  相似文献   

3.
本文介绍了80位浮点运算的编译实现技术,在IA-64平台上针对一套科学计算测试程序进行了性能瓶颈分析。利用IA-64体系结构特点,改进和实现了用户定义函数的自动内联、高级循环变换、数据预取、80位浮点数学库函数内联扩展四种编译优化。测试结果表明,这些优化手段显著提高了80位浮点运算的串行性能和并行性能。  相似文献   

4.
可重构指令集处理器能够适应多变的计算任务在性能和灵活性两方面的要求,而传统的编译后端技术无法为其生成高效的可执行代码,需要有新的代码生成方法.针对传统编译后端代码生成三阶段方法进行扩展的代码混合优化生成算法正是这样一种方法.该算法很大程度地复用了原有的三阶段代码生成过程,同时针对可重构指令集具有动态性的特点,根据系统硬件资源和重构配置,扩展了针对可重构指令代码生成的优化处理,从而能够获得切合可重构指令集处理器体系结构特性的可执行代码.相关实验与分析说明了该算法针对硬件重构得到的新平台所做的可重构指令代码生成是有效的,能够较好地提高应用程序在新平台上的执行性能.  相似文献   

5.
内联是编译器中的一种重要的优化手段.传统的编译器中内联模型只考虑函数的执行频率和大小,而没有考虑后面的优化.优化指导的内联模型是以考虑后面的优化为主而进行的内联,但它的缺点是没有考虑函数的执行频率和大小.为了克服以上两者的缺点,提出新的内联模型--循环合并敏感的优化内联模型,既考虑执行频率和函数大小,又考虑后面的优化.实现了考虑循环合并的内联,加入到ORC原有的内联模型中,自适应的建立新的内联模型,并对此模型进行性能调优.通过实验,发现热度这一内联标准在某些情况下不是很有效,并分析了原因,减少一些内联的函数,则会提高性能.实验的结果显示,新的内联模型可以有效地提高编译器的性能,某些SPEC CPU2000实例的peak性能有高达6%的性能提升,平均提升1%.  相似文献   

6.
BWDSP100是一款采用超长指令字(VLIW)和单指令多数据流(SIMD)架构的针对高性能计算领域而设计的32位静态标量数字信号处理器,其指令级并行(ILP)主要是通过其特殊的分簇体系结构和SIMD指令来实现,然而现有的编译框架无法对这些特殊的SIMD指令提供支持。由于BWDSP100拥有丰富的SIMD向量化资源,且其所运用的雷达数字信号处理领域对程序的性能要求极高,因此针对BWDSP100结构的特点,在传统Open64编译器中SIMD编译优化框架的基础上提出并实现了一种支持单双字模式选择的SIMD编译优化算法,通过该算法可以显著提高一些在DSP上有着广泛运用计算密集型程序的性能。实验结果表明,与优化前相比,该算法方案在BWDSP编译器上的实现能够平均取得5.66的加速比。  相似文献   

7.
基于GCC的VLIW编译系统研究   总被引:1,自引:1,他引:0  
VLIW机器在单个机器周期中同时发射并执行多个的并行操作,从而获得较高的指令级并行度,这些操作之间的依赖分析和调度工作则被完全交给相应的编译器执行,因此VLIW的并行性能能否充分发挥取决于VLIW体系结构相关编译器的质量。GNU开发的GCC是被最广泛使用的编译系统之一,它具有多语言、多平台支持的能力和开放的结构,能够运用各种成熟的常规编译优化技术生成高效的代码。文章分析了VLIW及GCC的结构特点,提出了一种基于GCC的VLIW编译系统设计方案,利用GCC进行RTL中间代码一级的体系结构无关优化和少量体系结构相关优化,在汇编代码一级针对VLIW结构进行体系结构相关的优化,从而充分利用GCC的成熟编译技术快速开发高效的VLIW多语言编译系统。  相似文献   

8.
动态二进制翻译器在运行时将源体系结构机器码翻译为目标体系结构机器码.这种即时编译技术使得源机器上的软件无需重编译就可以直接在目标机上较高效地运行.然而,利用动态二进制翻译器运行源软件的效率大大低于针对目标机器重新编译运行源软件的效率.本文在比较分析动态翻译生成的目的机器码的性能偏低的原因的基础上,提出了注解信息制导的动态二进制翻译及优化的方法.本文选取了三种注解信息,在英特尔的商用动态二进制翻译器"IA-32Execution Layer"和静态编译器"Intel(r)Compiler"上实现了注解信息制导的动态二进制编译及优化技术.实验结果表明该三种注解信息较大程度地提高了动态翻译码的执行效率.  相似文献   

9.
基于VLIW的机器相关优化编译技术研究   总被引:2,自引:0,他引:2  
VLIW体系结构性能的发挥在很大程度上依赖于其相应的编译器。编译优化主要包括两个方面:一方面是传统的编译器优化技术;另一方面是针对具体机器平台特定的优化技术。VLIW机器相关的编译优化技术应该针对具体的机器平台,基于超长指令字体系结构的特点,考虑如何充分利用机器提供的硬件资源,以达到软件(编译器)和硬件(CPU)的最大匹配,从而生成高效率高并行度的目标代码。论文从超长指令字的特点出发,探讨了在VLIW体系结构下与机器相关的编译优化的实现方案,同时提出了几点在具体进行与机器相关的优化编译时的关键技术。  相似文献   

10.
动态二进制翻译与优化技术研究   总被引:3,自引:1,他引:2  
动态二进制翻译技术是一种即时编译技术,它将针对源体系结构编译生成的二进制代码(源机器码)动态翻译为可以在目的体系结构上运行的代码(翻译码).动态优化技术是指在运行时获取动态信息并进行代码优化的技术.动态二进制翻译及优化系统使得源软件无需重编译就可以直接在目标体系结构上高效地运行.目前几种比较有影响的动态二进制翻译及优化系统有Intel公司的IA-32 Execution Layer,IBM公司的DAISY,Transmeta的CMS及HP的Dynamo等.这些系统对动态二进制翻译系统关键技术有不同的实现.对动态二进制翻译和优化技术的研究是计算机领域的研究热点,具有深远的现实意义和应用前景.  相似文献   

11.
The detection of similarities in source code has applications not only in software re-engineering (to eliminate redundancies) but also in software plagiarism detection. This later can be a challenging problem since more or less extensive edits may have been performed on the original copy: insertion or removal of useless chunks of code, rewriting of expressions, transposition of code, inlining and outlining of functions, etc. In this paper, we propose a new similarity detection technique not only based on token sequence matching but also on the factorization of the function call graphs. The factorization process merges shared chunks (factors) of codes to cope, in particular, with inlining and outlining. The resulting call graph offers a view of the similarities with their nesting relations. It is useful to infer metrics quantifying similarity at a function level.  相似文献   

12.
从基于调用图的函数内联技术、函数参数的映射技术和内联使用的不同策略3个方面讨论基于SUIF系统的内联技术的实现。根据KAP系统需求,提出叶节点的内联算法,以满足并行性分析的需要,降低全内联引起的代码膨胀问题。测试结果表明,该算法能够有效地内联NPB测试集中的一些函数,经函数内联后,加速比最高可提高15.78%。  相似文献   

13.
Frequently invoked large functions are common in non‐numeric applications. These large functions present challenges to modern compilers not only because they require more time and resources at compilation time, but also because they may prevent optimizations such as function inlining. Often large portions of the code in a hot function fhost are executed much less frequently than fhost itself. Partial inlining is a natural solution to the problems caused by including cold code segments that are seldom executed into hot functions that are frequently invoked. When applying partial inlining, a compiler outlines cold statements from a hot function fhost. After outlining, fhost becomes smaller and thus can be easily inlined. This paper presents Ablego, a framework for function outlining and partial inlining that includes several innovations: (1) an abstract‐syntax‐tree‐based analysis and transformation to form cold regions for outlining; (2) a set of flexible heuristics to control the aggressiveness of function outlining; (3) several possible function outlining strategies; (4) explicit variable spilling, a new technique that overcomes negative side‐effects of function outlining. With the proper strategy, partial inlining improves performance by up to 5.75%. A performance study also suggests that partial inlining's effect on enabling more aggressive inlining is limited. The performance improvement from partial inlining actually comes from better code placement and better code generation. Copyright © 2006 John Wiley & Sons, Ltd.  相似文献   

14.
Inline expansion and interprocedural register allocation are two general approaches used for interprocedural optimization. However, there are certain situations which prevent either of them from being applied smoothly to procedure calls. Especially, interactions between inlining and register allocation can cause an inlined version of a program to run more slowly than its noninlined counterpart. This paper describes a method of integrating inlining and interprocedural register allocation to reduce the procedure call overhead without this negative effect. We use profile information to identify the heavy called procedures regions and the register usage information of each code site to optimize the placement of the register save/restore code. This method also takes full advantage offree-use registers at each procedure call site. The average performance improvement is 1.21 compared with the previous schemes that performed either of them independently.  相似文献   

15.
介绍了采用IXP425作为核心主控单元和3片DM642作为核心数据处理单元的会议电视多点控制单元的硬件设计原理和实现方法。主控制器IXP425模块完成网络发送/接收、数据调度、PCI控制等功能。数据处理DM642模块完成音/视频混合与切换等功能。IXP425和DM642之间采用PCI总线连接,各模块之间数据传输速度快,提高了数据处理效率。  相似文献   

16.
介绍了网络处理器基本特点,以及如何基于Intel IXP1200网络处理器采用微码实现路由表的路由查找功能.路由查找功能采用Intel提供的TRIE表结构,实现32位IP地址最长前缀匹配算法.  相似文献   

17.
网络处理器IXP的位操作优化   总被引:1,自引:1,他引:0  
该文介绍一种针对IXP网络处理器指令集的编译器优化技术,该技术将位信息记录引入到传统数据流分析过程当中,通过使用模式匹配技术生成高效的目标代码,试验数据表明利用位操作优化最终生成的指令数可以减少1.1%-3.7%。  相似文献   

18.
文章介绍了Intel公司的新型网络处理器IXP425的结构和功能特点,提出了在Linux下利用IXP425进行安全网关开发设计的方法和过程,为家庭和公司之间的安全网络通道的构建提供了一种解决方案。  相似文献   

19.
基于Web Services的分布式GIS集成的研究   总被引:10,自引:0,他引:10  
提出了如何实现网络中的多元异构空间数据库的共享及其互操作,W EB SERV ICE技术的出现给整个网络世界的发展提供了新的发展契机和新思维,因此采用了W EB SERV ICE技术来实现这个问题。W EB SERV ICE技术是一门新鲜的网络技术,它的出现使得空间异构数据库的共享和互操作成为可能,提出了基于W EB SERV ICES技术的一个框架结构,实现了空间异构数据库的共享和互操作。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号