NoC(Network on Chip)学习笔记(2)

NoC (Network on Chip)学习笔记(2)

  • NoC的路由与交换
    • NoC的路由
      • 确定性XY路由算法
      • odd_even路由算法
      • DyAD路由算法
      • DyXY路由算法
    • NoC的交换
      • 电路交换
      • 包交换
        • 存储转发交换技术
        • 虚直通交换技术
        • 虫孔交换技术

NoC的路由与交换

NoC的路由

在NoC的交换信息时,需要确定从源节点到目标节点所经过的路径,这时就需要路由算法来确定该路径。路由算法分为静态路由算法和动态路由算法两种。
静态路由算法对于两节点之间的路径是固定的,结构简单,便于硬件实现,也便于保持传输数据的顺序,所以在NoC系统中被广泛的使用。但是静态路由算法在路径发生拥塞时,无法进行调整传输路径,降低数据传输效率。
动态调度算法又被称为自适应路由算法,可以根据网络流量和链路负载的变化调整路径,动态选择路径进行通信,避免了高数据传输密度下的网络拥塞。但这种算法结构复杂,不便于实现,同时在低拥塞时电路开销大,而且会出现死锁(循环等待)问题。
合理路由的算法应该解决死锁、活锁和饥饿问题。

  • 死锁是指两个以上数据包被阻塞在中间路由节点,对网络资源的释放和请求间出现循环等待的情况。
  • 活锁是指一个数据包在其目的节点周围环绕传输,但无法到达目的节点。
  • 饥饿是指当传输过程中存在多种不同优先级的数据包,可能出现高优先级的数据包始终占用资源,使低优先级数据包无法获得资源使用权,不能到达目的节点的情况。
  • 死锁问题可以通过控制流量来解决,
  • 活锁问题可以通过采用最短路径的方法解决
  • 饥饿问题可以通过合理的资源分配策略解决
    NoC(Network on Chip)学习笔记(2)_第1张图片
    图中,黑色方块表示缓存被占据,黄色方框表示缓存未被占据。

确定性XY路由算法

确定性XY路由算法是最简单的路由算法,该算法的路径取决于源节点和目标节点的地址,是一种静态的路由算法。以2D Mesh结构为例,数据首先在X方向传输,当数据到达目的节点的同一列时,沿Y方向传输,最后到达目的节点。
NoC(Network on Chip)学习笔记(2)_第2张图片

odd_even路由算法

odd_even路由算法是一种适用于mesh结构的部分自适应路由算法,对信号发生转弯的位置进行约束来防止死锁的产生。如果节点所在的Y坐标为奇数,该列称为奇数列;如果该列的Y坐标为偶数,该列称为偶数列。用E/S/W/N分别代表东南西北,NW表示从北到西的转弯。为了避免死锁发生,这种算法约束了一些转弯。例如:

  • 禁止奇数列节点发生NW和SW的转向,奇数列转弯目的禁止向西
  • 禁止偶数列节点发生EN和ES的转向,偶数列起始方向禁止向东
  • 禁止180度转向
    我们也可以更改这种约束。NoC(Network on Chip)学习笔记(2)_第3张图片

DyAD路由算法

CMU的Hu等提出了将Odd_even算法和确定性路由算法相结合的DyAD算法,可以根据网络的负载不同而采取不同的路由方式。在网络处于低负载情况下采用确定性路由算法,而当网络处于高负载时,采用odd_even自适应路由算法。路由器的每个输入端都在监控各自的信道占用率。当信道占用率超过拥塞阈值,拥塞标志位变为1,否则为0。如果标志位为1,路由器的工作模式变为odd_even路由模式。这种算法在网络低负载情况下拥有较好的时延和吞吐性能,并且在网络拥塞情况下具有较高的吞吐量。

DyXY路由算法

DyXY路由算法是一种全自适应算法,通过监视其相邻节点的拥塞状况来选择路由路径的下一跳。这种算法将路由器每个端口的即时队列长度作为压力值,然后用压力值来表征相邻节点的拥塞状况。算法规定数据采用最短路径进行传输,如果存在多条最短路径,则选择拥塞压力最小的一条路径。
每个路由器时刻更新所保存的相邻节点的即时压力值,在确定源节点和目的节点之后,数据沿压力值最小的一条路径传输。这也是自适应算法最基本的思路,由于节点数据实时更新,所以可能会出现死锁或活锁的情况。
在实际应用中,还需要根据特定的NoC结构来选择适合的路由算法。

NoC的交换

NoC的交换技术是动态分配传输线路和接口资源的方式,主要包括电路交换和包交换两种方式。相关参数设定如下:

  • 数据包数据为长度 L
  • 六孔单元宽度 W
  • 路由器中路由决策时间 tr
  • 路由器间链路频率 B Hz
  • 带宽 BW bit/s
  • 链路传输延迟 tw=1/B
  • 路由器数据交换延迟 ts
  • 源节点和目标节点间链路距离 D

电路交换

电路交换是指在发送数据前,需要先在源节点与目的节点之间建立物理链路,然后进行数据传输,数据可以利用物理信道的整个带宽进行传送,而其它设备将无法使用这些物理链路,直到数据传输结束后链路才被释放。在电路交换模式下,由于路径确定,并且独占物理通道,具有较高的数据传输效率和通信质量。
其缺点是无法适应网络的实际变化情况,缺乏灵活性,链路利用率低,建立和释放连接浪费额外时间,不适合突发数据的传输。电路交换方式适合于数据传输频繁,或者通信模式相对静态的场合。
电路交换技术的数据传输延迟如下所示:
t c i r c u i t = t s e t u p + t d a t a = D [ t r + 2 ( t s + t w ) ] + 1 b [ L W ] t_{circuit}=t_{setup}+t_{data}=D[t_r+2(t_s+t_w)]+\frac{1}b[\frac{L}W] tcircuit=tsetup+tdata=D[tr+2(ts+tw)]+b1[WL]

包交换

包交换模式是将数据封装成包,每个数据由包头和数据部分组合而成。根据包头的信息,通过路选择策略,一级一级的可以将数据转发到目的地。
包交换的优点是不需要建立和释放链路花费附加时间;在数据传输过程中可以动态分配带宽,逻辑上属于同一连接的数据包可能通过不同的路径进行传输,信道利用率高,吞吐量高;而且链路故障具有容错能力,适合突发数据的传输。其缺点是在交换结点中存储整个数据包需要很大的缓存器,这会增加的面积成本;另外假如路由策略的选择不当,可能出现不同的数据包同时征用链路,会造成拥塞和死锁。
目前主要有三种包交换技术:存储转发(store and forward,SAF)、虚直通(virtual cut through,VCT)和虫孔(Wormhole)交换技术。

存储转发交换技术

SAF交换技术是最简单的包交换方式,需要足够的缓存空间存储整个数据包,当且仅当路由器收到整个数据包后才能将其转发出去,增大了数据包的延迟。
SAF需要较大的缓存空间,需要更大的数据带宽,并且延时较大。改进的办法是不需要等待数据包完整收到就将其转发出去。SAF交换的传输延迟为:
t S A F = D [ t r + ( t s + t w ) [ L + W W ] ] t_{SAF}=D[t_r+(t_s+t_w)[\frac{L+W}{W}]] tSAF=D[tr+(ts+tw)[WL+W]]
NoC(Network on Chip)学习笔记(2)_第4张图片

虚直通交换技术

VCT交换技术与SAF技术不同之处在于,VCT交换时,数据包头部一旦到达即可被转发,无需等待数据包完全到达。一旦做出路由决策并且输出通道是空闲的,路由器就可以马上转发随后的数据部分。当网络不存在延迟时,VCT交换技术效率很高,可以及时转发,但当网络拥塞时,路由器需要缓存整个数据包,缓存空间要占用很大的片上系统面积。VCT交换的传输延迟为:
t V C T = D ( t r + t s + t w ) + m a x ( t s , t w ) [ L W ] t_{VCT}=D(t_r+t_s+t_w)+max(t_s,t_w)[\frac{L}W] tVCT=D(tr+ts+tw)+max(ts,tw)[WL]
NoC(Network on Chip)学习笔记(2)_第5张图片

虫孔交换技术

虫孔交换中,数据被分为若干流控单元flits。第一个流控单元成为Head flits,带有数据包的目的地址等控制性信息,最后一个称为Tail flits。当路由器收到Head flits时,路由器根据其中的目标地址计算输出端口,端口空闲则将数据按流控单元依次转发出去,数据传输结束则释放端口。当Head flits被阻塞时,后面的数据也依次被阻塞,分别缓存在相邻的几个路由器中。相比之前的两种策略,虫孔交换技术的路由器志向需要几个flits的缓存空间,不需要缓存整个数据包的缓存空间。但分段存储数据更容易造成链路阻塞,更容易出现死锁。虫孔交换技术的延迟如下(同VCT一样):
t w o r m h o l e = D ( t r + t s + t w ) + m a x ( t s , t w ) [ L W ] t_{wormhole}=D(t_r+t_s+t_w)+max(t_s,t_w)[\frac{L}W] twormhole=D(tr+ts+tw)+max(ts,tw)[WL]
NoC(Network on Chip)学习笔记(2)_第6张图片

综上,不同的NoC路由算法和交换技术各有优劣,我们需要根据特定的NoC结构,综合考虑多种因素选择合适的交换方式以提高传输质量,降低传输延迟。

你可能感兴趣的:(片上网络)