通过监控重复指令序列的运行时代码并行化制造技术

技术编号:15919194 阅读:46 留言:0更新日期:2017-08-02 04:25
一种方法包括在执行程序代码的指令的处理器(20)中,监控重复的指令序列的段中的指令,以构建所监控的指令的寄存器访问的规范。响应于检测到所监控的指令中的分支误预测,对规范进行校正以补偿分支误预测。基于校正后的规范,将重复序列的执行并行化。

【技术实现步骤摘要】
【国外来华专利技术】通过监控重复指令序列的运行时代码并行化专利
本专利技术总体上涉及处理器设计,并且具体地涉及用于运行时代码并行化的方法和系统。专利技术背景已经提出了用于在运行时动态地并行化软件代码的各种技术。例如,Akkary和Driscoll在1998年12月的第31届微体系结构年度国际研讨会的论文集“ADynamicMultithreadingProcessor”中描述了实现单个程序的动态多线程执行的处理器架构,该文章通过引用并入本文。Marcuellu等人在1998年的第12届国际超级计算会议的论文集“SpeculativeMultithreadedProcessors”中描述了一种处理器微架构,该微架构通过不需要编译器或用户支持的控制推测技术来同时执行从单个程序获得的多个控制线程,该文章通过引用并入本文。Marcuello和Gonzales在1999年的13届国际超级计算会议的论文集“ClusteredSpeculativeMultithreadedProcessors”中提出了在运行时从单线程应用中产生推测性线程的微架构,该文章通过引用并入本文。在2000年的第14届并行与分布式处理国际研讨会的论文集“AQuantitativeAssessmentofThread-LevelSpeculationTechniques”(其通过引用并入本文)中,Marcuello和Gonzales分析了不同线程推测技术的益处以及线程单元中的值预测、分支预测、线程初始化开销和连接的影响。Ortiz-Arroyo和Lee在2003年的第16届并行与分布式计算系统的国际会议(PDCS'03)的论文集“DynamicSimultaneousMultithreadedArchitecture”中描述了被称为动态同时多线程(DSMT)的多线程架构,该多线程架构在同时多线程处理器核上执行来自单个程序的多个线程的,该文章通过引用并入本文。专利技术概述本文中描述的本专利技术的实施例提供了一种方法,该方法包括在执行程序代码的指令的处理器中,监控重复的指令序列的段中的指令,以构建所监控的指令的寄存器访问的规范。响应于检测到所监控的指令中的分支误预测,对规范进行校正以补偿分支误预测。基于校正后的规范,将重复序列的执行并行化。在一些实施例中,监控指令还包括生成由所监控的指令遍历的流控制轨迹,并且该方法包括对流控制轨迹进行校正以补偿分支误预测。在实施例中,该方法包括在并行化执行期间继续监控指令。在实施例中,该方法包括在校正规范之后继续监控指令并构建规范。在示例实施例中,校正规范包括终止对该段的指令的监控,并且丢弃在该段中收集的寄存器访问的规范的至少一部分。在一些实施例中,校正规范包括基于分支误预测之后的指令,将规范回滚到与在其中发生分支误预测的分支指令处或其之前的指令对应的先前状态。在实施例中,监控指令包括在规范中记录对寄存器的最后写入操作在所述序列中的位置,并且回滚规范包括校正最后写入操作的位置。在示例实施例中,记录最后写入操作的位置包括递增对寄存器的写入操作的计数,以及校正位置包括将该计数递减到与其中发生分支误预测的分支指令对应的值。在所公开的实施例中,监控指令包括在规范中记录由所监控的指令访问的寄存器的分类,并且校正规范包括对寄存器中的一个或更多个进行重新分类以补偿分支误预测。在一些实施例中,监控指令包括保存在沿着所监控的段的一个或更多个相应的分支指令处或其之前的规范的一个或更多个状态,并且校正规范包括恢复到与其中发生分支误预测的分支指令处或其之前的指令对应的保存状态。保存状态可以包括仅针对沿着所监控的段的分支指令的部分子集,保存状态。该方法可以包括根据程序代码中的指示或来自程序代码的编译器的指示和/或基于在运行时评估的标准来选择分支指令的部分子集。在一些实施例中,监控指令包括基于在处理器的执行流水线中从存储器提取的分支指令,基于在处理器的执行流水线中被解码的分支指令,以及/或者共同地基于在处理器的执行流水线中从存储器提取的分支指令和被解码的分支指令,生成所监控的指令的流控制轨迹。在一些实施例中,监控指令包括基于在处理器的执行流水线中被解码的指令,基于在处理器的执行流水线中被执行的指令,和/或基于被提交的但由于分支误预测而未被清除的指令,在规范中记录对寄存器的最后写入操作在所述序列中的位置。在实施例中,监控指令包括仅在评估序列的条件分支指令的相应分支条件之后才收集寄存器访问。在另一个实施例中,监控指令包括生成所监控的指令的流控制轨迹,包括对于处理器的分支预测单元未知的分支指令。根据本专利技术的实施例,另外提供了包括执行流水线和监控单元的处理器。执行流水线被配置为执行程序代码的指令。监控单元被配置为监控重复指令序列的段中的指令,以便构建所监控的指令的寄存器访问的规范,被配置为响应于检测到所监控的指令中的分支误预测,对规范进行校正,以补偿分支误预测,并且基于校正后的规范,将重复序列的执行并行化。从结合附图进行的本专利技术的实施例的以下详细描述,本专利技术将被更完全地理解,其中:附图简述图1是根据本专利技术的实施例示意性地图示了执行运行时代码并行化的处理器的框图;图2是根据本专利技术的实施例示意性地图示了程序循环的运行时并行化的图;以及图3是根据本专利技术的实施例示意性地图示了用于在监控重复指令序列期间缓解分支误预测的方法的流程图。具体实施方式综述本文中描述的本专利技术的实施例提供了用于在处理器中对代码的运行时并行化的改进的方法和设备。在所公开的实施例中,处理器识别重复的指令序列,并且创建和执行被称为段的多个并行代码序列,其执行不同出现的序列。这些段被调度,以用于通过多个硬件线程进行并行执行。例如,重复序列可以包括循环,在这种情况下,段包括多个循环迭代、迭代的部分或循环的延续。作为另一示例,重复序列可以包括函数,在这种情况下,段包括多个函数调用、函数的部分或函数延续。在运行时,对预编译代码执行并行化。术语“重复序列”通常指的是被重新访问并执行多次的任何指令序列。在一些实施例中,在识别重复序列时,处理器监控序列中的指令并构建“记分板”-由所监控的指令对寄存器的访问的规范。记分板与由所监控的序列遍历的特定流控制轨迹相关联。处理器基于在记分板和轨迹中收集的信息来决定如何以及何时创建和执行多个段。指令监控的其他方面在题为“Run-timecodeparallelizationwithcontinuousmonitoringofrepetitiveinstructionsequences”的代理人案卷编号1279-1004的美国专利申请以及题为“Registerclassificationforrun-timecodeparallelization”的代理人案卷编号1279-1004.1的美国专利申请中进行讨论,这些专利申请被转让给本专利申请的受让人并且其公开内容通过引用并入本文。在一些实施例中,处理器在其执行流水线中提取和处理指令。当预测条件分支指令采用分支但在实际执行期间未采用分支时,可能发生分支误预测,或反之亦然。在检测到分支误预测时,处理器通常清除随后的指令和相应的结果。当分支误预测发生在其指令被监控的段中时,记分板中的寄存器访问信息通常将是不正确的或至少是不完整的。本文描述的一些本文档来自技高网...
通过监控重复指令序列的运行时代码并行化

【技术保护点】
一种方法,包括:在执行程序代码的指令的处理器中,监控表现出恒定的、循环的寄存器访问的重复指令序列,以及构建指定所述循环的寄存器访问的规范;响应于检测到所监控的指令中的分支误预测,回滚在所述规范中指定的所述循环的寄存器访问,以补偿由所述分支误预测引起的所述循环的寄存器访问的偏差;以及基于具有所回滚的循环的寄存器访问的所述规范,将所述指令中的至少一些的执行并行化。

【技术特征摘要】
【国外来华专利技术】2014.12.25 US 14/583,1191.一种方法,包括:在执行程序代码的指令的处理器中,监控表现出恒定的、循环的寄存器访问的重复指令序列,以及构建指定所述循环的寄存器访问的规范;响应于检测到所监控的指令中的分支误预测,回滚在所述规范中指定的所述循环的寄存器访问,以补偿由所述分支误预测引起的所述循环的寄存器访问的偏差;以及基于具有所回滚的循环的寄存器访问的所述规范,将所述指令中的至少一些的执行并行化。2.根据权利要求1所述的方法,其中,监控所述指令还包括生成由所监控的指令遍历的流控制轨迹,并且包括对所述流控制轨迹进行校正以补偿所述分支误预测。3.根据权利要求1所述的方法,并且包括在并行化的执行期间继续监控所述指令。4.根据权利要求1所述的方法,并且包括在回滚所述循环的寄存器访问之后,继续监控所述指令并构建所述规范。5.根据权利要求1所述的方法,其中,回滚所述循环的寄存器访问包括终止对其中发生所述分支误预测的所述指令的段的监控,以及丢弃在所述段中收集的所述循环的寄存器访问的所述规范的至少一部分。6.根据权利要求1-5中任一项所述的方法,其中,回滚所述循环的寄存器访问包括基于所述分支误预测之后的指令,将所述循环的寄存器访问回滚到与其中发生所述分支误预测的分支指令处或其之前的指令对应的先前状态。7.根据权利要求6所述的方法,其中,监控所述指令包括在所述规范中记录对寄存器的最后写入操作在所述序列中的位置,并且其中,回滚所述循环的寄存器访问包括对所述最后写入操作的位置进行校正。8.根据权利要求7所述的方法,其中,记录所述最后写入操作的位置包括递增对所述寄存器的写入操作的计数,并且其中,校正所述位置包括将所述计数递减到与其中发生所述分支误预测的分支指令对应的值。9.根据权利要求1-5中任一项所述的方法,其中,监控所述指令包括在所述规范中记录由所监控的指令访问的寄存器的分类,并且其中,回滚所述循环的寄存器访问包括对所述寄存器中的一个或更多个进行重新分类以补偿所述分支误预测。10.根据权利要求1-5中任一项所述的方法,其中,监控所述指令包括保存在沿着所述指令的受监控的段的一个或更多个相应的分支指令处或其之前的所述规范的一个或更多个状态,并且其中,回滚所述循环的寄存器访问包括恢复到与其中发生所述分支误预测的分支指令处或其之前的指令对应的保存状态。11.根据权利要求10所述的方法,其中,保存所述状态包括仅针对沿着所监控的段的所述分支指令的部分子集保存所述状态。12.根据权利要求11所述的方法,并且包括根据所述程序代码中的指示或来自所述程序代码的编译器的指示,选择所述分支指令的所述部分子集。13.根据权利要求11所述的方法,并且包括基于在运行时评估的标准,选择所述分支指令的所述部分子集。14.根据权利要求1-5中任一项所述的方法,其中,监控所述指令包括基于在所述处理器的执行流水线中从存储器提取的分支指令,生成所监控的指令的流控制轨迹。15.根据权利要求1-5中任一项所述的方法,其中,监控所述指令包括基于在所述处理器的执行流水线中被解码的分支指令来生成所监控的指令的流控制轨迹。16.根据权利要求1-5中任一项所述的方法,其中,监控所述指令包括共同地基于在所述处理器的执行流水线中从存储器提取的分支指令和被解码的分支指令来生成所监控的指令的流控制轨迹。17.根据权利要求1-5中任一项...

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

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

1