【技术实现步骤摘要】
间接分支预测
技术介绍
乱序处理器典型地包括分支预测器,该分支预测器在诸如分支指令的被已知为产生可能的流改变的指令的情况下预测程序流将采取哪个方向。分支预测是有用的,因为它在知道分支指令的结果之前能够使指令由处理器推测性地执行。然而,间接分支(例如,以变量而非常量值为基础的分支)是难于预测的,因为分支预测器必须同时预测分支是否被采用以及目标在哪里二者。因此,许多分支预测器无法精确地预测间接分支。一种解决方案是改进由分支预测器使用的预测算法。然而,这通常相当困难而且是时间密集的。另一种解决方案是实现一种编译器,该编译器配置为移除与任何类似于switch结构的代码,因而不需要间接分支。然而,识别能够移除代码的情况是困难的。下面描述的实施例并不局限于解决已知的乱序处理器的任何或全部缺点的实现。
技术实现思路
提供这一
技术实现思路
部分以便按照简化的形式引入下面在【具体实施方式】中进一步描述的概念的选择。这一
技术实现思路
部分并不意在识别请求保护的主题的关键特征或基本特征,也并不意在作为确定请求保护的主题的范围时使用的辅助手段。本文描述了用于预测程序中跳转表switch语句的目标位置的方法和分支预测器。所述方法包括在所述分支预测器处连续地监控指令以便确定它们是否写入用于存储跳转表switch语句的输入变量的寄存器。将对于被监控的寄存器的任何更新存储在由所述分支预测器维护的寄存器表中。然后,当到了对于跳转表switch语句指令进行预测的时间时,所述分支预测器使用存储在所述表中的寄存器值来预测所述跳转表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语句指令的所述目标位置。...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。