互连结构上路由的推测性资源分配

文档序号:1889044 发布日期:2021-11-26 浏览:15次 >En<

阅读说明:本技术 互连结构上路由的推测性资源分配 (Speculative resource allocation for routing on an interconnect fabric ) 是由 I·马托舍维奇 L·巴伊奇 于 2021-05-20 设计创作,主要内容包括:本文公开了与互连结构上路由的推测性资源分配相关的方法和系统。一种公开的方法包括推测性地分配资源集合以支持通过互连结构的一组路径。该方法还包括在该组路径上的分支节点处聚集来自该组路径的一组响应。如果检测到资源争用,则该组响应将包括资源争用的指示符。然后,该方法将还包括响应于资源争用的指示符,从分支节点向下游传输解除分配消息并向上游传输资源争用的指示符,并且在保持一段时间之后为多播重新分配资源。(Methods and systems related to speculative resource allocation for routing on an interconnect fabric are disclosed. One disclosed method includes speculatively allocating a set of resources to support a set of paths through an interconnect fabric. The method also includes aggregating a set of responses from the set of paths at the branch nodes on the set of paths. If contention for the resource is detected, the set of responses will include an indicator of contention for the resource. The method will then further include transmitting a deallocation message downstream from the branching node and transmitting an indicator of resource contention upstream in response to the indicator of resource contention, and reallocating resources for the multicast after a hold period.)

互连结构上路由的推测性资源分配

技术领域

本发明涉及互连结构上路由的推测性资源分配。

背景技术

现代大规模片上系统(systems-on-a-chip,SoC)设备可以集成许多由各种功能块组成的实例,包括处理内核、加速器、存储器和片外接口。附加地,现代SoC可以集成传统上甚至不能在芯片上实现的模块,例如射频通信模块和微机电模块。SoC实现的速度效率和功耗效率以及与构建单个芯片而非多个芯片相关联的成本节约推动了集成度的提高。为了实现这些益处,必须建立一个通信系统,以允许各种模块以高带宽和低延迟进行通信。实现这种通信系统的传统方法包括用于特定信号的片上总线或专用布线。然而,专用布线是资源密集型的并且因为布线通常会保持空闲,所以效率不高,并且片上总线无法随着现代SoC带宽需求的增加而扩展。

SoC中块间通信的现代解决方案包括使用互连结构形式的专用网络。如本文所使用的,术语“互连结构”指的是在系统的终端之间传输数据的可编程系统,其中,该系统通过向与终端相关联的各个路由器写入控制信息而编程。在互连结构中,路由器以及可能与路由器相关联的任何终端都可以被称为“节点”。当互连结构完全位于单个芯片内时,其可以被称为片上网络(network-on-chip,NoC)。数据可以通过互连结构沿一系列节点从一个终端传输到另一个终端。一系列节点可以被称为通过互连结构的“路径”。

图1示出了多核处理器形式的SoC的NoC 100的一部分,其中,结构的终端是四个处理核心101、102、103和104。所示出的处理核心使用四个路由器110、111、112和113链接。处理核心和路由器构成互连结构的节点。路由器使用位于每个处理核心上的网络接口单元(network interface unit,NIU)跟与其相关联的处理核心通信。数据可以使用单播传输、多播传输或广播传输在核心之间传输。在传统方法中,结构中的传输可以是单跳或多跳的,这取决于网络拓扑以及网络中源核心和目的地核心的物理位置。例如,在NoC 100中,相邻核心101和102能够使用单跳传输进行通信,而远端核心101和104需要通过多跳传输进行通信,这是因为数据在相邻路由器之间串联传递,并从每个中间路由器转发到目的地路由器。

互连结构可以通过在结构中为许多不同的传输共享相同的网络资源,以高带宽和有效的资源利用率在多个终端之间有效地分发数据。然而,需要进行设计工作,以确保将这些资源公平有效地分发给连接到结构的各种终端。例如,在技术文献中被称为死锁状态是一种必须避免或减轻的状态,在该状态下,两个单独的传输需要相同的资源,并且每个传输被另一传输阻止无法完成和释放共享的资源。在图2的框图200中示出了这种情况的说明,其中,终端201和终端202是单播路径211的源终端和目的地终端,终端203和终端204是单播路径212的源终端和目的地终端,以及终端205和终端206是单播路径213的源终端和目的地终端。在所示情况下,如果沿至少两条所示路径的至少两个所示终端上没有足够的缓冲区和信道,那么死锁就会发生。例如,如果节点204不能支持路径213和路径212的流,节点201不能支持路径213和路径211的流,并且节点203不能支持路径211和路径212的流,则所有三个单播中的流将被阻塞,没有任何前进的途径。尽管形成死锁状态只需要两条路径,但在此示例中使用了三条路径来说明死锁有时会涉及大量路径及其复杂的相互依赖性这一事实。

发明内容

本文公开了与互连结构的有效操作相关的方法和系统。本文公开的特定方法和系统包括:对资源进行推测性分配,以支持通过互连结构的一组路径使用所述互连结构进行传输;聚集来自该组路径的一组响应;基于该组响应对那些资源进行条件性分配或解除分配;以及如果那些资源被解除分配,则在经过保持时间段之后重新分配那些资源。资源是推测性地分配的,因为事先不知道支持传输所需的路径是否完全可用,或者在这些资源的分配期间是否会检测到与通过互连结构的另一传输发生资源争用。如果响应指示检测到争用,则可以解除分配资源以等待另一个传输完成。然后,可以重新分配这些资源以完成传输。尽管在检测到争用的情况下不可避免地需要解除分配资源的过程,但是申请人已经发现,在特定实现方式中,对于合理的工作负载,检测到的争用的数量很少,并且与快速推测性分配相关联的益处多于解除分配的缺点。

根据本文公开的本发明的特定实施例的互连结构,以避免死锁状态的方式支持各种传输,且同时还具有高度可扩展性。本文公开的特定实施例是高度可扩展的,因为其不需要中央仲裁器或源节点之间的协商来为潜在冲突的传输分配资源。相反,资源是推测性地分配的,并且编程到互连结构的各个节点中的分布式逻辑将检测潜在的争用,聚集响应,并且防止在没有中央协调的情况下发生死锁状态。因此,这些公开的方法可以在互连结构中操作,而不考虑消息通过该结构传输所花费的时间,也不考虑向所有节点通知其它节点的动作所花费的时间。实际上,在本发明的特定实施例中,所公开的路由方法是各个节点的突现属性,使得结构的大小对通过结构的路由和流控制没有明显的影响。

本文公开的在互连结构中利用推测性分配的方法,广泛适用于互连结构中的任何形式的传输。然而,在本发明的特定实施例中,所公开的方法和系统部署为支持互连结构上的多播传输,其中,每个传输具有长数据突发。具体地,对于长数据突发,与推测性分配相关联的附加开销相对于传输时间来说是不太明显的。作为非限制性示例,在用于并行计算应用的标准大小的NoC中,每次传送几万字节或更大数量级的传输需要的时间相对较长,使得根据本文公开的特定实施例推测性地分配传输资源所需的时间相对不合适。下面参考图3中的步骤303更详细地描述该特定示例。此外,所公开的方法可以部署为支持多路径多播传输的传输,其中,通过互连结构的路径包括至少一个分支节点,两条或多条路径源自该分支节点。由于缺乏使用智能编译器或路由算法来避免资源争用的已知解决方案,所以所公开的特定方法在多路径多播传输中特别有用,智能编译器或路由算法设计为事先完全避免发生资源争用状况。相反,由于本文公开的特定方法在检测到争用时高效且快速地解除分配资源,完全避免了死锁,这是因为不需要提前协调传输,也总是允许一个潜在的阻塞传输完成并且不会被另一个所阻塞。附加地,使用这些公开的方法,支持多播传输所需的多条路径可以并行分配,而不需要各个路径的全局排序。

本文公开的方法广泛地适用于连接任何终端组的任何互连结构,例如具有各种类型的电路块的SoC。然而,在本发明的特定实施例中,所公开的方法和系统部署在互连结构中,该互连结构以一组执行神经网络的有向图的并行处理器的形式连接一组终端。由于现代神经网络在大型数据结构上运行,并且可能需要将这些数据结构并行分发给大量处理器,所以当应用于这种设置时,能够有效地执行具有大数据突发的多路径多播的互连网络将是尤其有益的。

在本发明的特定实施例中,其中,聚集了来自不同节点的一组响应,该组响应可以在互连结构中检测到可能的死锁风险的特定节点处生成。通过检测节点处的资源争用,可以在节点处检测到可能的死锁风险。例如,节点可以检测到请求是针对该节点处的给定资源,以支持N+1个传输,其中,N是特定资源可以支持的同时传输的数量。以这种方式,使用本文公开的特定方法,在无任何关于互连结构的全局状态的信息的情况下,在逐个节点的基础上本地进行资源的推测性分配,同时尽管互连结构支持通过该结构的大量传输,仍然避免了死锁状态的发生。在特定实施例中,该功能来自分布式逻辑的突现行为,其中,每个节点编程为单独使用硬件逻辑一致地动作。在本文公开的本发明的特定实施例中,结构中的资源的分配、解除分配和重新分配可以全部在硬件中单独进行,例如在互连结构中的分布式逻辑和路由器中。因此,与推测性分配和解除分配相关联的开销可以最小化。

在本发明的特定实施例中,公开了一种用于在互连结构上进行多播的方法。该方法包括:分配资源集合以支持通过互连结构的一组路径,由此为多播推测性地分配该组路径。该方法还包括:在该组路径上的分支节点处聚集来自该组路径的一组响应。该组响应包括资源争用的指示符。该方法还包括:响应于资源争用的指示符,从分支节点向下游传输解除分配消息,并且向上游传输资源争用的指示符。该方法还包括:响应于资源争用的指示符,解除分配资源集合持续一保持时间段。该方法还包括:在所述保持时间段之后为多播重新分配资源。

在本发明的特定实施例中,公开了一种互连结构。该结构包括一组节点、一组路由器以及分布式逻辑电路的集合。该组节点和该组路由器具有一对一的对应关系。分布式逻辑电路的集合分布在该组节点中,并且编程为执行用于在互连结构上进行多播的方法。这些节点可以手动编程或使用硬件描述语言(例如VHDL、Verilog)或其它编程语言编程,这导致产生数字或混合信号硬件电路的设计。然后,该程序在逻辑门、寄存器、交叉开关(crossbar)、存储器和其它电路元件中实现。该方法包括:在该组路由器上分配资源集合,以支持通过该组节点的一组路径。该组路径被推测性地分配以用于数据的多播。该方法还包括:在该组节点中的分支节点处聚集来自该组路径的一组响应。该组响应包括资源争用的指示符。该方法还包括:响应于资源争用的指示符,从分支节点向下游传输解除分配消息,并且向上游传输资源争用的指示符。该方法还包括:基于聚集的一组响应,解除分配资源集合持续一保持时间段。该方法还包括:在所述保持时间段之后为多播重新分配资源。

在本发明的特定实施例中,提供了一种用于支持互连结构上的多播的方法。该方法包括:在互连结构上的分支节点处接收用于支持多播的路径的资源的分配消息。该方法还包括:从分支节点向源自该分支节点的一组路径传输分配消息。该方法还包括:响应于资源争用的指示符,从分支节点向该组路径中的至少一条路径传输下游解除分配消息。该方法还包括:响应于资源争用的指示符,从分支节点传输资源争用的上游指示符。

在本发明的特定实施例中,公开了一种用于互连结构的节点。该节点包括路由器和逻辑电路,该逻辑电路被编程为执行用于支持互连结构上的多播的方法。逻辑电路编程为执行用于在互连结构上进行多播的方法。逻辑电路可以手动编程或使用硬件描述语言(例如VHDL、Verilog)或其它编程语言编程,这导致产生本领域已知的数字或混合信号硬件电路的设计。该方法包括:在路由器处接收用于支持多播的路径的资源的分配消息。该方法还包括:使用路由器向源自分支节点的一组路径传输分配消息。该方法还包括:在路由器处从源自该节点的该组路径接收一组响应,其中,该组响应包括资源争用的指示符。该方法还包括:使用路由器响应于资源争用的指示符,向该组路径中的至少一条路径传输下游解除分配消息。该方法还包括:使用路由器响应于资源争用的指示符,传输资源争用的上游指示符。

附图说明

图1示出了根据相关技术的NoC的一部分;

图2示出了根据相关技术的经历死锁状态的互连结构;

图3示出了根据本文公开的本发明的特定实施例的在互连结构上进行多播的流程图和在为多播分配资源的过程中的互连结构的框图;

图4示出了根据本文公开的本发明的特定实施例的形成互连结构的一组节点中的节点的内容的框图;

图5示出了根据本文公开的本发明的特定实施例的分配消息节点过程的流程图和执行该流程图的流程的互连结构的框图;

图6示出了根据本文公开的本发明的特定实施例的分支节点过程的流程图和执行该流程图的流程的互连结构的框图;

图7示出了根据本文公开的本发明的特定实施例的源节点过程的流程图和执行该流程图的流程的互连结构的框图;

图8示出了根据本文公开的本发明的特定实施例的路由器的框图;

图9示出了根据本文公开的本发明的特定实施例的路由器可以进行的过程的一组流程图。

具体实施方式

本文详细公开了根据以上概述的用于互连结构上的推测性资源分配路由的方法和系统。本部分中公开的方法和系统是本发明的非限制性实施例,仅用于解释目的,而不应用于限制本发明的全部范围。尽管本部分中提供的特定示例针对的是NoC形式的互连结构,但是本文公开的方法可广泛应用于任何互连结构。此外,根据本公开的互连结构可以在单芯片系统、多芯片单封装系统或其芯片通常附接到公共基板的多芯片系统中实现,其中的公共基板例如是印刷电路板(PCB)、插入器或硅网。根据本公开的互连结构还可以包括多个基板上的芯片,这些基板通过更高级别的公共基板链接在一起,例如在多个PCB各自具有一组芯片的情况下,其中,多个PCB固定到公共背板。此外,尽管本部分中提供的特定示例针对双向规则正方形网络拓扑,但是本文公开的方法更广泛地适用于具有各种拓扑的网络,包括单向或双向拓扑以及树、网格、圆环和其它拓扑。实际上,本文公开的特定方法的益处在于,不论互连结构拓扑的规则性或不规则性如何,响应都可以完全聚集,并且资源完全解除分配。此外,尽管本部分中提供的特定示例针对互连结构上的虫洞流控制,但是本文公开的方法更广泛地适用于互连结构上的任何类型的流控制,包括任何类型的直通数据包缓冲区流控制或片缓冲区流控制。如本文所使用的,术语“片(flit)”指的是由互连结构的流控制系统识别的最小数据单元。此外,尽管在本部分中提供的特定示例将节点的资源称为缓冲区和交叉开关信道(crossbar channel),但是所公开的方法更广泛地适用于监控可以推测性地分配和维护用于通过互连结构传输数据的任何资源。

图3示出了根据本文公开的本发明的特定实施例的在互连结构上进行多播的流程图300和在为多播分配资源的过程中的互连结构的框图310。流程图300的步骤由互连结构进行。然而,在本发明的特定实施例中,这些步骤由使用分布式逻辑的各种节点的突现行为产生。图4-7更详细地描述了各个节点的行为。特定节点的行为在整个本公开中被描述为“源”节点、“分支”节点、“间歇”节点和“终止”节点。然而,在本发明的特定实施例中,互连网络中的每个节点可以包括用以执行多种节点类型的行为的逻辑,以支持在不同时间通过网络的多种传输。不同的逻辑可以基于在节点处接收到路由和流控制信息而激活。例如,一个节点可以作为一个传输的源节点,而作为另一个传输的终止节点,这取决于数据需要通过结构被路由到哪里。此外,在本发明的特定实施例中,如果同一节点同时支持多个传输,则该节点可以同时作为多种类型的节点。通过接收路由和流控制信息,可以将节点分配给特定的节点类型。在本发明的特定实施例中,路由和流控制信息可以到达与传输数据相同的硬件线路。数据和控制信息之间的差异可以编码在通过结构传递的信息的报头中。替代地,通过结构传递的信息的报头可以总是包括控制信息,而主体保存数据。在本发明的特定实施例中,路由和流控制信息可以在不同的专用信号线路上到达节点,这些专用信号线路与用于路由传输数据的线路分开。

流程图300开始于步骤301,在步骤301,分配资源集合以支持通过互连结构的一组路径,由此为多播推测性地分配一组路径。参考框图310,多播可以是来自源节点312的多播311,该源节点312具有一组终止节点313。如图所示,框图310包括一组节点,包括源节点312和第二源节点314,这意味着在来自这两种不同源节点的两个传输之间存在死锁状态的可能性。多播311是多路径多播,因为其扩展成一组三条路径,以将数据有效地路由到该组终止节点313。多播311需要沿指示多播311的线路的每个节点上的资源,因为通过互连结构的移动包括从一个节点到下一个节点的多跳数据传输。在该源节点312中路径被推测性地分配,并且沿形成多播311的路径的间歇节点最初不知道这样的事实,即该组终止节点313中的节点的子集也在多播320的第二组终止节点315中。在所示情况下,如果各个节点(例如节点316)没有足够的资源来支持多播311和多播320,则在两个多播之间会发生资源争用。

在本发明的特定实施例中,当分配请求沿传输路径(例如包括多路径多播的一组路径)传播时,分配在没有关于互连结构的全局状态的任何信息的情况下逐个节点地发生。分配请求可以采取沿形成多播311的路径逐个节点传递的形式来分配消息。该过程还可以包括由分支节点(例如分支节点317)生成并发送给不同分支的分配请求的副本。分支节点317是多播311的“分支”,因为多播311上的多个下游路径源于分支节点317。然而,分支节点317可以具有与网络中其它节点类似的路由和流控制逻辑,并且只是临时配置为作为多播311的分支节点。在本发明的特定实施例中,分配消息可以是虫洞流控制数据包的报头片(header flit)。节点可以包括逻辑电路,该逻辑电路编程为在评估分配消息时在节点上分配资源,根据需要复制分配消息,并且然后向下游转发一个或多个分配消息。

在本发明的特定实施例中,节点的动作可以是高度并行的。由于路由控制可以在不参考全局状态的情况下进行,所以每个节点可以包括来自分布式逻辑电路的逻辑电路,以管理执行步骤301和执行流程图300的附加方法步骤所需的资源分配。例如,图4中的框图400可以是框图310中所有节点的公共图。在特定实施例中,不仅节点的网络方面是相同的,而且节点的终端同样可以匹配。例如,互连结构310中的每个节点可以包括呈处理核心形式的终端401和路由器402,该处理核心来自由互连结构链接的一组处理核心,该路由器402来自通过互连结构路由数据的一组路由器。终端401是具有网络接口单元(与路由器连接)、处理流水线和存储器的处理核心。存储器可以存储由流水线执行的例程以及这些例程运行的数据。因此,多播311可以是为由该组处理核心执行的复合计算分发数据的多播。复合计算可以包括执行有向图,以从神经网络中得出推论。然而,在其它实施例中,节点将在其链接到互连结构的终端方面有所不同。例如,终端可以是SoC中完全同质的一组块,其为系统的组合作用交换数据。

在本发明的特定实施例中,在步骤301的执行中,在互连结构的每个节点上分配的资源可以包括由节点上的逻辑电路响应于接收到的分配消息而分配的交叉开关和缓冲区。在所示出的示例中,流程图300的方法的步骤可以由分布式逻辑电路来实施,该分布式逻辑电路由结构的每个节点上的逻辑电路(例如逻辑电路403)和每个节点上的路由器上的资源(例如资源404)来实例化。逻辑电路可以是分布式逻辑电路的一部分,该分布式逻辑电路以一组匹配逻辑电路的形式分布在该组节点之间,该组匹配逻辑电路以一一对应的方式位于该组节点上。节点400包括路由器402上的资源404,其形式为一组交叉开关信道,该组交叉开关信道可以在各种外部线路405、406、407和408与终端401之间路由数据,并且当信道在使用时其形式为可以临时存储数据的缓冲区。响应于路由器接收到分配消息,可将缓冲区和交叉开关信道推测性地分配用于传输,例如多播311。分配消息可以是虫洞流控制数据包的报头片。逻辑电路可以编程为在评估分配消息时分配资源。

在本发明的特定实施例中,节点可以提供一组响应来交换分配消息。响应可以指示资源是否成功分配或者是否遇到资源争用。响应可以由逻辑电路(例如逻辑电路403)生成,并从节点向上游传输。逻辑电路也可以编程为如果资源被成功分配,则生成成功响应,并向上游传送该响应。逻辑电路还可以编程为在节点处响应于检测到资源争用,生成资源争用的指示符。逻辑电路还可以编程为以响应的形式向上游传输该资源争用的指示符。在本发明的特定实施例中,成功响应的生成可以基于确定节点是终止节点而有条件地进行。当接收到分配消息和/或当分配节点上的资源时,通过节点的传输的上游方向和下游方向可以存储在节点的路由器的存储器中。节点的状态,就其作为特定传输的节点的类型而言,也可以保持在节点的路由器的存储器中。

图5示出了根据本文公开的本发明的特定实施例的互连结构上的终止节点的行为的流程图500和向上游转发成功响应的互连结构的框图510。流程图500包括由框图510中终止节点511上的逻辑电路执行的一组步骤。该节点被称为终止节点,因为其是多路径多播311的路径上的最后一跳。然而,与上面提到的分支节点一样,除了临时执行与作为多播311的终端点相关联的特定逻辑流之外,不必要有任何永久区分终止节点511的东西。

流程图500开始于步骤501,在步骤501,在例如终止节点511的节点处,接收用于支持例如多播311的传输路径的资源的分配消息。节点的逻辑电路可以编程为为多播分配资源或检测争用,如以下所描述。然而,假设分配成功,逻辑还可以根据分配消息和多播上节点的位置,向下游传输分配消息或向上游传输成功消息。在本发明的特定实施例中,终止节点将向上游传输成功消息,而间歇节点不会。分配消息可以是虫洞流控制数据包的报头片。资源可以是节点上的交叉开关和/或缓冲区。

在本发明的特定实施例中,节点的逻辑电路将检查分配消息的地址,以确定节点应如何反应。实际上,在本发明的特定实施例中,节点将直到反应了才知道其为特定传输扮演什么角色。因此,流程图500继续步骤502,检查分配消息中的地址。节点可以使用分配消息的这种检查来确定该节点将在给定的传输中扮演什么角色以及随后应执行什么步骤。

框图510示出了终止节点执行的流程图500。如框图510所示,多播311的目的地节点由两个地址(X_STR,Y_STR)和(X_END,Y_END)明确定义。终止节点(例如终止节点511)的逻辑电路可以使用该信息,连同关于路径已经通过的先前节点的信息、关于拓扑的先验知识和/或从分配消息获得的源地址的知识,来确定其是终止节点。在这一点上,终止节点的逻辑电路然后可以执行步骤503,其中,假设在节点511处没有资源争用,则向上游返回成功消息形式的响应。形成多播311的路径上的中间节点可以编程为将从下游接收到的任何成功消息进一步向上游转发。

流程图500还包括步骤504,在步骤504中,分配消息从节点传输到下游节点。如果在步骤502中确定该节点是间歇节点或分支节点,则执行该步骤。分配消息可以从分支节点传输到源自分支节点的一组路径。节点作为间歇节点或分支节点的标识可以使用与以上描述的用于确定该节点是否是终止节点的方法类似的方法来确定。

尽管出于解释的目的,在图5中提供了编码为矩形的多播目的地的示例,但是本文公开的方法可以推广到任何多播组,其中,可以根据路由坐标来确定节点在传输路径上的位置,并且分配消息在每一跳中分配一个或多个输出端口。具体地,如果分配消息分配多个输出端口,则节点将激活本文描述的分支节点逻辑例程,而如果分配消息分配单个输出端口,则节点将激活间歇节点逻辑例程,并且如果数据包不分配任何输出端口,则节点将激活终止节点逻辑例程。

在本发明的特定实施例中,可以聚集来自各种节点的响应,所述各种节点已经推测性地分配以形成用于通过互连结构进行传输的一条或多条路径,以便该结构确定分配的成功或失败。本文公开的本发明的特定实施例以以下方式聚集响应,即使得保证将告知所有可能参与传输的节点推测性分配的失败,而不管在分配资源的过程中何时检测到争用以及在结构中的何处检测到争用。如同本文公开的结构的其它行为一样,这种聚集是结构的一种突现属性,其源于以组合方式起作用的各个节点的逻辑电路的行为。特别地,多路径多播的不同路径的响应可以在多播的分支节点处被聚集、评估和起作用。

流程图300继续到步骤302,在步骤302,从该组路径中聚集一组响应,该组路径形成该组路径上的分支节点处的传输的至少一部分。当响应消息在形成多播的节点之间传输时,可以通过响应消息的转发逻辑来聚集该组响应。具体地,该组响应可以由间歇节点向上游转发,并且由分支节点保存以供聚集评估。分支节点的逻辑电路可以跟踪有多少条路径源自该分支,并在组合评估响应之前等待每个分支的响应。首先,接收到的响应可以保存在缓冲区中。该组响应可以指示在资源分配期间没有检测到资源争用。例如,源自分支节点的所有路径的终止节点和下游分支节点可以包括逻辑块以返回成功信号,并且分支节点可以在响应的聚集期间保持从所有这些节点接收响应。替代地,该组响应可以指示在资源分配期间检测到资源争用。

在本发明的特定实施例中,分支节点的逻辑电路可以配置为基于聚集响应的评估来执行不同的动作。例如,如果任何响应均指示分配失败,则聚集响应的组合分析可以评估为失败状况,而只有当所有响应均指示成功分配时,才可以评估为成功状况。对于失败状况和成功状况,可以触发逻辑来执行不同的例程。例如,对于成功状况,分支节点本身可以返回成功信号,以向上游传递给附加分支节点或传输的源节点。替代地,对于失败状况,分支节点可以向上游返回资源状况的指示符,并向其它下游路径通知分配失败。

图6示出了根据本文公开的本发明的特定实施例的用于聚集来自互连结构的分支节点上的一组路径的一组响应并对其做出响应的流程图600,以及执行流程图600的流程的互连结构的框图610。流程图600开始于步骤601,在步骤601,在分支节点处接收一组响应。分支节点可以是框图610中的分支节点611。响应可以在用于框图610中的、在各个节点之间传送路由信息和传输数据的相同线路上接收。如果互连结构是双向结构,则向下游发送的多播数据可以在数据线路上发送,并且响应可以在用于在另一方向上进行上游数据传送的对应数据线路上向上游发送。替代地,响应可以在互连结构中的节点之间的专用线路上发送。专用线路可以是上行和/或下行专用线路,其形成与用于通过结构来路由多播数据相同的一组跳。如图所示,两条路径从分支节点611分出。一个分支返回由终止节点511生成的成功响应,并且另一个分支以失败消息的形式返回由组612中的一个节点生成的资源争用的指示符。使用本文公开的方法,争用可以发生在该组节点612中的任何节点上,并且将适当地聚集故障响应,以使得失败响应被路由到分支节点611。

流程图600继续到步骤602,在步骤602,分析聚集的消息。分支节点可以评估所有接收到的响应,方法是将其放入缓冲区,并且然后在所有保留的缓冲区都已填满时,将其应用到一组逻辑门进行评估。保留的缓冲区的数量可以基于源自分支节点的路径数量的计数来设置。逻辑电路可以实现“与”操作,使得只有当所有响应都成功时,成功消息才会被向上游传递,而如果任何响应包括失败消息,则执行不同的事件集。

步骤603示出了向上游传递成功消息的步骤。该步骤包括生成成功消息或将其向上转发到节点的数据源。该步骤可以使用该信号的专用信号线路来进行。分支节点和任何间歇节点或终止节点可以临时存储路由信息,以支持传输,这将允许节点跟踪哪个方向是沿传输的上游方向。

如果任何响应均指示分配失败,则采取的步骤包括步骤604和步骤605。这些步骤可以包括从分支节点响应于资源争用的指示符而向下游传输解除分配消息,以及向上游传输资源争用的指示符。在步骤604中,失败消息从分支节点传输回上游。这通过分支节点611沿多播的路径向源节点312发送失败信号来说明。在步骤605中,从分支节点向下游传递解除分配消息。这通过分支节点611沿多播的路径向终止节点511发送解除分配消息来说明。解除分配消息可以在专用信号线路或用于传输数据的相同信号线路上发送。具体地,如果特定的互连结构使用虫洞路由,其中,数据包的尾部片用于在给定节点处解除分配资源,则解除分配消息可以通过与那些尾部片基本相同的方式传输和作用。互连结构的分布式逻辑可以设计为一旦接收到解除分配消息,则释放对接收到解除分配信号的节点上保留的任何资源的控制。分支节点的逻辑可以编程为在源自分支节点的每个分支上向下游发送解除分配消息。在特定实施例中,分支节点可以编程为仅在源自分支节点并且以成功响应进行响应的所有分支上向下游发送解除分配消息。在这些实施例中,分支节点、间歇节点、源节点和终止节点可以编程为响应于接收到失败消息来解除分配多播的资源,使得当失败响应生成并且向上游转发时,任何报告失败的分支将已经被解除分配。间歇节点可以编程为基于消息的接收来解除分配,并将解除分配消息进一步向下游转发。

在本发明的特定实施例中,互连结构的从特定节点对资源争用的指示符的响应中出现的聚集性能将导致互连结构一致地对已推测性地分配以支持传输的资源进行解除分配。流程图300中的步骤304示出了该功能,其示出了在步骤301的第二次迭代中为多播重新分配资源之前,互连结构等待一保持时间段。如以上所描述,互连结构中的各个节点可以各自编程为响应于接收到解除分配消息或资源争用的指示符来解除分配为传输保留的任何资源。例如,从下游路由的失败消息或从上游路由的解除分配消息会导致节点释放为与这些消息相关的传输而保留的任何资源。因此,在所有响应都已聚集之后,节点的聚集性能将是完全解除对传输资源的分配。然后,互连结构的资源将可用于支持另一个传输,例如最初导致资源争用的那个传输。

除了解除分配任何已分配的资源之外,互连结构还可以在保持时间段之后等待重试传输。控制保持时间段的逻辑可以由传输的源节点中的逻辑电路提供。具体地,确定所述保持时间段的时长和实施所述保持时间段的逻辑可以由传输的源节点中的逻辑电路提供。一旦源节点接收到资源争用的指示符,例如失败消息,就可以启动设置和实施保持时间段所需的例程。该功能在流程图300中示出为步骤305。

作为解除分配资源和等待重新分配的替代方案,源节点可以开始传输。该功能在流程图300中示出为步骤303。在步骤303完成之后,多播将完成,并且与传输相关联的资源可以解除分配。一般来说,源节点可以开始传输之前所需的时间量将是源节点获得成功树分配的指示所花费的时间,这将是时间t=(2*D*L),其中,D是到多播中最远程目的地的跳数距离,并且L是传输通过结构的单跳延迟。在具有少于100个终端(使得最大距离D在20的数量级)并且每个周期可以传输几十个字节(例如,16、32或64个)的单向规则正方形拓扑的NoC中,上面的时间t通常评估为相当于传输几百或小几千个字节的时间段。这样,几万字节的传输将发现该传输时间相对不合适,并且经常涉及该长度或更长传输的工作负载将相对不受该等待时间的影响。在本发明的特定实施例中,由于分支节点保持从源自分支节点的所有路径接收响应,并且仅当其已经从每条路径接收到反馈时向上游传输成功消息,所以当源节点接收到成功消息时,响应的聚集将针对整个结构完成,并且当接收到成功消息时,源节点将知道所有资源已经分配用于传输。在本发明的特定实施例中,传输可以在接收到资源已经成功分配的确认之前开始。换句话说,在开始传输之前,结构不需要等待完整的2DL时间段。参考流程图300,这将意味着步骤303在聚集所有响应之前开始,甚至在已将所有资源分配用于传输之前开始。除了推测性分配之外,表现出这种特性的互连结构可以被称为实践推测性传输。

在本发明的特定实施例中,可以通过各种方式进行推测性传输。数据传输可以在聚集所有响应之前开始。数据传输可以在从源节点传输分配消息之后立即开始。替代地,可以在等待一段时间之后开始传输数据。这些实施例最好应用于沿多播的路径写入不完整数据没有任何不可逆副作用的情况。例如,在一些环境中,向节点上的寄存器写入传输数据会触发该节点上的例程,该例程会递增计数器,该计数器不能由发送到该节点的后续路由或流控制信息重置。作为另一个示例,在一些环境中,将传输数据写入节点上的寄存器会导致写入不容易删除或重写的地址。因此,互连结构的路由或流控制系统没有办法通知更高级别的系统多播失败并撤销该写入。在这些实现方式中,建议保持写入多播的任何数据,直到所有响应都已成功聚集。在写入确实会导致副作用,但是那些副作用是可逆的实现方式中,例如设置计数器或者写入到如果资源分配失败则需要清零或清除的寄存器,可以校准用于推测性传输的等待周期,以平衡写入数据的投资和针对传输资源分配成功的可能性撤销该过程的成本。

在特定实施例中,源节点可以编程为以各种方式实现保持时间段。不需要使用关于导致资源争用的传输的任何特定信息来设置保持时间段。因此,不需要为了在互连结构上共享资源而进行全局协调或源间协调和协商。相反,可以仅使用编程到源节点中的数据或者在资源争用指示中经过源节点的数据来导出保持时间段。例如,失败消息可以包括关于从源节点到争用位置的距离的信息,可以在确定保持时间段期间考虑该信息;或者可以在源节点处保存传输尝试次数的计数器,在计算保持时间段时同样可以考虑该计数器。保持时间段可以是一个固定值,该值等于互连结构上的多播完成所需的平均时间。通过这种方式,互连结构将具有合理的置信度,即在重新分配资源时,导致冲突的任何传输都将完成。该固定值可以在设计时确定,也可以根据互连结构在终端执行标准工作负载时为终端提供服务时进行的测量定期更新。保持时间段也可以是由上述原理设定的具有偏差的随机值,或者是来自上述固定值的随机值。这种方法将确保被初始多播阻塞的多个传输不会随后在完全相同的时间继续为重叠的资源保留资源,并且继续在永无止境的循环中彼此阻塞。每次传输被强制保持时,保持时间段也可以设置为增加。每次传输被强制保持时,保持时间段也可以呈指数增加。每次在给定路径上发送分配消息时,源节点可以递增一个计数器,以跟踪用于这些目的的分配尝试的次数。源节点也可以设计为在超过最大迭代次数时向更高级别的系统抛出死锁标志。更高级别的系统可以启动全局资源分配例程来停止系统循环。

图7示出了由源节点处理一组响应和对其响应的执行的流程图700,以及执行流程图700的流程的互连结构的框图710。所有过程都从源节点接收来自一个或多个分支的响应开始,该分支将用于支持来自源节点的传输。这些分支上的间歇节点可以编程为将从下游收到的任何响应转发回上游。这些分支上的分支节点可以编程为在聚集来自其各个分支的响应之后有条件地向上游发送响应。可以对检测到资源争用的节点进行编程,以生成响应并向上游传输。因此,在步骤701中,源节点312可以处理来自其传输所需的各个路径的一组响应。在框图710中,这包括向下到达间歇节点711、到达终止节点712的路径,和到达终止节点713的第二路径。框图710示出了这样的事实,即例如源节点312的源节点可以接收其必须分析的多个响应,因为源节点可以具有源自源节点的多个分支。响应可以包括来自源节点将向其传输数据的所有终止节点(例如节点713和节点712)的成功消息。替代地,如图所示,至少一个响应可以是资源争用的指示符,例如响应于在沿路径向终止节点713分配资源时检测到的资源争用而生成的失败消息。

流程图700继续到步骤702,其中,分析来自用于支持源节点的传输的各个路径的响应。该步骤可以包括类似于上面参考执行步骤602的分支节点描述的聚集和评估逻辑。具体地,源节点可以编程为进行步骤703,并且当且仅当所有分支以成功消息响应时,发起传输;或者如果互连结构编程为用于推测性传输,则该传输可以在接收到成功消息之前开始。此外,源节点可以编程为继续步骤704,确定保持时间段,并且继续步骤705,如果任何分支以失败消息响应,则向下游传输解除分配消息。可以通过上述各种方式中的任何一种来确定保持时间段。如果源节点具有多个分支,并且一个节点以失败消息响应,而另一个节点以成功消息响应或者没有响应,则可以在步骤705中发送解除分配消息。互连结构的分布式逻辑可以编程为使得解除分配消息向下游传递,并且要么一直前进到终止节点(例如节点712),不然就作为间歇节点(例如节点711)满足资源争用的上游行进指示,并且在任一事件中实现所有资源的完全解除分配。分支节点也可以编程为在尚未收到响应的分支上向下游推送解除分配消息。

上面参考图3-6根据特定节点的行为和互连结构的突现行为描述的过程通常可以开始于,在分配将支持数据传输的资源集合时,在用于数据传输的一组路径上的节点处检测资源争用,并且在节点处响应于检测资源争用,生成资源争用的指示符。资源争用的指示符可以是以上描述的失败消息。这些步骤的特定实施例可以参考图8-9来描述。

在本发明的特定实施例中,互连结构可以包括分布式逻辑电路的集合,其分布在组成互连结构的一组节点中,这些逻辑电路编程为执行用于在互连结构上进行多播的方法,该方法包括在分配资源集合以支持多播的同时,检测该组节点中的在某一节点处的资源争用。该步骤由图9的流程图900中的步骤901示出。该步骤可以在互连结构的路由器(例如路由器402)上进行,其细节在框图800中示出。路由器包括一组输入端口802、一组输出端口803、交叉开关804和分配器805。该组输入端口802将包括由缓冲区806和缓冲区807示出的一组缓冲区,以及椭圆区,该椭圆区指示有多少个缓冲区就有多少个到路由器的输入。该组输出端口803将包括由缓冲区808和缓冲区809示出的一组缓冲区,以及椭圆区,该椭圆区指示有多少个缓冲区就有多少个来自路由器的输出。输入和输出的数量将取决于拓扑,并且如同拓扑本身一样,不对本发明产生限制。在本发明的特定实施例中,交叉开关804的信道和包括该组输入端口和输出端口的缓冲区包括必须用于支持结构上的数据传输的资源。这样,如在步骤901中,检测节点上的资源争用可以包括路由器检测其在缓冲空间或交叉开关信道方面没有足够的资源来支持另一个数据传输,因为现有的数据传输正在使用那些资源。

在本发明的特定实施例中,节点处的资源争用的检测可以发生在节点处的路由器中,并且可以包括由路由器处理分配消息。该步骤也可以是通过互连结构传输的标准资源分配的一部分。在流程图900中,该步骤由步骤903表示:在节点处接收分配片。在框图800中,分配消息可以是在缓冲区807处接收到的分配片820。然后,通过检测分配片的分配失败可以检测该资源争用。该步骤由步骤906表示:检测分配片的分配失败。该步骤可以包括分配器805检查分配片中的资源分配请求,并且确定路由器402不能支持所请求的资源分配。分配失败可能是由于路由器402上缺少可用的缓冲区或交叉开关信道来支持由分配片820请求的虚拟信道。虚拟信道可以要求分配器805分配输出端口803中的至少一个缓冲区、输入端口802中的至少一个缓冲区,以及来自这些缓冲区之间的交叉开关804中一组交叉开关信道中的至少一个交叉开关信道。如果因为路由器支持的传输比其所能支持的更多导致这些资源不可用,则分配器805可以立即在专用线路810上返回失败指示符,并解除分配已经为传输指定的任何资源。值得注意的是,路由器402的体系结构还允许间歇节点在第二专用线路811上接收从下游接收到的成功消息或失败消息,通过用分配器805处理失败消息来响应失败消息,从而在框图800中表示的节点上解除分配资源,并且在专用线路810上向上游转发成功消息或失败消息。专用线路810和第二专用线路811可以是一组专用信号线路中与互连结构中的一组节点中的所有节点连接的专用信号线路。该组专用信号线路可以与互连结构的数据传输线路并行运行,并遵循通过互连结构的相同跳变模式。附加地,无论拓扑是单向拓扑还是双向拓扑,专用线路都可以是双向的。

在本发明的特定实施例中,互连结构可以包括分布式逻辑电路的集合,这些逻辑电路分布在组成互连结构的一组节点中,并且编程为执行用于在互连结构上进行多播的方法,该方法包括在节点处响应于检测资源争用,生成资源争用的指示符。资源争用的指示符可以在专用信号线路上向上游发送。参考图9中的流程图900,生成资源争用的指示符的步骤由步骤902表示。该过程可以在检测到节点处的资源争用时立即进行,并且可以包括生成用于从该节点向上游传输的失败信号。例如,其可以包括分配器805创建用于在专用信号线路810上传输的信号。在替代实施例中,该步骤可以包括生成传输返回信号,用于沿互连结构的主数据线路传输回来。

在本发明的特定实施例中,分配消息的处理可以优先化,以便限制将关于资源分配失败的消息返回到系统中的分支或源节点所花费的时间量。例如,路由器接收到分配片可以触发优先化分配片处理例程来覆盖路由器上的分配器对其它消息的处理。一般来说,对片的处理包括在输入缓冲区处接收片,为数据包或与该片相关联的其它传输分配虚拟信道、仲裁交叉开关,以及将数据输出到输出缓冲区。分配虚拟信道可以包括确保路由器设置为预留空间来通过所识别的信道接收和发送片,直到不再需要该信道。这种用于片处理的常规流水线可以包括每跳4-5个时钟周期。在本发明的特定实施例中,互连结构中的路由器的逻辑电路编程为将路径分配消息优先化并且立即对其进行处理。这将导致要么是立即分配并且向下游转发分配消息,要么是报告分配失败并且阻止或解除路由器上该传输的任何资源分配。在本发明的特定实施例中,互连结构的分布式逻辑可以编程为在每跳两个周期内执行该动作。第一个周期接收片并将其识别为分配片,以及第二个周期检查分配是否可用,并立即指定资源且转发该片或返回失败消息。在特定实施例中,这是通过使用具有保留报头位的片来实现的,该保留报头位被写入互连结构中的路由器的输入端口上的保留寄存器,以触发优先化片处理例程。

流程图900包括可选步骤904和905,以说明与分配消息的优先化处理相关联的步骤。在本发明的特定实施例中,检测资源争用可以包括步骤904:确定分配片是多播分配片和步骤905:响应于确定分配片是多播分配片而在节点处触发优先化片处理例程。节点处的标准片处理例程比优先化片处理例程花费更多的时钟周期。例如,如以上所描述,常规片处理例程可以花费4-5个时钟周期,而优先化片处理例程可以在两个时钟周期内完成。

在本发明的特定实施例中,解除分配消息的处理可以优先化。解除分配消息的优先级化处理可以使用与分配消息的优先化处理相同的例程来进行优先化。在特定实施例中,分配和解除分配消息都将在同一硬件上沿传输路径从上游接收。例如,类似于虫洞路由数据包的报头片和尾部片可以由路由器接收和处理,分配和解除分配消息可以以类似方式被接收和处理。流程图910示出了解除分配资源集合的方法,该方法包括步骤911:在节点处接收解除分配消息。该节点可以是生成解除分配消息的分支节点的下游节点。例如,在框图800中,解除分配消息可以是从输入缓冲区806上的上游节点接收到的解除分配消息821。该流程图还包括步骤912:响应于接收解除分配消息,在下游节点处触发优先化片处理例程。优先化片处理例程可以是上述关于分配消息的相同的优先化片处理例程。在本发明的特定实施例中,解除分配消息可以使用与上述实施例的分配消息所使用的消息报头中的相同专用位。

在本发明的特定实施例中,互连结构可以包括关闭与实现推测性分配相关联的逻辑的能力。该过程可以包括:确定将不需要推测性分配,并且停用与本文公开的推测性分配方法相关联的步骤。该确定可以包括:对于互连结构的终端将操作的给定工作负载,使用用于控制工作负载的执行和通过互连结构的数据传输的特定规则来确定死锁状态是不可能的或者是完全可以避免的。确定和停用可以由比互连结构硬件和路由器更高级别的系统来执行。例如,这些步骤可以由互连网络的终端中的一个终端上的控制器执行,例如代替终端401的处理核心。替代地,互连网络可以有一个专用的更高级别的控制器作为该角色。控制器还可以作为互连网络的终端,并且专门用于设置各种路由器的状态,以便调试、初始化、维护和测试互连网络。

在本发明的特定实施例中,前段中提到的确定可以由编译器来进行,该编译器的任务是为互连结构的终端将要操作的工作负载编译程序代码。对于特定的工作负载,产生该工作负载的程序代码的编译器可能能够在编译时静态地确定死锁状态是完全可以避免的,使得与推测性分配相关联的开销是多余的。编译器可以针对整个工作负载或在逐个传输的基础上做出该决定。该过程可以包括编译用于在一组处理核心上执行的一组指令,并且确定对于将在指令的执行期间进行的一个或多个传输,多播资源争用是可避免的。该过程可以包括静态地标记传送指令是否需要推测性分配。在本发明的特定实施例中,正在执行工作负载的硬件中,在运行时不需要附加机制来支持此优化。编译和确定步骤可以由上述更高级别的控制系统控制。

在本发明的特定实施例中,推测性分配过程的停用可以通过各种方式进行。该过程可以包括:使用编译器编译用于在由互连结构链接的一组处理核心上执行的一组指令;并且当编译器确定多播资源争用可避免时,停用资源争用检测例程。停用推测性分配可以包括:停用源节点或所有源节点处用于通过互连结构传输数据的保持时间,使得其在开始数据传输之前不会保持从传输的终端节点接收响应。停用可以在所有源节点上、在一组特定的源节点上、或者仅当特定的源节点正在执行特定的传输时进行停用。停用推测性分配还可以包括:停用优先化分配消息处理和任何附加的资源争用检测逻辑,这些逻辑在分配消息的通常处理之外增加了额外开销。停用推测性分配过程的动作可以由上述更高级别的控制系统来管理,并且可以包括在组成互连结构的各种路由器上设置状态寄存器的值,使得其关闭任何推测性分配处理。替代地,该动作可以包括:在待通过互连结构发送的消息上设置报头位,以指示其不应根据推测性分配处理来处理,或者在将由互连结构的路由器编译成传输的特定指令上设置标志。停用的动作还可以包括:将设置互连结构的路由器的状态和改变将通过互连结构传输的数据的报头组合。编译、确定和停用可以由上述更高级别的控制系统来控制。

在本发明的特定实施例中,流程图300的所有步骤可以完全在硬件中执行,例如在本文公开的路由器和连接这些路由器的信号线路上实现的分布式逻辑电路中。例如,在所公开的实施例中,其中,多播311可以相应地是为由该组处理核心执行的复合计算分发数据的多播,本文公开的所有方法步骤可以由互连结构中的硬件进行,而无需在任何这样的处理核心上进行任何计算。这样,各种处理核心可以在其复合计算中进行各个组件计算,而不考虑互连结构的路由和流控制算法的操作。

虽然已经针对本发明的特定实施例详细描述了说明书,但是应理解,本领域技术人员在理解了前述内容后,可以容易地想到这些实施例的变更、变化和等同物。本说明书不应限于应用于进行复杂计算的一组处理核心的互连结构,因为所公开的互连结构和相关联方法可以应用于改善具有广泛变化的终端的SoC的性能。此外,本公开不应限于在多核处理器上执行的任何特定类型的复杂计算,因为任何复杂计算的编程和执行均可以通过本文公开的特定实施例来辅助,包括训练或从人工神经网络得出推论,或者执行包括大量组件计算的散列、加密、解密或图形渲染算法。在不脱离本发明的范围的情况下,本领域技术人员可以实施本发明的这些和其它修改和变化,本发明的范围将在所附权利要求中更具体地阐述。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种芯片工作模式控制方法、系统及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!