论文部分内容阅读
多核和众核架构有望解决或缓解现代处理器设计面临的存储墙、线延迟和功耗问题,分片式处理器作为一种代表性的众核实现方案,强调功能单元的分布化、结构的层次化,将硬件细节暴露给上层的软件系统,依赖编译器划分程序指令,形成较大有效的指令发射窗口。本文工作围绕分片式处理器TPA-PI及其编译系统展开。TPA-PI编译器分析应用程序特征,参照硬件配置,采用启发式算法将程序指令划分成超块,超块作为原子执行单位,是指令调度的对象。超块生成器和指令调度器作为分片式处理器编译系统后端的两大部件,决定着应用程序在TPA-PI处理器上能够获得的性能,是软硬件协同设计的场所,也是该类处理器的研究热点。
本文主要工作是为TPA-PI编译系统设计并实现超块生成器。通过对超块生成算法各方面的量化研究,提出迭代收敛的改进型超块生成算法;基于LLVM编译框架实现TPA-PI处理器后端和通用的超块生成器模块。
论文的研究工作和成果可以归纳为以下几个方面:(1)深入理解LLVM编译框架提供的通用后端生成器模块,通过对TPA-PI处理器结构和指令集的研究与设计,实现了TPA-PI处理器后端,为分片式处理器编译系统打下基础。(2)根据超块生成算法原理,将算法划分成基本块选择、合法性检验、谓词转化和调整优化四大步骤,实现时将算法中与体系结构相关的部分抽象成虚函数,这部分虚函数通常是关于指令判断和处理、合法性检验,需要在使用超块表示方式的处理器中实现;基于LLVM描述程序的数据结构实现算法框架,使得超块生成模块可以被复用。(3)用头复制技术等价替换超块生成算法中的循环优化,避免循环优化与谓词化的顺序冲突,有助于形成规整高效的超块。对引起分支预测器失误的分支结构进行分类,赋予不同优先级,从而按照优先级指导谓词转化过程,提高预测器准确性,并且减少过度谓词化引起的超块分割。从静态和动态两个角度对指令填充的开销进行量化分析。实验表明,通过衡量影响超块质量的各个因素对程序性能的影响,改进超块生成算法流程以及启发式函数内容,最终设计的迭代收敛的超块生成算法,较原算法有平均6.75%的相对性能加速。