一种片上网络拓扑结构及其自适应路由方法转让专利

申请号 : CN201510622183.5

文献号 : CN105187313B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王爱侠李贞妮李晶皎

申请人 : 东北大学

摘要 :

本发明一种片上网络拓扑结构及其自适应路由方法,属于片上网络领域,本发明路由平均跳数和网络直径都更小,H‑annular Mes具结构采用折半的连线,避免长连线在网络结构较大时带来的延迟问题,并没有为了提升访问速度来消耗更多的资源和空间;本发明采用基于局部阻塞判断的自适应路由方法,不再被动的执行路由策略,而是通过对路由环境中阻塞信息的监控,结合“最短路径策略”,动态的调整下一跳的路由节点,尽可能规避阻塞严重或出现故障的路由节点,使数据通道的选择能够根据阻塞情况自主调整,减小路由延迟提高数据的传输效率;路由方法具有的较高自适应性可以让数据尽可能节省时间地传输到目的地址。

权利要求 :

1.一种片上网络拓扑结构的自适应路由方法,该片上网络拓扑结构为一个N×N的半环形Mesh网络拓扑结构;

所述的N为偶数时,将片上网络中每一行中间的两个节点中的每个节点与该行的靠近该节点的首节点或者尾节点其中之一的节点进行相连接,将片上网络中每一列中间的两个节点中的每个节点与该列的靠近该节点的首节点或者尾节点其中之一的节点进行相连接;

所述的N为奇数时,将每一行中间节点左右两侧的节点与该行的靠近该节点的首节点或者尾节点其中之一的节点进行相连接,将每一列中间节点上下两侧的节点与该列的靠近该节点的首节点或者尾节点其中之一的节点进行相连接;

该片上网络拓扑结构x方向上新增连接线的方向为Tx方向,y方向上新增连接线的方向为Ty方向;

所述的节点即为路由器,其中,既有Tx方向连线又有Ty方向连线的路由器有7个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口和Ty端口;只有Tx方向或Ty方向连线的路由器有6个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口或Ty端口;其余的路由器有5个端口,包括:本地端口、东向端口、西向端口、南向端口和北向端口;

其特征在于,包括以下步骤:

步骤1、在片上网络拓扑结构中,根据用户发送请求信息确定源节点和目的节点;

步骤2、判断当前节点本身是否为目的节点,若是,则将要求发送的数据发送至当前节点的本地端口,否则,执行步骤3;

步骤3、判断当前节点与目的节点之间的方向为东西方向之一、或南北方向之一、或东南方向、或西南方向、或东北方向、或西北方向,若为东西方向之一,则执行步骤4;若为南北方向之一,则执行步骤6;若为东南方向,则执行步骤8;若为西南方向,则执行步骤10;若为东北方向,则执行步骤12;若为西北方向,则执行步骤14;

步骤4、判断当前节点是否有Tx端口,若有,则执行步骤5;否则,将要求发送的数据发送至东向端口或西向端口;

步骤5、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,若有,则将要求发送的数据发送至Tx端口,否则,将要求发送的数据发送至东向端口或西向端口;

步骤6、判断当前节点是否有Ty端口,若有,则执行步骤7;否则,将要求发送的数据发送至南向端口或北向端口;

步骤7、判断当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Ty端口,否则,将要求发送的数据发送至南向端口或北向端口;

步骤8、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤9;

步骤9、判断当前节点的东向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或南向端口;

步骤10、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤11;

步骤11、判断当前节点的西向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或南向端口;

步骤12、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤13;

步骤13、判断当前节点的东向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或北向端口;

步骤14、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤15;

步骤15、判断当前节点的西向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或北向端口;

步骤16、返回执行步骤2,直至当前节点为目的节点。

2.根据权利要求1所述的自适应路由方法,其特征在于,步骤2所述的当前节点,初始时为源节点。

3.根据权利要求1所述的自适应路由方法,其特征在于,

步骤8所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤9,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;

步骤10所述的将要求发送的数据发送至Tx端口或Ty端口,需要首先判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤11,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;

步骤12所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤13,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;

步骤14所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤15,若否,则将要发送的数据发送至相应的Tx端口或Ty端口。

4.根据权利要求1所述的自适应路由方法,其特征在于,

步骤4所述的判断当前节点是否有Tx端口,具体为:

当x=0、x=N-1、 和 时,当前节点具有Tx端口,当不满足上述条件时,当前节点不具有Tx端口;其中,x表示网络节点的横坐标,x=0,1,...,N-1;N表示网络每行或每列的节点个数;当N为偶数时,则T=N,Q=0;当N为奇数时,则T=N-1,Q=1;

步骤6所述的判断当前节点是否有Ty端口,具体为:

当y=0、y=N-1、 和 时,当前节点具有Ty端口,当不满足上述条件时,当前节点不具有Ty端口;其中,y表示网络节点的纵坐标,y=0,1,...,N-1。

5.根据权利要求1所述的自适应路由方法,其特征在于,

步骤5所述的判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,具体如下:当x=0时,则目的节点在当前节点的东向,则进一步判断x_dst是否等于x+i,若是,则当前节点将数据发送到东向端口进行输出;否则,当前节点将数据发送到Tx端口进行输出;

其中,x_dst表示目的节点的横坐标;x表示网络节点的横坐标,x=0,1,...,N-1;N表示网络每行或每列的节点个数;当N为偶数时,则T=N,Q=0;当N为奇数时,则T=N-1,Q=1;i=1,

2,…,t,t为整数,且

当x=N-1时,则目的节点在当前节点的西向,则进一步判断x_dst是否等于x-i,若是,则当前节点将数据发送到西向端口进行输出;否则,当前节点将数据发送到Tx端口进行输出;

当 时,若x_dst=x-i,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;

当 时,若 即目的节点在当前节点的西向,且目的节点与当前

节点之间有Tx方向的连线,则当前节点将数据发送到Tx方向端口输出;

当 时,若x_dst=x+i,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;

当 时,若x_dst=x-i,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;

当 时,若 即目的节点在当前节点的东向,且目的节点与当前

节点之间有Tx方向的连线,则当前节点将数据发送到Tx端口输出;

当 时,若x_dst=x+i,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;

当不满足上述条件时,则进一步判断x_dst是否等于x-i,其中i=1,2,…,t,t为整数,且此时t≤x,若是,则目的节点在当前节点的西向,当前节点将数据发送到西向端口进行输出;否则,目的节点在当前节点的东向,当前节点将数据发送到东向端口进行输出;

步骤7所述的判断当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,具体如下:当y=0时,则目的节点在当前节点的北向,则进一步判断y_dst是否等于y+i,其中i=

1,2,…,t,t为整数,且 是,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到Ty端口进行输出;其中,y_dst表示目的节点的纵坐标;y表示网络节点的纵坐标,y=0,1,...,N-1;

当y=N-1时,则目的节点在当前节点的南向,则进一步判断y_dst是否等于y-i,若是,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到Ty端口进行输出;

当 时,则若y_dst=y-i,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;

当 时,若 即目的节点在当前节点的南向,且目的节点与当前

节点之间有Ty方向的连线,则当前节点将数据发送到Ty端口输出;

当 时,若y_dst=y+i,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;

当 时,若y_dst=y-i,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;

当 时,若 即目的节点在当前节点的北向,且目的节点与当

前节点之间有Ty方向的连线,则当前节点将数据发送到Ty端口输出;

当 时,若y_dst=y+i,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;

当不满足上述条件时,则进一步判断y_dst是否等于y-i,其中i=1,2,…,t,t为整数,且此时t≤y,若是,则目的节点在当前节点的南向,当前节点将数据发送到南向端口进行输出;否则,目的节点在当前节点的北向,当前节点将数据发送到北向端口进行输出。

说明书 :

一种片上网络拓扑结构及其自适应路由方法

技术领域

[0001] 本发明属于片上网络领域,具体涉及一种片上网络拓扑结构及其自适应路由方法。

背景技术

[0002] 随着集成电路技术的飞速发展,系统规模越来越大,时钟频率越来越高,传统总线时钟和功耗方面的问题越来越难以解决;片上网络(Network on Chip,NoC)可以很好的解决这些问题,已逐渐成为片上多核的标准通信架构;
[0003] 目前,大多数片上网络采用最典型的2D-Mesh(二维网格)结构或者2D-Torus(二维环状)结构;2D-Mesh拓扑结构,其节点之间的连线方式比较简单,路由方法和物理实现难度相对较低,占用的片上资源比较少;但是随着网络直径的增加,节点间的距离会增大,导致路由延迟大大增加,数据传输效率大大降低;2D-Torus拓扑结构的每一个路由节点都与四个方向的路由节点相连接,每个节点的结构相同,使得其具有很好的可扩展性,且其路由路径的多样性有效降低了阻塞的发生,提高了网络的传输效率;但是,基于2D-Torus拓扑结构的片上网络,由于增加了首尾节点的长连线,会增加传输延迟,带来路由死锁的问题;若采用虚拟通道的方法来解决这个问题,会占据大量的片上资源,并不利于硬件实现,从而无法体现出片上网络的优越性;
[0004] 此外,片上网络路由方法的设计对于片上网络的性能也是至关重要的;路由方法的设计目标在于是否能够有效地避免阻塞的发生,充分利用片上网络的空闲资源,以此来改善片上网络的延迟和吞吐率;同时路由方法的设计还要尽可能少的占用片上资源,减小片上网络的功耗;现在,大多数片上网络采用确定性路由方法,当源节点和目的节点确定后,其传输的路径也就确定了,当该路径上某一节点发生阻塞时,数据包会停止路由进行等待;因此,这种路由方法增加了网络传输的延迟,导致整个网络负载的不平衡。

发明内容

[0005] 针对现有技术的不足,本发明提出一种片上网络拓扑结构及其自适应路由方法,以达到减小路由平均跳数和网络直径,实现根据阻塞情况自主调整,减小路由延迟,提高数据的传输效率的目的。
[0006] 一种片上网络拓扑结构,该片上网络拓扑结构为一个N×N的H-annular Mesh(半环形网格)片上网络拓扑结构。
[0007] 所述的N为偶数时,将片上网络中每一行中间的两个节点与该行的首尾节点相连接,将片上网络中每一列中间的两个节点与该列的首尾节点相连接。
[0008] 所述的N为奇数时,将每一行中间节点左右两侧的节点与首尾节点相连接,将每一列中间节点上下两侧的节点与首尾节点相连接。
[0009] 该片上网络拓扑结构x方向上新增连接线的方向为Tx方向,y方向上新增连接线的方向为Ty方向。
[0010] 所述的节点即为路由器,其中,既有Tx方向连线又有Ty方向连线的路由器有7个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口和Ty端口;只有Tx方向或Ty方向连线的路由器有6个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口或Ty端口;其余的路由器有5个端口,包括:本地端口、东向端口、西向端口、南向端口和北向端口。
[0011] 采用所述的片上网络拓扑结构进行的自适应路由方法,包括以下步骤:
[0012] 步骤1、在片上网络拓扑结构中,根据用户发送请求信息确定源节点和目的节点;
[0013] 步骤2、判断当前节点本身是否为目的节点,若是,则将要求发送的数据发送至当前节点的本地端口,否则,执行步骤3;
[0014] 步骤3、判断当前节点与目的节点之间的方向为东西方向之一、或南北方向之一、或东南方向、或西南方向、或东北方向、或西北方向,若为东西方向之一,则执行步骤4;若为南北方向之一,则执行步骤6;若为东南方向,则执行步骤8;若为西南方向,则执行步骤10;若为东北方向,则执行步骤12;若为西北方向,则执行步骤14;
[0015] 步骤4、判断当前节点是否有Tx端口,若有,则执行步骤5;否则,将要求发送的数据发送至东向端口或西向端口;
[0016] 步骤5、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,若有,则将要求发送的数据发送至Tx端口,否则,将要求发送的数据发送至东向端口或西向端口;
[0017] 步骤6、判断当前节点是否有Ty端口,若有,则执行步骤7;否则,将要求发送的数据发送至南向端口或北向端口;
[0018] 步骤7、判断当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Ty端口,否则,将要求发送的数据发送至南向端口或北向端口;
[0019] 步骤8、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤9;
[0020] 步骤9、判断当前节点的东向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或南向端口;
[0021] 步骤10、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤11;
[0022] 步骤11、判断当前节点的西向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或南向端口;
[0023] 步骤12、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤13;
[0024] 步骤13、判断当前节点的东向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或北向端口;
[0025] 步骤14、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤15;
[0026] 步骤15、判断当前节点的西向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或北向端口;
[0027] 步骤16、返回执行步骤2,直至当前节点为目的节点。
[0028] 步骤2所述的当前节点,初始时为源节点。
[0029] 步骤8所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤9,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0030] 步骤10所述的将要求发送的数据发送至Tx端口或Ty端口,需要首先判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤11,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0031] 步骤12所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤13,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0032] 步骤14所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤15,若否,则将要发送的数据发送至相应的Tx端口或Ty端口。
[0033] 步骤4所述的判断当前节点是否有Tx端口,具体为:
[0034] 当x=0、x=N-1、 和 时,当前节点具有Tx端口,当不满足上述条件时,当前节点不具有Tx端口;其中,x表示网络节点的横坐标,x=0,1,...,N-1;N表示网络每行或每列的节点个数;当N为偶数时,则T=N,Q=0;当N为奇数时,则T=N-1,Q=1;
[0035] 步骤6所述的判断当前节点是否有Ty端口,具体为:
[0036] 当y=0、y=N-1、 和 时,当前节点具有Ty端口,当不满足上述条件时,当前节点不具有Ty端口;其中,y表示网络节点的纵坐标,y=0,1,...,N-1。
[0037] 步骤5所述的判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,具体如下:
[0038] 当x=0时,则目的节点在当前节点的东向,则进一步判断x_dst是否等于x+i,若是,则当前节点将数据发送到东向端口进行输出;否则,当前节点将数据发送到Tx端口进行输出;其中,x_dst表示目的节点的横坐标;x表示网络节点的横坐标,x=0,1,...,N-1;N表示网络每行或每列的节点个数;当N为偶数时,则T=N,Q=0;当N为奇数时,则T=N-1,Q=1;i=1,2,…,t,t为整数,且
[0039] 当x=N-1时,则目的节点在当前节点的西向,则进一步判断x_dst是否等于x-i,若是,则当前节点将数据发送到西向端口进行输出;否则,当前节点将数据发送到Tx端口进行输出;
[0040] 当 时,若x_dst=x-i,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;
[0041] 当 时,若 即目的节点在当前节点的西向,且目的节点与当前节点之间有Tx方向的连线,则当前节点将数据发送到Tx方向端口输出;
[0042] 当 时,若x_dst=x+i,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
[0043] 当 时,若x_dst=x-i,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;
[0044] 当 时,若 即目的节点在当前节点的东向,且目的节点与当前节点之间有Tx方向的连线,则当前节点将数据发送到Tx端口输出;
[0045] 当 时,若x_dst=x+i,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
[0046] 当不满足上述条件时,则进一步判断x_dst是否等于x-i,其中i=1,2,…,t,t为整数,且此时t≤x,若是,则目的节点在当前节点的西向,当前节点将数据发送到西向端口进行输出;否则,目的节点在当前节点的东向,当前节点将数据发送到东向端口进行输出;
[0047] 步骤7所述的判断当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,具体如下:
[0048] 当y=0时,则目的节点在当前节点的北向,则进一步判断y_dst是否等于y+i,其中i=1,2,…,t,t为整数,且 是,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到Ty端口进行输出;其中,y_dst表示目的节点的纵坐标;y表示网络节点的纵坐标,y=0,1,...,N-1;
[0049] 当y=N-1时,则目的节点在当前节点的南向,则进一步判断y_dst是否等于y-i,若是,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到Ty端口进行输出。
[0050] 当 时,则若y_dst=y-i,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;
[0051] 当 时,若 即目的节点在当前节点的南向,且目的节点与当前节点之间有Ty方向的连线,则当前节点将数据发送到Ty端口输出;
[0052] 当 时,若y_dst=y+i,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
[0053] 当 时,若y_dst=y-i,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;
[0054] 当 时,若 即目的节点在当前节点的北向,且目的节点与当前节点之间有Ty方向的连线,则当前节点将数据发送到Ty端口输出;
[0055] 当 时,若y_dst=y+i,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
[0056] 当不满足上述条件时,则进一步判断y_dst是否等于y-i,其中i=1,2,…,t,t为整数,且此时t≤y,若是,则目的节点在当前节点的南向,当前节点将数据发送到南向端口进行输出;否则,目的节点在当前节点的北向,当前节点将数据发送到北向端口进行输出。
[0057] 本发明优点:
[0058] 本发明提出的一种片上网络拓扑结构及其自适应路由方法,本发明在路由平均跳数和网络直径方面,与2D-Mesh型拓扑结构相比,其路由平均跳数和网络直径都更小,具有和2D-Torus拓扑结构相同的优势;而且,H-annular Mesh(半环形网格)结构采用折半的连线,避免了2D-Torus拓扑结构的长连线在网络结构较大时带来的延迟问题,而且其访问路由节点的速度不亚于2D-Torus结构的片上网络,并没有为了提升访问速度来消耗更多的资源和空间,其硬件实现的复杂度低于2D-Torus结构的片上网络;本发明采用基于局部阻塞判断的自适应路由方法,不再被动的执行路由策略,而是通过对路由环境中阻塞信息的监控,结合“最短路径策略”,动态的调整下一跳的路由节点,尽可能规避阻塞严重或出现故障的路由节点,使数据通道的选择能够根据阻塞情况自主调整,从而减小路由延迟,提高数据的传输效率;路由方法具有的较高自适应性可以让数据尽可能节省时间地传输到目的地址。

附图说明

[0059] 图1为本发明一种实施例的6×6个节点的H-Annular Mesh片上网络结构图;
[0060] 图2为本发明一种实施例的7×7个节点的H-Annular Mesh片上网络结构图。

具体实施方式

[0061] 下面结合附图对本发明一种实施例做进一步说明。
[0062] 本发明实施例中,片上网络拓扑结构为一个N×N的H-annular Mesh片上网络拓扑结构;所述的N为偶数时,将网络中每一行中间的两个节点与该行的首尾节点相连接,将网络中每一列中间的两个节点与该列的首尾节点相连接;所述的N为奇数时,将每一行中间节点左右两侧的节点与首尾节点相连接,将每一列中间节点上下两侧的节点与首尾节点相连接;
[0063] 本发明实施例中,如图1所示,以6×6个节点的片上网络为例,即在每一行上共有6个路由节点,每一列上也共有六个路由节点;其中左下角为(0,0)节点,右上角为(5,5)节点,x和y坐标沿着右侧和上侧方向依次递增;x方向上新增连接线的方向称之为Tx方向,而y方向上新增连接线的方向则称之为Ty方向,例如:在第一行中,(0,0)节点与(2,0)节点和(0,2)节点相连接,那么当(0,0)节点访问在水平方向上距离大于或等于2的节点时,或者在竖直方向上访问节点距离大于或等于2的节点时,则不必再像之前的2D-Mesh结构依次对节点进行路由,而直接可以访问其中间节点,再继续路由过程。这样就缩减了路由路径的长度,降低了整个网络的网络延迟;当N为奇数时,7×7个节点的片上网络拓扑结构示意图如图2所示。
[0064] 本发明实施例中,节点即为路由器,其中,既有Tx方向连线又有Ty方向连线的路由器有7个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口和Ty端口;只有Tx方向或Ty方向连线的路由器有6个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口或Ty端口;其余的路由器有5个端口,包括:本地端口、东向端口、西向端口、南向端口和北向端口;
[0065] 对于N×N的H-annular Mesh片上网络,采用基于局部阻塞判断的自适应路由方法,所述基于局部阻塞判断的自适应路由算法的原理为:不再执行确定性的路由策略,而是在路由过程中对路由环境中的阻塞信息进行监控,同时结合“最短路径策略”,动态的调整下一跳的路由节点,尽可能规避阻塞严重或出现故障的路由节点,从而减小路由延迟,提高片上网络的吞吐率,即在当前路由节点进行路由计算前,首先检测路由方向上的局部阻塞信号,优先选择状态为空闲的路由节点;
[0066] 本发明实施例以6×6的H-Annular Mesh片上网络为例,阐述自适应路由方法:
[0067] 步骤1、在网络拓扑结构中,根据用户发送请求信息确定源节点和目的节点;
[0068] 本发明实施例中,设定源节点为S(x_s,y_s),目的节点为D(x_dst,y_dst),当前节点为C(x,y)。路由开始时,当前节点即为源节点,即C(x,y)=S(x_s,y_s);同时每个路由节点具有8个方位,分别为东、南、西、北、东北、东南、西北和西南;节点即为路由器,其中,既有Tx方向连线又有Ty方向连线的路由器有7个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口和Ty端口;只有Tx方向或Ty方向连线的路由器有6个端口,包括:本地端口、东向端口、西向端口、南向端口、北向端口、Tx端口或Ty端口;其余的路由器有5个端口,包括:本地端口、东向端口、西向端口、南向端口和北向端口;同时设定该H-annular Mesh片上网络的(0,0)节点位于该片上网络的左下角;
[0069] 步骤2、判断当前节点本身是否为目的节点,若是,则将要求发送的数据发送至当前节点的本地端口,否则,执行步骤3;
[0070] 步骤3、判断当前节点与目的节点之间的方向为东西方向之一、或南北方向之一、或东南方向、或西南方向、或东北方向、或西北方向,若为东西方向之一,则执行步骤4;若为南北方向之一,则执行步骤6;若为东南方向,则执行步骤8;若为西南方向,则执行步骤10;若为东北方向,则执行步骤12;若为西北方向,则执行步骤14;
[0071] 步骤4、判断当前节点是否有Tx端口,若有,则执行步骤5;否则,将要求发送的数据发送至东向端口或西向端口;
[0072] 步骤5、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,若有,则将要求发送的数据发送至Tx端口,否则,将要求发送的数据发送至东向端口或西向端口;
[0073] 本发明实施例中,若x=0,说明当前节点具有Tx方向的连线,目的节点在当前节点的东向,则进一步判断x_dst是否等于x+1,若是,则当前节点将数据发送到东向端口进行输出;否则,当前节点将数据发送到Tx端口进行输出;
[0074] 本发明实施例中,若x=5,说明当前节点具有Tx方向的连线,目的节点在当前节点的西向,则进一步判断x_dst是否等于x-1,若是,则当前节点将数据发送到西向端口进行输出;否则,当前节点将数据发送到Tx方向端口进行输出;
[0075] 本发明实施例中,若x=2,说明当前节点具有Tx方向的连线,则
[0076] ●若x_dst=x-1,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;
[0077] ●若x_dst=x-2,即目的节点在当前节点的西向,且目的节点与当前节点之间有Tx的连线,则当前节点将数据发送到Tx方向端口输出;
[0078] ●若x_dst=x+i,其中i=1,2,3,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
[0079] 本发明实施例中,若x=3,说明当前节点具有Tx方向的连线,则
[0080] ●若x_dst=x-i,其中i=1,2,3,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;
[0081] ●若x_dst=x+2,即目的节点在当前节点的东向,且目的节点与当前节点之间有Tx的连线,则当前节点将数据发送到Tx方向端口输出;
[0082] ●若x_dst=x+1,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
[0083] 若不满足上述条件,说明当前节点不具有Tx方向的连线,则进一步判断x_dst是否等于x-i,其中i=1,2,…,t,t为整数,且t≤x,若是,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出;否则,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
[0084] 步骤6、判断当前节点是否有Ty端口,若有,则执行步骤7;否则,将要求发送的数据发送至南向端口或北向端口;
[0085] 步骤7、判断当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Ty端口,否则,将要求发送的数据发送至南向端口或北向端口;
[0086] 本发明实施例中,若y=0,说明当前节点具有Ty方向的连线,目的节点在当前节点的北向,则进一步判断y_dst是否等于y+1,若是,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到Ty方向端口进行输出。
[0087] 本发明实施例中,若y=5,说明当前节点具有Ty方向的连线,目的节点在当前节点的南向,则进一步判断y_dst是否等于y-1,若是,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到Ty方向端口进行输出。
[0088] 本发明实施例中,若y=2,说明当前节点具有Ty方向的连线,则
[0089] ●若y_dst=y-1,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;
[0090] ●若y_dst=y-2,即目的节点在当前节点的南向,且目的节点与当前节点之间有Ty的连线,则当前节点将数据发送到Ty方向端口输出;
[0091] ●若y_dst=y+i,其中i=1,2,3,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
[0092] 本发明实施例中,若y=3,说明当前节点具有Ty方向的连线,则
[0093] ●若y_dst=y-i,其中i=1,2,3,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;
[0094] ●若y_dst=y+2,即目的节点在当前节点的北向,且目的节点与当前节点之间有Ty的连线,则当前节点将数据发送到Ty方向端口输出;
[0095] ●若y_dst=y+1,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
[0096] 本发明实施例中,若不满足上述条件,说明当前节点不具有Ty方向的连线,则进一步判断y_dst是否等于y-i,其中i=1,2,…,t,t为整数,且t≤y,若是,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;否则,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
[0097] 步骤8、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤9;
[0098] 所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤9,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0099] 步骤9、判断当前节点的东向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或南向端口;
[0100] 本发明实施例中,采用pend信号作为传输方向上的局部阻塞信号,该信号为0时代表路由节点某一路由方向不阻塞,为1时代表路由节点的某一路由方向阻塞;所述pend信号,包括:pend_e信号、pend_w信号、pend_s信号、pend_n信号、pend_Tx信号和pend_Ty信号;所述pend_e信号代表东向输出路径的阻塞状态,所述pend_w信号代表西向输出路径的阻塞状态,所述pend_s信号代表南向输出路径的阻塞状态,所述pend_n信号代表北向输出路径的阻塞状态,所述pend_Tx信号代表Tx方向输出路径的阻塞状态,所述pend_Ty信号代表Ty方向输出路径的阻塞状态;
[0101] 本发明实施例中,东向阻塞即pend_e=1而南向不阻塞即pend_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到东向端口进行输出[0102] 步骤10、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤11;
[0103] 所述的将要求发送的数据发送至Tx端口或Ty端口,需要首先判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤11,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0104] 步骤11、判断当前节点的西向端口和南向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或南向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或南向端口;
[0105] 本发明实施例中,若西向阻塞即pend_w=1,而南向不阻塞即pend_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
[0106] 步骤12、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤13;
[0107] 所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤13,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0108] 步骤13、判断当前节点的东向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至东向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至东向端口或北向端口;
[0109] 本发明实施例中,若东向阻塞即pend_e=1而北向不阻塞即pend_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
[0110] 步骤14、判断当前节点与目的节点之间的路径上是否有Tx方向连线且该连线属于当前节点的Tx端口,或当前节点与目的节点之间的路径上是否有Ty方向连线且该连线属于当前节点的Ty端口,若有,则将要求发送的数据发送至Tx端口或Ty端口,否则,执行步骤15;
[0111] 所述的将要求发送的数据发送至Tx端口或Ty端口,需要判断对应的Tx端口或Ty端口是否有阻塞情况,若是,则执行步骤15,若否,则将要发送的数据发送至相应的Tx端口或Ty端口;
[0112] 步骤15、判断当前节点的西向端口和北向端口是否有阻塞情况,若上述两个端口均阻塞,则等待阻塞情况消失后将要求发送的数据发送至西向端口或北向端口,若上述两个端口其中之一阻塞,则将要求发送的数据发送至未阻塞的端口,若上述两个端口均未阻塞,则通过轮转的方式将要求发送的数据发送至西向端口或北向端口;
[0113] 本发明实施例中,若西向阻塞即pend_w=1而北向不阻塞即pend_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到西向端口进行输出[0114] 步骤16、返回执行步骤2,直至当前节点为目的节点。
[0115] 在片上网络中,任意两个路由节点间的坐标距离的最大值被称为网络直径;所以如果能够减小网络直径则能够改变网络传输的速度;对于6×6的2D-Mesh结构网络,其网络直径为10,而对于6×6的2D-Torus结构网络,其网络直径则为6;对于6×6的H-annular Mesh网络,其网络直径则为从(0,0)节点到(5,5)节点的距离,也即为6;则三类拓扑结构的网络直径比较如表1所示。
[0116] 表1三类拓扑结构的网络直径
[0117]
[0118] 可以看出,H-annular Mesh在网络直径方面与2D-Torus结构没有区别,而优于2D-Mesh型片上网络。
[0119] 当对网络中数据包到达目的节点的跳数取平均值时,就得到了网络路由平均跳数;一个片上网络的路由平均跳数直接决定了网络的吞度量与网络延迟;经过计算,得到三种不同类型拓扑结构的路由平均跳数如表2所示:
[0120] 表2不同拓扑的网络直径和路由平均跳数
[0121]
[0122] 可以看出,H-annular Mesh片上网络的路由平均跳数优于2D-Mesh型的片上网络;而且,2D-Torus网络中的首尾长连线导致链路形成了闭环,因此在传输数据包的过程中,容易发生死锁的问题,若采用虚拟通道的方法来解决这个问题,会占据大量的片上资源,并不利于硬件实现,从而无法体现出片上网络的优越性;而H-annular Mesh结构采用折半的连线,避免了长连线在网络结构较大时带来的延迟问题,而且其访问路由节点的速度不亚于
2D-Torus网络,并没有为了提升访问速度来消耗更多的资源和空间,其硬件实现的复杂度低于2D-Torus结构的片上网络;
[0123] 通过以上分析可知,采用H-annular Mesh拓扑结构的片上网络的通信性能从整体上优于采用2D-Mesh或2D-Torus拓扑结构的片上网络。