发明内容
针对上述问题中的至少一个,本发明提供了一种用于网状网络***的多播路由方法、用于该网状网络***的互连设备以及配置该网状网络***的方法,其通过根据网状网络***中的每个处理子***内的互连设备是否与外部处理子***相连为这些互连设备配置不同的路由策略,使得各个处理子***内的链路的响应数据负载更加均衡,从而提高了网络性能。
根据本发明的一个方面,提供了一种用于网状网络***的多播路由方法。所述网状网络***包括多个处理子***和多个存储器,每个处理子***包括多个处理器和连接所述多个处理器的多个互连设备,所述多个处理子***之间的路由使用第一静态路由策略。所述方法包括,在每个处理子***的多个互连设备中的每个内部互连设备处:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述内部互连设备到所述目的存储器的最短路径,其中所述内部互连设备没有链路与外部处理子***相连;确定所述最短路径的数量是否大于一;响应于确定所述最短路径的数量等于一,将所述多播访问请求沿着所述最短路径路由到所述目的存储器;响应于确定所述最短路径的数量大于一,基于第二静态路由策略确定所述多播访问请求的下一跳互连设备,所述第二静态路由策略不同于所述第一静态路由策略。
在一些实施例中,所述方法还包括,在每个处理子***的多个互连设备中的每个外联互连设备处:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述外联互连设备沿最短路径到所述目的存储器的下一跳互连设备,其中所述外联互连设备具有至少一条链路与外部处理子***相连;确定存在一个还是多个下一跳互连设备;响应于确定仅存在一个下一跳互连设备,将所述多播访问请求路由至所述下一跳互连设备;响应于确定存在多个下一跳互连设备,确定所述多个下一跳互连设备是否包括位于所述处理子***内部的另一互连设备;以及响应于确定所述多个下一跳互连设备包括位于所述处理子***内部的另一互连设备,将所述多播访问请求路由至所述另一互连设备。
根据本发明的另一个方面,提供了一种用于网状网络***的互连设备,其中所述网状网络***包括多个处理子***和多个存储器,每个处理子***包括多个处理器和连接所述多个处理器的多个互连设备,所述多个处理子***之间的路由使用第一静态路由策略。所述互连设备被配置为:当所述互连设备没有链路与外部处理子***相连时,响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述互连设备到所述目的存储器的最短路径;确定所述最短路径的数量是否大于一;响应于确定所述最短路径的数量等于一,将所述多播访问请求沿着所述最短路径路由到所述目的存储器;响应于确定所述最短路径的数量大于一,基于第二静态路由策略确定所述多播访问请求的下一跳互连设备,所述第二静态路由策略不同于所述第一静态路由策略。
在一些实施例中,所述互连设备还被配置为:当所述互连设备具有至少一条链路与外部处理子***相连时,响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述互连设备沿最短路径到所述目的存储器的下一跳互连设备;确定是否存在一个或多个下一跳互连设备;响应于确定存在一个下一跳互连设备,将所述多播访问请求路由至所述下一跳互连设备;响应于确定存在多个下一跳互连设备,确定所述多个下一跳互连设备是否包括位于所述处理子***内部的另一互连设备;以及响应于确定所述多个下一跳互连设备包括位于所述处理子***内部的另一互连设备,将所述多播访问请求路由至所述另一互连设备。
根据本发明的再一个方面,提供了一种网状网络***。所述网状网络***包括多个处理子***和多个存储器,每个处理子***包括多个处理器和连接所述多个处理器的多个互连设备,并且所述多个处理子***之间的路由使用第一静态路由策略,所述多个互连设备包括内部互连设备和外联互连设备,所述内部互连设备没有链路与外部处理子***相连,所述外联互连设备具有至少一条链路与外部处理子***相连,其中所述内部互连设备被配置为:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述内部互连设备到所述目的存储器的最短路径;确定所述最短路径的数量是否大于一;响应于确定所述最短路径的数量等于一,将所述多播访问请求沿着所述最短路径路由到所述目的存储器;以及响应于确定所述最短路径的数量大于一,基于第二静态路由策略确定所述多播访问请求的下一跳互连设备,所述第二静态路由策略不同于所述第一静态路由策略,并且其中所述外联互连设备被配置为:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述外联互连设备沿最短路径到所述目的存储器的下一跳互连设备;确定存在一个还是多个下一跳互连设备;响应于确定仅存在一个下一跳互连设备,将所述多播访问请求路由至所述下一跳互连设备;响应于确定存在多个下一跳互连设备,确定所述多个下一跳互连设备是否包括位于所述处理子***内部的另一互连设备;以及响应于确定所述多个下一跳互连设备包括位于所述处理子***内部的另一互连设备,将所述多播访问请求路由至所述另一互连设备。
根据本发明的又一个方面,提供了一种配置网状网络***的方法,所述网状网络***包括多个处理子***和多个存储器,每个处理子***包括多个处理器和连接所述多个处理器的多个互连设备,并且所述多个处理子***之间的路由使用第一静态路由策略,所述方法包括:基于所述网状网络***的拓扑结构确定所述多个互连设备中的一个互连设备是内部互连设备还是外联互连设备,其中所述内部互连设备没有链路与外部处理子***相连,所述外联互连设备具有至少一条链路与外部处理子***相连;响应于确定所述互连设备是内部互连设备,将所述内部互连设备配置为:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述内部互连设备到所述目的存储器的最短路径;确定所述最短路径的数量是否大于一;响应于确定所述最短路径的数量等于一,将所述多播访问请求沿着所述最短路径路由到所述目的存储器;以及响应于确定所述最短路径的数量大于一,基于第二静态路由策略确定所述多播访问请求的下一跳互连设备,所述第二静态路由策略不同于所述第一静态路由策略;以及响应于确定所述互连设备是外联互连设备,将所述外联互连设备配置为:响应于接收到针对所述多个存储器中的一个目的存储器的多播访问请求,基于所述网状网络***的拓扑结构确定从所述外联互连设备沿最短路径到所述目的存储器的下一跳互连设备;确定存在一个还是多个下一跳互连设备;响应于确定仅存在一个下一跳互连设备,将所述多播访问请求路由至所述下一跳互连设备;响应于确定存在多个下一跳互连设备,确定所述多个下一跳互连设备是否包括位于所述处理子***内部的另一互连设备;以及响应于确定所述多个下一跳互连设备包括位于所述处理子***内部的另一互连设备,将所述多播访问请求路由至所述另一互连设备。
在一些实施例中,所述第一静态路由策略是横-纵路由策略和纵-横路由策略中的一种,所述第二静态路由策略是横-纵路由策略和纵-横路由策略中的另一种。
具体实施方式
下面将参照附图更详细地描述本发明的优选实施例。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一些实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
在一些情况下,整个网络中的一部分处理器可能会被划分专用于执行特定应用,或者,一部分处理器被分配给特定主体控制和使用,在这种情况下,该网络中的处理器可能会被划分为多个处理子***,这些处理子***中的处理器形成一个多播组,并且与其他处理子***共享相同的存储资源。
图1示出了一种网状网络***100的示意图。如图1中所示,网状网络***100包括多个处理子***(图1中示例性示出了处理子***10和20)和多个存储器(图1中示例性示出了存储器32、34和36)。其中每个处理子***包括多个处理器和连接该多个处理器的多个互连设备。如图1中所示,处理子***10包括处理器112、114、116和118和连接这些处理器的互连设备122、124、126和128,处理子***20包括处理器212和216和连接这些处理器的互连设备222和226。处理器与互连设备之间、各个互连设备之间以及互连设备和存储器之间可以通过物理链路相连,注意,图1中仅对各个互连设备之间以及互连设备和存储器之间的物理链路140至149进行了编号,而省略了处理器与互连设备之间的编号。此外,图1中所示的每个处理子***中的处理器和互连设备的数量和连接关系也是示例性的,并不用于限制本发明的范围。
一个处理子***中的部分或者所有处理器可以构成一个多播组,一个多播组中的处理器可以同时对一个目的存储器(如存储器32、34或36)中的一个目标数据单元发起数据访问请求,称为多播访问请求。各个互连设备可以将一个多播组的各个处理器的多播访问请求合并为一个单播请求以从目的存储器中获取该目标数据单元,作为响应数据的该目标数据单元又可以被各个互连设备路由和多播传输给各个请求处理器。
在根据现有技术的静态路由策略中,为了完成各个处理子***内的多播访问请求的合并,对这些多播访问请求必须使用相同的静态路由策略。在这种情况下,来自存储器32、34和36的响应数据可能会通过相同的链路,从而可能造成链路阻塞从而降低了链路性能。例如,假设图1的网状网络***100使用的静态路由策略是纵-横静态路由(即y-x路由),则处理子***10中的处理器112对于存储器32的多播访问请求将从互连设备122经由链路142和147到达存储器32,相应地,来自存储器32的响应数据将经由链路147和142到达互连设备122;处理器112对于存储器34的多播访问请求将从互连设备122经由链路142、145和148到达存储器34,相应地,来自存储器34的响应数据将经由链路148、145和142到达互连设备122;处理器112对于存储器36的多播访问请求将从互连设备122经由链路142、145、146和149到达存储器36,相应地,来自存储器36的响应数据将经由链路149、146、145和142到达互连设备122。
可以看出,在链路142上,可能有来自存储器32、34和36的三个响应数据,而在链路140、141、143和144上不存在响应数据,从而造成不同链路上的响应数据负载差别很大,降低了网络性能。
此外,各个处理子***的划分通常是基于具体应用或者使用者来划分的。例如,作为资源提供者,网状网络***100的拥有者可以根据不同客户的需求为其分配不同的处理子***。也就是说,不同的处理子***具有不同的使用者。在这种情况下,一个处理子***中的多播组发出的多播访问请求需要在该处理子***内完成合并。
针对上述问题,本发明提出了一种用于网状网络***的多播路由方法,其通过根据每个处理子***内的互连设备的不同连接关系(即是否与外部处理子***相连)为这些互连设备配置不同的路由策略,使得各个处理子***内的链路的响应数据负载更加均衡并且使得一个处理子***内的多播访问请求能够在该处理子***内完成合并,从而提高了网络性能。
具体地,在如图1所示的网状网络***100中,对于各个处理子***之间的数据路由,仍然利用原有的静态路由策略(以下称为第一静态路由策略),而在各个处理子***内部的各个互连设备处,基于该互连设备是否与外部处理子***相连而使用各自不同的路由策略。这些路由策略例如可以在网状网络***100初始化,或者在网状网络***100整体拓扑结构或者处理子***的划分方式发生变化(以下将网状网络***100的整体拓扑结构以及其中的处理子***的划分方式统称为网状网络***100的拓扑结构)时由更高层的控制器(如主CPU)来配置,以使得各个互连设备在接收到多播访问请求时执行相应的多播路由方法。
在配置各个互连设备的路由方法之前,可以基于网状网络***100的拓扑结构确定一个互连设备是内部互连设备还是外联互连设备。这里,内部互连设备是指没有链路与外部处理子***相连的互连设备,而外联互连设备是指具有至少一条链路与外部处理子***相连的互连设备(也可以称为边缘互连设备)。在本文中,可以将一个互连设备所属的处理子***(也可以称为本地处理子***)之外的任意其他处理子***称为外部处理子***。
例如,在图1所示的网状网络***100中,对于计算子***10中的互连设备122来说,其具有三条链路,其中链路140与同一处理子***10内的互连设备124相连,链路142与同一处理子***10内的互连设备126相连,此外还通过另一链路与同一处理子***10内的处理器112相连。也就是说,互连设备122没有链路与外部处理子***相连,因此可以将互连设备122确定为内部互连设备。类似地,对于计算子***10中的互连设备126来说,其具有四条链路,其中链路142与同一处理子***10内的互连设备122相连,链路145与同一处理子***10内的互连设备128相连,链路147与存储器32相连,此外还通过另一链路与同一处理子***10内的处理器116相连。即,互连设备126也没有链路与其他处理子***相连,因此可以将互连设备126确定为内部互连设备。
又例如,对于计算子***10中的互连设备124来说,其具有四条链路,其中链路140和143分别与同一处理子***10内的互连设备122和128相连,链路141与另一处理子***20内的互连设备222相连,此外还通过另一链路与同一处理子***10内的处理器114相连。即,互连设备124具有一条链路与外部处理子***20相连,因此可以将互连设备124确定为外联互连设备。类似地,互连设备128也可以被确定为外联互连设备。
图2示出了根据本发明一些实施例的用于网状网络***100的多播路由方法200的流程图。多播路由方法200由内部互连设备(如互连设备122和126)在接收到多播访问请求时执行。以下以内部互连设备122为例对多播路由方法200进行描述。
如图2中所示,在步骤210,当接收到针对多个存储器32、34和36中的一个目的存储器的多播访问请求时,该内部互连设备122可以基于网状网络***100的拓扑结构确定从内部互连设备122到该目的存储器的最短路径。例如,如图1中所示,如果该多播访问请求的目的存储器是存储器32,则从内部互连设备122到目的存储器32的最短路径是通过链路142和147到存储器32。如果该多播访问请求的目的存储器是存储器34,则从内部互连设备122到目的存储器34的最短路径是通过链路142、145和148到存储器34或者通过链路140、143和148到存储器34。
在步骤220,内部互连设备122可以确定步骤210确定的最短路径的数量是否大于一。如上所述,在目的存储器是存储器32的情况下,最短路径的数量等于一,而在目的存储器是存储器34的情况下,最短路径的数量等于二。
如果确定步骤210确定的最短路径的数量大于一(步骤220的判断为“是”),则在步骤230,内部互连设备122可以基于第二静态路由策略确定该多播访问请求的下一跳互连设备。
这里,与前述对于整个网状网络***100使用相同的静态路由策略不同,在步骤230中使用的第二静态路由策略与用于处理子***之间的路由的第一静态路由策略不同。例如,假设第一静态路由策略为纵-横路由策略(也称为y-x路由),即多播访问请求首先纵向传输,然后横向传输,则第二静态路由策略可以是横-纵路由策略(也称为x-y路由),即多播访问请求首先横向传输,然后纵向传输。在这种情况下,在目的存储器是存储器34的情况下,内部互连设备122可以基于第二静态路由策略确定从内部互连设备122到目的存储器34的路径为通过链路140、143和148到目的存储器34,从而确定该多播访问请求的下一跳互连设备是通过链路140的互连设备124。
在具有多个最短路径时,通过在内部互连设备处选择不同的路由策略,能够使得各个链路上的负载均衡,避免多个响应数据在同一链路上发生冲突。
另一方面,如果确定步骤210确定的最短路径的数量等于一(步骤220的判断为“否”),则在步骤240,内部互连设备122可以沿着该最短路径将该多播访问请求路由至目的存储器。
例如,在目的存储器是存储器32的情况下,最短路径是通过链路142和147到达目的存储器32,即最短路径的数量等于一。在这种情况下,内部互连设备122可以沿着该最短路径将接收到的多播访问请求路由至目的存储器32。
这里,该最短路径可以是符合第一静态路由策略的,也可以是符合第二静态路由策略的。也就是说,在这种情况下,第一静态路由策略仍可能满足多播访问请求的路由需求和合并需求,因此这时使用的路由策略并不局限于第一或者第二静态路由策略。
通过这种方式,可以使得处理子***中的内部互连设备的路由策略更加灵活,以使得按照相同路径返回的响应数据在各个链路上的分布更加均匀。
图3示出了根据本发明另一些实施例的用于网状网络***100的多播路由方法300的流程图。多播路由方法300可以由外联互连设备(如互连设备124和128)在接收到多播访问请求时执行。以下以外联互连设备124为例对多播路由方法300进行描述。注意,这里虽然将多播路由方法300和多播路由方法200分开描述,但是本领域技术人员可以理解,多播路由方法300可以与多播路由方法200组合以用于整个网状网络***100。
如图3中所示,在步骤310,当接收到针对多个存储器32、34和36中的一个目的存储器的多播访问请求时,该外联互连设备124可以基于网状网络***100的拓扑结构确定从外联互连设备124沿最短路径到该目的存储器的下一跳互连设备。例如,如图1中所示,如果该多播访问请求的目的存储器是存储器34,则从外联互连设备124沿最短路径到目的存储器34的下一跳互连设备是互连设备128。如果该多播访问请求的目的存储器是存储器36,则从外联互连设备124沿最短路径到目的存储器36的下一跳互连设备是互连设备128或者互连设备222,即从外联互连设备124到目的存储器36有两条最短路径。
在步骤320,外联互连设备124可以确定步骤310确定的下一跳互连设备的数量是一个还是多个。如上所述,在目的存储器是存储器34的情况下,下一跳互连设备的数量是一个,而在目的存储器是存储器36的情况下,下一跳互连设备的数量是二个。
如果确定仅存在一个下一跳互连设备(步骤320的判断为“一个”),则在步骤330,外联互连设备124可以直接将该多播访问请求路由至该下一跳互连设备。例如,在目的存储器是存储器34的情况下,外联互连设备124可以直接将该多播访问请求路由至下一跳互连设备128。
另一方面,如果确定存在多个下一跳互连设备(步骤320的判断为“多个”),则在步骤340,外联互连设备124可以进一步确定该多个下一跳互连设备中是否包括位于本地处理子***10内部的另一互连设备。
例如,在目的存储器是存储器36的情况下,外联互连设备124的下一跳互连设备包括处理子***10内部的互连设备128和处理子***20内部的互连设备222。即,包括位于本地处理子***10内部的另一互连设备128。
在这种情况下,在步骤350,外联互连设备124可以将该多播访问请求路由至该另一互连设备128。这样,该多播访问请求可以在另一互连设备128处与该多播组的针对同一目的存储器的同一目标数据单元的其他多播访问请求进行合并。
另一方面,如果多个下一跳互连设备不包括位于本地处理子***10内部的另一互连设备(步骤240的判断为“否”),即,下一跳互连设备都是外部处理子***中的互连设备,则在步骤360,外联互连设备124可以基于第一静态路由策略从多个下一跳互连设备中选择一个下一跳互连设备。
注意,以上虽然结合外联互连设备对方法300进行了描述,但是在本发明的一些实施方式中,处理子***中的任一互连设备均可执行上述方法300。即,该互连设备在转发该多播访问请求时,可以确定下一跳互连设备是否是可能接收该多播组中的其他处理器的多播访问请求的互连设备,并且在确定该下一跳互连设备可能接收到其他多播访问请求时,将接收到的多播访问请求转发给该下一跳互连设备。
通过这种方式,可以使得一个多播组的多播访问请求能够在一个处理子***内完成合并,以实现多播数据访问。这对于不同处理子***具有不同使用者的情况尤其有利。
利用上述多播路由方法,假设第一静态路由策略是y-x路由,第二静态路由策略是x-y路由,则处理子***10中的处理器112对于存储器32的多播访问请求将从互连设备122经由链路142和147到达存储器32,相应地,来自存储器32的响应数据将经由链路147和142到达互连设备122;处理器112对于存储器34的多播访问请求将从互连设备122经由链路140、143和148到达存储器34,相应地,来自存储器34的响应数据将经由链路148、143和140到达互连设备122;处理器112对于存储器36的多播访问请求将从互连设备122经由链路140、143、146和149到达存储器36,相应地,来自存储器36的响应数据将经由链路149、146、143和140到达互连设备122。
图4示出了根据本发明的实施例的网状网络***100的数据流向的示意图。其中,以带箭头的虚线表示多播访问请求的流向,以带箭头的实线表示对于多播访问请求的响应数据的流向,其中带箭头的实线旁的数字(X1、X2)表示该链路上的响应数据的数量。可以看出,在链路142和146上只有一个响应数据,而在链路140和143上最多有两个响应数据,从而与前述静态路由策略相比,各个链路上的响应数据负载更加均衡。
以上以第一静态路由策略是y-x路由,第二静态路由策略是x-y路由为例对本发明的方法进行了描述,然而本领域技术人员可以理解,本发明并不局限于此,第一静态路由策略也可以是x-y路由,相应地第二静态路由策略可以是y-x路由,或者,还可以将第一静态路由策略和第二静态路由策略设置为其他静态路由策略,只要二者不同并且能保证多播请求合并能在本处理子***内完成即可。此外,在不同的网络拓扑或者处理子***的划分方式下,如果一种静态路由策略即可保证多播请求合并在一个处理子***内完成,则可以对处理子***内和处理子***之间都采用相同的路由策略。
图5示出了根据本发明一些实施例的互连设备500的结构示意图。互连设备500可以是如上所述的互连设备122、124、126、128、222或者226。
如图5中所示,互连设备500可以包括一个或多个处理单元510。处理单元510控制互连设备500的操作和功能。例如,在某些实施例中,处理单元510可以借助于与其耦合的一个或多个存储单元520中所存储的指令530来执行各种操作。存储单元520可以是适用于本地技术环境的任何合适的类型,并且可以利用任何合适的数据存储技术来实现,包括但不限于基于半导体的存储器件、磁存储器件和***、光存储器件和***。尽管图5中仅仅示出了一个处理单元510和一个存储单元520,但是在互连设备500中可以有更多个物理不同的处理单元510和存储单元520。
处理单元510可以是适用于本地技术环境的任何合适的类型,并且可以包括但不限于微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)等。
当互连设备500用来执行根据本发明所述的方案时,处理单元510可被配置(例如,由存储单元520中的指令530来配置)以实现上文参考图2和/或图3描述的方法200和/或300的功能。上文参考图2至图3所描述的所有特征均适用于互连设备500,在此不再赘述。
以上结合附图1至5对根据本发明的用于网状网络***的多播路由方法、互连设备、网状网络***及其配置方法进行了描述,上述描述仅仅着重于网状网络***或者互连设备中的路由方法的描述,而省略了多播访问请求的合并过程以及响应数据的分发过程的描述,关于后者可以参考本发明的权利人的在先专利(授权公告号CN112073321B)。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本发明所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。
本文公开的互连设备的各个组成部分可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件上。例如,可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本发明所描述的各种示例性的逻辑块、模块和电路。
本领域普通技术人员还应当理解,结合本发明的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。
本发明的以上描述用于使本领域的任何普通技术人员能够实现或使用本发明。对于本领域普通技术人员来说,本发明的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本发明的精神和保护范围的情况下应用于其它变形。因此,本发明并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。