<strong>tolerant</strong> rout<strong>in</strong>g <strong>in</strong> metacube. The rema<strong>in</strong>der of this paper isorganized as follows. Section 2 <strong>in</strong>troduces the MC networkand its topological properties. Section 3 gives the rout<strong>in</strong>g algorithm<strong>in</strong> metacube. Section 4 <strong>in</strong>troduces a multi-channelcube structure which is used for fault-<strong>tolerant</strong> rout<strong>in</strong>g <strong>in</strong> themetacube. Sections 5 gives the fault-<strong>tolerant</strong> rout<strong>in</strong>g algorithm.Section 6 concludes the paper and presents somefuture research directions.2. Prelim<strong>in</strong>ariesThis section formally <strong>in</strong>troduces the MC network, itstopological properties and some related notation. The MCnetwork is motivated by the dual-cube network proposed byLi and Peng [6] [7] that mitigates the port limitation problem<strong>in</strong> the hypercube network so that the number of nodes<strong>in</strong> the network is much larger than that of the hypercubewith a fixed amount of l<strong>in</strong>k per node. The MC network <strong>in</strong>cludesthe dual-cube as a special case. An MC network hasa 2-level cube structure: high-level cubes represented bythe leftmost k bits of the b<strong>in</strong>ary address of the node whichconta<strong>in</strong>s m2 k + k bits (these k bits serve as a class <strong>in</strong>dicator),and low-level cubes, called clusters that form the basiccomponents <strong>in</strong> the network, represented by the m bits of therema<strong>in</strong> m2 k bits, which occupy the different portions <strong>in</strong> them2 k bits for different classes.More specifically, there are two parameters <strong>in</strong> an MCnetwork, k and m. An MC(k,m) conta<strong>in</strong>s h = 2 k classes.Each class conta<strong>in</strong>s 2 m(h−1) clusters, and each cluster conta<strong>in</strong>s2 m nodes. Therefore, an MC(k,m) uses mh + k b<strong>in</strong>arybits to identify a node and the total number of nodesis 2 n where n = mh + k. The value of k affects stronglythe growth rate of the size of the network. An MC(1,m)conta<strong>in</strong><strong>in</strong>g 2 2m+1 nodes is called a dual-cube. Similarly, anMC(2,m), an MC(3,m) and an MC(4,m) conta<strong>in</strong><strong>in</strong>g 2 4m+2nodes, 2 8m+3 nodes and 2 16m+4 nodes are called quad-cube,oct-cube and hex-cube, respectively. S<strong>in</strong>ce an MC(3,3) conta<strong>in</strong>s2 27 nodes, the oct-cube is sufficient to construct practicallyparallel computers of very large size. The hex-cubeis of theoretical <strong>in</strong>terest only. Note that an MC(0,m) is ahypercube.A node <strong>in</strong> an MC(k,m) can be uniquely identified bya (mh + k)-bit b<strong>in</strong>ary number. The leftmost k-bit b<strong>in</strong>arynumber def<strong>in</strong>es a class of the node (class_id). There areh classes. In each class, there are 2 mh nodes and each nodeis represented by a mh-bit b<strong>in</strong>ary number. 2 m nodes of thesame class form a cluster. Therefore, there are 2 m(h−1) clusters<strong>in</strong> each class. An m-bit b<strong>in</strong>ary number, located <strong>in</strong> aspecial portion of the mh-bit (will be expla<strong>in</strong>ed <strong>in</strong> the nextparagraph) identifies a node with<strong>in</strong> the cluster (node_id).Therefore, the (mh + k)-bit node address <strong>in</strong> an MC(k,m) isdivided <strong>in</strong>to three parts: a k-bit class_id, an m(h − 1)-bitcluster_id and an m-bit node_id.In the follow<strong>in</strong>g discussion, we use u = (c u ,M u [h −1],...,M u [1],M u [0]) to denote the address of node u,where c u is a k-bit b<strong>in</strong>ary number and M u [i], 0 ≤ i ≤h − 1 are m-bit b<strong>in</strong>ary numbers. Let class_id(u) =c u , node_id(u) = M u [c u ] × 2 c uand cluster_id(u) =∑ h−1i=0 M u[i] × 2 i − node_id(u). The mh-bit numbernode_id(u) + cluster_id(u) is a unique identifier of nodeu <strong>in</strong> class c u . For example, u = 0100111000 <strong>in</strong> an MC(2,2)is denoted as node 56 of class 1 and node set (48,52,56,60)<strong>in</strong> class 1 forms a cluster with cluster_id = 48.The l<strong>in</strong>ks of an MC(k,m) is constructed <strong>in</strong> the follow<strong>in</strong>gmanner. The m-bit field M[c] <strong>in</strong> the address of a nodeof class c forms a low-level m-cube with m l<strong>in</strong>ks, namelycube-edges. These low-level m-cubes are called clusters.A cluster conta<strong>in</strong><strong>in</strong>g node u is denoted as C u . The l<strong>in</strong>ksthat connect nodes among clusters are called cross-edgesand are def<strong>in</strong>ed as follow<strong>in</strong>g. For any two nodes whose addressesdiffer only <strong>in</strong> a bit position <strong>in</strong> the class field, thereis a cross-edge connect<strong>in</strong>g these two nodes. That is, the k-bit field c forms a high-level k-cube which connects thosenodes whose addresses except class field are the same.00000000100100001010080000100011010010101110000110001001011010021010011100101101111010001110011001111011131010111101101111111100100001100110001110class 0 class 1class 0Figure 1. A metacube MC(1,2)The addresses of two nodes connected by a cross-edgediffer only on one bit position with<strong>in</strong> the k-bit class field andthere is no direct connection among the clusters of the sameclass. Therefore, a node <strong>in</strong> an MC(k,m) has m + k l<strong>in</strong>ks: ml<strong>in</strong>ks construct an m-cube cluster and k l<strong>in</strong>ks construct a k-cube. For example, the neighbors <strong>in</strong> the cluster of the nodewith address (01,111,101,110,000) <strong>in</strong> an MC(2,3) haveaddresses (01,111,101,111,000), (01,111,101,100,000) and(01,111,101,010,000). The underl<strong>in</strong>ed bits are those thatdiffer from the correspond<strong>in</strong>g bits <strong>in</strong> the address of the referencednode. The two neighbors <strong>in</strong> the high-level cube are(00,111,101,110,000) and (11,111,101,110,000).Fig. 1 shows the structure of an MC(1,2), where the clusteris a 2-cube and there are two classes. Each node has a41200101001110110101111344
0 14 50 41 52 36 78 129 138 912 132 63 710 1114 1510 1411 15252 253class 0 class 1254 255243 247251 2550 161 170 641 6532 4833 49128 192129 1932 183 192 663 6734 5035 51130 194131 195207 223class 2 class 3239 25563 127191 255Figure 2. A metacube MC(2,2)cross-edge attached to a node of the different class. The b<strong>in</strong>arynumber shown <strong>in</strong> the center of a cluster is cluster_id.Fig. 2 shows the structure of an MC(2,2), where the clusters<strong>in</strong> the same square are of the same class. The decimalnumbers are node_id + cluster_id. In Fig. 2, there are2 2(22 −1) = 64 clusters <strong>in</strong> each square and each cluster is a2-cube. The figure shows only 4 high-level cubes, each ofwhich conta<strong>in</strong>s a dist<strong>in</strong>ct node <strong>in</strong> the cluster 0 of the class 0.The ratio of the total number of l<strong>in</strong>ks <strong>in</strong> the hypercubeto the total number of l<strong>in</strong>ks <strong>in</strong> the MC network is equal ton/(m + k), where n = m2 k + k. For example, for k = 2 andm = 3 (n = 14), each of the two networks conta<strong>in</strong>s 16384nodes; the hypercube conta<strong>in</strong>s 16384 × 14/2 = 114688l<strong>in</strong>ks and the MC network conta<strong>in</strong>s 16384 × (3 + 2)/2 =40960 l<strong>in</strong>ks. The reduction <strong>in</strong> the total number of l<strong>in</strong>ks forthis example is 73728 l<strong>in</strong>ks or about 64%.3. Po<strong>in</strong>t-to-po<strong>in</strong>t rout<strong>in</strong>g <strong>in</strong> metacubeThe problem of f<strong>in</strong>d<strong>in</strong>g a path from a source node s toa dest<strong>in</strong>ation node t, and forward<strong>in</strong>g messages along thepath is known as the po<strong>in</strong>t-to-po<strong>in</strong>t rout<strong>in</strong>g problem. It isthe basic problem for any <strong>in</strong>terconnection network. In thissection, we describe briefly the po<strong>in</strong>t-to-po<strong>in</strong>t rout<strong>in</strong>g algorithm<strong>in</strong> metacube [8]. This algorithm is the build<strong>in</strong>g blockfor the proposed fault-<strong>tolerant</strong> rout<strong>in</strong>g algorithm.We adopt the follow<strong>in</strong>g notation. In the metacubeMC(k,m), each node has m + k neighbors. Let s (i) , 0 ≤i ≤ k − 1, be the ith dimensional neighbor of node s with<strong>in</strong>the k-cube, that is, the addresses of s and s (i) differ <strong>in</strong> theith bit position (the rightmost bit is the 0th bit) <strong>in</strong> the classfield c. Let s (i+k) , 0 ≤ i ≤ m − 1, be the ith dimensionalneighbor of node s <strong>in</strong> the m-cube, that is, the addresses of s345