CN117827287A - 指令级并行调度方法、装置、电子设备及存储介质 - Google Patents

指令级并行调度方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117827287A
CN117827287A CN202211204579.4A CN202211204579A CN117827287A CN 117827287 A CN117827287 A CN 117827287A CN 202211204579 A CN202211204579 A CN 202211204579A CN 117827287 A CN117827287 A CN 117827287A
Authority
CN
China
Prior art keywords
operand
dag
operands
instruction
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211204579.4A
Other languages
English (en)
Inventor
刘炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN202211204579.4A priority Critical patent/CN117827287A/zh
Priority to PCT/CN2023/115697 priority patent/WO2024066875A1/zh
Publication of CN117827287A publication Critical patent/CN117827287A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本申请公开了指令级并行调度方法、装置、电子设备及存储介质,所述指令级并行调度方法包括:获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。本申请解决了现有技术中由于指令之间存在依赖而导致发射效率低的技术问题。

Description

指令级并行调度方法、装置、电子设备及存储介质
技术领域
本申请涉及处理器技术领域,尤其涉及一种指令级并行调度方法、装置、电子设备及存储介质。
背景技术
在支持指令级并行的平台上,往往每个周期可以发射多条指令,即同时执行多条指令。然而目前的指令级并行是基于无关依赖指令之间的并行化处理,而针对于存在依赖的指令,指令间存在输出依赖关系,通常无法在并行发射,影响指令发射的效率。
发明内容
本申请的主要目的在于提供一种指令级并行调度方法、装置、电子设备及存储介质,旨在解决现有技术中由于指令之间存在依赖而导致发射效率低的技术问题。
为实现上述目的,本申请提供一种指令级并行调度方法,所述指令级并行调度方法包括:
获取指令集合对应的DAG(Directed Acyclic Graph,有向无环)关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
可选地,所述根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图的步骤包括:
在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数;
依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表;
返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。
可选地,所述依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表的步骤包括:
构建所述第一目标操作数和所述第二目标操作数之间的基本运算;
通过将所述基本运算插入所述原始DAG关系图,更新所述原始DAG关系图;
将所述基本运算对应的中间结果操作数加入所述中间操作数列表,通过对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
可选地,所述通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数的步骤包括:
通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算DAG树;
通过遍历各所述相同运算DAG树,查找具有依赖关系的各相同运算;
获取各所述相同运算对应的操作数,在各所述操作数中删除结果操作数,得到各中间操作数。
可选地,所述根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
确定各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;
根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
通过遍历所述DAG关系图,确定硬件资源限制参数;
根据所述硬件资源限制参数、各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述生成各所述中间操作数共同对应的原始DAG关系图的步骤包括:
在所述DAG关系图中删除与各所述中间操作数无关的运算指令,得到原始DAG关系图;和/或
根据各所述中间操作数在所述DAG关系图中对应的原先运算指令,生成原始DAG关系图。
为实现上述目的,本申请还提供一种指令级并行调度装置,所述指令级并行调度装置包括:
操作数查找模块,用于获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
操作数排序模块,用于根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
依赖关系破除模块,用于生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
并行调度模块,用于依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
可选地,所述依赖关系破除模块还用于:
在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数;
依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表;
返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。
可选地,所述依赖关系破除模块还用于:
构建所述第一目标操作数和所述第二目标操作数之间的基本运算;
通过将所述基本运算插入所述原始DAG关系图,更新所述原始DAG关系图;
将所述基本运算对应的中间结果操作数加入所述中间操作数列表,通过对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
可选地,所述操作数查找模块还用于:
通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算DAG树;
通过遍历各所述相同运算DAG树,查找具有依赖关系的各相同运算;
获取各所述相同运算对应的操作数,在各所述操作数中删除结果操作数,得到各中间操作数。
可选地,所述操作数排序模块还用于:
各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;
根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述操作数排序模块还用于:
通过遍历所述DAG关系图,确定硬件资源限制参数;
根据所述硬件资源限制参数、各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述依赖关系破除模块还用于:
在所述DAG关系图中删除与各所述中间操作数无关的运算指令,得到原始DAG关系图;和/或
根据各所述中间操作数在所述DAG关系图中对应的原先运算指令,生成原始DAG关系图。
本申请还提供一种电子设备,所述电子设备为实体设备,所述电子设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述指令级并行调度方法的程序,所述指令级并行调度方法的程序被处理器执行时可实现如上述的指令级并行调度方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有实现指令级并行调度方法的程序,所述指令级并行调度方法的程序被处理器执行时实现如上述的指令级并行调度方法的步骤。
本申请提供了一种指令级并行调度方法、装置、电子设备及存储介质,也即获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图,从而实现了根据操作数的就绪顺序来构建指令集合的目标DAG关系图,依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度,可以实现依据操作数的就绪顺序,顺序对指令进行并行调度,破除了指令之间的依赖关系对指令并行调度的影响,所以提升了对存在依赖的指令的发射效率,解决了由于指令之间存在依赖而导致发射效率低的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请指令级并行调度方法第一实施例的流程示意图;
图2本申请指令级并行调度方法一实施例中DAG关系图的示意图;
图3为本申请指令级并行调度方法一实施例中DAG关系图对应的原始DAG关系图的示意图;
图4为本申请指令级并行调度方法一实施例中在原始DAG关系图中插入基本运算的示意图;
图5为本申请指令级并行调度方法一实施例中目标DAG关系图的示意图;
图6为本申请指令级并行调度方法第二实施例的流程示意图;
图7本申请指令级并行调度装置一实施例中的装置示意图;
图8为本申请实施例中指令级并行调度方法涉及的硬件运行环境的设备结构示意图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本申请保护的范围。
参照图1,本申请实施例提供一种指令级并行调度方法,在本申请指令级并行调度方法的第一实施例中,所述指令级并行调度方法包括:
步骤S10,获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
步骤S20,根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
步骤S30,生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
步骤S40,依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
在本实施例中,需要说明的是,所述指令集合至少包括一指令,所述DAG关系图为根据各指令对应的指令信息生成的关系图,该DAG关系图包含指令对应的操作数之间的依赖关系以及运算关系等信息。
作为一种示例,参照图2,图2为本申请一实施例中DAG关系图的示意图,其中,a、b、c、d、t1、t2、t3、t4、t5、t6、t8、t9、t10和t11均为指令对应的操作数,*、+、/、-、shl、and和or均为基本运算,1、3和16均为就绪周期数,也即在该就绪周期数之后,该就绪周期数对应的操作数已就绪,对应的指令可以发射。
所述中间操作数为具有依赖关系的各运算指令对应的操作数,且该中间操作数不为这些具有依赖关系的各运算指令的结果操作数,也即不为运算结果。作为一种示例,进一步参照图2,图2中具有依赖关系的各加法运算分别为a+b,t1+t2,t9+t3,t10+t4,包含的操作数分别a、b、t1、t2、t9、t3、t10和t4,删除各结果操作数,得到的各中间操作数为a、b、t1、t3和t4。
作为一种示例步骤S10至步骤S40包括:获取根据指令集合中各指令的指令信息生成的DAG关系图;通过遍历所述DAG关系图,在所述DAG关系图中查找具有依赖关系的各相同运算指令对应的中间操作数;根据各所述中间操作数在DAG关系图中的就绪顺序,将各所述中间操作数从先就绪到后就绪进行排序,得到中间操作数列表;根据各所述中间操作数之间的关联关系,重新生成DAG关系图,得到原始DAG关系图,根据所述中间操作数列表的排列优先级,将各中间操作数和各中间操作数之间的运算结果顺序插入所述原始DAG关系图,得到目标DAG关系图;根据所述目标DAG关系图中各指令对应的深度,对所述指令集合中的指令进行并行调度,其中,由于目标DAG关系图中各指令对应的深度是和目标DAG关系图中操作数的就绪顺序相符合的,各指令之间无依赖关系,因此实现了破除指令之间的依赖关系的目的。
其中,所述生成各所述中间操作数共同对应的原始DAG关系图的步骤包括:
步骤A10,在所述DAG关系图中删除与各所述中间操作数无关的运算指令,得到原始DAG关系图;
作为一种示例,需要说明的是,所述原始DAG关系图可以在指令集合对应的DAG关系图进行调整得到。
作为一种示例,步骤A10包括:在所述DAG关系图中确定各中间操作数相关的运算指令;在所述DAG关系图中将除各中间操作数相关的运算指令之外的指令进行删除,得到原始DAG关系图。
步骤B10,根据各所述中间操作数在所述DAG关系图中对应的原先运算指令,生成原始DAG关系图。
作为一种示例,所述原始DAG关系图可以是基于各中间操作数对应的指令信息重新生成的DAG关系图。
作为一种示例,步骤B10包括:确定各所述中间操作数在所述DAG关系图的原先运算指令,基于原先运算指令对应的指令信息,生成原始DAG关系图。
作为一种示例,参照图3,图3为本申请一实施例中DAG关系图对应的原始DAG关系图的示意图,该原始DAG关系图可以在图2中的DAG关系图的基础上进行调整得到,图2具有依赖关系的各加法运算分别为a+b,t1+t2,t9+t3,t10+t4,包含的操作数分别a、b、t1、t2、t9、t3、t10和t4,删除各结果操作数,得到的各中间操作数为a、b、t1、t3和t4,各中间操作排序得到的中间操作数列表为a(0)、b(0)、t1(1)、t3(3)和t4(16),其中,0、1、3和16为就绪周期数,进而根据中间操作数列表,在图2中的DAG关系图中删除与各所述中间操作数无关的运算指令,即可得到原始DAG关系图。
其中,所述根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图的步骤包括:
步骤S31,在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数;
步骤S32,依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表;
步骤S33,返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。
作为一种示例,步骤S31至步骤S33包括:在所述中间操作数列表中取出就绪顺序排序靠前的第一目标操作数和第二目标操作数;根据DAG关系图中各操作数之间的运算关系,构建所述第一目标操作数和所述第二目标操作数之间的基本运算;通过将所述基本运算插入所述原始DAG关系图以及将所述基本运算的运算结果插入所述中间操作数列表,更新所述原始DAG关系图以及所述中间操作数列表;返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。本申请实施例实现了根据中间操作数列表中操作数的就绪顺序,循环将各中间操作数和各中间操作数对应的运算结果顺序插入原始DAG关系图,可以保证目标DAG关系图中的运算指令之间无依赖关系。
其中,所述依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表的步骤包括:
步骤S321,构建所述第一目标操作数和所述第二目标操作数之间的基本运算;
步骤S322,通过将所述基本运算插入所述原始DAG关系图,更新所述原始DAG关系图;
步骤S323,将所述基本运算对应的中间结果操作数加入所述中间操作数列表,通过对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
作为一种示例,步骤S321至步骤S323包括:根据所述第一目标操作数和所述第二目标操作数在所述DAG关系图中的运算关系,构建所述第一目标操作数和所述第二目标操作数之间的基本运算,通过将所述基本运算以及所述基本运算的运算结果插入所述原始DAG关系图,更新所述原始DAG关系图,其中,该运算结果可以为中间结果操作数;将所述基本运算对应的中间结果操作数加入所述中间操作数列表,根据中间操作数列表中各操作数的就绪顺序,通过重新对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
作为一种示例,参照图4,图4为本申请一实施例中在原始DAG关系图中插入基本运算的示意图,图4中的DAG关系图为在图3中的原始DAG关系图的基础上插入a和b之间的基本运算得到的DAG关系图,其中,a为第一目标操作数,b为第二目标操作数,s1为a和b共同对应的运算结果,也即为中间结果操作数,相应地,更新后的中间操作数列表为s1(1),t4(1),t1(3),t3(16)。
作为一种示例,进一步参照图5,图5为本申请一实施例中目标DAG关系图的示意图,在图4中的DAG关系图的基础上,循环将中间操作数列表中的中间操作数进行顺序插入,即可得到图5中的目标DAG关系图。
其中,所述通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数的步骤包括:
步骤S11,通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算DAG树;
步骤S12,通过遍历各所述相同运算DAG树,查找具有依赖关系的各相同运算;
步骤S13,获取各所述相同运算对应的操作数,在各所述操作数中删除结果操作数,得到各中间操作数。
在本实施例中,需要说明的是,所述DAG关系图可以由至少一颗DAG树组成。
作为一种示例,步骤S11至步骤S13包括:通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算对应的相同运算DAG树;通过遍历各所述相同运算DAG树,查找具有相互依赖关系的各相同运算;提取各所述相同运算对应的操作数,得到操作数列表;在所述操作数列表中删除作为结果操作数的操作数,得到各中间操作数。
本申请实施例提供了一种指令级并行调度方法,也即获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图,从而实现了根据操作数的就绪顺序来构建指令集合的目标DAG关系图,依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度,可以实现依据操作数的就绪顺序,顺序对指令进行并行调度,破除了指令之间的依赖关系对指令并行调度的影响,所以提升了对存在依赖的指令的发射效率,解决了由于指令之间存在依赖而导致发射效率低的技术问题。
进一步地,参照图6,在本申请另一实施例中,与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述。所述根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
步骤S21,确定各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;
步骤S22,根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
在本实施例中,需要说明的是,在对各中间操作数进行排序时,常常会出现多个中间操作数对应的就绪周期数一致的情况,此时可以考虑中间操作数对应的操作数来源类型作为进一步进行排序的依据。对于长流水类型的中间操作数,由于系统延时以及系统资源限制等诸多因素,长流水类型的中间操作数对应的真实就绪周期数往往会大于DAG关系图中所给出的参考就绪周期数。
作为一种示例,步骤S21至步骤S22包括:确定各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;依据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到初步中间操作数列表;根据各所述操作数来源类型,对初步中间操作数列表的排序顺序进行微调,得到中间操作数列表。
作为一种示例,所述根据各所述操作数来源类型,对初步中间操作数列表的排序顺序进行微调,得到中间操作数列表的步骤包括:
确定所述初步中间操作数列表中就绪顺序相同的各目标中间操作数,若各目标中间操作数对应的操作数来源类型中存在长流水类型,则将属于长流水类型的目标中间操作数在所述初步中间操作数列表进行后移,其中,后移的距离可以自行设定,例如后移1个排列位置或者后移2个排列位置等。
作为一种示例,所述根据各所述操作数来源类型,对初步中间操作数列表的排序顺序进行微调,得到中间操作数列表的步骤包括:
根据各所述操作数来源类型,在所述初步中间操作数列表中确定属于长流水类型的各目标中间操作数;将各目标中间操作数在初步中间操作数列表中后移预设排列位置数,得到中间操作数列表,其中,预设排列位置数可以自行设定,例如1个排列位置或者2个排列位置等。
其中,所述根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
步骤S221,通过遍历所述DAG关系图,确定硬件资源限制参数;
步骤S222,根据所述硬件资源限制参数、各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
在本实施例中,需要说明的是,由于设备的硬件资源存在限制,因此对于长流水类型的中间操作数,真实就绪周期数往往会大于DAG关系图中所给出的参考就绪周期数。所述硬件资源限制参数为设备在一个就绪周期内的最大指令发射数量,若当前可并行发射的指令数量大于硬件资源限制参数,则原本需要并行发射的指令则会部分变为串行发射,从而会导致真实就绪周期数往往会大于DAG关系图中所给出的参考就绪周期数。
作为一种示例,步骤S221至步骤S222包括:通过遍历所述DAG关系图,确定设备在一个就绪周期内的最大指令发射数量,得到硬件资源限制参数;各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到初步中间操作数列表;根据硬件资源限制参数,在所述初步中间操作数列表中检测是否存在目标列表片段,其中,所述目标列表片段为具备相同就绪顺序的中间操作数构成的列表片段,且所述目标列表片段中的中间操作数的数量大于硬件资源限制参数;若不存在目标列表片段,则将初步中间操作数列表作为中间操作数列表;若存在目标列表片段,则根据目标列表片段中中间操作数对应的操作数来源类型,将目标列表片段中的中间操作数在初步中间操作数列表中的排列位置进行选择性后移,直至目标列表片段中的中间操作数的数量不大于硬件资源限制参数,并返回执行步骤:根据硬件资源限制参数,在所述初步中间操作数列表中检测是否存在目标列表片段,直至检测到初步中间操作数列表中不存在目标列表片段。本申请实施例在对中间操作数进行排序时,同时考虑了硬件资源限制和中间操作数的操作数来源类型对于指令并行发射的影响,可以进一步提升对各中间操作数进行排序的准确度,使得根据中间操作数生成的目标DAG关系图更加符合实际应用场景,可进一步提升指令的发射效率。
作为一种示例,所述根据目标列表片段中中间操作数对应的操作数来源类型,将目标列表片段中的中间操作数在初步中间操作数列表中的排列位置进行选择性后移的步骤包括:
根据目标列表片段中的中间操作数对应的操作数来源类型,检测所述目标列表片段是否存在长流水类型的中间操作数;若不存在长流水类型的中间操作数,则在目标列表片段中随机选取中间操作数进行后移,若存在长流水类型的中间操作数,则将目标列表片段中长流水类型的中间操作数在初步中间操作数列表中的排列位置进行后移;检测目标列表片段的中间操作数的数量是否大于硬件资源限制参数,若大于硬件资源限制参数,则返回执行步骤:根据目标列表片段中中间操作数对应的操作数来源类型,检测所述目标列表片段是否存在长流水类型的中间操作数;若不大于硬件资源限制参数,则判定目标列表片段中的中间操作数已后移完毕。
本申请实施例提供了一种中间操作数排序方法,也即确定各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。本申请实施例在对中间操作数进行排序时,在依据中间操作数在DAG关系图中的参考就绪顺序进行排序的基础上,还考虑到了中间操作数是否属于长流水类型对于真实就绪顺序的影响,本申请实施例中对各中间操作数进行排序的方式更加符合指令并行发射时的真实应用场景,因此可以提升对各中间操作数进行排序的准确度,从而基于中间操作数列表构建的目标DAG关系图进行指令并行发射的过程会更加符合真实应用场景,可进一步提升指令并行发射的效率。
为实现上述目的,参照图7,本申请还提供一种指令级并行调度装置,所述指令级并行调度装置包括:
操作数查找模块10,用于获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
操作数排序模块20,用于根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
依赖关系破除模块30,用于生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
并行调度模块40,用于依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
可选地,所述依赖关系破除模块30还用于:
在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数;
依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表;
返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。
可选地,所述依赖关系破除模块30还用于:
构建所述第一目标操作数和所述第二目标操作数之间的基本运算;
通过将所述基本运算插入所述原始DAG关系图,更新所述原始DAG关系图;
将所述基本运算对应的中间结果操作数加入所述中间操作数列表,通过对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
可选地,所述操作数查找模块10还用于:
通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算DAG树;
通过遍历各所述相同运算DAG树,查找具有依赖关系的各相同运算;
获取各所述相同运算对应的操作数,在各所述操作数中删除结果操作数,得到各中间操作数。
可选地,所述操作数排序模块20还用于:
各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;
根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述操作数排序模块20还用于:
通过遍历所述DAG关系图,确定硬件资源限制参数;
根据所述硬件资源限制参数、各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
可选地,所述依赖关系破除模块30还用于:
在所述DAG关系图中删除与各所述中间操作数无关的运算指令,得到原始DAG关系图;和/或
根据各所述中间操作数在所述DAG关系图中对应的原先运算指令,生成原始DAG关系图。
本申请提供的指令级并行调度装置,采用上述实施例中的指令级并行调度方法,解决了由于指令之间存在依赖而导致发射效率低的技术问题。与现有技术相比,本申请实施例提供的指令级并行调度装置的有益效果与上述实施例提供的指令级并行调度方法的有益效果相同,且该指令级并行调度装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
本申请实施例提供一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例一中的指令级并行调度方法。
下面参考图8,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有电子设备操作所需的各种程序和数据。处理装置、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
通常,以下系统可以连接至I/O接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
本申请提供的电子设备,采用上述实施例中的指令级并行调度方法,解决了由于指令之间存在依赖而导致发射效率低的技术问题。与现有技术相比,本申请实施例提供的电子设备的有益效果与上述实施例提供的指令级并行调度方法的有益效果相同,且该电子设备中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本实施例提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例一中的指令级并行调度的方法。
本申请实施例提供的计算机可读存储介质例如可以是U盘,但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定。
本申请提供的计算机可读存储介质,存储有用于执行上述指令级并行调度方法的计算机可读程序指令,解决了由于指令之间存在依赖而导致发射效率低的技术问题。与现有技术相比,本申请实施例提供的计算机可读存储介质的有益效果与上述实施例提供的指令级并行调度方法的有益效果相同,在此不做赘述。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利处理范围内。

Claims (10)

1.一种指令级并行调度方法,其特征在于,所述指令级并行调度方法包括:
获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
2.如权利要求1所述指令级并行调度方法,其特征在于,所述根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图的步骤包括:
在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数;
依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表;
返回执行步骤:在所述中间操作数列表中取出排序靠前的第一目标操作数和第二目标操作数,直至所述中间操作数列表中的操作数均已插入所述原始DAG关系图,将所述原始DAG关系图作为目标DAG关系图。
3.如权利要求2所述指令级并行调度方法,其特征在于,所述依据所述第一目标操作数和所述第二目标操作数,更新所述原始DAG关系图以及所述中间操作数列表的步骤包括:
构建所述第一目标操作数和所述第二目标操作数之间的基本运算;
通过将所述基本运算插入所述原始DAG关系图,更新所述原始DAG关系图;
将所述基本运算对应的中间结果操作数加入所述中间操作数列表,通过对所述中间操作数列表重新进行排序,更新所述中间操作数列表。
4.如权利要求1所述指令级并行调度方法,其特征在于,所述通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数的步骤包括:
通过遍历所述DAG关系图,在所述DAG关系图中查找具有相互依赖关系的相同运算DAG树;
通过遍历各所述相同运算DAG树,查找具有依赖关系的各相同运算;
获取各所述相同运算对应的操作数,在各所述操作数中删除结果操作数,得到各中间操作数。
5.如权利要求1所述指令级并行调度方法,其特征在于,所述根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
确定各所述中间操作数对应的操作数来源类型,其中,所述操作数来源类型至少包括长流水类型和短流水类型中的一种;
根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
6.如权利要求5所述指令级并行调度方法,其特征在于,所述根据各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表的步骤包括:
通过遍历所述DAG关系图,确定硬件资源限制参数;
根据所述硬件资源限制参数、各所述操作数来源类型和各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表。
7.如权利要求1所述指令级并行调度方法,其特征在于,所述生成各所述中间操作数共同对应的原始DAG关系图的步骤包括:
在所述DAG关系图中删除与各所述中间操作数无关的运算指令,得到原始DAG关系图;和/或
根据各所述中间操作数在所述DAG关系图中对应的原先运算指令,生成原始DAG关系图。
8.一种指令级并行调度装置,其特征在于,所述指令级并行调度装置包括:
操作数查找模块,用于获取指令集合对应的DAG关系图,通过遍历所述DAG关系图,查找所述指令集合中具有依赖关系的各运算指令对应的中间操作数;
操作数排序模块,用于根据各所述中间操作数的就绪顺序,对各所述中间操作数进行排序,得到中间操作数列表;
依赖关系破除模块,用于生成各所述中间操作数共同对应的原始DAG关系图,根据所述中间操作数列表的排列优先级,将各所述中间操作数顺序插入所述原始DAG关系图,得到目标DAG关系图;
并行调度模块,用于依据所述目标DAG关系图,对所述指令集合中的指令进行并行调度。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的指令级并行调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有实现指令级并行调度方法的程序,所述实现指令级并行调度方法的程序被处理器执行以实现如权利要求1至7中任一项所述指令级并行调度方法的步骤。
CN202211204579.4A 2022-09-29 2022-09-29 指令级并行调度方法、装置、电子设备及存储介质 Pending CN117827287A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211204579.4A CN117827287A (zh) 2022-09-29 2022-09-29 指令级并行调度方法、装置、电子设备及存储介质
PCT/CN2023/115697 WO2024066875A1 (zh) 2022-09-29 2023-08-30 指令级并行调度方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211204579.4A CN117827287A (zh) 2022-09-29 2022-09-29 指令级并行调度方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117827287A true CN117827287A (zh) 2024-04-05

Family

ID=90475958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211204579.4A Pending CN117827287A (zh) 2022-09-29 2022-09-29 指令级并行调度方法、装置、电子设备及存储介质

Country Status (2)

Country Link
CN (1) CN117827287A (zh)
WO (1) WO2024066875A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043582B2 (en) * 2012-09-14 2015-05-26 Qualcomm Innovation Center, Inc. Enhanced instruction scheduling during compilation of high level source code for improved executable code
CN104424026B (zh) * 2013-08-21 2017-11-17 华为技术有限公司 一种指令调度方法及装置
CN113296788B (zh) * 2021-06-10 2024-04-12 上海东软载波微电子有限公司 指令调度方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2024066875A1 (zh) 2024-04-04

Similar Documents

Publication Publication Date Title
CN109523187B (zh) 任务调度方法、装置和设备
KR20180032669A (ko) 콜경로 파인더
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
CN112395253B (zh) 索引文件生成方法、终端设备、电子设备及介质
CN110070593B (zh) 图片预览信息的显示方法、装置、设备及介质
CN110619100B (zh) 用于获取数据的方法和装置
CN110727869A (zh) 页面构建方法及装置
CN111857720B (zh) 用户界面状态信息的生成方法、装置、电子设备及介质
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN110413367B (zh) 任务创建方法、装置、存储介质及电子设备
CN111241823A (zh) 一种依赖配置的管理方法、装置、电子设备及存储介质
CN112650521B (zh) 软件开发工具包sdk热修复方法、装置与电子设备
CN113377342B (zh) 一种项目构建方法、装置、电子设备及存储介质
CN117827287A (zh) 指令级并行调度方法、装置、电子设备及存储介质
CN111382017A (zh) 故障查询方法、装置,服务器及存储介质
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN114153462A (zh) 客户端源码处理方法、装置、存储介质及电子设备
CN111294657A (zh) 信息处理方法和装置
CN111381813A (zh) 前端页面调试方法、装置、计算机设备和存储介质
CN111399902B (zh) 客户端源文件处理方法、装置、可读介质与电子设备
CN115374762B (zh) 基于VS code的代码模板共享方法、装置、电子设备及介质
CN113806033B (zh) 用于任务系统的任务执行方法、装置、服务器和介质
CN115221178B (zh) 数据表绑定方法、装置、电子设备和计算机可读介质
CN109933334B (zh) 一种程序执行方法、装置、设备及介质
CN111104626B (zh) 信息存储方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication