<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Asbransc</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Asbransc"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Asbransc"/>
	<updated>2026-05-14T10:23:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45381</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45381"/>
		<updated>2011-04-26T04:23:02Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube (3-D Mesh)&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  3(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   --this is the corner-to-corner distance, analogous to the 2-d mesh formula&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;  -- p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; rows of p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; links must be cut to bisect a cube&lt;br /&gt;
* ''# Links:''   3*p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;   -- there are p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt; links in each of 3 dimensions.&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Y. Solihin, ''Fundamentals of Parallel Computer Architecture''. Madison: OmniPress, 2009.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45380</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45380"/>
		<updated>2011-04-26T04:13:34Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube (3-D Mesh)&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  3(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   --this is the corner-to-corner distance, analogous to the 2-d mesh formula&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;  -- p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; rows of p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; links must be cut to bisect a cube&lt;br /&gt;
* ''# Links:''   3*p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;   -- there are p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt; links in each of 3 dimensions.&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45379</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45379"/>
		<updated>2011-04-26T04:12:45Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  3(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   --this is the corner-to-corner distance, analogous to the 2-d mesh formula&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;  -- p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; rows of p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; links must be cut to bisect a cube&lt;br /&gt;
* ''# Links:''   3*p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;   -- there are p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt; links in each of 3 dimensions.&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45378</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45378"/>
		<updated>2011-04-26T04:10:55Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  3(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   --this is the corner-to-corner distance, analogous to the 2-d mesh formula&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;  -- p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; rows of p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; links must be cut to bisect a cube&lt;br /&gt;
* ''# Links:''   3*p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   -- there are p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1) links in each of 3 dimensions.&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45377</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45377"/>
		<updated>2011-04-26T04:09:28Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  3(p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt;-1)   --this is the corner-to-corner distance, analogous to the 2-d mesh formula&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;  -- p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; rows of p&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; links must be cut to bisect a cube&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2  &lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45376</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45376"/>
		<updated>2011-04-26T04:03:29Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  &lt;br /&gt;
* ''Bisection BW:''  p/2              -- p/2 links run from one N-1 cube to the other.&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- each node has a degree of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p). Multiply by p nodes and divide by 2 nodes per link.&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies. Each node is numbered with a bitstring that is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) bits long. The farthest away node is this bitstring's complement. One bit can be flipped per hop so the diameter is log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=45375</id>
		<title>ECE506 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=45375"/>
		<updated>2011-04-26T03:57:28Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a portal for all wiki material related to CSC506 and ECE506. Link to any new wiki pages from this page, and add links to any current pages.&lt;br /&gt;
&lt;br /&gt;
=Supplements to Solihin Text=&lt;br /&gt;
&lt;br /&gt;
Post links to the textbook supplements in this section.&lt;br /&gt;
*Chapter 2 [[CSC/ECE 506 Spring 2011/ch2 dm | CSC/ECE 506 Spring 2011/ch2 dm]]&lt;br /&gt;
*Chapter 2 [[Parallel_Programming_Models | Parallel Programming Models]]&lt;br /&gt;
*Chapter 2 (Still being revised) [[CSC/ECE 506 Spring 2011/ch2 cl | CSC/ECE 506 Spring 2011/ch2 cl]]&lt;br /&gt;
*Chapter 2a [[ CSC/ECE 506 Spring 2011/ch2a mc | Current Data-Parallel Architectures ]]&lt;br /&gt;
*Chapter 3 (Final Revision) [[ CSC/ECE 506 Spring 2011/ch3 ab | Parallel Architecture Mechanisms and Programming Models ]]&lt;br /&gt;
*Chapter 4a[[ CSC/ECE 506 Spring 2011/ch4a ob | Parallelization of Nelder Mead Algorithm ]]&lt;br /&gt;
*Chapter 4a (Under Construction) [[ CSC/ECE_506_Spring_2011/ch4a_bm | Parallelization of Algorithms  ]]&lt;br /&gt;
*Chapter 4a [[ CSC/ECE 506 Spring 2011/ch4a zz | CSC/ECE 506 Spring 2011/ch4a zz ]]&lt;br /&gt;
*Chapter 4b [[Chapter 4b CSC/ECE 506 Spring 2011 / ch4b]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a jp | CSC/ECE 506 Spring 2011/ch6a jp ]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a ep | CSC/ECE 506 Spring 2011/ch6a ep ]]&lt;br /&gt;
*Chapter 6b (Ready for First Review) [[CSC/ECE 506 Spring 2011/ch6b ab | CSC/ECE 506 Spring 2011/ch6b ab]]&lt;br /&gt;
*Chapter 7 (Under Construction) [[CSC/ECE 506 Spring 2011/ch7 jp | CSC/ECE 506 Spring 2011/ch7 jp]]&lt;br /&gt;
*Chapter 8 [[CSC/ECE 506 Spring 2011/ch8 mc | CSC/ECE 506 Spring 2011/ch8 mc]]&lt;br /&gt;
*Chapter 10 (Under Construction) [[CSC/ECE 506 Spring 2011/ch10 sb | CSC/ECE 506 Spring 2011/ch10 sb]]&lt;br /&gt;
*Chapter 10a [[CSC/ECE_506_Spring_2011/ch10a_dc | CSC/ECE_506_Spring_2011/ch10a_dc]]&lt;br /&gt;
*Chapter 11 [[CSC/ECE_506_Spring_2011/ch11_BB_EP | Chapter 11 Supplement]]&lt;br /&gt;
*Chapter 11 [[Scalable_Coherent_Interface | SCI (Scalable Coherent Interface) ]]&lt;br /&gt;
*Chapter 12 [[ CSC/ECE 506 Spring 2011/ch12 ob | Interconnection Network Topologies and Routing Algorithms]]&lt;br /&gt;
*Chapter 12 (Ready for Final Review) [[ CSC/ECE 506 Spring 2011/ch12 aj | Interconnection Network Topologies and Routing Algorithms]]&lt;br /&gt;
*Chapter 12 [[ CSC/ECE 506 Spring 2011/ch12 | Interconnection Network Topologies]]&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45374</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45374"/>
		<updated>2011-04-26T03:56:56Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Packet Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45373</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45373"/>
		<updated>2011-04-26T03:56:11Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  -- there are 2 links for each router and there are p routers if p is a power of 2.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45372</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45372"/>
		<updated>2011-04-26T03:55:29Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2*p  -- there are 2 links for each router and there are p routers.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45371</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45371"/>
		<updated>2011-04-26T03:54:58Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2*p  -- there are 2 links for each router and there are p/2 routers.&lt;br /&gt;
* ''Degree:''    3  -- interior routers have a degree of 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45370</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45370"/>
		<updated>2011-04-26T03:52:08Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  &lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a tree since butterfly has the same depth as a tree (just with p nodes at each level)&lt;br /&gt;
* ''Bisection BW:''  p            -- p links connect the two halves at the top level&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- there are 2*p links at each level times log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels.&lt;br /&gt;
* ''Degree:''    4    -- the routers in the middle levels all have 4 links. The leaves and routers at the top level each have 2 links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly has similar performance to Hypercube. In terms of cost, butterfly has a smaller degree (so cheaper routers can be used) but hypercube has fewer links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45369</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45369"/>
		<updated>2011-04-26T03:45:59Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  &lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- same as a regular tree&lt;br /&gt;
* ''Bisection BW:''  p/2        -- all links to (one side of) the root must be cut to bisect the tree&lt;br /&gt;
* ''# Links:''   plog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) -- there are p links at each of log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p) levels&lt;br /&gt;
* ''Degree:''    p     -- the root node has p links through it. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45368</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45368"/>
		<updated>2011-04-26T03:43:54Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)  -- the path from a leaf through the root to the farthest leaf on the other side&lt;br /&gt;
* ''Bisection BW:''  1   -- breaking either link to the root bisects the tree&lt;br /&gt;
* ''# Links:''   2(p-1)  &lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45367</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45367"/>
		<updated>2011-04-26T03:41:08Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of two-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45366</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45366"/>
		<updated>2011-04-26T03:40:17Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, add the number of vertical links, sqrt(p)(sqrt(p)-1), to the number of horizontal links, also sqrt(p)(sqrt(p)-1), to get 2sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of four-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45365</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45365"/>
		<updated>2011-04-26T03:34:24Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)   &lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, first the number of vertical links are sqrt(p)(sqrt(p)-1) and then add with number of horizontal links is also sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes which is the sum of 2 edges of length sqrt(p)-1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of four-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45364</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45364"/>
		<updated>2011-04-26T03:31:12Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png|thumbnail|300px|left|]] &lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several metrics are normally choose to represent the cost and performance for a certain topology. In this section, degree, number of links, diameter and bisection width will be calculated for each topology.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_linear.jpg|thumbnail|frame|right|]]&lt;br /&gt;
&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p-1 &lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   p-1&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A linear array is the cheapest way to connect a group of nodes together. The number of links and degree of linear array have the smallest value of any topology. However, the draw back of this topology is also obvious: the two end points suffer the longest distance between each other, which makes the diameter p-1. This topology is also not reliable since the bisection bandwidth is 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg|thumbnail|right|]]&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  p/2&lt;br /&gt;
* ''Bisection BW:''  2&lt;br /&gt;
* ''# Links:''   p&lt;br /&gt;
* ''Degree:''    2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Compared with the cheapest linear array topology, the ring topology uses least effort (only add one link) to get a relatively big improvement. The longest distance between two nodes is cut into half. And the biseciton bandwidth has increased to 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dmesh.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. This topology is very suitable for some of the applications such as the ocean application and matrix calculation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(sqrt(p)-1)&lt;br /&gt;
* ''Bisection BW:''  sqrt(p)&lt;br /&gt;
* ''# Links:''   2sqrt(p)(sqrt(p)-1)&lt;br /&gt;
* ''Degree:''    4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nodes that are not on the edge have a '''degree''' of 4. To calculate the number of links, first the number of vertical links are sqrt(p)(sqrt(p)-1) and then add with number of horizontal links is also sqrt(p)(sqrt(p)-1). The diameter is calculated by the distance between two diagonal nodes.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_2Dtorus.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
Similarly as the trick we did from linear array to ring topology, the 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Diameter sqrt(p)–1&lt;br /&gt;
* Bisection BW 2sqrt(p)&lt;br /&gt;
* # Links 2p&lt;br /&gt;
* Degree 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With end-around connection, the longest distance has been cut. And the biseciton bandwidth also increased. Of course, the cost from 2-D mesh to 2-D torus almost increased twice.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg|thumbnail|right|]]&lt;br /&gt;
&lt;br /&gt;
If we add two more neighbor to each node, we can get a cube. The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2(p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;1/2&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   3*2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
* ''Degree:''    6 (from the inside nodes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We can also extend some of the metrics to the N-dimensional mesh:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  N(p&amp;lt;sup&amp;gt;1/N&amp;lt;/sup&amp;gt;)-1&lt;br /&gt;
* ''Bisection BW:''  p&amp;lt;sup&amp;gt;N-1/N&amp;lt;/sup&amp;gt;&lt;br /&gt;
* ''# Links:''   N*2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt;/2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The degree is hard to calculate in this case. Interestingly enough we found that the degree of cube is 6 which is larger than the degree of four-dimensional mesh which is 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hypercube.jpg|thumbnail|right|Hypercube]]&lt;br /&gt;
&lt;br /&gt;
In the N-dimensional cube, the boundary nodes are normally the one who hurts the performance of entire network. Thus, we can fix it by connecting those broundary nodes together. The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   p/2 * log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
From the metrics we can see, the diameter and bisection bandwidth are significantly improved for the high order topologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_tree.jpg|thumbnail|right|Tree]]&lt;br /&gt;
&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  1&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree experiences high traffic at the upper levels. Since almost half of the messages need go through the root node, the root of the tree becomes the bottom neck of the tree topology. Also, the other disadvantage of tree topology is that the bisection bandwidth is only 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_fat_tree.jpg|thumbnail|right|Fat Tree]]&lt;br /&gt;
In order to improve the performance of the tree topology, the fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2(p-1)&lt;br /&gt;
* ''Degree:''    3 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree relieved pressure of root node, the biseciton bandwidth has also been increased.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_butterfly.jpg|thumbnail|right|Butterfly]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
* ''Diameter:''  2log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Bisection BW:''  p/2&lt;br /&gt;
* ''# Links:''   2p*log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(p)&lt;br /&gt;
* ''Degree:''    4 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Butterfly have the same performance compared with Hypercube. In terms of cost, butterfly have less degree but hypercube have less number of links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_network.jpg|frame|center|''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_butterfly.jpg|frame|center|''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_mesh.jpg|frame|center|''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_torus.jpg|frame|center|''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&lt;br /&gt;
[[Image:Disknet_hypercube.jpg|frame|center|''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
It is worth to mention that even though there are many topologies have much better performance than 2-D mesh, the cost of these advanced topologies are also high. Since most of the chips is in 2-D space, it is very expensive to implement high dimensional topology on 2-D chip. For hypercube topology, the increases of number of node will cause higher degree for each node. For the butterfly topology, although the increases of degree is relatively slow but the required number of links and number of switches increases rapidly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=45049</id>
		<title>ECE506 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=45049"/>
		<updated>2011-04-18T06:37:00Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a portal for all wiki material related to CSC506 and ECE506. Link to any new wiki pages from this page, and add links to any current pages.&lt;br /&gt;
&lt;br /&gt;
=Supplements to Solihin Text=&lt;br /&gt;
&lt;br /&gt;
Post links to the textbook supplements in this section.&lt;br /&gt;
*Chapter 2 [[CSC/ECE 506 Spring 2011/ch2 dm | CSC/ECE 506 Spring 2011/ch2 dm]]&lt;br /&gt;
*Chapter 2 [[Parallel_Programming_Models | Parallel Programming Models]]&lt;br /&gt;
*Chapter 2 (Still being revised) [[CSC/ECE 506 Spring 2011/ch2 cl | CSC/ECE 506 Spring 2011/ch2 cl]]&lt;br /&gt;
*Chapter 2a [[ CSC/ECE 506 Spring 2011/ch2a mc | Current Data-Parallel Architectures ]]&lt;br /&gt;
*Chapter 3 (Final Revision) [[ CSC/ECE 506 Spring 2011/ch3 ab | Parallel Architecture Mechanisms and Programming Models ]]&lt;br /&gt;
*Chapter 4a[[ CSC/ECE 506 Spring 2011/ch4a ob | Parallelization of Nelder Mead Algorithm ]]&lt;br /&gt;
*Chapter 4a (Under Construction) [[ CSC/ECE_506_Spring_2011/ch4a_bm | Parallelization of Algorithms  ]]&lt;br /&gt;
*Chapter 4a [[ CSC/ECE 506 Spring 2011/ch4a zz | CSC/ECE 506 Spring 2011/ch4a zz ]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a jp | CSC/ECE 506 Spring 2011/ch6a jp ]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a ep | CSC/ECE 506 Spring 2011/ch6a ep ]]&lt;br /&gt;
*Chapter 6b (Ready for First Review) [[CSC/ECE 506 Spring 2011/ch6b ab | CSC/ECE 506 Spring 2011/ch6b ab]]&lt;br /&gt;
*Chapter 7 (Under Construction) [[CSC/ECE 506 Spring 2011/ch7 jp | CSC/ECE 506 Spring 2011/ch7 jp]]&lt;br /&gt;
*Chapter 8 [[CSC/ECE 506 Spring 2011/ch8 mc | CSC/ECE 506 Spring 2011/ch8 mc]]&lt;br /&gt;
*Chapter 10 (Under Construction) [[CSC/ECE 506 Spring 2011/ch10 sb | CSC/ECE 506 Spring 2011/ch10 sb]]&lt;br /&gt;
*Chapter 10a [[CSC/ECE_506_Spring_2011/ch10a_dc | CSC/ECE_506_Spring_2011/ch10a_dc]]&lt;br /&gt;
*Chapter 11 [[CSC/ECE_506_Spring_2011/ch11_BB_EP | Chapter 11 Supplement]]&lt;br /&gt;
*Chapter 11 [[Scalable_Coherent_Interface | SCI (Scalable Coherent Interface) ]]&lt;br /&gt;
*Chapter 12 (under construction) [[ CSC/ECE 506 Spring 2011/ch12 ob | Interconnection Network Topologies and Routing Algorithms]]&lt;br /&gt;
*Chapter 12 (under construction) [[ CSC/ECE 506 Spring 2011/ch12 aj | Interconnection Network Topologies and Routing Algorithms]]&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45048</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45048"/>
		<updated>2011-04-18T06:35:45Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png]]&lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
This link is down at this time. [http://webcache.googleusercontent.com/search?q=cache:2f2KNFWJCsQJ:www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf+history+of+interconnection+topologies&amp;amp;cd=9&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=ubuntu&amp;amp;source=www.google.com Google Cache]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45047</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45047"/>
		<updated>2011-04-18T06:32:54Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png]]&lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology&amp;lt;sup&amp;gt;9,10&amp;lt;/sup&amp;gt;. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes &amp;lt;sup&amp;gt;11,12&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
8 [http://www.redbooks.ibm.com/abstracts/sg245161.html?Open Understanding and Using the SP Switch]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9 [http://www.myri.com/myrinet/overview/ Myrinet Overview]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
10 [http://en.wikipedia.org/wiki/QsNet QsNet (Quadrics' network)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
11 [http://www.google.com/research/pubs/pub35155.html Dragonfly Topology]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.573&amp;amp;rep=rep1&amp;amp;type=pdf Flattened Butterfly Topology]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45046</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45046"/>
		<updated>2011-04-18T06:28:25Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png]]&lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&lt;br /&gt;
However, when the number of nodes increases, the relative cost of the higher-dimensional topologies increases far faster than their relative performance when compared to a 2-D mesh. This is because the 2-D mesh only uses low-cost, short links. The higher-dimensional structures must be projected onto our 3-dimensional world, and thus require many long, expensive links that wrap around the outside of the system like an impenetrable tangle of jungle vines. Maintaining such a network is also quite slow and tedious.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45045</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45045"/>
		<updated>2011-04-18T06:20:58Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png]]&lt;br /&gt;
&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases. However, with modern router technology, the number of ports is a less important consideration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45044</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45044"/>
		<updated>2011-04-18T06:11:05Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;History of Network Topologies&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hypercube topologies were invented in the 80s and had desirable characteristics when the number of nodes is small (~1000 maximum, often &amp;lt;100) and every processor must stop working to receive and forward the message &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;. The low-radix era began in 1985 and was defined by routers with between 4 and 8 ports using toroidal, mesh or fat-tree topologies and wormhole routing. This era lasted about 20 years until it was determined that routers with dozens of ports offered superior performance. Two topologies were developed to take advantage of the newly developed high-radix routers. These are flattened butterfly and dragonfly, which are somewhere between a mesh with each point on the mesh being a router (or virtual router in the case of dragonfly) with dozens or hundreds of nodes attached and a fat tree with sufficiently high arity as to only have two levels. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Interconnection evolution in the Top500 List&amp;lt;/h2&amp;gt;&lt;br /&gt;
[[Image:Top500interconnect.png]]&lt;br /&gt;
This chart shows the evolution over time of the different interconnect topologies by their dominance in the top500 list of supercomputers &amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;. As one can see, many technologies came into vogue briefly before losing performance share and disappearing. In the early days of the list, most of the computers list that the interconnect type is not applicable. However, the trailing end of the hypercube phase is clear in burnt orange. The dark blue at the top is &amp;quot;other&amp;quot; and the dark red in the middle is &amp;quot;proprietary&amp;quot;, so we can only speculate about what topologies they might employ. The toroidal mesh appears briefly at the start in a cream color, and slightly outlasts the hypercube. The two crossbar technologies (blue and olive) followed the toroidal mesh. The fully-distributed crossbar died out quickly, but the multi-stage crossbar lasted longer but wasn't ever dominant. The 3-D torus (purple) dominates much of the 90s with hypercube topologies (dark pink) enjoying a short comeback in the later part of the decade. SP Switch (light olive), an IBM interconnect technology which uses a multi-stage crossbar switch replaced the 3-D torus. Myrinet, Quadrics, and Federation all shared the spotlight in the mid 00s each used a similar fat-tree topology. The current class of supercomputers is dominated by nodes connected with either Infiniband or gigabit ethernet. Both can be connected in either a fat-tree or 2-D mesh topology. The primary difference between them is speed. Infiniband is considerably faster per link and allows links to be ganged into groups of 4 or 12. Gigabit ethernet is vastly less expensive, however, and some supercomputer designers have apparently chosen to save money on the interconnect technology in order to allow the use of faster nodes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Top500interconnect.png&amp;diff=45042</id>
		<title>File:Top500interconnect.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Top500interconnect.png&amp;diff=45042"/>
		<updated>2011-04-18T04:51:13Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: The evolution of interconnect families over time.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The evolution of interconnect families over time.&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45037</id>
		<title>CSC/ECE 506 Spring 2011/ch12 aj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch12_aj&amp;diff=45037"/>
		<updated>2011-04-18T04:40:17Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Interconnection Network Architecture &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a multi-processor system, processors need to communicate with each other and access each other's resources. In order to route data and messages between processors, an interconnection architecture is needed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Typically, in a multiprocessor system, message passed between processors are frequent and short&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;. Therefore, the interconnection network architecture must handle messages quickly by having '''low latency''', and must handle several messages at a time and have '''high bandwidth'''. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a network, a processor along with its cache and memory is considered a '''node'''. The physical wires that connect between them is called a '''link'''. The device that routes messages between nodes is called a router. The shape of the network, such as the number of links and routers, is called the network '''topology'''.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Types of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Linear Array&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_linear.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The nodes are connected linearly as in an array. This type of topology is simple, however, it does not scale well. The longest distance between two nodes, or the '''diameter''', is equivalent to the number of nodes. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Ring&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_ring.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similar structure as the linear array, except, the ending nodes connect to each other, establishing a circular structure. The longest distance between two nodes is cut in half.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Mesh&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dmesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D mesh can be thought of as several linear arrays put together to form a 2-dimensional structure. Nodes that are not on the edge have 4 input or output links, or a '''degree''' of 4.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2-D Torus&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_2Dtorus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The 2-D torus takes the structure of the 2-D mesh and connects the nodes on the edges. This decreases the diameter, but the number of links is higher. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Cube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_cube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The cube can be thought of as a three-dimensional mesh.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The hypercube is essentially multiple cubes put together.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The tree is a hierarchical structure nodes on the bottom and switching nodes at the upper levels. The tree experiences high traffic at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_fat_tree.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The fat tree alleviates the traffic at upper levels by &amp;quot;fattening&amp;quot; up the links at the upper levels. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Image:Top_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The butterfly structure is similar to the tree structure, but it replicates the switching node structure of the tree topology and connects them together so that there are equal links and routers at all levels.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Real-World Implementation of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a research study by Andy Hospodor and Ethan Miller, several network topologies were investigated in a high-performance, high-traffic network&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Several topologies were investigated including the fat tree, butterfly, mesh, torii, and hypercube structures. Advantages and disadvantages including cost, performance, and reliability were discussed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this experiment, a petabyte-scale network with over 100 GB/s total aggregate bandwidth was investigated. The network consisted of 4096 disks with large servers with routers and switches in between&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The overall structure of the network is shown below. Note that this structure is very susceptible to failure and congestion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_network.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Basic structure of Hospodor and Miller's experimental network''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fat Tree&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In large scale, high performance applications, fat tree can be a choice. However, in order to &amp;quot;fatten&amp;quot; up the links, redundant connections must be used. Instead of using one link between switching nodes, several must be used. The problem with this is that with more input and output links, one would need routers with more input and output ports. Router with excess of 100 ports are difficult to build and expensive, so multiple routers would have to be stacked together. Still, the routers would be expensive and would require several of them&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Japan Agency for Marine-Earth Science and Technology supercomputing system uses the fat tree topology. The system connects 1280 processors using NEC processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Butterfly&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In high performance applications, the butterfly structure is a good choice. The butterfly topology uses fewer links than other topologies, however, each link carries traffic from the entire layer. Fault tolerance is poor. There exists only a single path between pairs of nodes. Should the link break, data cannot be re-routed, and communication is broken&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_butterfly.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Butterfly structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Meshes and Tori&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The mesh and torus structure used in this application would require a large number of links and total aggregate of several thousands of ports. However, since there are so many links, the mesh and torus structures provide alternates paths in case of failures&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some examples of current use of torus structure include the QPACE SFB TR Cluster in Germany using the PowerXCell 8i processors. The systems uses 3-D torus topology with 4608 processors&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_mesh.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Mesh structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_torus.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Torus structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Hypercube&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Similar to the torii structures, the hypercube requires larger number of links. However, the bandwidth scales better than mesh and torii structures. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The CRAY T3E, CRAY XT3, and SGI Origin 2000 use k-ary n-cubed topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_hypercube.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hypercube structure''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Network Topologies &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following table shows the total number of ports required for each network topology. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_ports.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Number of ports for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As the figure above shows, the 6-D hypercube requires the largest number of ports, due to its relatively complex six-dimensional structure. In contrast, the fat tree requires the least number of ports, even though links have been &amp;quot;fattened&amp;quot; up by using redundant links. The butterfly network requires more than twice the number of ports as the fat tree, since it essentially replicates the switching layer of the fat tree. The number of ports for the mesh and torii structures increase as the dimensionality increases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Below the average path length, or average number of hops, and the average link load (GB/s) is shown.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_load.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Average path length and link load for each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the trends, when average path length is high, the average link load is also high. In other words, average path length and average link load are proportionally related. It is obvious from the graph that 2-D mesh has, by far, the worst performance. In a large network such as this, the average path length is just too high, and the average link load suffers. For this type of high-performance network, the 2-D mesh does not scale well. Likewise the 2-D torus cuts the average path length and average link load in half by connected the edge nodes together, however, the performance compared to other types is relatively poor. The butterfly and fat-tree have the least average path length and average link load. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The figure below shows the cost of the network topologies.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_cost.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Despite using the fewest number of ports, the fat tree topology has the highest cost, by far. Although it uses the fewest ports, the ports are high bandwidth ports of 10 GB/s. Over 2400, ports of 10 GB/s are required have enough bandwidth at the upper levels of the tree. This pushes the cost up dramatically, and from a cost standpoint is impractical. While the total cost of fat tree is about 15 million dollars, the rest of the network topologies are clustered below 4 million dollars. When the dimensionalality of the mesh and torii structures increase, the cost increases. The butterfly network costs between the 2-D mesh/torii and the 6-D hypercube. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the cost and average link load is factored the following graph is produced.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Disknet_overall.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Overall cost of each topology''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
From the figure above, the 6-D hypercube demonstrates the most cost effective choice on this particular network setup. Although the 6-D hypercube costs more because it needs more links and ports, it provides higher bandwidth, which can offset the higher cost. The high dimensional torii also perform well, but cannot provide as much bandwidth as the 6-D hypercube. For systems that do not need as much bandwidth, the high-dimensional torii is also a good choice. The butterfly topology is also an alternative, but has lower fault tolerance. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''routing''' algorithm determines what path a packet of data will take from source to destination. Routing can be '''deterministic''', where the path is the same given a source and destination, or '''adaptive''', where the path can change. The routing algorithm can also be '''partially adaptive''' where packets have multiple choices, but does not allow all packets to use the shortest path&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Deadlock&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When packets are in '''deadlock''' when they cannot continue to move through the nodes. The illustration below demonstrates this event. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_deadlock.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Example of deadlock''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assume that all of the buffers are full at each node. Packet from Node 1 cannot continue to Node 2. The packet from Node 2 cannot continue to Node 3, and so on. Since packet cannot move, it is deadlocked. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The deadlock occurs from cyclic pattern of routing. To avoid deadlock, avoid circular routing pattern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid circular patterns of routing, some routing patterns are disallowed. These are called '''turn restrictions''', where some turns are not allowed in order to avoid making a circular routing pattern. Some of these turn restrictions are mentioned below.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Dimensional ordered (X-Y) routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns from the y-dimension to the x-dimension are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;West First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns to the west are not allowed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;North Last&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns after a north direction are not allowed. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Negative First&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Turns in the negative direction (-x or -y) are not allowed, except on the first turn.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Odd-Even Turn Model&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unfortunately, the above turn-restriction models reduce the degree of adaptiveness and are partially adaptive. The models cause some packets to take different routes, and not necessarily the minimal paths. This may cause unfairness but reduces the ability of the system to reduce congestion. Overall performance could suffer&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Ge-Ming Chiu introduces the Odd-Even turn model as an adaptive turn restriction, deadlock-free model that has better performance than the previously mentioned models&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;. The model is designed primarily for 2-D meshes.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
''Turns from the east to north direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the north to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the east to south direction from any node on an even column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Turns from the south to west direction from any node on an odd column are not allowed.''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The illustration below shows allowed routing for different source and destination nodes. Depending on which column the packet is in, only certain directions are allowed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_odd_even.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Odd-Even turn restriction model proposed by Ge-Ming Chiu''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Comparison of Turn Restriction Models&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To simulate the performance of various turn restriction models, Chiu simulated a 15 x 15 mesh under various traffic patterns. All channels have bandwidth of 20 flits/usec and has a buffer size of one flit. The dimension-ordered x-y routing, west-first, and negative-first models were compared against the odd-even model. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Traffic patterns including uniform, transpose, and hot spot were conducted. Uniform simulates one node send messages to any other node with equal probability. Transpose simulates two opposite nodes sending messages to their respective halves of the mesh. Hot spot simulates a few &amp;quot;hot spot&amp;quot; nodes that receive high traffic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_uniform.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Uniform traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the uniform traffic. For uniform traffic, the dimensional ordered x-y model outperforms the rest of the models. As the number of messages increase, the x-y model has the &amp;quot;slowest&amp;quot; increase in average communication latency. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''First transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the first transpose traffic. The negative-first model has the best performance, while the odd-even model performs better than the west-first and x-y models.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_transpose2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second transpose traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
With the second transpose simulation, the odd-even model outperforms the rest.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The performance of the different routing algorithms is shown above for the hotspot traffic. Only one hotspot was simulated for this test. The performance of the odd-even model outperforms other models when hotspot traffic is 10%.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Routing_hotspot2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Second hotspot traffic simulation of various turn restriction models''&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When the number of hotspots is increased to five, the performance of the odd-even begins to shine. The latency is lowest for both 6 and 8 percent hotspot. Meanwhile, the performance of x-y model is horrendous. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
While the x-y model performs well in uniform traffic, it lacks adaptiveness. When traffic becomes hotspot, the x-y model suffers from the inability to adapt and re-route traffic to avoid the congestion caused by hotspots. The odd-even model has superior adaptiveness under high congestion. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Router Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''router''' is a device that routes incoming data to its destination. It does this by having several input ports and several output ports. Data incoming from one of the inputs ports is routed to one of the output ports. Which output port is chosen depends on the destination of the data, and the routing algorithms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The internal architecture of a router consists of input and output ports and a '''crossbar switch'''. The crossbar switch connects the selects which output should be selected, acting essentially as a multiplexer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router technology has improved significantly over the years. This has allowed networks with high dimensionality to become feasible. As shown in the real-world example above, high dimensional torii and hypercube are excellent choice of topology for high-performance networks. The cost of high-performance, high-radix routers has contributed to the viability of these types of high dimensionality networks. As the graph below shows, the bandwidth of routers has improved tremendously over a period of 10 years&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_bandwidth.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Bandwidth of various routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Looking at the physical architecture and layout of router, it is evident that the circuitry has been dramatically more dense and complex.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_physical.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Router hardware over period of time''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Router_radix.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Radix and latency of routers over 10 year period''&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The '''radix''', or the number of ports of routers has also increased. The current technology not only has high radix, but also low latency compared to last generation. As radix increases, the latency remains steady. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With high-performance routers, complex topologies are possible. As the router technology improves, more complex, high-dimensionality topologies are possible. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Fault Tolerant Routing&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Fault-tolerant routing means the successful routing of messages between any pair of non faulty nodes in the presence of faulty components&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;. With increased number of processors in a multiprocessor system and high data rates reliable transmission of data in event of network fault is of great concern and hence fault tolerant routing algorithms are important.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Models&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Faults in a network can be categorized in two types:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Transient Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; : A transient fault is a temporary fault that occurs for a very short duration of time. This fault can be caused due to change in output of flip-flop leading to generation of invalid header. These faults can be minimized using error controlled coding. These errors are generally evaluated in terms of Bit Error Rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Permanent Faults'''&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;: A permanent fault is a fault that does not go away and causes a permanent damage to the network. This fault could be due to damaged wires and associated circuitry. These faults are generally evaluated in terms of Mean Time between Failures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Fault Tolerance Mechanisms (for permanent faults)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The permanent faults can be handled using one of the two mechanisms:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1.'''Static Mechanism''': In static fault tolerance model, once the fault is detected all the processes running in the system are stopped and the routing tables are emptied. Based on the information of faults the routing tables are re-calculated to provide a fault free path.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.'''Dynamic Mechanisms''': In dynamic fault tolerance model, it is made sure that the operation of the processes in the network is not completely stalled and only the affected regions are provided cure. Some of the methods to do this are:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
a.'''Block Faults''': In this method many of the healthy nodes in vicinity of the faulty nodes are marked as faulty nodes so that no routes are created close to the actual faulty nodes. The shape of the region could be convex or non-convex, and is made sure that none of the new routes introduce cyclic dependency in the cyclic dependency graph (CDG).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DISADVANTAGE: This method causes lot of healthy nodes to be declared as faulty leading to reduction in system capacity.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic1.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b.'''Fault Rings''': This method was introduced by Chalasani and Boppana. A fault tolerant ring is a set of nodes and links that are adjunct to faulty nodes/links. This approach reduces the number of healthy nodes to be marked as faulty and blocking them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Fault_pic2.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;References&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
1 Solihin text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 [http://www.ssrc.ucsc.edu/Papers/hospodor-mss04.pdf Interconnection Architectures for Petabyte-Scale High-Performance Storage Systems]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 [http://www.diit.unict.it/~vcatania/COURSES/semm_05-06/DOWNLOAD/noc_routing02.pdf The Odd-Even Turn Model for Adaptive Routing]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4 [http://www.csm.ornl.gov/workshops/IAA-IC-Workshop-08/documents/wiki/dally_iaa_workshop_0708.pdf Interconnection Topologies:(Historical Trends and Comparisons)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5 [http://dspace.upv.es/xmlui/bitstream/handle/10251/2603/tesisUPV2824.pdf?sequence=1 Efficient mechanisms to provide fault tolerance in interconnection networks for PC clusters, José Miguel Montañana Aliaga.]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
6 [http://web.ebscohost.com.www.lib.ncsu.edu:2048/ehost/pdfviewer/pdfviewer?vid=2&amp;amp;hid=15&amp;amp;sid=72e3828d-3cb1-42b9-8198-5c1e974ea53f@sessionmgr4 Adaptive Fault Tolerant Routing Algorithm for Tree-Hypercube Multicomputer, Qatawneh Mohammad]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
7 [http://www.top500.org TOP500 Supercomputing Sites]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44290</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44290"/>
		<updated>2011-03-01T04:37:17Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: fixed the format of the references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Cache addressing has a significant impact on the performance of the cache, determining cache latency and when the cache must be flushed. Since a cache is designed purely to improve performance, the addressing scheme must be a prime consideration. &lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. One small downside is that the tags must be longer because they must contain the entire physical address rather than the part of the address not used for indexing as in the previous examples. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
This cache type allows the virtual address to be used right away to begin the lookup of the cache line. While this is going on, the TLB look up for the physical address can occur in parallel. When both lookups are complete, the physical address returned from the TLB is compared with the tag on the cache blocks to determine if the requested data is on this line. This hides the latency from address translation (assuming it takes approximately as long as retrieving the cache line) and obviates the need to flush the cache on a context switch because the physical address is used for the final check of the tag. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
There is the potential for the information in one processor's TLB to be made stale by another processor if the other processor changes the permissions on a page or handles the swapping of a page out to disk. Thus there must be some method of updating the TLB with fresher information when this (somewhat rare) scenario occurs. [[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Virtually Addressed Caches===&lt;br /&gt;
If the cache is virtually addressed and the miss rate is sufficiently low, the TLB can be eschewed entirely without impacting performance too much because it would only be used when a memory access is already required. The TLB need not be kept coherent if it doesn't exist. [[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===TLB Shootdown===&lt;br /&gt;
The processor making changes to the page table sends an interrupt to other processors alerting them that there has been a change made. The other processors look at a shared memory to determine which page table entries have changed and either invalidate or update their TLBs accordingly.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Address Space Identifiers===&lt;br /&gt;
This is a concept similar to process tagging in a virtually addressed cache. The software maintains control of the TLB and marks each of the entires with an address space identifier denoting which process the buffered translation belongs to. These identifiers can be used by the OS to manage TLB coherence by updating or invalidating other processors' TLBs or flushing only the entries corresponding to the process whose page table is changing. The MIPS architecture uses this strategy.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Write Invalidate===&lt;br /&gt;
This protocol uses the fact that other processors are already implementing a cache coherence protocol by snooping the bus and responding to the instructions and data that go across it. When a processor changes a page table entry it issues a command on the bus similar to a BusUpgr as used in cache coherence that tells the snooping processors to invalidate that entry in their TLBs. The PowerPC architecture uses this to maintain its TLB coherence.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;br /&gt;
The increase in prevalence of virtualization has caused many architectural changes to newer x86 processors. The TLBs were formerly managed fully by the hardware, but in order to better cope with virtual machines, both Intel and AMD have added address space identifiers to the TLB so that the entire thing isn't flushed every context switch. [[#References|&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://www.linuxjournal.com/article/7105?page=0,1 1: Linux Journal Article on Caching]&lt;br /&gt;
&lt;br /&gt;
[http://books.google.com/books?id=g82fofiqa5IC&amp;amp;pg=PA440&amp;amp;lpg=PA440&amp;amp;dq=tlb+coherence&amp;amp;source=bl&amp;amp;ots=COtleqdaUp&amp;amp;sig=fCU_8vD9_PhadrY62lneWUMG57g&amp;amp;hl=en&amp;amp;ei=VWhsTfatNMH7lwek9e3-BA&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=6&amp;amp;ved=0CDYQ6AEwBQ#v=onepage&amp;amp;q=tlb%20coherence&amp;amp;f=false 2: Parallel computer architecture: a hardware/software approach by David E. Culler]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Translation_lookaside_buffer#Virtualization_and_x86_TLB 3: Wikipedia on the TLB]&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=44289</id>
		<title>ECE506 Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=ECE506_Main_Page&amp;diff=44289"/>
		<updated>2011-03-01T04:35:54Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: Added my chapter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a portal for all wiki material related to CSC506 and ECE506. Link to any new wiki pages from this page, and add links to any current pages.&lt;br /&gt;
&lt;br /&gt;
=Supplements to Solihin Text=&lt;br /&gt;
&lt;br /&gt;
Post links to the textbook supplements in this section.&lt;br /&gt;
&lt;br /&gt;
*Chapter 2 [[Parallel_Programming_Models | Parallel Programming Models]]&lt;br /&gt;
*Chapter 2 (Still being revised) [[CSC/ECE 506 Spring 2011/ch2 cl | CSC/ECE 506 Spring 2011/ch2 cl]]&lt;br /&gt;
*Chapter 2a (Revision 1) [[ CSC/ECE 506 Spring 2011/ch2a mc | Current Data-Parallel Architectures ]]&lt;br /&gt;
*Chapter 3 (Final Revision) [[ CSC/ECE 506 Spring 2011/ch3 ab | Parallel Architecture Mechanisms and Programming Models ]]&lt;br /&gt;
*Chapter 4a[[ CSC/ECE 506 Spring 2011/ch4a ob | Parallelization of Nelder Mead Algorithm ]]&lt;br /&gt;
*Chapter 4a (Under Construction) [[ CSC/ECE_506_Spring_2011/ch4a_bm | Parallelization of Algorithms  ]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a jp | CSC/ECE 506 Spring 2011/ch6a jp ]]&lt;br /&gt;
*Chapter 6a (Under Construction) [[ CSC/ECE 506 Spring 2011/ch6a ep | CSC/ECE 506 Spring 2011/ch6a ep ]]&lt;br /&gt;
*Chapter 6b (Ready for First Review) [[CSC/ECE 506 Spring 2011/ch6b ab | CSC/ECE 506 Spring 2011/ch6b ab]]&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44287</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44287"/>
		<updated>2011-03-01T04:34:30Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: Done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Cache addressing has a significant impact on the performance of the cache, determining cache latency and when the cache must be flushed. Since a cache is designed purely to improve performance, the addressing scheme must be a prime consideration. &lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. One small downside is that the tags must be longer because they must contain the entire physical address rather than the part of the address not used for indexing as in the previous examples. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
This cache type allows the virtual address to be used right away to begin the lookup of the cache line. While this is going on, the TLB look up for the physical address can occur in parallel. When both lookups are complete, the physical address returned from the TLB is compared with the tag on the cache blocks to determine if the requested data is on this line. This hides the latency from address translation (assuming it takes approximately as long as retrieving the cache line) and obviates the need to flush the cache on a context switch because the physical address is used for the final check of the tag. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
There is the potential for the information in one processor's TLB to be made stale by another processor if the other processor changes the permissions on a page or handles the swapping of a page out to disk. Thus there must be some method of updating the TLB with fresher information when this (somewhat rare) scenario occurs. [[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Virtually Addressed Caches===&lt;br /&gt;
If the cache is virtually addressed and the miss rate is sufficiently low, the TLB can be eschewed entirely without impacting performance too much because it would only be used when a memory access is already required. The TLB need not be kept coherent if it doesn't exist. [[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===TLB Shootdown===&lt;br /&gt;
The processor making changes to the page table sends an interrupt to other processors alerting them that there has been a change made. The other processors look at a shared memory to determine which page table entries have changed and either invalidate or update their TLBs accordingly.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Address Space Identifiers===&lt;br /&gt;
This is a concept similar to process tagging in a virtually addressed cache. The software maintains control of the TLB and marks each of the entires with an address space identifier denoting which process the buffered translation belongs to. These identifiers can be used by the OS to manage TLB coherence by updating or invalidating other processors' TLBs or flushing only the entries corresponding to the process whose page table is changing. The MIPS architecture uses this strategy.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Write Invalidate===&lt;br /&gt;
This protocol uses the fact that other processors are already implementing a cache coherence protocol by snooping the bus and responding to the instructions and data that go across it. When a processor changes a page table entry it issues a command on the bus similar to a BusUpgr as used in cache coherence that tells the snooping processors to invalidate that entry in their TLBs. The PowerPC architecture uses this to maintain its TLB coherence.[[#References|&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;br /&gt;
The increase in prevalence of virtualization has caused many architectural changes to newer x86 processors. The TLBs were formerly managed fully by the hardware, but in order to better cope with virtual machines, both Intel and AMD have added address space identifiers to the TLB so that the entire thing isn't flushed every context switch. [[#References|&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://www.linuxjournal.com/article/7105?page=0,1 1: Linux Journal Article on Caching]&lt;br /&gt;
[http://books.google.com/books?id=g82fofiqa5IC&amp;amp;pg=PA440&amp;amp;lpg=PA440&amp;amp;dq=tlb+coherence&amp;amp;source=bl&amp;amp;ots=COtleqdaUp&amp;amp;sig=fCU_8vD9_PhadrY62lneWUMG57g&amp;amp;hl=en&amp;amp;ei=VWhsTfatNMH7lwek9e3-BA&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=6&amp;amp;ved=0CDYQ6AEwBQ#v=onepage&amp;amp;q=tlb%20coherence&amp;amp;f=false 2: Parallel computer architecture: a hardware/software approach&lt;br /&gt;
 By David E. Culler]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Translation_lookaside_buffer#Virtualization_and_x86_TLB 3:Wikipedia on the TLB]&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44258</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44258"/>
		<updated>2011-03-01T03:29:19Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. One small downside is that the tags must be longer because they must contain the entire physical address rather than the part of the address not used for indexing as in the previous examples. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
This cache type allows the virtual address to be used right away to begin the lookup of the cache line. While this is going on, the TLB look up for the physical address can occur in parallel. When both lookups are complete, the physical address returned from the TLB is compared with the tag on the cache blocks to determine if the requested data is on this line. This hides the latency from address translation (assuming it takes approximately as long as retrieving the cache line) and obviates the need to flush the cache on a context switch because the physical address is used for the final check of the tag. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging. [[#References|&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;Recent Processor&amp;gt;'s approach===&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
[http://www.linuxjournal.com/article/7105?page=0,1 Linux Journal Article on Caching]&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44256</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44256"/>
		<updated>2011-03-01T03:26:46Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location. &amp;lt;ref name=&amp;quot;lj&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. One small downside is that the tags must be longer because they must contain the entire physical address rather than the part of the address not used for indexing as in the previous examples. &amp;lt;ref name=&amp;quot;lj&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
This cache type allows the virtual address to be used right away to begin the lookup of the cache line. While this is going on, the TLB look up for the physical address can occur in parallel. When both lookups are complete, the physical address returned from the TLB is compared with the tag on the cache blocks to determine if the requested data is on this line. This hides the latency from address translation (assuming it takes approximately as long as retrieving the cache line) and obviates the need to flush the cache on a context switch because the physical address is used for the final check of the tag. &amp;lt;ref name=&amp;quot;lj&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging. &lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;Recent Processor&amp;gt;'s approach===&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;lj&amp;quot;&amp;gt;http://www.linuxjournal.com/article/7105?page=0,1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44235</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44235"/>
		<updated>2011-03-01T02:45:52Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: finished section on the 4 addressing schemes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location.&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
This cache type allows the virtual address to be used right away to begin the lookup of the cache line. While this is going on, the TLB look up for the physical address can occur in parallel. When both lookups are complete, the physical address returned from the TLB is compared with the tag on the cache blocks to determine if the requested data is on this line. This hides the latency from address translation (assuming it takes approximately as long as retrieving the cache line) and obviates the need to flush the cache on a context switch because the physical address is used for the final check of the tag. &lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging.&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;Recent Processor&amp;gt;'s approach===&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44229</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44229"/>
		<updated>2011-03-01T02:35:55Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: About 1/3 done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
The data in a CPU cache is addressed using an index and a tag. The index is used to find the cache line where the block containing the data being sought might be stored and the tag is used to determine if the data contained in any of the blocks at that line is indeed the data being sought. Each of these two lookup operations can proceed using either the physical or the virtual address. This leads to four possible schemes for cache addressing. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
In a cache that uses the virtual address for both the index and the tag, no address translation is required on a cache hit. Thus the TLB and page table are only used on a cache miss. This allows for expedient retrieval of the requested data from the cache since no lookup occurs and the operand of the load or store instruction can be used as-is. However, after context switch, the same virtual addresses can now refer to completely different data so the cache must recognize this and flush on a context switch or at the very least flush the lines that conflict. Another issue with a VIVT cache is the same data may have different virtual addresses if it is shared among different threads/processes. This data would be stored at multiple places in the cache even though it originates from a single memory location.&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Physically Tagged===&lt;br /&gt;
A lookup in this type of cache requires an address translation be the first step of any memory access. Thus the TLB must be large enough to contain references for the data in the cache otherwise the address translation would require a main memory access even on a cache hit, defeating the purpose of caching the value in the first place. The time to translate the address through the TLB is still non-negligible and is added on the front of the latency incurred by the cache lookup itself. After the address translation is complete, the cache uses the resultant physical address to find the line and check the tag. No flushing is necessary on a context switch because there is only one line on which any cache-block-sized piece of memory can reside, and the physical address is compared with the tag to determine if the data associated with the requested memory location is indeed present on that cache line. If multiple virtual addresses correspond to a single physical address, they will all seek out the same cache block when they do a cache lookup. &lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Physically Indexed, Virtually Tagged===&lt;br /&gt;
This is basically a &amp;quot;worst of both worlds&amp;quot; approach. The address translation must still be performed in order to find the index, which increases latency, and the cache must still be flushed on a context switch since there is the potential for a tag conflict using virtual tagging.&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;Recent Processor&amp;gt;'s approach===&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44160</id>
		<title>CSC/ECE 506 Spring 2011/ch6b ab</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2011/ch6b_ab&amp;diff=44160"/>
		<updated>2011-02-28T23:29:23Z</updated>

		<summary type="html">&lt;p&gt;Asbransc: Put in the Section Headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
==Cache Addressing==&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Virtually Tagged===&lt;br /&gt;
&lt;br /&gt;
===Physically Index, Physically Tagged===&lt;br /&gt;
&lt;br /&gt;
===Virtually Indexed, Physically Tagged===&lt;br /&gt;
&lt;br /&gt;
==TLB Coherence==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;Recent Processor&amp;gt;'s approach===&lt;br /&gt;
&lt;br /&gt;
==Other Contemporary Issues==&lt;/div&gt;</summary>
		<author><name>Asbransc</name></author>
	</entry>
</feed>