[发明专利]响应于到子例程的分支而预测内容表指针值有效
申请号: | 201880058318.1 | 申请日: | 2018-09-18 |
公开(公告)号: | CN111095201B | 公开(公告)日: | 2023-07-25 |
发明(设计)人: | M.K.格施温德;V.萨拉普拉 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/32 | 分类号: | G06F9/32 |
代理公司: | 北京市柳沈律师事务所 11105 | 代理人: | 邸万奎 |
地址: | 美国纽*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 响应 例程 分支 预测 内容 指针 | ||
响应于分支到子例程而预测内容表(TOC)指针值。从在处理器上执行的调用模块调用子例程。基于调用子例程,预测指向诸如TOC的参考数据结构的指针的值。在执行子例程中的用于计算所述值的一个或多个指令的序列之前执行所述预测。所预测的值被用于访问参考数据结构以获得子例程的变量的变量值。
背景技术
一个或多个方面一般涉及计算环境内的处理,尤其涉及促进这样的处理。
许多计算系统使用全局偏移表(GOT)或内容表(TOC)来填充源代码内的变量。例如,编译器从源代码生成目标代码,而不知道代码/数据的最终地址或位移。具体地,编译器生成目标代码,该目标代码将访问变量值的变量地址参考数据结构(例如,全局偏移表或内容表),而不知道数据结构的最终大小或各种数据部分的偏移/地址。用于该信息的占位符被留在目标代码中并由链接器更新。
为了访问GOT或TOC,使用指针。指针通常由指令序列计算。这些指令通常依赖于计算的寄存器,这些寄存器在处理器中不总是容易得到的。因此,对依赖于TOC的变量(即,除局部变量之外的变量)的访问会被延迟。
发明内容
通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并提供了附加的优点。该计算机程序产品包括可由处理电路读取并且存储用于执行方法的指令的计算机可读存储介质。该方法包括例如从在处理器上执行的调用模块调用子例程。基于调用子例程,预测指向参考数据结构的指针的值。在执行子例程中的用于计算所述值的一个或多个指令的序列之前执行所述预测。所预测的值被用于访问参考数据结构以获得子例程的变量的变量值。通过基于调用子例程来预测指针的值,提高了性能。
在另一方面,在预测之前获得指针的当前值,并且将当前值存储在恢复位置。这是为了在误预测的情况下促进恢复。在一个实施例中,确定为指针预测的值不正确。基于确定为指针预测的值不正确,从恢复位置恢复当前值。
在又一方面,将为指针预测的值加载到限定的位置。这便于处理。
此外,在一个方面中,确定子例程中的当前指令是否对应于用于计算所述值的一个或多个指令的序列。基于确定当前指令对应于用于计算所述值的一个或多个指令的序列,将检查指令插入代码中以检查对所述值的预测。所述插入替换所述一个或多个指令的序列。
在进一步的实施例中,确定是否设置了检查指示符。基于确定设置了检查指示符,确定当前指令是否对应于用于计算该值的一个或多个指令的序列。
作为一个示例,基于确定当前指令不对应于用于计算该值的一个或多个指令的序列,确定当前指令是否对应于使用该值的一个或多个指令的序列。至少基于确定当前指令对应于使用该值的一个或多个指令的序列,执行恢复。
在一个示例中,一个或多个指令的序列包括加载指令。在另一示例中,预测包括使用参考数据结构指针高速缓存来获得该值。
此外,在一个实施例中,在预测之前获得指针的当前值,并且将当前值存储在重命名寄存器中以供恢复使用。
本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。
通过本文所述的技术实现了额外的特征和优点。其他实施例和方面在本文中详细描述,且被视为所要求保护的方面的一部分。
附图说明
在说明书结尾处的权利要求中作为示例特别指出并清楚地要求了一个或多个方面。从结合附图的以下详细描述中,一个或多个方面的前述和目的、特征和优点将变得显而易见,在附图中:
图1A示出了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B示出了根据本发明的一个或多个方面的图1A的处理器的进一步细节;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201880058318.1/2.html,转载请声明来源钻瓜专利网。