当前位置: 首页 > 专利查询>ARM有限公司专利>正文

延迟缓冲器制造技术

技术编号:18940016 阅读:26 留言:0更新日期:2018-09-15 10:58
本公开涉及延迟缓冲器。一种装置包括:用于执行处理的两个或更多个线程的指令的处理电路、用于同时存储两个或更多个线程的上下文数据的硬件寄存器、以及用于提交线程的被执行的指令的结果的提交电路,其中,对于每个线程,提交电路按照程序顺序提交该线程的指令。提供至少一个延迟缓冲器来缓冲至少一个阻塞指令,阻塞指令的执行被处理电路完成但在程序顺序中同一线程的更先前指令的执行未被完成。这可以帮助解决线程间阻塞,从而提高性能。

delay buffer

The present disclosure relates to a delayed buffer. A device includes a processing circuit for executing instructions of two or more threads for processing, a hardware register for storing context data of two or more threads at the same time, and a committing circuit for submitting the result of an executed instruction of a thread, wherein, for each thread, the committing circuit follows a procedure. The order of the thread is submitted in order. At least one delay buffer is provided to buffer at least one blocking instruction. The execution of the blocking instruction is completed by the processing circuit, but the execution of the earlier instruction of the same thread in the program sequence is not completed. This helps solve the problem of blocking between threads, thereby improving performance.

【技术实现步骤摘要】
延迟缓冲器背景
本技术涉及数据处理领域。
技术介绍
一些数据处理设备可以支持处理的两个或更多个线程的并发执行,其中硬件寄存器被提供以同时存储多个线程的上下文数据。这种方法可以被称为同时多线程(SMT),并且可以有助于提高使用硬件资源的效率并提高性能,因为如果一个线程停滞(stall),另一线程可以继续进行,而不会导致软件控制的上下文切换的线程切换延迟(其中,寄存器一次仅存储一个线程的上下文,因此中断将触发软件将旧线程的上下文数据存储到存储器中,并用新线程的上下文数据来代替它)。通过SMT,多个线程可以具有同时在流水线内运行的指令,并且每个线程的相应上下文数据组可以在硬件寄存器内同时被访问。
技术实现思路
至少一些示例提供了一种装置,该装置包括:处理电路,用于执行处理的多个线程的指令;硬件寄存器,用于同时存储多个线程的上下文数据;提交电路,用于提交多个线程的被执行的指令的结果,其中对于每个线程,提交电路被配置为按照程序顺序提交该线程的指令;以及至少一个延迟缓冲器,用于缓冲至少一个阻塞指令(blockedinstruction),针对阻塞指令的执行已由处理电路完成但在程序顺序中同一线程的更先前指令的执行未被完成。至少一些示例提供了一种装置,该装置包括:用于使用用于同时存储多个线程的上下文数据的硬件寄存器来执行处理的多个线程的指令的装置;用于提交多个线程的被执行的指令的结果的装置,其中,对于每个线程,用于提交的装置被配置为按照程序顺序提交该线程的指令;以及用于缓冲至少一个阻塞指令的装置,阻塞指令的执行被用于执行的装置完成但在程序顺序中同一线程的更先前指令的执行未被完成。至少一些示例提供了一种数据处理方法,该方法包括:使用用于同时存储多个线程的上下文数据的硬件寄存器来执行处理的多个线程的指令;提交多个线程的被执行的指令的结果,其中,对于每个线程,按照程序顺序提交该线程的指令;以及在至少一个延迟缓冲器中缓冲至少一个阻塞指令,阻塞指令的执行被完成但在程序顺序中同一线程的更先前指令的执行未被完成。本技术的其他方面、特征和优点将从以下结合附图阅读的示例的描述中变得显而易见。附图说明图1示意性地示出了数据处理装置的示例,该数据处理装置支持对多个线程与存储在硬件寄存器中的每个线程的上下文数据的同时执行;图2示出了流水线的执行和提交阶段(stage)的示例,该流水线被提供有至少一个用于缓冲阻塞指令的延迟缓冲器;图3是示出控制指令的提交的方法的流程图;以及图4是示出确定是否将阻塞指令传送到延迟缓冲器的方法的流程图。具体实施方式装置可以具有用于执行来自处理的多个线程的指令的处理电路以及用于同时存储多个线程的上下文数据的硬件寄存器。例如,该装置可以支持同时多线程(SMT)。SMT类型的技术传统上主要用于更复杂的无序处理器,因为在具有更复杂的处理器的情况下通常存在多种可用于执行指令的执行资源,但给定的线程可能不能在给定的时间充分利用所有可用资源,所以通过支持同时对来自多个线程的指令的执行,更有可能增加资源利用率。然而,SMT型技术也可以用在有序处理器中,在有序处理器中,指令以它们的原始程序顺序(与所执行的指令的指令地址的顺序相对应的程序顺序)被发出(issue)以供执行以及被提交。有序处理器通常具有较少的可用资源,因此不太可能具有较多的备用资源,所以SMT对于有序处理器而言不太常见。然而,SMT仍然可能是有用的,因为如果一个线程停滞(例如,由于长时间的延迟存储器操作),则有序处理的限制意味着来自同一线程的其他指令不能继续进行,而SMT可以允许其他线程在此期间继续进行。因此,对于有序SMT方法,该装置可以具有用于提交两个或更多个线程的被执行的指令的结果的提交电路,其中对于每个线程,提交电路按照程序顺序提交该线程的指令。然而,在使用在流水线内同时活动的多个线程的有序核心中,两个或更多个线程可能遭受线程间阻塞,其中在一个线程中的停滞指令会阻止另一线程中的指令继续进行。这是因为提交电路被限制为按照程序顺序提交给定线程的指令,所以如果先前的指令被停滞,则不可能以同一线程的程序顺序提交后续指令,但是来自其他线程的指令可能被困在执行流水线中的停滞线程的该后续指令的后面,因此即使另一线程独立于停滞线程,其也可能不能被执行或提交。这个问题可以通过提供用于缓冲至少一个阻塞指令的至少一个延迟缓冲器来解决,其中针对阻塞指令的执行被完成但对在程序顺序中同一线程的更先前的指令的执行未被完成。因此,在线程间阻塞的情况下,除了更先前的指令仍然未被完成的事实,已完成执行并因此准备提交的阻塞指令可以被移动到延迟缓冲器。这允许来自其他线程的指令在处理电路中继续进行,因为它们未被阻止提交,因为它们来自与停滞线程的未被完成的指令不同的线程。在实践中,在有序的流水线中,停滞线程通常会用尽独立的指令,这些指令可以在停滞指令之后被相对较快地发出,所以延迟缓冲器不需要非常大以提供足够的资源来解决线程间阻塞问题(例如,少量延迟缓冲器条目(例如,4个)已被发现是足够的),因此可以以相对较低的成本来实现。因此,这为解决线程间阻塞问题提供了相对低成本的方法。处理电路可以具有用于执行各类指令的多个功能单元。例如,一个功能单元可以执行整数指令,另一个可以执行浮点指令,而另一功能单元可以执行加载/存储指令。也可以提供两个或更多个相同类型的功能单元,每个功能单元执行同类指令。例如,出于性能原因,提供多个整数功能单元可能是有用的。从提交电路的角度来看,除了处理电路的功能单元之外,延迟缓冲器可以被看作是另一个要提交的指令的源。因此,提交电路可以在任何功能单元和任何延迟缓冲器中待决(pending)的给定线程的指令之间选择程序顺序中最早(oldest)的指令来作为要从给定线程提交的下一个指令,并在检测到下一个指令的执行完成时提交下一个指令。请注意,对于延迟缓冲器中的指令,这些指令按定义是其执行已被完成的指令,因此这些指令一成为针对给定线程维持的最早指令就可以被提交。对于功能单元中的指令,可以执行对该线程的最早指令是否已被执行的附加检查。可以提供延迟缓冲器控制电路来控制阻塞指令到至少一个延迟缓冲器的分配。响应于在给定的功能单元中检测到阻塞指令,延迟缓冲器控制电路可以将阻塞指令从给定功能单元传送到至少一个延迟缓冲器中的一者。因此,延迟缓冲器使得能够从功能单元中移除阻塞指令,使得在给定的功能单元中在阻塞指令后面的来自另一线程的指令可以继续进行。延迟缓冲器控制电路以任何顺序(包括与该线程的程序顺序不同的顺序)将阻塞指令分配给延迟缓冲器都是可能的。然而,在这种情况下,延迟缓冲器可能需要被实现为内容可寻址存储器(CAM)结构,在该结构中,提交电路可以查询延迟缓冲器的任何条目以识别保持在延迟缓冲器中的哪个指令对于给定线程是最早的。这可能会增加延迟缓冲器的电路开销。替代地,在其他实施例中,延迟缓冲器控制电路可以按照给定线程的程序顺序来将该线程的阻塞指令分配给至少一个延迟缓冲器。这意味着延迟缓冲器中最早的条目对应于该线程的最早剩余指令,因此提交电路仅需要检查最非最近分配的条目以便识别要从延迟缓冲器提交的下一个指令。因此,延迟缓冲器然后可以被实现为先进先出(FIFO)缓冲器,其在硬件上比内容可寻址存储器更便宜。本文档来自技高网...

【技术保护点】
1.一种装置,包括:处理电路,用于执行处理的多个线程的指令;硬件寄存器,用于同时存储所述多个线程的上下文数据;提交电路,用于提交所述多个线程的被执行的指令的结果,其中对于每个线程,所述提交电路被配置为按照程序顺序提交该线程的指令;以及至少一个延迟缓冲器,用于缓冲至少一个阻塞指令,针对所述阻塞指令的执行已被所述处理电路完成但在所述程序顺序中同一线程的更先前的指令的执行未被完成。

【技术特征摘要】
2017.03.06 US 15/450,4301.一种装置,包括:处理电路,用于执行处理的多个线程的指令;硬件寄存器,用于同时存储所述多个线程的上下文数据;提交电路,用于提交所述多个线程的被执行的指令的结果,其中对于每个线程,所述提交电路被配置为按照程序顺序提交该线程的指令;以及至少一个延迟缓冲器,用于缓冲至少一个阻塞指令,针对所述阻塞指令的执行已被所述处理电路完成但在所述程序顺序中同一线程的更先前的指令的执行未被完成。2.根据权利要求1所述的装置,其中,所述处理电路包括用于执行各类指令的多个功能单元;以及所述提交电路被配置为在所述多个功能单元和所述至少一个延迟缓冲器中待决的给定线程的指令之间选择在所述程序顺序中最早的指令来作为针对所述给定线程的要提交的下一个指令,并且在检测到所述下一个指令的执行被完成时提交所述下一个指令。3.根据权利要求1所述的装置,包括延迟缓冲器控制电路,用于控制阻塞指令到所述至少一个延迟缓冲器的分配。4.根据权利要求3所述的装置,其中,所述处理电路包括用于执行各类指令的多个功能单元;以及响应于在给定功能单元中检测到阻塞指令,所述延迟缓冲器控制电路被配置为将所述阻塞指令从所述给定功能单元传送到所述至少一个延迟缓冲器中的一个延迟缓冲器。5.根据权利要求3所述的装置,其中,所述延迟缓冲器控制电路被配置为按照所述程序顺序将给定线程的阻塞指令分配给所述至少一个延迟缓冲器。6.根据权利要求4所述的装置,其中,所述延迟缓冲器控制电路被配置为将在与最早执行的指令不同的功能单元中的给定线程的至少一个较早的指令未被完成时已完成执行的所述给定线程的所述最早执行的指令检测作为所述阻塞指令。7.根据权利要求3所述的装置,其中,在从给定线程向给定延迟缓冲器分配指令之后,所述延迟缓冲器控制电路被配置为阻止来自另一线程的指令被分配给所述给定延迟缓冲器,直到所述给定延迟缓冲器排空来自所述给定线程的指令。8.根据权利要求7所述的装置,其中,响应于所述给定延迟缓冲器变满,所述处理电路被配置为刷除在所述处理电路中待决的与所述给定线程相关联的一个或多个剩余指令。9.根据权利要求4所述的装置,其中,响应于检测到所述阻塞指令,所述延迟缓冲器控制电路被配置为将所述阻塞指令传送到所述至少一个延迟缓冲器中的一个延迟缓冲器,而不管所述阻塞指令已维持未提交达多少个周期。10.根据权利要求4所述的装置,其中,所...

【专利技术属性】
技术研发人员:约瑟·阿尔贝托·若昂黄子强亚历杭德罗·里科·卡罗
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国,GB

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

1