共享主存多SIMD结构编译优化及结构研究

来源 :复旦大学 | 被引量 : 0次 | 上传用户:andykiteelxu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
共享主存多SIMD结构是指N×N的处理单元(PE-Processing Element)按一定的拓扑结构连接组成的阵列结构,同行/列各PE之间以SIMD方式工作,多行/列之间并行执行。随着多媒体应用的日益普及和多样化,这些应用对处理器的速度提出了越来越高的要求。传统的采用单独的SIMD结构作为多媒体加速部件或者为专门的应用设计ASIC的方法无法同时满足这些应用处理速度和多样性的要求。共享主存多SIMD结构由于其较强的运算能力和可编程性不仅受到学术界的广泛关注,许多公司,如Mortorala、Intrinsity、Morphotech和Folsom都推出了采用共享主存多SIMD结构作为多媒体加速部件的SOCs。在这些芯片的设计过程中,出于节能和芯片面积的考虑,大部分都对共享主存多SIMD结构加入了多行/列SIMD功能单元共享数据总线和各PE寄存器较少的限制。虽然这些限制简化了芯片设计,但是却给针对共享主存多SIMD结构的编程设置了极大的障碍,也给针对共享主存多SIMD结构的优化技术的研究提出了极大的挑战。目前虽然针对共享主存多SIMD结构作为多媒体加速部件得到了越来越广泛的应用,但是针对共享主存多SIMD结构编译技术的研究却远远滞后于结构的普及。这种情况造成的直接后果是目前程序员只能用手写汇编的方式为共享主存多SIMD结构编写代码。这种编程方式不仅要求程序员熟悉应用程序,也要求程序员对底层结构有深入了解。程序员不仅要为新的应用编写代码,又要为已有的应用重新编写可在共享主存多SIMD结构上运行的代码,这极大增加了程序员的负担。同时由于没有有效编译优化技术的支持,目前针对共享主存多SIMD结构的研究也不够深入,共享主存多SIMD结构的各种特性与结构整体性能的关系的研究都没有展开。这些都给共享主存多SIMD结构的更广泛应用设置了障碍。这种情况下,针对共享主存多SIMD结构优化技术的研究就显得十分迫切。虽然共享主存多SIMD结构中,存在SIMD指令级别的并行,但是由于共享数据总线的限制,很多情况下多SIMD功能部件无法并行执行,如何有效减少共享数据总线的竞争对于提高共享主存多SIMD结构的并行性就显得尤为重要。传统的数据复用的算法虽然可以解决类似的问题,但却不能解决共享主存多SIMD结构的问题,主要由于以下几方面的原因:1.传统的数据复用的算法针对的是标量操作数,而共享主存多SIMD结构的操作数主要是向量。2.传统数据复用的算法在提高数据复用的时候,只是在一定程度上减少了数据总线的竞争,如何提高数据总线的利用率并没有解决。3.传统的数据复用的算法主要研究对象是cache,而要减少共享主存多SIMD结构中多SIMD功能单元对总线的竞争,只能提高寄存器的数据复用。而在共享主存多SIMD结构中,每个SIMD功能单元的寄存器数量很少,如何有效解决这个问题,减少数据的换入换出对于提高性能也显得至关重要。本文在充分分析共享主存多SIMD结构编译优化的障碍的基础上,提出了一种优化方法的框架,该框架通过利用共享总线的广播特性提高共享总线的利用率,通过提高SIMD单元本地寄存器的Locality特性来减少各SIMD功能单元对共享总线的竞争。针对单个SIMD单元寄存器少的特点,提出了一种寄存器分配算法,在满足计算资源利用率的前提下,也尽量满足寄存器分配的需求。针对共享主存多SIMD结构多SIMD单元之间的互连的特性,提出了一种流水线调度的策略,该策略可以有效发掘多媒体程序的流水线级并行。该算法在有效提高并行的同时,极大减少了多SIMD单元对共享数据总线的竞争和本地寄存器的压力。本文介绍的算法已在我们实验室开发的C编译器Agassiz中实现。实验数据显示,这些算法对共享主存多SIMD结构获得很好的加速效果。同时,在编译器的帮助下,我们对共享主存多SIMD结构的一些特性与整体性能的关系进行了深入的分析,如共享主存多SIMD结构的队列规模,执行模式等,并根据实验结果,对共享主存多SIMD的结构设计提出了一些建议。总而言之,本文的主要贡献在于:1.从软硬件两个角度对共享主存多SIMD结构编译优化的重点和主要困难进行了系统阐述。从而使得共享主存多SIMD结构编译优化算法有的放矢。针对共享主存多SIMD结构结构提出了有效的自动编译优化的算法。2.针对共享主存多SIMD结构共享数据总线的特点,提出了一种调度算法,该调度算法利用共享数据总线的特点,在有效减少共享主存多SIMD结构共享数据总线竞争的同时,也极大提高了共享数据总线的利用率。3.针对共享主存多SIMD结构各SIMD功能单元寄存器少的特点,提出了一种新的寄存器分配算法,该算法极大减少了数据换出的数量,减少了数据总线的竞争。4.针对共享主存多SIMD结构多SIMD功能单元之间互连的特性和一些多媒体应用程序的特点,提出了一种数据流水线的调度策略,该方法在充分利用流水线并行的基础上,极大的降低了多SIMD功能单元对共享总线的竞争和SIMD功能单元本地的寄存器压力。5.针对共享主存多SIMD结构的特点,提出了一种基于软件流水线的指令预取策略,该策略可以有效提高数据传输的效率。6.在进行自动编译优化技术研究的同时,针对共享主存多SIMD结构的特点,对共享主存多SIMD结构进行了深入的结构研究,并根据实验结果,给出了一些针对结构设计的建议。
其他文献
目的初步分析B群链球菌(GBS)CAMP因子缺失株的生物学特征以及基因组序列特征。方法首先通过CAMP实验筛选CAMP实验阴性的GBS临床分离株,然后测定并绘制CAMP实验阴性株和阳性株