数据处理方法、设备及装置、电子设备和存储介质与流程

专利检索2026-07-17  9


本公开涉及但不限于处理器,尤其涉及一种数据处理方法、设备及装置、电子设备和存储介质。


背景技术:

1、为了平衡指令操作的功能和存储成本,大部分处理会采用可变长度指令集,例如,risc-v中包括32位的指令、16位的指令等。

2、相关技术中,由于指令在数据块中的位置是不确定的,即:指令边界是未知的,那么会使得指令预测、指令解码等阶段的时序紧张,从而导致处理器周期变长、降低了运行频率,严重影响处理器的性能。


技术实现思路

1、本公开实施例至少提供一种数据处理方法、设备及装置、电子设备和存储介质。

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、本公开实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法。

35、本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时上述任一项所述方法被实现。

36、本公开实施例提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时上述任一项所述方法被实现。

37、在本公开实施例中,通过基于取指指令,从指令高速缓冲存储器存储的指令块的多个子块中确定第一子块;基于所述第一子块在所述指令块中的位置信息,确定所述第一子块的第一预解码信息;其中,所述第一子块的第一预解码信息表征所述第一子块中存储的指令是否为指令边界;在所述指令高速缓冲存储器中存储的所述第一子块的第二预解码信息与所述第一子块的第一预解码信息不相同的情况下,基于所述第一子块的第一预解码信息,修复所述指令块中至少一个目标子块的第二预解码信息。这样,一方面,在指令高速缓冲存储器中存储指令的边界信息,实现将预解码提前至指令高速缓冲存储器的回填中进行,分担了指令边界拆分的时序压力,从而降低了其它阶段(例如,指令预测阶段、指令解码阶段)的逻辑链长度和缓解了其它阶段的时序压力,进而使得处理器可以运行在更高的频率下,提升了处理器的性能;另一方面,在从指令高速缓冲存储器进行取指时,根据该子块在指令块中的位置信息确定的边界信息对指令高速缓冲存储器存储的边界信息进行错误修复,允许预解码出错,不仅降低了预解码的准确度要求,而且由于能够自动对错误预解码进行修复,并不需要对指令重新进行预解码,在降低了对存储器的访问消耗的同时还缩短了取指时长,同时允许编译器在缓存行的无效部分不进行无操作指令的填充,降低了处理器对编译器的依赖性。

38、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。


技术特征:

1.一种数据处理设备,其特征在于,包括指令高速缓冲存储器、预解码电路、预解码检查电路及预解码修复电路,其中:

2.根据权利要求1所述的设备,其特征在于,

3.根据权利要求1所述的设备,其特征在于,所述预解码检查电路,还用于以下至少之一:

4.根据权利要求3所述的设备,其特征在于,

5.根据权利要求1所述的设备,其特征在于,所述至少一个目标子块包括所述第一子块;

6.根据权利要求5所述的设备,其特征在于,

7.根据权利要求5所述的设备,其特征在于,所述预解码修复电路,还用于以下至少之一:

8.根据权利要求5所述的设备,其特征在于,

9.根据权利要求1至8中任一项所述的设备,其特征在于,

10.根据权利要求9所述的设备,其特征在于,

11.根据权利要求10所述的设备,其特征在于,所述预解码电路,还用于以下至少之一:

12.一种数据处理方法,其特征在于,所述方法包括:

13.一种数据处理装置,其特征在于,所述装置包括:

14.一种电子设备,包括处理器和存储器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求12所述方法。

15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时如权利要求12所述方法被实现。

16.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时如权利要求12所述方法被实现。


技术总结
本公开提供了一种数据处理方法、设备及装置、电子设备和存储介质,该设备包括:预解码电路,用于基于取指指令,从ICache存储的指令块的多个子块中确定第一子块;基于第一子块在指令块中的位置信息,确定第一子块的第一预解码信息;预解码检查电路,用于从ICache中获取第一子块的第二预解码信息;基于第一子块的第一预解码信息和第一子块的第二预解码信息,确定第一子块对应的检查结果;在第一子块对应的检查结果为第一检查结果的情况下,将第一检查结果传递至预解码修复电路;预解码修复电路,用于基于第一子块的第一预解码信息,修复指令块中至少一个目标子块的第二预解码信息,将修复后的至少一个目标子块的第二预解码信息写回ICache中。

技术研发人员:常春雷,高伟杰
受保护的技术使用者:北京奕斯伟计算技术股份有限公司
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1165369.html

最新回复(0)