在并行化处理器中的刷新制造技术

技术编号:17733740 阅读:23 留言:0更新日期:2018-04-18 11:17
本申请涉及在并行化处理器中的刷新。一种方法包括在具有流水线的处理器中以与程序代码中的指令的出现顺序不同的顺序在运行时提取程序代码的指令。指令被划分成具有段标识符(ID)的段。检测保证从属于段的指令开始刷新指令的事件。响应于该事件,基于段ID从流水线来刷新在段中的该指令之后的至少一些指令以及在段之后的一个或更多个后续段中的至少一些指令。

Refresh in a parallelized processor

This application involves refreshing in a parallelized processor. One way is to extract program code instructions at runtime when pipelined processors are in different order with the order of instructions in program code. The instructions are divided into segments with a segment identifier (ID). An event that ensures that the instruction begins to be refreshed from the instruction that belongs to the segment. In response to this event, at least some instructions after the instruction in the segment are refreshed from the pipeline based on segment ID, and at least some instructions in one or more subsequent segments after the segment.

【技术实现步骤摘要】
在并行化处理器中的刷新专利
本专利技术大体上涉及处理器设计,特别是用于刷新指令的方法和系统。专利技术背景已经提出了用于在运行时使软件代码动态并行化的各种技术。例如,Marcuellu等人在1998年的第12届国际超级计算会议的论文集“SpeculativeMultithreadedProcessors”中描述了一种处理器微架构,其借助于不需要编译器或用户支持的控制推测技术,同时执行从单个程序获得的多个控制线程,其内容通过引用并入本文。专利技术概述本文中所描述的本专利技术的实施例提供一种方法,其包括在具有流水线的处理器中,以与程序代码中的指令的出现顺序不同的顺序在运行时提取程序代码的指令。指令被划分成具有段标识符(ID)的段。检测保证从属于段的指令开始刷新指令的事件。响应于该事件,段中的在该指令之后的至少一些指令以及在段之后的一个或更多个后续段中的至少一些指令基于段ID被从流水线刷新。在实施例中,检测事件包括检测分支误预测。在另一实施例中,检测事件包括检测未被预测的分支指令。在又一实施例中,检测事件包括检测在储存之前加载的依赖性违规(violation)。在一些实施例中,刷新指令包括基于段ID从流水线的级或从在流水线的级之间缓冲指令的缓冲区刷新指令。在示例实施例中,刷新指令包括通过耦合到级或缓冲区的电路来检查段ID,以及由该电路决定刷新指令中的哪个指令。在另一实施例中,刷新指令包括基于段ID仅刷新在缓冲区被缓冲的指令的部分子集。在公开的实施例中,流水线包括多个并行硬件线程,并且处理单个程序的段包括在多个硬件线程之中分布段。在实施例中,指令由第一硬件线程处理,并且刷新指令包括刷新与第一硬件线程不同的第二硬件线程中的至少一个后续段中的一个或更多个指令。在一些实施例中,检测事件包括在相同的时钟周期中检测保证刷新不同的硬件线程中的指令的多个单独的事件。在示例实施例中,刷新指令包括基于段ID来识别由于多个事件而待刷新的指令之中最旧的指令,以及从待刷新的指令之中的最旧的指令开始刷新指令。在实施例中,刷新指令包括避免刷新在段之后但与该段独立的段。在实施例中,检测事件包括检测保证指令的刷新并发生在多个不同的段中的多个单独的事件,以及刷新指令包括独立地刷新由多个事件保证的指令。根据本专利技术的实施例,另外提供了包括流水线和控制电路的处理器。控制电路被配置为:指示流水线以与程序代码中的指令的出现顺序不同的顺序在运行时提取程序代码的指令;将指令划分成具有段标识符(ID)的段;检测保证从属于段的指令开始刷新指令的事件;以及响应于该事件,基于段ID来从流水线刷新在段中的指令之后的至少一些指令以及在段之后的一个或更多个后续段中的至少一些指令。根据结合附图进行的本专利技术的实施例的以下详细描述,将更完整地理解本专利技术,其中:附图说明图1是根据本专利技术的实施例示意性图示了处理器的框图;图2是根据本专利技术的实施例示意性说明了用于在处理器中刷新指令的方法的流程图;以及图3是根据本专利技术的实施例示意性图示了基于段_ID来刷新指令的过程的图。具体实施方式概览本专利技术的实施例提供了用于在并行化处理器中刷新指令的改进技术。本文中所描述的实施例主要涉及多线程处理器,但所公开的技术也同样适用于单线程处理器。在一些公开的实施例中,处理器包括包含多个并行硬件线程的流水线和控制流水线的控制电路。通常,流水线无序地,即以与程序代码中的指令出现的序列顺序不同的顺序,提取指令并对其进行处理。在本上下文中,术语“程序代码中的指令的出现顺序”是指在运行时实际处理指令的顺序。该顺序例如由于分支通常不按程序计数器(PC)值的序列顺序进行。通常,在运行时被提取的指令被控制电路划分成指令组。为了简洁起见,组在本文中被称为“代码段”或简称“段”。每个段包括按序列顺序提取的多个指令。控制电路在运行时决定如何将程序代码划分成段,何时调用下个段或多个段,以及还决定哪个硬件线程要处理每个段。这些决定通常是推测性的,例如,基于分支和/或轨迹预测。基于这些决定,控制电路调用适当的段并将其分布到适当的线程以进行处理。在处理期间发生的各种事件(例如,分支误预测)可保证从流水线刷新指令。响应于在属于某个段的某个指令中发生的这样的事件,控制电路应从流水线刷新(i)在相同段中的所讨论的指令之后的至少一些指令,以及(ii)取决于该段的后续段中的至少一些指令。当流水线以上述方式操作时,不同的硬件线程并行地、可能是无序地处理不同的段,并且线程可同时处理属于不同段的指令。如可认识到的,从这样的流水线刷新指令是高度复杂的。例如,有时需要从线程仅刷新属于特定段的指令,而保留属于另一段的指令。在一些实施例中,控制电路通过以下操作来执行刷新:为每个段分配段标识符(段_ID);使流水线中的每个指令与指令所属的段的段_ID相关联;以及基于段_ID从流水线选择性地刷新指令。在一个示例实施例中,每个被提取的指令用其段_ID进行标记,并连同该标记一起流经流水线。在另一示例实施例中,控制电路将段_ID插入“段的开始”标记和/或“段的结束”标记中,该“段的开始”标记和/或“段的结束”标记被插入到流经流水线的指令流中。在任一实现中,流水线的任何模块能够立即确定其处理的指令的段_ID。该功能显著简化了刷新过程。本文中描述了用于基于段_ID刷新指令的各种技术。刷新可在流水线的任何期望的级执行,例如,仅举几个例子,在提取级和解码级之间,从解码级的输出起,在提取级或解码级的连续子级之间,或者从重排序缓冲区起。还描述了额外的技术,例如,用于处理在相同时钟周期中发生的多个刷新事件的技术,以及在刷新之后恢复正常操作的恢复技术。系统描述图1是根据本专利技术的实施例示意性图示了处理器20的框图。在本示例中,处理器20包括多个硬件线程24,其被配置为并行地进行操作。虽然本文中所描述的实施例主要涉及多线程处理器,但所公开的技术也同样适用于单线程处理器。在图1的示例中,每个线程24被配置为处理代码的一个或更多个相应段。例如,线程并行化的某些方面在美国专利申请14/578,516、14/578,518、14/583,119、14/637,418、14/673,884、14/673,889、14/690,424、14/794,835、14/924,833、14/960,385和15/196,071中得到了解决,这些美国专利申请全部转让给本专利申请的受让人,并且其公开内容通过引用并入本文。在一些实施例中,每个线程24包括提取模块28、解码模块32和重命名模块36。提取模块24从存储器中(例如,从多级指令高速缓存中)提取其相应代码段的程序指令。在本示例中,处理器20包括存储器系统41,其用于储存指令和数据。存储器系统41包括多级指令高速缓存,其包括1级(L1)指令高速缓存40和2级(L2)高速缓存42,其缓存在存储器43中储存的指令。在给定的线程24中,所提取的指令被缓冲在先进先出(FIFO)缓冲区30中,并从缓冲区30的输出端提供给解码模块32。在本示例中,缓冲区30缓冲八个指令。然而,可替代地,可使用任何其他合适的缓冲区大小。解码模块32对提取的指令进行解码。在给定的线程24中,解码的指令被缓冲在FIFO缓冲区34中,并从缓冲区34的输出端提供给重命名模块36。在本示例中,缓本文档来自技高网...
在并行化处理器中的刷新

【技术保护点】
一种方法,包括:在具有流水线的处理器中,以与程序代码中的指令的出现顺序不同的顺序,在运行时提取所述程序代码的指令;将所述指令划分成具有段标识符(ID)的段;检测保证从属于段的指令开始刷新指令的事件;以及响应于所述事件,基于所述段ID,从所述流水线刷新在所述段中的所述指令之后的指令中的至少一些指令以及在所述段之后的一个或更多个后续段中的指令中的至少一些指令。

【技术特征摘要】
2016.10.05 US 15/285,5551.一种方法,包括:在具有流水线的处理器中,以与程序代码中的指令的出现顺序不同的顺序,在运行时提取所述程序代码的指令;将所述指令划分成具有段标识符(ID)的段;检测保证从属于段的指令开始刷新指令的事件;以及响应于所述事件,基于所述段ID,从所述流水线刷新在所述段中的所述指令之后的指令中的至少一些指令以及在所述段之后的一个或更多个后续段中的指令中的至少一些指令。2.根据权利要求1所述的方法,其中,检测所述事件包括检测分支误预测。3.根据权利要求1所述的方法,其中,检测所述事件包括检测未被预测的分支指令。4.根据权利要求1所述的方法,其中,检测所述事件包括检测在储存之前加载的依赖性违规。5.根据权利要求1所述的方法,其中,刷新所述指令包括基于所述段ID从所述流水线的级或从在所述流水线的级之间缓冲所述指令的缓冲区来刷新所述指令。6.根据权利要求5所述的方法,其中,刷新所述指令包括通过耦合到所述级或所述缓冲区的电路来检查所述段ID,以及通过所述电路来决定刷新所述指令中的哪个指令。7.根据权利要求5所述的方法,其中,刷新所述指令包括基于所述段ID仅刷新在所述缓冲区中被缓冲的所述指令的部分子集。8.根据权利要求1所述的方法,其中,所述流水线包括多个并行硬件线程,以及其中,处理单个程序的所述段包括在所述多个硬件线程之中分布所述段。9.根据权利要求1所述的方法,其中,所述指令由第一硬件线程处理,以及其中,刷新所述指令包括刷新与所述第一硬件线程不同的第二硬件线程中的至少一个后续段中的一个或更多个指令。10.根据权利要求1所述的方法,其中,检测所述事件包括在同一时钟周期中检测保证刷新在不同的硬件线程中的指令的多个单独的事件。11.根据权利要求10所述的方法,其中,刷新所述指令包括基于所述段ID来识别由于所述多个事件而待刷新的所述指令之中最旧的指令,以及从待刷新的所述指令之中的所述最旧的指令开始刷新所述指令。12.根据权利要求1所述的方法,其中,刷新所述指令包括避免刷新在所述段之后但与所述段独立的段。13.根据权利要求1所述的方法,其中,检测所述事件包括检测保证刷新指令并发生在多个不同的段中的多个单独的事件,以及其中,刷新所述指令包括独立地刷新由所述多个事件保证的所述指令。1...

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

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

1