CN101515893A - 确定rdt片上网络最短路由的方法 - Google Patents

确定rdt片上网络最短路由的方法 Download PDF

Info

Publication number
CN101515893A
CN101515893A CNA2009100969828A CN200910096982A CN101515893A CN 101515893 A CN101515893 A CN 101515893A CN A2009100969828 A CNA2009100969828 A CN A2009100969828A CN 200910096982 A CN200910096982 A CN 200910096982A CN 101515893 A CN101515893 A CN 101515893A
Authority
CN
China
Prior art keywords
link
node
rank
network
rdt
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.)
Granted
Application number
CNA2009100969828A
Other languages
English (en)
Other versions
CN101515893B (zh
Inventor
史册
陶文质
刘鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2009100969828A priority Critical patent/CN101515893B/zh
Publication of CN101515893A publication Critical patent/CN101515893A/zh
Application granted granted Critical
Publication of CN101515893B publication Critical patent/CN101515893B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及确定RDT片上网络最短路由的方法。现有方法需要经过多次循环计算,时间开销较大。本发明方法首先为RDT网络建立坐标系,并确定节点编号以及通信节点的位置,然后确定目标节点D的镜像超集M’(D)、确定最佳超镜像点、建立X1-Y1坐标系,使用VR方法确定S和M之间的矢量分解结果,保存S和D之间的路由方案,启动容错处理机制。本发明有效地结合了VR和CCVR两种路由方法的优势,同时克服了各自的缺点,能够以较小的计算开销获得RDT(n,1)类片上网络中任意两点的最短路由。本发明提出的容错机制能够较好地解决目前解决方法中存在的性能较低的问题。

Description

确定RDT片上网络最短路由的方法
技术领域
本发明属于计算机技术领域,涉及基于RDT的片上网络(Network-on-Chip,NoC),具体是一种面向RDT(n,R,1)片上网络的最短路由寻找方法以及应对网络链路(Link)、节点(Tile)错误的容错机制的实现方法。
背景技术
RDT的全称是Recursive Diagonal Torus,是面向大规模并行处理器的一类片上互连网络拓扑结构的总称。该拓扑结构的目的在于减小基于二维网格(2D-Mesh)的大规模并行处理器的网络半径,以便减小不同处理器之间的通信延迟,目前已经应用在大规模并行机JUMP-1中。RDT的思想是在二维网格的基础上构建不同层次(rank)、不同大小的Torus网络。Torus网络的层次越高,链路跨度也就越大,因此可以减小整个片上网络的半径。
目前针对RDT网络的路由方法主要有以下两种:矢量路由(VR,VectorRouting)方法和环路编码矢量路由(CCVR,Circular Coded Vector Routing)方法。VR和CCVR的基本思想都是寻找一种合适的矢量分解方法,将RDT网络中通信发起节点(源节点)和通信接收节点(目的节点)之间的相对矢量分解为不同层次的Torus网络路由,以便减少这两个通信节点之间的路由长度。VR的分解方法是根据经验推导确定矢量分解等式中系数间的关系以及最终路由结果。该方法较为简单,只需要一次运算即可得到最终结果。但是由于没有考虑通信节点在网络中的绝对位置,所以往往无法利用Torus环路找到最短路由。CCVR的方法是首先对网络中每个节点进行格雷编码(GrayCode),然后把源节点作为当前考虑节点,根据当前考虑节点和目的节点之间的码值关系确定路由第一条链路的走向,然后将当前考虑节点更新为刚刚确定的链路终端节点。依次类推,不断更新当前考虑节点及对应的路由信息,直到当前考虑节点与目的节点重合为止。这种方法可以得到最短路由,但是需要经过多次循环计算,时间开销较大。
此外在实际的片上网络中,链路和节点在通信过程中出错的情况是有可能出现的。这会极大影响通信的成功率和效率。因此需要在基本路由方法的基础上添加容错机制以避开出错的链路或者节点,尝试寻找其它路由以顺利到达目的地。目前的容错机制主要包括提供备用链路和使用容错路由两种方法。前者的缺陷在于备用链路的存在导致硬件成本较高。后者则是目前面向RDT网络容错机制所使用的方法,主要有FVRSF(Floating Vector Routingunder Single Failure)和FVRMF(Floating Vector Routing under MultipleFailure)两种。FVRSF只考虑一条链路或者一个节点出错,忽略了实际传输过程中多链路、多节点同时出错的情况。FVRMF可以处理多条链路或多个节点出错的情况,但备选路由与错误链路必须处于同一Torus网络层,这往往导致总的路由长度的增加。此外它只考虑当前节点在当前Torus网络层内连接的四条链路,并没有考虑到全局链路的出错状况。而局部决策往往无法产生全局最优结果。
有关RDT网络的基本定义以及VR方法的实现细节相关介绍请参考文献Yulu Yang,Akira Funahashi,″Recursive Diagonal Torus:AnInterconnection Network for Massively Parallel Computers″,IEEETRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS,2001)。有关CCVR,FVRSF以及FVRMF的实现细节请参考文献Shankar Narayanan Neelakrishnan,″DESIGN AND IMPLEMENTATION OF NOC ROUTERS AND THEIR APPLICATION TOPRDT-BASED NOC’S″,Thesis for Master of Science Degree in ElectricalEngineering Department of Electrical and Computer Engineering HowardR.Hughes College of Engineering,University of Nevada,Las Vegas,2007。
发明内容
本发明的目的是针对上述VR和CCVR路由确定方法的缺陷,提出一种高性能、低复杂度的面向RDT(n,R,1)片上网络的最短路由确定方法。该方法既可以解决VR无法确保总能找到最短路由的问题,而且时间复杂度与CCVR相比降低很多。此外,本方法可以解决FVRSF和FVRMF容错路由方法无法产生全局优化结果的低性能问题,可以根据整个RDT网络内链路的出错状况,在尽可能减少路由长度的条件下综合考虑网络中不同层次的链路,并最终找出一条避开所有出错链路的可用路由。
本发明针对的容错模型定义如下:
①RDT片上网络中的任何节点和链路发生错误时,数据无法在一条错误链路上传输也无法通过一个错误节点进行转发;
②错误模型为静态,就是当前节点对数据包进行转发的过程中与该节点相连的链路不会出现新错误;
③产生通信的源节点和目标节点均是正常工作;
④错误的发生是相互独立的;
⑤如果一个节点发生错误,则认为所有与该节点直接相连的链路均产生错误,即如果节点发生错误则该节点与整个网络隔绝,将节点错误归并到链路错误;
⑥同一层Torus网络内的链路错误信息对网络中的所有正常节点均是可知的。
基于以上容错模型的最短路由方法的具体步骤是:
步骤(1)为RDT网络建立坐标系,并确定节点编号以及通信节点的位置:
首先确定目标RDT(n,1)网络的规模,表示为N×N;以网络中的左上角节点为原点,以水平向右为x轴正方向,竖直向下为y轴正方向,建立X0-Y0直角坐标系,其中相邻两个节点之间的长度定为X0-Y0坐标系的单位长度;
然后按照自上而下的顺序对每行的N个节点自左到右依次编号,RDT中每个节点的编号与其在X0-Y0坐标系中的坐标满足下面的关系:
Figure A20091009698200091
节点K∈目标N×N RDT(n,1),其坐标为(xk,yk),且满足xk∈[0,N-1],yk∈[0,N-1],K的编号Num(k)=N·yk+xk,该网络中节点编号的取值范围是[0,N2-1];
确定需要进行通信的两个节点S和D在坐标系X0-Y0内的位置:S(Sx,Sy),D(Dx,Dy),其中S为通信源节点,D为通信目标节点;
RDT(n,1)的完整表述形式为RDT(n,R,1),其中1表示该RDT网络中只包含两层Torus:rank-0和rank-1;R表示该RDT网络形成的Torus层数从0开始的最大值;设定RDT网络为两层Torus网络,那么R≥1,将RDT(n,R,1)简写为RDT(n,1);n称为基数(cardinal number),表示rank-1 Torus内部相邻两节点在rank-0内的跨度,n≥2;
给定一个N×N的Torus网络结构,满足N=nk,k为正整数,且N≥4;该网络为rank-0 Torus网络,为其建立X0-Y0坐标系;为rank-0中的每一个节点P(x,y)添加四条链路:这四条链路分别将节点P和节点P1((x+n)mod N,(y+n)mod N)、P2((x+n)mod N,(y-n)mod N)、P3((x-n)mod N,(y+n)mod N)和P4((x-n)mod N,(y-n)mod N)连接起来。rank-0 Torus网络中的各条链路为rank-0链路,新增加的链路为rank-1链路;所有能够直接或间接与点P相连的rank-1链路构成一个Torus网络——rank-1 Torus;通过上述方式建立起来的片上网络结构为RDT(n,R,1),简写为RDT(n,1);
步骤(2)确定目标节点D的镜像超集M’(D)
M’(D)为D与其在X0-Y0坐标系内四个镜像点D’north,D’east,D’south,D’west的集合,即M’(D)={D,D’north,D’east,D’south,D’west}。D’north,D’east,D’sonth,D’west分别位于点D的竖直向上、水平向右、竖直向下和水平向左,而且与D的距离均为N;这四个镜像点的坐标分别为:D’north(Dx,Dy-N),D’east(Dx+N,Dy),D’south(Dx,Dy+N),D’wcst(Dx-N,Dy),镜像超集中的每一个元素为超镜像点;
步骤(3)确定最佳超镜像点
计算M’(D)中各个超镜像点与源节点S之间的曼哈顿距离(Manhattandistance),选择与S的曼哈顿距离最短的超镜像点作为最佳超镜像点,并记为M,具体步骤是:
a.确定源节点S指向目的节点D的相对矢量V=(VΔx,VΔy),其中VΔx=Dx-Sx,表示V在X0-Y0坐标系中水平方向的分量;VΔy=Dy-Sy,表示V在X0-Y0坐标系中竖直方向的分量;
b.初始化最佳超镜像点M:M(Mx,My)=D(Dx,Dy)。
c.如果|VΔx|与|VΔy|中大者大于RDT维度的一半,则转入步骤d;如果小于等于RDT维度的一半,则转入步骤e;
d.如果|VΔx|与|VΔy|中大者是|VΔx|,则VΔx大于0时,将M更新为D’west,VΔx小于等于0时,将M更新为D’east
如果|VΔx|与|VΔy|中大者是|VΔy|,则VΔy大于0时,将M更新为D’north,VΔy小于等于0时,将M更新为D’south
e.返回最佳超镜像点M;
步骤(4)建立X1-Y1坐标系
以S为原点,右下方为x轴正方向、左下方为y轴正方向,建立X1-Y1坐标系,其单位长度为rank-1中的链路长度。可以认为X1-Y1坐标系是将X0-Y0坐标系的原点平移至源节点S,然后顺时针旋转45°,再将坐标轴度量扩大为原来的n·21/2形成的。任给X0-Y0坐标系中的一点T(Tx,Ty),其在以S为原点建立起来的X1-Y1坐标系中的坐标为
T’(((Ty-Sy)+(Tx-Sx))/2n,((Ty-Sy)-(Tx-Sx))/2n)    (1)
如果T’的X1、Y1坐标值均为整数,那么T’通过rank-1链路直接或间接与S相连接。按上述方法建立的X1-Y1坐标系并不包括所有的rank-1链路,只包括了能够与S直接或间接相连的rank-1链路。因为rank-1构建时,需要对X0-Y0中的所有节点增加rank-1链路。而基于不同rank-0节点建立起来的rank-1网络要么完全重叠,要么互不相交。因此一个X1-Y1坐标系只能表示与其原点直接或间接相连的rank-1链路,无法表示与当前rank-1网络不相交的其它rank-1链路。
步骤(5)使用VR方法确定S和M之间的矢量分解结果
首先确定S指向M的相对矢量:A=a0·x0+b0·y0,其中x0,y0分别表示X0-Y0坐标系内的x方向和y方向的单位矢量,a0和b0分别表示S指向M的相对矢量在X0方向和Y0方向的分量,a0=Mx-Sx,b0=My-Sy;然后将相对矢量A分解X0-Y0坐标系单位矢量与x1-y1坐标系单位矢量之和的形式,表示为:A=vecx1·x1+vecy1·y1+vecx0·x0+vecy0·y0,其中x1,y1分别表示X1-Y1坐标系内的x方向和y方向的单位矢量;|vecx1|和|vecy1|分别表示rank-1内经过X1方向和Y1方向的链路个数,若vecx1、vecy1为正数则表示链路方向为X1和Y1的正方向,为负数则为负方向;|vecx0|和|vecy0|分别表示rank-0内经过X0方向和Y0方向的链路个数,若vecx0、vecy0为正数则表示链路方向为X0和Y0的正方向,为负数则为负方向;vecx0、vecy0、vecx1和vecy1统称为矢量系数,表示数据包从S到M转发过程中在各链路层各方向的转发次数;分解之后从S到M所要经过的链路总数表示为各矢量系数的绝对值之和,即:|vecx1|+|vecy1|+|vecx0|+|vecy0|,这也是从S到D所要经过的链路总数;矢量A的分解使用VR方法:
vecx1=(a0+b0)/(2×n)  (除法按照五舍六入取整)
vecy1=-(a0-b0)/(2×n)  (除法按照五舍六入取整)
vecx0=a0-(vecx1-vecy1)×n    (2)
vecy0=b0-(vecx1+vecy1)×n
步骤(6)保存S和D之间的路由方案
根据步骤(5)的分解结果,将S到M的路由视为rank-1链路和rank-0链路的组合,根据S到M的矢量系数确定S到D的路由方案,具体方法是:矢量系数向0逼近,把逼近过程中对应的数据包转发方向应用在对应的RDT网络即可得到S到D的最短路由;数据包每经过一个节点转发,矢量系数都应做相应的更新。具体而言,rank-1内X1方向的链路个数为|vecx1|,若vecx1>0,则通信过程中数据经过对应链路的方向为X1的正方向,传递完成后vecx1自减1;若vecx1≤0,则为X1的负方向,传递完成后vecx1自加1;vecy1和vecx0、vecy0分别指示了数据包在rank-1链路层的Y1方向的传递次数和数据包在rank-0链路层的X0、Y0方向的传递次数;数据包在链路层对应方向转发之后,相应的矢量系数在正负号不变的情况下绝对值自减1。值得注意的是路由信息只包含了各链路层各方向数据包转发的次数,并没有对不同转发方向之间的顺序做出限制。所以路由信息依据不同的转发顺序可以有多种具体实现方案,具体数量用下述公式计算:
(|vecx1|+|vecy1|+|vecx0|+|vecy0|)!/(|vecx1|!·|vecy1|!·|vecx0|!·|vecy0|!)(3)
符号“!”表示阶乘;
这些不同的路由方案在长度上是一致的,但是数据包转发顺序的不同对应于不同的传输链路排列方案,也就导致了不同的传输路径。为了尽可能地避免数据包传递过程中遇到错误链路或节点,需要将矢量系数(vecx1,vecy1,vecx0,vecy0)对应的具体实现方案用一个先进先出的队列保存起来——RI,路由消息队列。路由消息队列RI中任一元素r的取值范围是{-4,-3,-2,-1,1,2,3,4},其中4表示数据包通过rank-1链路向X1正方向转发,3表示数据包通过rank-1链路向Y1正方向转发,2表示数据包通过rank-0链路向X0正方向转发,1表示数据包通过rank-0链路向Y0正方向转发;-4,-3,-2,-1则分别表示对应的负方向;设RI={r1,r2,r3,…,rn},那么数据包将依次按照r1,r2,r3,…,rn的顺序在RDT中进行传递,数据包的转发方向由对应的ri(i=1,2,…,n)决定,每转发一次,队列RI的首个元素就被弹出并抛弃;当RI为空时,该数据包的传递过程结束;RI与路由信息(vecx1,vecy1,vecx0,vecy0)一起传输,并在转发过程中同步更新。RI可以视为(vecx1,vecy1,vecx0,vecy0)的一种具体实现方案。不同的路由实现方案对应着RI中元素的不同排列顺序,但是路由的起点和终点是一致的。初始情况下,RI内元素按照下面的原则进行排列:先考虑通过rank-1内的链路,再考虑通过rank-0内的链路。在同一rank内,先考虑通过x方向的链路,再考虑通过y方向的链路。RI和路由矢量在每到达一个新节点时进行更新。当(vecx1,vecy1,vecx0,vecy0)等于(0,0,0,0)时,表示数据包已经从S传递至D,通信过程完成。
步骤(7)启动容错处理机制
根据步骤(6)中RI队列的内容得到一个初始的S到D的路由实现方案,本步骤用于检测该方案是否能够避开当前网络中的所有错误链路。如果步骤(6)确定的路由方案能够避开当前网络中的所有错误链路,就按照RI队列决定的路由方案实现源节点S到目的节点D的通信过程;如果不能避开当前网络中的所有错误链路,就对RI队列进行修改以便避开所有的错误链路。本步骤提出的方法可以考虑多节点、多链路出错状况,通过全局分析选择可用的路由方案以尽可能地减少为了规避错误链路而额外增加的路由长度。其基本原理是统筹规划rank-1和rank-0内的链路排列顺序以便尽可能地减少总链路长度。当无法根据给定矢量系数找到一种最短路由方案来规避所有的错误链路时,考虑增加额外链路。本步骤包括以下步骤:
f.设定当前考虑节点P,令P=S,如果矢量系数vecx0,vecy0,vecx1,vecy1均为0,则转到步骤n,否则转入步骤g;
g.以P为原点建立X1-Y1坐标系:收集rank-0以及P所在的rank-1范围内的链路损坏信息,并分别保存在
Figure A20091009698200142
中。
Figure A20091009698200143
是一个N2×2的二维矩阵。 ∀ i ∈ [ 0 , N 2 - 1 ] , i表示目标N×N RDT(n,1)中的节点编号,
Figure A20091009698200145
分别表示与节点i紧密相连的东方(X0正方向)和南方(Y0正方向)rank-0链路(包括回路)。
Figure A20091009698200146
中各个元素的取值范围是{0,1}。其中0表示该链路已经损坏,1表示该链路工作正常。
Figure A20091009698200148
类似也是一个N2×2的二维矩阵。 ∀ i ∈ [ 0 , N 2 - 1 ] , i表示目标N×N RDT(n,1)中的节点编号,
Figure A200910096982001410
分别表示与节点i紧密相连的东南方(X1正方向)和西南方(Y1正方向)rank-1链路(包括回路)。
Figure A200910096982001411
表示能够与节点P直接或间接相连的各条rank-1链路损坏信息的集合,根据公式(1)可得:
L → 1 ( P ) = { L → 1 ( i , j ) | i ′ x mod 2 n = 0 , i ′ y mod 2 n = 0 , j ∈ [ 0,1 ] }
其中(i’xi’y)表示编号为i的节点在以P为原点建立的X1-Y1坐标系中的坐标。
Figure A200910096982001413
中各元素的取值范围及含义与
Figure A200910096982001414
相同。
Figure A200910096982001415
Figure A200910096982001416
更新之后,如果vecx1、vecy1均为0,则转入步骤h,否则转入步骤i;
h.根据RI确定以P为起点即将经过的rank-0链路,如果rank-0链路是有损坏的情况出现,则转入步骤j,否则转入步骤k;
i.根据RI确定以P为起点即将经过的rank-1链路如果rank-1链路是有损坏的情况出现,则转入步骤j,否则转入步骤k;
j.首先确定指定rank内规避所有错误链路的路由方案,同时保证路由长度最短,具体是:
所得到的路由方案由临时的路由消息队列RI_temp保存,定义r表示需要进行处理的rank;如果该步骤是由步骤h或j转入,则r=0;如果由步骤i转入,则r=1。定义Search_path作为该步骤实现方法的名称,其目的是根据P的位置以及待处理的网络层次r确定规避所有错误路径的路由方案并保存在RI_temp_r中,即令RI_temp_r=Search_path(P,r)。具体实现细节如下所示:以P为起点在规避所有错误链路的条件下根据RI中rank-r的路由信息采用二叉搜索树方法确定对应rank内的链路排列顺序,如果这样的路由存在,那么返回一个表示该路由的信息队列并保存在RI_temp_r中,如果这样的路由不存在或者RI中不包含rank-r的路由信息,则返回一个空队列。在Torus网络内部,数据转发方向必然是X正、负方向(二者必居其一),或Y正、负方向(二者必居其一)。二叉搜索树方法首先从RI中提取所有属于rank-r的元素,并按照固有的顺序保存在新的路由信息队列RI_r中,用Q表示在无错网络中按照RI_r中定义的路由P将会到达的目的节点,二叉树有三类节点:根节点、中间节点和叶子节点,每个节点包含RI_r中元素的个数size(RI_r),取值范围是{0,1},rH和rV表示rank-r的数据包转发方向,两者相互正交;RI_r中的元素表示数据包在rank-r内的转发方向,当RI_r中某个元素表示的转发方向为rH时,该元素在二叉搜索树节点中的对应值为1,当RI_r中某个元素表示的转发方向为rV时,该元素在二叉搜索树节点中的对应值为0。二叉搜索树中,根节点不包含任何元素的数值信息,中间节点确定了部分元素的数值,叶子节点则包含所有元素的数值信息。所以叶子节点可以视为RI_r的一个可用解,对应了一种rank-r内的可用路由方案。得到叶子节点后,根据其内容对RI_r中的元素重新排序并保存在RI_temp_r中。为了降低计算复杂度,在二叉搜索树的建立过程中采用深度优先的方式,只要找到一个叶子节点就结束整个搜索过程。
然后根据得到的路由方案决定后续步骤,具体是:
如果得到的RI_temp_r为空,同时r为1,则令r=0,重复步骤j;如果r=0,则转入步骤k;如果若RI_temp_r非空,则转入l;
k.整个处理过程进入到该步骤,表示不可能在rank-1和rank-0内找到总路由长度不增加而且可以规避所有错误链路的路由方案,只能尝试增加额外链路。按照路由信息队列的取值原则,搜集点P在不同rank内的所有可用链路并保存在集合LINK中,若LINK存在一个元素r_sel与RI中的任一元素正交,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果LINK中的所有元素均不与RI中的任何一个元素正交,且LINK中存在一个元素r_sel与RI中任一元素处于不同rank,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果上述条件均不满足,且LINK存在一个元素r_sel与RI中任一元素处于同一rank且方向相反,那么将r_sel和-r_sel添加到RI队列首部,转入步骤m;
1.本步骤根据RI_temp_r的内容更新RI。首先确定RI_temp_r保存的路由信息所在的网络层,即r的值。然后在RI中寻找处于rank-r内的各个元素,并将这些元素按照顺序依次替换为RI_temp_r中的元素。转入步骤m。
m.根据RI中位于队首的元素,选择对应的链路对数据包进行转发,并将RI队首元素弹出。然后根据转发的链路对矢量系数(vecx1,vecy1,vecx0,vecy01)进行更新。将P更新为数据包转发到的新节点。如果更新后的RI为空,转入步骤n,如果更新后的RI非空,转入步骤g;
n.整个通信过程结束。
本发明有效地结合了VR和CCVR两种路由方法的优势,同时克服了各自的缺点。能够以较小的计算开销获得RDT(n,1)类片上网络中任意两点的最短路由。此外,本发明提出的容错机制能够较好地解决目前解决方法中存在的性能较低的问题。
附图说明
图1为本发明方法的流程图;
图2为本发明方法提出的容错机制流程图;
图3为16×16 RDT(2,1)网络示意图;
图4为二叉搜索树示意图。
具体实施方式
下面结合附图和实施方法对本发明作进一步的详细说明:
图1是本发明所提出的面向RDT(n,1)片上网络具有全局优化容错能力的最短路由确定方法的流程图。该图共包括七个流程:分别与之前介绍的七个步骤相对应,其中步骤(7)有关容错处理机制的流程图在图2中有详细描述。图2中的虚线框表示容错处理机制当中的子步骤。下面以16×16的RDT(2,1)片上网络为例逐一说明图1所示各个流程的实现方式。
步骤(1)为RDT rank-0网络建立坐标系,确定节点编号以及通信节点的位置:
首先确定目标RDT(n,1)网络的规模。如图3所示,该网络的维度N=16,是16×16的RDT(2,1)网络,其中n=2。以该网络的左上角节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向建立X0-Y0坐标系。然后为网络中的各个节点编号。给定X0-Y0中的一个节点k(xk,yk),k的编号Num(k)=16yk+xk。然后确定待通信的两个节点的位置,图3中通信源节点为S,其坐标为S(Sx,Sy)=S(4,4),编号为68;通信目的节点为D,其坐标为D(Dx,Dy)=D(13,4),编号为77。
步骤(2)确定目标节点D的镜像超集M’(D):
然后根据镜像点的定义确定通信目标节点D的四个镜像点以及镜像超集M’(D)。M’(D)={D,D’north,D’east,D’south,D’west},M’(D)中的每一个元素均为超镜像点。D’north,D’east,D’south,D’wsest是D的镜像点,分别位于点D的竖直上方、水平右方、竖直下方和水平左方,其坐标为D’north(Dx,Dy-N),D’east(Dx+N,Dy),D’south(Dx,Dy+N),D’west(Dx-N,Dy)
如图3所示:M’(D)={D(13,4),D’north(13,-12),D’east(29,4),D’south(13,20),D’west(-3,4)}。这些镜像点并不是真实的RDT网络节点,只用于表示可进行VR分解的候选节点。镜像点和通信源节点之间的相对矢量才具有真实的物理意义,即在考虑RDT网络中不同Torus环路的条件下,S和D之间的相对位置。
步骤(3)确定最佳超镜像点
最佳超镜像点用M表示,是M’(D)中与源节点S之间的曼哈顿距离(Manhattan distance)最短的超镜像点。确定M的基本步骤如下:
a.确定源节点S指向目的节点D的相对矢量V=(VΔx,VΔy),其中VΔx=Dx-Sx,表示V在X0-Y0坐标系中水平方向的分量;VΔy=Dy-Sy,表示V在X0-Y0坐标系中竖直方向的分量;如图3所示,S指向D的相对矢量V(VΔx,VΔy)=V(Dx-Sx,Dy-Sy)=V(13-4,4-4)=V(9,0);
b.初始化最佳超镜像点M:M(Mx,My)=D(Dx,Dy)=D(13,4);
c.如果|VΔx|与|VΔy|中大者大于RDT维度的一半,则转入步骤d;如果小于等于RDT维度的一半,则转入步骤e;图3所示例子中|VΔx|与|VΔy|中大者为|VΔx|=9,大于RDT维度的一半8,因此转入步骤d;
d.如果|VΔx|与|VΔy|中大者是|VΔx|,则VΔx大于0时,将M更新为D’west,VΔx小于等于0时,将M更新为D’east;如果|VΔx|与|VΔy|中大者是|VΔy|,则VΔy大于0时,将M更新为D’north,VΔy小于等于0时,将M更新为D’south;图3所示例子中,|VΔx|与|VΔy|中大者是|VΔx|,且VΔx大于0,将M更新为D’west,所以M坐标为(-3,4)
e.返回最佳超镜像点M;
步骤(4)为RDT rank-1网络建立坐标系
以S为原点,右下方为x轴正方向、左下方为y轴正方向,建立X1-Y1坐标系,其单位长度为rank-1的链路长度;在图3所示例子中,X1-Y1坐标系原点为X0-Y0坐标系中的S(4,4),与X0-Y0相比顺时针旋转了45°,并且单位长度扩大为2·221/2。X0-Y0坐标系中的一点T(Tx,Ty),其在以S为原点建立起来的X1-Y1坐标系中的坐标为:
T’(((Ty-Sy)+(Tx-Sx))/2n,((Ty-Sy)-(Tx-Sx))/2n)    (1)
比如S在X0-Y0坐标系中的坐标为(4,4),按照公式(1)其在X1-Y1坐标系中的坐标为S’(0,0);
步骤(5)使用VR(Vector Routing)方法确定S和M之间的矢量分解结果
首先确定S指向M的相对矢量:A=a0·x0+b0·y0,其中x0、y0分别表示X0-Y0坐标系内的x方向和y方向的单位矢量,a0、b0分别表示相对矢量A在X0方向和Y0方向的分量,a0=Mx-Sx,b0=My-Sy;然后使用VR方法将相对矢量A分解为X0-Y0单位矢量与X1-Y1单位矢量之和的形式,表示为:A=vecx1·x1+vecy1·y1+vecx0·x0+vecy0·y0;分解方法如下所示:
vecx1=(a0+b0)/(2×n)     (除法按照五舍六入取整)
vecy1=-(a0-b0)/(2×n)    (除法按照五舍六入取整)
vecx0=a0-(vecx1-vecy1)×n    (2)
vecy0=b0-(vecx1+vecy1)×n
其中x1、y1分别表示X1-Y1坐标系内的x方向、y方向的单位矢量;|vecx1|和|vecy1|分别表示X1和Y1方向内rank-1链路的个数,若vecx1、vecy1为正数则表示链路方向为X1和Y1的正方向,为负数则为负方向;|vecx0|和|vecy0|分别表示X0和Y0方向内rank-0链路的个数,若vecx0、vecy0为正数则表示链路方向为X0、Y0的正方向,为负数则为负方向;vecx0、vecy0、vecx1和vecy1统称为矢量系数;
图3所示例子中,S指向M的相对矢量A=-7·x0+0·y0,其中a0=-7,b0=0。根据公式(2)可以得到矢量系数(vecx1,vecy1,vecx0,vecy0)=(-2,2,1,0);其含义为S到M的通信过程,需要经过2次X1负方向的rank-1链路转发,2次Y1正方向的rank-1链路转发,1次X0正方向的rank-0链路转发。
步骤(6)确定S和D之间的初始路由方案
根据步骤(5)的分解结果对S到M的矢量系数进行处理,确定S到D的路由方案,基本方法是:S到M的矢量系数向0逼近,把逼近过程中对应的数据包转发方向应用在对应的RDT网络即可得到S到D的最短路由。具体而言,rank-1内X1方向的链路个数为|vecx1|,若vecx1>0,则数据包传递方向为X1的正方向,传递完成后vecx1自减1;若vecx1≤0,则为X1的负方向,传递完成后vecx1自加1;与vecx1的处理方式类似,vecy1和vecx0、vecy0在数据包完成所在链路层对应方向转发之后,在正负号不变的情况下绝对值自减1;rank层次、转发方向选择顺序的不同会导致不同的路由方案,本步骤使用路由消息队列RI记录一种初始的路由方案;RI中任一元素r的取值范围是{-4,-3,-2,-1,1,2,3,4},其中4表示数据包通过rank-1链路向X1正方向转发,3表示数据包通过rank-1链路向Y1正方向转发,2表示数据包通过rank-0链路向X0正方向转发,1表示数据包通过rank-0链路向Y0正方向转发;-4,-3,-2,-1则分别表示对应的负方向;设RI={r1,r2,r3,…,rn},其元素按照下面的原则由步骤(5)得到的矢量系数生成:先选择rank-1链路,再考虑通过rank-0链路,在同一rank内,先选择x方向的链路,再选择y方向的链路;然后数据包将依次按照r1,r2,r3,…,rn的顺序在RDT中进行传递,数据包的转发方向由对应的ri(i=1,2,…,n)决定,每转发一次,队列RI的首个元素就被弹出并抛弃;RI与路由矢量系数(vecx1,vecy1,vecx0,vecy0)一起传输,并在转发过程中同步更新;当(vecx1,vecy1,vecx0,vecy0)为(0,0,0,0),RI为空时,数据包已经从S传递至D,通信过程完成。
图3中所示例子经过步骤(5)得到的矢量系数为(vecx1,vecy1,vecx0,vecy0)=(-2,2,1,0);依据RI的定义,初始化之后的结果为RI={-4,-4,3,3,2}。该队列内容表述的意思是,从S点出发向X1负方向走两条rank-1链路,然后沿着Y1正方向走两条rank-1链路,最后沿着X0正方向走一条rank-0链路。其对应的路径如图3中的虚线所示:S(4,4)→N1(2,2)→N2(0,0)→N5(14,2)→N8(12,4)→D(13,4),所需要经过的链路个数共有5条。
步骤(7)启动容错处理机制
如果步骤(6)确定的初始路由方案不能避开当前网络中的所有错误链路,就需要对RI队列进行修改。修改原则是统筹规划rank-1和rank-0内的链路排列顺序以尽可能地减少总链路长度,当无法根据给定矢量系数找到一种最短路由方案来规避所有的错误链路时,考虑增加额外链路。下面结合图3示例详细介绍本步骤的实现过程:
f.设定P为数据包所在节点,初始情况下P即通信源节点S,如果矢量系数vecx0,vecy0,vecx1,vecy1均为0,则转到步骤n,否则转入步骤g;本例中令当前考虑节点P=S(4,4),由于(vecx1,vecy1,vecx0,vecy0)=(-2,2,1,0)并非全为0,因此转入步骤g;
g.以P为原点建立X1-Y1坐标系;收集rank-0以及P所在的rank-1范围内的链路损坏信息,并分别保存在
Figure A20091009698200211
中;如果vecx1、vecy1均为0,则转入步骤h,否则转入步骤i;本例中
Figure A20091009698200213
中各条rank-0链路对应的元素值均为1,即正常工作。在
Figure A20091009698200214
中,如图4所示P(S)→N3,N1→N2,N7→N8的rank-1链路损坏,其余皆正常工作。由于(vecx1,vecy1)=(-2,2)≠(0,0),转入步骤i;
h.根据RI确定以P为起点即将经过的各条rank-0链路,如果有rank-0链路损坏,则转入步骤j,否则转入步骤k;本例中该步骤不会被执行;
i.根据RI确定以P为起点即将经过的各条rank-1链路,如果有rank-1链路损坏,则转入步骤j,否则转入步骤k;如图4所示,本例中RI确定的以P为起点即将经过的rank-1链路为P→N1→N2→N5→N8,其中链路N1→N2已损坏,因此转入步骤j;
j.首先确定指定rank内规避所有错误链路的路由方案,同时保证路由长度最短,具体是:
定义r表示存在错误链路需要处理的rank;如果本步骤由步骤h或j转入,则r=0;如果由步骤i转入,则r=1;图4所示例子中r=1;以P为起点采用二叉搜索树方法确定对应rank r内规避所有错误链路的路由方案,如果这样的路由存在,那么返回一个表示该路由的信息队列并保存在RI_temp_r中,图4所示例子中则将路由信息队列保存在RI_temp_1中;如果这样的路由不存在或者RI中不包含rank-r的路由信息,则返回一个空队列;二叉搜索树方法的具体步骤为:首先从RI中提取所有属于rank-r的元素,并按固有顺序保存在路由信息队列RI_r中;用size(RI_r)表示RI_r中元素个数,用Q表示在无错网络中按照RI_r中定义的路由P将会到达的目的节点,用rH和rV表示RI_r所定义的数据包在rank-r内的转发方向,两者相互正交;二叉树每个节点包含size(RI_r)个元素并按照从左到右的顺序排列,每个元素的取值范围是{0,1,x},0表示数据包沿rV方向转发,1表示数据包沿rH方向转发,x表示数据包转发方向尚不确定;图4所示例子中,首先将RI中表示rank-1的转向的元素提取出来并保存在RI_1中,可知RI_1={-4,-4,3,3};RI_1中的元素个数size(RI_1)=4,RI_1所确定的数据包转发方向有两个,X1负方向用rH表示,Y1正方向用rV表示。RI_1描述的路由可以视为一个3×3的二维网格,如图4(a)所示。
然后建立根节点,其内部各元素值均为x;按照从左到右的顺序确定节点内各元素的值,每确定一个元素,就为当前节点产生一个子节点,并将所有元素数值保存在该子节点中;如果P点在rH方向的链路正常,则确定新元素的值为1并保存在子节点中,如果P点在rV方向的链路正常,则确定新元素的值为0并保存在子节点中,如果P点在rH、rV方向的链路均损坏,则不产生子结点;按照上述方法递归确定节点中所有元素值后所得到的节点称为叶子节点,根据叶子节点对RI_r中的元素重新排序并保存在RI_temp_r中;在二叉搜索树的建立过程中采用深度优先的方式,只要找到一个叶子节点就结束整个搜索过程;在本例中令该网格左上角节点为P(S),那么根据以P为原点的rank-1链路布局可以将图3中Ni(i=1,2,…,8)间的连接关系转化为图4(a)所示的情况。RI_1保存的路由方案用于实现P和N8(Q)之间的通信。在二叉搜索树中rH方向的链路转向值为1,rV方向则为0,如图4(b)所示。首先决定根节点第一个元素的值。由于P→N3链路已经损坏,所以在P点只能进行rH转向,因此产生一个子节点1XXX(X表示值未定)。1XXX表示数据包从P转发至N1,N1的rH方向链路出错,所以只能产生子节点10XX,表示数据包从N1转发至N4。N4在rH和rV方向的链路均正常,因此可以产生两个子节点101X和100X。100X表示数据包从N4转发至N7,101X表示数据从N4转发至N5。N7只能向rH方向转发数据包,但是链路N7→N8已经损坏,因此100X没有子结点。N5只能向rV方向转发数据包,而且链路N5→N8是正常的,因此可以产生子节点1010,即叶子节点,可以作为最终结果返回。RI_1根据该叶子节点的内容进行更新并保存在RI_temp_1中,有RI_temp_1={-4,3,-4,3};
然后根据得到的路由方案决定后续步骤,具体是:
如果得到的RI_temp_r为空,同时r为1,则令r=0,重复步骤j;如果r=0,则转入步骤k;如果RI_temp_r非空,则转入1;本例中r=1,且RI_temp_1非空,所以转入步骤1;
k.按照路由信息队列的取值原则,搜集点P在不同rank内的所有可用链路并保存在集合LINK中,若LINK存在元素r_sel与RI中的任一元素正交,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果LINK中的所有元素均不与RI中的任何一个元素正交,则如果LINK中存在一个元素r_sel与RI中任一元素处于不同rank,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果LINK存在一个元素r_sel与RI中任一元素处于同一rank且方向相反,那么将r_sel和-r_sel添加到RI队列首部,转入步骤m;本例中该步骤不会被执行;
1.首先确定RI_temp_r保存的路由信息所在的网络层,即r的值;然后将RI中处于rank-r内的各个元素按照顺序依次替换为RI_temp_r中的元素。转入步骤m;本例中r=1,将RI中rank-1元素按照RI_temp_1内容重新排列,得RI={-4,3,-4,3,2},转入步骤m;
m.根据RI中位于队首的元素,选择对应的链路对数据包进行转发,即将数据包从P发送到N1,并将RI队首元素弹出,RI更新为{3,-4,3,2};然后根据转发的链路对矢量系数(vecx1,vecy1,vecx0,vecy0)进行更新,(vecx1,vecy1,vecx0,vecy0)更新为(-1,2,1,0);将P更新为数据包转发到的新节点,即将P更新为N1;如果更新后的RI为空,转入步骤n,如果更新后的RI非空,转入步骤g;由于RI为{3,-4,3,2},非空,所以转入步骤g,循环执行上述操作;
n.整个通信过程结束。
本例假设在通信过程中并没有新的错误节点产生,容错处理机制的运行与上述过程类似。S到D的最终路由为S→N1→N4→N5→N8→D。如图3中黑色实线所示。

Claims (1)

1、确定RDT片上网络最短路由的方法,其特征在于:
本方法针对的容错模型定义如下:
①RDT片上网络中的任何节点或链路发生错误时,数据无法在错误链路上传输也无法通过一个错误节点进行转发;
②错误模型为静态,就是当前节点对数据包转发的过程中与该节点相连的链路不会出现新错误;
③产生通信的源节点和目标节点均正常工作;
④错误的发生是相互独立的;
⑤如果一个节点发生错误,则认为所有与该节点直接相连的链路均产生错误,即如果节点发生错误则该节点与整个网络隔绝,将节点错误归并到链路错误;
⑥同一层Torus网络内的链路错误信息对网络中的所有正常节点均是可知的;
基于以上容错模型的最短路由方法的具体步骤是:
步骤(1)为RDT rank-0网络建立坐标系,确定节点编号以及通信节点的位置:
首先确定目标RDT(n,1)网络的规模:N×N;以网络左上角节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向,为RDT的rank-0网络建立X0-Y0直角坐标系,其中相邻两节点间的长度定为X0-Y0坐标系的单位长度;
然后按照自上而下的顺序对每行的N个节点自左到右依次编号:节点K∈目标N×N RDT(n,1),其坐标为(xk,yk),且满足xk∈[0,N-1],yk∈[0,N-1],K的编号Num(k)=N·yk+xk
按上述编号原则确定需要进行通信的两个节点S和D在坐标系X0-Y0内的位置:S(Sx,Sy),D(Dx,Dy),其中S为通信源节点,D为通信目标节点;
步骤(2)确定目标节点D的镜像超集M’(D)
M’(D)为D与其在X0-Y0坐标系内四个镜像点D’north,D’cast,D’south,D’west的集合,即M’(D)={D,D’north,D’east,D’south,D’west};D’north,D’east,D’south,D’west分别位于点D的竖直上方、水平右方、竖直下方和水平左方;这四个镜像点的坐标分别为:D’north(Dx,Dy-N),D’east(Dx+N,Dy),D’south(Dx,Dy+N),D’west(Dx-N,Dy),镜像超集中的每一个元素为超镜像点;
步骤(3)确定最佳超镜像点
计算M’(D)中各超镜像点与源节点S之间的曼哈顿距离(Manhattandistance),选择与S的曼哈顿距离最短的超镜像点作为最佳超镜像点,并记为M,具体步骤是:
a.确定源节点S指向目的节点D的相对矢量V=(VΔx,VΔy),其中VΔx=Dx-Sx,表示V在X0-Y0坐标系中水平方向的分量;VΔy=Dy-Sy,表示V在X0-Y0坐标系中竖直方向的分量;
b.初始化最佳超镜像点M:M(Mx,My)=D(Dx,Dy);
c.如果|VΔx|与|VΔy|中大者大于RDT维度的一半,则转入步骤d;如果小于等于RDT维度的一半,则转入步骤e;
d.如果|VΔx|与|VΔy|中大者是|VΔx|,则VΔx大于0时,将M更新为D’west,VΔx小于等于0时,将M更新为D’east;如果|VΔx|与|VΔy|中大者是|VΔ y|,则VΔy大于0时,将M更新为D’north,VΔy小于等于0时,将M更新为D’south
e.返回最佳超镜像点M;
步骤(4)为RDT rank-1网络建立坐标系
以S为原点,右下方为x轴正方向、左下方为y轴正方向,建立X1-Y1坐标系,其单位长度为RDT rank-1网络中的链路长度;任给X0-Y0坐标系中的一点T(Tx,Ty),其在以S为原点建立起来的X1-Y1坐标系中的坐标为:
T’(((Ty-Sy)+(Tx-Sx))/2n,((Ty-Sy)-(Tx-Sx))/2n)        (1)
步骤(5)使用VR(Vector Routing)方法确定S和M之间的矢量分解结果
首先确定S指向M的相对矢量:A=a0·x0+b0·y0,其中x0、y0分别表示X0-Y0坐标系内的x方向和y方向的单位矢量,a0、b0分别表示相对矢量A在X0方向和Y0方向的分量,a0=Mx-Sx,b0=My-Sy;然后使用VR方法将相对矢量A分解为X0-Y0单位矢量与X1-Y1单位矢量之和的形式,表示为:A=vecx1·x1+vecy1·y1+vecx0·x0+vecy0·y0;分解方法如下所示:
vecx1=(a0+b0)/(2×n)         (除法按照五舍六入取整)
vecy1=-(a0-b0)/(2×n)        (除法按照五舍六入取整)
vecx0=a0-(vecx1-vecy1)×n                       (2)
vecy0=b0-(vecx1+vecy1)×n
其中x1、y1分别表示X1-Y1坐标系内的x方向、y方向的单位矢量;|vecx1|和|vecy1|分别表示X1和Y1方向内rank-1链路的个数,若vecx1、vecy1为正数则表示链路方向为X1和Y1的正方向,为负数则为负方向;|vecx0|和|vecy0|分别表示X0和Y0方向内rank-0链路的个数,若vecx0、vecy0为正数则表示链路方向为X0、Y0的正方向,为负数则为负方向;vecx0、vecy0、vecx1和vecy1统称为矢量系数;
步骤(6)确定S和D之间的初始路由方案
根据步骤(5)的分解结果对S到M的矢量系数进行处理,确定S到D的路由方案,基本方法是:S到M的矢量系数向0逼近,把逼近过程中对应的数据包转发方向应用在对应的RDT网络即可得到S到D的最短路由;具体而言,rank-1内X1方向的链路个数为|vecx1|,若vecx1>0,则数据包传递方向为X1的正方向,传递完成后vecx1自减1;若vecx1≤0,则为X1的负方向,传递完成后vecx1自加1;vecy1和vecx0、vecy0在数据包完成所在链路层对应方向转发之后,在正负号不变的情况下绝对值自减1;rank层次、转发方向选择顺序的不同会导致不同的路由方案,本步骤使用路由消息队列RI记录一种初始的路由方案;RI中任一元素r的取值范围是{-4,-3,-2,-1,1,2,3,4},其中4表示数据包通过rank-1链路向X1正方向转发,3表示数据包通过rank-1链路向Y1正方向转发,2表示数据包通过rank-0链路向X0正方向转发,1表示数据包通过rank-0链路向Y0正方向转发;-4,-3,-2,-1则分别表示对应的负方向;设RI={r1,r2,r3,…,rn},其元素按照下面的原则由步骤(5)得到的矢量系数生成:先选择rank-1链路,再考虑通过rank-0链路,在同一rank内,先选择x方向的链路,再选择y方向的链路;然后数据包将依次按照r1,r2,r3,…,rn的顺序在RDT中进行传递,数据包的转发方向由对应的ri(i=1,2,…,n)决定,每转发一次,队列RI的首个元素就被弹出并抛弃;RI与路由矢量系数(vecx1,vecy1,vecx0,vecy0)一起传输,并在转发过程中同步更新;当(vecx1,vecy1,vecx0,vecy0)为(0,0,0,0),RI为空时,数据包已经从S传递至D,通信过程完成;
步骤(7)启动容错处理机制
如果步骤(6)确定的初始路由方案不能避开当前网络中的所有错误链路,就需要对RI队列进行修改;修改原则是统筹规划rank-1和rank-0内的链路排列顺序以尽可能地减少总链路长度,当无法根据给定矢量系数找到一种最短路由方案来规避所有的错误链路时,考虑增加额外链路;本步骤包括以下步骤:
f.设定P为数据包所在节点,初始情况下P即通信源节点S,如果矢量系数vecx0,vecy0,vecx1,vecy1均为0,则转到步骤n,否则转入步骤g;
g.以P为原点建立X1-Y1坐标系;收集rank-0以及P所在的rank-1范围内的链路损坏信息,并分别保存在
Figure A2009100969820005C1
Figure A2009100969820005C2
(P)中;如果vecx1、vecy1均为0,则转入步骤h,否则转入步骤i;
h.根据RI确定以P为起点即将经过的各条rank-0链路,如果有rank-0链路损坏,则转入步骤j,否则转入步骤k;
i.根据RI确定以P为起点即将经过的各条rank-1链路,如果有rank-1链路损坏,则转入步骤j,否则转入步骤k;
j.首先确定指定rank内规避所有错误链路的路由方案,同时保证路由长度最短,具体是:
定义r表示存在错误链路需要处理的rank;如果本步骤由步骤h或j转入,则r=0;如果由步骤i转入,则r=1;以P为起点采用二叉搜索树方法确定对应rank r内规避所有错误链路的路由方案,如果这样的路由存在,那么返回一个表示该路由的信息队列并保存在RI_temp_r中,如果这样的路由不存在或者RI中不包含rank-r的路由信息,则返回一个空队列;二叉搜索树方法的具体步骤为:首先从RI中提取所有属于rank-r的元素,并按固有顺序保存在路由信息队列RI_r中;用size(RI_r)表示RI_r中元素个数,用Q表示在无错网络中按照RI_r中定义的路由P将会到达的目的节点,用rH和rV表示RI_r所定义的数据包在rank-r内的转发方向,两者相互正交;二叉树每个节点包含size(RI_r)个元素并按照从左到右的顺序排列,每个元素的取值范围是{0,1,x},0表示数据包沿rV方向转发,1表示数据包沿rH方向转发,x表示数据包转发方向尚不确定;然后建立根节点,其内部各元素值均为x;按照从左到右的顺序确定节点内各元素的值,每确定一个元素,就为当前节点产生一个子节点,并将所有元素数值保存在该子节点中;如果P点在rH方向的链路正常,则确定新元素的值为1并保存在子节点中,如果P点在rV方向的链路正常,则确定新元素的值为0并保存在子节点中,如果P点在rH、rV方向的链路均损坏,则不产生子结点;按照上述方法递归确定节点中所有元素值后所得到的节点称为叶子节点,根据叶子节点对RI_r中的元素重新排序并保存在RI_temp_r中;在二叉搜索树的建立过程中采用深度优先的方式,只要找到一个叶子节点就结束整个搜索过程;
然后根据得到的路由方案决定后续步骤,具体是:
如果得到的RI_temp_r为空,同时r为1,则令r=0,重复步骤j;如果r=0,则转入步骤k;如果RI_temp_r非空,则转入l;
k.按照路由信息队列的取值原则,搜集点P在不同rank内的所有可用链路并保存在集合LINK中,若LINK存在元素r_sel与RI中的任一元素正交,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果LINK中的所有元素均不与RI中的任何一个元素正交,则如果LINK中存在一个元素r_sel与RI中任一元素处于不同rank,则将r_sel和-r_sel添加至RI队列首部,并转入步骤m;如果LINK存在一个元素r_sel与RI中任一元素处于同一rank且方向相反,那么将r_sel和-r_sel添加到RI队列首部,转入步骤m;
l.首先确定RI_temp_r保存的路由信息所在的网络层,即r的值;然后将RI中处于rank-r内的各个元素按照顺序依次替换为RI_temp_r中的元素,转入步骤m;
m.根据RI中位于队首的元素,选择对应的链路对数据包进行转发,并将RI队首元素弹出,然后根据转发的链路对矢量系数(vecx1,vecy1,vecx0,vecy0)进行更新;将P更新为数据包转发到的新节点;如果更新后的RI为空,转入步骤n,如果更新后的RI非空,转入步骤g;
n.整个通信过程结束。
CN2009100969828A 2009-03-26 2009-03-26 确定rdt片上网络最短路由的方法 Expired - Fee Related CN101515893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100969828A CN101515893B (zh) 2009-03-26 2009-03-26 确定rdt片上网络最短路由的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100969828A CN101515893B (zh) 2009-03-26 2009-03-26 确定rdt片上网络最短路由的方法

Publications (2)

Publication Number Publication Date
CN101515893A true CN101515893A (zh) 2009-08-26
CN101515893B CN101515893B (zh) 2011-03-30

Family

ID=41040194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100969828A Expired - Fee Related CN101515893B (zh) 2009-03-26 2009-03-26 确定rdt片上网络最短路由的方法

Country Status (1)

Country Link
CN (1) CN101515893B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651712A (zh) * 2012-05-10 2012-08-29 华为技术有限公司 多处理器系统的节点路由方法、控制器及多处理器系统
CN105224501A (zh) * 2015-09-01 2016-01-06 华为技术有限公司 改进圆环面网络及其确定数据包传输路径的方法和装置
CN105591910A (zh) * 2016-03-04 2016-05-18 北京交通大学 一种针对路由方向单调变化网络的容错曼哈顿路由方法
CN115499271A (zh) * 2022-08-30 2022-12-20 西北工业大学 一种混合网络拓扑结构及其路由方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651712A (zh) * 2012-05-10 2012-08-29 华为技术有限公司 多处理器系统的节点路由方法、控制器及多处理器系统
CN105224501A (zh) * 2015-09-01 2016-01-06 华为技术有限公司 改进圆环面网络及其确定数据包传输路径的方法和装置
CN105591910A (zh) * 2016-03-04 2016-05-18 北京交通大学 一种针对路由方向单调变化网络的容错曼哈顿路由方法
CN105591910B (zh) * 2016-03-04 2018-06-12 北京交通大学 一种针对路由方向单调变化网络的容错曼哈顿路由方法
CN115499271A (zh) * 2022-08-30 2022-12-20 西北工业大学 一种混合网络拓扑结构及其路由方法
CN115499271B (zh) * 2022-08-30 2023-10-13 西北工业大学 一种混合网络拓扑结构及其路由方法

Also Published As

Publication number Publication date
CN101515893B (zh) 2011-03-30

Similar Documents

Publication Publication Date Title
Boppana et al. Fault-tolerant wormhole routing algorithms for mesh networks
Chiu The odd-even turn model for adaptive routing
CN101515893B (zh) 确定rdt片上网络最短路由的方法
GB2536608A (en) Optimizing the topology of a network with variable traffic demands
CN103248566A (zh) 一种应用于片上网络的基于错误阻挡模型的容错方法和结构
CN105634974A (zh) 软件定义网络中的路由确定方法和装置
CN102065019A (zh) 基于区域划分的片上网络快速ip核映射方法
WO2015131840A1 (zh) 一种mimo系统的检测方法及装置
Boesen et al. Autonomous distributed self-organizing and self-healing hardware architecture-The eDNA concept
Wu et al. A methodology for cognitive NoC design
CN112543048B (zh) 增量补偿健壮拓扑控制方法、系统、介质、设备、终端
Puente et al. Immucube: Scalable fault-tolerant routing for k-ary n-cube networks
Latifi et al. A new fixed degree regular network for parallel processing
Qiao et al. A service function chain deployment scheme of the software defined satellite network
CN113392280B (zh) 一种面向跨区域的多主模型分布式图计算方法
CN112073314B (zh) 容忍多故障的大规模三维片上网络确定性路径路由方法
Wang et al. Metaverse-inspired cybertwin-based space-air-ground integrated networks
CN104657238B (zh) 一种基于阵列结构的可重构容错方法
Guan et al. Fault-tolerant and Congestion Balanced Routing Algorithm for 2D Mesh NoCs
Asai et al. Compaction of topological quantum circuits by modularization
Chepoi et al. A self-stabilizing algorithm for the median problem in partial rectangular grids and their relatives
Zhang et al. On convergence rate for multi-agent consensus: a community detection algorithm
Fukushi et al. A Fault-tolerant Routing Method for Network-on-Chips Based on Communication Function Fault Model
US11652541B1 (en) Phase array routing connectivity
Theiss Modularity, routing and fault tolerance in interconnection networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110330

Termination date: 20140326