CN115955429B - 片上网络的路由方法、装置、系统及电子设备 - Google Patents
片上网络的路由方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN115955429B CN115955429B CN202310113447.9A CN202310113447A CN115955429B CN 115955429 B CN115955429 B CN 115955429B CN 202310113447 A CN202310113447 A CN 202310113447A CN 115955429 B CN115955429 B CN 115955429B
- Authority
- CN
- China
- Prior art keywords
- node
- path
- data packet
- current
- current node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种片上网络的路由方法、装置、系统及电子设备。该方法包括:获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;在X向距离和Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点。这种方式中,当目的节点与当前节点在同一行或者同一列时,考虑采用绕行方式,在一定程度上降低了网络延迟。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种片上网络的路由方法、装置、系统及电子设备。
背景技术
随着集成电路制造工艺的发展,片上系统(System on Chip,SOC)上可以集成越来越多的处理器核。处理器核间的互联,需具备高吞吐率、低延迟和较强可扩展性的优点,传统的以共享总线为基础的互联架构难以满足现在的需求,采用路由和分组交换进行数据通信的片上网络(Network on Chip,NOC)技术,凭借其良好的地址空间可扩展性和高并行性等优势,成为片间互联的首选。
影响片上网络性能的主要包括拓扑结构和路由算法,目前比较常见的拓扑结构有二维Mesh和Torus结构。 二维Mesh拓扑结构是一种网格庄的结构,该结构中每个路由节点连接一个处理器核,并且与其上、下、左、右 4 个方向的相邻路由节点连接。二维Torus 拓扑结构则是在Mesh 拓扑结构的基础上,将行和列首尾路由节连接,可以缩短网络平均直径。
片上网络的路由算法,决定了数据从源节点到目的节点,所要经过的路径。传统的路由算法为维序路由算法,从源节点到目的节点路径唯一,该种路由算法实现方式简单,但是采用固定的路由方式,增加网络节点的阻塞风险,导致网络出现延迟。
发明内容
本公开的目的是提供一种片上网络的路由方法、装置、系统及电子设备,解决了现有技术片上网络节点的阻塞导致网络延迟较大的技术问题。
根据本公开的一个方面,提供一种片上网络的路由方法,片上网络包括多个节点,方法包括:
获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;
在X向距离和Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点,并返回获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标的步骤。
在一些实施例中,上述片上网络的路由方法中,预设条件包括以下至少一种:
直连路径的路径长度小于等于第一预设阈值;
直连路径的平均堵塞程度小于等于第二预设阈值。
在一些实施例中,上述片上网络的路由方法中,目标数据包具有绕行标志符,绕行标志符是否有效分别指示了目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
预设条件还包括:绕行标志符为有效;
判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括以下步骤:
判断当前节点与目的节点的直连路径的堵塞程度、路径长度、目标数据包的绕行标志符中是否至少一个满足预设条件。
在一些实施例中,上述片上网络的路由方法中,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,包括以下步骤:
确定直连路径的垂直方向上,以当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;
判断各条垂直路径中是否存在平均堵塞程度小于直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在直连路径上选择一个中间节点;
其中,绕行节点与当前节点的距离小于等于第四预设阈值。
在一些实施例中,上述片上网络的路由方法中,第四预设阈值T4为:
T4= L *Davg/Dmax;
其中,L为直连路径的路径长度,Davg为直连路径的平均阻塞程度,Dmax为每个节点的阻塞程度的最大值。
在一些实施例中,上述片上网络的路由方法中,一路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
在一些实施例中,上述片上网络的路由方法中,路径上除起点外的各个节点的堵塞程度为路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
在一些实施例中,上述片上网络的路由方法中,中间节点与当前节点相邻。
在一些实施例中,上述片上网络的路由方法中,还包括:
在X向距离和Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,并返回获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标的步骤。
在一些实施例中,上述片上网络的路由方法中,当前节点的相邻节点与目的节点的距离小于当前节点与目的节点的距离;
在X向距离和Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,包括以下步骤:
在X向距离和Y向距离均不为0且X向距离不等于Y向距离时,确定距离较大的方向,并从当前节点的相邻节点中,选择当前节点在该方向上的相邻节点为中间节点;或,在X向距离和Y向距离均不为0且当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
在X向距离等于Y向距离且当前节点的各个相邻节点的堵塞程度一致时,从当前节点的相邻节点中,选择X坐标和Y坐标均与目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
在一些实施例中,上述片上网络的路由方法中,当前节点的每个相邻节点的堵塞程度为每个相邻节点与当前节点连接的输入端口的堵塞程度。
在一些实施例中,上述片上网络的路由方法中,片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接;
每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;
上述方法还包括:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,将发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,将接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
在一些实施例中,上述片上网络的路由方法中,每个节点的每个输入端口设置有缓存单元,用于缓存该输入端口接收到且还未发出的数据包;
每个节点的每个输出端口上的计数器的计数值还用于指示与该输出端口连接的节点的对应输入端口上的缓存单元中当前缓存的数据包的数量。
根据本公开的另一方面,提供一种片上网络的路由装置,片上网络包括多个节点,装置包括:
距离计算模块,被配置为获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;
第一判断模块,被配置为在X向距离和Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点,并返回距离计算模块。
在一些实施例中,上述路由装置中,预设条件包括以下至少一种:
直连路径的路径长度小于等于第一预设阈值;
直连路径的平均堵塞程度小于等于第二预设阈值。
在一些实施例中,上述路由装置中,目标数据包具有绕行标志符,绕行标志符是否有效分别指示了目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
预设条件还包括:绕行标志符为有效;
第一判断模块,被配置为判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括:
第一判断模块,被配置为判断当前节点与目的节点的直连路径的堵塞程度、路径长度、目标数据包的绕行标志符中是否至少一个满足预设条件。
在一些实施例中,上述路由装置中,第一判断模块,被配置为在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,包括:
第一判断模块,被配置为确定直连路径的垂直方向上,以当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;并判断各条垂直路径中是否存在平均堵塞程度小于直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在直连路径上选择一个中间节点;
其中,绕行节点与当前节点的距离小于等于第四预设阈值。
在一些实施例中,上述路由装置中,一路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
在一些实施例中,上述路由装置中,路径上除起点外的各个节点的堵塞程度为路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
在一些实施例中,上述路由装置中,还包括:第二判断模块,被配置为在X向距离和Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,并返回距离计算模块。
在一些实施例中,上述路由装置中,当前节点的相邻节点与目的节点的距离小于当前节点与目的节点的距离;
第二判断模块,被配置为在X向距离和Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,包括:
第二判断模块,被配置为在X向距离和Y向距离均不为0且X向距离不等于Y向距离时,确定距离较大的方向,并从当前节点的相邻节点中,选择当前节点在该方向上的相邻节点为中间节点;或,在X向距离和Y向距离均不为0且当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
在X向距离等于Y向距离且当前节点的各个相邻节点的堵塞程度一致时,从当前节点的相邻节点中,选择X坐标和Y坐标均与目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
在一些实施例中,上述路由装置中,当前节点的每个相邻节点的堵塞程度为每个相邻节点与当前节点连接的输入端口的堵塞程度。
在一些实施例中,上述路由装置中,片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接;
上述装置还包括多个计数器,分别设置在每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;
上述计数器被配置为:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
根据本公开的另一方面,提供一种片上系统,包括片上网络和上述任一实施例的路由装置。
根据本公开的另一方面,提供一种电子组件,包括上述任一实施例的片上系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子组件。
附图说明
图1为本公开一个实施例提供的一种片上网络的路由方法的流程示意图;
图2为本公开一个实施例提供的一种片上网络的二维拓扑结构示意图;
图3为本公开一个实施例提供的一种片上网络的6x6的二维Mesh网络拓扑结构示意图;
图4为本公开一个实施例提供的一种路径的平均阻塞程度的计算示意图;
图5为本公开一个实施例提供的一种片上网络的节点的结构示意图;
图6为本公开一个实施例提供的一种片上网络的节点的另一结构示意图;
图7为本公开一个实施例提供的一种片上网络的路由方法的流程示意图;
图8为本公开一个实施例提供的一种片上网络的路由装置的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种片上网络的路由方法、装置、系统及电子设备,旨在获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;在上述X向距离和上述Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点,并返回获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标的步骤。
这种方案中,当上述X向距离和上述Y向距离中的一个距离为0,也即当目的节点与当前节点在同一行或者同一列,在当前节点与目的节点的直连路径的堵塞程度和路径长度不满足预设条件时,考虑采用绕行方式,均衡了整个网络的业务量(负载),降低了阻塞发生的概率,在一定程度上降低了网络延迟。
本公开的一个实施例提供一种片上网络的路由方法,片上网络包括多个节点,如图1所示,该方法包括:
步骤S110:获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;
步骤S120:在上述X向距离和上述Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点,并返回获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标的步骤。
上述路由方法的使用场景为当前节点接收到目标数据包但是该目标数据包中未携带接下来的路由信息,也即未携带下一节点的坐标或标识等信息的场景下。若当前节点接收到目标数据包但是该目标数据包中携带了接下来的路由信息,也即携带了下一节点的坐标或标识等信息时,当前节点可以直接将目标数据包路由至下一节点。
目标数据包的目的节点的坐标是目标数据包在源起点(初始的路由起点)时,就已经携带在目标数据包中的。
其中,如图2所示,片上网络可以为二维拓扑结构,包括二维Mesh或Torus结构。在一些实施例中,片上网络为如图3所示的6x6的二维Mesh网络拓扑结构,其中各个节点的坐标如图中所示。片上网络的每个节点(路由节点)都与处理器核相连。当目标数据包到达目的节点时,目标数据包会传输给目的节点的处理器核。
当前节点与目的节点的X坐标的差值的绝对值,即为X当前节点与目的节点的X向距离,当前节点与目的节点的Y坐标的差值的绝对值,即为X当前节点与目的节点的Y向距离。
当上述X向距离和上述Y向距离均为0时,说明当前节点和目的节点重合,也即,目标数据包到达了目的节点。
其中,绕行方式中,直连路径的垂直路径是指当前节点所在的且与直连路径垂直的路径,可以理解为,当当前节点与目的节点的X向距离为0时,目的节点与当前节点在同一列,直连路径为当前节点所在的Y向路径,直连路径的垂直路径为当前节点所在的X向路径;当当前节点与目的节点的Y向距离为0时,目的节点与当前节点在同一行,直连路径为当前节点所在的X向路径,直连路径的垂直路径为当前节点所在的Y向路径。
在一些实施例中,预设条件包括以下至少一种:
直连路径的路径长度小于等于第一预设阈值;
直连路径的平均堵塞程度小于等于第二预设阈值。
可以理解为,在上述X向距离和上述Y向距离中的一个距离为0时,且直连路径的路径长度小于等于第一预设阈值,和/或,当前节点与目的节点的直连路径的堵塞程度小于等于第二预设阈值时,沿直连路径,将目标数据包从当前节点路由至目的节点;而在直连路径的路径长度大于第一预设阈值,且当前节点与目的节点的直连路径的堵塞程度大于第二预设阈值时,不能通过直连路径直接将目标数据包从当前节点路由至目的节点,而是需要绕行或者暂时将目标数据包路由至直连路径的中间节点上。
在一些实施例中,在判断当前节点与目的节点的直连路径的堵塞程度、路径长度中是否至少一个满足预设条件时,直连路径的路径长度的优先级高于直连路径的阻塞长度。
可以理解为,可以首先判断当前节点与目的节点的直连路径的路径长度是否小于等于第一预设阈值,当直连路径的路径长度小于等于第一预设阈值时,可以直接选择沿直连路径,将目标数据包从当前节点路由至目的节点,当直连路径的路径长度大于第一预设阈值(不满足预设条件)时,再判断直连路径的平均堵塞程度是否小于等于第二预设阈值;当直连路径的平均堵塞程度小于等于第二预设阈值时,也可以直接选择沿直连路径,将目标数据包从当前节点路由至目的节点,当直连路径的平均堵塞程度大于第二预设阈值(不满足预设条件)时,再选择绕行或者暂时将目标数据包路由至直连路径的中间节点上。
其中,直连路径的路径长度与上述X向距离和上述Y向距离中不等于0的一个距离相等。如,当上述X向距离为0时,上述直连路径的路径长度等于上述Y向距离,当上述Y向距离为0时,上述直连路径的路径长度等于上述X向距离。
上述第二预设阈值和第一预设阈值可以根据需求进行设定,此处不做限制。
在一些实施例中,步骤S120中,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,包括以下步骤:
确定直连路径的垂直方向上,以当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;
判断各条垂直路径中是否存在平均堵塞程度小于直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在直连路径上选择一个中间节点;
其中,绕行节点与当前节点的距离小于等于第四预设阈值。
可以理解为,如图3所示的拓扑结构中,若当前节点的坐标为(2,2),目的节点为(5,2),可计算当前节点与目的节点的X向距离为3和Y向距离为0,则目的节点与当前节点在同一行,直连路径为以当前节点(2,2)为起点,以目的节点为终点的X向路径,直连路径有两条垂直路径(Y向路径),分别为以当前节点(2,2)为起点,以节点(2,5)为终点的Y向路径,以及以当前节点(2,2)为起点,以节点(2,0)为终点的Y向路径。
上述是否绕行的判断时机可以理解为,当直连路径的各条垂直路径的平均阻塞程度都大于等于直连路径的平均阻塞程度时,此时绕行的方式,对片上网络的阻塞情况改善不大,所以可以选择在直连路径上选择一个中间节点,然后返回步骤S110,重新判断是否可以直达目的节点或进行绕行。而当直连路径的各条垂直路径中存在平均阻塞程度小于直连路径的平均阻塞程度的垂直路径时,在该阻塞较小的垂直路径上进行绕行,可以进一步实现有效的绕行效果。
在一些实施例中,在直连路径上选择的中间节点与当前节点相邻,也即将目标数据包前进一跳(也即,向着目的节点前进一个节点)。
在一些实施例中,上述第四预设阈值小于等于直连路径的路径长度。可以理解为,虽然选择了绕行,但是绕行距离(绕行节点与当前节点的距离)不能大于直连路径的路径长度,否则绕行距离过大,可能对网络延迟的改善效果不明显。
在一些实施例中,第四预设阈值T4为:
T4= L *Davg/Dmax;
其中,L为直连路径的路径长度,Davg为直连路径的平均阻塞程度,Dmax为每个节点的阻塞程度的最大值。
可以理解为,当直连路径的平均阻塞程度越大时,与该直连路径距离较近的节点的阻塞程度也可能越大,所以当直连路径的平均阻塞程度越大时,第四预设阈值越大,绕行距离(绕行节点与当前节点的距离)也越大,就可以尽量远离较为堵塞的节点,避免在绕行节点之后的路由过程中,与阻塞较大的节点有所交集,进一步实现提升绕行效果,进一步降低网络延迟。
在一些实施例中,T4=⌈ L *Davg/Dmax⌉,⌈⌉为向上取整符号。
其中,上述提及的路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
而路径上除起点外的各个节点的堵塞程度为路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
路径上除起点外的各个节点在该路径方向上的输入端口可以理解为,当目标数据包沿该路径,从起点(当前节点)直接路由至目的节点(或者,绕行节点或中间节点)的过程中,该路径上除起点外的各个节点接收该目标数据包的输入端口。
例如,如图3所示的拓扑结构中,若当前节点的坐标为(2,2),目的节点为(5,2)时,直连路径为以当前节点(2,2)为起点,以目的节点(5,2)为终点的X向路径,直连路径上除起点(当前节点)外的各个节点为节点(3,2)、节点(4,2)、节点(5,2),节点(3,2)在该路径方向上的输入端口为其与节点(2,2)连接的输入端口,也即节点(3,2)接收节点(2,2)发过来的数据包的输入端口,节点(4,2)在该路径方向上的输入端口为其与节点(3,2)连接的输入端口,也即节点(4,2)接收节点(3,2)发过来的数据包的输入端口,节点(5,2)在该路径方向上的输入端口为其与节点(4,2)连接的输入端口,也即节点(5,2)接收节点(4,2)发过来的数据包的输入端口。图3中,每个箭头上的数字表示该箭头指向的输入端口的阻塞程度,如在上述直连路径(以当前节点(2,2)为起点,以目的节点(5,2)为终点)上,节点(3,2)、节点(4,2)、节点(5,2)的输入端口的阻塞程度分别为6、6、7。
其中,一节点的一输入端口的堵塞程度是指该输入端口接收到的且该节点还未向其它节点发出的数据包的数量,也可以理解为是该输入端口上当前缓存的数据包的数量。
示例性的,如图4所示,一路径上有R3、R2、R1和R0四个节点,其中R3为起点,R0为终点,除R3外,R2、R1和R0在该路径方向上的输入端口的堵塞程度分别为6、5、3,则该路径的平均阻塞程度为R2、R1和R0在该路径方向上的输入端口的堵塞程度的总和除以该路径的路径长度,即14除以3,为4.67。在一些实施例中,在计算路径的平均阻塞程度时,可以将计算得到的数值进行向上取整,得到最终的平均阻塞程度。
在一些实施例中,上述路由方法,还包括:
步骤S130:在上述X向距离和上述Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,并返回获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标的步骤。
可以理解为,当上述X向距离和上述Y向距离均不为0时,说明当前节点和目标节点不在同一行,也不在同一列,此时,无法通过直连路径直接到达,需要通过X方向和Y方向的路径到达目的节点。
在一些实施例中,上述步骤S130中,当前节点的相邻节点与目的节点的距离小于当前节点与目的节点的距离。也即,上述步骤S130中的相邻节点是指当前节点在靠近目的节点一侧的相邻节点,上述中间节点的选择过程,也是选择在X方向或Y方向上前进一跳(前进一个节点,也即前进到相邻节点上),也即选择实现X向距离减1或Y向距离减1。
对应的,步骤S130,包括以下步骤:
步骤S132:在上述X向距离和上述Y向距离均不为0且上述X向距离不等于上述Y向距离时,确定距离较大的方向,并从当前节点的相邻节点中,选择当前节点在该方向上的相邻节点为中间节点;或,在上述X向距离和上述Y向距离均不为0且当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
步骤S134:在上述X向距离等于上述Y向距离且当前节点的各个相邻节点的堵塞程度一致时,从当前节点的相邻节点中,选择X坐标和Y坐标均与目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
其中,当上述X向距离不等于上述Y向距离时,确定距离较大的方向,是指,若上述X向距离大于上述Y向距离,则距离较大的方向为X方向,则选择当前节点在X方向上的相邻节点为中间节点,若上述X向距离小于上述Y向距离,则距离较大的方向为Y方向,则选择当前节点在Y方向上的相邻节点为中间节点。
可以理解为,当在上述X向距离和上述Y向距离均不为0时,可以通过距离判断方式来选择中间节点,即选择与目的节点的距离较大的一个方向来前进一跳(前进一个节点),或者通过阻塞程度判断方式来选择中间节点,即选择在下级阻塞程度(下一节点的阻塞程度)较小的一个方向来前进一跳(前进一个节点),这两种选择方式都可以在一定程度上降低网络延迟。
在一些实施例中,为了便于判断当需要在X方向上前进一跳时,是选择在X+(往右)和X-(往左)哪个方向来前进一跳,当需要在Y方向上前进一跳时,是选择在Y+(往上)和Y-(往下)哪个方向来前进一跳,所以,在步骤S110中计算当前节点与目的节点的X向距离和Y向距离时,可以选择计算目的节点与当前节点的坐标偏移(ΔX,ΔY)来实现,ΔX等于目的节点的X坐标减去当前节点的X坐标,ΔY等于目的节点的Y坐标减去当前节点的Y坐标。坐标偏移(ΔX,ΔY)也是目标数据包从当前节点到目的节点的坐标偏移。
当ΔX大于0时,说明目的节点在当前节点的X+方向上,当选择在X方向上前进一跳时,前进方向为X+方向,前进一跳之后,ΔX减1;当ΔX小于0时,说明目的节点在当前节点的X-方向上,当选择在X方向上前进一跳时,前进方向为X-方向,前进一跳之后,ΔX加1;当ΔY大于0时,说明目的节点在当前节点的Y+方向上,当选择在Y方向上前进一跳时,前进方向为Y+方向,前进一跳之后,ΔY减1;当ΔY小于0时,说明目的节点在当前节点的Y-方向上,当选择在Y方向上前进一跳时,前进方向为Y-方向,前进一跳之后,ΔY加1。
在计算坐标偏移的场景下,上述X向距离为ΔX的绝对值,上述Y向距离为ΔY的绝对值。
在一些实施例中,在从相邻节点中选择中间节点时,阻塞程度判断方式的优先级高于距离判断方式。也就是说,可以首先判断当前节点的各个相邻节点的堵塞程度是否完全一致,若是,则继续判断上述X向距离不等于上述Y向距离,否则,优先选择堵塞程度最小的相邻节点为中间节点;当当前节点的各个相邻节点的堵塞程度完全一致,但是上述X向距离不等于上述Y向距离时,选择当前节点在距离较大方向上的相邻节点为中间节点。这种优先选择堵塞程度最小的相邻节点为中间节点的方式,可以进一步降低阻塞发生的概率,进一步降低网络延迟。
在一些实施例中,上述步骤S130中根据堵塞程度选择中间节点的方式中,当前节点的相邻节点与目的节点的距离可以大于当前节点与目的节点的距离。也即,上述步骤S130中的相邻节点可以是当前节点在远离目的节点一侧的相邻节点,这种场景下,可以通过阻塞程度判断方式来选择中间节点,即在当前节点的所有相邻节点(各个方向的相邻节点)中,选择在阻塞程度最小的相邻节点作为中间节点,当阻塞程度最小的相邻节点与目的节点的距离可以大于当前节点与目的节点的距离时,这种路由方式类似于上述的绕行方式,在一定程度上也可以降低网络延迟,但是为了避免目标数据包与目的节点的距离越来越远,达不到想要的绕行效果,选择与目的节点的距离大于当前节点与目的节点的距离的相邻节点为中间节点的次数为有限次,优选为1次。
在一些实施例中,上述步骤S130中,当前节点的每个相邻节点的堵塞程度为每个相邻节点与当前节点连接的输入端口的堵塞程度。也即,每个相邻节点接收当前节点发出的数据包的输入端口的阻塞程度。
在一些实施例中,片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接。
而每个节点中输入端口和输出端口的数量,取决于与该节点连接的其它节点的数量,例如,如图3所示的拓扑结构中,坐标为(0,0)、(5,0)、(0,5)、(5,5)的节点分别连接2个节点,所以这四个节点的输入端口和输出端口的数量均为2,而该拓扑结构中除这四个节点外的其它边界节点,每个边界节点分别连接3个节点,所以这些边界节点的输入端口和输出端口的数量均为3,除此之外,其它的每个节点(中间节点)分别连接4个节点,所以这些中间节点的输入端口和输出端口的数量均为4。
且每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;上述方法还包括:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,将发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,将接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
可以理解为,当需要获取或确认节点A的各个相邻节点的阻塞程度时,不用到各个相邻节点的输入端口上去确认当前缓存(接收到的但是还没有发出去的)的数据包的数量,而是读取节点A的各个输出端口上的计数器的计数值就可以得到对应的各个相邻节点的对应输入端口的阻塞程度。尤其是在需要获取当前节点的相邻节点的阻塞程度的场景下,根据当前节点的对应输出端口上的计数器就可以得到相邻节点对应的输入端口的阻塞程度,大大缩短了数据包路由过程中的信息判断时间,进一步降低了网络延迟。
例如,如图4所示,一路径上有R3、R2、R1和R0四个节点,其中R3为起点,R0为终点,那么路由装置根据节点R3上与R2连接的输出端口上的计数器的计数值,就可以得到R2上对应输入端口上的阻塞程度,根据节点R2上与R1连接的输出端口上的计数器的计数值,就可以得到R1上对应输入端口上的阻塞程度,节点R1上与R0连接的输出端口上的计数器的计数值,就可以得到R0上对应输入端口上的阻塞程度。
如图5所示,当一个节点的输出端口的数量为4时,这4个输出端口分别为位于东、西、南、北四个方向的输出端口E、输出端口W、输出端口S、输出端口N,以分别连接东、西、南、北四个方向的四个相邻节点的对应输入端口。同理,这个节点还具有分别为位于东、西、南、北四个方向的输入端口E'、输入端口W'、输入端口S'、输入端口N'(图中未示出),以分别连接东、西、南、北四个方向的四个相邻节点的对应输出端口。该节点的输出端口E连接在东方向上的相邻节点的输入端口W',该节点的输出端口W连接在西方向上的相邻节点的输入端口E',该节点的输出端口S连接在南方向上的相邻节点的输入端口N',该节点的输出端口N连接在北方向上的相邻节点的输入端口S';该节点的输入端口E'连接在东方向上的相邻节点的输出端口W,该节点的输入端口W'连接在西方向上的相邻节点的输出端口E,该节点的输入端口S'连接在南方向上的相邻节点的输出端口N,该节点的输入端口N'连接在北方向上的相邻节点的输出端口S。
其中,当该节点的输出端口E向该节点在东方向上的相邻节点的输入端口W'发出一个数据包时,将发出该数据包的输出端口E上的计数器的计数值加1,而当该节点的输出端口E接收到该节点在东方向上的相邻节点的输入端口W'反馈的一个数据输出信号时,将接收到该输出信号的输出端口E上的计数器的计数值减1,且其中,该相邻节点的输入端口W'反馈的一个数据输出信号是在该相邻节点将其输入端口W'接收到一个数据包向该相邻节点的相邻节点发出后生成的。
在一些实施例中,如图6所示,每个节点的每个输入端口设置有缓存单元,用于缓存该输入端口接收到且还未发出的数据包;
每个节点的每个输出端口上的计数器的计数值还用于指示与该输出端口连接的节点的对应输入端口上的缓存单元中当前缓存的数据包的数量。
也即一节点的每个输入端口上的缓存单元中当前缓存的数据包的数量等于该输入端口的阻塞程度。如图6中,两个输入端口(输入端口0和输入端口1)的阻塞程度分别为5和3。
对应的,上述提及的节点的阻塞程度的最大值,等于该节点的对应的输入端口的缓存单元的深度,也即对应的输入端口的缓存单元可缓存的数据包的最大数量。
在一些实施例中,该缓存单元为先进先出的缓存单元。
在一些实施例中,如图6所示,每个节点中还设置有交叉开关,交叉开关连接该节点的各个输入端口(如输入端口0和输入端口1)和输出端口(如输出端口0和输出端口1),用于在确定了一数据包要发向哪个方向的相邻节点时,将该数据包所在的输入端口与对应方向上的输出端口接通,以通过该方向上的输出端口,将该数据包发给对应的相邻节点。
在一些实施例中,目标数据包具有绕行标志符,绕行标志符是否有效分别指示了目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
预设条件还包括:绕行标志符为有效;
判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括以下步骤:
判断当前节点与目的节点的直连路径的堵塞程度、路径长度、目标数据包的绕行标志符中是否至少一个满足预设条件。
其中,目标数据包已经过的各个节点中绕行节点的数量,也是目标数据包当前的已绕行次数。
可以理解为,当目标数据包当前的绕行标志符为有效时,说明目标数据包当前的已绕行次数大于等于第三预设阈值,此时,不适合再继续绕行,否则可能会进入死循环。
在一些实施例中,绕行标志符的位宽为1bit,当绕行标志符为1时,绕行标志符为有效,当绕行标志符为0时,绕行标志符为无效。
在一些实施例中,第三预设阈值可以为1,也即目标数据包在路由过程中,已经绕行过1次之后,就不会再绕行了。
在一些实施例中,在判断当前节点与目的节点的直连路径的堵塞程度、路径长度、目标数据包的绕行标志符中是否至少一个满足预设条件时,直连路径的堵塞程度、路径长度、目标数据包的绕行标志符的优先级从高到低的顺序依次为绕行标志符、路径长度、堵塞程度。
可以理解为,可以首先判断目标数据包当前的绕行标志符是否有效,当目标数据包当前的绕向标志符有效时,可以直接选择沿直连路径,将目标数据包从当前节点路由至目的节点,当绕行标志符无效(不满足预设条件)时,再判断当前节点与目的节点的直连路径的路径长度是否小于等于第一预设阈值;当直连路径的路径长度小于等于第一预设阈值时,也可以直接选择沿直连路径,将目标数据包从当前节点路由至目的节点,当直连路径的路径长度大于第一预设阈值(不满足预设条件)时,再判断直连路径的平均堵塞程度是否小于等于第二预设阈值;当直连路径的平均堵塞程度小于等于第二预设阈值时,也可以直接选择沿直连路径,将目标数据包从当前节点路由至目的节点,当直连路径的平均堵塞程度大于第二预设阈值(不满足预设条件)时,再选择绕行或者暂时将目标数据包路由至直连路径的中间节点上。
在一些实施例中,为了进一步实现对目标数据包的绕行标志符的及时更新和实时监测,可以在目标数据包的路由过程中,一旦选择了通过绕行节点进行绕行,都将对应的绕行节点的计数值(也即绕行次数)加1,当该计数值达到第三预设阈值时,将目标数据包的绕行标志符置为有效。
需要说明的是,在通过上述路由方法确定了路由方式(直达、绕行或是到相邻节点)之后,对应的路由路径(直连路径、到绕行节点的路径或到相邻节点的路径)上各个节点的信息时可以确定的,比如下一节点的坐标(或标识信息)、再下一节点的坐标(或标识信息)等信息,这些信息可以加载在目标数据包的信息上,当前节点读取到这些信息之后,就知道要将目标数据包通过哪个输出端口发给对应的下一节点了,若下一节点接收到的数据包中携带了再下一节点的坐标(或标识信息),那么下一节点也知道要将目标数据包通过哪个输出端口发给对应的再下一节点了。
可以理解为,当一节点接收到的数据包没有携带下一节点的坐标(或标识信息)时,此时就需要通过上述路由方法来确定路由方式和路由路径,从而确定下一节点的坐标(或标识信息),以实现数据包的继续路由。上述直达方式中,从当前节点到目的节点的过程中,可以不需要再重新确定路由路径,直连路径上的各个节点在收到目标数据包时,都可以直接发给下一节点。同理,上述绕行方式中,从当前节点到绕行节点的过程中,可以不需要再重新确定路由路径,绕行路径(起点为当前节点,终点为绕行节点)上除绕行节点外的各个节点在收到目标数据包时,也都可以直接发给下一节点,目标数据包路由到绕行节点时,由于目标数据包中没有携带绕行节点后下一节点的信息,所以此时需要返回步骤S110重新确定路由方式和路由路径。而在将目标数据包路由至相邻节点的方式中,如果这个相邻节点不是目的节点,那么相邻节点在接收到目标数据包时,都需要返回步骤S110重新确定路由方式和路由路径。
在一些实施例中,如图7所示,上述路由方法可以理解为,包括以下步骤:
步骤21:获取当前节点和目的节点的坐标,目标数据包(如一笔业务数据)从当前节点到目的节点,X方向和Y方向的坐标偏移为(ΔX,ΔY);
步骤22:判断ΔX、ΔY,如果ΔX为0,ΔY为0,则结束路由,执行步骤31:如果ΔX为0,ΔY不为0,判断绕行标志位,如果绕行标志位不为1,执行步骤23,如果绕行标志位为1(即,为有效),执行步骤29;如果ΔX不为0,ΔY为0,如果绕行标志位不为1,执行步骤24,如果绕行标志位为1,执行步骤30;如果ΔX不为0,ΔY不为0,执行步骤25;
步骤23:判断|ΔY|是否小于等于D(第一预设阈值),当大于D时,执行步骤27,当小于等于D时,执行步骤29;
步骤24:判断|ΔX|是否小于等于D,当大于D时,执行步骤28,当小于等于D时,执行步骤30;
步骤25:判断X方向和Y方向的下级阻塞程度(即,相邻节点与当前节点连接的输入端口的阻塞程度),若X方向的下级阻塞程度(即X方向的相邻节点与当前节点连接的输入端口的阻塞程度)大于Y方向的下级阻塞程度(即Y方向的相邻节点与当前节点连接的输入端口的阻塞程度),则选择在Y方向前进一跳(即前进至Y方向的相邻节点),返回执行步骤22;若X方向的下级阻塞程度小于Y方向的下级阻塞程度,则选择在X方向前进一跳(即前进至X方向的相邻节点),返回执行步骤22;若X方向的下级阻塞程度等于Y方向的下级阻塞程度,执行步骤26;其中,该步骤中提及的相邻节点与目的节点的距离小于当前节点与目的节点的距离;
步骤26:若当前|ΔX|大于|ΔY|,则选择在X方向前进一跳,返回执行步骤22;若当前|ΔX|小于|ΔY|,则选择在Y方向前进一跳,返回执行步骤22;若当前|ΔX|等于|ΔY|,则选择与上一跳相反的方向前进一跳,返回执行步骤22;
步骤27:判断Y方向路径(即直连路径)的平均阻塞程度,当Y方向路径(即直连路径)的平均阻塞程度小于等于B(第二预设阈值)时,执行步骤29,当Y方向路径(即直连路径)的平均阻塞程度大于B时,判断是否存在小于Y方向路径(即直连路径)的平均阻塞程度的X方向路径,若存在小于Y方向路径(即直连路径)的平均阻塞程度的X方向路径,则选择平均阻塞程度较小的X方向绕行距离R(绕行节点与当前节点的距离),绕行标志位设置为1(为有效,对应的第三预设阈值为1),返回执行步骤22,若不存在小于Y方向路径(即直连路径)的平均阻塞程度的X方向路径,则选择在Y方向上前进一跳(即前进至直连路径上与当前节点相邻的节点),并返回执行步骤22;
步骤28:判断X方向路径(即直连路径)的平均阻塞程度,当X方向路径(即直连路径)的平均阻塞程度小于等于B(第二预设阈值)时,执行步骤30,当X方向路径(即直连路径)的平均阻塞程度大于B时,判断是否存在小于X方向路径(即直连路径)的平均阻塞程度的Y方向路径,若存在小于X方向路径(即直连路径)的平均阻塞程度的Y方向路径,则选择平均阻塞程度较小的Y方向绕行距离R(绕行节点与当前节点的距离),绕行标志位设置为1(为有效,即第三预设阈值为1),返回执行步骤22,若不存在小于X方向路径(即直连路径)的平均阻塞程度的Y方向路径,则选择在X方向上前进一跳(即前进至直连路径上与当前节点相邻的节点),并返回执行步骤22;
步骤29:在Y方向移动,直到ΔY为0,执行步骤31;
步骤30:在X方向移动,直到ΔX为0,执行步骤31;
步骤31:结束路由,将数据包传输到与目的节点相连接的本地端口,以通过该本地端口将数据包传输给目的节点的处理器核。
示例性的,如图3所示的6x6的二维Mesh网络拓扑结构中,若当前节点坐标为(2,2),目的节点坐标为(5,2),第一预设阈值2,第二预设阈值为4,每个节点的阻塞程度最大值为8,则对应的路由方法的具体步骤为:
步骤21:获取当前节点坐标为(2,2),目的节点坐标为(5,2),则偏移(ΔX,ΔY)为(3,0);
步骤22:判断ΔX、ΔY,ΔX不等于0,ΔY等于0,绕行标志位不为1,执行步骤24;
步骤24:|ΔX|大于D(第一预设阈值为2),执行步骤28;
步骤28:X方向路径(直连路径)的平均阻塞程度为7((6+6+7)除以3,向上取整,得7),大于B(第二预设阈值为4),两个Y方向路径(以当前节点为起点,分别沿Y+方向和Y-方向的路径)平均阻塞程度分别为2((1+2+2)除以3,向上取整,得2)和5((4+5)除以2,向上取整,得5),选择平均阻塞程度为2的Y方向(Y+方向)绕行R(R=T4=⌈ L *Davg/Dmax⌉=⌈ 3*7/8⌉=3),绕行标志位设置为1,执行步骤22;
步骤22:更新后的当前节点(绕行节点)为(2,5),偏移为(3,-3),ΔX不为0,ΔY不为0,执行步骤25;
步骤25:当前节点(2,5)的X方向的下级阻塞程度1小于Y方向的下级阻塞程度2,选择X方向前进一跳,前进到(3,5),执行步骤22;
步骤22:当前节点为(3,5),偏移为(2,-3),ΔX不为0,ΔY不为0,执行步骤25;
步骤25:当前节点(3,5)的X方向的下级阻塞程度5大于Y方向下级阻塞程度3,选择Y方向前进一跳,前进到(3,4),执行步骤22;
步骤22:当前节点为(3,4),偏移为(2,-2),ΔX不为0,ΔY不为0,执行步骤25;
步骤25:当前节点(3,4)的X方向的下级阻塞程度2小于Y方向下级阻塞程度5,选择X方向前进一跳,前进到(4,4),执行步骤22;
步骤22:当前节点为(4,4),偏移为(1,-2),ΔX不为0,ΔY不为0,执行步骤25;
步骤25:当前节点(4,4)的X方向下级阻塞程度6大于Y方向下级阻塞程度3,选择Y方向前一跳,前进进到(4,3),执行步骤22;
步骤22:当前节点为(4,3),偏移为(1,-1),ΔX不为0,ΔY不为0,执行步骤25;
步骤25:当前节点(4,3)的X方向下级阻塞程度1小于Y方向下级阻塞程度4,选择X方向前进一跳,前进到(5,3),执行步骤22;
步骤22:当前节点为(5,3),偏移为(0,-1),ΔX等于0,ΔY不等于0,绕行标志位为1,执行步骤29;
步骤29:在Y方向移动直到ΔY为0,移动到(5,2),执行步骤31;
步骤31:结束路由,将业务数据传输到与路由节点(5,2)相连接的处理器核。
示例性的,如图3所示的6x6的二维Mesh网络拓扑结构中,若获当前节点坐标为(0,5),目的节点坐标为(3,2),第一预设阈值2,第二预设阈值为4,每个节点的阻塞程度最大值为8,则对应的路由方法的具体步骤为:
步骤21:获取当前节点坐标为(0,5),目的节点坐标为(3,2),则偏移为(3,-3);
步骤22:ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(0,5)的Y方向下级的阻塞程度2小于X方向的下级阻塞程度4,选择Y方向前进一跳,前进到(0,4),此时偏移为(3,-2),执行步骤22;
步骤22:ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(0,4)的X方向的下级阻塞程度1小于Y方向的下级阻塞程度4,选择X方向前进一跳,前进到(1,4),此时偏移为(2,-2),执行步骤22;
步骤22:ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(1,4)的Y方向的下级阻塞程度3小于X方向的下级阻塞程度6,选择Y方向前进一跳,前进到(1,3),此时偏移为(2,-1),执行步骤22;
步骤22:ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(1,3)的X方向的下级阻塞程度4小于Y方向的下级阻塞程度5,选择X方向前进一跳,前进到(2,3),此时偏移为(1,-1),执行步骤22;
步骤22:ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(2,3)的X方向下级阻塞程度2小于Y方向下级阻塞程度3,选择X方向前进一跳,前进到(3,3),此时偏移为(0,-1),执行步骤22;
步骤22:判断ΔX、ΔY,ΔX等于0,ΔY不等于0,绕行标志位为0,执行步骤23;
步骤23:|ΔY|小于D(第一预设阈值为2),执行步骤29;
步骤29:在Y方向移动直到ΔY为0,移动到(3,2),执行步骤31;
步骤31:结束路由,将业务数据传输到与路由节点(3,2)相连接的处理器核;
示例性的,如图3所示的6x6的二维Mesh网络拓扑结构中,若获当前节点坐标为(0,0),目的节点坐标为(4,2),第一预设阈值2,第二预设阈值为4,每个节点的阻塞程度最大值为8,则对应的路由方法的具体步骤为:
步骤21:获取当前节点坐标(0,0),目的节点坐标(4,2),则偏移(ΔX,ΔY)为(4,2);
步骤22:判断ΔX、ΔY,4不等于0,2不等于0,执行步骤25;
步骤25:当前节点(0,0)的X方向下级阻塞程度1等于Y方向下级阻塞程度1,执行步骤26;
步骤26:|ΔX|大于|ΔY|,选择X方向前进一跳,前进到(1,0),此时偏移为(3,2),执行步骤22;
步骤22:判断ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(1,0)的X方向的下级阻塞程度2等于Y方向的下级阻塞程度2,执行步骤26;
步骤26:|ΔX|大于|ΔY|,选择X方向前进一跳,前进到(2,0),此时偏移为(2,2),执行步骤22;
步骤22:判断ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(2,0)的X方向的下级阻塞程度3等于Y方向的下级阻塞程度3,执行步骤26;
步骤26:|ΔX|等于|ΔY|,选择与上一跳相反的方向前进一跳,上一跳为X方向,则选择Y方向前进一跳,前进到(2,1),此时偏移为(2,1),执行步骤22;
步骤22:判断ΔX、ΔY,ΔX不等于0,ΔY不等于0,执行步骤25;
步骤25:当前节点(2,1)的Y方向下级阻塞程度2小于X方向的下级阻塞程度3,选择Y方向前进一跳,前进到(2,2),此时偏移为(2,0),执行步骤22;
步骤22:判断ΔX、ΔY,ΔX不等于0,ΔY等于0,绕行标志位不为1,执行步骤24;
步骤24:|ΔX|小于等于D(第一预设阈值为2),执行步骤30;
步骤30:在X方向移动直到ΔX为0,移动到(4,2),执行步骤31;
步骤31:结束路由,将业务数据传输到与路由节点(4,2)相连接的处理器核。
基于相同的发明构思,如图8所示,本公开实施例还提供一种片上网络的路由装置400,片上网络包括多个节点,装置包括:
距离计算模块410,被配置为获取目标数据包的目的节点和目标数据包当前所在的当前节点的坐标,并计算当前节点与目的节点的X向距离和Y向距离;
第一判断模块420,被配置为在上述X向距离和上述Y向距离中的一个距离为0时,判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿直连路径,将目标数据包从当前节点路由至目的节点,否则,在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,将目标数据包路由至该节点,并返回距离计算模块。
在应用时,若当前节点接收到目标数据包时,目标数据包中除了携带目的节点的坐标之外没有携带下一节点的坐标(或标识信息)等信息时,此时,当前节点会将目标数据包中携带的目的节点的坐标和当前节点的坐标一起发给路由装置400的距离计算模块410。
在一些实施例中,距离计算模块410包括减法器等。
在一些实施例中,第一判断模块420包括比较器、寄存器等,第一判断模块420对路由方式的仲裁可以通过组合逻辑实现。
在一些实施例中,上述路由装置400中,预设条件包括以下至少一种:
直连路径的路径长度小于等于第一预设阈值;
直连路径的平均堵塞程度小于等于第二预设阈值。
在一些实施例中,上述路由装置400中,目标数据包具有绕行标志符,绕行标志符是否有效分别指示了目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
预设条件还包括:绕行标志符为有效;
第一判断模块420,被配置为判断当前节点与目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括:
第一判断模块420,被配置为判断当前节点与目的节点的直连路径的堵塞程度、路径长度、目标数据包的绕行标志符中是否至少一个满足预设条件。
在一些实施例中,上述路由装置400中,第一判断模块420,被配置为在直连路径的垂直路径上选取一绕行节点或在直连路径上选择一个中间节点,包括:
第一判断模块420,被配置为确定直连路径的垂直方向上,以当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;并判断各条垂直路径中是否存在平均堵塞程度小于直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在直连路径上选择一个中间节点;
其中,绕行节点与当前节点的距离小于等于第四预设阈值。
在一些实施例中,上述路由装置400中,一路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
在一些实施例中,上述路由装置400中,路径上除起点外的各个节点的堵塞程度为路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
在一些实施例中,上述路由装置400中,还包括:第二判断模块,被配置为在上述X向距离和上述Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,并返回距离计算模块410。
在一些实施例中,第二判断模块包括比较器、寄存器等,第二判断模块对路由方式的仲裁可以通过组合逻辑实现。
在一些实施例中,上述路由装置400中,当前节点的相邻节点与目的节点的距离小于当前节点与目的节点的距离;
第二判断模块,被配置为在上述X向距离和上述Y向距离均不为0时,从当前节点的相邻节点中,选择一个中间节点,将目标数据包路由至该节点,包括:
第二判断模块,被配置为在上述X向距离和上述Y向距离均不为0且上述X向距离不等于上述Y向距离时,确定距离较大的方向,并从当前节点的相邻节点中,选择当前节点在该方向上的相邻节点为中间节点;或,在上述X向距离和上述Y向距离均不为0且当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
在上述X向距离等于上述Y向距离且当前节点的各个相邻节点的堵塞程度一致时,从当前节点的相邻节点中,选择X坐标和Y坐标均与目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
在一些实施例中,上述路由装置400中,当前节点的每个相邻节点的堵塞程度为每个相邻节点与当前节点连接的输入端口的堵塞程度。
在一些实施例中,上述路由装置400中,片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接;
上述装置还包括多个计数器,分别设置在每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;
计数器被配置为:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
基于同样的发明构思,本公开实施例还提供一种片上系统,包括片上网络和上述任一实施例的路由装置。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子装置包括上述任一实施例中的片上系统。在一些使用场景下,该电子装置的产品形式体现为显卡;在另一些使用场景下,该电子装置的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
Claims (24)
1.一种片上网络的路由方法,其中,所述片上网络包括多个节点,所述方法包括:
获取目标数据包的目的节点和所述目标数据包当前所在的当前节点的坐标,并计算所述当前节点与所述目的节点的X向距离和Y向距离;
在所述X向距离和所述Y向距离中的一个距离为0时,判断所述当前节点与所述目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿所述直连路径,将所述目标数据包从所述当前节点路由至所述目的节点,否则,确定所述直连路径的垂直方向上,以所述当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;并判断所述各条垂直路径中是否存在平均堵塞程度小于所述直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在所述直连路径上选择一个中间节点,将所述目标数据包路由至该节点,并返回获取目标数据包的目的节点和所述目标数据包当前所在的当前节点的坐标的步骤;
其中,所述绕行节点与所述当前节点的距离小于等于第四预设阈值,所述第四预设阈值小于等于所述直连路径的路径长度。
2.根据权利要求1所述的方法,其中,所述预设条件包括以下至少一种:
所述直连路径的路径长度小于等于第一预设阈值;
所述直连路径的平均堵塞程度小于等于第二预设阈值。
3.根据权利要求2所述的方法,其中,所述目标数据包具有绕行标志符,所述绕行标志符是否有效分别指示了所述目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
所述预设条件还包括:所述绕行标志符为有效;
判断所述当前节点与所述目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括以下步骤:
判断所述当前节点与所述目的节点的直连路径的堵塞程度、路径长度、所述目标数据包的绕行标志符中是否至少一个满足预设条件。
4.根据权利要求1所述的方法,其中,所述第四预设阈值T4为:
T4= L *Davg/Dmax;
其中,L为所述直连路径的路径长度,Davg为所述直连路径的平均阻塞程度,Dmax为每个节点的阻塞程度的最大值。
5.根据权利要求1至4中任一项所述的方法,其中,一路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
6.根据权利要求5所述的方法,其中,所述路径上除起点外的各个节点的堵塞程度为所述路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
7.根据权利要求1所述的方法,其中,所述中间节点与所述当前节点相邻。
8.根据权利要求1所述的方法,其中,还包括:
在所述X向距离和所述Y向距离均不为0时,从所述当前节点的相邻节点中,选择一个中间节点,将所述目标数据包路由至该节点,并返回获取目标数据包的目的节点和所述目标数据包当前所在的当前节点的坐标的步骤。
9.根据权利要求8所述的方法,其中,所述当前节点的相邻节点与所述目的节点的距离小于所述当前节点与所述目的节点的距离;
在所述X向距离和所述Y向距离均不为0时,从所述当前节点的相邻节点中,选择一个中间节点,包括以下步骤:
在所述X向距离和所述Y向距离均不为0且所述X向距离不等于所述Y向距离时,确定距离较大的方向,并从所述当前节点的相邻节点中,选择所述当前节点在该方向上的相邻节点为中间节点;或,在所述X向距离和所述Y向距离均不为0且所述当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
在所述X向距离等于所述Y向距离且所述当前节点的各个相邻节点的堵塞程度一致时,从所述当前节点的相邻节点中,选择X坐标和Y坐标均与所述目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
10.根据权利要求9所述的方法,其中,所述当前节点的每个相邻节点的堵塞程度为每个相邻节点与所述当前节点连接的输入端口的堵塞程度。
11.根据权利要求6或10所述的方法,其中,所述片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接;
每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;
所述方法还包括:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,将发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,将接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
12.根据权利要求11所述的方法,其中,每个节点的每个输入端口设置有缓存单元,用于缓存该输入端口接收到且还未发出的数据包;
每个节点的每个输出端口上的计数器的计数值还用于指示与该输出端口连接的节点的对应输入端口上的缓存单元中当前缓存的数据包的数量。
13.一种片上网络的路由装置,其中,所述片上网络包括多个节点,所述装置包括:
距离计算模块,被配置为获取目标数据包的目的节点和所述目标数据包当前所在的当前节点的坐标,并计算所述当前节点与所述目的节点的X向距离和Y向距离;
第一判断模块,被配置为在所述X向距离和所述Y向距离中的一个距离为0时,判断所述当前节点与所述目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,若是,沿所述直连路径,将所述目标数据包从所述当前节点路由至所述目的节点,否则,确定所述直连路径的垂直方向上,以所述当前节点为起点且以对应的边界节点为终点的各条垂直路径的平均堵塞程度;并判断所述各条垂直路径中是否存在平均堵塞程度小于所述直连路径的平均阻塞程度的垂直路径,若是,则在平均堵塞程度最小的垂直路径上选取一绕行节点,否则,在所述直连路径上选择一个中间节点,将所述目标数据包路由至该节点,并返回所述距离计算模块;
其中,所述绕行节点与所述当前节点的距离小于等于第四预设阈值,所述第四预设阈值小于等于所述直连路径的路径长度。
14.根据权利要求13所述的装置,其中,所述预设条件包括以下至少一种:
所述直连路径的路径长度小于等于第一预设阈值;
所述直连路径的平均堵塞程度小于等于第二预设阈值。
15.根据权利要求14所述的装置,其中,所述目标数据包具有绕行标志符,所述绕行标志符是否有效分别指示了所述目标数据包已经过的各个节点中绕行节点的数量是否大于等于第三预设阈值;
所述预设条件还包括:所述绕行标志符为有效;
所述第一判断模块,被配置为判断所述当前节点与所述目的节点的直连路径的堵塞程度和路径长度中是否至少一个满足预设条件,包括:
所述第一判断模块,被配置为判断所述当前节点与所述目的节点的直连路径的堵塞程度、路径长度、所述目标数据包的绕行标志符中是否至少一个满足预设条件。
16.根据权利要求13至15中任一项所述的装置,其中,一路径的平均堵塞程度等于该路径上除起点外的各个节点的堵塞程度的总和除以该路径的路径长度。
17.根据权利要求16所述的装置,其中,所述路径上除起点外的各个节点的堵塞程度为所述路径上除起点外的各个节点在该路径方向上的输入端口的堵塞程度。
18.根据权利要求13所述的装置,其中,还包括:第二判断模块,被配置为在所述X向距离和所述Y向距离均不为0时,从所述当前节点的相邻节点中,选择一个中间节点,将所述目标数据包路由至该节点,并返回所述距离计算模块。
19.根据权利要求18所述的装置,其中,所述当前节点的相邻节点与所述目的节点的距离小于所述当前节点与所述目的节点的距离;
第二判断模块,被配置为在所述X向距离和所述Y向距离均不为0时,从所述当前节点的相邻节点中,选择一个中间节点,将所述目标数据包路由至该节点,包括:
第二判断模块,被配置为在所述X向距离和所述Y向距离均不为0且所述X向距离不等于所述Y向距离时,确定距离较大的方向,并从所述当前节点的相邻节点中,选择所述当前节点在该方向上的相邻节点为中间节点;或,在所述X向距离和所述Y向距离均不为0且所述当前节点的各个相邻节点的堵塞程度不完全一致时,选择堵塞程度最小的相邻节点为中间节点;
在所述X向距离等于所述Y向距离且所述当前节点的各个相邻节点的堵塞程度一致时,从所述当前节点的相邻节点中,选择X坐标和Y坐标均与所述目标数据包经过的上一节点的X坐标和Y坐标不相同的相邻节点为中间节点。
20.根据权利要求19所述的装置,其中,所述当前节点的每个相邻节点的堵塞程度为每个相邻节点与所述当前节点连接的输入端口的堵塞程度。
21.根据权利要求17或20所述的装置,其中,所述片上网络中的每个节点包括至少两个输入端口和至少两个输出端口,每个节点的各个输出端口分别与其相邻的节点的对应输入端口连接;
所述装置还包括多个计数器,分别设置在每个节点的每个输出端口设置有计数器,每个输出端口上的计数器的计数值用于指示与该输出端口连接的节点的对应输入端口的阻塞程度;
所述计数器被配置为:
在一节点通过其对应输出端口向其连接的另一节点的对应输入端口发出一个数据包时,发出该数据包的对应输出端口上的计数器的计数值加1;
在一节点的对应输出端口接收到其连接的另一节点的对应输入端口反馈的一个数据输出信号时,接收到该数据输出信号的对应输出端口上的计数器的计数值减1;
其中,一节点的对应输入端口反馈的一个数据输出信号是该节点将该输入端口接收到一个数据包向另一节点发出后生成的。
22.一种片上系统,其中,包括片上网络和如权利要求13至21中任意一项所述的路由装置。
23.一种电子组件,其中,包括如权利要求22中所述的片上系统。
24.一种电子设备,其中,包括如权利要求23中所述的电子组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310113447.9A CN115955429B (zh) | 2023-02-15 | 2023-02-15 | 片上网络的路由方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310113447.9A CN115955429B (zh) | 2023-02-15 | 2023-02-15 | 片上网络的路由方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115955429A CN115955429A (zh) | 2023-04-11 |
CN115955429B true CN115955429B (zh) | 2023-07-21 |
Family
ID=85891002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310113447.9A Active CN115955429B (zh) | 2023-02-15 | 2023-02-15 | 片上网络的路由方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115955429B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202241A (zh) * | 2014-08-06 | 2014-12-10 | 长春理工大学 | 2D-Mesh拓补结构下的片上网络偏转容错路由算法 |
CN105072032A (zh) * | 2015-09-17 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 一种确定片上网络路由路径的方法及系统 |
CN114448862A (zh) * | 2021-12-30 | 2022-05-06 | 山东云海国创云计算装备产业创新中心有限公司 | 基于3d片上网络的数据传输方法、装置、设备和介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220121951A1 (en) * | 2020-10-21 | 2022-04-21 | International Business Machines Corporation | Conflict-free, stall-free, broadcast network on chip |
-
2023
- 2023-02-15 CN CN202310113447.9A patent/CN115955429B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202241A (zh) * | 2014-08-06 | 2014-12-10 | 长春理工大学 | 2D-Mesh拓补结构下的片上网络偏转容错路由算法 |
CN105072032A (zh) * | 2015-09-17 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 一种确定片上网络路由路径的方法及系统 |
CN114448862A (zh) * | 2021-12-30 | 2022-05-06 | 山东云海国创云计算装备产业创新中心有限公司 | 基于3d片上网络的数据传输方法、装置、设备和介质 |
Non-Patent Citations (2)
Title |
---|
一种基于2D-mesh的片上网络无死锁容错路由算法;周磊;吴宁;李云;;上海交通大学学报(第01期);全文 * |
直线引导的片上网络路由算法;王勇;张剑贤;周端;;计算机辅助设计与图形学学报(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115955429A (zh) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9294354B2 (en) | Using multiple traffic profiles to design a network on chip | |
CN101616083B (zh) | 一种报文转发方法和装置 | |
US20140331027A1 (en) | Asymmetric mesh noc topologies | |
US9825809B2 (en) | Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip | |
US10218581B2 (en) | Generation of network-on-chip layout based on user specified topological constraints | |
CN112084027B (zh) | 片上网络数据传输方法、装置、片上网络、设备及介质 | |
CN112613266A (zh) | 一种片上网络拓扑结构、路由路径确定方法、装置及电子设备 | |
CN115955429B (zh) | 片上网络的路由方法、装置、系统及电子设备 | |
CN111901257B (zh) | 一种交换机、报文转发方法及电子设备 | |
CN116886591B (zh) | 计算机网络系统及路由方法 | |
CN116383114B (zh) | 芯片、芯片互联系统、数据传输方法、电子设备和介质 | |
CN116915708A (zh) | 路由数据包的方法、处理器及可读存储介质 | |
CN115580572A (zh) | 路由方法、路由节点、路由装置和计算机可读存储介质 | |
US20030154324A1 (en) | Hub/router for communication between cores using cartesian coordinates | |
US20180198682A1 (en) | Strategies for NoC Construction Using Machine Learning | |
CN114448862A (zh) | 基于3d片上网络的数据传输方法、装置、设备和介质 | |
CN110825689B (zh) | 电子芯片的实现方法及电子芯片 | |
CN116614433B (zh) | 一种人工智能芯片、数据传输方法及数据传输系统 | |
CN115665041B (zh) | 片上网络结构、数据传输方法、电子设备及存储介质 | |
WO2020087248A1 (zh) | 多核芯片数据总线布线结构和数据发送的方法 | |
CN114363246A (zh) | 众核的片上网络数据传输方法、装置、设备及介质 | |
US10084725B2 (en) | Extracting features from a NoC for machine learning construction | |
Prasad et al. | High-speed virtual logic network on chip router architecture for various topologies | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
Ribot González et al. | IPDeN 2.0: Real-time NoC with selective flit deflection and buffering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |