响应于到子例程的分支而预测内容表指针值制造技术

技术编号:24019715 阅读:29 留言:0更新日期:2020-05-02 04:49
响应于分支到子例程而预测内容表(TOC)指针值。从在处理器上执行的调用模块调用子例程。基于调用子例程,预测指向诸如TOC的参考数据结构的指针的值。在执行子例程中的用于计算所述值的一个或多个指令的序列之前执行所述预测。所预测的值被用于访问参考数据结构以获得子例程的变量的变量值。

Predict content table pointer values in response to branches to subroutines

【技术实现步骤摘要】
【国外来华专利技术】响应于到子例程的分支而预测内容表指针值
技术介绍
一个或多个方面一般涉及计算环境内的处理,尤其涉及促进这样的处理。许多计算系统使用全局偏移表(GOT)或内容表(TOC)来填充源代码内的变量。例如,编译器从源代码生成目标代码,而不知道代码/数据的最终地址或位移。具体地,编译器生成目标代码,该目标代码将访问变量值的变量地址参考数据结构(例如,全局偏移表或内容表),而不知道数据结构的最终大小或各种数据部分的偏移/地址。用于该信息的占位符被留在目标代码中并由链接器更新。为了访问GOT或TOC,使用指针。指针通常由指令序列计算。这些指令通常依赖于计算的寄存器,这些寄存器在处理器中不总是容易得到的。因此,对依赖于TOC的变量(即,除局部变量之外的变量)的访问会被延迟。
技术实现思路
通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并提供了附加的优点。该计算机程序产品包括可由处理电路读取并且存储用于执行方法的指令的计算机可读存储介质。该方法包括例如从在处理器上执行的调用模块调用子例程。基于调用子例程,预测指向参考数据结构的指针的值。在执行子例程中的用于计算所述值的一个或多个指令的序列之前执行所述预测。所预测的值被用于访问参考数据结构以获得子例程的变量的变量值。通过基于调用子例程来预测指针的值,提高了性能。在另一方面,在预测之前获得指针的当前值,并且将当前值存储在恢复位置。这是为了在误预测的情况下促进恢复。在一个实施例中,确定为指针预测的值不正确。基于确定为指针预测的值不正确,从恢复位置恢复当前值。在又一方面,将为指针预测的值加载到限定的位置。这便于处理。此外,在一个方面中,确定子例程中的当前指令是否对应于用于计算所述值的一个或多个指令的序列。基于确定当前指令对应于用于计算所述值的一个或多个指令的序列,将检查指令插入代码中以检查对所述值的预测。所述插入替换所述一个或多个指令的序列。在进一步的实施例中,确定是否设置了检查指示符。基于确定设置了检查指示符,确定当前指令是否对应于用于计算该值的一个或多个指令的序列。作为一个示例,基于确定当前指令不对应于用于计算该值的一个或多个指令的序列,确定当前指令是否对应于使用该值的一个或多个指令的序列。至少基于确定当前指令对应于使用该值的一个或多个指令的序列,执行恢复。在一个示例中,一个或多个指令的序列包括加载指令。在另一示例中,预测包括使用参考数据结构指针高速缓存来获得该值。此外,在一个实施例中,在预测之前获得指针的当前值,并且将当前值存储在重命名寄存器中以供恢复使用。本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。通过本文所述的技术实现了额外的特征和优点。其他实施例和方面在本文中详细描述,且被视为所要求保护的方面的一部分。附图说明在说明书结尾处的权利要求中作为示例特别指出并清楚地要求了一个或多个方面。从结合附图的以下详细描述中,一个或多个方面的前述和目的、特征和优点将变得显而易见,在附图中:图1A示出了用于结合和使用本专利技术的一个或多个方面的计算环境的一个示例;图1B示出了根据本专利技术的一个或多个方面的图1A的处理器的进一步细节;图1C示出了根据本专利技术的一个或多个方面使用的指令执行流水线的一个示例的进一步细节;图1D示出了根据本专利技术的一个方面的图1A的处理器的一个示例的进一步细节;图2示出了根据本专利技术的一个方面的设置TOC寄存器(SetTOCRegister,STR)指令的一个示例;图3示出了根据本专利技术的一个方面的与设置TOC寄存器指令相关联的处理的一个示例;图4示出了根据本专利技术的一个方面的与设置TOC寄存器指令相关联的处理的另一示例;图5示出了根据本专利技术的一个方面的与设置TOC寄存器指令相关联的处理的又一示例;图6A-6B示出了根据本专利技术的一个方面的验证TOC寄存器(这里也称为TOC指针寄存器)设置的实施例;图7A-7B示出了根据本专利技术的各个方面的验证TOC寄存器设置的其他实施例;图8示出了根据本专利技术的一个方面的确定TOC指针值(这里也称为TOC值)的一个实施例;图9示出了根据本专利技术的一个方面的与响应于子例程分支预测TOC值相关联的处理的一个示例;图10示出了根据本专利技术的一个方面的TOC值检查插入逻辑的一个示例;图11示出了根据本专利技术的一个方面的与响应于子例程分支预测TOC值相关联的处理的另一个示例;图12示出了根据本专利技术的一个方面的TOC值检查插入逻辑的另一示例;图13示出了根据本专利技术的一个方面的TOC值检查插入逻辑的另一示例;图14A示出了根据本专利技术的一个方面的TOC指针高速缓存(这里也称为TOC高速缓存)的一个示例;图14B示出了根据本专利技术的一个方面的TOC高速缓存插入处理的一个示例;图15示出了根据本专利技术的一个方面的分配给动态共享对象的TOC值的一个示例;图16示出了根据本专利技术的一个方面的TOC高速缓存的另一示例;图17示出了根据本专利技术的一个方面的TOC高速缓存插入处理的另一示例;图18示出了根据本专利技术的一个方面的将TOC值存储到TOC跟踪结构中的一个示例;图19示出了根据本专利技术的一个方面的由只读TOC寄存器参考的TOC的一个示例;图20A-20C示出了根据本专利技术的各方面的加载TOC相对长指令(LoadTOC-RelativeLonginstructions)的示例;图21示出了根据本专利技术的一个方面的加载地址TOC相对长指令(LoadAddressTOC-RelativeLonginstruction)的一个示例;图22示出了根据本专利技术的一个方面的TOC加法立即移位指令(TOCaddimmediateshiftinstruction)的一个示例;图23示出了根据本专利技术的一个方面的加法TOC立即移位指令(addTOCimmediateshiftedinstruction)的一个示例;图24示出了根据本专利技术的一个方面的处理可包括TOC操作数的指令的一个实施例;图25-27示出了根据本专利技术的各方面获得指令的TOC操作数的实施例;图28示出了根据本专利技术的一个方面的与使用设置TOC寄存器指令(SetTOCRegisterinstruction)相关联的编译流程的一个示例;图29示出了根据本专利技术的一个方面的与使用设置TOC寄存器指令相关联的静态链接器流程的一个示例;图30示出了根据本专利技术的一个方面的与使用TOC只读寄存器相关联的编译流程的一个示例;图31A-31B示出了根据本专利技术的一个方面的促进计算环境内的处理的一个实施例;图32A示出了结合和使用本专利技术的一个或多个方面的计算环境的另一个示例;图32B示出了图32A的存储器的进一步细节;图33示出了云计算本文档来自技高网...

【技术保护点】
1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:/n计算机可读存储介质,其可由处理电路读取并且存储用于执行方法的指令,所述方法包括:/n从在处理器上执行的调用模块调用子例程;/n基于调用所述子例程,预测指向参考数据结构的指针的值,所述预测是在执行所述子例程中的用于计算所述值的一个或多个指令的序列之前执行;以及/n使用被预测的所述值来访问所述参考数据结构,以获得所述子例程的变量的变量值。/n

【技术特征摘要】
【国外来华专利技术】20170919 US 15/708,223;20171121 US 15/819,4201.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,其可由处理电路读取并且存储用于执行方法的指令,所述方法包括:
从在处理器上执行的调用模块调用子例程;
基于调用所述子例程,预测指向参考数据结构的指针的值,所述预测是在执行所述子例程中的用于计算所述值的一个或多个指令的序列之前执行;以及
使用被预测的所述值来访问所述参考数据结构,以获得所述子例程的变量的变量值。


2.根据权利要求1所述的计算机程序产品,其中所述方法进一步包括:
在所述预测之前获得所述指针的当前值;以及
将所述当前值存储在恢复位置中。


3.根据权利要求2所述的计算机程序产品,其中所述方法进一步包括:
确定为所述指针预测的所述值不正确;以及
基于确定为所述指针预测的所述值不正确,从所述恢复位置获得所述当前值。


4.根据权利要求1所述的计算机程序产品,其中所述方法进一步包括将为所述指针预测的所述值加载在限定位置中。


5.根据权利要求1所述的计算机程序产品,其中所述方法进一步包括:
确定所述子例程中的当前指令是否对应于用于计算所述值的所述一个或多个指令的序列;以及
基于确定所述当前指令对应于用于计算所述值的所述一个或多个指令的序列,在所述代码中插入用于检查所述值的所述预测的检查指令,所述插入替换所述一个或多个指令的序列。


6.根据权利要求5所述的计算机程序产品,其中所述方法进一步包括:
确定是否设置了检查指示符;以及
基于确定设置了所述检查指示符,确定所述当前指令是否对应于用于计算所述值的所述一个或多个指令的序列。


7.根据权利要求5所述的计算机程序产品,其中所述方法进一步包括:
基于确定所述当前指令不对应于用于计算所述值的所述一个或多个指令的序列,确定所述当前指令是否对应于用于使用所述值的一个或多个指令的序列;以及
至少基于确定所述当前指令对应于用于使用所述值的所述一个或多个指令的序列,执行恢复。


8.根据权利要求1所述的计算机程序产品,其中所述一个或多个指令的序列包括加载指令。


9.根据权利要求1所述的计算机程序产品,其中所述方法进一步包括:
在所述预测之前获得所述指针的当前值;以及
将所述当前值存储在重命名寄存器中以供在恢复中使用。


10.根据权利要求1所述的计算机程序产品,其中所述预测包括使用参考数据结构指针高速缓存来获得所述值。


11.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:
存储器;以及
与所述存储器通信的处理器,其中所述计算机系统被配置为执行方法,所述方法包括:
从在处理器上执...

【专利技术属性】
技术研发人员:MK格施温德V萨拉普拉
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

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

1