论文部分内容阅读
对计算机系统性能的追求是无止境的。计算机系统的性能与编译器等系统软件密切相关。编译器生成的指令类型、数量和排列都会影响计算机系统的性能。随着处理器结构日趋复杂,编译技术在计算机性能提升中扮演的角色愈加重要。 UniCore-3处理器是北京大学微处理器研究开发中心研发的一款64位超标量处理器,具有8级流水线结构,支持乱序3发射,乱序执行,按序提交,支持精确中断以及可配置的多核结构。UniCore-3处理器设计的先进性和结构的复杂性对编译器提出了更高的要求。 GCC是GNU开发的功能强大、使用广泛的编译器。我们面向UniCore-3平台完成了GCC4.4的移植和验证。GCC4.4的中端简化了GIMPLE结构,有利于中端优化。本文主要工作是根据UniCore-3处理器的结构特征,完善GCC的体系结构相关优化的支持,以提高UniCore-3编译器的性能。本文首先对GCC代码生成技术做了详细的分析,重点关注后端代码生成。优化工作主要是从指令选择,指令调度和软件数据预取三个方面展开。对于指令选择,分别采用了大常数拆分、零扩展指令优化以及连续回写访存指令优化等策略。对于指令调度,根据UniCore-3处理器流水线特征,添加GCC后端对处理器流水线描述,使得GCC指令调度能够生成更符合UniCore-3处理器的指令序列。最后,针对UniCore-3处理器探索了软件数据预取优化,在GCC后端实现了软件数据预取的支持,通过添加UniCore-3预取指令的指令模板,并调整后端的启发式参数,改进GCC软件数据预取算法在UniCore-3上的效果,同时给出了UniCore-3处理器上改进软件数据预取优化的参考方向。 实验数据表明,以上针对UniCore-3处理器体系结构的优化能够很好地改善整个系统的性能。使用SPEC CPU2000评测程序,整点计算程序平均性能提升8.09%,浮点计算程序平均提升4.90%。