System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种面向向量DSP指令级别代码的循环展开处理方法技术_技高网

一种面向向量DSP指令级别代码的循环展开处理方法技术

技术编号:40407350 阅读:6 留言:0更新日期:2024-02-20 22:28
本发明专利技术涉及一种面向向量DSP指令级别代码的循环展开处理方法,包括以下步骤:识别标量向量混合指令序列代码(指令的操作数为符号寄存器)的最内层循环;识别最内层循环的符号寄存器中的归纳变量(包括基本归纳变量和依赖归纳变量);分析循环控制基本块,确保循环合法;计算标量向量混合指令循环的展开因子;根据展开因子对循环的代码进行变换。本发明专利技术旨在面向向量DSP通过代码变换进行指令级别循环的展开处理,提供一种充分利用向量DSP寄存器资源的标量向量混合指令循环展开方法,提升向量DSP代码的指令级并行性。

【技术实现步骤摘要】

本专利技术涉及和向量dsp的编译优化领域,更加具体的,涉及一种面向向量dsp指令级别代码的循环展开处理方法。


技术介绍

1、现如今,数字信号处理器(digital signal processor,dsp)已成处理器的主流。近年来,由于dsp市场需求不断扩大,国内也涌现出了多款拥有自主产权的高性能dsp芯片,例如国家并行计算机工程技术研究中心的申威系列处理器、国防科大的银河飞腾系列dsp、国电科14所研发的“华睿”系列dsp等。随着代码并行化研究越来越深入,具有向量处理单元的vliw体系结构也已经逐渐成为高性能dsp体系结构的典型代表。飞腾系列的dsp芯片同时具有向量和标量运算单元。向量计算单元对比于标量计算单元和超标量计算单元可以使程序的运行时间进一步缩短,这使得程序开发逐渐朝着向量化方向发展。向量dsp的硬件资源极为丰富,但不同dsp芯片的体系结构都不一致,且其对应的指令集也大不相同,所以要想充分发挥其硬件性能,仍需要通过编译器来对将要运行的指令序列进行优化。因此,随着向量dsp的发展,相对应的编译优化理论与技术就变得越来越重要。

2、在很多dsp算法程序中,循环部分占运行时间的很大一部分。在不影响运算正确性的情况下,循环部分利用硬件资源越多,则其运行时间就会越短,就更能充分发挥dsp的性能优势。施加在循环上的代码优化方法主要有循环分块、循环展开、循环偏斜和软件流水等。编译时可以通过这些技术实现循环迭代的并行执行。循环展开本质上是一种循环变换技术,其基本原理是将循环体中的指令复制多次,消除循环转移指令,从而可以达到减少循环次数,增加循环体内指令数量,较大程度地扩大指令调度域的效果。对于vliw体系结构来说,循环展开可以有效地提升代码的指令级并行度,因此它一直是主流循环优化都在使用的优化技术之一。

3、目前的循环展开研究主要是对标量代码的展开分析,其基本思想是通过减少循环的迭代次数,倍增循环体的指令,从而可以减少循环的迭代次数,较大程度地扩大指令调试域。

4、这类方法能够较好地适用于标量循环中。向量dsp具有丰富的硬件资源及特殊的架构和指令集,且寄存器资源分类众多,因此向量dsp代码的循环展开需要在标量循环展开的基础上进行改进,否则无法对向量dsp的代码进行循环展开处理。


技术实现思路

1、本专利技术为了解决上述技术问题,提出一种基于向量dsp的循环展开处理方法。

2、本专利技术的技术方案为:包括以下步骤,

3、1.一种基于向量dsp的循环展开处理方法,其特征在于:包括以下步骤,

4、步骤1,对输入的标量向量混合指令序列代码进行控制流分析和数据流分析;

5、步骤2,通过控制流分析,获得过程流图,识别过程中的所有循环结构,得到各个最内层循环,并构成一个列表;

6、步骤3,识别出循环列表中的每个循环结构的基本归纳变量符号寄存器和依赖归纳变量符号寄存器,并通过数据流分析获得的定值-使用链获得每个归纳变量符号寄存器的每次变化的差值;

7、步骤4,分析循环控制基本块(循环的第一个基本块),获得控制循环是否继续执行的多个符号寄存器。判断若依据该循环控制基本块,循环能否正常跳出;

8、步骤5,将归纳变量符号寄存器和其他循环变化量(其值在每次循环时会发生变化的量)符号寄存器放入需要展开的符号寄存器集合中,并按寄存器类型对集合分类,包括标量寄存器、向量寄存器、标量地址寄存器、向量地址寄存器、向量地址偏移寄存器和向量地址偏移寄存器等寄存器类。根据各寄存器类在向量dsp中的剩余可利用资源数计算各寄存器类中需要展开的符号寄存器的展开次数,取其中最小值为展开因子。

9、步骤6,根据展开因子和需要展开的符号寄存器集合在循环的前一个基本块、循环控制基本块、循环体基本块中添加展开所需的新指令。

10、2.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤3的具体方式包括如下步骤,

11、步骤3.1,遍历当前循环中的每一条指令,根据归纳变量特征识别归纳变量符号寄存器;

12、步骤3.2,遍历当前循环前一个基本块和循环控制基本块的所有定值指令和使用指令,获得对归纳变量符号寄存器进行初始化赋值的指令。

13、步骤3.3,分析循环体中归纳变量符号寄存器的定值指令,获得控制归纳变量符号寄存器每次变化的符号寄存器。若符号寄存器有常数定值指令,找出常数的值。

14、3.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤4的具体方式包括如下步骤,

15、步骤4.1,分析循环控制基本块,获得决定循环结束的指令序列:条件跳转指令,条件量计算指令,决定条件量的相关量的计算指令。分析指令序列的各个符号寄存器和运算类型,获得循环结束条件量、循环条件基础归纳变量、循环条件边界量的符号寄存器及循环条件计算类型;

16、步骤4.2,判断循环条件边界量在循环体内是否被定值。若被定值,则无法确定循环是否正常跳出,无法进行循环展开处理;

17、步骤4.3,利用数据流分析获得的定值-使用链和使用-定值链查找对循环条件基础归纳变量和循环控制边界量进行初始化赋值的指令;

18、步骤4.4,判断循环是否符合循环展开处理的要求,如:循环控制基本块中循环条件基础归纳变量的变化步长与循环条件计算类型是否匹配、循环条件基础归纳变量的变化方向与变化步长的值是否匹配等条件。

19、4.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤5的具体方式包括如下步骤,

20、步骤5.1,分析循环体(即循环第二个基本块)中哪些符号寄存器需要进行展开处理,获得需要展开的符号寄存器集合;

21、步骤5.2,将需要展开的符号寄存器按寄存器类型(标量寄存器、向量寄存器、标量地址寄存器、向量地址寄存器、向量地址偏移寄存器和向量地址偏移寄存器)进行分组;

22、步骤5.3,计算各寄存器类在循环中同时活跃变量(不含归纳变量)总数;

23、步骤5.4,将归纳变量按寄存器类型划分,获得各寄存器类中归纳变量的总数;

24、步骤5.5,计算各寄存器类的剩余可利用资源数量;

25、步骤5.6,获得各寄存器类的理论最大展开次数,取最小值作为展开因子。

26、5.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤6的具体方式包括如下步骤,

27、步骤6.1,根据展开因子和需要展开的符号寄存器集合,生成添加循环展开新指令时需要用到的符号寄存器;

28、步骤6.2,在循环的前一个基本块中添加对展开因子的定值指令、计算各基础归纳变量新变化步长的指令、对各基础归纳变量新变化步长的初始化指令等指令;

29、步骤6.3,在循环体(循环第二个基本块)中添加指令——各基础归纳变量的变化步长的更本文档来自技高网...

【技术保护点】

1.一种基于向量DSP的循环展开处理方法,其特征在于:包括以下步骤,

2.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤3的具体方式包括如下步骤,

3.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤4的具体方式包括如下步骤,

4.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤5的具体方式包括如下步骤,

5.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤6的具体方式包括如下步骤,

6.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤3.1的具体方式包括如下步骤,

7.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤4.4的具体方式包括如下步骤,

8.根据权利要求1所述的一种基于向量DSP的循环展开处理方法,其特征是:所述步骤5.1的具体方式包括如下步骤,

【技术特征摘要】

1.一种基于向量dsp的循环展开处理方法,其特征在于:包括以下步骤,

2.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤3的具体方式包括如下步骤,

3.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤4的具体方式包括如下步骤,

4.根据权利要求1所述的一种基于向量dsp的循环展开处理方法,其特征是:所述步骤5的具体方式包括如下步骤,

5.根据权利要求1...

【专利技术属性】
技术研发人员:胡勇华程奥博汤卓悠熊竟成刘澎
申请(专利权)人:湖南科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1