循环分裂是一种重要的编译优化技术,可有效减少循环控制开销、提升指令流水线效率,并为后续优化创造机会。针对GCC编译器现有循环分裂策略适用范围受限的问题,提出了一种改进的循环分裂优化算法,该算法基于静态单赋值形式,根据循环内条...循环分裂是一种重要的编译优化技术,可有效减少循环控制开销、提升指令流水线效率,并为后续优化创造机会。针对GCC编译器现有循环分裂策略适用范围受限的问题,提出了一种改进的循环分裂优化算法,该算法基于静态单赋值形式,根据循环内条件变量所在PHI节点的位置,将其区分为循环头PHI节点条件变量和合并PHI节点条件变量,针对这两种条件变量,算法分别进行半不变性分析,并以此选择分裂点,从而实现更通用的循环分裂优化。在申威GCC编译器中实现了该算法。在申威新一代处理器平台上的实验结果显示,相比原有的循环分裂算法,该算法使SPEC CPU 2006测试集中的470.lbm测试程序性能提升8.8%,SPEC CPU 2017测试集中的620.omnetpp_s测试程序性能提升4.3%。所提方法扩展了可优化循环结构的范围,提升了申威GCC编译器的优化效率,可助力国产申威平台的基础软件生态建设。展开更多
Fortran语言在科学与工程计算领域具有广泛应用。然而,通用数字信号处理器(General-Purpose Digital Signal Processor,GPDSP)目前主要使用C语言或汇编语言进行编程,尚不支持Fortran语言。针对这一现状,面向CPU-DSP异构处理器的Fortran...Fortran语言在科学与工程计算领域具有广泛应用。然而,通用数字信号处理器(General-Purpose Digital Signal Processor,GPDSP)目前主要使用C语言或汇编语言进行编程,尚不支持Fortran语言。针对这一现状,面向CPU-DSP异构处理器的Fortran编译器实现技术,基于LLVM Flang编译器框架设计并实现了Fortran编译器原型mtFortran,完成了Flang前端移植,并重点解决了Fortran程序在异构架构上的编译和运行支持,包括加载执行、语法支持、内建函数实现及输入输出(I/O)系统适配问题。实验结果表明,该Fortran编译器成功支持Fortran语言商用测试集U_F90_TS_LITE中GUIDE F90测试集的语法特性,在176个测试程序中运行时库已完全支持的测试程序(102道)全部通过异构编译与加载执行验证,主要类别内建函数的实现率达79.38%,并可支持典型高性能计算程序的运行(如NPB-EP测试程序),实现了Fortran程序在CPU-DSP异构处理器架构上的基础运行能力,为后续完善标准支持、性能优化及并行化扩展奠定了基础。展开更多
二进制翻译技术是实现跨指令集软件兼容的重要手段,广泛应用于软件迁移、硬件模拟和调试验证等领域。传统研究主要聚焦于提升翻译后代码质量,对翻译过程性能的优化关注较少。然而,随着即时编译技术的普及以及客户程序代码规模的不断增长...二进制翻译技术是实现跨指令集软件兼容的重要手段,广泛应用于软件迁移、硬件模拟和调试验证等领域。传统研究主要聚焦于提升翻译后代码质量,对翻译过程性能的优化关注较少。然而,随着即时编译技术的普及以及客户程序代码规模的不断增长,翻译过程的性能瓶颈愈发显著。为应对这一挑战,本文深入分析了现有二进制翻译系统的翻译特点,设计了一种定制化的中间表示,显著加快了翻译速度。此外,针对翻译过程中的汇编环节,提出了一种基于向量化的汇编优化方法,进一步缩短了翻译时间。在MIPS(microprocessor without interlocked pipeline stages)平台上的测试表明,使用定制化中间表示并结合向量化汇编优化后,SPEC CPU 2000测试基准的翻译速度达到QEMU(quick emulator)的4.3倍,Octane 2.0测试基准的整体翻译速度提升至QEMU的4.1倍,验证了所提方法的有效性。展开更多
摘要循环分裂是一种重要的编译优化技术,可有效减少循环控制开销、提升指令流水线效率,并为后续优化创造机会。针对GCC编译器现有循环分裂策略适用范围受限的问题,提出了一种改进的循环分裂优化算法,该算法基于静态单赋值形式,根据循环内条件变量所在PHI节点的位置,将其区分为循环头PHI节点条件变量和合并PHI节点条件变量,针对这两种条件变量,算法分别进行半不变性分析,并以此选择分裂点,从而实现更通用的循环分裂优化。在申威GCC编译器中实现了该算法。在申威新一代处理器平台上的实验结果显示,相比原有的循环分裂算法,该算法使SPEC CPU 2006测试集中的470.lbm测试程序性能提升8.8%,SPEC CPU 2017测试集中的620.omnetpp_s测试程序性能提升4.3%。所提方法扩展了可优化循环结构的范围,提升了申威GCC编译器的优化效率,可助力国产申威平台的基础软件生态建设。
摘要Fortran语言在科学与工程计算领域具有广泛应用。然而,通用数字信号处理器(General-Purpose Digital Signal Processor,GPDSP)目前主要使用C语言或汇编语言进行编程,尚不支持Fortran语言。针对这一现状,面向CPU-DSP异构处理器的Fortran编译器实现技术,基于LLVM Flang编译器框架设计并实现了Fortran编译器原型mtFortran,完成了Flang前端移植,并重点解决了Fortran程序在异构架构上的编译和运行支持,包括加载执行、语法支持、内建函数实现及输入输出(I/O)系统适配问题。实验结果表明,该Fortran编译器成功支持Fortran语言商用测试集U_F90_TS_LITE中GUIDE F90测试集的语法特性,在176个测试程序中运行时库已完全支持的测试程序(102道)全部通过异构编译与加载执行验证,主要类别内建函数的实现率达79.38%,并可支持典型高性能计算程序的运行(如NPB-EP测试程序),实现了Fortran程序在CPU-DSP异构处理器架构上的基础运行能力,为后续完善标准支持、性能优化及并行化扩展奠定了基础。
摘要二进制翻译技术是实现跨指令集软件兼容的重要手段,广泛应用于软件迁移、硬件模拟和调试验证等领域。传统研究主要聚焦于提升翻译后代码质量,对翻译过程性能的优化关注较少。然而,随着即时编译技术的普及以及客户程序代码规模的不断增长,翻译过程的性能瓶颈愈发显著。为应对这一挑战,本文深入分析了现有二进制翻译系统的翻译特点,设计了一种定制化的中间表示,显著加快了翻译速度。此外,针对翻译过程中的汇编环节,提出了一种基于向量化的汇编优化方法,进一步缩短了翻译时间。在MIPS(microprocessor without interlocked pipeline stages)平台上的测试表明,使用定制化中间表示并结合向量化汇编优化后,SPEC CPU 2000测试基准的翻译速度达到QEMU(quick emulator)的4.3倍,Octane 2.0测试基准的整体翻译速度提升至QEMU的4.1倍,验证了所提方法的有效性。