处理器及循环程序分支预测方法技术

技术编号:18398043 阅读:36 留言:0更新日期:2018-07-08 19:08
本发明专利技术提供一种处理器及一种循环程序分支预测方法。其中,处理器至少包括分支预测单元(BPU)和循环预测单元(LPU),且LPU被配置用于:识别处理器当前运行的程序是否是循环程序,以及若当前运行的程序是循环程序,在BPU对第一分支的下一分支做出预测之前,获取第二分支对应的第二程序计数器值,即LPU预测第二分支是第一分支的下一分支。因此,在BPU对当前分支的下一个分支做出预测前,LPU先对下一个分支进行预测,这样可以免于在循环程序中一个分支与下一个分支之间使用气泡,从而可以减少延时长度,提高循环程序的执行效率。

【技术实现步骤摘要】
处理器及循环程序分支预测方法
本专利技术涉及计算机领域,特别涉及一种处理器及一种循环程序分支预测方法。
技术介绍
中央处理单元(CPU)包括指令取得单元(InstructionFetchUnit,IFU)、分支执行单元(BranchExecutionUnit,BEU)等。当CPU执行循环程序时,IFU取得一个分支中的所有指令之后,需要经过长度不确定的延时才能从BEU获得下一个分支对应的程序计数器(ProgramCounter,PC)值,然后IFU根据此PC值取得下一个分支中的指令。其中,循环程序包括,例如,for循环、while循环等。为了可以确定并减少延时的长度,在CPU中配置了分支预测单元(BranchPredictionUnit,BPU)用于,BEU获取循环程序下一个分支对应的PC值之前,对下一个分支进行预测。具体地,在一个分支完成后的一个时钟周期(clockcycle)里,IFU从BPU获得其预测的下一个分支对应的PC值,并根据此PC值取得下一分支中的指令。这样,循环程序中一个分支的最后一条指令与下一个分支的第一条指令之间依然会有几个空闲时钟周期(即,气泡)的延时,对于每个分支只包括少数指令的循环程序而言,这样的延时也是不可忽略的,会对整个循环程序的执行效率造成明显的影响。
技术实现思路
本专利技术实施例提供一种处理器及一种循环程序分支预测方法,以减少循环程序中一个分支与下一分支之间的延时长度,从而提高循环程序的执行效率。本专利技术实施例提供一种处理器包括分支预测单元和循环预测单元,其中,所述循环预测单元被配置用于:识别所述处理器当前运行的程序是否是循环程序,以及若所述当前运行的程序是循环程序,在所述分支预测单元对第一分支的下一分支做出预测之前,获取第二分支对应的第二程序计数器值,其中,所述当前运行的程序包括所述第一分支,所述循环预测单元预测所述第二分支是所述第一分支的下一分支。在一些实施例中,所述循环预测单元还被配置用于:在识别所述当前运行的程序是否是循环程序之前,识别第三分支包括的指令数量是否超过临界值,其中,所述当前运行的程序还包括所述第三分支,所述第三分支为所述第一分支的前一分支;若超过,所述循环预测单元进行初始化。在一些实施例中,所述临界值为8或小于8的值。在一些实施例中,所述循环预测单元还被配置用于:若所述第三分支包括的指令数量没有超过所述临界值,基于所述第三分支,获取偏移值和所述第一分支对应的第一程序计数器值,其中,所述偏移值表示所述第一程序计数器值与所述第三分支对应的第三程序计数器值之间的偏移。在一些实施例中,所述循环预测单元被配置用于识别所述当前运行的程序是否是循环程序包括:识别所述第一分支中的指令操作是否与所述第三分支中的指令操作相同;若所述第一分支中的指令操作与所述第三分支中的指令操作相同,基于所述第一程序计数器值及所述偏移值,获取所述第二程序计数器值;若所述第一分支中的指令操作与所述第三分支中的指令操作不同,进行初始化。在一些实施例中,所述处理器还包括指令取得单元,被配置用于:在获取所述第二程序计数器值后,根据所述第二程序计数器值取得所述第二分支中的指令,所述当前运行的程序还包括所述第二分支。在一些实施例中,所述分支预测单元被配置用于:对所述第一分支的下一分支做预测,并把预测的程序计数器值发送至所述指令取得单元及所述循环预测单元。在一些实施例中,所述循环预测单元还被配置用于:判断所述预测的程序计数器值和所述第二程序计数器值是否一致;若所述预测的程序计数器值和所述第二程序计数器值不一致,指示所述指令取得单元停止取得所述第二分支中的指令,并根据所述预测的程序计数器值,取得所述预测的程序计数器值对应的分支中的指令。在一些实施例中,所述循环预测单元还被配置用于:若所述预测的程序计数器值和所述第二程序计数器值一致,在分支预测单元对所述第二分支的下一分支做出预测之前,基于所述第二程序计数器值和所述偏移值,指示所述指令取得单元取得第四分支中的指令,其中,所述第四分支是所述循环预测单元预测的所述第二分支的下一分支,所述第二程序计数器值和所述偏移值的和对应所述第四分支。在一些实施例中,所述处理器还包括执行单元,若所述执行单元判断所述分支预测单元做出的预测错误,指示所述循环预测单元进行初始化。本专利技术实施例还提供一种循环程序分支预测方法包括:识别当前的程序是否是循环程序,以及若所述当前的程序是循环程序,在分支预测单元对第一分支的下一分支做出预测之前,获取第二分支对应的第二程序计数器值,以预测所述第二分支是所述第一分支的下一分支,其中,所述当前的程序包括所述第一分支。在一些实施例中,所述方法还包括:在识别所述当前的程序是否是循环程序之前,识别第三分支包括的指令数量是否超过临界值,其中,所述当前的程序还包括所述第三分支,所述第三分支为所述第一分支的前一分支;若超过,进行初始化。在一些实施例中,所述临界值为8或小于8的值。在一些实施例中,所述方法还包括:若所述第三分支包括的指令数量没有超过所述临界值,基于所述第三分支,获取偏移值和所述第一分支对应的第一程序计数器值,其中,所述偏移值表示所述第一程序计数器值与所述第三分支对应的第三程序计数器值之间的偏移。在一些实施例中,识别所述当前的程序是否是循环程序包括:识别所述第一分支中的指令操作是否与所述第三分支中的指令操作相同;若所述第一分支中的指令操作与所述第三分支中的指令操作相同,基于所述第一程序计数器值及所述偏移值,获取所述第二程序计数器值;若所述第一分支中的指令操作与所述第三分支中的指令操作不同,进行初始化。在一些实施例中,所述方法还包括:在获取所述第二程序计数器值后,指示指令取得单元根据所述第二程序计数器值取得所述第二分支中的指令,其中,所述当前的程序还包括所述第二分支。在一些实施例中,所述方法还包括:所述分支预测单元对所述第一分支的下一分支做预测后,获取预测的程序计数器值。在一些实施例中,所述方法还包括:判断所述预测的程序计数器值和所述第二程序计数器值是否一致;若所述预测的程序计数器值和所述第二程序计数器值不一致,指示所述指令取得单元停止取得所述第二分支中的指令,并根据所述预测的程序计数器值取得所述预测的程序计数器值对应的分支中的指令。在一些实施例中,所述方法还包括:若所述预测的程序计数器值和所述第二程序计数器值一致,在所述分支预测单元对所述第二分支的下一分支做出预测之前,指示所述指令取得单元基于所述第二程序计数器值和所述偏移值取得第四分支中的指令,以预测所述第四分支是所述第二分支的下一分支,其中,所述第二程序计数器值和所述偏移值的和对应所述第四分支。在一些实施例中,所述方法还包括:若判断所述分支预测单元做出的预测错误,进行初始化。与现有技术相比,本专利技术实施例的技术方案具有以下优点:循环预测单元(LoopPredictionUnit,LPU)用于在BPU对当前分支的下一个分支做出预测前,先对下一个分支进行预测,并指示IFU取得其预测的下一个分支中的指令,这样可以免于在循环程序中一个分支与下一个分支之间使用气泡,从而可以减少延时长度,提高循环程序的执行效率。附图说明图1示出了本专利技术一个实施例的处理器的结构示意图;图2示出了本专利技术一个实施例的计算机程序本文档来自技高网...

【技术保护点】
1.一种处理器,其特征在于,包括分支预测单元和循环预测单元,所述循环预测单元被配置用于:识别所述处理器当前运行的程序是否是循环程序,以及若所述当前运行的程序是循环程序,在所述分支预测单元对第一分支的下一分支做出预测之前,获取第二分支对应的第二程序计数器值,其中,所述当前运行的程序包括所述第一分支,所述循环预测单元预测所述第二分支是所述第一分支的下一分支。

【技术特征摘要】
1.一种处理器,其特征在于,包括分支预测单元和循环预测单元,所述循环预测单元被配置用于:识别所述处理器当前运行的程序是否是循环程序,以及若所述当前运行的程序是循环程序,在所述分支预测单元对第一分支的下一分支做出预测之前,获取第二分支对应的第二程序计数器值,其中,所述当前运行的程序包括所述第一分支,所述循环预测单元预测所述第二分支是所述第一分支的下一分支。2.如权利要求1所述的处理器,其特征在于,所述循环预测单元还被配置用于:在识别所述当前运行的程序是否是循环程序之前,识别第三分支包括的指令数量是否超过临界值,其中,所述当前运行的程序还包括所述第三分支,所述第三分支为所述第一分支的前一分支;若超过,所述循环预测单元进行初始化。3.如权利要求2所述的处理器,其特征在于,所述临界值为8或小于8的值。4.如权利要求2所述的处理器,其特征在于,所述循环预测单元还被配置用于:若所述第三分支包括的指令数量没有超过所述临界值,基于所述第三分支,获取偏移值和所述第一分支对应的第一程序计数器值,其中,所述偏移值表示所述第一程序计数器值与所述第三分支对应的第三程序计数器值之间的偏移。5.如权利要求4所述的处理器,其特征在于,所述循环预测单元被配置用于识别所述当前运行的程序是否是循环程序包括:识别所述第一分支中的指令操作是否与所述第三分支中的指令操作相同;若所述第一分支中的指令操作与所述第三分支中的指令操作相同,基于所述第一程序计数器值及所述偏移值,获取所述第二程序计数器值;若所述第一分支中的指令操作与所述第三分支中的指令操作不同,进行初始化。6.如权利要求5所述的处理器,其特征在于,还包括指令取得单元,被配置用于:在获取所述第二程序计数器值后,根据所述第二程序计数器值取得所述第二分支中的指令,所述当前运行的程序还包括所述第二分支。7.如权利要求6所述的处理器,其特征在于,所述分支预测单元被配置用于:对所述第一分支的下一分支做预测,并把预测的程序计数器值发送至所述指令取得单元及所述循环预测单元。8.如权利要求7所述的处理器,其特征在于,所述循环预测单元还被配置用于:判断所述预测的程序计数器值和所述第二程序计数器值是否一致;若所述预测的程序计数器值和所述第二程序计数器值不一致,指示所述指令取得单元停止取得所述第二分支中的指令,并根据所述预测的程序计数器值,取得所述预测的程序计数器值对应的分支中的指令。9.如权利要求7所述的处理器,其特征在于,所述循环预测单元还被配置用于:若所述预测的程序计数器值和所述第二程序计数器值一致,在分支预测单元对所述第二分支的下一分支做出预测之前,基于所述第二程序计数器值和所述偏移值,指示所述指令取得单元取得第四分支中的指令,其中,所述第四分支是所述循环预测单元预测的所述第二分支的下一分支,所述第二程序计数器值和所述偏移值的和...

【专利技术属性】
技术研发人员:埃德温·苏坦托
申请(专利权)人:展讯通信上海有限公司
类型:发明
国别省市:上海,31

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

1