跳跃式指令拆分与发射方法、系统、介质、终端及程序产品与流程

摘要: 本申请涉及指令拆分与发射,特别是涉及一种跳跃式指令拆分与发射方法、系统、介质、终端及程序产品。背景技术:1、在ai加速器中,gridsample、插值、特征图处...
跳跃式指令拆分与发射方法、系统、介质、终端及程序产品与流程

本申请涉及指令拆分与发射,特别是涉及一种跳跃式指令拆分与发射方法、系统、介质、终端及程序产品。

背景技术:

1、在ai加速器中,gridsample、插值、特征图处理等算子常以w维和k维组成逻辑数据块,例如w32k4。硬件控制器通常会将一条指令拆分为多个uop,再由存储访问模块、计算模块和写回模块流水执行。

2、当一个逻辑块被拆分为多个更小子块时,直观的uop发射方式是按块内顺序连续发射,例如先发 w32_0_sub0,再发 w32_0_sub1,然后发 w32_1_sub0、w32_1_sub1。这种块内连续顺序在控制上简单,但在数据空间具有局部性的场景中,相邻 uop 的访问地址往往首尾相接或距离很近,容易落入同一 bank group、同一 cache line、同一存储冲突检测窗口、同一写回合并窗口或相邻半区。

3、上述相邻uop首尾地址冲突会增加l1读写仲裁冲突、bank conflict检测冲突、non-linear 读调度冲突、写回队列冲突或merge/schedule逻辑冲突,使流水出现backpressure、bubble或额外等待。尤其在uop持续1/cycle发射时,相邻uop的地址相关性会直接影响存储访问并行度和流水稳定性。

4、因此,有必要提供一种跳跃式指令拆分与发射方法、系统、介质、终端及程序产品,旨在解决因指令拆分后微操作顺序发射导致存储访问冲突加剧的问题。

技术实现思路

1、鉴于以上所述现有技术的缺点,本申请的目的在于提供一种跳跃式指令拆分与发射方法、系统、介质、终端及程序产品,用于解决上述问题。

2、为实现上述目的及其他相关目的,本申请的第一方面提供一种跳跃式指令拆分与发射方法,包括:获取待执行指令及对应的数据空间,将所述数据空间划分为多个逻辑块,并将每个所述逻辑块拆分为数量相同的多个子块,为各所述子块生成对应的微操作;其中,不同逻辑块中的对应子块具有相同的子块序号;按照预设发射顺序发射各所述微操作;其中,所述预设发射顺序包括:针对当前子块序号,按照多个逻辑块的排列顺序,依次从各所述逻辑块中选取具有所述当前子块序号的子块对应的微操作;在完成所述多个逻辑块的遍历后,按照预设子块遍历顺序,将下一待遍历子块序号确定为新的当前子块序号,并重新按照所述多个逻辑块的排列顺序依次选取对应的微操作,直至完成各所述逻辑块中全部子块对应微操作的发射。

3、于本申请的第一方面的一些实施例中,所述按照预设发射顺序发射各所述微操作,其具体过程包括:获取自然发射计数,所述自然发射计数随微操作的发射逐个累加;基于自然发射计数采用预设映射函数计算当前待发射微操作对应的逻辑块和子块。

4、于本申请的第一方面的一些实施例中,所述预设映射函数具体包括:基于所述自然发射计数与所述多个逻辑块的总数进行取模计算获取所述当前待发射微操作对应的逻辑块;基于所述自然发射计数与所述多个逻辑块的总数进行整除计算,获得当前逻辑块遍历轮次,并根据所述当前逻辑块遍历轮次和所述预设子块遍历顺序确定当前子块索引;当所述预设子块遍历顺序为按照子块序号递增的顺序时,将所述当前逻辑块遍历轮次确定为所述当前子块索引。

5、于本申请的第一方面的一些实施例中,每个所述逻辑块的子块数量根据所述待执行指令的数据类型确定,具体的:当所述数据类型为第一数据类型时,所述子块数量为两个;当所述数据类型为第二数据类型时,所述子块数量为四个;所述第一数据类型的位宽小于所述第二数据类型的位宽。

6、于本申请的第一方面的一些实施例中,所述逻辑块为w32k4逻辑块。

7、于本申请的第一方面的一些实施例中,所述预设子块遍历顺序为按照子块序号递增的顺序,或者为根据各所述子块对应的存储地址分布确定的子块优先级顺序。

8、为实现上述目的及其他相关目的,本申请的第二方面提供一种跳跃式指令拆分与发射系统,包括:指令拆分模块,用于获取待执行指令及对应的数据空间,将所述数据空间划分为多个逻辑块,并将每个所述逻辑块拆分为数量相同的多个子块,为各所述子块生成对应的微操作;其中,不同逻辑块中的对应子块具有相同的子块序号;发射控制模块,用于按照预设发射顺序发射各所述微操作;其中,所述预设发射顺序包括:针对当前子块序号,按照多个逻辑块的排列顺序,依次从各所述逻辑块中选取具有所述当前子块序号的子块对应的微操作;在完成所述多个逻辑块的遍历后,将下一子块序号确定为新的当前子块序号,并重新按照所述多个逻辑块的排列顺序依次选取对应的微操作,直至完成各所述逻辑块中全部子块对应微操作的发射。

9、为实现上述目的及其他相关目的,本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述跳跃式指令拆分与发射方法。

10、为实现上述目的及其他相关目的,本申请的第四方面提供一种计算机程序产品,所述计算机程序产品中包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得所述计算机实现所述跳跃式指令拆分与发射方法。

11、为实现上述目的及其他相关目的,本申请的第五方面提供一种电子终端,包括存储器、处理器及存储在存储器上的计算机程序;所述处理器执行所述计算机程序以实现所述跳跃式指令拆分与发射方法。

12、如上所述,本申请具有以下有益效果:

13、本申请通过将待执行指令对应的数据空间划分为多个逻辑块,并将各逻辑块拆分为数量相同的多个子块,在微操作发射过程中保持当前子块序号不变,依次跨多个逻辑块选取对应子块的微操作,待完成一轮逻辑块遍历后再切换子块序号,使相邻发射的微操作由访问同一逻辑块内的相邻子块转变为访问不同逻辑块中的对应子块,从而增大相邻微操作之间的地址跨度,降低前一微操作尾地址与后一微操作首地址落入同一存储冲突检测窗口、同一bank group或同一写回合并窗口的概率,减少存储访问仲裁冲突、bank冲突、调度冲突及写回冲突,降低流水阻塞和空泡产生的可能性。

14、同时,本申请可通过自然发射计数及预设映射函数确定当前逻辑块索引和当前子块索引,无需针对不同数据类型设置复杂的独立发射状态,能够在维持微操作连续发射吞吐的情况下实现跳跃式发射。此外,本申请无需改变原有数据存储布局,也无需增加存储端口、扩大缓冲队列或降低微操作发射频率,有利于降低硬件面积开销和控制复杂度,提高存储访问并行度及硬件流水运行稳定性。

1.一种跳跃式指令拆分与发射方法,其特征在于,包括:

2.根据权利要求1所述的跳跃式指令拆分与发射方法,其特征在于,所述按照预设发射顺序发射各所述微操作,其具体过程包括:

3.根据权利要求2所述的跳跃式指令拆分与发射方法,其特征在于,所述预设映射函数具体包括:

4.根据权利要求1所述的跳跃式指令拆分与发射方法,其特征在于,每个所述逻辑块的子块数量根据所述待执行指令的数据类型确定,具体的:

5.根据权利要求1所述的跳跃式指令拆分与发射方法,其特征在于,所述逻辑块为w32k4逻辑块。

6.根据权利要求1所述的跳跃式指令拆分与发射方法,其特征在于,所述预设子块遍历顺序为按照子块序号递增的顺序,或者为根据各所述子块对应的存储地址分布确定的子块优先级顺序。

7.一种跳跃式指令拆分与发射系统,其特征在于,包括:

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述跳跃式指令拆分与发射方法。

9.一种计算机程序产品,其特征在于,所述计算机程序产品中包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得所述计算机实现如权利要求1至6中任一项所述跳跃式指令拆分与发射方法。

10.一种电子终端,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至6中任一项所述跳跃式指令拆分与发射方法。