一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分支指令的分支预测方法及相关装置与流程

2022-07-30 14:52:22 来源:中国专利 TAG:


1.本技术涉及处理器分支预测技术领域,尤其涉及一种分支指令的分支预测方法及相关装置。


背景技术:

2.目前,多数处理器的架构设计都会采用指令流水线形式来流水执行指令,这样虽然能够增加处理器的指令吞吐量,但是在遇到分支指令时需要及时判断一条指令是否需要跳转,以及跳转到哪一条指令,而判断这些信息需要时间,这样就会打断流水线的流水,会对处理器造成性能损失,因此需要分支预测机制,通过某些算法,提前预测出分支指令是否跳转,以及跳转的目标地址,来尽可能保证指令流的连续性,提高处理器整体的性能。tage(taggedgemoetric history length branch prediction)分支预测器是预测准确率较高的分支预测算法之一,其分支预测的准确度对训练数据的依赖较高,因此,提高tage分支预测器的预测准确度是目前急需解决的问题。


技术实现要素:

3.针对上述问题,本技术提供了一种分支指令的分支预测方法及相关装置,有利于提高tage分支预测器的预测准确度。
4.为实现上述目的,本技术实施例第一方面提供了一种分支指令的分支预测方法,应用于tage分支预测器,该方法包括:
5.tage分支预测器根据待预测的分支指令的指令地址和不同长度的全局分支历史,确定分支指令的分支预测表表项;
6.tage分支预测器根据分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值;
7.tage分支预测器在ium模块中存在饱和计数器更新值的情况下,采用饱和计数器更新值对分支指令进行方向预测。
8.结合第一方面,在一种可能的实施方式中,tage分支预测器根据分支指令的分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值,包括:
9.tage分支预测器通过ium模块的provider接口向ium模块输入分支预测表表项,分支预测表表项中包括分支指令的第一标签tag信息;第一tag信息用于ium模块确定分支预测表表项在ium模块中是否命中;
10.tage分支预测器获取ium模块返回的resp接口,若resp接口对应的valid信号表示分支预测表表项在ium模块中命中,则确定ium模块中存在饱和计数器更新值;若resp接口对应的valid信号表示分支预测表表项在ium模块中未命中,则确定ium模块中不存在饱和计数器更新值。
11.结合第一方面,在一种可能的实施方式中,在采用饱和计数器更新值对分支指令进行方向预测之前,该方法还包括:
12.tage分支预测器接收ium模块通过resp接口返回的饱和计数器更新值和饱和计数器更新值的对应的取指目标队列指针。
13.结合第一方面,在一种可能的实施方式中,在采用饱和计数器更新值对分支指令进行方向预测之前,该方法还包括:
14.tage分支预测器通过ium模块返回的resp_tag接口获取ium模块发送的分支指令的第二tag信息。
15.本技术实施例第二方面提供了一种分支指令的分支预测方法,应用于ium模块,该方法包括:
16.ium模块通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项,分支预测表表项中包括分支指令的第一tag信息;
17.ium模块通过enq_tag接口判断内容寻址存储器中是否存储有与第一tag信息相匹配的第二tag信息;
18.ium模块在内容寻址存储器中存储有第二tag信息的情况下,确定分支预测表表项在ium模块中命中,并通过resp接口向tage分支预测器返回分支指令的饱和计数器更新值,以使tage分支预测器采用饱和计数器更新值对分支指令进行方向预测。
19.结合第二方面,在一种可能的实施方式中,在ium模块通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项之前,该方法还包括:
20.ium模块接收后端流水线上一次执行分支指令时传回的饱和计数器值和分支指令的跳转结果,饱和计数器值为确定分支指令存在误预测时,分支指令在tage分支预测器的对应表项中的饱和计数器值;
21.ium模块根据饱和计数器值和跳转结果计算出分支指令的饱和计数器更新值;
22.ium模块采用分支指令的指令地址和不同长度的全局分支历史计算出第二tag信息,并存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针。
23.结合第二方面,在一种可能的实施方式中,ium模块包括内容寻址存储器和寄存器堆,存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针,包括:
24.ium模块将第二tag信息存储在内容寻址存储器中,以及将饱和计数器更新值和取指目标队列指针存储在寄存器堆中。
25.结合第二方面,在一种可能的实施方式中,该方法还包括:
26.ium模块在内容寻址存储器中存储有第二tag信息的情况下,通过resp_tag接口向tage分支预测器返回第二tag信息。
27.结合第二方面,在一种可能的实施方式中,取指目标队列指针用于标记饱和计数器更新值、第二tag信息在ium模块中的入队时间,该方法还包括:
28.ium模块在分支指令提交的情况下,对入队时间早于饱和计数器更新值、第二tag信息的入队时间的表项进行出队。
29.本技术实施例第三方面提供了一种分支指令的分支预测装置,应用于tage分支预测器,该装置包括第一处理单元和第一收发单元;
30.第一处理单元,用于根据待预测的分支指令的指令地址和不同长度的全局分支历史,确定分支指令的分支预测表表项;
31.第一收发单元,用于根据分支预测表表项,确定预设的ium模块中是否存在分支指
令的饱和计数器更新值;
32.第一处理单元,还用于在ium模块中存在饱和计数器更新值的情况下,采用饱和计数器更新值对分支指令进行方向预测。
33.本技术实施例第四方面提供了一种分支指令的分支预测装置,应用于ium模块,该装置包括第二处理单元和第二收发单元;
34.第二收发单元,用于通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项,分支预测表表项中包括分支指令的第一tag信息;
35.第二处理单元,用于通过enq_tag接口判断内容寻址存储器中是否存储有与第一tag信息相匹配的第二tag信息;
36.第二处理单元,还用于在内容寻址存储器中存储有第二tag信息的情况下,确定分支预测表表项在ium模块中命中,并调用第二收发单元通过resp接口向tage分支预测器返回分支指令的饱和计数器更新值,以使tage分支预测器采用饱和计数器更新值对分支指令进行方向预测。
37.本技术实施例第五方面提供了一种电子设备,该电子设备包括输入设备和输出设备,还包括处理器,适于实现一条或多条指令;以及,计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如上述第一方面或第二方面任一种实现方式中的方法步骤。
38.本技术实施例第六方面提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如上述第一方面或第二方面任一种实现方式中的方法步骤。
39.本技术的上述方案至少包括以下有益效果:应理解,一条分支误预测时,分支预测会清除错误路径上的指令,但是并不会立刻更新tage分支预测器里的饱和计数器,这会导致tage分支预测器的训练数据并不是最新的,一定程度上会降低分支预测的准确率。本技术为tage分支预测器添加了ium模块,对于上一次执行的分支指令,若确定其存在误预测,则通过ium模块计算出该分支指令的饱和计数器更新值,并保存该饱和计数器更新值。tage分支预测器本次对该分支指令进行预测时,可同时查找ium模块中是否存在该分支指令的相关表项,若存在,则直接使用ium模块中保存的饱和计数器更新值对分支指令进行方向预测,而无需等待tage分支预测器里的饱和计数器的更新,这就提升了tage分支预测器的训练数据的更新效率,tage分支预测器采用更新的数据对分支指令进行方向预测,有利于提高tage分支预测器的预测准确度。
附图说明
40.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
41.图1为本技术实施例提供的一种系统架构的示意图;
42.图2为本技术实施例提供的一种分支指令的分支预测方法的流程示意图;
43.图3为本技术实施例提供的另一种分支指令的分支预测方法的流程示意图;
44.图4为本技术实施例提供的一种ium中表项的示意图;
45.图5为本技术实施例提供的一种分支指令的分支预测装置的结构示意图;
46.图6为本技术实施例提供的另一种分支指令的分支预测装置的结构示意图;
47.图7为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
48.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
49.本技术说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
50.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本技术所描述的实施例可以与其它实施例相结合。
51.本技术实施例提供一种分支指令的分支预测方法,该方法可基于图1所示的系统架构实现,如图1所示,该系统架构中可以包括分支预测单元(branch prediction unit,bpu)、取指目标队列(fetch target queue,ftq)、取指单元(instruction fetch unit,ifu)和后端(backend),其中,bpu包括tage分支预测器,且为tage分支预测器设定有插件,即ium(immediate update mimicker,即时更新模仿器)模块。其中,ftq用于生成取指请求,ifu基于ftq的取指请求执行指令的取指,bpu在指令取指阶段会通过tage分支预测器对指令进行方向预测,即判断指令是否要跳转。应理解,tage分支预测器在分支预测时不会给出指令具体的跳转目标地址。在进行分支预测时,tage分支预测器判断分支指令的表项在ium模块中是否命中,若命中,则采用ium模块中存储的分支指令的饱和计数器更新值对分支指令进行方向预测。bpu将分支预测结果发送给ftq个存储。ftq还用于在后端指令提交后向bpu发出更新信号,并传送更新数据。比如:bpu在后端指令提交后,可以对tage分支预测器中分支预测表的相关表项进行更新。基于ftq中存储的分支预测结果,后端在执行分支指令时可以确定该分支指令是否存在误预测,并向ftq传回误预测信号。可以看出,基于图1所示的系统架构,指令取指阶段的分支预测可以从ium模块查找是否存在分支指令的相关表项,若存在,则直接使用ium模块中保存的饱和计数器更新值对分支指令进行方向预测,而无需等待tage分支预测器里的饱和计数器的更新。
52.请参见图2,图2为本技术实施例提供的一种分支指令的分支预测方法的流程示意图,该方法应用于tage分支预测器,如图2所示,包括步骤210-230:
53.210:tage分支预测器根据待预测的分支指令的指令地址和不同长度的全局分支
330:
62.310:ium模块通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项,分支预测表表项中包括分支指令的第一tag信息。
63.本技术实施例中,tage分支预测器在对待预测的分支指令进行方向预测时,根据待预测的分支指令的指令地址和不同长度的全局分支历史计算出索引值,然后采用该索引值查到该分支指令的分支预测表表项,通过ium模块的provider接口向ium模块发送该分支预测表表项,该分支预测表表项中包括分支指令的第一tag信息。示例性的,ium模块还包括req接口,该req接口是一个输入接口,存在一个专属的valid信号,用于表示tage分支预测器的请求数据是否有效。
64.320:ium模块通过enq_tag接口判断内容寻址存储器中是否存储有与第一tag信息相匹配的第二tag信息。
65.本技术实施例中,enq_tag接口是一个输入接口,存在一个专属的valid信号,该enq_tag接口的数据类型为无符号整数。ium模块通过enq_tag接口获取分支预测表表项中的第一tag信息,将第一tag信息与内容寻址存储器中存储的多个tag信息进行匹配,以确定ium模块中是否存在与第一tag信息相匹配的第二tag信息。
66.330:ium模块在内容寻址存储器中存储有第二tag信息的情况下,确定分支预测表表项在ium模块中命中,并通过resp接口向tage分支预测器返回分支指令的饱和计数器更新值,以使tage分支预测器采用饱和计数器更新值对分支指令进行方向预测。
67.本技术实施例中,在内容寻址存储器中存储有第二tag信息的情况下,ium模块向tage分支预测器返回resp接口,此时,该resp接口专属的valid信号为true,用于告知tage分支预测器分支指令的分支预测表表项在ium模块中命中。ium模块通过resp接口向tage分支预测器返回预先存储的分支指令的饱和计数器更新值和分支指令相关表项的取指目标队列指针,取指目标队列指针用于标记分支指令的饱和计数器更新值、第二tag信息在ium模块中的入队时间。tage分支预测器获取到ium模块返回的饱和计数器更新值的情况下,采用该饱和计数器更新值计算分支指令的方向预测结果。
68.示例性的,处理器执行的指令,通常在接下来会再执行,也就是说待预测的分支指令在上一次可能已经被执行过。后端流水线在上一次执行该分支指令时,若确定该分支指令存在误预测,则会回传分支指令存在误预测的信号。ium模块可通过enq_data接口获取到该分支指令在上一次预测是存在误预测的信号。其中,enq_data接口是一个输入接口,其数据类型为无符号整数。比如ium模块可通过enq_data接口的专属valid信号确定分支指令是否存在误预测,若该valid信号为true则表示分支指令在上一次预测中存在误预测。ium模块接收后端流水线上一次执行分支指令时传回的饱和计数器值和分支指令的跳转结果,该饱和计数器值为确定分支指令存在误预测时,分支指令在tage分支预测器的对应表项中的饱和计数器值。该饱和计数器值和分支指令可由ftq传入。ium模块采用该饱和计数器值和分支指令的跳转结果计算出分支指令的饱和计数器更新值,以及采用与tage分支预测器相同的计算逻辑计算出分支指令的第二tag信息。将饱和计数器更新值、第二tag信息作为分支指令在ium中的表项进行存储,并存储分支指令在ium中的取指目标队列指针。
69.示例性的,ium模块的主要存储结构包括内容寻址存储器、寄存器堆和一组valid寄存器。ium模块将第二tag信息存储在内容寻址存储器中,以及将饱和计数器更新值和取
指目标队列指针存储在寄存器堆中。其中,第二tag信息包括三部分:预测是否来源于基本表,来源于第一张表,以及来源于第几个表项,将这三个数据拼接为一个无符号整型数据,即得到第二tag信息。valid寄存器,用于标志ium中分支指令的表项是否有效。
70.示例性的,ium模块在内容寻址存储器中存储有第二tag信息的情况下,通过resp_tag接口向tage分支预测器返回第二tag信息。
71.示例性的,ium模块在分支指令提交的情况下,对入队时间早于饱和计数器更新值、第二tag信息的入队时间的表项进行出队。分支指令提交表示分支指令从后端流水线退出的阶段,在分支指令提交的情况下,ftq向bpu发出更新信号,ium模块将通过deq接口获取到一个bool值,该bool值用于指示ium模块执行出队扫描。其中,deq接口是一个输入接口。同时,ium模块通过deq_ftq_ptr接口获取到分支指令对应的取指目标队列指针,ium模块将该取指目标队列指针与ium模块中各表项的取指目标队列指针进行比较,对入队时间早于该分支指令的表项进行出队。具体而言,ium模块将入队时间早于该分支指令的表项的valid寄存器设为false,表示这些表项已经无效。其中,deq_ftq_ptr接口是一个输入接口。如图4所示的各表项,ctr1、tag1表示分支指令1的相关表项,ftq_ptr1表示分支指令1的相关表项的取指目标队列指针;ctr2、tag2表示分支指令2的相关表项,ftq_ptr2表示分支指令2的相关表项的取指目标队列指针。若分支指令2的相关表项的入队时间早于分支指令1的相关表项的入队时间,则将分支指令2的相关表项出队。
72.示例性的,若分支指令在ium模块中存在多个表项,则将多个表项中最新一个表项的入队时间作为分支指令的入队时间。
73.可以看出,本技术为tage分支预测器添加了ium模块,对于上一次执行的分支指令,若确定其存在误预测,则通过ium模块计算出该分支指令的饱和计数器更新值,并保存该饱和计数器更新值。tage分支预测器本次对该分支指令进行预测时,可同时查找ium模块中是否存在该分支指令的相关表项,若存在,则直接使用ium模块中保存的饱和计数器更新值对分支指令进行方向预测,而无需等待tage分支预测器里的饱和计数器的更新,这就提升了tage分支预测器的训练数据的更新效率,tage分支预测器采用更新的数据对分支指令进行方向预测,有利于提高tage分支预测器的预测准确度。
74.基于上述分支指令的分支预测方法实施例的描述,本技术还提供一种分支指令的分支预测装置,所述分支指令的分支预测装置可以是运行于终端中的一个计算机程序(包括程序代码)。该分支指令的分支预测装置可以执行图2所示的方法。该装置应用于tage分支预测器,请参见图5,该装置包括第一处理单元510和第一收发单元520,其中:
75.第一处理单元510,用于根据待预测的分支指令的指令地址和不同长度的全局分支历史,确定分支指令的分支预测表表项;
76.第一收发单元520,用于根据分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值;
77.第一处理单元510,还用于在ium模块中存在饱和计数器更新值的情况下,采用饱和计数器更新值对分支指令进行方向预测。
78.在一种可能的实施方式中,在根据分支指令的分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值方面,第一收发单元520具体用于:
79.通过ium模块的provider接口向ium模块输入分支预测表表项,分支预测表表项中
包括分支指令的第一标签tag信息;第一tag信息用于ium模块确定分支预测表表项在ium模块中是否命中;
80.获取ium模块返回的resp接口,若resp接口对应的valid信号表示分支预测表表项在ium模块中命中,则确定ium模块中存在饱和计数器更新值;若resp接口对应的valid信号表示分支预测表表项在ium模块中未命中,则确定ium模块中不存在饱和计数器更新值。
81.在一种可能的实施方式中,第一收发单元520还用于:
82.接收ium模块通过resp接口返回的饱和计数器更新值和饱和计数器更新值的对应的取指目标队列指针。
83.在一种可能的实施方式中,第一收发单元520还用于:
84.通过ium模块返回的resp_tag接口获取ium模块发送的分支指令的第二tag信息。
85.本技术还提供一种分支指令的分支预测装置,该分支指令的分支预测装置可以执行图3所示的方法。该装置应用于ium模块,请参见图6,该装置包括第二处理单元610和第二收发单元620,其中:
86.第二收发单元620,用于通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项,分支预测表表项中包括分支指令的第一tag信息;
87.第二处理单元610,用于通过enq_tag接口判断内容寻址存储器中是否存储有与第一tag信息相匹配的第二tag信息;
88.第二处理单元610,还用于在内容寻址存储器中存储有第二tag信息的情况下,确定分支预测表表项在ium模块中命中,并调用第二收发单元620通过resp接口向tage分支预测器返回分支指令的饱和计数器更新值,以使tage分支预测器采用饱和计数器更新值对分支指令进行方向预测。
89.在一种可能的实施方式中,第二处理单元610还用于:
90.接收后端流水线上一次执行分支指令时传回的饱和计数器值和分支指令的跳转结果,饱和计数器值为确定分支指令存在误预测时,分支指令在tage分支预测器的对应表项中的饱和计数器值;
91.根据饱和计数器值和跳转结果计算出分支指令的饱和计数器更新值;
92.采用分支指令的指令地址和不同长度的全局分支历史计算出第二tag信息,并存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针。
93.在一种可能的实施方式中,ium模块包括内容寻址存储器和寄存器堆,在存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针方面,第二处理单元610具体用于:
94.将第二tag信息存储在内容寻址存储器中,以及将饱和计数器更新值和取指目标队列指针存储在寄存器堆中。
95.在一种可能的实施方式中,第二收发单元620还用于:
96.在内容寻址存储器中存储有第二tag信息的情况下,通过resp_tag接口向tage分支预测器返回第二tag信息。
97.在一种可能的实施方式中,取指目标队列指针用于标记饱和计数器更新值、第二tag信息在ium模块中的入队时间,第二处理单元610还用于:
98.在分支指令提交的情况下,对入队时间早于饱和计数器更新值、第二tag信息的入队时间的表项进行出队。
99.根据本技术的一个实施例,图5或图6所示的分支指令的分支预测装置的各个模块可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)模块还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,分支指令的分支预测装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
100.根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5或图6中所示的分支指令的分支预测装置设备,以及来实现本技术实施例的分支指令的分支预测方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
101.基于上述方法实施例和装置实施例的描述,请参见图7,图7为本技术实施例提供的一种电子设备的结构示意图,如图7所示,该电子设备至少包括处理器710、输入设备720、输出设备730以及计算机存储介质740。其中,电子设备内的处理器710、输入设备720、输出设备730以及计算机存储介质740可通过总线或其他方式连接。
102.计算机存储介质740可以存储在电子设备的存储器中,所述计算机存储介质740用于存储计算机程序,所述计算机程序包括程序指令,所述处理器710用于执行所述计算机存储介质740存储的程序指令。处理器710(或称cpu(central processing unit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
103.在一个实施例中,本技术实施例提供的电子设备的处理器710可以用于进行一系列分支指令的分支预测处理:
104.根据待预测的分支指令的指令地址和不同长度的全局分支历史,确定分支指令的分支预测表表项;
105.根据分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值;
106.在ium模块中存在饱和计数器更新值的情况下,采用饱和计数器更新值对分支指令进行方向预测。
107.再一个实施例中,处理器710执行根据分支指令的分支预测表表项,确定预设的ium模块中是否存在分支指令的饱和计数器更新值,包括:
108.通过ium模块的provider接口向ium模块输入分支预测表表项,分支预测表表项中包括分支指令的第一标签tag信息;第一tag信息用于ium模块确定分支预测表表项在ium模块中是否命中;
109.获取ium模块返回的resp接口,若resp接口对应的valid信号表示分支预测表表项在ium模块中命中,则确定ium模块中存在饱和计数器更新值;若resp接口对应的valid信号表示分支预测表表项在ium模块中未命中,则确定ium模块中不存在饱和计数器更新值。
110.再一个实施例中,在采用饱和计数器更新值对分支指令进行方向预测之前,处理
器710还用于执行:
111.接收ium模块通过resp接口返回的饱和计数器更新值和饱和计数器更新值的对应的取指目标队列指针。
112.再一个实施例中,在采用饱和计数器更新值对分支指令进行方向预测之前,处理器710还用于执行:
113.通过ium模块返回的resp_tag接口获取ium模块发送的分支指令的第二tag信息。
114.在另一个实施例中,本技术实施例提供的电子设备的处理器710还可以用于进行另一系列分支指令的分支预测处理:
115.通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项,分支预测表表项中包括分支指令的第一tag信息;
116.通过enq_tag接口判断内容寻址存储器中是否存储有与第一tag信息相匹配的第二tag信息;
117.在内容寻址存储器中存储有第二tag信息的情况下,确定分支预测表表项在ium模块中命中,并通过resp接口向tage分支预测器返回分支指令的饱和计数器更新值,以使tage分支预测器采用饱和计数器更新值对分支指令进行方向预测。
118.再一个实施例中,在ium模块通过provider接口获取tage分支预测器输入的待预测的分支指令的分支预测表表项之前,处理器710还用于执行:
119.接收后端流水线上一次执行分支指令时传回的饱和计数器值和分支指令的跳转结果,饱和计数器值为确定分支指令存在误预测时,分支指令在tage分支预测器的对应表项中的饱和计数器值;
120.根据饱和计数器值和跳转结果计算出分支指令的饱和计数器更新值;
121.采用分支指令的指令地址和不同长度的全局分支历史计算出第二tag信息,并存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针。
122.再一个实施例中,ium模块包括内容寻址存储器和寄存器堆,处理器710执行存储饱和计数器更新值、第二tag信息和对应的取指目标队列指针,包括:
123.ium模块将第二tag信息存储在内容寻址存储器中,以及将饱和计数器更新值和取指目标队列指针存储在寄存器堆中。
124.再一个实施例中,处理器710还用于执行:
125.在内容寻址存储器中存储有第二tag信息的情况下,通过resp_tag接口向tage分支预测器返回第二tag信息。
126.再一个实施例中,取指目标队列指针用于标记饱和计数器更新值、第二tag信息在ium模块中的入队时间,处理器710还用于执行:
127.在分支指令提交的情况下,对入队时间早于饱和计数器更新值、第二tag信息的入队时间的表项进行出队。
128.示例性的,上述电子设备可以是电脑、服务器、终端设备等,该服务器可以是独立的物理服务器,也可以是服务器集群或者分布式系统。电子设备可包括但不仅限于处理器710、输入设备720、输出设备730以及计算机存储介质740。还可以包括内存、电源、应用客户端模块等。输入设备720可以是键盘、触摸屏、射频接收器等,输出设备730可以是扬声器、显示器、射频发送器等。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不
构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
129.需要说明的是,由于电子设备的处理器710执行计算机程序时实现上述的分支指令的分支预测方法中的步骤,因此上述分支指令的分支预测方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
130.本技术实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是信息处理设备或信息发送设备或信息接收设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机存储介质。在一个实施例中,可由处理器加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关分支指令的分支预测方法中的相应步骤。
131.以上对本技术实施例进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献