为机器指令分配功能单元的方法、装置、介质及设备与流程

文档序号:37672630发布日期:2024-04-18 20:45阅读:15来源:国知局
为机器指令分配功能单元的方法、装置、介质及设备与流程

本公开涉及指令处理,具体地,涉及一种为机器指令分配功能单元的方法、装置、介质及设备。


背景技术:

1、vliw(very long instruction word,超长指令字)处理器通过使用显式的指令级并行和硬件简化来提高性能和能耗比,总体而言,它的结构特点主要包括以下几个方面:首先,多功能单元,vliw处理器通常有多个功能单元,可以同时执行多个操作,从而提高了处理器的并行度;其次,硬件结构简单,相比于其它并行处理器(例如最常见的超标量处理器),vliw处理器的硬件实现通常更为简单,不在硬件层面进行指令乱序、流水线调度等操作,这降低了vliw处理器的设计难度和成本,并能够显著提高处理器的性能和降低功耗;另外,高度依赖编译器,vliw处理器的指令调度、分组、并发等都需要由编译器完成,编译器的编译结果直接影响vliw处理器的最终性能。

2、相关技术中,vliw处理器的功能单元分配方法主要有以下几类:1、固定分配,将指令按照固定的模式(例如根据指令类型、操作数特点等)分配到不同的功能单元中。这种方法简单易行,但是可能会导致某些功能单元无法充分被利用。2、平均分配,将所有指令平均分配到能够支持的功能单元上。这种方法与固定分配具有类似的优缺点,对于很多程序无法挖掘出处理器的最佳性能。3、自适应分配,通过对程序的静态或动态分析,对指令进行自适应的分组。这种方法可以更好地利用硬件资源,但是需要更多的硬件的支持,普通vliw处理器难以利用这种方法。4、数据流分配:根据数据流的特征,将指令按照数据依赖性进行分组,以最大化并行度。这种方法可以充分利用数据的并行性,但不同的处理器特点和不同的指令特点下,该方法的具体性能具有很大的差异。


技术实现思路

1、本公开的目的是提供一种为机器指令分配功能单元的方法、装置、介质及设备,能够有效提升处理器硬件资源的利用率,并减少寄存器溢出,从而提升程序的执行效率。

2、为了实现上述目的,第一方面,本公开提供一种为机器指令分配功能单元的方法,所述方法包括:

3、获取待分配功能单元的机器指令构成的有向无环图,其中,所述有向无环图中的节点与所述机器指令一一对应,所述有向无环图中的边表示所述机器指令之间的依赖关系;

4、根据所述有向无环图,对所述节点进行分组,得到多个节点集合,其中,所述节点集合中包括至少一条所述机器指令,且每一所述节点集合之间无交集;

5、获取多个功能单元集合,其中,每一所述功能单元集合中包含的功能单元的数量、种类均相同,且每一所述功能单元集合之间无交集;

6、分别确定每一所述节点集合被分配的所述功能单元集合;

7、针对每一所述功能单元集合,确定该功能单元集合对应的目标机器指令,并从该功能单元集合中确定为所述目标机器指令分配的目标功能单元,其中,所述目标机器指令包括被分配到该功能单元集合的所有节点集合中的所述机器指令。

8、可选地,所述根据所述有向无环图,对所述节点进行分组,得到多个节点集合,包括:

9、针对所述有向无环图中的每一节点,确定该节点的深度信息;

10、将所述有向无环图中满足如下条件的节点,加入至待处理节点队列中:不存在具有数据依赖关系的后继节点;

11、按照深度信息递减的顺序对所述待处理节点队列中的节点进行排序,得到排序后的待处理节点队列;

12、根据所述待处理节点队列以及所述有向无环图中各个节点之间的依赖关系,对所述节点进行分组,得到多个节点集合。

13、可选地,所述根据所述待处理节点队列以及所述有向无环图中各个节点之间的依赖关系,对所述节点进行分组,包括:

14、初始化已处理节点队列,并执行如下步骤,直至所述待处理节点队列中无节点:

15、从所述待处理节点队列中获取所述深度信息最大的节点,作为目标节点;

16、将所述目标节点从所述待处理节点队列中删除,并将所述目标节点加入至所述已处理节点队列和当前处理的节点集合中;

17、确定所述目标节点是否存在具有数据依赖关系的前驱节点;

18、若不存在所述前驱节点、或者存在所述前驱节点且所述前驱节点均属于所述已处理节点队列,则确定所述已处理节点队列中的节点数量是否小于所述有向无环图中的节点总数;

19、若所述节点数量小于所述节点总数,则将下一节点集合作为当前处理的节点集合,并重新执行所述从所述待处理节点队列中获取所述深度信息最大的节点,作为目标节点的步骤至所述确定所述目标节点是否存在具有数据依赖关系的前驱节点的步骤;

20、若所述节点数量等于所述节点总数,则结束;

21、若存在所述前驱节点、且所述前驱节点不属于所述已处理队列,则初始化空的前驱节点集合,将所述前驱节点加入至所述前驱节点集合中,分别确定每一所述前驱节点与所述目标节点之间的深度关系值,并将最大深度关系值对应的前驱节点从所述前驱节点集合中删除,针对当前前驱节点集合中的每一节点,若该节点不存在未处理的后继节点,则将该节点加入至所述待处理节点队列中,并根据该节点的深度信息确定在所述待处理节点队列中的位置。

22、可选地,所述前驱节点与所述目标节点之间的深度关系值是根据所述前驱节点的深度信息、所述前驱节点产生的数据被所述目标节点使用需要的延时拍数确定的。

23、可选地,所述分别确定每一所述节点集合被分配的所述功能单元集合,包括:

24、针对每一所述节点集合,将满足如下条件的功能单元集合,作为该节点集合所被分配的所述功能单元集合:当前已被分配到的所有节点集合中的总机器指令数量最少、且标记信息最小。

25、可选地,所述确定该功能单元集合对应的目标机器指令,并从该功能单元集合中确定为所述目标机器指令分配的目标功能单元,包括:

26、获取被分配到该功能单元集合的目标节点集合;

27、将所述目标节点集合中的机器指令作为所述目标机器指令;

28、根据所述目标机器指令的类型,从所述功能单元集合中确定为所述目标机器指令分配的所述目标功能单元。

29、可选地,所述机器指令为超长指令字处理器编译器中的机器指令,所述功能单元为细粒度功能单元。

30、第二方面,本公开提供一种为机器指令分配功能单元的装置,所述装置包括:

31、第一获取模块,用于获取待分配功能单元的机器指令构成的有向无环图,其中,所述有向无环图中的节点与所述机器指令一一对应,所述有向无环图中的边表示所述机器指令之间的依赖关系;

32、分组模块,用于根据所述有向无环图,对所述节点进行分组,得到多个节点集合,其中,所述节点集合中包括至少一条所述机器指令,且每一所述节点集合之间无交集;

33、第二获取模块,用于获取多个功能单元集合,其中,每一所述功能单元集合中包含的功能单元的数量、种类均相同,且每一所述功能单元集合之间无交集;

34、第一确定模块,用于分别确定每一所述节点集合被分配的所述功能单元集合;

35、第二确定模块,针对每一所述功能单元集合,确定该功能单元集合对应的目标机器指令,并从该功能单元集合中确定为所述目标机器指令分配的目标功能单元,其中,所述目标机器指令包括被分配到该功能单元集合的所有节点集合中的所述机器指令。

36、可选地,所述分组模块,包括:

37、第一确定子模块,用于针对所述有向无环图中的每一节点,确定该节点的深度信息;

38、处理子模块,用于将所述有向无环图中满足如下条件的节点,加入至待处理节点队列中:不存在具有数据依赖关系的后继节点;

39、排序子模块,用于按照深度信息递减的顺序对所述待处理节点队列中的节点进行排序,得到排序后的待处理节点队列;

40、分组子模块,用于根据所述待处理节点队列以及所述有向无环图中各个节点之间的依赖关系,对所述节点进行分组,得到多个节点集合。

41、可选地,所述分组子模块用于:

42、初始化已处理节点队列,并执行如下步骤,直至所述待处理节点队列中无节点:

43、从所述待处理节点队列中获取所述深度信息最大的节点,作为目标节点;

44、将所述目标节点从所述待处理节点队列中删除,并将所述目标节点加入至所述已处理节点队列和当前处理的节点集合中;

45、确定所述目标节点是否存在具有数据依赖关系的前驱节点;

46、若不存在所述前驱节点、或者存在所述前驱节点且所述前驱节点均属于所述已处理节点队列,则确定所述已处理节点队列中的节点数量是否小于所述有向无环图中的节点总数;

47、若所述节点数量小于所述节点总数,则将下一节点集合作为当前处理的节点集合,并重新执行所述从所述待处理节点队列中获取所述深度信息最大的节点,作为目标节点的步骤至所述确定所述目标节点是否存在具有数据依赖关系的前驱节点的步骤;

48、若所述节点数量等于所述节点总数,则结束;

49、若存在所述前驱节点、且所述前驱节点不属于所述已处理队列,则初始化空的前驱节点集合,将所述前驱节点加入至所述前驱节点集合中,分别确定每一所述前驱节点与所述目标节点之间的深度关系值,并将最大深度关系值对应的前驱节点从所述前驱节点集合中删除,针对当前前驱节点集合中的每一节点,若该节点不存在未处理的后继节点,则将该节点加入至所述待处理节点队列中,并根据该节点的深度信息确定在所述待处理节点队列中的位置。

50、可选地,所述第一确定模块用于:

51、针对每一所述节点集合,将满足如下条件的功能单元集合,作为该节点集合所被分配的所述功能单元集合:当前已被分配到的所有节点集合中的总机器指令数量最少、且标记信息最小。

52、可选地,所述第二确定模块包括:

53、获取子模块,用于获取被分配到该功能单元集合的目标节点集合;

54、第二确定子模块,用于将所述目标节点集合中的机器指令作为所述目标机器指令;

55、第三确定子模块,用于根据所述目标机器指令的类型,从所述功能单元集合中确定为所述目标机器指令分配的所述目标功能单元。

56、第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面提供的所述方法的步骤。

57、第四方面,本公开提供一种电子设备,包括:

58、存储器,其上存储有计算机程序;

59、处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面提供的所述方法的步骤。

60、通过上述技术方案,基于有向无环图分析机器指令之间的依赖关系,根据有向无环图对节点进行分组,分别确定每一节点集合被分配的功能单元集合,能够更好地均衡每个功能单元执行的指令总数和优化总的指令执行周期。分配功能单元时尽可能考虑了指令之间的依赖关系,减小了后续编译过程中不同功能单元直接有数据依赖可能产生的数据复制的情况,可以显著的提高机器指令在目标处理器上的指令级并发性,从而提高源程序在处理器上的执行效率。对于源程序中本身包含较好的并行数据流的情况,该方案能够将多个数据流的指令很好的平均分配的各个处理器的功能单元上,对于源程序中无明显对称的并行数据流的情况,该方案仍然能够大致平均的将所有的机器指令分配给各个能支持的细分功能单元上,保证处理器的功能单元尽可能得到平均的分配方案,提升处理器硬件资源的利用率,并减少寄存器溢出,从而提升程序的执行效率。

61、本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1