排序方式: 共有67条查询结果,搜索用时 296 毫秒
61.
精简指令集(RISC)系结构常使用延迟槽来减少因分支而造成的延迟。而优化编译器如何高效地利用延迟槽对于性能来说十分重要。本文对延迟槽调度中调度范围、所处编译阶段等问题进行了分析,对全局延迟槽调度可能出现的冲突及候选指令的区域进行了探讨,并提出了一种全局延迟槽调度算法,实验结果证明了它的性能和健壮性。 相似文献
62.
源源翻译是使编译器的分析和优化可重定向的一种重要方式.它被广泛用来支持并行语言扩展或者各种体系结构无关的优化,并且可以帮助程序员进行正确性或者性能的调试.在多核/众核时代,程序分析和优化倾向于让用户更多地参与,这种平台无关而且用户友好的代码生成方式也越来越受到欢迎.在简单的编译器中添加源源翻译的支持很容易,但在实现了复杂的程序分析和激进的优化的编译器中,却很少有编译器提供健壮的源源翻译支持.优化对程序结构的改变是造成翻译困难的首要原因.结合大量出错实例对优化给源源翻译带来的困难进行分析,提出了一套基于类型恢复的翻译技术,并在Open64编译器中实现了这种方法.通过supertest和spec2000测试集的测试,验证了这种方法对源源翻译的健壮性有很大改善.该方法的实现模块集成在源源翻译器内,与编译器各种分析优化模块独立,所以该方法容易移植到其他编译器中. 相似文献
63.
代码翻译中PERFORM和GOTO语句复合结构的变换 总被引:2,自引:0,他引:2
传统语言COBOL从诞生至今已有近50年历史,现存约有1 000亿行代码是用COBOL编写的.维护这些遗产代码的一个有效方法是将其翻译成现代语言,例如Java.其中将COBOL语言中GOTO和PERFORM语句及其复合控制结构消除是翻译过程中的一个关键步骤.提出一种利用switch,while语句来消除GOTO和PERFORM复合控制结构的方法,实现了程序的等价变换.该方法不改变程序的控制结构,保持其可读性,并将代码膨胀率控制到2倍左右.该方法已在所开发的"C2J翻译系统"中进行应用,通过了400万行实际商用程序的测试,结果证明,该方法是正确、有效的. 相似文献
64.
全局部分重复计算划分 总被引:1,自引:0,他引:1
并行化编译器常常采用拥有者计算规则来进行计算划分,为了提高性能和可扩展性,后来引入了部分重复计算划分的概念.这是一种针对并行程序节点间局部性的重要优化方法.以前的部分重复计算划分局限于一个循环套的范围,因此新提出了全局部分重复计算划分的问题,给出一个简化的性能模型和一个基于整数线性规划的全局部分重复计算划分框架.实验结果表明,其结果显著优于局限于单个循环套的部分重复计算划分,比以前提出的启发式方法有更好的适应性. 相似文献
65.
66.
结点间流水是解决数据分布和计算分割不一致时的一种重要的并行发掘技术.结点间流水通过计算与通信的重叠获得并行度.精确的流水粒度是获得良好的流水性能的关键.流水分块取决于很多因素,如程序规模、程序的访问模式、结点规模、结点的计算能力和存储体系、通信系统的性能、通信库开销等等.提出了动态profiling方式并实现在流水粒度的推导中,运行时信息收集部分典型分块,结合代价模型推导流水粒度,该模型考虑局部性优化;探索如何减少插桩执行的开销的同时保证代价模型的精度.实验证明,这种方式有更好的适应性,能获得较好的流水并行. 相似文献
67.
过程间分析技术是提高编译器目标码效率的重要技术。在分布式存储的并行系统中,数据分布的好坏对应用程序的性能有重要影响。但是仅做过程内的数据对齐和分布推导难以获得良好的全局数据分布模型,而且会使过程调用的开销难以控制,因而如何处理过程调用,以及数据分布信息在过程调用点的收集与传播对生成高效率的目标码是极其重要的。文中应用过程调用实实例化技术,减小过程调用的开销,并能很好地满足数据局部性要求。 相似文献