论文部分内容阅读
近年来多媒体应用逐渐成为计算领域研究的热点。为了获得更为卓越的性能,几乎所有的通用处理器生产厂商都为他们的处理器集成了一个或多个多媒体指令扩展部件。针对多媒体应用的核心代码往往具有并行性高、计算精度要求低的特点,这些多媒体扩展部件往往以通用处理器已有的计算资源为基础,通过一系列整合,以向量部件的形式出现。相应的扩展指令集则以单指令多数据(SingleInstructionMultiData)的向量指令为主,由于这些扩展指令集主要针对多媒体应用,我们称其为“多媒体扩展指令集”(MultimediaExtensionInstructionl,对应的计算部件我们称为“多媒体扩展部件”。
多媒体扩展指令集的出现,给提升多媒体应用的性能带来了美好的前景,然而如何充分利用这些多媒体扩展指令加速多媒体应用,还有很多尚未解决的问题。在多媒体扩展指令出现以后的很长一段时间里,程序员只能通过编译器有限的支持来使用各种多媒体扩展指令,例如通过嵌入汇编代码,或者使用编译器提供的内部函数(intrinsicfunction)等手段在代码中显式地使用多媒体扩展部件的指定计算功能。这些手段的使用,一方面要求程序员深入了解多媒体扩展部件的体系结构,并且具备基本的向量化程序开发能力,大大提高了多媒体程序开发的难度;另..方面,由于不同处理器生产厂商的多媒体扩展指令各不相同,缺乏统一的标准,严重影响了程序的可移植性。为了解决这些问题,我们有必要增强编译器对多媒体扩展指令集的支持,使得编译器能够使用多媒体扩展指令自动优化高级语言编写的应用程序。我们称编译器的这种优化为“针对多媒体扩展指令集的编译优化”,简称为“SIMD编译优化”。
最近几年在SIMD编译优化领域,取得了一些成果,少数商业编译器如(ICC8.0)已经能够对个别多媒体程序实施有效的优化。然而,编译器自动优化的程序和手工优化的程序还是存在很大的性能差距,完全依赖编译器进行高效率的SIMD优化还需要做一些努力。本文在以下几个方面给出了创新性的研究。
·针对多媒体应用中出现的一阶线性递归饱和操作,我们提出了高效的变形算法。
·多媒体应用中存在数据重用的现象,针对这一特点,我们提出了向量寄存器重用的优化方法。
.以并行编译平台agassiz为基础介绍了如何开发SIMD编译优化的原型系统。