论文部分内容阅读
嵌入式系统处理器通常采用特定的指令集,其体系架构不具有通用性,因此,嵌入式系统的编译器开发无法满足不同嵌入式系统的软件开发需求,即使是通过移植方法来开发相应的嵌入式系统的编译器,也面临着可重定向方案设计等难题。针对嵌入式编译器的重定向难题,嵌入式系统对开发效率及高质量目标代码等多方面的需求,本论文就专用指令集嵌入式处理器(ASIPs)的编译器重定向、基于Cache的编译器优化及嵌入式多核静态调度等方面的理论和实践进行研究。 在对编译器的原理及理论基础进行介绍后,本论文首先针对ASIPs特点分析研究编译器可重定向及移植问题;接着给出能够实现编译器静态预测的方法,提高Cache复用率,解决“存储墙”瓶颈问题;最后针对嵌入式多核编译静态调度的负载不均衡问题,提出有效的静态调度方案。本论文的创新点主要体现在: (1)提出针对ASIPs的重定向编译器的扩展方法。针对一款具有不规则架构且硬件资源有限的嵌入式8位微处理器及其扩展的标准ANSI C编程语言,以GCC编译器为基础,进行编译器前端的标识符扩展与语法树属性合并,和编译器后端目标描述文件(MD)与处理器硬件资源的差异性定义,设计出一套可重定向的编译器。 (2)提出基于Markov模型的节点频率预测方法。通过程序控制流图(CFG)构建的Markov模型,分析程序的特性,结合传统编译器静态启发式分支预测和基于Markov程序参数可调的预测方法,通过编译器静态的混合预测,更加精确的预测分支概率,计算程序节点频率(NF),以提高嵌入式Cache的利用率。 (3)提出一种基于评估函数的OpenMP静态编译调度方案。通过对多核调度、任务划分和负载均衡等问题的描述,基于对并行循环的划分定义及负载函数的映射模型,提出一种基于静态评估函数的调度方法,以解决编译器静态调度的负载不均衡问题,提高嵌入式程序的并行效率。 最后,实践开发了一套针对专用指令集系列商用SoCs的C语言HCC编译器,并集成相应编译器到本地集成开发环境(IDE)及实验室的WEB-EDA平台上。HCC编译器已经投入市场,通过覆盖率等测试反馈,验证其编译稳定高效。