用于在数字处理器中执行跳转操作的方法和设备技术

技术编号:7210681 阅读:291 留言:0更新日期:2012-04-11 18:40
提供用于在流水线数字处理器中执行跳转操作的方法和设备。该方法包括将待执行的跳转指令的目标地址写入存储表,检测由该处理器执行的第一跳转指令,该第一跳转指令引用指向该存储表中的第一目标地址的指针,该处理器通过下述步骤执行该第一跳转指令:跳转到该第一目标地址和修改该指针指向该存储表中的第二目标地址,该第二目标地址对应于第二跳转指令。该第一跳转指令的执行可包括从该存储表预取至少一个未来目标地址和将该未来目标地址写入本地存储器。可响应于检测该第二跳转指令,访问该本地存储器中该第二目标地址。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及在数字处理器中执行跳转操作,更具体地,涉及异常的双间接跳转指令和用于实现双间接跳转指令的设备。
技术介绍
跳转指令一般包括在数字处理器的指令集架构中。在顺序程序执行期间,处理器从顺序存储器地址获取指令。跳转指令用于将程序执行从执行第一指令序列转换为执行第二指令序列,还直接地或者间接地指定目标地址。该目标地址包括第二指令序列的第一指令。当处理器从存储器获取跳转指令时,其跳转到目标地址并且开始执行第二指令序列。程序可包括多个跳转指令,每个跳转指令具有一个不同的目标地址。跳转指令可以用于例如执行不同的子例程。跳转指令可以是有条件的或者无条件的。有条件跳转指令通常称为分支指令。当前的处理器通常使用流水线架构。这样的处理器包括多个流水段以获得高速运算。每一流水段执行指令执行所涉及的一种功能,例如指令获取、指令译码、数据地址产生、 计算等。程序指令在连续时钟周期前进通过流水段,且多个指令可在同一时间处于各种完成阶段。理想地,流水线处理器可在每个时钟周期完成一个指令的执行。可通过提供大量流水段来提升性能。处理器中流水段的数量通常称为“流水线深度”。尽管流水线架构提供了增强的性能,但某些程序条件可降低性能。这样程序条件的一个示例为跳转指令。在包括例如数字信号处理器应用和微控制器应用的大多数计算机编程中,跳转指令是常用的。当跳转指令前进通过流水线处理器且没有使用分支预测时,跟随该跳转指令的相继指令进入流水线中。当跳转指令在流水线的末端处提交(commit)时, 必须清空流水线,其方式是中止当前流水线中的所有指令,并且从跳转指令的目标地址处开始重新执行指令。性能损失随流水线深度而增加。对于深流水线架构和具有频繁的跳转指令的程序,性能损失会是严重的。分支预测技术为本领域公知的。在典型的分支预测器中,分支高速缓存包括分支和跳转指令的地址和对应的预测信息。当程序序列发生器获得跳转指令时,分支预测器基于该跳转指令的存储器地址检测该跳转指令。分支高速缓存中包括的预测信息使得处理器可以跳转到目标地址而无需冲刷该流水线。现有技术的分支预测器对于性能影响有限。因此,需要用于在数字处理器中执行跳转操作的改进的方法和设备
技术实现思路
根据本专利技术的第一方面,提供了一种用于在流水线数字处理器中执行跳转操作的方法。该方法包括将要被该处理器执行的跳转指令的目标地址写入存储表,检测由该处理器执行的第一跳转指令,该第一跳转指令引用指向该存储表中的第一目标地址的指针,该处理器通过下述步骤执行该第一跳转指令跳转到该第一目标地址和修改该指针指向该存储表中的第二目标地址,该第二目标地址对应于第二跳转指令。该第一跳转指令的执行可还包括从该存储表预取至少一个未来目标地址和将该至少一个未来目标地址写入本地存储器。可响应于检测该第二跳转指令,访问该本地存储器中该第二目标地址。根据本专利技术的第二方面,提供了一种用于在具有分支预测器的流水线数字处理器中执行跳转操作的方法。该方法包括将要被该处理器执行的跳转指令的目标地址写入存储表,提供该处理器的指令集架构中的跳转指令,该跳转指令引用指向该存储表中的目标地址的指针,响应于该分支预测器检测第一跳转指令,跳转到第一目标地址和修改该指针指向该存储表中的第二目标地址,该第二目标地址对应于第二跳转指令。根据本专利技术的第三方面,提供了一种用于在流水线数字处理器中执行跳转操作的设备。该设备包括用于存储将要被执行的跳转指令的目标地址的存储表、本地存储器和跳转指令控制单元,该跳转指令控制单元用于控制跳转指令的执行,该跳转指令引用指向该存储表中目标地址的指针,该跳转指令控制单元响应于第一跳转指令以跳到第一目标地址,还将该指针修改为指向该存储表中的第二目标地址,从该存储表预取至少一个未来目标地址并且将该至少一个未来目标地址写入该本地存储器。根据本专利技术的第四方面,提供了一种用于在流水线数字处理器中执行跳转操作的方法。该方法包括将要被该处理器执行的跳转指令的目标地址写入存储表;该处理器的分支预测器学习第一跳转指令,该第一跳转指令引用指向该存储表中的第一目标地址的指针;该处理器的获取块获取该第一跳转指令;该分支预测器检测该第一跳转指令;从本地存储器中读对应于该第一跳转指令的该第一目标地址并且将该第一目标地址提供给该处理器的该获取块;修改该指针指向该存储表中的第二目标地址,该第二目标地址对应于第二跳转指令;从该存储表中预取未来目标地址;当该第一跳转指令提交时,将预取的未来目标地址写入该本地存储器;以及当该第一跳转指令提交时,从该本地存储器收回该第一目标地址。附图说明为了更好的理解本专利技术,可参考附图,其通过引用包含于此,其中图1是根据本专利技术的实施例的用于执行跳转操作的设备的简化框图;图2是根据本专利技术的实施例的用于执行跳转操作的跳转控制设备的简化框图;图3是跳转控制设备的框图,示出了分支预测器读指针的计算和用于读存储表的参数;图4是跳转控制设备的框图,示出了在本地存储器检测推测的空情形;图5是跳转控制设备的框图,示出了本地存储器的控制;图6是跳转控制设备的框图,示出了误预测情形的处理;和图7是根据本专利技术的实施例示出的跳转控制设备操作的示意图。具体实施例方式图1中示出了根据本专利技术实施例用于处理跳转指令的数字处理器。该数字处理器包括计算核10和存储器12。如本领域公知的,该计算核10和存储器12可具有流水线架构。该计算核10可包括具有阶段A-L的流水线20。指令执行所涉及的功能由流水线20的功能块来执行,该流水线的功能块包括指令获取块50、分支预测器51、指令译码器53、数据地址产生器(DAG)54、计算块和提交块61。应该理解,不同的处理器设计可具有更多或者更少的阶段,且每个功能可需要流水线的一个或更多的阶段。同样,一个阶段可执行两个或更多的功能。配置数字处理器来执行指令集,该指令集包括用于执行各种操作的指令。根据本专利技术的实施例,该指令集包括异常跳转指令,在此称为“双间接跳转”或者“JDI”指令。在运行某些算法的深流水线处理器中,JDI指令可避免执行跳转操作时的流水线气泡 (bubble) 0图1中示出了与执行JDI指令相关的数字处理器的部件。计算核10包括JDI控制单元30和本地JDI存储器32。另外,存储器12包括存储表34。JDI控制单元30、本地 JDI存储器32和存储表34与流水线20的部件交互以执行JDI指令,如下所述。当待执行例程的目标地址在执行跳转指令之前已知时,双间接跳转(JDI)指令可加速跳转操作。该指令语法可以是JUMP ();其中是一组指针寄存器中的一个,其包括指向存储表34中条目的指针。存储表34中的条目包括跳转指令的目标地址。另外,当跳转指令提交时,该指针是后修改的。如名字“双间接跳转”所提示的,在取得下个目标地址的过程存在两级间接。当满足如下两个条件时,JDI指令可被加速(1)可以预先计算目标地址且将目标地址置于存储表34中,和( 流水线20的分支预测器学习了 JDI指令。在执行JDI指令之前预计算了目标地址,并将其存储在存储表34中。可将多个目标地址写入存储表34,以供多个JDI指令如以下描述进行使用。存储表可以由“end table”(表末端)标记来终止。预计算JDI指令的目标地址,并将其按该JDI指令将要本文档来自技高网
...

【技术保护点】
到该第一目标地址;和修改该指针指向该存储表中的第二目标地址,该第二目标地址对应于第二跳转指令。1.一种用于在流水线数字处理器中执行跳转操作的方法,包括:将要被该处理器执行的跳转指令的目标地址写入存储表;检测由该处理器执行的第一跳转指令,该第一跳转指令引用指向该存储表中的第一目标地址的指针;该处理器通过下述步骤执行该第一跳转指令:跳转

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:C·M·玛雅
申请(专利权)人:美国亚德诺半导体公司
类型:发明
国别省市:US

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

1