System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种硬件循环指令循环地址设置方法技术_技高网

一种硬件循环指令循环地址设置方法技术

技术编号:41658938 阅读:5 留言:0更新日期:2024-06-14 15:20
本发明专利技术涉及一种硬件循环指令循环地址设置方法,所述硬件支持硬件循环指令,包括多个loopstep寄存器,包括多个looplayer寄存器,用于执行循环地址设置方法函数程序;所述函数在硬件循环指令的循环迭代变量增长时,按照loopstep寄存器中存储的地址步长,同步增加计算指令的参数地址,得到硬件循环指令中的参数地址LoopAddress;包括以下步骤:S1、将函数中所有的Basic Block按照Basic Block间的跳转关系进行排序,使得顺序遍历函数中的所有Basic Block时满足循环间的嵌套关系;S2、根据循环间的嵌套关系,自底向上计算循环的LoopStepID和LoopLayerID,并将公共的loopstep设置函数提升至父循环;自顶向下修正嵌套循环中的LoopStepID;根据LoopStepID和LoopLayerID,生成LoopAddress设置函数。有益效果是避免多项式计算指令性能开销。

【技术实现步骤摘要】

【】本专利技术涉及计算机,具体涉及一种硬件循环指令循环地址设置方法


技术介绍

0、
技术介绍

1、为提高指令发射效率、减少分支跳转预测失败时的指令周期浪费,许多硬件架构(npu(neural-network processing units)、dsp(digital signal processing)等)采用硬件循环指令来改进循环语句的执行效率。

2、目前的硬件架构通过包含循环迭代变量的多项式计算指令得到硬件循环中计算指令的参数地址。参数地址的多项式计算指令势必会影响指令发射效率,增加程序执行时间。

3、现有技术的方案:骁龙处理器中的qualcomm hexagon数字信号处理器(dsp)支持多种多媒体功能,并且经过优化可实现高性能和高能效。为提高性能,hexagon实现了dsp架构下的硬件循环指令。但是hexagon dsp架构通过包含循环迭代变量的多项式计算指令得到硬件循环中计算指令的参数地址。

4、现有技术的缺点:hexagon dsp架构通过包含循环迭代变量的多项式计算指令得到硬件循环中计算指令的参数地址,发射指令条数较多。

5、在深度学习领域的应用场景中循环语句使用频繁且循环嵌套层级较多。对于类似npu的深度学习处理器架构,采用包含循环迭代变量的多项式计算指令得到硬件循环中计算指令的参数地址,在程序执行时将会发射大量的多项式计算指令,性能较低。

6、本专利技术针对深度学习处理器架构采用包含循环迭代变量的多项式计算指令得到硬件循环中计算指令的参数地址、性能较低的技术问题,对硬件循环指令循环地址设置方法进行了技术改进。


技术实现思路

0、
技术实现思路

1、本专利技术的目的是,提供一种根据loopstep寄存器、looplayer寄存器计算硬件循环指令参数地址,避免多项式计算指令性能开销的方法。

2、为实现上述目的,本专利技术采取的技术方案是一种硬件循环指令循环地址设置方法,所述硬件支持硬件循环指令,包括多个loopstep寄存器用于指定地址步长,包括多个looplayer寄存器用于指定嵌套循环中的循环层级,用于执行循环地址设置方法函数程序;所述函数在硬件循环指令的循环迭代变量增长时,按照loopstep寄存器中存储的地址步长,同步增加计算指令的参数地址,得到硬件循环指令中的参数地址loopaddress;具体包括以下步骤:

3、s1、reorder basic block,基本块重排序:将函数中所有的basic block按照basic block间的跳转关系进行排序,使得顺序遍历函数中的所有basic block时满足循环间的嵌套关系;

4、s2、legalize loop address,循环地址合法化:根据循环间的嵌套关系,自底向上计算循环的loopstepid和looplayerid,并将公共的loopstep设置函数提升至父循环;自顶向下修正嵌套循环中的loopstepid;根据loopstepid和looplayerid,生成loopaddress设置函数。

5、优选地,步骤s1包括以下步骤:

6、s11、链接后继blocks:对于函数中每一个basic block,为所述basic block创建chain;如果所述basic block与其后继basic block满足链接后继blocks的链接条件,那么将其后继basic block链接至所述basic block所在的chain,并设置chain的起始basicblock集合为所述basic block;否则处理函数中的下一个basic block,直到函数中的所有basic block处理完成,得到函数中所有chain组成的chains;

7、所述链接后继blocks的链接条件:

8、a、本basic block和其后继basic block之间没有结束语句;

9、b、本basic block和其后继basic block之间为直接跳转的结束语句;

10、c、本basic block和其后继basic block之间为条件跳转的结束语句,条件跳转语句有两个basic block,且其中一个basic block为本basic block。

11、优选地,步骤s1还包括以下步骤:

12、s12、删除重复blocks,删除步骤s11得到chains中的多个chain存在的重复bb,具体地,

13、s121、获得某个重复basic block所在的多个chain;

14、s122、逆序遍历多个chain,获得多个chain中首个重复basic block;

15、s123、将多个chain中不同的basic block按顺序链接至同一个newchain,并加入chains;

16、s124、设置newchain的起始basic block集合为多个chain中各自的起始basicblock集合的并集;

17、s125、删除原来的多个chain。

18、优选地,步骤s1还包括以下步骤:

19、s13、链接所有blocks,从函数入口basic block,即entrybb所在的chain开始,链接步骤s12得到的所有chains中的每个chain,将函数的entrybb所在的chain添加至队列worklist,具体地,

20、s131、将worklist的首元素作为curchain,将curchain添加至有序链表chainlist;

21、s132、对于curchain中的末尾basic block中结束语句中的所有后继basic block所在的chain,如果后继basic block所在的chain满足添加条件则添加至worklist;

22、s133、删除worklist的首元素,如果worklist不为空,执行步骤s131,否则执行步骤s134;

23、s134、将chainlist中所有的chain按顺序合并到entrybb所在的chain末尾。

24、优选地,步骤s1还包括以下步骤:

25、s14、按照entrybb所在的chain中的所有basic block的顺序,生成函数代码。

26、优选地,步骤s2包括以下步骤:

27、s21、建立嵌套循环的层级关系,依据步骤s14得到的函数,顺序遍历函数中的所有basic block,建立硬件循环的父子依赖关系;

28、对于函数中的所有独立的嵌套循环执行如下处理:

29、从最内层子循环开始,自底向上,逐层遍历父循环,根据每个循环的loopid,建立loopid与硬件循环的映射关系。

30、优选地,步骤s2还包括以下步骤:

31、s22、对于步骤s14得到本文档来自技高网...

【技术保护点】

1.一种硬件循环指令循环地址设置方法,所述硬件支持硬件循环指令,包括多个loopstep寄存器用于指定地址步长,包括多个looplayer寄存器用于指定嵌套循环中的循环层级,用于执行循环地址设置方法函数程序;其特征在于所述函数在硬件循环指令的循环迭代变量增长时,按照loopstep寄存器中存储的地址步长,同步增加计算指令的参数地址,得到硬件循环指令中的参数地址LoopAddress;具体包括以下步骤:

2.根据权利要求1所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S1包括以下步骤:

3.根据权利要求2所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S1还包括以下步骤:

4.根据权利要求3所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S1还包括以下步骤:

5.根据权利要求4所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S1还包括以下步骤:

6.根据权利要求5所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S2包括以下步骤:

7.根据权利要求6所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S2还包括以下步骤:

8.根据权利要求7所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S22包括以下步骤:

9.根据权利要求8所述的一种硬件循环指令循环地址设置方法,其特征在于步骤S2还包括以下步骤:

...

【技术特征摘要】

1.一种硬件循环指令循环地址设置方法,所述硬件支持硬件循环指令,包括多个loopstep寄存器用于指定地址步长,包括多个looplayer寄存器用于指定嵌套循环中的循环层级,用于执行循环地址设置方法函数程序;其特征在于所述函数在硬件循环指令的循环迭代变量增长时,按照loopstep寄存器中存储的地址步长,同步增加计算指令的参数地址,得到硬件循环指令中的参数地址loopaddress;具体包括以下步骤:

2.根据权利要求1所述的一种硬件循环指令循环地址设置方法,其特征在于步骤s1包括以下步骤:

3.根据权利要求2所述的一种硬件循环指令循环地址设置方法,其特征在于步骤s1还包括以下步骤:

<...

【专利技术属性】
技术研发人员:何忠政许晓智贺光辉徐宁仪章健勇
申请(专利权)人:北京辉羲智能科技有限公司
类型:发明
国别省市:

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

1