Module 17: "Interconnection Networks"
  Lecture 38: "Routing Algorithms"
 

Topology

  • Fully connected
    • A single large switch (could be a bus!)
    • Complete graph
    • Diameter? Average distance? Cost?
  • Linear arrays
    • A one-dimensional mesh
    • Unidirectional or bidirectional?
    • Diameter? Average distance? Bisection BW?
  • Linear rings
    • One extra connection from end to beginning of linear array
    • Bidirectional is better
    • Diameter? Average distance? Bisection BW?
  • Mesh
    • Multi-dimensional generalization of linear array
    • A d-dimensional k-ary mesh has k nodes in each dimension: kd nodes
    • A cube is a 3-dimensional binary mesh
    • A popular deterministic routing algorithm is dimension order routing (DOR) where the message is routed along successive dimensions until it reaches the destination
    • Diameter? Average distance?
  • Torus
    • Collection of rings in each dimension
  • Hypercube
    • Essentially a d-dimensional binary torus
    • Offers efficient routing via gray codes: current node ^ destination gives you the dimensions to traverse
    • Dimension order routing is referred to as e-cube routing for hypercube
    • Each node connects to d other nodes
    • By connecting 2 hypercubes of d-1 dimension each you$get a d-dimensional hypercube
  • Trees
      $
    • Direct and indirect
    • Increased branching factor reduces average distance
  • Butterfliew, Benes network and fat trees
    • Tree with many roots
    • Basic butterfly building block
    • Unidirectional butterfly introduces conflicts between different routes due to shared edges
    • Benes network connects to butterfliew back-to-back to solve this problem: very costly to build
    • Fat tree provides a cost-effective solution by folding half of Benes network on the other lalf (bidirectional links)

Routing algorithms

  • Types
    • Deterministic vw. adaptive
    • Minimal vs. non-minimal
    • Arithmetic routing algorithm
    • Source-based routing algorithm (large header)
    • Table-based routing (large SRAM storage): (in+1, on) = R[in]
  • Channel dependency and deadlock
    • Common problem in k-ary d-dimensional torus
    • Can happen even with multiple buffers per port
    • Simple solution: reserve buffers for certain packets depending on source and destination (may lead to starvation) [e.g., d > s]
    • Deadlock possibility is higher for wormhole routing