论文部分内容阅读
由于多媒体程序在现代计算机系统中越来越广泛的应用,其性能受到了普遍重视。目前,大多数通用微处理器都通过引入一套短SIMD指令对媒体程序进行支持。这些指令可以对拼装在寄存器或主存中的若干组数据并行地进行操作,对它们的高效使用可能大幅提高多媒体程序以及其它计算密集型程序的性能。自动向量化是一项重要的编译优化技术,它通过分析顺序代码,自动找出其中的数据并行性并将其转化成等价的、利用短SIMD指令实现的并行代码,从而提高代码的运行时性能。
北京大学微处理器研发中心为支持多媒体程序,在UniCore*微处理器中引入了SIMD指令系统,UniCore2D/3D。本文基于GCC编译器实现并研究UniCore平台的自动向量化。本文首先对GCC编译器中的自动向量化器的结构进行分析,探讨在实现自动向量化器中面临的问题与权衡;在此基础上,实现了UniCore后端的自动向量化。本文进一步针对GCC自动向量化测试集中出现的各种向量化目标,分析当前UniCore平台自动向量化的能力和局限性,针对表现出的局限性提出可能的解决方案;最后,通过SPEC2000和MediaBench中部分程序的运行性能来评测目前自动向量化的效果,并分析针对SPEC2000和MediaBench中真实应用程序的自动向量化进行的详细情况,归纳总结当前影响某些循环自动向量化的主要原因。
实验和分析表明:一、自动向量化对于提高计算密集型程序的性能有着巨大的潜力;二、基于GCC编译器的UniCore平台自动向量化仍然存在着较大的改进空间。