自动向量化.docxVIP

  • 3
  • 0
  • 约3.54千字
  • 约 5页
  • 2017-01-10 发布于江苏
  • 举报
自动向量化

面相DSP的自动向量化技术刘顺亮 西安电子科技大学一 简述随着多媒体应用的迅速发展,很多高性能微处理器都采用了 SIMD 扩展技术。SIMD 扩展技术缺少统一的指令描述规范,程序员不仅需要对程序的结构有较为深刻的认识,而且要掌握目标平台支持的扩展体系结构和指令集的特点,对程序员来说编写 SIMD程序是具有挑战性的工作,因此当前编译技术中的自动向量化就是解决这个问题的一个重要方法。二 自动向量化自动向量化是编译器提供的一个可以自动的使用SIMD指示的功能。目前自动向量化主要有三种方法分别是传统向量化方法、指令级并行(Instruction-Level Parallelism,ILP)方法和模式匹配方法(1) 传统的向量化方法传统的向量化方法是最早使用的技术,也是一个很成熟的技术,它较多应用于向量机上,并取得了很好的效果。其基本做法是分析循环内的数据依赖关系,并以此构造语句依赖图,再根据tarjian算法构造强连通分量,若强连通分量中只有一条语句,此语句就是可以向量执行的语句。该方法主要分析语句的依赖关系,再结合循环交换和循环分布技术,尽量使最内层循环的语句向量执行,因此传统的向量化方法主要是发掘最内层循环语句级的向量化特性。(2) 指令级并行 指令级并行中一个应用较广的方法是超字并行(Superword Level Parallelism,简写SLP),超字并行向量化方法是在基本块内寻找指令并行机会,其过程是寻找基本块内相邻的内存访问,将其配对并打成向量化的包,再根据定义使用(Define-Use,DU)链和使用定义(Use-Define,UD)链将包扩展,然后按照向量化的要求组合同构操作,生成向量化代码。在具体实现时,将循环按照一定的迭代次数展开,寻找并将地址连续的数据打包作为向量来处理,再将程序中的同构语句用向量指令代替。还可将不同循环的语句合并到同一个基本块内,这样即可实现迭代间的语句并行,又可实现迭代内的指令并行,因此也就可实现迭代间和迭代内的数据SIMD向量化。从这个角度讲,超字并行是传统向量化的一个超集,又是指令级并行(ILP)的一个子集。下图为SLP算法的流程图:当然仅限于开发基本块内的并行,在处理不连续、不对齐、操作类型不一致的问题时有很多限制,还有一些指令级并行的方法,如Peng WU等提出了一种基于虚拟向量寄存器的架构,这种架构可以为不同的方法提供一个向量化的平台。其向量化架构如下图所示:(3) 模式匹配模式匹配的向量化方法就是按照既定的几种模式,通过语句生成树的模式匹配的方法来产生支持典型操作的扩展指令。这些典型操作一般是应用程序中的一些特殊运算操作,如平均值运算、饱和加减法、最小/大值运算等,这些操作通常也是应用程序的热点操作,占用大部分执行时间。许多扩展指令集针对某些特殊的运算操作提供了相应的指令支持,用这些特殊指令来执行典型操作的时间要比普通执行的时间要少得多。 当前很多商业编译器都集成了自动向量化的模块,但是这些编译器大多是采用传统的向量化方法,传统的向量化方法一般会结合一定的循环变换技术,如Intel 的编译器, GCC编译器` AMD的Open64编译器、PathScale编译器等。超字并行(SLP)的向量化方法一般未使用循环变换方法,此方法大多被各研究机构的编译器所采用,如斯坦福大学基于SUIFs源到源的自动向量化编译器[y z},它以GCC编译器作为后端编译器,所采用的扩展指令支持Altivec指令集,此外IBM的编译器B1ueGene/L也采用了超字并行的向量化方法mn。本课题开发的自动向量化工具使用的是超字并行的向量化方法,并将传统的循环变换技术应用到此向量化方法中。三 DSPDSP(Digital Signal Processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。芯片特点1、采用哈佛结构DSP芯片普遍采用数据总线和程序总线分离的哈佛结构或改进的哈佛结构,比传统的冯?诺依曼结构有更快的指令执行速度。1)冯?诺依曼[1] 采用单存储空间,即程序指令和数据指令公用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行的。2)哈佛结构采用双存储空间,程序存储和数据存储分开,有各自独立的程序总线和数据总线,可独立的编址和独立访问,可对程序和数据进行独立的传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大的

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档