CN118041847A - 片上路由方法、装置、电子设备和存储介质 - Google Patents
片上路由方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN118041847A CN118041847A CN202410089434.7A CN202410089434A CN118041847A CN 118041847 A CN118041847 A CN 118041847A CN 202410089434 A CN202410089434 A CN 202410089434A CN 118041847 A CN118041847 A CN 118041847A
- Authority
- CN
- China
- Prior art keywords
- routing node
- input buffer
- data packet
- packet
- routing
- 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 62
- 239000000872 buffer Substances 0.000 claims abstract description 169
- 230000005540 biological transmission Effects 0.000 claims abstract description 54
- 238000004590 computer program Methods 0.000 claims description 24
- 238000001514 detection method Methods 0.000 claims description 3
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 2
- 230000003044 adaptive effect Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 241000238633 Odonata Species 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本实施例提供一种片上路由方法、装置、电子设备和存储介质,该方法应用于片上网络,片上网络包括第一路由节点和第二路由节点,第二路由节点为第一路由节点的下一跳,路由时,检测第二路由节点的输入缓冲区是否存在闲置空间,闲置空间小于第二路由节点的输入缓冲区空间;当存在闲置空间时,生成控制信号;将控制信号发送至第一路由节点,以使得第一路由节点根据控制信号将第一数据包的第一数据子包发送至闲置空间,第一数据子包的数据量与闲置空间的容量相等。本实施例的路由方法能实现数据包的无缝传输,充分利用空闲的虚拟通道,使得数据传输效率相对现有算法有了很大的提升。
Description
技术领域
本实施例涉及片上网络路由技术领域,特别涉及一种片上路由方法、装置、电子设备和存储介质。
背景技术
直连网络作为一种常见的网络拓扑形式,已经广泛应用于多处理器系统、多计算机系统。在大规模多核片上网络中,每个路由节点都有自己的处理器和局部存储器,系统通过直连网络实现相邻节点间的连接。
二维torus网络和mesh网络在实验或商用片上网络(NoC)中已经得到了广泛的应用。如何在torus网络和mesh网络中控制无死锁自适应路由所需的虚拟通道数量是高性能NoC面临的一个具有挑战性的问题,它与路由器的缓存量和面积开销密切相关。
Duato的协议(简称DP)在mesh/torus中提供了完全自适应的无死锁路由。通过增加一些额外的自适应通道,将无死锁基本路由算法扩展到完全自适应无死锁路由方案。
Linder和Harden将虚拟通道的概念扩展到多个虚拟网络,这些虚拟网络提供自适应性、无死锁性和容错性。每个虚拟网络使用不同的虚拟通道。转弯模型和奇偶转弯模型为没有虚拟通道的二维mesh提供了具有成本效益的自适应路由算法。Chien和Kim提出了一种部分自适应的路由算法,称为平面自适应路由算法,通过约束平面序列内的路由。
Puente等人提出了一种适用于torus的容错路由机制,在网络连接的情况下,该机制可以处理任意数量的故障。在存在故障时,方法自动重新配置剩余的资源,该方法甚至可以容易地推广到不规则网络。
然而,上述完全自适应路由算法、平面自适应路由算法等均存在通道利用率低和使用的通道数量较多等问题,容易使得多个通道同时处于低负载状态,增加数据包传输的延迟,导致网络吞吐量降低,从而影响数据传输的效率影响了实时应用的性能,如视频、语音等。
发明内容
基于此,有必要针对上述技术问题,提供一种片上路由方法、装置、电子设备和存储介质。
一种片上路由方法,应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,所述方法包括:
检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
在一个实施例中,所述闲置空间大于或等于一个微片所占用的传输空间。
在一个实施例中,所述方法还包括:
检测所述第一数据包是否为不安全数据包;
当所述第一数据包为不安全数据包,且所述第一数据包已至少部分传输至下一跳时,生成第一安全标识;
将所述第一安全标识发送至所述第一路由节点,以使得所述第一路由节点根据所述安全标识将全部的所述第一数据包发送至所述第二路由节点。
在一个实施例中,当所述第二路由节点上存储有第二数据包时,所述方法还包括:
检测所述第二数据包是否为不安全数据包;
当所述第二数据包为不安全数据包,且所述第二数据包已至少部分传输至下一跳时,生成第二安全标识;
将所述第二安全标识发送至所述第二路由节点,以使得所述第二路由节点根据所述第二安全标识将全部的所述第二数据包发送至下一跳路由节点。
在一个实施例中,所述第一路由节点设置有第一输入缓冲区和第二输入缓冲区,所述第二路由节点设置有第三输入缓冲区和第四输入缓冲区,所述第一输入缓冲区的下一跳为所述第三输入缓冲区,所述第二输入缓冲区的下一跳为所述第四输入缓冲区,所述方法还包括:
检测所述第三输入缓冲区是否存在第一闲置空间,所述第一闲置空间小于所述第三输入缓冲区的空间;
当所述第三输入缓冲区存在所述第一闲置空间时,生成第一控制信号;
将所述第一控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第一控制信号将所述第三输入缓冲区中的数据包的第二数据子包发送至所述第一闲置空间,所述第二数据子包的数据量与所述第一闲置空间的容量相等;
和/或
检测所述第四输入缓冲区是否存在第二闲置空间,所述第二闲置空间小于所述第四输入缓冲区的空间;
当所述第四输入缓冲区存在所述第二闲置空间时,生成第二控制信号;
将所述第二控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第二控制信号将所述第四输入缓冲区中的数据包的第三数据子包发送至所述第二闲置空间,所述第三数据子包的数据量与所述第二闲置空间的容量相等。
在一个实施例中,所述方法还包括:
检测所述第二路由节点的输入缓冲区是否完全空置,当所述第二路由节点的输入缓冲区完全空置时,生成空置信号,将所述空置信号发送至所述第一路由节点;
当所述闲置空间不存在时,则生成占用信号,将所述占用信号发送至所述第一路由节点。
一种片上路由装置,应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,包括:
闲置空间检测模块,用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
信号生成模块,用于当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
信号发送模块,用于将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
一种片上网络结构,包括至少一个第一路由节点、至少一个第二路由节点和至少一个控制器,所述第二路由节点为所述第一路由节点的下一跳节点,
所述控制单元用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;将所述控制信号发送至所述第一路由节点;
所述第一路由节点用于根据所述控制信号将存储在所述第一路由节点的第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述任一实施例中所述的路由方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中所述的路由方法的步骤。
上述路由方法、装置、电子设备和存储介质,在路由时,任何数据包不需要等到下一跳的数据包传输完成,一旦下一跳输入端口的缓冲区存在闲置空间,上游的路由节点就可以启动数据包传输,将数据包的一部分传输至闲置空间,相比于现有的虚拟直通交换(VCT,virtual cut-through)和缓存虫孔(BW,buffered wormhole)交换算法中,任何数据包必须要等到下一跳数据包清空缓存为止才可以启动传输至所需的快速缓存,本实施例的片上路由方法能够充分利用空闲的虚拟通道,减少数据包传输的延迟,提高网络吞吐量和数据传输效率,进而改善实时应用的性能。
附图说明
图1为一个实施例中片上路由方法的流程示意图;
图2为一个实施例中片上网络的系统结构示意图;
图3为一个实施例中基于虚拟网络的无死锁路由算法规则示意图;
图4为一个实施例中片上路由方法与现有VTC交换算法的对比示意图;
图5为一个实施例中片上路由方法与现有BWH缓存虫孔交换算法的对比示意图;
图6为一个实施例中片上路由方法与现有路由方法在Uniform流量模式下的性能对比结果;
图7为一个实施例中片上路由方法与现有路由方法在Transpose流量模式下的性能对比结果;
图8为一个实施例中片上路由方法与现有路由方法在Hotspot流量模式下的性能对比结果;
图9为一个实施例中路由装置的内部模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
实施例一
本实施例中,如图1所示,提供了一种片上路由方法,应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,所述方法包括以下步骤:
步骤110,检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
步骤120,当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
步骤130,将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
片上网络(Network-on-Chip,NoC)是一种在集成电路芯片内部构建的通信基础设施,用于连接芯片上的各个功能模块或处理器核心。在片上网络的系统中,每一个网络节点包括一个计算核(IP核)和一个路由节点或路由器。NoC将IP核之间的数据传输变为路由器之间的数据转发,避免了总线架构在同一时刻只能有一对通信节点进行通信传输。
如图2所示,为本实施例的片上网络的系统结构,包括路由节点210,流控逻辑单元220以及IP核,路由节点210与网络接口230连接。基于现有的片上网络系统,在每两个路由器之间设置一流控逻辑单元,通过流控逻辑单元将下一跳的输入缓冲区的空闲状态反馈给上游路由器。
当下一跳路由器即上述第二路由节点的输入缓冲区中的数据包部分启动传输后且并未完全移出时,输入缓冲区便腾出了相应大小的闲置空间,此时,系统对应生成一控制信号,并将该控制信号发送至上游路由器,即上述第一路由节点。
第一路由节点接收到控制信号后,即可启动传输,将待发送的第一数据包的第一数据子包发送至第二路由节点的闲置空间,以此减少数据包的传输等待时间,提高数据包的转发速度。
在一个实施例中,所述方法还包括:
检测所述第二路由节点的输入缓冲区是否完全空置,当所述第二路由节点的输入缓冲区完全空置时,生成空置信号,将所述空置信号发送至所述第一路由节点;
当所述闲置空间不存在时,则生成占用信号,将所述占用信号发送至所述第一路由节点。
在本实施例中,流控逻辑单元对第二路由节点的输入缓冲区的不同状态进行检测,并生成对应信号反馈给第一路由节点。
具体的,当第二路由节点的输入缓冲区完全空置时,生成空置信号00,将所述空置信号发送至所述第一路由节点;当第二路由节点的输入缓冲区被完全占用且数据包未传输时,生成占用信号01,将所述占用信号发送至所述第一路由节点;当第二路由节点的输入缓冲区有闲置空间时,生成上述控制信号11。
通过生成不同的信号,能够更好地助于其他节点可以根据不同的信号来进行数据发送或任务分配的决策,减少数据堆积和延迟,帮助协调和控制路由节点之间的数据流动。
如图4所示,为本实施例中的路由方法与现有的VCT虚拟直通交换的路由算法对比。P1、P2、P3和P4为不同的缓冲区。
图4中a所示,为现有VCT路由算法,P1的下一跳为P2,只有当P2中的数据包完全移出时,P1中的数据包才能启动传输,进入到P2的输入端口。
图4中b所示,为采用本实施例的流控技术或路由算法,P1的下一跳为P2,一旦P2下一跳的数据包开始移出,P1的数据包就能启动传输。
图4中c所示,为现有VCT路由算法,P1的下一跳是P2,P3即使完全移出,P1中的数据包也需要等到P2中的数据包完全移出后,才能启动传输,进入到P2的输入端口。
图4中d所示,为采用本实施例的流控技术,不管别的buffer是否空闲,一旦下一跳的buffer有空闲,P1的数据包就能启动传输,进入到P2的输入端口。
本实施例的路由方法或流控技术适用于各种现有的路由算法,如虚拟网络划分的算法,采用数据包状态信息的完全适应性路由算法(对torus网络),也可以是Duato协议等。此外,本实施例的路由方法适用于2D mesh网络,含部分垂直连接的三维封装网络,2D/3D及高维torus网络,及高阶网络如dragonfly网络及胖树网络等,可以对现有的路由算法的性能带来明显的提升,特别是片上互连每个输入端口设置较低往往只有1-2个数据包的大小情况下。
传统的VCT虚拟直通交换,任何数据包必须要等到下一跳数据包清空缓存为止才可以启动传输至所需的快速缓存。由于VCT交换的流控单元是数据包,采用本实施例的流控技术后,下一跳对应缓存只需移出第一个微片就可以启动数据包传输。基于本实施例流控技术的VCT交换,任何时候相邻路由器间只能有一个数据包传输。
传统的BWH缓存虫孔交换,任何数据包必须要等到下一跳数据包清空缓存为止才可以启动数据包传输至下一跳。采用基于无缝流控的BWH交换技术,只要下一跳输入端口对应的数据包开始启动,上游路由器的数据包便可以启动传输。采用基于本实施例流控技术的BWH交换,相邻两个路由器间可以有多个数据包分时共享物理通道传输。
接下来,以应用了本实施例的路由算法的通道交叠虚拟网络算法SOverlap算法基于2D mesh网络进行说明。
基于通道交叠和无缝流控的虚拟网络无死锁完全自适应路由算法SOverlap,包括以下步骤:
1、划分虚拟网络
把网络划分为八个虚拟子网络:x+y+(1)、x+y+(2)、x+y-(3)、x+y-(4)、x-y+(5)、x-y+(6)、x-y-(7)以及x-y-(8),合并为四个虚拟子网络x*y-(4,8)、x*y+(2,6)、x-y*(5,7)、x+y*(1,3),其中每个虚拟网络出现两次,采用不同的虚拟通道;数据包根据源节点和目的节点的情况分为8类分别对应上述8个虚拟子网络,根据各自类型进入合并后的虚拟子网络x*y+、x*y-、x+y*、x-y*中路由。
四个虚拟子网络在X维上的每条物理通道被划分为两条虚拟通道:Cx,1和Cx,2,Y维上的每条物理通道也被划分为两条虚拟通道Cy,1和Cy,2,对于四个合并的虚拟子网络中的x和y通道,对应有以下虚拟通道分配:
前两个虚拟子网络x*y-和x*y+沿着维度x被分配相同的虚拟通道Cx,1,最后两个虚拟子网络x-y*和x+y*沿着维度y被分配相同的虚拟通道Cy,2。其中,Cx,1和Cx,2均为双向通道,/>为沿x维度的正方向传输,/>为沿x维度的负方向传输,同理适用于Cx,2和Cy,1和Cy,2。
2、将不同数据包分配至对应的虚拟网络
计算数据包的目的节点d和源节点s在x维上的偏移xoffset=xd-xs,和y维上的偏移yoffset=yd-ys;当某类数据包可以进入两个不同的虚拟网络时,该类数据包轮流分配到这两个虚拟网络中,根据xoffset和yoffset的正负将数据包落入对应的虚拟子网络中,具体如下:
xoffset=0且yoffset=0,说明数据包已到达目的节点d,则路由完成,就地吸收该数据包。
xoffset>0且yoffset>0的数据包可以在虚拟子网络x+y*或者x*y+中路由;
xoffset>0且yoffset<0的数据包可以在虚拟子网络x*y-或者x+y*中路由;
xoffset<0且yoffset>0的数据包可以在虚拟子网络x*y+或者x-y*中路由;
xoffset<0且yoffset<0的数据包可以在虚拟子网络x*y-或者x-y*中路由。
3、根据预设无死锁路由规则自适应传输
虚拟子网络内部均采用最短路径的完全自适应路由算法和本实施例的路由规则,根据数据包情况进行特殊转弯,并且禁止某些转弯以达到避免死锁的目的。
如图3所示,基于虚拟网络的无死锁路由算法规则:
3.1、第一组虚拟网络(x*y+与x*y-)中的第2类数据包禁止右->上转弯;
3.2、第二组虚拟网络(x+y*与x-y*)中的第5类数据包禁止左->上转弯;
3.3、第二组虚拟网络(x+y*与x-y*)中的第3类数据包在进行下->右转弯时候需要变换虚拟通道转到第一组虚拟子网络中并在随后返回到Y方向路由时再次变换通道返回到第二组虚拟网络中;
3.4、第一组虚拟网络(x*y+与x*y-)中的第8类数据包在进行下->左转弯时候需要变换虚拟通道转到第二组虚拟子网络中并在随后返回到Y方向路由时再次变换通道返回到第一组虚拟网络中;
3.5、其余数据包无需特殊处理,完全自适应路由。
具体的,当数据包进入虚拟子网络x*y-中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x*y-中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset和yoffset;
B:如果xoffset<0并且yoffset<0,当数据包已经占用通道时,x-方向下一跳的/>和y-方向下一跳/>中buffer(输入缓冲区)已空或数据包传输已启动,可将数据包传输至或/>数据包已经占用通道/>时,可以使用/>和/>其中一条通道;
C:如果xoffset>0并且yoffset<0,当数据包目前占用通道时,且x+下一跳的/>和y-下一跳/>中buffer已空或数据包传输已启动,可将数据包传输至/>或/>
D:如果xoffset>0并且yoffset<0,当数据包目前占用通道时,当x+下一跳的/>和y-下一跳/>中buffer已空或数据包传输已启动,可将数据包传输至/>或/>
E:如果xoffset>0并且yoffset<0,当数据包目前占用通道时,当x+下一跳的/>和y-下一跳/>中buffer已空或数据包传输已启动,可将数据包传输至/>或/>
F:如果xoffset=0并且yoffset<0,当y-下一跳的中buffer已空或数据包传输已启动,可将数据包传输至/>
G:如果xoffset>0并且yoffset=0,目前数据包使用当x+下一跳的/>中buffer已空或数据包传输已启动,可将数据包传输至/>
H:如果xoffset>0并且yoffset=0,目前数据包使用当x+下一跳的/>中buffer已空或数据包传输已启动,可将数据包传输至/>
I:如果xoffset<0并且yoffset=0,当x-下一跳的中buffer已空或数据包传输已启动,可将数据包传输至/>当数据包为第8类数据包且占用/>或者/>时,可以使用/>通道。
当数据包进入虚拟子网络x*y+中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x*y+中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset,yoffset;
B:如果xoffset>0并且yoffset>0,当数据包已经占用通道时,且下一跳的x+通道的buffer已空或数据包开始传输,将数据包传输至/>通道;当数据包未占用通道/>时,可以使用/>和/>其中一条通道。
C:如果xoffset>0并且yoffset>0,当数据包占用插入通道或者y+通道,且下一跳的x+通道的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
D:如果xoffset<0并且yoffset>0,下一跳的x-通道或y+通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
E:如果xoffset=0并且yoffset>0,下一跳y+的buffer已空或数据包已开始传输,将数据包传至
F:如果xoffset<0并且yoffset=0,下一跳x+的buffer已空或数据包已开始传输,将数据包传至使用通道;
G:如果xoffset>0并且yoffset=0,下一跳x+的buffer已空或数据包已开始传输,将数据包传至使用通道。
当数据包进入虚拟子网络x-y*中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x-y*中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset和yoffset;
B:如果xoffset<0并且yoffset>0,当数据包已经占用通道时,且下一跳x-的buffer已空或数据包已开始传输,将数据包传至使用/>通道;
C:如果xoffset<0并且yoffset>0,当数据包已经占用通道时,下一跳的x-通道/>或y+通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
D:如果xoffset<0并且yoffset<0,下一跳的x-通道或y-通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
E:如果xoffset=0并且yoffset>0,下一跳y+的buffer已空或数据包已开始传输,将数据包传至使用通道;
F:如果xoffset=0并且yoffset<0,下一跳y-的buffer已空或数据包已开始传输,将数据包传至使用通道;
G:如果xoffset<0并且yoffset=0,下一跳x-的buffer已空或数据包已开始传输,将数据包传至使用通道。
当数据包进入虚拟子网络x+y*中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x+y*中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset和yoffset;
B:如果xoffset>0并且yoffset<0,当数据包占用通道时,且下一跳的x+通道/>或y-通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
C:如果xoffset>0并且yoffset<0,当数据包类型为第3类并且已经占用通道时,可以使用/>和/>其中一条通道;
D:如果xoffset>0并且yoffset<0,当数据包占用通道时,且下一跳的x+通道/>或y-通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
E:如果xoffset>0并且yoffset>0,且下一跳的x+通道或y+通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道或/>
F:如果xoffset=0并且yoffset<0,且下一跳的y-通道的buffer已空或数据包开始传输,将数据包传输至通道/>
G:如果xoffset>0且yoffset=0,当数据包占用或/>且下一跳的x+通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道;
H:如果xoffset>0且yoffset=0,当数据包占用或/>且下一跳的x+通道/>的buffer已空或数据包开始传输,将数据包传输至/>通道。
在一个实施例中,提供的一种基于通道交叠的虚拟网络的无死锁容错路由算法,基本思想是基于无故障算法的虚拟子网络和基本算法的情况下引入故障处理,根据故障情况在各个子网络中独立设置安全状态,在安全状态下按照无故障算法完全自适应路由,在无安全路径可走的情况下根据情况进行绕道并转换到对应的虚拟子网络中继续路由。容错算法包括以下步骤:
S1:计算数据包的源节点与目的节点在x维和y维两个方向的距离,如果距离之和为零,则路由完成,否则执行步骤S2;
S2:与基于通道交叠的虚拟网络的无死锁完全自适应路由算法一样划分子网络,并根据网络中的故障点情况设置安全区域;
S3:数据包根据源节点和目的节点的情况分为8类分别对应8个虚拟子网络,根据各自类型进入合并后的虚拟子网络x*y+、x*y-、x+y*、x-y*中路由。
步骤S2中根据网络中的故障点情况设置安全区域,针对每个子网络独立设置节点的安全状态,一个无故障节点在子网络中沿着x和y维方向有两个故障节点或者不安全节点,则该节点标记为不安全结点,否则标记为安全结点。
步骤S3中数据包进入虚拟子网络x*y-中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x*y-中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset=xd-xs,yoffset=yd-ys;
B:如果xoffset<0并且yoffset<0,当数据包已经占用通道时,两条最短路径都是安全时可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
C:如果xoffset<0并且yoffset<0,当数据包已经占用通道时,两条最短路径都是安全时可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
D:如果xoffset<0并且yoffset<0,当数据包已经占用通道时,两条最短路径都是安全时可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
E:如果xoffset>0并且yoffset<0,两条最短路径都是安全时可以使用和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
F:如果xoffset=0并且yoffsett<0,仅当路径安全时可以使用通道;
G:如果xoffset>0并且yoffset=0,仅当路径安全时可以使用通道;
H:如果xoffset<0并且yoffset=0,当数据包为第8类数据包且占用或者/>时,仅当路径安全时可以使用/>通道,否则当路径安全时可以使用使用/>通道。
如果可用的最短路径都是不安全的,当数据包占用x通道则转到虚拟子网络x*y+中路由,如果数据包占用y通道则沿着x方向绕道转发直到y-通道可用为止。
步骤S3中数据包进入虚拟子网络x*y+中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x*y+中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset=xd-xs,yoffset=yd-ys;
B:如果xoffset>0并且yoffset>0,当数据包已经占用通道时,仅当路径安全时可以使用/>通道,否则两条最短路径都是安全时可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
C:如果xoffset<0并且yoffset>0,两条最短路径都是安全时可以使用和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
D:如果xoffset=0并且yoffset>0,仅当路径安全时可以使用通道;
E:如果xoffset<0并且yoffset=0,仅当路径安全时可以使用通道;
F:如果xoffset>0并且yoffset=0,仅当路径安全时可以使用通道;
如果可用的最短路径都是不安全的,当数据包占用x通道则转到虚拟子网络x*y-中路由,如果数据包占用y通道则沿着x方向绕道转发直到y+通道可用为止。
步骤S3中数据包进入虚拟子网络x-y*中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x-y*中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset=xd-xs,yoffset=yd-ys;
B:如果xoffset<0并且yoffset>0,当数据包已经占用通道时,仅当路径安全时可以使用/>通道,否则两条最短路径都是安全时可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
C:如果xoffset<0并且yoffset<0,两条最短路径都是安全时可以使用和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
D:如果xoffset=0并且yoffset>0,如果最短路径是安全的,则使用通道;
E:如果xoffset=0并且yoffset<0,如果最短路径是安全的,则使用通道;
F:如果xoffset<0并且yoffset=0,如果最短路径是安全的,则使用通道;
如果可用的最短路径都是不安全的,当数据包占用y通道则转到虚拟子网络x+y*中路由,如果数据包占用x通道则沿着y方向绕道转发直到x-通道可用为止。
步骤S3’中数据包进入虚拟子网络x+y*中路由时,路由的具体步骤包括:
A:当数据包到达虚拟子网络x+y*中的任一节点时,计算目的节点d和源节点s在x维和y维上的偏移xoffset=xd-xs,yoffset=yd-ys;
B:如果xoffset>0并且xoffset<0,当数据包已经占用通道两条最短路径都是安全时,可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
C:如果xoffset>0并且yoffset<0,当数据包类型为第3类并且已经占用通道两条最短路径都是安全时,可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
D:如果xoffset>0并且yoffset<0,当数据包已经占用通道时,可以使用/>和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
E:如果xoffset>0并且yoffset>0,可以使用和/>其中一条通道,如果有一条最短路径是不安全的,则使用另一条路径;
F:如果xoffset=0并且yoffset<0,如果最短路径是安全的,则使用通道;
G:如果xoffset>0且yoffset=0,当数据包占用或/>路径安全时使用/>通道,否则路径安全时使用/>通道。
如果可用的最短路径都是不安全的,当数据包占用y通道则转到虚拟子网络x-y*中路由,如果数据包占用x通道则沿着y方向绕道转发直到x+通道可用为止。
本实施例提供的一种基于通道交叠的虚拟网络的无死锁容错路由算法是无死锁,可以用反证法来证明:
假设存在逆时针循环通道依赖,对于如图3中(a)特殊转弯,第3类分组请求一个通道,该分组占用一个/>通道。由于图3中(a)禁止转弯的约束,/>通道上的分组只能请求/>或/>假设任何故障块都不破坏二维mesh网络的边界,可以建立沿y-方向的通道依赖链,直到到达底边界或最右边界。这与假设相冲突,因此不能建立逆时针循环通道依赖性。
假设存在顺时针循环通道依赖。占用通道的第8类分组由于图3中(b)特殊转弯而请求/>通道。由于图3(b)禁止转弯的约束,/>通道上的分组只能请求/>或如上所述,任何故障块都不会破坏2D mesh网络的边界。可以建立沿y-方向的通道依赖链,直到到达底边界或最左边界。这与假设相冲突,因此不能建立顺时针循环通道依赖性。
在一个实施例中,所述闲置空间大于或等于一个微片所占用的传输空间。
本实施例中,当第二路由节点的输入缓冲区中的数据包移出至少一个微片时,第一路由节点即可将第一数据包发送至第二路由节点。
本实施例中的路由方法可应用于缓存虫孔BWH交换技术。在缓存虫孔交换中,数据包会被切割成一个个较小的flit(流控信息)进行传输。每个flit包含了一部分数据以及相关的控制信息。flit的大小通常相对较小,可以是几个比特或几十个比特,具体大小取决于系统设计和要求。
当第二路由节点中头微片(head flit)到达下一跳路由节点时,第一数据包的头微片便可启动传输,进入到第二路由节点中。
由于片上网络中的路由器之间的链路较短且物理连接质量较好,通常数据包的传输速度通常是一致的,从而使得相邻两个路由节点之间的数据包能够无缝传输。
在其他实施例中,闲置空间大于或等于两个微片所占用的传输空间,或者三个微片所占用的传输空间,具体闲置空间的大小可以根据实际传输需求设定,此处不作限制。
在一个实施例中,所述方法还包括:
检测所述第一数据包是否为不安全数据包;
当所述第一数据包为不安全数据包,且所述第一数据包已至少部分传输至下一跳时,生成第一安全标识;
将所述第一安全标识发送至所述第一路由节点,以使得所述第一路由节点根据所述安全标识将全部的所述第一数据包发送至所述第二路由节点。
现有的基础的路由算法(baseline routing),当一个数据包路由跳步遵循基础路由算法规则时,该数据包在下一跳是安全数据包,任何安全的数据包可以在有限时间周期内到达目标点,否则为不安全数据包。如果存在不安全数据包需要传输至下一跳节点,并且这些不安全数据包已经开始传输但尚未完成,那么当前路由节点必须先将这些不安全数据包快速缓存起来,等待它们传输完成后再开始传输其他数据包至下一跳节点的输入端口。
本实施例中,当一个不安全的数据包的头微片预定了下一跳的buffer,或已启动传输,则将该数据包在当前计算节点视为安全的数据包进行处理和转发,不需要按照上述现有算法,必须等到当前路由节点将全部的不安全数据包转发完,才能进行下一个数据包的转发。即,第一数据包为不安全数据包,且第一数据包的部分启动传输后,第一路由节点的输入缓冲区便出现闲置空间,此时,其他等待传输至第一路由节点的数据包便能够进入第一路由节点的输入缓冲区。
本实施例的路由方法有助于下游数据包提前进入当前节点,减少了因等待非安全数据包传输完成而造成的延迟,提高了网络传输效率。
在一个实施例中,当所述第二路由节点上存储有第二数据包时,所述方法还包括:
检测所述第二数据包是否为不安全数据包;
当所述第二数据包为不安全数据包,且所述第二数据包已至少部分传输至下一跳时,生成第二安全标识;
将所述第二安全标识发送至所述第二路由节点,以使得所述第二路由节点根据所述第二安全标识将全部的所述第二数据包发送至下一跳路由节点。
本实施例中,第一数据包到下一跳是不安全并且第二数据包为不安全数据包。按已有的基于数据包状态信息的流控技术,当前点的数据包必须在下一跳的不安全数据包传输完成后才可以开始传输至下一跳的输入端口的快速缓存。采用本实施例的路由方法,当下一跳输入端口非安全数据包开始传输时,即便该数据包在下一跳仍然是非安全的,当前点的数据包就可以启动下一跳的传输。
在一个实施例中,所述第一路由节点设置有第一输入缓冲区和第二输入缓冲区,所述第二路由节点设置有第三输入缓冲区和第四输入缓冲区,所述第一输入缓冲区的下一跳为所述第三输入缓冲区,所述第二输入缓冲区的下一跳为所述第四输入缓冲区,所述方法还包括:
检测所述第三输入缓冲区是否存在第一闲置空间,所述第一闲置空间小于所述第三输入缓冲区的空间;
当所述第三输入缓冲区存在所述第一闲置空间时,生成第一控制信号;
将所述第一控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第一控制信号将所述第三输入缓冲区中的数据包的第二数据子包发送至所述第一闲置空间,所述第二数据子包的数据量与所述第一闲置空间的容量相等;
和/或
检测所述第四输入缓冲区是否存在第二闲置空间,所述第二闲置空间小于所述第四输入缓冲区的空间;
当所述第四输入缓冲区存在所述第二闲置空间时,生成第二控制信号;
将所述第二控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第二控制信号将所述第四输入缓冲区中的数据包的第三数据子包发送至所述第二闲置空间,所述第三数据子包的数据量与所述第二闲置空间的容量相等。
在本实施例中,如图5所示,为现有缓存虫孔交换的路由算法与应用了本实施例的路由方法的缓存虫孔交换的路由算法。
图5中(a)所示,为现有缓存虫孔交换的路由算法示意图,p1的下一跳为P3,P2的下一跳为P4,只有当P3中的数据包完全移出后,P1中的数据包才能启动传输,当P4中的数据包完全移出后,P2中的数据包才能启动传输。
图5中(b)所示,为采用了本实施例的流控技术的缓存虫孔交换路由算法,p1的下一跳为P3,P2的下一跳为P4,当P3和P4中有闲置空间时,P1和P3中的数据包便对应启动传输,分时共享物理通道并发传输。
图5中(c)所示,为现有缓存虫孔交换的路由算法示意图,P1和P2的下一跳均为P3,只有当P3中的数据包完全移出,P1和P2中的数据包才能进入到P3的输入端口。
图5中(d)所示,为采用了本实施例的流控技术的缓存虫孔交换路由算法,P1和P2的下一跳均为P3,一旦P3有闲置空间时,按照优先级,P1中的数据包即可启动传输,进入到P3的输入端口,P2中的数据包则处于等待状态。
本实施例的路由算法可以对现有的路由算法的性能带来明显的提升,以上述应用了本实施例路由算法的通道交叠算法Overlap-FC为例,将该改进后的算法与现有算法进行性能比对。
如图6所示,为Overlap-FC与现有的Duato’s Protocol算法,EbDa算法,维序路由DOR算法及现有的通道交叠算法Overlap在Uniform的流量下的性能评估。其中图6(a)为不同算法的Average latency(平均延迟),是指在数据传输或信号传递过程中,所需的平均时间延迟。图6(b)为Accepted Traffic(接收的流量),较高的Accepted Traffic意味着设备或服务器可以有效地处理更多的数据流量。
如图7所示,为上述不同算法在Transpose的流量下的性能评估。
如图8所示,为上述不同算法在Hotspot的流量下的性能评估。
通过图6-图8可知,DOR在Uniform流量模式下,性能表现良好,优于EbDa和Duato’sProtocol,且当消息注入率足够大时,优于EbDa、Overlap。本实施例的Overlap-Fc算法在不同的流量模式下,性能表现均优于现有的路由方法,即便在应用相对更广泛的Uniform流量模式下,本实施例的Overlap-Fc也远远优于现有技术。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例二
本实施例中,如图9所示,提供一种片上路由装置,包括:
闲置空间检测模块910,用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
信号生成模块920,用于当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
信号发送模块930,用于将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
关于路由装置的具体限定可以参见上文中对于路由方法的限定,在此不再赘述。上述路由装置中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各单元可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个单元对应的操作。
实施例三
本实施例中,提供了一种片上网络结构,包括至少一个第一路由节点、至少一个第二路由节点和至少一个控制器,所述第二路由节点为所述第一路由节点的下一跳节点,
所述控制单元用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;将所述控制信号发送至所述第一路由节点;
所述第一路由节点用于根据所述控制信号将存储在所述第一路由节点的第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
本实施例的片上网络结构能应用于多核处理器,如图2所示,处理器中的16个核由一个4x4的网格网络相连。每一个网络节点包含一个计算核(IP核)和一个路由节点或路由器(router)。相邻的两个路由器之间设置有控制器,本实施例中的控制器包括上述实施例中的流控逻辑单元。路由器和相应的链路组成了片上网络。
本实施例的片上网络结构的拓扑结构可以是直接拓扑结构,如Ring、Mesh和Torus,还可以是间接拓扑结构,如Crossbar、dragonfly网络、Clos网络和胖树网络等。
实施例四
本实施例中,提供了电子设备。该电子设备包括采用片上路由方式进行数据传输的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序,且该非易失性存储介质部署有数据库,该数据库用于存储路由方法。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与部署了应用软件的其他电子设备通信。该计算机程序被处理器执行时以实现一种片上路由方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种电子设备,包括存储器和处理器,该存储器存储有计算机程序,该计算机程序应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,该处理器执行计算机程序时实现如下步骤:
检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
在一个实施例中,所述闲置空间大于或等于一个微片所占用的传输空间。
在一个实施例中,该处理器执行计算机程序时还实现如下步骤:
检测所述第一数据包是否为不安全数据包;
当所述第一数据包为不安全数据包,且所述第一数据包已至少部分传输至下一跳时,生成第一安全标识;
将所述第一安全标识发送至所述第一路由节点,以使得所述第一路由节点根据所述安全标识将全部的所述第一数据包发送至所述第二路由节点。
在一个实施例中,当所述第二路由节点上存储有第二数据包时,该处理器执行计算机程序时还实现如下步骤:
检测所述第二数据包是否为不安全数据包;
当所述第二数据包为不安全数据包,且所述第二数据包已至少部分传输至下一跳时,生成第二安全标识;
将所述第二安全标识发送至所述第二路由节点,以使得所述第二路由节点根据所述第二安全标识将全部的所述第二数据包发送至下一跳路由节点。
在一个实施例中,所述第一路由节点设置有第一输入缓冲区和第二输入缓冲区,所述第二路由节点设置有第三输入缓冲区和第四输入缓冲区,所述第一输入缓冲区的下一跳为所述第三输入缓冲区,所述第二输入缓冲区的下一跳为所述第四输入缓冲区,该处理器执行计算机程序时还实现如下步骤:
检测所述第三输入缓冲区是否存在第一闲置空间,所述第一闲置空间小于所述第三输入缓冲区的空间;
当所述第三输入缓冲区存在所述第一闲置空间时,生成第一控制信号;
将所述第一控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第一控制信号将所述第三输入缓冲区中的数据包的第二数据子包发送至所述第一闲置空间,所述第二数据子包的数据量与所述第一闲置空间的容量相等;
和/或
检测所述第四输入缓冲区是否存在第二闲置空间,所述第二闲置空间小于所述第四输入缓冲区的空间;
当所述第四输入缓冲区存在所述第二闲置空间时,生成第二控制信号;
将所述第二控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第二控制信号将所述第四输入缓冲区中的数据包的第三数据子包发送至所述第二闲置空间,所述第三数据子包的数据量与所述第二闲置空间的容量相等。
在一个实施例中,该处理器执行计算机程序时还实现如下步骤:
检测所述第二路由节点的输入缓冲区是否完全空置,当所述第二路由节点的输入缓冲区完全空置时,生成空置信号,将所述空置信号发送至所述第一路由节点;
当所述闲置空间不存在时,则生成占用信号,将所述占用信号发送至所述第一路由节点。
实施例五
本实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,计算机程序被处理器执行时实现如下步骤:
检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
在一个实施例中,所述闲置空间大于或等于一个微片所占用的传输空间。
在一个实施例中,计算机程序被处理器执行时还实现如下步骤:
检测所述第一数据包是否为不安全数据包;
当所述第一数据包为不安全数据包,且所述第一数据包已至少部分传输至下一跳时,生成第一安全标识;
将所述第一安全标识发送至所述第一路由节点,以使得所述第一路由节点根据所述安全标识将全部的所述第一数据包发送至所述第二路由节点。
在一个实施例中,当所述第二路由节点上存储有第二数据包时,计算机程序被处理器执行时还实现如下步骤:
检测所述第二数据包是否为不安全数据包;
当所述第二数据包为不安全数据包,且所述第二数据包已至少部分传输至下一跳时,生成第二安全标识;
将所述第二安全标识发送至所述第二路由节点,以使得所述第二路由节点根据所述第二安全标识将全部的所述第二数据包发送至下一跳路由节点。
在一个实施例中,所述第一路由节点设置有第一输入缓冲区和第二输入缓冲区,所述第二路由节点设置有第三输入缓冲区和第四输入缓冲区,所述第一输入缓冲区的下一跳为所述第三输入缓冲区,所述第二输入缓冲区的下一跳为所述第四输入缓冲区,计算机程序被处理器执行时还实现如下步骤:
检测所述第三输入缓冲区是否存在第一闲置空间,所述第一闲置空间小于所述第三输入缓冲区的空间;
当所述第三输入缓冲区存在所述第一闲置空间时,生成第一控制信号;
将所述第一控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第一控制信号将所述第三输入缓冲区中的数据包的第二数据子包发送至所述第一闲置空间,所述第二数据子包的数据量与所述第一闲置空间的容量相等;
和/或
检测所述第四输入缓冲区是否存在第二闲置空间,所述第二闲置空间小于所述第四输入缓冲区的空间;
当所述第四输入缓冲区存在所述第二闲置空间时,生成第二控制信号;
将所述第二控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第二控制信号将所述第四输入缓冲区中的数据包的第三数据子包发送至所述第二闲置空间,所述第三数据子包的数据量与所述第二闲置空间的容量相等。
在一个实施例中,计算机程序被处理器执行时还实现如下步骤:
检测所述第二路由节点的输入缓冲区是否完全空置,当所述第二路由节点的输入缓冲区完全空置时,生成空置信号,将所述空置信号发送至所述第一路由节点;
当所述闲置空间不存在时,则生成占用信号,将所述占用信号发送至所述第一路由节点。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种片上路由方法,其特征在于,应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳节点,当所述第一路由节点上存储有第一数据包时,所述方法包括:
检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
2.根据权利要求1所述的方法,其特征在于,所述闲置空间大于或等于一个微片所占用的传输空间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述第一数据包是否为不安全数据包;
当所述第一数据包为不安全数据包,且所述第一数据包已至少部分传输至下一跳时,生成第一安全标识;
将所述第一安全标识发送至所述第一路由节点,以使得所述第一路由节点根据所述安全标识将全部的所述第一数据包发送至所述第二路由节点。
4.根据权利要求1-3中任一所述的方法,其特征在于,当所述第二路由节点上存储有第二数据包时,所述方法还包括:
检测所述第二数据包是否为不安全数据包;
当所述第二数据包为不安全数据包,且所述第二数据包已至少部分传输至下一跳时,生成第二安全标识;
将所述第二安全标识发送至所述第二路由节点,以使得所述第二路由节点根据所述第二安全标识将全部的所述第二数据包发送至下一跳路由节点。
5.根据权利要求4所述的方法,其特征在于,所述第一路由节点设置有第一输入缓冲区和第二输入缓冲区,所述第二路由节点设置有第三输入缓冲区和第四输入缓冲区,所述第一输入缓冲区的下一跳为所述第三输入缓冲区,所述第二输入缓冲区的下一跳为所述第四输入缓冲区,所述方法还包括:
检测所述第三输入缓冲区是否存在第一闲置空间,所述第一闲置空间小于所述第三输入缓冲区的空间;
当所述第三输入缓冲区存在所述第一闲置空间时,生成第一控制信号;
将所述第一控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第一控制信号将所述第三输入缓冲区中的数据包的第二数据子包发送至所述第一闲置空间,所述第二数据子包的数据量与所述第一闲置空间的容量相等;
和/或
检测所述第四输入缓冲区是否存在第二闲置空间,所述第二闲置空间小于所述第四输入缓冲区的空间;
当所述第四输入缓冲区存在所述第二闲置空间时,生成第二控制信号;
将所述第二控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述第二控制信号将所述第四输入缓冲区中的数据包的第三数据子包发送至所述第二闲置空间,所述第三数据子包的数据量与所述第二闲置空间的容量相等。
6.根据权利要求1-3以及5中任一所述的方法,其特征在于,所述方法还包括:
检测所述第二路由节点的输入缓冲区是否完全空置,当所述第二路由节点的输入缓冲区完全空置时,生成空置信号,将所述空置信号发送至所述第一路由节点;
当所述闲置空间不存在时,则生成占用信号,将所述占用信号发送至所述第一路由节点。
7.一种片上路由装置,其特征在于,应用于片上网络,所述片上网络包括第一路由节点和第二路由节点,所述第二路由节点为所述第一路由节点的下一跳,当所述第一路由节点上存储有第一数据包时,包括:
闲置空间检测模块,用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;
信号生成模块,用于当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;
信号发送模块,用于将所述控制信号发送至所述第一路由节点,以使得所述第一路由节点根据所述控制信号将所述第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
8.一种片上网络结构,其特征在于,包括至少一个第一路由节点、至少一个第二路由节点和至少一个控制器,所述第二路由节点为所述第一路由节点的下一跳节点,
所述控制单元用于检测所述第二路由节点的输入缓冲区是否存在闲置空间,所述闲置空间小于所述第二路由节点的输入缓冲区空间;当所述第二路由节点的输入缓冲区存在所述闲置空间时,生成控制信号;将所述控制信号发送至所述第一路由节点;
所述第一路由节点用于根据所述控制信号将存储在所述第一路由节点的第一数据包的第一数据子包发送至所述闲置空间,所述第一数据子包的数据量与所述闲置空间的容量相等。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410089434.7A CN118041847A (zh) | 2024-01-22 | 2024-01-22 | 片上路由方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410089434.7A CN118041847A (zh) | 2024-01-22 | 2024-01-22 | 片上路由方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118041847A true CN118041847A (zh) | 2024-05-14 |
Family
ID=90994370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410089434.7A Pending CN118041847A (zh) | 2024-01-22 | 2024-01-22 | 片上路由方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118041847A (zh) |
-
2024
- 2024-01-22 CN CN202410089434.7A patent/CN118041847A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mohapatra | Wormhole routing techniques for directly connected multicomputer systems | |
Cunningham et al. | Fault-tolerant adaptive routing for two-dimensional meshes | |
Ahmad et al. | Architecture of a dynamically reconfigurable NoC for adaptive reconfigurable MPSoC | |
Chen et al. | Fault-tolerant routing algorithm for meshes without using virtual channels | |
CN101834789B (zh) | 面向包-电路交换片上路由器的回退转向路由算法及所用路由器 | |
CN107959643B (zh) | 一种通过交换芯片构建的交换系统及其路由算法 | |
CN109587048A (zh) | 一种带有均衡策略的无虚通道容错路由算法 | |
Xiang | Deadlock-free adaptive routing in meshes with fault-tolerance ability based on channel overlapping | |
Dehghani et al. | A fault-tolerant hierarchical hybrid mesh-based wireless network-on-chip architecture for multicore platforms | |
Taheri et al. | Advertiser elevator: A fault tolerant routing algorithm for partially connected 3D Network-on-Chips | |
Parandkar et al. | Performance comparison of XY, OE and DY Ad routing algorithm by load variation analysis of 2-dimensional mesh topology based network-on-chip | |
Uma et al. | Network-on-chip (noc)-routing techniques: A study and analysis | |
Janfaza et al. | A new fault-tolerant deadlock-free fully adaptive routing in NOC | |
WO2013044469A1 (en) | Deadlock-free adaptive routing algorithm | |
CN118041847A (zh) | 片上路由方法、装置、电子设备和存储介质 | |
Seydim | Wormhole routing in parallel computers | |
Karali et al. | Hybrid mocs for long-distance on-chip communications | |
US11303559B1 (en) | Method, apparatus and computer storage medium for deadlock-free adaptive routing in two-dimensional mesh network based on the overlapping virtual network partitioning scheme | |
CN111953589B (zh) | 高维Torus网络的自适应容错路由方法及装置 | |
Rameshan et al. | Minimal path, Fault Tolerant, QoS aware Routing with node and link failure in 2-D Mesh NoC | |
Zhou et al. | Tree-turn routing: an efficient deadlock-free routing algorithm for irregular networks | |
Somisetty et al. | Congestion aware negative first routing with fair arbitration for network on chip | |
Alimi et al. | Network-on-Chip Topologies: Potentials, Technical Challenges, Recent Advances and Research Direction | |
Rezazadeh et al. | Throughput Considerations of Fault-Tolerant Routing in Network-on-Chip | |
Ghosal et al. | Routing in multicore nocs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |