上一篇:NoC (Network on chip) 基础知识 (2) :片上网络的拓扑结构(Topology) 介绍了网络拓扑中的常见概念。
本篇文章将重点介绍 Butterfly 和 Torus 网络架构。
目录
Butterfly Network
优点:
- 网络拓扑的直径小,对于一个 k-ary n-fly 的 butterfly 网络,只需通过n跳就可以实现任意节点间的传输。
- 路由算法实现简单。
缺点:
- 路径多样性差。(如果增加 stage 可以缓解这个问题)
- 连接该结构需要较长的导线,这会降低传输速度。
目前Butterfly 结构以及它的众多变种在许多场景广泛应用。
经典的 Butterfly 结构
k-ary n-fly 的 butterfly 网络,有 k n k^n kn 个源terminal和 k n k^n kn 个目的terminal组成,中间经过了 k n − 1 k^{n-1} kn−1 个 k ∗ k k*k k∗k 的 switch node。
下面的结构是一个 2-ary 4-fly 的经典butterfly拓扑。
额外添加Stage提高路径多样性
传统的butterfly结构点到点都只有一条路径。通过增加额外的 stage,能将路径多样性提高。
对于下面的2-ary 3-fly的拓扑结构,通过增加一个stage,使所有点到点的路径数从1变到了2。
Torus Network
优点:
- 路径多样性大,能均衡负载。
缺点:
- 需要较多的跳数才能达到目的节点。
Torus 的基本网络结构
与 Butterfly 结构不同,Torus 是 direct network。所有的节点同时是 input terminal、output terminal 和 switching node。
我们用 k-ary n-cube 来表示。k 是排列的边的长度,n 是排列的维度。( 如:3-ary 2-cube 是一个 2-D torus 在每个维度上有3个节点 )。
可以通过迭代增加维度的方式构建一个高维度的 Torus 网络。可以将k个 k-ary (n-1)-cube 的拓扑的各个channels连接成环,得到 k-ary n-cube 的拓扑。
Mesh结构与Torus类似,只是去掉了”环“。
对于相同节点个数和维度的 Mesh 和 Torus,Mesh 的 bisection channels 是 Torus 的二分之一。
然而 Mesh 缺少边对称性。这会导致负载不均衡。中心位置的channels会比靠边的channels承受更大的负载。
Torus 与 Mesh 均可以使用双向或单向的channels。虽然使用双向的channels会占用两倍数量的节点端口,但带来了一个更低的路由跳数,同时增加了路径多样性。一般在这里选择双向channels。
各个维度的节点数量也可以不同。然而这样会更大的损失边对称性,带来负载的不均衡。下图中的 2,3,4-ary 3-mesh 的拓扑,即使对于uniform traffic(完全随机)而言,x方向的负载会是z方向负载的两倍。
Torus 与 Mesh 的搭建
在现实世界中搭建 Torus 与 Mesh 需要考虑更多的因素。
如果直接按照上面的拓扑图,会导致”回环的那一条channel“长度比其他的都要长,这会带来更大的延迟,甚至可能降低电路的整体频率。
通常采用**折叠(folding)**的方法解决此类问题。如下图:
如果逻辑上的维度,不满足物理条件的限制时,可以将额外的维度映射到低维上。(下图将 2维 Mesh 映射到了 1维物理空间上)
Express Cube
在 Torus 和 Mesh 中,占传输延迟大部分的是 routing latency。我们可以通过增加额外的 long(express) channel 来降低经过路由的数量,减少延迟。