<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JCC</journal-id><journal-title-group><journal-title>Journal of Computer and Communications</journal-title></journal-title-group><issn pub-type="epub">2327-5219</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jcc.2016.414001</article-id><article-id pub-id-type="publisher-id">JCC-71928</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Twist-Routing Algorithm for Faulty Network-on-Chips
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Kunwei</surname><given-names>Zhang</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Thomas</surname><given-names>Moscibroda</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Tsinghua University, Beijing, China</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>aceeca.135531@gmail.com(KZ)</email>;<email>moscitho@microsoft.com(TM)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>11</day><month>11</month><year>2016</year></pub-date><volume>04</volume><issue>14</issue><fpage>1</fpage><lpage>10</lpage><history><date date-type="received"><day>September</day>	<month>8,</month>	<year>2016</year></date><date date-type="rev-recd"><day>Accepted:</day>	<month>November</month>	<year>8,</year>	</date><date date-type="accepted"><day>November</day>	<month>11,</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  This paper introduces Twist-routing, a new routing algorithm for faulty on-chip networks, which improves Maze-routing, a face-routing based algorithm which uses deflections in routing, and archives full fault coverage and fast packet delivery. To build Twist-routing algorithm, we use bounding circles, which borrows the idea from GOAFR+ routing algorithm for ad-hoc wireless networks. Unlike Maze-routing, whose path length is unbounded even when the optimal path length is fixed, in Twist-routing, the path length is bounded by the cube of the optimal path length. Our evaluations show that Twist-routing algorithm delivers packets up to 35% faster than Maze-routing with a uniform traffic and Erdos-R&#233;nyi failure model, when the failure rate and the injection rate vary.
 
</p></abstract><kwd-group><kwd>Network-on-Chip (NoC)</kwd><kwd> Fault-Tolerant Routing</kwd><kwd> Maze-Routing Algorithm</kwd><kwd>  GOAFR+ Algorithm</kwd><kwd> Bounding Circle</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>The transistor technology scales in microprocessors, and more and more power- efficient cores are integrated on a single chip. The communication between these on- chip cores should be efficient. Therefore, Networks-on-chips (NoCs), instead of simple buses, are becoming a promising choice for on-chip interconnects for their better scalability [<xref ref-type="bibr" rid="scirp.71928-ref1">1</xref>] - [<xref ref-type="bibr" rid="scirp.71928-ref6">6</xref>] . Unfortunately, the reliability of the on-chip components is reduced as critical dimensions shrink, and a NoC might be a single point of failure [<xref ref-type="bibr" rid="scirp.71928-ref7">7</xref>] . As the silicon ages, the error rates become quite high [<xref ref-type="bibr" rid="scirp.71928-ref8">8</xref>] , because of oxide breakdown, electromigration, and thermal cycling [<xref ref-type="bibr" rid="scirp.71928-ref7">7</xref>] . Hence, it is critical that some failures in the network do not cause an entire chip to fail.</p><p>There are some NoC reliability solutions based on architectural protection against faults in the router logic [<xref ref-type="bibr" rid="scirp.71928-ref9">9</xref>] [<xref ref-type="bibr" rid="scirp.71928-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.71928-ref11">11</xref>] . But not all faults can be toleranted this way [<xref ref-type="bibr" rid="scirp.71928-ref12">12</xref>] . In recent works, faults are modeled by disabling such links, and a complete router loss is modeled by marking all the links connected to the affected router as faulty. The goal is to route packets around faults and finally reach the destination. Recent route-recon- figuration solutions to bypass faulty links or routers can be broadly divided into two kinds, buffered solutions and deflection solutions. Buffered solutions include Ariadne [<xref ref-type="bibr" rid="scirp.71928-ref13">13</xref>] , uDirec [<xref ref-type="bibr" rid="scirp.71928-ref12">12</xref>] , Hermes [<xref ref-type="bibr" rid="scirp.71928-ref14">14</xref>] , which all utilize traditional wormhole routing [<xref ref-type="bibr" rid="scirp.71928-ref15">15</xref>] , and routing tables. Those algorithms typically take some time to update routing tables when a new fault is detected, and incur reconfiguration overhead. The deflection solutions for non-faulty chips are introduced by BLESS algorithm [<xref ref-type="bibr" rid="scirp.71928-ref16">16</xref>] to overcome the significant energy consumption and design complexity caused by buffer usage. Then, CHIPPER [<xref ref-type="bibr" rid="scirp.71928-ref17">17</xref>] and minBD [<xref ref-type="bibr" rid="scirp.71928-ref18">18</xref>] develop the idea of deflection routing. For faulty chips, the Maze- routing algorithm provides a deflection routing algorithm, which is the first routing algorithm which provides guaranteed delivery in a fully-distributed manner at low cost and low reconfiguration overhead [<xref ref-type="bibr" rid="scirp.71928-ref19">19</xref>] .</p><p>The Maze-routing is the state-of-the-art solution of deflection routing for faulty chips. However, the path length which is found by Maze-routing is unbounded even when the optimal path length is fixed. We proposed a improved algorithm named Twist-routing, taking inspiration from the idea of GOAFR+ routing algorithm, which was originally proposed for ad-hoc wireless networks [<xref ref-type="bibr" rid="scirp.71928-ref20">20</xref>] [<xref ref-type="bibr" rid="scirp.71928-ref21">21</xref>] [<xref ref-type="bibr" rid="scirp.71928-ref22">22</xref>] . Using our algorithm, the path length is bounded by the cube of the optimal path length. Our algorithm inherits the property of Maze-routing, and provides guaranteed delivery at low cost and the same low reconfiguration overhead. The experiments show that our algorithm is 35% faster than Maze-routing when the failure rate equals to 0.3, and the injection rate is 0.003, and keeps fast when injection rate increases.</p></sec><sec id="s2"><title>2. Twist-Routing Algorithm</title><p>The Twist-routing algorithm is a practical routing algorithm for faulty NoCs, which is based on Maze-routing for faulty NoCs and GOAFR+ routing algorithm for ad-hoc wireless networks. The faulty model is described in Section 0. We briefly review the Maze-routing algorithm in Section 2.1. In Maze-routing, a packet is alternately in greedy and face-routing [<xref ref-type="bibr" rid="scirp.71928-ref23">23</xref>] mode. In Twist-routing, these two modes remains, but we use bounding circles to limit the search range in a face-routing step, proposed in Section 2.3. This enables us to prove a theoretical bound of Twist-routing in Section 2.4. The interactions of Twist-routing and deflection are described in Section 2.5.</p><sec id="s2_1"><title>2.1. The Model</title><p>The model of the faulty on-chip routing is a mesh, where routers are placed on each grid points, and links are available between adjacent routers. Each routers can be good or bad, and each links can be healthy or faulty bidirectionally. A bad router is modeled by disabling all of its four links. In modern chips, packets are splited into flits, and routed from source node to the destination. In the routing algorithm, each router accepts input flits from all nearby healthy links, permute them according to some rules, and send them back to all nearby healthy links. Because links are bidirectional, there are as many output links as input links, so all flits can go somewhere after the routing.</p></sec><sec id="s2_2"><title>2.2. The Maze-Routing Algorithm</title><p>The Maze-routing add a header to each flits, containing some metadata of this flit. They are<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x2.png" xlink:type="simple"/></inline-formula>, the source;<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x3.png" xlink:type="simple"/></inline-formula>, the destination;<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x4.png" xlink:type="simple"/></inline-formula>, the closest Manhattan distance to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x5.png" xlink:type="simple"/></inline-formula> that the packet has reached so far assuming a fault-free mesh;<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x6.png" xlink:type="simple"/></inline-formula>, being one of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x7.png" xlink:type="simple"/></inline-formula>, clockwisely face-routing (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x8.png" xlink:type="simple"/></inline-formula>), or counter-clockwisely face-routing (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x9.png" xlink:type="simple"/></inline-formula>);<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x10.png" xlink:type="simple"/></inline-formula>and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x11.png" xlink:type="simple"/></inline-formula>, the node and direction which indicates the destination is unreachable if it is visited again.</p><p>In Maze-routing, each flit is routed to a productive and healthy output if possible. This is called the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x12.png" xlink:type="simple"/></inline-formula> mode. If there is no such output, the flit changes itself into face-routing mode (randomly chosen from <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x13.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x14.png" xlink:type="simple"/></inline-formula>). In face-routing mode<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x15.png" xlink:type="simple"/></inline-formula>, the flit takes the first healthy output on the left of the ray from <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x16.png" xlink:type="simple"/></inline-formula> to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x17.png" xlink:type="simple"/></inline-formula>, and then goes clockwisely. In face-routing mode<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x18.png" xlink:type="simple"/></inline-formula>, the flit takes the first healthy output on the right of the ray, and then goes counter-clockwisely. Effectively, the flit traverses the face underlying the ray from <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula> to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula>. The flit changes back to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula> mode when it goes to a router that can forward it closer to its destination than the node where it entered face-routing mode, i.e., the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula> in header can be reduced by a neighbor link. If the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula> cannot decrease until the flit has traversed the whole face, which is detected by revisiting <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x24.png" xlink:type="simple"/></inline-formula> on the direction of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x25.png" xlink:type="simple"/></inline-formula>, then there is no path between <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x26.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x26.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x27.png" xlink:type="simple"/></inline-formula>. We can drop this flit, and report this failure to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x26.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x28.png" xlink:type="simple"/></inline-formula> using the same algorithm as needed.</p></sec><sec id="s2_3"><title>2.3. The Use of Bounding Circles</title><p>Twist-routing is based on Maze-routing, with the extra usage of bounding circles. The bounding circle is always centered at the destination of the flit, and its radius is recorded in the header, namely c. Notice that in Maze-routing, once face-routing mode is chosen, the direction is fixed until the flit changes back into <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula> mode. In Twist-routing, we draw a bounding circle with <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x30.png" xlink:type="simple"/></inline-formula> when a flit enters face-routing mode. If the flit is going to cross the boundary of the bounding circle, we reverse the direction of the flit (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x31.png" xlink:type="simple"/></inline-formula>), and enlarge the bounding circle (times it by<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x32.png" xlink:type="simple"/></inline-formula>). Also, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x33.png" xlink:type="simple"/></inline-formula>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x34.png" xlink:type="simple"/></inline-formula> is set to the node where the reverse happens and the direction after being reversed. Then the flit finds all its way back to the beginning node of face-routing in the reversed face-routing mode, and goes on in the reversed direction. There are three cases for this flit:</p><p>Case 1: It is going to cross the other border of the bounding circle. The bounding circle is enlarged again, and the direction of the flit is reverse again and so on.</p><p>Case 2: Its mode changes back to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x35.png" xlink:type="simple"/></inline-formula>, and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x36.png" xlink:type="simple"/></inline-formula> decreases successfully.</p><p>Case 3: It appears at the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x37.png" xlink:type="simple"/></inline-formula> again with the direction<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x37.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x38.png" xlink:type="simple"/></inline-formula>. This indicates that there is no path from <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x37.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x38.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x39.png" xlink:type="simple"/></inline-formula> to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x37.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x38.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x40.png" xlink:type="simple"/></inline-formula>.</p><p>The differences between Twist-routing and the original Maze-routing are described in <xref ref-type="fig" rid="fig1">Figure 1</xref>. Through experiments, for better performance, we use <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x41.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x42.png" xlink:type="simple"/></inline-formula>. We use these values in the our experiments.</p></sec><sec id="s2_4"><title>2.4. Proofs of Being Faster</title><p>Maze-routing can be very bad in some cases (see <xref ref-type="fig" rid="fig2">Figure 2</xref> for one example of such cases).</p><p>Assume the big tree contains n edges. Maze-routing randomly choose between two directions when entering face-routing mode. If Maze-routing chooses the good direction, the flit will reach the destination with 4 hops. If Maze-routing chooses the bad direction, the flit has to go to the big tree and goes all the way back, and takes <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x43.png" xlink:type="simple"/></inline-formula> hops to reach the destination in total. In average, Maze-routing takes <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x44.png" xlink:type="simple"/></inline-formula> hops, which is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x45.png" xlink:type="simple"/></inline-formula>. In this example, Twist-routing chooses between two directions, too. One direction leads to 4 hops. If we take the other direction, the flit will goes back without entering the tree because of the use of the bounding circle, and takes 8 hops to reach its destination. On average, it takes 6 hops only.</p><p>In the previous example, the length of the optimal path m is a constant, but Maze- routing needs <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x46.png" xlink:type="simple"/></inline-formula> hops. So Maze-routing cannot be bounded by any expression of m. However, Twist-routing runs in <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x47.png" xlink:type="simple"/></inline-formula> hops, which is asymptotically better than Maze-routing. Now we prove this bound by two theorems.</p><p>Theorem 1. If the destination of a flit is reachable from the source, and m is the length of the optimal path of this flit, the radius of the largest bounding circle used by Twist-routing without deflection is no more than<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x48.png" xlink:type="simple"/></inline-formula>, where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x48.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x49.png" xlink:type="simple"/></inline-formula> is the initial radius of the bounding circle.</p><p>Proof. There is a case where we never enlarge the bounding circle, so the largest circle is the initial one, with radius<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula>. Otherwise, we only enlarge the bounding circle to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula> with radius <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula> only if we meet a boundary of the bounding circle C with radius k. Only if we first meet the other boundary of C later, we may meet the boundary of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula>, and enlarge the bounding circle again. So if we found an edge which leads to closer to destination within the bounding circle C with radius k, we will not meet the other boundary of C, and the radius of the bounding circle never exceeds<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula>. Assume that we use the bounding circles that<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula>. We want to prove the radius of the largest bounding circle never exceeds<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula>, and it is enough to show that it never exceeds<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula>. Then it is enough to show that in the bounding circle with radius<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x58.png" xlink:type="simple"/></inline-formula>, the face routing can always find an edge that goes closer to the destination. Supposing not, then we assume in the face routing step, we go through path p. The path p splits the bounding circle with radius <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x58.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x59.png" xlink:type="simple"/></inline-formula> into two parts, and exactly one of them is reachable from the source within the bounding circle of radius<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x58.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x60.png" xlink:type="simple"/></inline-formula>. In other words, the destination is unreachable from the source within the bounding circle with radius<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x58.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x61.png" xlink:type="simple"/></inline-formula>. But since the length of the optimal path from the source to the destination is m, the optimal path lays in the bounding circle of radius <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x52.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x56.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x58.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x61.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x62.png" xlink:type="simple"/></inline-formula> completely, i.e., the destination is reachable from the source within the bounding circle. That is a contradiction. □</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Maze-routing and Twist-routing algorithm</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-1730446x63.png"/></fig><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> A setting where Twist-routing performs way better than Maze-routing</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-1730446x64.png"/></fig><p>Theorem 2. If the destination of a flit is reachable from the source, and m is the length of the optimal path of this flit, Twist-routing can find a path with length <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x65.png" xlink:type="simple"/></inline-formula> for this flit without deflection.</p><p>Proof. Twist-routing consists of face routing steps and greedy routing steps. A greedy step reduce the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x66.png" xlink:type="simple"/></inline-formula> by one<sup>1</sup>, and take one hop. A face routing step reduce the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x66.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x67.png" xlink:type="simple"/></inline-formula> by one, and take <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x66.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x68.png" xlink:type="simple"/></inline-formula> hops. To prove this, notice that in a face routing step, when the bounding circle is fixed, we use each edge at most two times due to the properties of face routing. So when the bounding circle has fixed radius k, we need hops proportional to the total edges in the bounding circle, which is at most <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x66.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x69.png" xlink:type="simple"/></inline-formula> hops. Since the radius of the largest bounding circle <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x66.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x69.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x70.png" xlink:type="simple"/></inline-formula> satisfies</p><disp-formula id="scirp.71928-formula45"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/1-1730446x71.png"  xlink:type="simple"/></disp-formula><p>and each time we enlarge the bunding circle exponentially, the total hops of one face routing step are</p><disp-formula id="scirp.71928-formula46"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/1-1730446x75.png"  xlink:type="simple"/></disp-formula><p>Now consider that<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x76.png" xlink:type="simple"/></inline-formula>, and each reduction of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x77.png" xlink:type="simple"/></inline-formula> takes at most <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x78.png" xlink:type="simple"/></inline-formula> hops, so all we need is <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x78.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x79.png" xlink:type="simple"/></inline-formula> hops in total to transport this flit using Twist-routing. □</p></sec><sec id="s2_5"><title>2.5. Deflection Implications</title><p>At one router, there are at most 4 input flits. Some flits have to be buffered or deflected if the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula> of them are taken by other flits. If such case happenes, the flit may take a non-productive output, exit the face it is traversing, or be buffered and reappears in other input ports later. These behaviors result in inconsistency of the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula> values of the flit. So when a flit is deflected or buffered, its <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x83.png" xlink:type="simple"/></inline-formula> are reset to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x83.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x84.png" xlink:type="simple"/></inline-formula>, in which <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x83.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x84.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x85.png" xlink:type="simple"/></inline-formula> is the next router of this flit, and its <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x83.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x84.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x85.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x86.png" xlink:type="simple"/></inline-formula> are reset to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x80.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x83.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x84.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x85.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x86.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x87.png" xlink:type="simple"/></inline-formula>. This makes the header and the state of this flit consistent.</p><p>To avoid deadlocks and licklocks, our algorithm needs to work with some deflection based mechanism proposed in literature. We mostly use minBD due to its high perfor- mance. The original method to avoid livelocks in minBD is to circularly make one flit golden for a long time L. However, in faulty chips, L needs to be at least as large as the longest path in the graph, which can be <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x89.png" xlink:type="simple"/></inline-formula> large, where the chip is n by n. This renders the golden method to avoid locks not efficient. Instead of making one flit golden, we prioritize old flits to new flits globally to avoid livelocks. And we disable the buffer redirection in minBD because it is not compatible with our oldest-flit-based livelock-avoiding method<sup>2</sup>.</p></sec></sec><sec id="s3"><title>3. Simulations</title><p>We compared Twist-routing algorithm with the original Maze-routing using an ad-hoc simulator<sup>3</sup>. Note that in Maze-routing, flits are independent to each other, and multiple flits are assembled to the original packet when received. For simplicity, we assume there is only on flit per packet in our simulator. We implements Maze-routing and minBD deflection method with buffer size equals to 4 in our simulator. Meanwhile, we imple- mented Twist-routing with minBD, too. In both algorithms, we use oldest-flit based livelock-avoiding method and without buffer redirection.</p><p>In order to compare the performance of two algorithms, we computed the average flit latency in the network under different injection rates using a uniform traffic<sup>4</sup>. We use <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/1-1730446x90.png" xlink:type="simple"/></inline-formula> networks for evaluation. We use Erd&#246;s-R&#233;nyi model to generate faulty links, where the failure rate of any edge is 0.1 or 0.3. We generate 5 faulty chips for each case, and compute the average result across them. For each case, we run the simulations for 1000 cycles.</p><p>In a typical setting, the distances to deflect clockwisely or to deflect counter-clock wisely can be so much different. By backtracing and trying the other direction when running away from the bounding circle, our algorithm should provide better perfor- mance than the origin Maze-routing Algorithm. The simulation result shows the correctness of this conclusion. After careful measurement, in the case when the failure rate equals to 0.3, and the injection rate is 0.003, Twist-routing is 35% faster than Maze- routing. When the injection rate increases, Twist-routing keeps being fast (see <xref ref-type="fig" rid="fig3">Figure 3</xref> for details of all results).</p><fig-group id="fig3"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Simulation results with failure rate = 0.1, 0.3.</title></caption><fig id ="fig3_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-1730446x91.png"/></fig><fig id ="fig3_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/1-1730446x92.png"/></fig></fig-group></sec><sec id="s4"><title>4. Conclusions</title><p>We improved Maze-routing for faulty on-chip networks, and yielded Twist-routing algorithm. We found that through the use of bounding circle and zigzag routes, the performance of our routing algorithm is better than Maze-routing, which is the state- of-the-art algorithm for faulty on-chip networks. Also, we provided a theoretical bound on our algorithm, which is not possible in previous works.</p><p>We conclude that our improvements on Maze-routing algorithm provides a better routing algorithm for faulty on-chip networks.</p></sec><sec id="s5"><title>Acknowledgements</title><p>This work was supported in part by the National Basic Research Program of China Grant 2011CBA00300, 2011CBA00301, the National Natural Science Foundation of China Grant 61033001, 61361136003.</p></sec><sec id="s6"><title>Cite this paper</title><p>Zhang, K.w. and Moscibroda, T. (2016) Twist-Routing Algorithm for Faulty Network-on-Chips. Journal of Computer and Communications, 4, 1-10. http://dx.doi.org/10.4236/jcc.2016.414001</p></sec><sec id="s7"><title>NOTES</title></sec></body><back><ref-list><title>References</title><ref id="scirp.71928-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Bose, P., Morin, P., Stojmenovic, I. and Urrutia, J. (2001) Routing with Guaranteed Delivery in Ad Hoc Wireless Networks. Wireless Networks, 7, 609-616.  
http://dx.doi.org/10.1023/A:1012319418150</mixed-citation></ref><ref id="scirp.71928-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Kuhn, F., Wattenhofer, R. and Zollinger, A. (2003) Worst-Case Optimal and Average-Case Efficient Geometric Ad-Hoc Routing. Proceedings of the 4th ACM International Symposium on Mobile Ad Hoc Networking &amp; Computing, Annapolis, MD, USA, 1-3 June 2003, 267-278.</mixed-citation></ref><ref id="scirp.71928-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Kuhn, F., Wattenhofer, F., Zhang, Y. and Zollinger, A. (2003) Geometric Ad-Hoc Routing: of Theory and Practice. Proceedings of the Twenty-Second Annual Symposium on Principles of Distributed Computing, Boston, MA, USA, 13-16 July 2003, 63-72.  
http://dx.doi.org/10.1145/872035.872044</mixed-citation></ref><ref id="scirp.71928-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Kuhn, F., Wattenhofer, R. and Zollinger, A. (2002) Asymptotically Optimal Geometric Mobile Ad-Hoc Routing. Proceedings of the 6th International Workshop on Discrete Algorithms and Methods for Mobile Computing and Communications, Atlanta, GA, USA, 28 September 2002, 24-33. http://dx.doi.org/10.1145/570810.570814</mixed-citation></ref><ref id="scirp.71928-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Fattah, M., Airola, A., Ausavarungnirun, R., Mirzaei, N., Liljeberg, P., Plosila, J., Mohammadi, S., Pahikkala, T., Mutlu, O. and Tenhunen, H. (2015) A Low-Overhead, Fully-Distributed, Guaranteed-Delivery Routing Algorithm for Faulty Network-on-Chips. Proceedings of the 9th International Symposium on Networks-on-Chip, Vancouver, 28-30 September 2015, 18.</mixed-citation></ref><ref id="scirp.71928-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Fallin, C., Nazario, G., Yu, X.Y., Chang, K.-P., Ausavarungnirun, R. and Mutlu, O. (2012) Minbd: Minimally-Buffered Deflection Routing for Energy-Efficient Interconnect. 2012 Sixth IEEE/ACM International Symposium on Networks on Chip (NoCS), Copenhagen, Denmark, 7-11 May 2012, 1-10.</mixed-citation></ref><ref id="scirp.71928-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Fallin, C., Craik, C. and Mutlu, O. (2011) Chipper: A Low-Complexity Bufferless Deflection Router. 2011 IEEE 17th International Symposium on High Performance Computer Architecture (HPCA), San Antonio, TX, USA, 12-16 February 2011, 144-155.  
http://dx.doi.org/10.1109/hpca.2011.5749724</mixed-citation></ref><ref id="scirp.71928-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Dally, W.J. and Towles, B. (2001) Route Packets, Not Wires: On-Chip Interconnection Networks. Proceedings of the IEEE 2001 Design Automation Conference, Las Vegas, NV, USA, 18-22 June 2001, 684-689.</mixed-citation></ref><ref id="scirp.71928-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Borkar, S. (2007) Thousand Core Chips: A Technology Perspective. Proceedings of the 44th Annual Design Automation Conference, San Diego, 4-8 June 2007, 746-749.  
http://dx.doi.org/10.1145/1278480.1278667</mixed-citation></ref><ref id="scirp.71928-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Moscibroda, T. and Mutlu, O. (2009) A Case for Bufferless Routing in On-Chip Networks. Proceedings of the 36th Annual International Symposium on Computer Architecture, Austin, Texas, USA, 20-24 June 2009, 196-207.  
http://dx.doi.org/10.1145/1555754.1555781</mixed-citation></ref><ref id="scirp.71928-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Dally, W.J. and Seitz, C.L. (1986) The Torus Routing Chip. Distributed Computing, 1, 187-196. http://dx.doi.org/10.1007/BF01660031</mixed-citation></ref><ref id="scirp.71928-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Iordanou, C., Soteriou, V. and Aisopos, K. (2014) Hermes: Architecting a Top-Performing Fault-Tolerant Routing Algorithm for Networks-on-Chips. 2014 32nd IEEE International Conference on Computer Design (ICCD), Seoul, Korea (South), 19-22 October 2014, 424-431.</mixed-citation></ref><ref id="scirp.71928-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Aisopos, K., DeOrio, A., Peh, L.-S. and Bertacco, V. (2011) Ariadne: Agnostic Recon-Figuration in a Disconnected Network Environment. 2011 International Conference on Parallel Architectures and Compilation Techniques (PACT), Galveston Island, Texas, USA, 10-14 October 2011, 298-309.</mixed-citation></ref><ref id="scirp.71928-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Parikh, R. and Bertacco, V. (2013) udirec: Unified Diagnosis and Reconfiguration for Frugal Bypass of Nocfaults. Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture, Davis, CA, USA, 7-11 December 2013, 148-159.  
http://dx.doi.org/10.1145/2540708.2540722</mixed-citation></ref><ref id="scirp.71928-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Kim, J., Nicopoulos, C., Park, D., Narayanan, V., Yousif, M.S. and Das, C.R. (2006) A Gracefully Degrading and Energy-Efficient Modular Router Architecture for On-Chip Networks. Proceedings of the 33rd annual international symposium on Computer Architecture, Boston, MA, USA, 17-21 June 2006, 4-15.</mixed-citation></ref><ref id="scirp.71928-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Fick, D., DeOrio, A., Hu, J., Bertacco, V., Blaauw, D. and Sylvester, D. (2009) Vicis: A Reliable Network for Unreliable Silicon. Proceedings of the 46th Annual Design Automation Conference, San Francisco, CA, 26-31 July 2009, 812-817.  
http://dx.doi.org/10.1145/1629911.1630119</mixed-citation></ref><ref id="scirp.71928-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Constantinides, K., Plaza, S., Blome, J., Zhang, B., Bertacco, V., Mahlke, S., Austin, T. and Orshansky, M. (2006) Bulletproof: A Defect-Tolerant cmp Switch Architecture. The Twelfth International Symposium on High-Performance Computer Architecture, Austin, Texas, 11-15 February 2006, 5-16.</mixed-citation></ref><ref id="scirp.71928-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Nightingale, E.B., Douceur, J.R. and Orgovan, V. (2011) Cycles, Cells and Platters: An Empirical Analysis of Hardware Failures on a Million Consumer pcs. Proceedings of the Sixth Conference on Computer Systems, Salzburg, Austria, 10-13 April 2011, 343-356.</mixed-citation></ref><ref id="scirp.71928-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Borkar, S. (2005) Designing Reliable Systems from Unreliable Components: The Challenges of Transistor Variability and Degradation. IEEE Micro, 25, 10-16.  
http://dx.doi.org/10.1109/MM.2005.110</mixed-citation></ref><ref id="scirp.71928-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Vangal, S.R., Howard, J., Ruhl, G., Dighe, S., Wilson, H., Tschanz, J., Finan, D., Singh, A., Jacob, T., Jain, S., et al. (2008) An 80-Tile Sub-100-w Teraflops Processor in 65-nm cmos. IEEE Journal of Solid-State Circuits, 43, 29-41.</mixed-citation></ref><ref id="scirp.71928-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Bell, S., Edwards, B., Amann, J., Conlin, R., Joyce, K., Leung, V., MacKay, J., Reif, M., Bao, L.W., Brown, J., et al. (2008) Tile64-Processor: A 64-Core soc with Mesh Interconnect. 2008 IEEE International Solid-State Circuits Conference (ISSCC 2008), Digest of Technical Papers, San Francisco, CA, USA, 3-7 February 2008, 88-598.</mixed-citation></ref><ref id="scirp.71928-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Wentzlaff, D., Griffin, P., Hoffmann, H., Bao, L., Edwards, B., Ramey, C., Mattina, M., Miao, C.-C., Brown III, J.F. and Agarwal, A. (2007) On-Chip Interconnection Architecture of the Tile Processor. IEEE Micro, 27, 15-31. http://dx.doi.org/10.1109/MM.2007.4378780</mixed-citation></ref><ref id="scirp.71928-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">Howard, J., Dighe, S., Hoskote, Y., et al. (2010) A 48-Core ia-32 Message-Passing Processor with dvfs in 45 nm cmos. IEEE International Solid-State Circuits Conference (ISSCC 2010), Digest of Technical Papers, San Francisco, CA, USA, 7-11 February 2010, 108-109.</mixed-citation></ref></ref-list></back></article>