间接分支预测制造技术

技术编号:10220733 阅读:157 留言:0更新日期:2014-07-16 20:45
用于预测程序中跳转表switch语句的目标位置的方法和分支预测器。所述方法包括在分支预测器处连续地监控指令,以便确定它们是否写入存储跳转表switch语句的输入变量的寄存器。将对于被监控的寄存器的任何更新存储在由所述分支预测器维持的寄存器表中。然后,当到了对于跳转表switch语句指令做出预测的时间时,所述分支预测器使用存储在所述表中的寄存器值来预测所述跳转表switch语句将分支到哪里。

【技术实现步骤摘要】
间接分支预测
技术介绍
乱序处理器典型地包括分支预测器,该分支预测器在诸如分支指令的被已知为产生可能的流改变的指令的情况下预测程序流将采取哪个方向。分支预测是有用的,因为它在知道分支指令的结果之前能够使指令由处理器推测性地执行。然而,间接分支(例如,以变量而非常量值为基础的分支)是难于预测的,因为分支预测器必须同时预测分支是否被采用以及目标在哪里二者。因此,许多分支预测器无法精确地预测间接分支。一种解决方案是改进由分支预测器使用的预测算法。然而,这通常相当困难而且是时间密集的。另一种解决方案是实现一种编译器,该编译器配置为移除与任何类似于switch结构的代码,因而不需要间接分支。然而,识别能够移除代码的情况是困难的。下面描述的实施例并不局限于解决已知的乱序处理器的任何或全部缺点的实现。
技术实现思路
提供这一
技术实现思路
部分以便按照简化的形式引入下面在【具体实施方式】中进一步描述的概念的选择。这一
技术实现思路
部分并不意在识别请求保护的主题的关键特征或基本特征,也并不意在作为确定请求保护的主题的范围时使用的辅助手段。本文描述了用于预测程序中跳转表switch语句的目标位置的方法和分支预测器。所述方法包括在所述分支预测器处连续地监控指令以便确定它们是否写入用于存储跳转表switch语句的输入变量的寄存器。将对于被监控的寄存器的任何更新存储在由所述分支预测器维护的寄存器表中。然后,当到了对于跳转表switch语句指令进行预测的时间时,所述分支预测器使用存储在所述表中的寄存器值来预测所述跳转表switch语句将分支到哪里。第一方面提供一种用于预测由处理器执行的程序中的switch语句的目标位置的方法,所述方法包括:将对于至少一个被监控的寄存器的当前值存储在由分支预测器维持的寄存器表中,每一个被监控的寄存器已经被识别为存储跳转表switch语句的输入变量,跳转表switch语句是已经被编译到跳转表的switch语句;在分支预测器处接收指令用于预测;使用所述分支预测器确定接收到的指令是否写入具有更新值的被监控的寄存器之一;对确定接收到的指令写入具有更新值的被监控的寄存器之一做出响应,,更新对于被写入的具有更新值的所述寄存器的所述寄存器表中的当前值;并且使用所述分支预测器,使用所述当前值来预测跳转表switch语句指令的目标位置。第二方面提供一种分支预测器,所述分支预测器包括:寄存器表(116、534、536),所述寄存器表存储对于至少一个被监控的寄存器的当前值,每一个被监控的寄存器已经被识别为存储跳转表switch语句的输入变量,跳转表switch语句是已经被编译到跳转表的switch语句;以及与所述寄存器表(116、534、536)通信的逻辑单元,所述逻辑单元配置为:接收指令用于预测;确定接收到的指令是否写入具有更新值的被监控的寄存器之一;对确定接收到的指令写入具有更新值的被监控的寄存器之一做出响应,更新对于被写入的具有更新值的所述寄存器的所述寄存器表中的当前值;并且使用所述当前值来预测跳转表switch语句指令的目标位置。第三方面提供一种处理器,所述处理器包括根据第二方面的分支预测器。第四方面提供一种基本上参照图1和图2描述的处理器。第五方面提供一种基本上参照图4描述的预测switch语句指令的目标位置的方法。第六方面提供一种基本上参照图2和图5描述的处理器。本文描述的方法可以通过以有形存储介质上的机器可读形式的软件来执行,例如以包括计算机程序代码模块的计算机程序的形式,当所述程序在计算机上运行时并且在可以将所述计算机程序体现在计算机可读介质上的情况下,所述计算机程序代码模块适于执行本文描述的任何方法的全部步骤。有形(或非暂态)存储介质的示例包括磁盘、拇指驱动、存储卡等等,并且不包括传播的信号。软件可以适合于在并行处理器或串行处理器二者上执行,以使得能够按照任何合适的顺序或者同时执行所述方法步骤。这承认了固件和软件可以是有价值的,可单独销售的商品。意在包含在“哑”或标准硬件上运行的或者控制该“哑”或标准硬件的软件,以便执行期望的功能。还意在包括诸如HDL(硬件描述语言)软件的“描述”或定义硬件配置的软件,例如用于设计硅芯片,或者用于配置通用可编程芯片,以便实现期望的功能。可以适当地组合优选的特征,这对于本领域的普通技术人员来说是显而易见的,并且可以将优选的特征与本专利技术的任何方面进行组合。【附图说明】将参照附图通过示例的方式来描述本专利技术的实施例,在附图中:图1是示例单线程乱序处理器的示意图;图2是图1的不例寄存器表的不意图;图3是用于监控用于switch语句变量的寄存器的方法的流程图;图4是用于使用图1和图2的寄存器表中的数据来预测switch语句指令的目标位置的方法的流程图;并且图5是示例多线程乱序处理器的示意图。贯穿附图使用共同的附图标记来指示类似的特征。【具体实施方式】下面仅通过示例的方式来描述本专利技术的实施例。这些示例代表 申请人:目前已知的实践本专利技术的最佳方式,尽管这不是能够实现本专利技术的唯一方式。该描述阐释了该示例的功能以及用于构建和操作该示例的步骤序列。然而,可以通过不同的示例来实现相同或等效的功能和序列。如上所述,间接分支(例如,以变量而非常量值为基础的分支)难于预测,因为分支预测器必须同时预测分支是否被采用以及目标在哪里二者。该目标尤其难于预测,因为其典型地以周期性改变的寄存器值为基础。间接分支通常用于有限状态机中,可以将该有限状态机看作是其中具有C switch语句的循环。如本领域的普通技术人员已知的,switch语句用作将变量与一个值进行比较的长if语句的替代。下面示出了 switch语句的基本格式。本文档来自技高网...
间接分支预测

【技术保护点】
一种预测由处理器执行的程序中的switch语句的目标位置的方法(300,400),所述方法包括:在由分支预测器维护的寄存器表中存储对于至少一个被监控的寄存器的当前值,每一个被监控的寄存器已被识别为存储跳转表switch语句的输入变量,跳转表switch语句是被编译到跳转表的switch语句;在所述分支预测器处接收指令用于预测(302);使用所述分支预测器确定接收到的指令是否写入具有更新值的被监控的寄存器之一(304);对确定接收到的指令写入具有更新值的被监控的寄存器之一做出响应,利用所述更新值来更新对于被写入的寄存器的所述寄存器表中的当前值(306);并且使用所述分支预测器来使用所述当前值预测跳转表switch语句指令的目标位置(410)。

【技术特征摘要】
2013.01.14 GB 1300608.5;2013.12.18 GB 1322389.61.一种预测由处理器执行的程序中的switch语句的目标位置的方法(300,400),所述方法包括: 在由分支预测器维护的寄存器表中存储对于至少一个被监控的寄存器的当前值,每一个被监控的寄存器已被识别为存储跳转表switch语句的输入变量,跳转表switch语句是被编译到跳转表的switch语句; 在所述分支预测器处接收指令用于预测(302); 使用所述分支预测器确定接收到的指令是否写入具有更新值的被监控的寄存器之一(304); 对确定接收到的指令写入具有更新值的被监控的寄存器之一做出响应,利用所述更新值来更新对于被写入的寄存器的所述寄存器表中的当前值(306);并且 使用所述分支预 测器来使用所述当前值预测跳转表switch语句指令的目标位置(410)。2.根据权利要求1所述的方法(300,400),进一步包括: 在所述分支预测器处接收另一指令用于预测(402); 在所述分支预测器处确定所述另一指令是否是跳转表switch语句指令(404): 对确定所述另一指令是跳转表switch语句指令做出响应,确定所述寄存器表是否包括对于所述跳转表switch语句指令的输入变量的当前值;并且 对确定所述寄存器表包括对于所述跳转表switch语句指令的输入变量的当前值做出响应,使用所述当前值预测所述switch语句指令的目标位置(410)。3.根据权利要求2所述的方法(300,400),其中,确定所述另一指令是否是switch语句指令包括确定所述另一指令是否具有预定的模式。4.根据权利要求2或3所述的方法(300,400),进一步包括: 对确定所述另一指令是跳转表switch语句指令做出响应,使用于存储所述跳转表switch语句指令的所述输入变量的寄存器作为被监控的寄存器。5.根据权利要求4所述的方法(300,400),其中,使用于存储所述跳转表switch语句的所述输入变量的寄存器作为被监控的寄存器包括,在所述寄存器表中存储识别用于存储所述跳转表switch语句的所述输入变量的所述寄存器的信息。6.根据权利要求5所述的方法(300,400),其中,确定接收到的指令是否写入被监控的寄存器之一包括,将所述寄存器表中识别用于存储所述跳转表switch语句的所述输入变量的所述寄存器的信息与接收到的指令中识别写入寄存器的信息进行比较。7.根据权利要求2或3所述的方法(300,400),进一步包括: 对确定所述另一指令是跳转表switch语句指令做出响应,确定所述当前值是否要用于预测所述目标位置(408);并且 对确定所述当前值要用于预测所述目标位置做出响应,使用所述当前值来预测所述跳转表switch语句指令的所述目标位置。...

【专利技术属性】
技术研发人员:H·杰克逊
申请(专利权)人:想象力科技有限公司
类型:发明
国别省市:英国;GB

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

1