CN116915708A - 路由数据包的方法、处理器及可读存储介质 - Google Patents
路由数据包的方法、处理器及可读存储介质 Download PDFInfo
- Publication number
- CN116915708A CN116915708A CN202310937221.0A CN202310937221A CN116915708A CN 116915708 A CN116915708 A CN 116915708A CN 202310937221 A CN202310937221 A CN 202310937221A CN 116915708 A CN116915708 A CN 116915708A
- Authority
- CN
- China
- Prior art keywords
- routing
- data packet
- node
- value
- network
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008569 process Effects 0.000 claims abstract description 16
- 230000015654 memory Effects 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 abstract description 35
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 235000008694 Humulus lupulus Nutrition 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 239000000306 component Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种路由数据包的方法、处理器及可读存储介质。路由数据包的方法应用于片上网络,所述方法包括:获取待传输的第一数据包,其中所述第一数据包的源节点和目的节点为所述片上网络的两个网络节点;基于预设路由策略将所述第一数据包从所述源节点路由至所述目的节点,所述预设路由策略用于在所述第一数据包从所述源节点路由至所述目的节点的过程中,控制所述第一数据包多次交替地沿第一路由方向和第二路由方向传输。本申请有助于避免在一段时间内某一方向上的数据包传输量过大,而发生拥塞。
Description
技术领域
本申请涉及信息技术领域,具体涉及一种路由数据包的方法、处理器及可读存储介质。
背景技术
片上网络(network on chip,NOC)路由策略作为NOC的核心组成部分之一,其性能对于整个NOC系统的性能有着至关重要的影响。传统的XY路由策略因为其简单、可靠等优势,在现实中被广泛应用。然而,在基于XY路由策略传输大量数据包时,在X方向或Y方向上的数据包传输量过大,容易发生拥塞而降低NOC的数据传输性能。
发明内容
本申请实施例致力于提供一种路由数据包的方法、处理器及可读存储介质,有助于避免发生拥塞,下文从以下几个方面进行介绍。
第一方面,提供了一种应用于片上网络的路由数据包的方法,包括:获取待传输的第一数据包,其中第一数据包的源节点和目的节点为片上网络的两个网络节点;基于预设路由策略将第一数据包从源节点路由至目的节点,预设路由策略用于在第一数据包从源节点路由至目的节点的过程中,控制第一数据包多次交替地沿第一路由方向和第二路由方向传输。
第二方面,提供了一种处理器,处理器包括:存储器,用于存储程序;多个网络节点,多个网络节点形成片上网络,多个网络节点执行存储器中的程序,使得处理器执行以下操作:获取待传输的第一数据包,其中第一数据包的源节点和目的节点为多个网络节点中的两个网络节点;基于预设路由策略将第一数据包从源节点路由至目的节点,预设路由策略用于在第一数据包从源节点路由至目的节点的过程中,控制第一数据包交替地沿第一路由方向和第二路由方向传输。
第三方面,提供了一种路由数据包的路由装置,该路由装置包括执行如第一方面中方法的各个模块。
第四方面,提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第五方面,提供了一种计算机可读存储介质,计算机可读介质存储有程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
传统的XY路由策略中,第一数据包只能先沿某一方向(例如,X方向或Y方向)传输到某一节点之后,才能转换到另外一个方向进行传输,可能导致在一段时间内某一方向上的数据包传输量过大,而发生拥塞。在本申请实施例中,通过在第一数据包从源节点路由到目的节点的过程中,控制数据包多次交替地沿着第一路由方向和第二路由方向传输,有助于避免在一段时间内某一方向上的数据包传输量过大而导致拥塞。
附图说明
图1是NOC的一种结构示意图。
图2是NOC的一种网络连接结构示意图。
图3是基于XY路由策略的数据包路由示意图。
图4是本申请实施例提供的数据包路由方法示意图。
图5是本申请实施例提供的一种数据包路由示意图。
图6是本申请实施例提供的另一种数据包路由示意图。
图7是本申请实施例提供的又一种数据包路由示意图。
图8是本申请实施例提供的又一种数据包路由示意图。
图9是本申请实施例提供的又一种数据包路由示意图。
图10是本申请实施例提供的又一种数据包路由示意图。
图11是本申请实施例提供的路由数据包方法的流程示意图。
图12是本申请实施例提供的处理器的结构示意图。
图13是本申请实施例提供的路由装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
本申请实施例可应用于NOC上数据进行传输的场景。为了便于理解,先对本申请实施例提及的NOC及NOC路由策略行详细介绍。
随着互联网的发展和应用需求的增加,传统的网络互连技术已经不能满足人们对高带宽、低延迟、低能耗等方面的要求。因此,新一代网络互连技术:NOC应运而生。NOC已经成为高性能计算系统中最重要的互连技术之一。NOC是一种在芯片级别上实现的网络架构,它是一种分布式的、可扩展的、高性能的通信体系结构,用于连接芯片上的各个模块。具有传输效率高、灵活性好、可扩展性强、可靠性高等优点。传统的NOC架构可以包括路由节点、互联网协议(internet protocol,IP)核、网络适配器以及网络链路。
路由节点是一种在集成电路上实现的网络路由节点。它是用于实现片上网络的重要组成部分,可以实现多个处理器、内存和外设之间的高速数据传输。这种路由节点可以采用高度定制的硬件设计,可以实现高速数据包转发和路由选择。它们可以包括多个输入和输出端口,可以同时处理多个数据包。在NOC中,数据包通过网络互连的不同节点进行传输,路由节点的作用就是将这些数据包从一个节点传输到另一个节点。NOC路由节点可以实现以下一种或者多种路由协议,包括:最短路径优先、链路状态路由和距离向量路由等。它们还可以使用多种流量控制和拥塞控制策略,以确保高效的数据传输和网络性能。由于NOC路由节点是在集成电路上实现的,因此它们具有低功耗、小尺寸和高度可靠性的优点。这使得它们非常适合用于嵌入式系统和移动设备等场景,可以满足高速数据传输和低功耗的要求。
IP核是一种在芯片上实现网络功能的硬件模块。它可以实现网络协议栈、路由节点、交换机、防火墙等网络功能,并且可以与其他硬件模块或处理器进行互联和通信。IP核可以大大提高系统的集成度和性能,降低系统功耗和成本,同时提高系统的可靠性和安全性。常见的IP核包括以太网媒体访问控制协议、传输控制协议(transmission controlprotocol,TCP)/互联网协议地址(internet protocol address,IP)协议栈、互联网通信协议第四版(internet protocol version 4,IPV4)/互联网通信协议第六版(internetprotocol version 6,IPV6)路由节点、交换机、防火墙等。这些IP核可以通过现成的IP库直接在芯片设计中使用,也可以根据需求进行定制和开发。
网络适配器是NOC中的一个重要组件。网络适配器充当了芯片上的输入/输出接口,将芯片内的数据传输到芯片外的设备或网络中。网络适配器可以包括以下组件:接口电路、缓存、控制器、物理接口。网络适配器的性能和功能取决于其所使用的协议和硬件资源。一些适配器还可以支持多个协议和多种数据传输速率,以适应不同的应用场景。
网络链路是指在芯片内部连接不同处理单元或模块之间的通信通道。网络链路可以是硬件实现的电路,也可以是软件实现的虚拟通道。在网络链路中可以包括以下几个要素:端口、路由节点、缓存、控制器。网络链路可以是高度可配置和可扩展的,可以根据不同的应用需求进行定制和优化。
NOC不同的单元在各自的层级中。IP核和路由节点位于系统层,网络适配器位于网络适配层,网络链路中的网络节点位于网络层,网络链路中的链路位于链路层。在NOC中,路由节点之间通过局部互连线相连接,每一个路由节点通过网络接口(network interface,NI)与一个本地IP核相连接,源路由节点和目的路由节点之间的数据通讯需要经过多个跳步来实现。因此,NOC是以通讯为中心。例如,如图1所示,NOC100在系统层110可以有两个IP核在传输数据,那么发送数据包的IP核我们可以称为源内核112,而接收数据包的IP核,可以称为目的内核114。在数据传输过程中,系统层110的源内核112由路由节点控制将数据包传送至网络适配层120的网络适配器122。网络适配器122作为输入接口,将数据包传输到网络层130的源节点132上。源节点132处的数据包经过链路层140的链路142传输至中间节点134(可以是经过多次中间节点134传输)。中间节点134通过链路144将数据包传输到目的节点136。目的节点136将数据包通过网络适配器124输入目的内核114,从而完成数据包的传输过程。
有效的NOC网络拓扑结构,能够缩短路由跳数,减少通信量,避免数据拥塞。NOC常见的拓扑结构包括规则拓扑和不规则拓扑两种。规则拓扑可以包括二维网格(twodimensional mesh,2D Mesh)、二维环面(two dimensional torus,2D Torus)、三维网格(three dimensional mesh,3D Mesh)、八边形、超立方、蜂窝式、树形和蝶形等拓扑结构。
例如,在2D Mesh的网络结构中,路由节点按二维网格的方式排列,每个节点上再连接网络适配器和IP核。在N×N的2D Mesh中,每个节点与相邻的节点连接(边界节点除外)。该结构具有结构简单,易于实现,可扩展性好等优点,在实际中较为广泛使用。图2所示为一个4×4的2D Mesh结构的NOC网络200。其中R210为路由节点,NI220为网络节点,IP230为IP核。由此,将IP核之间的通信转换为路由节点之间的通信。数据包在路由节点R之间的传输路径可以称为路由,可以基于NOC路由策略来选择不同的传输路径。
NOC路由策略用于确定数据传输所经过的链路(也就是数据路由)。路由策略可以包括静态路由策略和动态路由策略两种。动态路由策略又被称为自适应路由策略,例如Odd-Even路由策略。可以根据网络流量和链路负载的变化调整路径,动态选择路径进行通信,避免了高数据传输密度下的网络拥塞。但这种策略结构复杂,不便于实现,同时在低拥塞时电路开销大,而且会出现死锁(循环等待)问题。而静态路由策略,例如,XY路由策略、West-First策略等,对于两节点之间的路径是固定的,结构简单,便于硬件实现,也便于保持传输数据的顺序,所以在NOC系统中被广泛的使用。
以XY路由策略为例,该路由策略是一种确定性路由策略,只要给定源节点与目的节点,就能确定唯一的路由路径。它将NOC中所有路由节点都用一个二维坐标(X,Y)表示,其中,X表示对应的路由节点在X方向上的坐标,Y表示对应的路由节点在Y方向上的坐标。并且,沿着X方向的正方向路由节点对应的X坐标递增,沿着Y方向的正方向路由节点对应的Y坐标递增。
基于XY路由策略,数据路由分为两个阶段。第一个阶段是沿X方向传输的阶段,在该阶段可以将目的节点对应的X坐标作为目标,将当前节点对应的X坐标与目标节点对应的X坐标进行比较,如果当前节点对应的X坐标小于目标节点对应的X坐标,则沿着X方向的正方向传输数据包。第二个阶段是沿Y方向传输的阶段,将目的节点对应的Y坐标作为目标,将当前节点对应的Y坐标与目标节点对应的Y坐标进行比较,如果当前节点对应的Y坐标小于目标节点对应的Y坐标,则沿着Y方向的正方向传输数据包,直到数据包传输到目的节点。
为了便于理解,下文结合图3介绍传统的XY路由策略。如图3所示,NOC300为4×4的2D Mesh结构,其中路由节点可以通过坐标(X,Y)表示,X表示对应的路由节点在X方向上的坐标,Y表示对应的路由节点在Y方向上的坐标。并且,沿着X方向的正方向路由节点对应的X坐标递增,沿着Y方向的正方向路由节点对应的Y坐标递增。待传输的第一数据包的源节点的坐标为(1,1),目的节点的坐标为(4,4)。那么,按照XY路由策略,该第一数据包从源节点(1,1)到达目的节点(4,4)分为两个阶段,即第一个阶段是沿X方向传输的阶段:(1,1)→(2,1)→(3,1)→(4,1)。第二个阶段是沿Y方向传输的阶段:(4,2)→(4,3)→(4,4)。完整的路由路径可以表示为:(1,1)→(2,1)→(3,1)→(4,1)→(4,2)→(4,3)→(4,4)。
路由策略作为NOC的核心组成部分之一,其性能对于整个NOC系统的性能有着至关重要的影响。传统的XY路由策略因为具有简单、可靠的优势,所以在现实中被广泛应用。然而在传统的XY路由策略中,第一数据包只能先沿某一方向(例如,X方向或Y方向)传输到某一节点之后,才能转换到另外一个方向进行传输,可能导致在一段时间内某一方向上的数据包传输量过大,而发生拥塞。在本申请实施例中,通过在第一数据包从源节点路由到目的节点的过程中,控制数据包多次交替地沿着第一路由方向和第二路由方向传输,有助于避免在一段时间内某一方向上的数据包传输量过大,而发生拥塞。由于本申请实施例提供的数据包路由方法不需要进行动态的路由选择,所以也可以称为静态平衡路由。
为了便于理解,下文结合图4介绍本申请实施例的路由数据包的方法。图4是本申请实施例中路由数据包的方法的示意性流程图。图4所示的方法包括步骤S410和步骤S420。应理解,图4所示的方法可以应用于前文介绍的片上网络。在一些实现方式中,图4所示的方法可以由基于片上网络的处理器执行。
在步骤S410中,获取待传输的第一数据包。
其中,第一数据包的源节点和目的节点是片上网络的两个网络节点,例如是前文介绍的网络层中的两个节点。
在一些实施例中,网络节点的地址信息可以是唯一的,以便于数据的准确传输。例如,可以使用网络地址和节点地址的组合。网络地址用于标识节点所在的网络,由网络管理员配置,而节点地址则是节点在该网络中的唯一标识,可以由节点自身生成或者由网络控制器分配。节点的网络地址和节点地址可以用来确定节点之间的路由路径。
在步骤S420中,通过预设路由策略将第一数据包从源节点路由到目的节点。
上述预设路由策略用于在第一数据包从所述源节点路由至目的节点的过程中,控制第一数据包多次交替地沿第一路由方向和第二路由方向传输。其中,多次交替可以包括随着第一数据包每传输一跳便变更一次路由方向,例如,第一数据包在第一路由方向上传输至下一跳路由节点之后,便切换到第二路由方向进行传输。之后,第一数据包在第二路由方向上传输至下一跳路由节点之后,再切换到第一路由方向进行传输,以此类推,第一数据包便可以在第一路由方向和第二路由方向之间交替传输。
例如,如图5和图6所示,以NOC300为例。第一路由方向可以是X方向,第二路由方向可以是Y方向,第一数据包每传输一跳便变更一次路由方向。假设第一数据包的源节点地址为(1,1),目的节点地址为(4,4)。如果第一数据包从源节点(1,1)的第一跳的路由方向是X方向。那么需要经过图5所示的路径:(1,1)→(2,1)→(2,2)→(3,2)→(3,3)→(4,3)→(4,4)。如果第一数据包从源节点(1,1)的第一跳的路由方向是Y方向。那么需要经过图6所示的路径:(1,1)→(1,2)→(2,2)→
(2,3)→(3,3)→(3,4)→(4,4)。
当然,在本申请实施例中,上述多次交替还可以是第一数据包在第一方向上每传输M跳便变更一次路由方向,第一数据包在第二方向上每传输N跳便变更一次路由方向。其中,M和N为正整数。也即是说,第一数据包在第一路由方向上传输M跳路由节点之后,便切换到第二路由方向进行传输。之后,第一数据包在第二路由方向上传输N跳路由节点之后,再切换到第一路由方向进行传输,以此类推,第一数据包便可以在第一路由方向和第二路由方向之间交替传输。M和N的取值可以不同,以使第一数据包的路由更为灵活。当然,N和M的取值也可以相同,以使本申请实施例实现更为简单。
例如,如图7和图8所示,以NOC300为例。第一路由方向可以是X方向,第二路由方向可以是Y方向,M为第一数据包传输一跳,N为第一数据包传输两跳。假设第一数据包的源节点坐标为(1,1),目的节点坐标为(3,3)。如果第一数据包从源节点(1,1)的第一跳的路由方向是X方向。那么需要经过图7所示路径:(1,1)→(2,1)→(2,2)→(2,3)→(3,3)。如果第一数据包从源节点(1,1)的第一跳的路由方向是Y轴方向。那么需要经过图8所示路径:(1,1)→(1,2)→(2,2)→(3,2)→(3,3)。
需要说明的是,上文以第一路由方向为X方向,第二路由方向为Y方向为例,进行介绍,在本申请实施例中,上述第一路由方向为Y方向,第二路由方向为X方向。也即是说,第一路由方向和第二路由方向可以是XY路由策略中的两个不同的路由方向。
另外,在本申请实施例中,对第一数据包传输跳数的维护方式不作限定,例如,可以设置一个计数器用于记录第一数据包的传输跳数。也即是说,第一数据包每传输一跳则计数器可以加1。
在一些实现方式中,预设路由策略用于控制第一数据包按照如下方式路由:如果第一数据包的当前路由节点与目的节点在第一路由方向上存在距离,并且第一数据包的当前路由节点与目的节点在第二路由方向上存在距离,则控制第一数据包每经过一个路由节点,转换一次路由方向。
上述当前路由节点与目的节点在第一路由方向上存在距离可以理解为当前路由节点在第一路由方向上的坐标与目的节点在第一路由方向上的坐标不同。在一些实现方式中,当前路由节点在第一路由方向上的坐标可以小于目的节点在第一路由方向上的坐标。当然,在本申请实施例中,当前路由节点在第一路由方向上的坐标可以大于目的节点在第一路由方向上的坐标。
例如,当前路由节点与目的节点在第一路由方向上的距离S。如果S为正数,那么表示,第一数据包由当前路由节点沿着第一路由方向的正方向传输S跳,第一数据包才能到达目的节点在第一路由方向的坐标。如果S为负数,那么表示第一数据包由当前路由节点沿着第一路由方向的负方向传输S跳,第一数据包才能到达目的节点在第一路由方向的坐标。
上述当前路由节点与目的节点在第二路由方向上存在距离可以理解为当前路由节点在第二路由方向上的坐标与目的节点在第二路由方向上的坐标不同。在一些实现方式中,当前路由节点在第二路由方向上的坐标可以小于目的节点在第二路由方向上的坐标。当然,在本申请实施例中,当前路由节点在第二路由方向上的坐标可以大于目的节点在第二路由方向上的坐标。
在另一些实施例中,如果第一数据包的当前路由节点与目的节点在第一路由方向上不存在距离,则可以控制第一数据包沿第二路由方向传输,不再转换路由方向。或者,第一数据包的当前路由节点与目的节点在第二路由方向上不存在距离,则可以控制第一数据包沿第一路由方向传输,不再转换路由方向。
假设第一数据包的当前路由节点与目的节点在第一路由方向上的距离为S,在第二路由方向上的距离为0。那么可以控制第一数据包沿第一路由方向传输S跳路由节点。这样可以避免第一数据包在一个路由方向上(第一路由方向或第二路由方向)到达目的节点所在坐标后继续在该路由方向传输,从而缩短传输的路径。
举个例子,如图9和图10所示,以NOC300为例,第一路由方向可以是X方向,第二路由方向可以是Y方向。第一数据包从源节点的第一跳的路由方向是X方向,第一数据包每传输一跳便变更一次路由方向。假设第一数据包的源节点坐标为(1,1),目的节点坐标为(3,4)。那么在第一数据包传输到路由节点(3,2)之前,第一数据包每经过一个节点,变换一次路由方向。在到达路由节点(3,2)后,第一数据包的当前路由节点(3,2)与目的节点(3,4)在X方向距离为0,那么第一数据包在下一跳后不再沿着X传输。因此需要经过图9所示路径:(1,1)→(2,1)→(2,2)→(3,2)→(3,3)→(3,4)。假设第一数据包的源节点坐标为(1,2),目的节点坐标为(4,3)。那么在第一数据包传输到路由节点(2,3)之前,第一数据包每经过一个节点,变换一次路由方向。在到达路由节点(2,3)后,第一数据包的当前路由节点(2,3)与目的节点(4,3)在Y方向距离为0,那么第一数据包在下一跳后不再沿着Y传输。因此需要经过图10所示路径:(1,2)→(2,2)→(2,3)→(3,3)→(4,3)。
应理解,上述路由节点的坐标只是为了便于方案的理解,而非将本申请的实施例的应用场景局限于此。
为了便于实现第一数据包在第一路由方向和第二路由方向之间交替传输。在一些实现方式中,第一数据包还可以包括指示位。在第一数据包从源节点路由到目的节点的过程中,指示位的取值可以随着第一数据包当前所在路由节点的坐标改变而改变,从而可以根据预设路由策略以及指示位的取值确定第一数据包的路由方向。例如,指示位在当前路由节点的取值表示第一数据包的下一跳的路由方向为第一路由方向,则将第一数据包传输到当前路由节点在第一路由方向的下一节点。又例如,指示位在当前路由节点的取值表示第一数据包的下一跳的路由方向为第二路由方向,则将第一数据包传输到当前路由节点在第二路由方向的下一节点。
指示位的取值如何确定第一数据包的路由方向在本申请不作具体限制。举个例子,指示位的取值是可以两个,可以称为第一取值和第二取值。如果指示位的取值为第一取值,则第一数据包从当前路由节点传输到下一路由节点的路由方向为第一路由方向。如果指示位的取值为第二取值,则第一数据包从当前路由节点传输到下一路由节点的路由方向为第二路由方向,其中,第一取值和第二取值不同。
进一步地,第一取值和第二取值之间的变化可以通过翻转的方式实现,相应地,指示位可以是翻转位。翻转位是一种策略操作,可以将第一取值翻转为第二取值,例如,可以采用一比特进行翻转,也就是二进制数中的一个位,可以从0变成1,或者从1变成0。如果翻转位为0,可以代表下一跳的路由方向是第一路由方向。如果翻转位为1,可以代表下一跳的路由方向是第二路由方向。
例如,当第一数据包的当前路由节点是(1,1)时,如果翻转位为0,那么下一跳的路由方向是X方向,下一路由节点为(2,1)。如果翻转位为1,那么下一跳的路由方向是Y方向,那么下一路由节点为(1,2)。
在一些实现方式中,第一数据包所在的源节点传输一个与第一数据包不同的数据包(可以称为第二数据包)时,可以设置第二数据包中的指示位的取值与第一数据包中的指示位的取值不同,从而使得第二数据包的路由路径与第一数据包的路由路径不同,有助于避免第一数据包的路由方向上发生拥塞。当然,在本申请实施例中,第二数据包中的指示位的取值可以与第一数据包中的指示位的取值相同,这样实现起来更加简单。
进一步地,还可以设置预设条件控制数据包内的指示位的取值,以灵活控制数据包的路由方式。在一些实现方式中,预设条件可以基于路由流量阈值Q设置。例如,在第一数据包的路由方向上的传输流量小于或等于Q时,第二数据包内的指示位的取值与第一数据包内的指示位的取值相同,也即是说,第一数据包的路由路径和第二数据包的路由路径相同。又例如,在第一数据包的路由方向上的传输流量大于Q时,第二数据包内的指示位的取值与第一数据包内的指示位的取值不同,如此,第一数据包的路由路径和第二数据包的路由路径不同。
在另一些实现方式中,预设条件可以基于预设时间段设置。例如,在预设时间段内,第二数据包内的指示位的取值与第一数据包内的指示位的取值相同,也即是说,第一数据包的路由路径和第二数据包的的路由路径相同。又例如,在预设时间段之外(或者说超出预设时间段),第二数据包内的指示位的取值与第一数据包内的指示位的取值不同,如此,第一数据包的路由路径和第二数据包的路由路径不同。
当然,在本申请实施例中,对第二数据包中的指示位的取值与第一数据包中的指示位的取值的设置方式不作限定,例如,第二数据包中的指示位的取值与第一数据包中的指示位的取值可以是随机的。
为了便于理解,下文以图7所示的数据包路由方案为例,结合图11介绍本申请实施例提供的路由数据包的方法。图11是本申请实施例提供的路由数据包的方法的流程示意图。图11所示的方法可以由处理器执行。图11所示的方法包括步骤S1102至S1112。
参见图7,NOC300为4×4的2D Mesh结构。假设源节点坐标为(1,1),目的节点坐标为(4,4),其余节点坐标如图7所示,在此不再详细叙述。
在步骤S1102,将翻转位设置为0或1。
例如,将翻转位设置为0,可以表示第一数据包下一跳的路由方向是向X方向传输一个节点的距离。将翻转位设置为1,可以表示第一数据包下一跳的路由方向是向Y方向前进一个节点的距离。
在步骤S1104,判断当前路由节点到目的节点的距离。
当前路由节点到目的节点X轴方向的距离可以称为dx,当前路由节点到目的节点Y轴方向的距离可以称为dy。例如,如图7所示,第一数据包的源节点坐标为(1,1),目的节点坐标为(4,4),那么dx=3,dy=3。
在步骤S1106,翻转位翻转。
例如,初始的翻转位设置为1,那么翻转位翻转后的取值为0。
在步骤S1108,根据翻转位的取值判断下一步的方向。
例如,参照上一步骤,将翻转位翻转后的取值为0,那么第一数据包的下一跳路由方向是向X方向传输一个路由节点。
在步骤S1110,根据决策结果更新当前的路由节点坐标。
例如,第一数据包由源节点(1,1)向X方向传输一个路由节点,则当前节点的X坐标加一。那么传输后的路由节点为(2,1)。
在步骤S1112中,判断是否到达目的节点。
例如,当前的路由节点坐标为(2,1),那么判断出第一数据包还未到达目的节点(4,4),那么重新回到步骤S1104,继续步骤S1104-S1112的操作,直到第一数据包传输到目的节点(4,4),则路由结束。
上文结合图1至图11,详细描述了本申请的方法实施例,下面结合图12和图13,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图12是本申请实施例提供的处理器的结构示意图。图12所示的处理器1200可以包括:存储器1210、网络节点1220、输入/输出接口1230。其中,存储器1210、处理器1220、输入/输出接口1230通过内部连接通路相连,该存储器1210用于存储指令,该处理器1220用于执行该存储器1220存储的指令,以控制输入/输出接口1230接收输入的数据和信息,输出操作结果等数据。多个网络节点1220形成片的上网络可以执行存储器1210中的程序。
处理器1200可以执行以下操作:获取待传输的第一数据包,其中第一数据包的源节点和目的节点为多个网络节点1220中的两个网络节点1220;基于预设路由策略将第一数据包从源节点路由至目的节点,预设路由策略用于在第一数据包从源节点路由至目的节点的过程中,控制第一数据包交替地沿第一路由方向和第二路由方向传输。
可选地,处理器1200基于预设路由策略控制第一数据包按照如下方式路由:如果第一数据包的当前路由节点与所述目的节点在第一路由方向上存在距离,且第一数据包的当前路由节点与目的节点在第二路由方向上存在距离,则控制第一数据包每经过一个路由节点,转换一次路由方向。
可选地,第一数据包包括指示位,指示位的取值随着第一数据包在片上网络的位置的改变而改变,处理器1200还用于执行以下操作:在当前路由节点,基于预设路由策略以及指示位的取值确定第一数据包的路由方向;如果第一数据包的路由方向为第一路由方向,则将第一数据包路由至当前路由节点在第一路由方向的下一节点;如果第一数据包的路由方向为第二路由方向,则将第一数据包路由至当前路由节点在第二路由方向的下一节点。
可选地,第一数据包每经过片上网络的一个路由节点,指示位的取值在第一取值和第二取值之间交替更新一次;如果指示位的取值为第一取值,则第一数据包从当前路由节点到下一路由节点的路由方向为第一路由方向;如果指示位的取值为第二取值,则第一数据包从当前路由节点到下一路由节点的路由方向为第二路由方向。
可选地,处理器1200还用于执行以下操作:获取待传输的第二数据包,第二数据包与第一数据包具有相同的源节点,且第二数据包中的指示位的取值与第一数据包中的指示位的取值不同;基于预设路由策略以及第二数据包中的指示位,将第二数据包路由至第二数据包的目的节点。
应理解,在本申请实施例中,该处理器1200可以采用通用的中央处理器(centralprocessing unit,CPU),微处理器,应用专用集成电路(application specificintegrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器1210可以包括只读存储器和随机存取存储器,并向处理器1200提供指令和数据。处理器1200的一部分还可以包括非易失性随机存取存储器。例如,处理器1200还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器1200中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的用于请求上行传输资源的方法可以直接体现为硬件处理器执行完成,或者用处理器1200中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1210,处理器1200读取存储器1210中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
图13是本申请实施例提供的路由装置示意图。本申请实施例提供了一种路由数据包的路由装置1300,路由装置1300包括:获取模块1310,用于获取待传输的第一数据包,其中第一数据包的源节点和目的节点为片上网络的两个网络节点;处理模块1320,用于基于预设路由策略将第一数据包从源节点路由至目的节点,其中预设路由策略用于在第一数据包从源节点路由至目的节点的过程中,控制第一数据包多次交替地沿第一路由方向和第二路由方向传输。
在一些实现方式中,所述预设路由策略用于控制所述第一数据包按照如下方式路由:如果所述第一数据包的当前路由节点与所述目的节点在所述第一路由方向上存在距离,且所述第一数据包的当前路由节点与所述目的节点在所述第二路由方向上存在距离,则控制所述第一数据包每经过一个路由节点,转换一次路由方向。
在一些实现方式中,所述第一数据包包括指示位,所述指示位的取值随着所述第一数据包在所述片上网络的位置的改变而改变,所述处理模块还用于:在当前路由节点,基于所述预设路由策略以及所述指示位的取值确定所述第一数据包的路由方向;如果所述第一数据包的路由方向为所述第一路由方向,则将所述第一数据包路由至所述当前路由节点在所述第一路由方向的下一节点;如果所述第一数据包的路由方向为所述第二路由方向,则将所述第一数据包路由至所述当前路由节点在所述第二路由方向的下一节点。
在一些实现方式中,所述第一数据包每经过所述片上网络的一个路由节点,所述指示位的取值在第一取值和第二取值之间交替更新一次;如果所述指示位的取值为所述第一取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第一路由方向;如果所述指示位的取值为所述第二取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第二路由方向。
在一些实现方式中,所述获取模块还用于:获取待传输的第二数据包,所述第二数据包与所述第一数据包具有相同的源节点,且所述第二数据包中的所述指示位的取值与所述第一数据包中的所述指示位的取值不同;所述处理模块,还用于基于所述预设路由策略以及所述第二数据包中的所述指示位,将所述第二数据包路由至所述第二数据包的目的节点。
本申请实施例提供了一种计算机产品,计算机产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机计算上述方法实施例中的方法。
本申请实施例提供了一种计算机可读存储介质,计算机可读介质存储有程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述方法实施例中的方法。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种路由数据包的方法,其特征在于,所述方法应用于片上网络,所述方法包括:
获取待传输的第一数据包,其中所述第一数据包的源节点和目的节点为所述片上网络的两个网络节点;
基于预设路由策略将所述第一数据包从所述源节点路由至所述目的节点,所述预设路由策略用于在所述第一数据包从所述源节点路由至所述目的节点的过程中,控制所述第一数据包多次交替地沿第一路由方向和第二路由方向传输。
2.根据权利要求1所述的方法,其特征在于,所述预设路由策略用于控制所述第一数据包按照如下方式路由:
如果所述第一数据包的当前路由节点与所述目的节点在所述第一路由方向上存在距离,且所述第一数据包的当前路由节点与所述目的节点在所述第二路由方向上存在距离,则控制所述第一数据包每经过一个路由节点,转换一次路由方向。
3.根据权利要求1或2所述的方法,其特征在于,所述第一数据包包括指示位,所述指示位的取值随着所述第一数据包在所述片上网络的位置的改变而改变,
所述基于预设路由策略将所述第一数据包从所述源节点路由至所述目的节点,包括:
在当前路由节点,基于所述预设路由策略以及所述指示位的取值确定所述第一数据包的路由方向;
如果所述第一数据包的路由方向为所述第一路由方向,则将所述第一数据包路由至所述当前路由节点在所述第一路由方向的下一节点;
如果所述第一数据包的路由方向为所述第二路由方向,则将所述第一数据包路由至所述当前路由节点在所述第二路由方向的下一节点。
4.根据权利要求3所述的方法,其特征在于,所述第一数据包每经过所述片上网络的一个路由节点,所述指示位的取值在第一取值和第二取值之间交替更新一次;
如果所述指示位的取值为所述第一取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第一路由方向;
如果所述指示位的取值为所述第二取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第二路由方向。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取待传输的第二数据包,所述第二数据包与所述第一数据包具有相同的源节点,且所述第二数据包中的所述指示位的取值与所述第一数据包中的所述指示位的取值不同;
基于所述预设路由策略以及所述第二数据包中的所述指示位,将所述第二数据包路由至所述第二数据包的目的节点。
6.一种处理器,其特征在于,所述处理器包括:
存储器,用于存储程序;
多个网络节点,所述多个网络节点形成片上网络,所述多个网络节点执行所述存储器中的程序,使得所述处理器执行以下操作:
获取待传输的第一数据包,其中所述第一数据包的源节点和目的节点为所述多个网络节点中的两个网络节点;
基于预设路由策略将所述第一数据包从所述源节点路由至所述目的节点,所述预设路由策略用于在所述第一数据包从所述源节点路由至所述目的节点的过程中,控制所述第一数据包多次交替地沿第一路由方向和第二路由方向传输。
7.根据权利要求6所述的处理器,其特征在于,所述预设路由策略用于控制所述第一数据包按照如下方式路由:
如果所述第一数据包的当前路由节点与所述目的节点在所述第一路由方向上存在距离,且所述第一数据包的当前路由节点与所述目的节点在所述第二路由方向上存在距离,则控制所述第一数据包每经过一个路由节点,转换一次路由方向。
8.根据权利要求6或7所述的处理器,其特征在于,所述第一数据包包括指示位,所述指示位的取值随着所述第一数据包在所述片上网络的位置的改变而改变,
所述处理器还用于执行以下操作:
在当前路由节点,基于所述预设路由策略以及所述指示位的取值确定所述第一数据包的路由方向;
如果所述第一数据包的路由方向为所述第一路由方向,则将所述第一数据包路由至所述当前路由节点在所述第一路由方向的下一节点;
如果所述第一数据包的路由方向为所述第二路由方向,则将所述第一数据包路由至所述当前路由节点在所述第二路由方向的下一节点。
9.根据权利要求8所述的处理器,其特征在于,所述第一数据包每经过所述片上网络的一个路由节点,所述指示位的取值在第一取值和第二取值之间交替更新一次;
如果所述指示位的取值为所述第一取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第一路由方向;
如果所述指示位的取值为所述第二取值,则所述第一数据包从当前路由节点到下一路由节点的路由方向为所述第二路由方向。
10.根据权利要求8所述的处理器,其特征在于,所述处理器还用于执行以下操作:
获取待传输的第二数据包,所述第二数据包与所述第一数据包具有相同的源节点,且所述第二数据包中的所述指示位的取值与所述第一数据包中的所述指示位的取值不同;
基于所述预设路由策略以及所述第二数据包中的所述指示位,将所述第二数据包路由至所述第二数据包的目的节点。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937221.0A CN116915708A (zh) | 2023-07-27 | 2023-07-27 | 路由数据包的方法、处理器及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937221.0A CN116915708A (zh) | 2023-07-27 | 2023-07-27 | 路由数据包的方法、处理器及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116915708A true CN116915708A (zh) | 2023-10-20 |
Family
ID=88352858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310937221.0A Pending CN116915708A (zh) | 2023-07-27 | 2023-07-27 | 路由数据包的方法、处理器及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116915708A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117395746A (zh) * | 2023-12-12 | 2024-01-12 | 苏州元脑智能科技有限公司 | 双路径无线网格网络的路由方法、装置、设备和存储介质 |
CN118264605A (zh) * | 2024-05-30 | 2024-06-28 | 山东云海国创云计算装备产业创新中心有限公司 | 路由方向的确定方法和装置、存储介质及电子设备 |
CN118474018A (zh) * | 2024-07-11 | 2024-08-09 | 山东云海国创云计算装备产业创新中心有限公司 | 基于Torus网络结构的路由方法、Torus网络结构、基于Torus网络结构的路由装置、计算机设备和计算机可读存储介质 |
-
2023
- 2023-07-27 CN CN202310937221.0A patent/CN116915708A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117395746A (zh) * | 2023-12-12 | 2024-01-12 | 苏州元脑智能科技有限公司 | 双路径无线网格网络的路由方法、装置、设备和存储介质 |
CN117395746B (zh) * | 2023-12-12 | 2024-03-29 | 苏州元脑智能科技有限公司 | 双路径无线网格网络的路由方法、装置、设备和存储介质 |
CN118264605A (zh) * | 2024-05-30 | 2024-06-28 | 山东云海国创云计算装备产业创新中心有限公司 | 路由方向的确定方法和装置、存储介质及电子设备 |
CN118264605B (zh) * | 2024-05-30 | 2024-08-30 | 山东云海国创云计算装备产业创新中心有限公司 | 路由方向的确定方法和装置、存储介质及电子设备 |
CN118474018A (zh) * | 2024-07-11 | 2024-08-09 | 山东云海国创云计算装备产业创新中心有限公司 | 基于Torus网络结构的路由方法、Torus网络结构、基于Torus网络结构的路由装置、计算机设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640362B2 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
JP6093867B2 (ja) | インターコネクトにおける不均一なチャネル容量 | |
JP6267367B2 (ja) | 分散型直接相互接続ネットワークにおけるパケットルーティング方法 | |
US9742630B2 (en) | Configurable router for a network on chip (NoC) | |
JP6060316B2 (ja) | NoCを構成するための方法及びシステム並びにコンピュータ可読記憶媒体 | |
CN116915708A (zh) | 路由数据包的方法、处理器及可读存储介质 | |
US9600440B2 (en) | Network topology of hierarchical ring with recursive shortcuts | |
US20140301241A1 (en) | Multiple heterogeneous noc layers | |
JP6526156B2 (ja) | ネットワークトポロジーシステム並びにトポロジー及びそのルーティングテーブルの構築方法 | |
US7643477B2 (en) | Buffering data packets according to multiple flow control schemes | |
US9509613B1 (en) | Mechanisms for deadlock avoidance support in network fabrics | |
CN112491715A (zh) | 路由装置及片上网络的路由设备 | |
US9762474B2 (en) | Systems and methods for selecting a router to connect a bridge in the network on chip (NoC) | |
US20180198682A1 (en) | Strategies for NoC Construction Using Machine Learning | |
US10084725B2 (en) | Extracting features from a NoC for machine learning construction | |
JP2016225729A (ja) | ネットワークシステム、データ転送制御方法及び制御装置 | |
CN115665041B (zh) | 片上网络结构、数据传输方法、电子设备及存储介质 | |
CN116821044B (zh) | 处理系统、访存方法及计算机可读存储介质 | |
Chatmen et al. | A new network on chip design dedicated to multicast service | |
JP2002344463A (ja) | 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法 | |
CN107273318A (zh) | 并行处理设备和通信控制方法 | |
Ben Abdallah et al. | Multicore SoC On-Chip Interconnection Networks | |
Trigui et al. | Mesh 2D Network on Chip with an open core protocol based network interface | |
Momeni et al. | A low latency routing algorithm for irregular mesh network-on-chip | |
Sahu | Bidirectional Network-on-Chip Router Implementation Using VHDL |
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 |