本技术实施例涉及计算机,尤其涉及一种指令下发方法和组件。
背景技术:
1、在一些专用处理器中,为保证计算单元的高效运行,可以将主机下发的计算单元所需的指令提前存储于指令缓存装置中,并通过指令缓存装置向计算单元下发指令。例如,该专用处理器可以为神经网络处理器可以为(neural-network processing unit,npu)。
2、在相关技术中,若计算单元所需的指令中包括循环指令时,需要主机从指令存储单元中重复地读取该循环指令,并对该循环指令进行展开以得到展开后的指令,以及向指令缓存装置下发这些展开后的指令,进而由指令缓存装置向计算单元下发这些展开后的指令。
3、然而,主机读取存储单元会产生延迟,当循环指令的循环次数较大时,一方面使得主机需要重复读取存储单元,导致主机读取存储单元产生的延迟时间过长,另一方面需要消耗主机大量的时间对循环指令进行展开,导致主机的指令下发时间过长,阻塞了主机对后续指令的处理,使得主机向指令缓存装置的指令下发效率较低。
技术实现思路
1、本技术实施例提供一种指令下发方法和组件,用以解决相关技术中主机向指令缓存装置的指令下发效率较低的问题。
2、第一方面,本技术实施例提供一种指令下发方法,所述方法包括:
3、指令存储器接收多个指令,并存储所述多个指令、以及每个指令的指令类型;
4、指令预取器在所述指令存储器中预取指令,对循环起始类型和循环结束类型之间的指令进行循环展开处理和存储处理,以及对所述循环起始类型和所述循环结束类型之外的指令进行存储处理,并向指令解析器发送所述指令预取器中指令;
5、所述指令解析器对所述指令进行解析处理,得到目标指令,并向计算设备发送所述目标指令。
6、在一种可能的实施方式中,对循环起始类型和循环结束类型之间的指令进行循环展开处理和存储处理,以及对所述循环起始类型和所述循环结束类型之外的指令进行存储处理,包括:
7、判断预取到的指令是否为循环起始类型和循环结束类型之间的指令;
8、若否,则在所述指令预取器中存储所述指令;
9、若是,则在所述指令存储器中获取所述指令对应的循环指令集合,并根据所述循环指令集合进行循环展开处理,得到多个展开指令,并在所述指令预取器中存储所述多个展开指令。
10、在一种可能的实施方式中,所述预取到的指令为循环起始类型的指令,所述循环指令集合中包括:所述循环起始类型的指令、所述循环起始类型的指令对应的循环结束类型的指令、以及所述循环起始类型的指令与所述循环结束类型的指令之间的至少一个运算指令。
11、在一种可能的实施方式中,根据所述循环指令集合进行循环展开处理,得到多个展开指令,包括:
12、在所述循环起始类型的指令中确定总循环次数;
13、根据所述总循环次数,对所述循环指令集合进行循环展开处理,得到所述多个展开指令。
14、在一种可能的实施方式中,所述总循环次数为n;所述多个展开指令包括:所述循环起始类型的指令、n个循环指令集合、以及所述循环结束类型的指令,其中,前n-1个循环指令集合中包括所述至少一个运算指令和循环更新类型的指令,最后一个循环指令集合中包括所述至少一个运算指令,所述n为大于1的整数。
15、在一种可能的实施方式中,所述指令解析器对所述指令进行解析处理,得到目标指令,包括:
16、若所述指令为所述循环起始类型和所述循环结束类型之外的指令,则在所述指令为预设指令时,对所述预设指令进行预设更新操作,得到所述目标指令;
17、若所述指令为所述循环起始类型和所述循环结束类型之间的指令,则确定所述指令对应的当前循环次数,并根据所述当前循环次数更新所述指令,得到所述目标指令。
18、在一种可能的实施方式中,向计算设备发送所述目标指令,包括:
19、所述指令解析器与所述计算设备进行握手操作;
20、在所述指令解析器与所述计算设备握手成功之后,向所述计算设备发送所述目标指令。
21、在一种可能的实施方式中,所述指令存储器的存储容量大于所述指令预取器的存储容量,所述指令存储器包括随机存取存储器ram,所述指令预取器包括寄存器。
22、第二方面,本技术实施例提供一种指令下发组件,包括指令存储器、指令预取器和指令解析器,其中,
23、所述指令存储器用于,接收多个指令,并存储所述多个指令、以及每个指令的指令类型;
24、所述指令预取器用于,在所述指令存储器中预取指令,对循环起始类型和循环结束类型之间的指令进行循环展开处理和存储处理,以及对所述循环起始类型和所述循环结束类型之外的指令进行存储处理,并向所述指令解析器发送所述指令预取器中指令;
25、所述指令解析器用于,对所述指令进行解析处理,得到目标指令,并向计算设备发送所述目标指令。
26、在一种可能的实施方式中,所述指令预取器具体用于:
27、判断预取到的指令是否为循环起始类型和循环结束类型之间的指令;
28、若否,则在所述指令预取器中存储所述指令;
29、若是,则在所述指令存储器中获取所述指令对应的循环指令集合,并根据所述循环指令集合进行循环展开处理,得到多个展开指令,并在所述指令预取器中存储所述多个展开指令。
30、在一种可能的实施方式中,所述预取到的指令为循环起始类型的指令,所述循环指令集合中包括:所述循环起始类型的指令、所述循环起始类型的指令对应的循环结束类型的指令、以及所述循环起始类型的指令与所述循环结束类型的指令之间的至少一个运算指令。
31、在一种可能的实施方式中,所述指令预取器具体还用于:
32、在所述循环起始类型的指令中确定总循环次数;
33、根据所述总循环次数,对所述循环指令集合进行循环展开处理,得到所述多个展开指令。
34、在一种可能的实施方式中,所述总循环次数为n;所述多个展开指令包括:所述循环起始类型的指令、n个循环指令集合、以及所述循环结束类型的指令,其中,前n-1个循环指令集合中包括所述至少一个运算指令和循环更新类型的指令,最后一个循环指令集合中包括所述至少一个运算指令,所述n为大于1的整数。
35、在一种可能的实施方式中,所述指令解析器具体用于:
36、若所述指令为所述循环起始类型和所述循环结束类型之外的指令,则在所述指令为预设指令时,对所述预设指令进行预设更新操作,得到所述目标指令;
37、若所述指令为所述循环起始类型和所述循环结束类型之间的指令,则确定所述指令对应的当前循环次数,并根据所述当前循环次数更新所述指令,得到所述目标指令。
38、在一种可能的实施方式中,所述指令解析器具体还用于:
39、与所述计算设备进行握手操作;
40、在所述指令解析器与所述计算设备握手成功之后,向所述计算设备发送所述目标指令。
41、在一种可能的实施方式中,所述指令存储器的存储容量大于所述指令预取器的存储容量,所述指令存储器包括随机存取存储器ram,所述指令预取器包括寄存器。
42、第三方面,本技术提供一种芯片,所述芯片上存储有计算机程序,所述计算机程序被所述芯片执行时,实现如第一方面任一项所述的方法。
43、第四方面,本技术提供一种芯片模组,所述芯片模组上存储有计算机程序,所述计算机程序被所述芯片模组执行时,实现如第一方面任一项所述的方法。
44、第五方面,本技术实施例提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行第一方面中任一项所述的方法。
45、第六方面,本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的方法。
46、本技术实施例提供的指令下发方法和组件,该指令下发方法可以通过指令存储器存储主机下发的多个指令、以及每个指令的指令类型;指令预取器可以从指令存储器中预取指令,对循环起始类型和循环结束类型之间的指令进行循环展开处理和存储处理,以及对循环起始类型和循环结束类型之外的指令进行存储处理,并向指令解析器发送指令预取器中的指令;指令解析器可以对指令预取器下发的指令进行解析处理得到目标指令,并将目标指令下发给计算设备,使得主机无需重复读取循环指令和对这些循环指令进行展开处理,有利于节约主机的指令下发时间,提高了主机的指令下发效率。