基于LLVM的NiosⅡ处理器后端快速移植及优化

基于LLVM的NiosⅡ处理器后端快速移植及优化

论文摘要

编译器是嵌入式系统研发的基础,快速实现特定硬件平台的嵌入式系统编译器可以大大缩短嵌入式系统研发周期。目前研究人员主要采用GCC编译器后端移植方法来生成嵌入式系统编译器。GCC主要使用RTL描述后端处理器,但是RTL抽象复杂不便于编写和阅读。同时GCC复杂的软件结构以及后端移植文档缺乏导致GCC后端移植方法无法满足嵌入式系统研发周期短的要求。如何快速实现编译器后端移植仍然是嵌入式系统研究的热点。首先本文采用新的编译器架构低级虚拟机(Low Level Virtual Machine, LLVM),通过移植NiosⅡ嵌入式处理器来分析LLVM快速后端移植架构。采用LLVM后端移植架构中的TableGen描述NiosⅡ基本体系结构,使用完备的LLVM C++函数库来描述复杂或特殊的操作。TableGen与LLVM C++函数库配合使用,实现LLVM编译器对NiosⅡ处理器后端的支持。实验结果表明与GCC后端移植方法相比,基于LLVM快速后端移植方法大大减少了源代码量及无需模仿已有的处理器,大大节省了后端移植时间。其次本文研究并实现后端描述辅助系统,以加快目标处理器后端描述速度。针对LLVM后端移植架构中存在大量繁杂且重复的文本TableGen描述,本文设计人性化、可视化的后端描述辅助系统。输入少量目标处理器后端信息,通过后端描述辅助系统快速生成相应的TableGen描述文件。最后本文以纸张计数系统为出发点,鉴于纸张图像处理的运算量大和循环数目多的特点,研究并实现LLVM编译器循环优化功能,并对该系统进行循环优化。通过实验表明经过LLVM编译器的循环优化,纸张计数系统的图像数据处理速度提高了10.1%-14.6%。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 课题研究背景
  • 1.2 国内外研究水平与现状
  • 1.3 论文研究意义及研究内容
  • 1.4 论文组织
  • 第二章 LLVM及GCC编译后端移植架构分析
  • 2.1 LLVM编译架构分析
  • 2.1.1 LLVM汇编语言分析
  • 2.1.2 LLVM类型系统分析
  • 2.1.3 LLVM指令集分析
  • 2.2 LLVM工具集分析
  • 2.3 LLVM编译器后端移植接口分析
  • 2.4 GCC编译器后端移植架构分析
  • 2.4.1 GCC编译器后端移植架构分析
  • 2.4.2 代码生成和系统整合
  • 2.5 LLVM与GCC后端移植性能比较
  • 2.6 本章小结
  • 第三章 基于LLVM的Niosll处理器后端移植
  • 3.1 LLVM编译器后端移植架构分析
  • 3.2 Niosll处理器体系结构分析
  • 3.2.1 寄存器分析
  • 3.2.2 寻址方式和指令集分析
  • 3.2.3 栈帧布局及调用约定分析
  • 3.3 Niosll处理器后端移植实现
  • 3.3.1 Niosll寄存器描述
  • 3.3.2 Niosll指令集描述
  • 3.3.3 NiosllDAG降级描述
  • 3.3.4 Niosll全局信息描述
  • 3.4 Niosll后端配置与生成
  • 3.5 实验结果分析
  • 3.6 本章小结
  • 第四章 后端描述辅助系统设计与实现
  • 4.1 TableGen语法分析
  • 4.1.1 TableGen类型系统分析
  • 4.1.2 TableGen类及定义分析
  • 4.2 系统总体功能及设计思路
  • 4.3 后端描述系统数据库模块设计
  • 4.4 后端描述信息输入界面设计
  • 4.4.1 寄存器信息输入模块设计
  • 4.4.2 指令信息输入模块设计
  • 4.4.3 调用约定模块设计
  • 4.5 描述后端生成器模块设计
  • 4.5.1 寄存器描述文件生成模块设计
  • 4.5.2 指令描述文件生成模块设计
  • 4.5.3 调用约定文件生成模块设计
  • 4.6 本章小结
  • 第五章 基于LLVM的纸张计数系统循环优化研究
  • 5.1 纸张计数系统功能分析
  • 5.1.1 图像预处理阶段分析
  • 5.1.2 条纹分割阶段分析
  • 5.1.3 统计计数阶段分析
  • 5.1.4 纸张计数系统各阶段循环分析
  • 5.2 循环优化分析
  • 5.2.1 循环展开技术分析
  • 5.2.2 代码外提分析
  • 5.2.3 强度削弱分析
  • 5.2.4 删除归纳变量分析
  • 5.3 基于LLVM的循环优化研究与实现
  • 5.3.1 LLVM中间代码优化接口分析
  • 5.3.2 循环展开技术实现
  • 5.3.3 代码外提技术实现
  • 5.3.4 强度削弱技术实现
  • 5.4 实验结果分析
  • 5.5 本章小结
  • 第六章 总结与展望
  • 6.1 论文的总结
  • 6.2 今后的工作
  • 参考文献
  • 致谢
  • 攻读硕士期间的主要研究成果
  • 相关论文文献

    • [1].基于LLVM中间表示的数据依赖并行计算方法[J]. 计算机应用研究 2020(02)
    • [2].引入开源编译器LLVM的编译原理课程改革[J]. 计算机教育 2017(02)
    • [3].基于LLVM的多目标高性能动态二进制翻译框架[J]. 航空科学技术 2020(08)
    • [4].基于LLVM实现的国产DSP优化编译器[J]. 中国集成电路 2020(Z4)
    • [5].基于GPU的LLVM程序分析信息并行提取[J]. 计算机工程 2017(10)
    • [6].计算机综合实验C语言编译器设计探讨——基于LLVM架构的MIPS后端移植分析[J]. 计算机教育 2014(01)
    • [7].基于LLVM编译器的节点融合优化方法[J]. 计算机科学 2020(S1)
    • [8].基于LLVM的程序关注点影响分析[J]. 计算机与现代化 2014(04)
    • [9].基于LLVM的Android Native文件保护方法[J]. 通信技术 2017(03)
    • [10].基于LLVM的函数内联优化技术研究[J]. 计算机工程与应用 2017(03)
    • [11].Win32平台下基于LLVM的代码混淆技术研究[J]. 信息工程大学学报 2018(04)
    • [12].FPSFI:一种基于LLVM架构的驱动错误隔离机制[J]. 小型微型计算机系统 2013(10)
    • [13].基于LLVM架构的NiosⅡ后端快速移植[J]. 计算机应用与软件 2011(12)
    • [14].基于LLVM的指令并行调度与实现[J]. 微电子学与计算机 2013(11)
    • [15].基于LLVM的编译实验课程设计[J]. 计算机教育 2019(02)
    • [16].基于LLVM架构的图像处理程序的并行分类[J]. 微电子学与计算机 2018(01)
    • [17].基于LLVM的栈数据保护[J]. 软件导刊 2012(08)
    • [18].基于OpenCL框架的并行编译系统设计[J]. 信息技术 2017(03)
    • [19].C/C~(++)程序的运行时优化研究[J]. 软件导刊 2009(04)
    • [20].基于RISC-V架构的计算机系统能力培养机制探索[J]. 计算机教育 2020(01)
    • [21].LLVM中静态程序信息的过程间分析方法[J]. 计算机工程与设计 2018(06)

    标签:;  ;  ;  ;  ;  

    基于LLVM的NiosⅡ处理器后端快速移植及优化
    下载Doc文档

    猜你喜欢