一种分支处理系统和方法技术方案

技术编号:16333575 阅读:45 留言:0更新日期:2017-10-02 02:45
一种分支处理系统和方法。该系统和方法包括在处理器执行指令前将所需指令预取到缓存中;判断处理器即将执行的指令是否是分支指令,并提供该分支指令的分支目标指令地址和该分支指令在程序序列中的后一指令地址。该系统和方法还包括至少根据分支目标指令的地址对分支指令的分支判定,并根据该分支判断,在分支指令到达其在流水线中的执行段前,至少选择分支目标指令和后一指令中的一个作为执行单元将要执行的指令,使得无论分支指令的转移是否发生都不会导致流水线操作的暂停。

A branch processing system and method

A branch processing system and method. The system and method include the processor executes instructions before the required instruction prefetch to the cache; determine whether the processor instructions to be executed is branch instructions, and provide the branch instruction branch target instruction address and the branch instruction in the program after a sequence of instruction address. The system and method also includes at least according to the branch target instruction address of the branch instruction branch and branch according to the judgment, judgment, reach its in the pipeline execution in the branch instruction, select at least the branch target instruction and instruction in an execution unit as the instruction to be executed, which makes the transfer no matter whether the branch instruction will not lead to suspend pipeline operation.

【技术实现步骤摘要】

本专利技术涉及电子计算机和微处理器体系结构领域,具体涉及分支处理方法与系统。
技术介绍
控制相关(controlhazards)也称为分支(Branch),是流水线性能损失的一大原因。在处理分支指令时,传统处理器无法提前知道应该从哪里获取分支指令之后执行的下一条指令,而是需要等到分支指令完成后才能知道,使得流水线中分支指令之后出现空周期。图1是显示了传统流水线结构,其中的流水线段对应了一条分支指令。表1分支指令的流水线段(分支转移发生时)顺序iIFIDEXMEMWBi+1IFstallstallstall目标IFIDEXMEM目标+1IFIDEX目标+2IFID指令地址ii+1目标目标+1目标+2目标+3目标+4获取指令ii+1目标目标+1目标+2目标+3时钟周期1234567结合图1与表1一同说明,表1中的列表示流水线中的时钟周期,而行表示按顺序的指令。指令地址是提供给指令存储器用于在获取指令时进行寻址,之后指令存储器的输出被送到译码器对获取到的指令进行译码。该流水线包括指令获取(IF)、指令译码(ID)、执行(EX)、存储器访问(MEM)和写回(WB)。停止(“stall”)表示流水线暂停或空周期。表1显示了一个被标记为‘i’的分支指令,该指令在时钟周期‘1’被获取到。此外,‘i+1’表示紧跟在该分支指令之后的指令,“目标”表示该分支点的分支目标指令,而“目标+1”、“目标+2”、“目标+3”和“目标+4”表示紧跟在该分支目标指令之后的顺序指令。如表1所示,在时钟周期‘2’,处理器获取到分支指令‘i’。在时钟周期‘3’,处理器获取到指令‘i+1’,并对分支指令‘i’进行译码。假设在该分支指令译码段的结尾可以计算出分支目标地址,并完成分支判定。如果分支判定为分支转移发生,那么分支目标地址就被保存为下一地址用于获取下一指令。在时钟周期‘4’,获取分支目标指令,并在之后周期进行译码和执行。从这里开始,流水线处理分支目标指令后面的指令。然而,在这种情况下,已经被获取到的紧跟在分支指令之后的指令‘i+1’是不应该被执行的,因此流水线会因为指令‘i+1’而暂停。这样,当分支转移成功发生时,流水线会有一个时钟周期的暂停,这会导致流水线操作性能明显降低。为了减少分支处理对流水线性能的不利影响,已经有各种静态或动态的分支预测方法被提出,如:延时槽、分支预测缓冲、分支目标缓冲和跟踪缓存(tracecache)等。然而,这些预测方法通常根据处理器之前的运行结果进行预测,因此仍然会有预测错误而导致的性能损失。此外,在传统的处理器系统中,分支转移造成的缓存缺失也会导致性能损失。本专利技术提出的方法与系统可用于解决上述一个或多个问题,以及其他问题。
技术实现思路
本专利技术提出一种分支处理方法,所述方法包括:判断写入缓存的指令的指令类型,并记录该指令类型;当该指令是分支指令时,计算该分支指令的分支目标指令地址,并记录该分支目标指令地址对应的目标地址信息;该目标地址信息对应至少包含该分支目标指令在内的一个指令段;若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少包含该分支目标指令的指令段填充到缓存中与该目标地址信息对应的位置中,使得处理器核执行该分支指令之前,该分支指令的后一指令及分支目标指令都已存储在缓存中。可选地,对于缓存中的每条指令,均有一个指令类型和一个目标地址信息与之对应。可选地,所述指令类型可以包括有条件的分支指令。可选地,所述指令类型还可以包括无条件的分支指令。可选地,所述指令类型还可以包括非分支指令。可选地,对于每条指令,还可以有一个有效位与之对应;所述有效位表示对应的目标地址信息是否有效。可选地,若一个目标地址信息对应的指令段被替换出缓存,则将该目标地址信息对应的有效位设置为无效。可选地,若即将被处理器核执行的分支指令对应的有效位表示为无效,则重新计算该分支指令的分支目标指令地址,并记录该分支目标指令地址对应的目标地址信息。可选地,若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少包含分支目标指令的指令段填充到缓存中与该分支指令相应的目标地址信息对应的位置中,使得处理器核执行该分支指令之前,该分支指令的后一指令及分支目标指令都已存储在缓存中。可选地,若即将被处理器核执行的分支指令是间接分支指令且有效位表示为有效,则在处理器核计算得到分支目标地址前,猜测执行该间接分支指令的后续指令,即将该间接分支指令对应的目标地址信息作为后续指令的位置,使得流水线操作不会因为间接分支指令而暂停。可选地,在处理器核计算得到间接分支目标地址后,将该分支目标地址与该间接分支指令对应的目标地址信息对应的分支目标地址进行比较,并根据比较结果决定后续操作。可选地,若比较结果为不相等且发生分支转移,则以处理器核计算得到分支目标地址作为该间接分支指令的后续指令地址。可选地,记录该分支目标地址对应的目标地址信息;该目标地址信息对应至少包含该分支目标指令在内的一个指令段;若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少包含该分支目标指令的指令段填充到缓存中与该目标地址信息对应的位置中。可选地,所述方法进一步包括:从缓存同时向处理器核提供所述后一指令及分支目标指令;决定对应于分支指令的分支判定;根据所述分支判定,在所述分支指令到达其在流水线中的执行段前,选择至少所述分支目标指令和所述后一指令中的一个作为所述执行单元将要执行的指令,使得无论所述分支指令的转移是否发生都不会导致流水线操作的暂停。可选地,对该分支指令对应的目标地址信息进行递增,可以提供缓存中所述分支目标指令所在指令段的寻址地址;若该分支指令的执行结果为分支转移成功发生,则将递增后的目标地址本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201210508931.html" title="一种分支处理系统和方法原文来自X技术">分支处理系统和方法</a>

【技术保护点】
一种分支处理方法,其特征在于所述方法包括:判断写入缓存的指令的指令类型,并记录该指令类型;当该指令是分支指令时,计算该分支指令的分支目标指令地址,并记录该分支目标指令地址对应的目标地址信息;该目标地址信息对应至少包含该分支目标指令在内的一个指令段;若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少包含该分支目标指令的指令段填充到缓存中与该目标地址信息对应的位置中,使得处理器核执行该分支指令之前,该分支指令的后一指令及分支目标指令都已存储在缓存中。

【技术特征摘要】
1.一种分支处理方法,其特征在于所述方法包括:
判断写入缓存的指令的指令类型,并记录该指令类型;当该指令是分支指
令时,
计算该分支指令的分支目标指令地址,并记录该分支目标指令地址对应的
目标地址信息;该目标地址信息对应至少包含该分支目标指令在内的一个指令
段;
若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少
包含该分支目标指令的指令段填充到缓存中与该目标地址信息对应的位置中,
使得处理器核执行该分支指令之前,该分支指令的后一指令及分支目标指令都
已存储在缓存中。
2.根据权利要求1所述方法,其特征在于:
对于缓存中的每条指令,均有一个指令类型和一个目标地址信息与之对应。
3.根据权利要求2所述方法,其特征在于:
所述指令类型可以包括有条件的分支指令。
4.根据权利要求2所述方法,其特征在于:
所述指令类型还可以包括无条件的分支指令。
5.根据权利要求2所述方法,其特征在于:
所述指令类型还可以包括非分支指令。
6.根据权利要求2所述方法,其特征在于:
对于每条指令,还可以有一个有效位与之对应;所述有效位表示对应的目
标地址信息是否有效。
7.根据权利要求6所述方法,其特征在于:
若一个目标地址信息对应的指令段被替换出缓存,则将该目标地址信息对
应的有效位设置为无效。
8.根据权利要求7所述方法,其特征在于:
若即将被处理器核执行的分支指令对应的有效位表示为无效,则重新计算
该分支指令的分支目标指令地址,并记录该分支目标指令地址对应的目标地址
信息。
9.根据权利要求8所述方法,其特征在于:
若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少
包含分支目标指令的指令段填充到缓存中与该分支指令相应的目标地址信息对

\t应的位置中,使得处理器核执行该分支指令之前,该分支指令的后一指令及分
支目标指令都已存储在缓存中。
10.根据权利要求4、6所述方法,其特征在于:
若即将被处理器核执行的分支指令是间接分支指令且有效位表示为有效,
则在处理器核计算得到分支目标地址前,猜测执行该间接分支指令的后续指令,
即将该间接分支指令对应的目标地址信息作为后续指令的位置,使得流水线操
作不会因为间接分支指令而暂停。
11.根据权利要求10所述方法,其特征在于:
在处理器核计算得到间接分支目标地址后,将该分支目标地址与该间接分
支指令对应的目标地址信息对应的分支目标地址进行比较,并根据比较结果决
定后续操作。
12.根据权利要求11所述方法,其特征在于:
若比较结果为不相等且发生分支转移,则以处理器核计算得到分支目标地
址作为该间接分支指令的后续指令地址。
13.根据权利要求12所述方法,其特征在于:
记录该分支目标地址对应的目标地址信息;该目标地址信息对应至少包含
该分支目标指令在内的一个指令段;
若该分支目标指令尚未存储在缓存中,则根据该分支目标指令地址将至少
包含该分支目标指令的指令段填充到缓存中与该目标地址信息对应的位置中。
14.根据权利要求2所述方法,其特征在于所述方法进一步包括:
从缓存同时向处理器核提供所述后一指令及分支目标指令;
决定对应于分支指令的分支判定;和
根据所述分支判定,在所述分支指令到达其在流水线中的执行段前,选择
至少所述分支目标指令和所述后一指令中的一个作为所述执行单元将要执行的
指令,使得无论所述分支指令的转移是否发生都不会导致流水线操作的暂停。
15.根据权利要求14所述方法,其特征在于:
对该分支指令对应的目标地址信息进行递增,可以提供缓存中所述分支目
标指令所在指令段的寻址地址;若该分支指令的执行结果为分支转移成功发生,
则将该递增目标地址信息作为新的寻址地址进行后续操作。
16.根据权利要求15所述方法,其特征在于:
记录该分支指令之后顺序执行的指令的位置信息;对该分支指令本身的地
址进行递增,可以提供缓存中该分支指令所在指令段的寻址地址;
若该分支指令的执行结果为分支转移不发生,则将该递增地址的地址信息
作为新的寻址地址进行后续操作。
17.根据权利要求16所述方法,其特征在于:
当分支指令本身地址递增后已经到达指令段最后一条指令时,可以继续对
该地址进行递增,从而指向与该指令段地址相邻的后一指令段中的指令,同时
将该递增地址的地址信息作为新的寻址地址进行后续操作。
18.根据权利要求17所述方法,其特征在于:
根据所述分支判定,当所述分支指令的执行结果表示该分支转移没有成功
发生时,放弃由分支目标地址递增得到的地址信息,仅使用由分支指令本身地
址递增得到的地址信息作为新的寻址地址。
19.根据权利要求2所述方法,其特征在于:
所述指令类型还可以包含函数调用指令和函数返回指令。
20.根据权利要求19所述方法,其特征在于:
当处理器核执行函数调用指令时,将函数返回地址对应的目标地址信息压
栈存储到一...

【专利技术属性】
技术研发人员:林正浩林穆云任浩琪
申请(专利权)人:上海芯豪微电子有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1