本发明涉及计算机,尤其涉及一种算子实现方法、装置、电子设备及存储介质。
背景技术:
1、汇编语言是计算机提供给用户的最快最有效的语言,也是能够利用计算机的所有硬件特性并能够直接控制硬件的唯一语言。汇编语言的特点是容易被计算机识别和执行,使用它进行编程可以减少占用空间、提高运行速度,并能直接对硬件实施控制。
2、在许多程序的设计当中,高级语言和汇编语言可以相互交叉调用,进行参数传递,共享数据信息,这便是混合编程。jit就是混合编程的一种,当算子的某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(hot spot code)。为了提高热点代码的执行效率,在运行时,用汇编语言把这些代码写成与本地平台相关的机器码,并进行各种层次的优化,以提升算子的性能。在进行代码转换时会涉及到很多计算指针偏移的操作,现有技术的实现方法是先通过加法操作计算指针与偏移量之和,把计算结果存放在一个中间寄存器中,然后再调用加载指令或存储指令,实现对数据对象的加载或存储。然而,代码转换后每执行一次加载指令或存储指令,都需要先调用加法操作,造成加法操作调用冗余,影响执行效率。
技术实现思路
1、本发明实施例提供一种算子实现方法、装置、电子设备及存储介质,可以解决访存操作容易造成加法操作调用冗余的问题。
2、为了解决上述问题,本发明实施例公开了一种算子实现方法,所述方法包括:
3、获取待实现算子,所述待实现算子包括加法操作和访存操作;所述加法操作用于计算所述访存操作对应的源地址与偏移量合成的第一地址;所述访存操作用于在所述第一地址中进行访存;
4、根据所述源地址和所述偏移量配置目标指令;所述目标指令包括第一位域、第二位域和第三位域,所述第一位域用于记录访存操作对应的访存数据,所述第二位域用于记录访存操作对应的源地址,所述第三位域用于记录偏移量;所述目标指令用于在所述源地址和所述偏移量合成的地址中进行访存。
5、可选地,所述目标指令包括第一指令,所述根据所述源地址和所述偏移量配置目标指令,包括:
6、若所述偏移量满足预设条件,则确定所述偏移量对应的立即数;
7、根据所述源地址和所述立即数配置第一指令;所述第一指令的第三位域包括所述立即数。
8、可选地,所述目标指令包括第二指令,所述根据所述源地址和所述偏移量配置目标指令,包括:
9、若所述偏移量不满足预设条件,则将所述偏移量写入临时寄存器;
10、根据所述源地址地址和所述临时寄存器的寄存器号配置第二指令;所述第二指令的第三位域包括所述寄存器号。
11、可选地,若所述偏移量大于第一阈值且小于第二阈值,则确定所述偏移量满足预设条件;若所述偏移量小于第一阈值或大于第二阈值,则确定所述偏移量不满足预设条件。
12、可选地,所述获取待实现算子,包括:
13、获取待编译程序并解析,得到加法操作和访存操作;所述加法操作包括第四位域、第五位域和第六位域,所述加法操作用于将所述第五位域和所述第六位域中记录的数据相加并写入第四位域;所述访存操作包括第七位域和第八位域,所述访存操作用于将所述第七位域记录的第一地址中的数据加载/存储至所述第八位域记录的第二地址中;
14、若所述加法操作的第四位域中记录的数据为所述访存操作的第七位域中记录的第一地址,则将所述加法操作的第五位域中记录的数据确定为所述访存操作对应的源地址,将所述加法操作的第六位域中记录的数据确定为所述访存操作对应的偏移量,或者,将所述加法操作的第六位域中记录的数据确定为所述访存操作对应的源地址,将所述加法操作的第五位域中记录的数据确定为所述访存操作对应的偏移量;将所述第二地址中的数据确定为访存操作对应的访存数据。
15、可选地,所述目标指令还包括操作码域,所述操作码域中存储的操作码用于区分不同类型的访存操作;所述操作码包括第一操作码或第二操作码,所述第一操作码用于指示数据加载操作,所述第二操作码用于指示数据存储操作。
16、可选地,对于所述第一操作码和第二操作码,所述源地址是内存地址,保存在源寄存器中,所述访存数据保存在目的寄存器中;所述第一位域是目的寄存器号,所述第二位域是源寄存器号。
17、另一方面,本发明实施例公开了一种算子实现装置,所述装置包括:
18、数据获取模块,用于获取待实现算子,所述待实现算子包括加法操作和访存操作;所述加法操作用于计算所述访存操作对应的源地址与偏移量合成的第一地址;所述访存操作用于在所述第一地址中进行访存;
19、指令配置模块,用于根据所述源地址和所述偏移量配置目标指令;所述目标指令包括第一位域、第二位域和第三位域,所述第一位域用于记录访存操作对应的访存数据,所述第二位域用于记录访存操作对应的源地址,所述第三位域用于记录偏移量;所述目标指令用于在所述源地址和所述偏移量合成的地址中进行访存。
20、再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行前述的算子实现方法。
21、本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的算子实现方法。
22、本发明实施例包括以下优点:
23、本发明实施例提供了一种算子实现方法,该方法能够根据访存操作对应的源地址和偏移量配置目标指令,所述目标指令包括第一位域、第二位域和第三位域,所述第一位域用于记录访存操作对应的访存数据,所述第二位域用于记录访存操作对应的源地址,所述第三位域用于记录偏移量;通过所述目标指令,就可以在所述源地址和所述偏移量合成的地址进行访存。相比于现有技术,本发明实施例无需配置和执行加法操作,仅通过本发明中配置的目标指令,就可以实现在源地址和偏移量合成的地址中进行访存。采用本发明实施例提供的目标指令进行数据加载或存储操作,减少了加法操作的调用,有利于提升数据处理效率。
1.一种算子实现方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述目标指令包括第一指令,所述根据所述源地址和所述偏移量配置目标指令,包括:
3.根据权利要求1所述的方法,其特征在于,所述目标指令包括第二指令,所述根据所述源地址和所述偏移量配置目标指令,包括:
4.根据权利要求2或3所述的方法,其特征在于,若所述偏移量大于第一阈值且小于第二阈值,则确定所述偏移量满足预设条件;若所述偏移量小于第一阈值或大于第二阈值,则确定所述偏移量不满足预设条件。
5.根据权利要求1所述的方法,其特征在于,所述获取待实现算子,包括:
6.根据权利要求1所述的方法,其特征在于,所述目标指令还包括操作码域,所述操作码域中存储的操作码用于区分不同类型的访存操作;所述操作码包括第一操作码或第二操作码,所述第一操作码用于指示数据加载操作,所述第二操作码用于指示数据存储操作。
7.根据权利要求6所述的方法,其特征在于,对于所述第一操作码和第二操作码,所述源地址是内存地址,保存在源寄存器中,所述访存数据保存在目的寄存器中;所述第一位域是目的寄存器号,所述第二位域是源寄存器号。
8.一种算子实现装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,所述电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1至7中任一项所述的算子实现方法。
10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至7中任一项所述的算子实现方法。