论文部分内容阅读
性能分析与优化一直是计算机研究中的热点。程序中执行时间最长的通常就是很小部分的热点函数和热点指令。性能分析与优化的目的就是要发现程序热点,分析瓶颈原因,选择合适的优化方法使之执行更快。随着嵌入式系统越来越复杂,性能分析也变得越来越困难。为了提高性能分析效率,人们设计了一系列的辅助工具。目前各种分析工具都有自身的适用范围,如果要进行系统分析就需要几种工具综合使用,从而对整个系统有个全面正确的分析。本文主要讨论龙芯嵌入式系统的性能分析与优化。首先,我们对当前普遍使用的性能分析方法作了深入的研究,比较了各种方法的优缺点。然后在龙芯Linux平台下设计实现了针对汇编程序和模拟器Trace记录的指令分析器My-Analysis,整合了网络上的一些开源资源,实现了一款利用gprofile统计信息绘出程序调用关系图的脚本程序SeeProgram2008。针对龙芯平台上的全系统的性能分析工具oprofile存在使用烦琐低效率的问题,开发出E-oprofile工具,方便用户使用,解决了大型测试程序的多事件自动连续采样问题。借助oprofile工具、sim-godson模拟器和My-Analysis等分析工具,以EEMBC嵌入式基准测试程序组作为目标工作负载,来详细地分析了龙芯处理器的IPC、Cache不命中、分支误预测率等与性能相关的事件,并根据具体程序特点提出相应的优化方法。最后,通过对EEMBC电信类典型应用自相关程序进行了分析优化,提出了一种四阶段人工优化软件流水方法(FPMO),实验结果表明FPMO方法以2.04%的代码增量为代价换来了40.678%的性能提升,而单纯的编译器自动优化则以33.35%的体积膨胀换来38.33%的性能提高。FPMO方法解决了在嵌入式系统硬件资源受限时的程序优化问题。