高性能互连之基于虚通道的路由器(Virtual-channel router)体系结构

先说明几个概念:
1、Flit: flow control unit 最小流控单位,一个packet可以由一个或多个flits组成
2、Phit: physical unit 物理层传输单位,一个flit可以由一个或多个phits组成,phit定义为两相邻网络设备之间的一次传输
3、虚通道(Virtual channel):通过时分复用方式共享物理链路。

引言

路由器(Router)由寄存器(register)、交换结构(switch)、功能单元和控制逻辑组成,实现路由和流控功能,以储存和转发数据包到达目的地。下面主要讲述高性能互连领域典型的基于虚通道的IQ(输入缓存)路由器体系结构,研究在路由器设计中存在的问题和权衡。
现代路由器在flit级别进行流水。头flit(Head flits)要通过进行路由计算和虚通道分配的阶段,所有flits(含头flits)都要通过交换分配和交换结构遍历阶段。当某个流水线阶段在当前时钟周期不能完成时,流水线会发生停顿。大多数路由器使用信用来分配缓存。在有限数量缓存的路由器中,信用的处理引发的延迟对于性能有较大影响。信用也会影响死锁。如果在所有信用返回前分配了某个虚通道,就会在被分配该通道的数据包和仍然在下游交换机缓存中的数据包之间产生依赖。下面进行具体讲述。

基本路由器体系结构

下图是典型的基于虚通道路由器(Virtual-channel router)的结构框图。
在这里插入图片描述所有组件根据功能可以划分为两组:数据通路(datapath)和控制平面(datapath)。数据通路负责数据包的存储和移动,包含输入缓存、交换结构和输出缓存。通常将输入(输出)控制状态与输入缓存相结合形成输入(输出)单元(input unit)。每个输入(输出)端口各有1个输入(输出)单元,交换结构用来连接输入与输出单元。剩下的组件实现路由器的控制平面,负责协调数据包通过数据通路。具体来讲,路由计算组件为每个数据包分配输出端口、虚通道分配器为每个数据包分配输出虚通道、交换结构分配器为每个数据包分配交换时隙。
每个数据包的flit顺次抵达路由器的输入单元。输入单元包含一系列flit缓存用来储存到达的flits,直到它们可以被转发。同时输入单元也维持与该输入链路相关的每一个虚通道的状态。可以这么理解,每个输入单元由该端口(或者说链路)的每个虚通道对应的一系列flits缓存以及对应的状态字段组成。

通常会维持5个状态字段(组成状态向量)来跟踪每个虚通道的状态。

字段 名称 描述
G Global state 空闲(I)、Routing(R)、等待输出VC(V)、活动(A)、等待信用(C)
R Route 当完成对数据包的路由计算时,该字段保存为数据包选择的输出端口。
O Output VC 当完成对数据包的虚通道分配,该字段保存分配给该数据包的输出端口R的虚通道。
P Pointers 输入缓存中头flit和尾flit的指针。用来得到每个虚通道对应的缓存中
C Credit count 输出端口R的输出虚通道O的信用的数量

输出虚通道对应的向量:

字段 名称 描述
G Global state 空闲(I)、活动(A)、等待信用(C)
I Input VC 正在向该输出虚通道转发数据包的输入端口和虚通道
C Credit count 在下游节点上可以用来保存来自此虚通道的flit的空闲缓冲区数目。

流水线的过程:对于每个数据包,首先进行路由计算以决定该数据包被转发的输出端口。通常是每个输入端口一个路由计算组件,但当路由较为简单或者有带宽需求时,可以让每一个输入单元都有自己的路由计算组件。但类似的复制对于分配器(即虚通道分配器和Switch分配器)来说是不可能实现的,因为分配器要对共享资源进行分配。给定输出端口后,数据包向虚通道分配器请求输出虚通道。路由确定且虚通道已经分配后,数据包的每一个flit通过该虚通道进行转发,转发过程首先由交换结构分配器分配交换结构和输出信道的时间槽,然后每一个flit在分配好的时间槽内转发到输出单元。最终,输出单元转发flit到下一

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值