本发明实施例涉及计算机,特别是涉及一种指令流生成方法、装置、电子设备及存储介质。
背景技术:
1、目前,随着计算机技术的不断发展,中央处理器(central processing unit,cpu)的设计越来越复杂,如何在cpu设计和研制过程中对其进行验证,在cpu开发过程中的重要性越来越高。
2、通常会采用指令发生器按照某种生成规则或随机产生指令流,将生成的指令流输入仿真的cpu内核或cpu物理内核,通过观察cpu对这些指令流的处理和响应对其进行测试。在这些指令流中,需要包含各种不同的操作码的指令,从而对仿真的cpu内核或cpu物理内核的指令处理功能进行测试。但是,生成的指令流中可能会包含寄存器跳转指令,寄存器跳转指令在执行时经常会产生不可预测的指令跳转,导致指令流执行出现错误而影响指令流对cpu的测试稳定性。
技术实现思路
1、本发明实施例提供一种指令流生成方法、装置、电子设备及存储介质,可以提升通过指令流对cpu进行测试时的测试稳定性。
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、本发明实施例包括以下优点:本发明实施例中提供的指令流生成方法中,从第一指令流中确定寄存器跳转指令;基于寄存器跳转指令对应的源寄存器数量,确定寄存器跳转指令对应的前置操作码集合;基于寄存器跳转指令的源寄存器编码和前置操作码集合,生成第二指令流;其中,第二指令流用于向寄存器跳转指令提供跳转地址;将第二指令流插入第一指令流,得到目标指令流。可以为第一指令流中的寄存器跳转指令生成相应的第二指令流,并将第二指令流插入第一指令流中,得到目标指令流,从而能够在通过目标指令流对cpu进行测试时,通过目标指令流中的第二指令流为相应寄存器跳转指令提供跳转地址,这样可以提高目标指令流中寄存器跳转指令的跳转可控性,从而提升通过目标指令流对cpu进行测试时的测试稳定性。
1.一种指令流生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的指令流生成方法,其特征在于,所述前置操作码集合包含第一前置操作码,以及所述第一前置操作码对应的第二前置操作码,所述基于所述寄存器跳转指令对应的源寄存器数量,确定所述寄存器跳转指令对应的前置操作码集合,包括:
3.根据权利要求2所述的指令流生成方法,其特征在于,所述基于所述第一前置操作码对应的源寄存器数量,从预设操作码库中随机选取所述第一前置操作码对应的第二前置操作码,包括:
4.根据权利要求1所述的指令流生成方法,其特征在于,所述前置操作码集合包含第一前置操作码,以及所述第一前置操作码对应的第二前置操作码,所述基于所述寄存器跳转指令的源寄存器编码和所述前置操作码集合,生成第二指令流,包括:
5.根据权利要求4所述的指令流生成方法,其特征在于,所述基于各第一前置操作码对应的源寄存器编码,生成各第一前置操作码的第二前置操作码对应的第二指令,包括:
6.根据权利要求5所述的指令流生成方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的指令流生成方法,其特征在于,所述将所述第二指令流插入所述第一指令流,得到目标指令流,包括:
8.一种指令流生成装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至7中任一项所述的指令流生成方法。
10.一种计算机可读存储介质,其特征在于,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的指令流生成方法。