论文部分内容阅读
随着多媒体产业的迅猛发展,许多通用微处理器中都加入了SIMD扩展指令集。处理器系统需要硬件设备、操作系统和编译器的紧密耦合才能正常工作,编译器的性能直接影响了系统的整体性能。从龙芯2号处理器开始,龙芯系列处理器芯片中逐渐加入了SIMD扩展指令集,龙芯3B具备独立的向量处理器核和完整的向量指令集。为了更好的发挥龙芯3B处理的性能,急需在编译器中加入自动向量化的支持。
龙芯处理器采用开源的GCC(GUN Compiler Collection)作为自己的编译器。随着GCC结构的变化,它的功能逐渐丰富起来,从2004年开始,GCC引入了自动向量化优化,并在随后的几年中不断完善更新。龙芯3B处理器具有全新的SIMD扩展指令集,GCC中缺乏相应的自动向量化支持。本文在对GCC的自动向量化原理进行研究分析的基础上,结合龙芯3B处理器的结构特点,进行了基于龙芯3B平台的GCC4.3.0自动向量化的移植工作,包括龙芯3B向量化的整体实现,定义ISA级别和向量寄存器的使用规则,以及实现256位向量访存操作等。并在上述工作的基础上,对龙芯3B平台上GCC自动向量化的效果进行了测试和分析。
实验数据表明,龙芯3B的GCC自动向量化有效的加速了程序的运行,提高了系统的整体性能。通过使用GCC自动向量化,SPEC CPU2000中部分程序分数得到了提升,gap提升最多达到了7.5%; Stream程序的四个操作均有大幅度的性能提升,其中COPY操作性能提升了61%;使用CBLAS库中向量化dgemm函数的HPL运行时间减少了62%,浮点计算峰值增加一倍多。