当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于支持推测的访客返回地址栈仿真的方法和装置制造方法及图纸

技术编号:20389214 阅读:25 留言:0更新日期:2019-02-20 02:35
本申请公开了用于支持推测的访客返回地址栈仿真的方法和装置。公开了一种用于维护乱序微处理器管线中的访客返回地址栈的微处理器实现的方法。方法包括将访客地址空间中的多个指令映射到本地地址空间中的对应的多个指令。针对在执行期间取回的所述本地地址空间中的每个函数调用指令,所述方法进一步包括实施以下步骤:(a)响应于函数调用将当前条目入栈到访客返回地址栈(GRAS)中,其中GRAS在管线的取回段处维护,并且其中当前条目包括关于与函数调用相关联的访客目标返回地址和对应的本地目标返回地址两者的信息;(b)响应于处理返回指令将当前条目从所述GRAS出栈;以及(c)在从GRAS出栈之后从当前条目中的本地目标返回地址取回指令。

【技术实现步骤摘要】
用于支持推测的访客返回地址栈仿真的方法和装置本专利技术专利申请是国际申请号为PCT/US2014/026252,国际申请日为2014年3月13日,进入中国国家阶段的申请号为201480021703.0,名称为“用于支持推测的访客返回地址栈仿真的方法和装置”的专利技术专利申请的分案申请。
根据本专利技术的实施例一般地涉及微处理器体系架构,并且更具体地,涉及用于乱序(OOO)微处理器的仿真体系架构。
技术介绍
很多类型的数字计算机系统利用代码变换/转译或仿真来实现基于软件的功能。通常,转译和仿真两者都涉及对软件程序指令进行检查并且实施由软件指令指定的功能和动作,即使指令对于计算机系统并非是“本地”(native)的。例如,在仿真体系架构中,非本地的(或访客)指令可以映射为本地指令的形式,其被设计为在计算机的硬件上执行。如关于2012年1月27日提交的名为“GUESTINSTRUCTIONTONATIVEINSTRUCTIONRANGEBASEDMAPPINGUSINGACONERSIONLOOKASIDEBUFFEROFAPROCESSOR”的、律师案号为SMII-0030的、MohammadAbdallah的美国专利申请No.13/359,767(以下称为“申请No.13/359,767”)详细描述的,访客指令块在仿真体系架构中被转换或者映射为本地转换块。如申请No.13/359,767中所述,仿真体系架构中的访客指令可以来自若干不同的访客指令体系架构(例如,Java,x86,MIPS等)并且多个访客指令块可以被转换为一个或多个对应的本地转换块。该转换在每指令的基础上发生。例如,访客代码块可以转换为本地代码的数个对应指令系列。另外,如申请No.13/359,767中所述,诸如转换后备缓冲器(CLB)的结构常用于在仿真体系架构中,以提供访客地址和本地地址之间的映射。转换后备缓冲器一般用于高速缓存访客块和本地块之间的地址映射,从而通过低的处理器可用延迟对最常遇到的本地转换块进行访问。使用CLB加速了来自访客指令体系架构的访客指令到用于在本地处理器上执行的本地指令体系架构的本地指令的转译处理。通过使用CLB,访客指令被快速转换为本地指令并且被管线化到本地处理器硬件用于快速执行。在某些情况下,由于对访客空间中的相同函数的函数调用,转换后备缓冲器(CLB)可能临时充满太多条目。函数调用包括对来自指令序列内的对函数的调用以及在函数已经执行之后返回到指令序列。对于在调用后随后从访客空间的函数的每个返回(以下称为“函数返回”),新的对应指令系列在本地空间中一般从函数的返回地址处开始。因此,必须在CLB中为每个这样的返回创建新的映射。因为可以从来自访客代码块内的多个地方调用函数,所以结果是CLB中用于函数的数个访客-到-本地的映射。这导致在处理器管线中为宝贵的资源的CLB被临时充满,并且这是对CLB结构非常低效的使用。
技术实现思路
相应地,需要用于创建更高效和灵活的途径来对用于访客代码中的函数返回的访客-到-本地映射进行高速缓存的方法和装置。在一个实施例中,称为访客返回地址栈(GRAS)的专用硬件结构被用于推测性地高速缓存用于函数返回的映射,其中GRAS结构对用于函数返回的访客地址和本地地址两者进行高速缓存,并且其中GRAS驻留在处理器管线的前端,例如在取回段。在创建映射之后,当在代码中遇到函数时,查找GRAS以确定对函数返回的目标的预测。因此,防止CLB被与来自相同函数的函数返回相关联的多个条目充满并有利地节省了CLB中的宝贵空间。在一个实施例中,GRAS在硬件中实现并用于预测函数返回的目标。相应地,在一个实施例中,在乱序(OOO)微处理器的取回单元中推测性地实施栈操作。然而,在深而宽的超标量处理器中可以存在可能在执行期间在代码中遇到的许多个调用和返回。由于在GRAS内创建的一些映射可能与错误预测路径上的函数相关联(例如,由于推测可能不正确),因此GRAS内的栈信息可能损坏。在本专利技术的一个实施例中,类似于链表结构来维护和更新GRAS以防止栈损坏。例如,使用循环缓冲器来实现GRAS,每个条目载有指向在前条目的指针。另外,在一个实施例中,维护两个全局变量,其中一个指向栈顶并且另一个指向GRAS中下一个可用条目。与函数调用相关联的新的映射被插入到下一个可用条目,因此没有条目被覆写。相应的,在错误预测的情况下,可以简单调整用于保持跟踪GRAS中的条目的指针以恢复先前的状态。由于没有条目被覆写,因此GRAS结构的链表实现防止了如果错误预测情况下栈的损坏。在一个实施例中,提供一种用于维护乱序微处理器管线中的访客返回地址栈的微处理器实现的方法。方法包括将访客地址空间中的多个指令映射到本地地址空间中的对应的多个指令。针对在执行期间取回的本地地址空间中的每个函数调用指令,所述方法进一步包括实施以下步骤:(a)响应于函数调用将当前条目入栈到访客返回地址栈(GRAS)中,其中GRAS在管线的取回段处维护,并且其中当前条目包括关于与函数调用相关联的访客目标返回地址和对应的本地目标返回地址两者的信息;(b)响应于处理返回指令将当前条目从所述GRAS出栈;以及(c)在从GRAS出栈之后从当前条目中的本地目标返回地址取回指令。接下来与附图一起的详细描述将提供对本专利技术性质和优点的更好理解。附图说明本专利技术的实施例在附图中以示例的方式示出,但并非以限制的方式,在附图中相似的参考标号指代相似的元件。图1是根据本专利技术的实施例的示例性计算机系统。图2是根据本专利技术的一个实施例的、本专利技术的实施例可以在其上实现的用于乱序微处理器的管线的管段的示例性框图。图3A示出了访客地址空间中的函数的示例性系列。图3B示出了从驻留在访客地址空间中的图3A的函数映射到本地地址空间所导致的各个指令序列。图4A示出了多次调用相同的函数的访客地址空间中的示例性指令序列。图4B-C示出了根据专利技术的实施例的GRAS更新的方式。图5示出了根据本专利技术实施例的GRAS更新的方式的另一个示例。图6示出了GRAS如果维护为常规堆栈可能损坏的方式的示例。图7示出了根据本专利技术的一个实施例的、响应于图6中所示的指令序列,推测地更新GRAS的链表实现的方式。图8示出了根据本专利技术的一个实施例的、响应于分支错误预测,GRAS的链表实现的更新的方式。图9描述了根据本专利技术的实施例的、用于维护访客返回地址栈的示例性计算机控制的过程的流程图900。具体实施方式现在将详细参考本专利技术的各实施例,其示例在附图中示出。虽然本专利技术将结合这些实施例进行描述,但是应该理解它们并非旨在将本专利技术限定于这些实施例。相反,本专利技术旨在覆盖可以包括在如随附权利要求所限定的本专利技术的精神和范围内的替换、修改和等同物。此外,在本专利技术的实施例的以下详细描述中,阐述了许多具体细节以提供对本专利技术的透彻理解。然而本领域普通技术人员将认识到本专利技术可以没有这些具体细节而实施。在其他实例中,没有详细描述公知的方法、步骤、组件和电路以免对本专利技术的实施例的各方面造成不必要的混淆。符号和术语:接下来的部分详细描述以过程、逻辑块、处理以及对计算机存储器内数据比特进行操作其他象征性表示来呈现。这些描述和表示是由数据处理领域技术人员所使用的手段,以向本领域的其他技术人员最有效地本文档来自技高网
...

【技术保护点】
1.一种用于推测性地维护乱序微处理器管线中的访客返回地址栈的微处理器实现的方法,所述方法包括:响应于函数调用,将当前条目入栈到访客返回地址栈GRAS中,其中所述访客返回地址栈GRAS在所述管线的取回段处维护,并且其中所述当前条目包括关于与所述函数调用相关联的访客目标返回地址和对应的本地目标返回地址两者的信息;响应于处理返回指令,将所述当前条目从所述访客返回地址栈GRAS出栈;将所述当前条目与从返回地址栈RAS出栈的条目进行比较以验证所述当前条目,其中所述返回地址栈RAS在所述管线的相对于所述管线的所述取回段的较后的段处维护;以及基于所述比较的结果取回指令。

【技术特征摘要】
2013.03.15 US 61/793,1741.一种用于推测性地维护乱序微处理器管线中的访客返回地址栈的微处理器实现的方法,所述方法包括:响应于函数调用,将当前条目入栈到访客返回地址栈GRAS中,其中所述访客返回地址栈GRAS在所述管线的取回段处维护,并且其中所述当前条目包括关于与所述函数调用相关联的访客目标返回地址和对应的本地目标返回地址两者的信息;响应于处理返回指令,将所述当前条目从所述访客返回地址栈GRAS出栈;将所述当前条目与从返回地址栈RAS出栈的条目进行比较以验证所述当前条目,其中所述返回地址栈RAS在所述管线的相对于所述管线的所述取回段的较后的段处维护;以及基于所述比较的结果取回指令。2.根据权利要求1所述的方法,其中如果所述比较的结果是匹配,则所述取回从自所述访客返回地址栈GRAS出栈的所述当前条目的所述本地目标返回地址取回指令,并且其中如果所述比较的结果是不匹配,则所述取回从自所述返回地址栈RAS出栈的所述条目的本地目标返回地址取回指令。3.根据权利要求1所述的方法,其中所述当前条目依附于所述返回指令并且与所述返回指令一起通过所述管线发送到所述管线的所述较后的段。4.根据权利要求1所述的方法,其中所述访客返回地址栈GRAS是硬件栈并且所述返回地址栈RAS是软件栈。5.根据权利要求1所述的方法,其中所述访客返回地址栈GRAS是循环缓冲器,并且其中所述循环缓冲器维护:全局下一指针值,其中所述全局下一指针值指示所述访客返回地址栈GRAS中下一个可用条目的位置;以及用于所述访客返回地址栈GRAS中的每个条目的先前指针值,其中所述先前指针值指向所述访客返回地址栈GRAS中的在前条目。6.根据权利要求5所述的方法,其中所述入栈进一步包括:增量全局栈顶TOS值,其中所述全局栈顶值指示所述访客返回地址栈GRAS的栈顶位置;增量所述全局下一指针值以指向所述访客返回地址栈GRAS中的下一个可用条目;以及在所述入栈之前用栈顶TOS值更新用于所述当前条目的先前指针。7.根据权利要求6所述的方法,其中所述出栈进一步包括:减量所述全局栈顶TOS值;以及在所述出栈之前用栈顶TOS值更新用于所述当前条目的先前指针。8.一种配置为实施用于推测性地维护乱序微处理器管线中的访客返回地址栈的方法的处理器单元,所述方法包括:响应于函数调用,将当前条目入栈到访客返回地址栈GRAS中,其中所述访客返回地址栈GRAS在所述管线的取回段处维护,并且其中所述当前条目包括关于与所述函数调用相关联的访客目标返回地址和对应的本地目标返回地址两者的信息;响应于处理返回指令,将所述当前条目从所述访客返回地址栈GRAS出栈;将所述当前条目与从返回地址栈RAS出栈的条目进行比较以验证所述当前条目,其中所述返回地址栈RAS在所述管线的相对于所述管线的所述取回段的较后的段处维护;以及基于所述比较的结果取回指令。9.根据权利要求8所述的处理器单元,其中如果所述比较的结果是匹配,则所述取回从自所述访客返回地址栈GRAS出栈的所述当前条目的所述本地目标返回地址取回指令,并且其中如果所述比较的结果是不匹配,则所述取回从自所述返回地址栈RAS出栈的所述条目的本地目标返回地址取回指令。10.根据权利要求8所述的处理器单元,其中所述当前条目依附于所述返回指令并且与所述返回指令一起通过所述管线发送到所述管线的所述较后的段。11.根据权利要求8所述的处理器单元,其中所述访客返回地址栈GRAS是硬件栈并且所述返回地址栈RAS是软件...

【专利技术属性】
技术研发人员:穆罕默德·阿布达拉
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1