用于运行时并行化的对于代码段的顺序监测和管理制造技术

技术编号:16969236 阅读:46 留言:0更新日期:2018-01-07 06:21
本发明专利技术公开了一种用于运行时并行化的对于代码段的顺序监测和管理。处理器包括指令流水线和控制电路。指令流水线被配置为处理程序代码的指令。控制电路被配置成在运行时监测被处理的指令,以构建包括多个条目的调用数据结构,其中,每个条目(i)指定作为分支指令的目标的初始指令,(ii)指定遵循从初始指令开始的一个或更多个可能的流控制轨迹的程序代码中的一部分程序代码,以及(iii)针对在条目中指定的每个可能的流控制轨迹,指定在对可能的流控制轨迹进行处理之后将要处理的下一个条目,并且将指令流水线配置为通过连续地遍历调用数据结构的条目来处理程序代码中的段。

【技术实现步骤摘要】
用于运行时并行化的对于代码段的顺序监测和管理专利
本专利技术总体上涉及处理器设计,特别是涉及用于运行时代码并行化的方法和系统。专利技术背景已经提出了用于在运行时使软件代码动态并行化的各种技术。例如,Marcuellu等人在1998年的Proceedingsofthe12thInternationalConferenceonSupercomputing中发表的“SpeculativeMultithreadedProcessors”中描述了一种处理器微架构,其依靠不需要编译器或用户支持的控制推测(controlspeculation)技术,同时执行从单个程序获得的多个控制线程,其内容通过引用并入本文。Codrescu和Wills在2000年10月的JournalofUniversalComputerScience第10期第6卷第908-927页上的“OnDynamicSpeculativeThreadPartitioningandtheMEM-slicingAlgorithm”中描述了一种动态推测多线程处理器,其在没有软件支持的情况下自动提取来自顺序二进制应用的线程级并行性,其内容通过引用并入本文。专利技术概述在本文中描述的本专利技术的实施例提供了一种包括指令流水线和控制电路的处理器。指令流水线被配置为处理程序代码的指令。控制电路被配置成在运行时监测被处理的指令(instructions),以构建包括多个条目的调用数据结构,其中,每个条目(i)指定作为分支指令(branchinstruction)的目标的初始指令,(ii)指定遵循从初始指令开始的一个或更多个可能的流控制轨迹(flow-controltraces)的程序代码中的一部分,以及(iii)针对在条目中指定的每个可能的流控制轨迹,指定在对可能的流控制轨迹进行处理之后将要处理的下一个条目,并且将指令流水线配置为通过连续地遍历调用数据结构的条目来处理程序代码的段(segments)。在一些实施例中,控制电路被配置成对于流过流水线的全部的指令连续地监测指令,使得调用数据结构向着覆盖整个程序代码逐渐生长。在实施例中,控制电路被配置成响应于(i)对于当前监测过程的每次终止,(ii)对于尚未指定下一个条目的条目的每次遍历,以及(iii)对于在调用数据结构中不存在其指定的下一个条目的每次遍历,触发对于后续指令的监测。在另一个实施例中,响应于终止对于流控制轨迹的监测,控制电路被配置为或者(i)触发对于调用数据库中的与在被终止的流控制轨迹之后的指令相对应的给定条目的遍历,或者(ii)触发对于在被终止的流控制轨迹之后的指令的监测。在又一个实施例中,控制电路被配置成将可能的流控制轨迹中的每一个限定为在相应的分支指令中结束。在所公开的实施例中,控制电路被配置为通过以下方式构建调用数据结构:当处理器处理在给定的条目中指定的给定流控制轨迹上的指令时,识别对给定流控制轨迹未指定下一个条目;以及监测处理器在给定流控制轨迹之后处理的程序代码的新部分,并将新部分添加到调用数据库。在一些实施例中,控制电路被配置成响应于满足预定义的终止准则而决定终止对新的流控制轨迹的监测,然后将新的流控制轨迹添加到调用数据库。控制电路可以被配置为响应于以下中的一个或更多个来满足终止准则:达到间接分支指令;达到对函数的调用;达到对函数的间接调用;达到功能的回报;达到反向分支指令;达到预定数量的反向分支指令;遇到分支误预测;达到已经属于调用数据库中现有条目的指令;检测到新部分超过预定数量的循环迭代;以及检测到新部分超过预定义的大小。在实施例中,终止准则是部分随机的。在另一个实施例中,控制电路被配置成检测到新的流控制轨迹包含在调用数据库中已经指定的现有流控制轨迹或者被包含在调用数据库中已经指定的现有流控制轨迹内,并且仅保留现有流控制轨迹和新的流控制轨迹之一。在实施例中,在调用数据结构中的每个可能的流控制轨迹包括以下之一:第一类型,该第一类型通过返回到初始指令或返回到在分支到初始指令的函数调用之后的指令来结束;以及第二类型,该第二类型通过分支到程序代码中的所述一部分之外来结束。在一些实施例中,控制电路被配置成将指令流水线配置为通过至少部分地并行地调用段中的两个或更多个段以处理段。在一些实施例中,控制电路被配置成在给定的流控制轨迹中包括循环的多次迭代。根据本专利技术的实施例,另外提供了一种方法,该方法包括:在包括处理程序代码的指令的流水线的处理器中,在运行时监测所处理的指令,并且构建包括多个条目的调用数据结构。每个条目(i)指定作为分支指令的目标的初始指令,(ii)指定遵循从初始指令开始的一个或更多个可能的流控制轨迹的程序代码中的一部分程序代码,以及(iii)针对在条目中指定的每个可能的流程控制轨迹,指定在对可能的流控制轨迹进行处理之后将要处理的下一个条目。流水线被配置成通过连续地遍历调用数据结构的条目来处理程序代码中的段。根据结合附图进行的本专利技术的实施例的以下详细描述,本专利技术将得到更完全地理解,其中:附图简述图1是根据本专利技术的实施例示意性示出处理器的框图;图2是根据本专利技术的实施例示意性示出调用数据库的图示;图3是根据本专利技术的实施例示意性示出用于构建调用数据库并且管理代码段的方法的流程图;以及图4是根据本专利技术的实施例示意性示出调用数据库中的示例条目的图示。实施例的详细描述综述本文描述的本专利技术的实施例提供了用于在处理器中处理程序代码的改善的方法和装置。在一些实施例中,处理器包括执行程序代码指令的流水线以及除其它任务之外指示流水线要处理哪些指令的控制电路。程序代码包括条件分支指令。因此,根据在运行时采取的实际分支决定(decisions),在代码的某个区域中的实际处理可能会遍历各种可能的流控制轨迹。由流水线处理的实际的一系列指令在本文中被称为段。换句话说,段可以被视为特定流控制轨迹的实例化,并且对应于特定的一系列分支决定。在一些实施例中,控制电路监测在运行时流经流水线的指令,并且构建被称为调用数据库的数据结构。调用数据库由控制电路连续更新,并且同时被用于选择和调用将要由流水线处理的下一个段。调用数据库包括多个条目。给定条目通常指定下列内容:■初始指令,也被称为调用指令标识符(IID)。初始指令通常被限制为分支指令(被采取或未被采取)的目标。■通过代码的一部分的一个或更多个可能的流控制轨迹。给定条目中的所有可能的流控制轨迹都从该条目的初始指令开始。每个轨迹以分支指令(被采取或未被采取)结束。在这种情况下,从函数的返回也被视为分支指令。■对于每个指定的流控制轨迹,将会在处理该流控制轨迹后处理调用数据库的下一个条目。然而,在任何时间点,一些流控制轨迹可能使下一个条目设置为“未指定的(UNSPECIFIED)”。控制电路通常通过遍历调用数据库来指示流水线关于要处理哪些代码段。当遍历具有多个可能的流控制轨迹的条目时,控制电路使用轨迹预测来选择将要遵循的流控制轨迹。当达到当前遵循的流控制轨迹的终点时,或者当流水线中的提取单元之一变得空闲时,控制电路跳转到为该轨迹指定的下一个条目。使用这类调用数据库的方面在2016年3月24日提交的美国专利申请15/079,181中也得到了处理,该专利申请被转让给本专利申请的受让人,并且其公开内容通本文档来自技高网...
用于运行时并行化的对于代码段的顺序监测和管理

【技术保护点】
一种处理器,包括:指令流水线,所述指令流水线被配置成处理程序代码的指令;以及控制电路,所述控制电路被配置成在运行时监测被处理的指令,以构建包括多个条目的调用数据结构,其中,每个条目(i)指定作为分支指令的目标的初始指令,(ii)指定所述程序代码中的遵循从所述初始指令开始的一个或更多个可能的流控制轨迹的一部分,以及(iii)针对在所述条目中指定的每个可能的流控制轨迹,指定在对所述可能的流控制轨迹进行处理之后将要处理的下一个条目,并且将所述指令流水线配置为通过连续地遍历所述调用数据结构的条目来处理所述程序代码中的段。

【技术特征摘要】
2016.06.29 US 15/196,0711.一种处理器,包括:指令流水线,所述指令流水线被配置成处理程序代码的指令;以及控制电路,所述控制电路被配置成在运行时监测被处理的指令,以构建包括多个条目的调用数据结构,其中,每个条目(i)指定作为分支指令的目标的初始指令,(ii)指定所述程序代码中的遵循从所述初始指令开始的一个或更多个可能的流控制轨迹的一部分,以及(iii)针对在所述条目中指定的每个可能的流控制轨迹,指定在对所述可能的流控制轨迹进行处理之后将要处理的下一个条目,并且将所述指令流水线配置为通过连续地遍历所述调用数据结构的条目来处理所述程序代码中的段。2.根据权利要求1所述的处理器,其中,所述控制电路被配置成对于流过所述流水线的全部的所述指令连续地监测所述指令,使得所述调用数据结构向着覆盖整个程序代码逐渐生长。3.根据权利要求1所述的处理器,其中,所述控制电路被配置成响应于(i)对于当前监测过程的每次终止,(ii)对于尚未指定下一个条目的条目的每次遍历,以及(iii)对于在所述调用数据结构中不存在其指定的下一个条目的每次遍历,触发对于后续指令的监测。4.根据权利要求1所述的处理器,其中,响应于终止对于流控制轨迹的监测,所述控制电路被配置为或者(i)触发对于所述调用数据库中的与继被终止的流控制轨迹之后的指令对应的给定条目的遍历,或者(ii)触发对于继所述被终止的流控制轨迹之后的指令的监测。5.根据权利要求1所述的处理器,其中,所述控制电路被配置成将所述可能的流控制轨迹中的每一个限定为在相应的分支指令中结束。6.根据权利要求1所述的处理器,其中,所述控制电路被配置为通过以下方式构建所述调用数据结构:当所述处理器处理在给定条目中指定的给定流控制轨迹上的指令时,识别针对所述给定流控制轨迹未指定下一个条目;以及监测所述处理器在所述给定流控制轨迹之后处理的所述程序代码的新部分,并将所述新部分添加到所述调用数据库。7.根据权利要求1所述的处理器,其中,所述控制电路被配置成响应于满足预定义的终止准则而决定终止对于新的流控制轨迹的监测,然后将所述新的流控制轨迹添加到所述调用数据库。8.根据权利要求7所述的处理器,其中,所述控制电路被配置成响应于下列各项中的一项或更多项来满足所述终止准则:达到间接分支指令;达到对函数的调用;达到对函数的间接调用;达到从函数的返回;达到反向分支指令;达到预定数量的反向分支指令;遇到分支误预测;达到已经属于所述调用数据库中的现有条目的指令;检测到所述新部分超过预定数量的循环迭代;以及检测到所述新部分超过预定义的大小。9.根据权利要求7所述的处理器,其中,所述终止准则是部分随机的。10.根据权利要求7所述的处理器,其中,所述控制电路被配置成检测所述新的流控制轨迹包含所述调用数据库中已经指定的现有流控制轨迹或者被包含在所述调用数据库中已经指定的现有流控制轨迹中,并且仅保留所述现有流控制轨迹和所述新的流控制轨迹之一。11.根据权利要求1所述的处理器,其中,所述调用数据结构中的每个可能的流控制轨迹包括以下之一:第一类型,所述第一类型通过返回到所述初始指令或返回到继分支到所述初始指令的函数调用之后的指令来结束;以及第二类型,所述第二类型通过分支出所述程序代码中的所述一部分来结束。12.根据权利要求1所述的处理器,其中,所述控制电路被配置成配置所述指令流水线以通过至少部分地并行调用所述段中的两个或更多个...

【专利技术属性】
技术研发人员:莎伊·科伦阿里·哈科恩·本·波拉特伊多·戈伦诺姆·米兹拉希乔纳森·弗里德曼
申请(专利权)人:森蒂彼得塞米有限公司
类型:发明
国别省市:以色列,IL

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

1