文章目录
Non-Blocking 的基本概念
电路交换网络(Circuit-Switched Network):不同于包交换网络(packet-switched)的共享资源,电路交换网络在传输数据之前,会建立一条从 source 到 destination 专用的连接,数据会连续地通过这条连接传输,数据传输完成后断开连接。
非阻塞网络(Non-Blocking Network)与 阻塞网络(Blocking-Network):Non-Blocking 与 Blocking 是 Circuit-Swtiched 网络的一种分类方式。
-
Non-Blocking 网络可以同时为所有由 input 到 output 的数据传输请求建立连接。即在同一时刻,所有的 input 到它所选择的 output 之间的连接不会产生冲突(共享一条channel)。
-
Blocking 网络不能同时处理由所有 input 发出的向 output 建立连接的请求。
非阻塞网络(Non-Blocking Network)的分类:
- Strictly Non-Blocking:连接可以递增地建立。在建立新的连接时,不必改变之前已建立的连接的路由路径。
- Rearrangeably Non-Blocking:在建立新的连接时,可能需要将之前已建立的其他连接重新设置路由路径。
通常对于以上概念,我们都只考虑 unicast traffic 的场景,即一个 input 最多只和一个 output 建立连接,每个 output 也只和一个 input 建立连接。
Crossbar Switch
Crossbar 是经典的 Non-Blocking 网络,最早的电话网络大多使用 crossbar 实现。
在数字逻辑电路上,对于 n 个 input,m 个 output 的 crossbar 网络,需要 m 个 n:1 的多选器来实现。
Crossbar 最大的缺陷在于它的面积与开销。随着 input 和 output 规模的增大,电路规模会以 n x n 的量级扩大,而后面将介绍的其他 Non-Blocking 网络规模增长的量级仅为 n x logn。
Clos Network
网络基本结构
经典的 Clos 结构是一个三阶段的网络,每一阶段由若干数量的 crossbar swtich 组成。通常使用三元组(m, n, r)来表示一个 Clos 的参数:
- m 是中间阶段 switch 的数量。
- n 是每个input/output swtich 的端口数量。
- r 是 input、output 阶段 switch 的数量。
- 每个 middle switch 会和所有的 input swtich 和 output swtich 相连。
第一阶段的 r 个 input swtich 是 n x m 的 crossbar,每个 swtich 将各自 n 个输入端口连接到 m 个 middle swtich 上。
第二阶段的 m 个 middle switch 是 r x r 的 crossbar,每个 switch 将 r 个 input swtich 与 r 个 output swtich 相连。
第三阶段的 r 个 output switch 是 m x n 的 crossbar,每个 switch 将 m 个 middle switch 与 n 个输出端口相连。
Unicast Routing on Strictly Non-Blocking Clos
在 Clos 的路由选择上,唯一可以进行选择的地方在 input switch。只要 input switch 到 middle switch 的 channel 没有被占用,input switch 就可以选择该 middle switch 作为建立连接的中间节点。一旦 middle switch 被选定,剩下的路径也就被唯一确定了(或者路径繁忙路由失败)。
定理: 如果对于一个 Clos, m > = 2 n − 1 m >= 2n - 1 m>=2n−1,那么它是 strictly non-blocking。
证明: 由 input switch A.i 向 input switch B.j 建立连接。
若 A 的 n-1 个端口和 B 的 n-1 个端口均已建立连接。A 已建立的连接选择前 n-1 个middle switch,B已建立的连接用到后 n-1 个 middle switch。
这时还再需要一个可用的 middle swtich,才能完成 A.i 向 B.j 的连接。
共计是 m = 2 n − 1 m = 2n -1 m=2n−1 个 middle switch,能够作为 strictly non-blocking 的充分条件。
路由算法: 根据上面推导的证明过程,可以得到路由选择算法,即只要有能用的 middle switch,双边要用到的 channel 均空闲,就可以选择。
strictly non-blocking 的路由算法非常简单,然而它的花销较大。它所需 middle switch 的数量是 rearrangeable network 的 2 n − 1 n \frac{2n-1}{n} n2n−1 倍。
Unicast Routing on Rearrangeable Clos Networks
定理: 如果对于一个 Clos, m > = n m >= n m>=n,那么它是 rearrangeable non-blocking。
路由算法: 从 input swtich a 向 output swtich b 建立连接。
1、如果有可用的 middle switch,a、b 两端均为空闲,则选择该 middle swtich。
2、如果没有可用的 middle swtich,则选择 a 端空闲的 middle switch,建立连接。
3、之前的 switch c 通过该 middle switch 与 swtich b 的连接断开。重新为 input switch c 到 output switch b 尝试建立连接。
4、如此循环迭代。回到步1。
定理:上述算法的循环,最多经过 2 r − 2 2r-2 2r−2 次的迭代,可以最终完成全部 arrangement。