论文部分内容阅读
处理器设计离不开软硬件的协同合作。龙芯处理器经过不断的发展,目前的处理器已经具有先进的结构设计。但是随着多媒体应用的逐步扩展,SIMD计算模式已经从游戏机器和DSP机器扩展到通用处理器结构中。SIMD机制允许体系结构开发程序中自然的并行性,通过同时对向量寄存器中的多个数据元素执行相同的指令来达到数据并行操作的目的。目前主流的方法是通过编译器自动向量化技术来挖掘体系结构中的SIMD特性,这对龙芯处理器而言是一种机会和挑战,同时龙芯3号处理器的向量扩展部件将很好地支持SIMD应用。由此可见,龙芯处理器需要支持向量化技术的编译器。
龙芯处理器使用的编译器是开源编译器GCC(GNU Compiler Collection)。GCC可以运行于龙芯处理器上,但是它的性能仍有提升空间。随着GCC版本的提升,GCC引入了更多的优化机会,特别是用于优化程序中的循环结构以便发挥硬件平台的SIMD特性,这便是自动向量化优化技术。本文结合龙芯2F和龙芯2G的结构特性,分析了编译器拥有的自动向量化优化技术,同时完成了龙芯2F处理器的多媒体指令和双单精度指令的自动向量化扩展工作,对向量化过程中遇到的整数提升规则进行处理,并对龙芯2G处理器的128位访存指令进行自动向量化扩展工作,即通过使用新的访存指令模板导致需要修改树表示到RTL表示的扩展过程。自动向量化使处理器不仅能对应用程序进行循环展开的优化,而且还能利用龙芯的特有指令,充分挖掘体系结构的优势,对某些领域应用程序的加速起到了一定的作用。测试结果表明,通过对多媒体指令的自动向量化优化,使得程序性能提升最多可达14%以上,对部分浮点程序的自动向量化优化,则可以带来多达50%以上的性能提升。