论文部分内容阅读
传统的单核处理器通过提高运行频率来提高计算性能。然而,单纯增加晶体管数目不仅耗用大量晶体管资源,而且随着时钟频率不断攀升,微处理器的功耗也迅速增加。提高芯片性能和减少能耗成为矛盾,单核处理器的性能提升已成为瓶颈。为解决这一问题,多核结构的设计思想应运而生。通过在单个芯片上集成多个高效内核,就可以在保持工作频率的条件下实现性能的提升,以获得更高的能效。多核处理器按照集成的处理器核的种类分为同构多核处理器和异构多核处理器。异构多核处理器将不同类型的内核集成在一起,在效率和性能方面往往要优于同构多核处理器。目前,异构多核处理器在加速实际应用方面获得了很高的性能,相关技术已被逐渐运用到新型高性能计算机中。异构多核处理器的特征为高性能并行计算提供了巨大潜力,但是,异构多核处理器在并行编程、存储层次管理等方面都很复杂,另外,在自动并行工具以及软件通用性方面仍有很多难题亟待解决,如何充分利用异构多核对编程模型和编译技术都提出了很大挑战。本文重点围绕异构多核编译系统设计及优化等问题进行研究,本文所提出的编译方法不仅适应于特定异构多核处理器,也适应于其他异构多核处理器系统。本文的主要工作和技术创新概述如下:(1)提出了面向异构多核处理器的代码自动生成框架。以异构多核处理器Cell为实例,基于分布式存储模型为Cell处理器设计并实现了一个源到源编译器。该编译器利用数据对齐、数据分布等技术将程序中的数据自动划分到不同的处理器核中,并根据不同数据分布机制为应用程序插入通讯原语,生成不同版本的可在Cell上运行的SPMD(Single Program Multiple Data)并行程序。首次在Cell上实现了一个高效的多核通讯库,该库包括send/recv、shift和transpose等通讯原语,通讯协议基于Cell的mailbox机制实现。最后,通过实验验证了编译器的有效性和性能,同时与IBM XL C/C++ OpenMP编译器进行了比较,证明了与共享存储编程模型相比,分布式存储编程模型更适于Cell等异构多核处理器。(2)提出了面向异构多核处理器的数据自动管理框架。针对协处理器核局部存储器容量无法满足大数据规模应用的问题,本文提出并实现了一个数据自动管理系统,该系统通过分级数据分布、通讯生成和循环分块等方法对程序中的数据和计算进行分解,使得分解后的数据能够满足局部存储容量的约束。为了减少访存,提高局部存储中数据的重用性,本文还提出了一个通讯优化方法,该方法为程序构建重用图,并根据重用图划分来删除冗余通讯。最后基于异构多核处理器Cell对数据自动管理框架进行了验证和评测,实验表明,该框架能够很好的管理Cell局部存储中的数据,为应用生成高效的代码。(3)提出了面向异构多核处理器的模型驱动的多任务多级并行方法。为了协调异构多核处理器中的计算资源和存储资源,本文首先对异构多核资源管理问题进行抽象,提出并实现了一个资源管理模型,该模型对应一个三维的优化空间,包括变量选择、任务分组和PE(Processing Element)分配。然后,本文提出并实现了一个基于基因算法的智能搜索方法对模型的优化空间进行搜索,来为程序选择性能较优的并行策略。最后基于异构多核处理器Cell对模型进行验证。实验表明,本文设计的资源管理模型能够在极短的时间内为应用确定较好的并行策略,极大的减轻了程序员的编程负担。(4)提出了面向多媒体应用的SIMD(Single Instruction Multiple Data)代码自动生成方法。根据多媒体应用的特点,本文实现了一系列循环变换方法来发掘循环中更多的SIMD并行。针对如何判断循环中哪些部分适于利用SIMD并行,本文提出并实现了基于代价子图的指令选择方法,该方法对循环中可利用SIMD并行的部分进行评估。本文通过利用循环展开、寄存器重命名等方法为应用生成SIMD指令。最后通过实验对指令选择、代码生成方法以及程序性能进行了验证和评估。