指令处理方法、装置、电子设备和计算机可读存储介质与流程

文档序号:36445392发布日期:2023-12-21 13:14阅读:18来源:国知局
指令处理方法与流程

本公开的实施例涉及一种指令处理方法、装置、电子设备和计算机可读存储介质。


背景技术:

1、在人工智能芯片上运行神经网络需要大量算子的支撑,神经网络可用于语音识别、图像识别、自然语言识别等领域。算子的实现可以是一连串处理固定大小范围的汇编实现指令块(以下简称为指令块)组成,每个指令块分别实现算子的一部分。算子的指令块所包含的操作可以分成数据加载、数据计算和结果写出三部分。


技术实现思路

1、本公开至少一个实施例提供一种指令处理方法,包括:对初始指令块序列进行处理,得到n个目标指令块序列,其中,每个所述目标指令块序列包括多个目标指令块,所述多个目标指令块中的至少部分目标指令块包括加载部分和计算存储部分,所述加载部分用于执行数据加载操作,所述计算存储部分用于执行数据计算操作和/或数据存储操作;穿插执行所述n个目标指令块序列,其中,穿插执行所述n个目标指令块序列,包括:在当前执行的目标指令块序列执行至所述加载部分时,开始执行数据加载操作,并在等待数据加载期间,切换执行所述n个目标指令块序列中的另一个目标指令块序列;其中,n为大于等于2的整数。

2、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,对初始指令块序列进行处理,得到n个目标指令块序列,包括:对所述初始指令块序列进行分割操作,得到多个子序列,其中,每个所述子序列包括多个初始指令块;针对每个所述子序列,确定所述子序列中多个初始指令块分别对应的统计信息,所述统计信息包括硬件资源信息、数据依赖信息和控制信息;基于所述多个初始指令块分别对应的统计信息,对所述多个初始指令块进行指令融合处理,得到多个融合指令块,作为所述多个目标指令块;对所述多个目标指令块中的至少部分目标指令块进行指令分解处理,其中,所述指令分解处理包括分解所述目标指令块中的加载部分和计算存储部分;基于所述多个目标指令块,得到所述n个目标指令块序列。

3、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,所述初始指令块序列包括多个算子对应的指令块或多个融合算子对应的指令块。对所述初始指令块序列进行分割操作,得到多个子序列,包括:将每个所述算子或每个所述融合算子对应的首部初始指令块、尾部初始指令块和位于所述首部初始指令块和所述尾部初始指令块之间的初始指令块作为一个子序列。

4、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,基于所述多个初始指令块分别对应的统计信息,对所述多个初始指令块进行指令融合处理,得到多个融合指令块,包括:将所述多个初始指令块中涉及相同运算且不造成依赖冲突的指令部分进行融合,得到所述多个融合指令块,其中,不存在依赖冲突包括以下条件中的至少一种:相融合的两个指令部分的硬件资源不冲突;相融合的两个指令部分融合后不造成数据依赖冲突;相融合的两个指令部分属于同一控制域。

5、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,对初始指令块序列进行处理,得到n个目标指令块序列,还包括:消除所述多个目标指令块中的部分等待指令。

6、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,基于所述多个目标指令块,得到所述n个目标指令块序列,包括:按照所述多个目标指令块的排列顺序,依次将所述多个目标指令块分配至n个队列,每个所述队列中的目标指令块形成一个目标指令块序列;其中,依次将所述多个目标指令块分配至n个队列,包括:将分配指针指向所述n个队列中的任一空队列,将所述多个目标指令块中的第一个目标指令块分配至所述分配指针指向的空队列;针对所述第一个目标指令块之后的每个待分配目标指令块,确定所述待分配目标指令块与所述分配指针当前所指的队列中最后一个目标指令块之间是否具有预定关系;若是,则将所述待分配目标指令块增加至所述分配指针当前所指的队列;若否,则将所述分配指针指向所述n个队列中的另一队列,并将所述待分配目标指令块增加至所述分配指针指向的另一队列。

7、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,所述待分配目标指令块与所述一个目标指令块之间具有预定关系,包括:所述待分配目标指令块的加载部分与所述最后一个目标指令块的计算存储部分之间存在寄存器资源冲突;和/或所述待分配目标指令块与所述最后一个目标指令块属于同一融合算子。

8、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,所述统计信息还包括所述初始指令块所属的融合算子的标识信息;每个所述目标指令块所属的融合算子基于所述目标指令块对应的初始指令块所属的融合算子确定。

9、例如,在本公开上述实施例的至少一个示例提供的指令处理方法中,穿插执行所述n个目标指令块序列,还包括:若当前执行的目标指令块序列执行至所述计算存储部分时出现依赖性冲突,切换执行所述n个目标指令块序列中的另一个目标指令块序列。

10、本公开至少一个实施例提供一种指令处理装置,包括处理模块和执行模块,处理模块配置为对初始指令块序列进行处理,得到n个目标指令块序列,其中,每个所述目标指令块序列包括多个目标指令块,所述多个目标指令块中的至少部分目标指令块包括加载部分和计算存储部分,所述加载部分用于执行数据加载操作,所述计算存储部分用于执行数据计算操作和/或数据存储操作;执行模块配置为穿插执行所述n个目标指令块序列,其中,所述执行模块进一步配置为:在当前执行的目标指令块序列执行至所述加载部分时,开始执行数据加载操作,并在等待数据加载期间,切换执行所述n个目标指令块序列中的另一个目标指令块序列;其中,n为大于等于2的整数。

11、本公开至少一个实施例提供一种电子设备,包括处理器;存储器,存储有一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被配置为由所述处理器执行,用于实现本公开任一实施例提供的指令处理方法。

12、本公开至少一个实施例提供一种计算机可读存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的指令处理方法。



技术特征:

1.一种指令处理方法,包括:

2.根据权利要求1所述的指令处理方法,其中,对初始指令块序列进行处理,得到n个目标指令块序列,包括:

3.根据权利要求2所述的指令处理方法,其中,所述初始指令块序列包括多个算子对应的指令块或多个融合算子对应的指令块,

4.根据权利要求2所述的指令处理方法,其中,基于所述多个初始指令块分别对应的统计信息,对所述多个初始指令块进行指令融合处理,得到多个融合指令块,包括:

5.根据权利要求2所述的指令处理方法,其中,对初始指令块序列进行处理,得到n个目标指令块序列,还包括:

6.根据权利要求2所述的指令处理方法,其中,基于所述多个目标指令块,得到所述n个目标指令块序列,包括:

7.根据权利要求6所述的指令处理方法,其中,所述待分配目标指令块与所述一个目标指令块之间具有预定关系,包括:

8.根据权利要求7所述的指令处理方法,其中,所述统计信息还包括所述初始指令块所属的融合算子的标识信息;

9.根据权利要求1所述的指令处理方法,其中,穿插执行所述n个目标指令块序列,还包括:

10.一种指令处理装置,包括:

11.一种电子设备,包括:

12.一种计算机可读存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-9任一项所述的指令处理方法。


技术总结
一种指令处理方法、装置、电子设备和计算机可读存储介质。该指令处理方法包括:对初始指令块序列进行处理,得到N个目标指令块序列,其中,每个所述目标指令块序列包括多个目标指令块,所述多个目标指令块中的至少部分目标指令块包括加载部分和计算存储部分,所述加载部分用于执行数据加载操作,所述计算存储部分用于执行数据计算操作和/或数据存储操作;穿插执行所述N个目标指令块序列,在当前执行的目标指令块序列执行至所述加载部分时,开始执行数据加载操作,并在等待数据加载期间,切换执行所述N个目标指令块序列中的另一个目标指令块序列。该方法可以避免或减少处理器处于空等状态的时长,提高处理器的执行效率。

技术研发人员:请求不公布姓名,请求不公布姓名,请求不公布姓名,请求不公布姓名
受保护的技术使用者:上海壁仞科技股份有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1