计算机工程
Computer Engineering
1999年　第25卷　第9期　Vol.25 No.9  1999



二维mesh上的自适应容错路由算法
李杰亮　孙锁林
　　摘　要：基于故障块模型提出了二维mesh上的自适应无死锁容错路由算法．该算法将网络分为两个虚拟网络．消息根据源与目的节点的相对位置判断进入哪一个虚拟网络．消息在没有遇上故障时经由最短路径路由．算法的容错技术是基于故障环和故障链的概念．最后，将该算法与另一个二维mesh上的容错路由算法f-cube2进行性能比较．
　　关键词：故障块模型，故障环，故障链．虚拟网络，自适应容错路由
Adaptive Fault-tolerant Routing Algorithm for Two-dimension Mesh
Li Jieliang Sun Suolin
(Dept. of Computer Science, National University of Defense Technology, Changsha 410073)
　　Abstract　We present an adaptive deadlock-free fault-tolerant routing algorithm in two-dimersion mesh, which is based block fault model. The algorithm decomposes the network into two virtual networks, VIN0 and Vin1. According to the relative position of source and destination mode. it determines which virtual network the message is routed into. Messages are routed minimally when not blocked by fault. The fault-tolerant techniques are departent on the concept of fault ring and fault chain. At last, we compare the algorithm with f-cube2, which is another fault-tolerant routing algorithm in two-dimension mesh.
　　Key words　Fault block model; Fault-ring; Fault chain; Virtual network; Adaptive fault fouting
　　科学技术的迅猛发展对计算机科学提出了新的挑战，要求新一代计算系统解决计算量更大、复杂程度更高的问题。由此促使计算机的体系结构向高度并行化发展，并行处理已成为计算机科学和计算机体系结构领域中的一个研究热点。
　　大规模并行处理系统(MPP)利用互连网络将大量处理节点连接起来。每个处理节点有各自的处理器和本地主存。节点之间并行工作，共同完成一个大的任务，从而提供了很高的并行性。节点之间通过互连网络交换数据和进行同步，因此互连网络是影响MPP系统性能的主要因素之一。
　　在MPP系统中故障可发生在处理器、主存、I/O系统以及互连网络。本文只考虑节点故障和链路故障。
1　相关研究
　　近年来提出了许许多多的MPP系统互连网络中的路由算法。
　　Dally和Seitz提出了虚拟通道概念来研究无死锁路由算法。虚拟通道是分时使用单个物理链路。在节点中为每条虚拟通道管理一条队列。虚拟通道还用于消除通道相关图中的环，从而在消息传递过程中保证无死锁。
　　Glass和Ni提出了n维mesh和k-ary n-cube中无需增加物理和虚拟通道的部分自适应路由算法。他们首先提出了二维和三维mesh上可能出现的死锁环。然后提出禁止环中的某些转角以防止死锁。然而如果要求最短路径路由，有一半的源、目的节点对间将只有一条路径。所以将之称为部分自适应路由。他们还通过改进该转角模型算法使之能容忍n维mesh中的n-1个故障，然而对于四维或更高维mesh，这只是推论，正确性还有待证实。
　　Boppana和Chalasani提出了故障块、故障环和故障链的概念以方便容错路由算法的设计。他们在此基础上提出了二维mesh上仅需两条虚拟通道的容错路由算法f-cube2。但他们的算法是确定性的，性能相对不高。本文借助他们的基本模型提出二维mesh 上的自适应容错路由算法。该算法同样只需两条虚拟通道。
2　基本模型
　　本文提出的算法是二维mesh上的自适应无死锁容错路由算法。算法基于以下假定：(1) 源节点S和目的节点D都是无故障的；(2) 每条链路都是双向的；(3) 每个非故障节点知道周围节点和链路的状态。
2.1 故障模型
　　故障集合F指的是故障节点和故障链路的集合。为了方便路由算法的提出，我们借用Boppana和Chalasani的故障块或故障区(f-region)的概念。故障区指的是：(1)故障区的边界上仅有非故障节点和链路；(2)故障区的内部仅有故障节点或链路。F中的每个故障仅且必定属于一个故障块。多个故障块的并集组成了二维mesh的故障集合。
　　故障块如果包含了两个不同的行边界或列边界，将使网络分割为不相连的两部分，因此这种情况不予考虑。
2.2 故障环和故障链的形成
　　每个节点监测与之相连的链路的状态。当节点x发生故障，它的邻居节点推断出与它相连的链路故障以及节点x故障。在故障块模型中，每个节点最多只有一维上有故障链路。如果节点x在二维上都有故障链路，则将之视为故障节点，停止发送状态信号给邻居节点。该过程反复迭代至没有新的节点或链路被设为故障。
　　连接环绕故障区的无故障部件(节点和链路)，如果为闭环则形成故障环，否则形成故障链。故障环的形状为矩形。故障环上的节点离故障节点最多两步(hop)。
3　自适应容错算法
　　我们首先将互连网络划分成两个虚拟网络VIN0和VIN1。VIN0和VIN1中的虚拟通道共享每条物理链路的带宽。VIN0和VIN1中各有一条虚拟通道，分别为c0和c1。
　　当目的节点在源节点西边时，消息选择进入VIN1虚网；当目的节点在源节点东边时，消息选择进入VIN0虚网。在无故障情况下，消息采用的是全自适应最短路径路由算法。
　　在提出算法前，先给出下列概念：
　　　　源节点 S＝(s1,s0)
　　　　目的节点 D＝(d1,d0)
　　　　路由标志 R＝(r1,r0)=(d1-s1,d0-s0)
　　　　虚拟通道 cdim,dir,num其中dim表示所在维数，dir表示方向，num表示所在虚拟网络
　　下面首先提出无故障链和故障环重合情况下的容错算法。消息在进入通信网络前先根据R判断进入哪一个虚拟网络。标准如下：
　　if (r0>0) 进入VIN0
　　if(r0<0)进入VIN1
　　if(r0=0)根据网络流量情况选择进入一个虚拟网络
　　算法1 二维平面VIN0虚网上的自适应容错虫孔路由算法tf
　　(1) 修改R
　　if (R是减小的&&r030) misroute=0
　　else misroute=1 /*R是减小的即r0或r1是减小的*/
　　(2) if(R==0) 消息头微片到达目的节点并被接收
　　(3) if(所有趋近目的节点的链路都是无故障的&&misroute==0){
　　　　direction = null;
　　　　头微片任意选择一条趋近目的节点路径路由}
　　(4) if(direction == null) {
　　　　if(r0>0&&c0,+,0故障)
　　　　　then if (r1>0) direction =逆时针
　　　　　　if (r1<0) direction =顺时针
　　　　　　if (r1=0) direction随机选择方向
　　　　if(r1>0&&c1,+,0故障) direction =顺时针
　　　　if(r1<0&&c1,-,0故障) direction =逆时针}
　　(5) 头微片按照direction指定的方向路由
　　VIN1上的路由算法与VIN0上的算法相似。在此不再重述。
　　Tf算法无死锁证明
　　定理1 Tf算法在块故障模型下是无死锁、无活锁的
　　证明：因为VIN0中的消息不会进入VIN1中，反之亦然。所以死锁不会涉及两个虚网。如果存在死锁，它仅可能发生在VIN0或VIN1中。让我们假设消息进入VIN0中，VIN1中的情况与之相同。
　　没有碰到故障情况下，消息只在第0维的增向和第一维上路由，所以不可能出现环等待，也就不可能出现死锁。
　　当消息仅遇上故障环时，消息绕过故障环的情形有3种：(1)消息从故障环的西边绕到东边。此时消息可能进行的转角为北到东、南到东、东到南、东到北；(2)消息从故障环的北边绕到南边，消息可能进行的转角为东到南、南到西、西到南；(3)消息从故障环的南边绕到北边，消息可能进行的转角为东到北、北到西、西到北。第一种情形和无故障时相似，消息只可能向东。第二、三种情形相似，消息可以向西，但只发生在故障环的南、北边界上。所以在故障环的南边界以下，消息只可能进行西到南、南到东、东到北和北到东、东到南5个转角，不能形成一个环，所以无死锁发生。在故障环北边的情况与之相似。消息可能路由的路径，以及可能的转角，如图1所示。另外消息在一维上不会转向，所以在一维上也不会有死锁。
　　所以tf算法在无故障链和故障环重合时是无死锁的。
　　另外，因为消息在没有碰到故障时，采用的是最短路径路由。而且消息在离开一个故障环后，再也不会回到原来的故障环。而且网络中的故障环数目是有限的，所以消息最终将到达目的节点，tf算法是无活锁的。

图1　消息在遇到故障环时可能路由的方向
(虚线代表不可能出现的转角)
4　模拟结果
　　我们采用下一事件驱动的方法对tf算法和f-cube2算法进行了模拟。物理链路上的虚拟通道采用时分复用的方法共享物理带宽，而且仅有消息传输的虚拟通道参与时间片轮转。空闲虚拟通道不占用物理带宽。在邻居节点间，一个时钟周期传输一个微片。我们模拟16×16mesh。并且假设每个消息长度为20个微片，消息流量使用平均流量模式。在模拟过程中，使用网络平均吞吐量和平均延迟作为性能比较的标准。首先比较无故障情况下，f-cube2和tf算法的性能。见图2。接着比较两种算法在相同网络流量，不同故障数目下的性能，见图3。

图2　无故障情况下tf和f-cube2在16x16mesh中的性能

图3 tf和f-cube2在故障情况下的性能
　　通过图2和图3知道，无论网络有无故障，tf算法的性能都比f-cube2的性能要好。这是因为tf算法采用的是自适应算法，它相对来说可以选择更多的路径路由，所以避开阻塞和故障的概率相对更大。
5　结束语
　　本文基于故障块模型提出了二维mesh上的自适应容错路由算法tf。我们的算法是无死锁和活锁的，并且在出现多个故障块时仍可以正确地在无故障节点间路由消息。该算法增加的物理代价和复杂性是适中的。它仅需节点监测邻居节点和链路的状态，并据此形成故障环或链。但本算法仍有许多不足之处。如它仅适用于二维mesh。故障环和故障链必须是矩形块，这样要求将一些正常节点视为故障节点，浪费了系统资源。任意形状的故障环和链的容错将成为容错研究领域的热点。
作者简介：李杰亮(1975～)，男，研究生，主要从事MPP系统互连网络通信研究
作者单位：国防科学大学计算机系　长沙　410073
参考文献
1 Boppana RV,Chalasani S.Fault-tolerant Wormhole Routing Algorithms for Mesh Networks.IEEE Trans.Computer,1995,44
2 Dally WJ,Seitz CL.Deadlock-free Message Routing in Multiprocessor Interconnection Network.IEEE Trans.Computer, 1987,36
3 Glass CJ,Ni LM.The Turn Model for Adaptive Routing. Proc. 1992 Int'l Symp.Computer Architecture,1992:278-287
收稿日期：1998-11-30
