System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,特别涉及一种cpu指令预取方法、装置、设备及存储介质。
技术介绍
1、在现代超高性能处理器设计当中,指令的预取以及预测十分重要,现今,预取技术可以按照预取的实现形式不同分为两种,分别是软件预取、硬件预取。软件预取是在程序的编译阶段或者编写程序时手动插入预取指令,提前将处理器会用到的数据从下级存储器提取到当前的高速缓存中,这样便可以达到处理器只需要多执行一条预取指令接下来的指令数据便不会在一级缓存产生较多缺失。硬件预取是处理器根据内部电路实时运行的状态,由硬件电路自身的控制模块进行预测处理器可能会发生访存缺失,进而在合适的时间向下级存储器发出访问数据请求,将接下来处理器可能会用到的数据返回一级cache(高速缓冲存储器)。
2、虽然传统的硬件预取对处理器有不错的性能提升,但是不能有效判断分支指令,使得预取准确率较低,造成流水效率降低。因此,如何提高预取的准确率,增加流水线取指令的效率是目前亟待解决的问题。
技术实现思路
1、有鉴于此,本专利技术的目的在于提供一种cpu指令预取方法、装置、设备及存储介质,能够提高预取的准确率,增加流水线取指令的效率。其具体方案如下:
2、第一方面,本申请公开了一种cpu指令预取方法,包括:
3、在将cpu的前端流水线进行解耦后,利用程序计数生成器生成下一个跳转的pc值,并判断所述下一个跳转的pc值是否对应分支跳转指令;
4、若是,则重定向所述下一个跳转的pc值,并将相应的重定向后pc
5、当所述预设的分支预测单元中所述存储信息的数量达到预设数量时,判断所述程序计数生成器生成的新pc值是否与所述存储信息匹配,若匹配,则将所述存储信息中的所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储;
6、判断取指阶段执行的目标pc值是否对应分支跳转指令,若对应分支跳转指令,则从所述预设的指令分支预测队列中获取所述目标pc值,并基于所述目标pc值读取相应的指令。
7、可选的,所述利用程序计数生成器生成下一个跳转的pc值,包括:
8、利用所述程序计数生成器根据当前程序执行顺序以及预先获取的分支预测结果生成下一个跳转的pc值。
9、可选的,所述判断所述下一个跳转的pc值是否对应分支跳转指令之后,还包括:
10、若所述下一个跳转的pc值不对应分支跳转指令,则基于所述下一个跳转的pc值对应的下一个pc值读取相应的指令。
11、可选的,所述判断所述程序计数生成器生成的新pc值是否与所述存储信息匹配之后,还包括:
12、若所述新pc值与所述存储信息不匹配,则基于所述新pc值对应的下一个pc值读取相应的指令。
13、可选的,所述若匹配,则将所述存储信息中的所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储,包括:
14、若所述新pc值与所述存储信息匹配,则基于预设的程序计数值重定向控制模块将当前所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储,并将当前所述待跳转pc值发送至所述程序计数生成器进行重定向处理,以对当前所述新pc值进行更新;
15、判断当前所述新pc值是否与所述存储信息匹配;
16、若是,则重新跳转至所述基于预设的程序计数值重定向控制模块将当前所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储的步骤,直至完成全部所述新pc值的判断。
17、可选的,所述若对应分支跳转指令,则从所述预设的指令分支预测队列中获取所述目标pc值,并基于所述目标pc值读取相应的指令,包括:
18、若所述目标pc值对应分支跳转指令,则根据预设的程序计数值重定向控制模块发出的控制信号从所述预设的指令分支预测队列中获取所述目标pc值,并根据所述目标pc值从预设的指令高速缓存区中读取相应的指令。
19、可选的,所述判断取指阶段执行的目标pc值是否对应分支跳转指令之后,还包括:
20、若所述目标pc值不对应分支跳转指令,则基于所述目标pc值对应的下一个pc值读取相应的指令。
21、第二方面,本申请公开了一种cpu指令预取装置,包括:
22、第一判断模块,用于在将cpu的前端流水线进行解耦后,利用程序计数生成器生成下一个跳转的pc值,并判断所述下一个跳转的pc值是否对应分支跳转指令;
23、存储信息获取模块,用于若是,则重定向所述下一个跳转的pc值,并将相应的重定向后pc值以及所述重定向后pc值对应的指令信息发送至预设的分支预测单元进行存储,以确定相应的存储信息;
24、第二判断模块,用于当所述预设的分支预测单元中所述存储信息的数量达到预设数量时,判断所述程序计数生成器生成的新pc值是否与所述存储信息匹配,若匹配,则将所述存储信息中的所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储;
25、指令读取模块,用于判断取指阶段执行的目标pc值是否对应分支跳转指令,若对应分支跳转指令,则从所述预设的指令分支预测队列中获取所述目标pc值,并基于所述目标pc值读取相应的指令。
26、第三方面,本申请公开了一种电子设备,包括:
27、存储器,用于保存计算机程序;
28、处理器,用于执行所述计算机程序以实现前述的cpu指令预取方法。
29、第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的cpu指令预取方法。
30、本申请在预取cpu指令时,首先在将cpu的前端流水线进行解耦后,利用程序计数生成器生成下一个跳转的pc值,并判断所述下一个跳转的pc值是否对应分支跳转指令;若是,则重定向所述下一个跳转的pc值,并将相应的重定向后pc值以及所述重定向后pc值对应的指令信息发送至预设的分支预测单元进行存储,以确定相应的存储信息;当所述预设的分支预测单元中所述存储信息的数量达到预设数量时,判断所述程序计数生成器生成的新pc值是否与所述存储信息匹配,若匹配,则将所述存储信息中的所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储;判断取指阶段执行的目标pc值是否对应分支跳转指令,若对应分支跳转指令,则从所述预设的指令分支预测队列中获取所述目标pc值,并基于所述目标pc值读取相应的指令。可见,本申请通过解耦前端设计,将超前的分支预测pc指导指令存储起来,在用到指令时,直接从指令分支预测队列中取。这样一来,不仅消除了取指令单元当周期取指令不足而无法满足后续流水线的需要,降低了成本,而且提高了预取的准确率。同时指令分支预测队列与取指流水线结合的设计,增加了流水线取指令的效率,避免了流水线空泡。
本文档来自技高网...【技术保护点】
1.一种CPU指令预取方法,其特征在于,包括:
2.根据权利要求1所述的CPU指令预取方法,其特征在于,所述利用程序计数生成器生成下一个跳转的PC值,包括:
3.根据权利要求1所述的CPU指令预取方法,其特征在于,所述判断所述下一个跳转的PC值是否对应分支跳转指令之后,还包括:
4.根据权利要求1所述的CPU指令预取方法,其特征在于,所述判断所述程序计数生成器生成的新PC值是否与所述存储信息匹配之后,还包括:
5.根据权利要求1所述的CPU指令预取方法,其特征在于,所述若匹配,则将所述存储信息中的所述新PC值的指令对应的待跳转PC值发送至预设的指令分支预测队列进行存储,包括:
6.根据权利要求1所述的CPU指令预取方法,其特征在于,所述若对应分支跳转指令,则从所述预设的指令分支预测队列中获取所述目标PC值,并基于所述目标PC值读取相应的指令,包括:
7.根据权利要求1至6任一项所述的CPU指令预取方法,其特征在于,所述判断取指阶段执行的目标PC值是否对应分支跳转指令之后,还包括:
8.一种CPU指
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的CPU指令预取方法的步骤。
...【技术特征摘要】
1.一种cpu指令预取方法,其特征在于,包括:
2.根据权利要求1所述的cpu指令预取方法,其特征在于,所述利用程序计数生成器生成下一个跳转的pc值,包括:
3.根据权利要求1所述的cpu指令预取方法,其特征在于,所述判断所述下一个跳转的pc值是否对应分支跳转指令之后,还包括:
4.根据权利要求1所述的cpu指令预取方法,其特征在于,所述判断所述程序计数生成器生成的新pc值是否与所述存储信息匹配之后,还包括:
5.根据权利要求1所述的cpu指令预取方法,其特征在于,所述若匹配,则将所述存储信息中的所述新pc值的指令对应的待跳转pc值发送至预设的指令分支预测队列进行存储...
【专利技术属性】
技术研发人员:许桂龙,赵鑫鑫,姜凯,
申请(专利权)人:山东浪潮科学研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。