6.1 虚拟通道路由器微结构
图示是一个最新的credit-based virtual channel router的微结构。这里假设一个二维mesh结构,因此路由器有5个输入端和5个输出端,对应于4个邻接方向和本地PE端。这个路由器的5个主要组成部分是输入缓冲器(input buffer)、路由计算逻辑(route computation logic)、虚拟通道分配器(virtual channel allocator)、开关分配器(switch allocator)和交叉开关(crossbar switch)。大多数NoC路由器使用输入缓冲,包在输入端被存入缓冲器中,因为输入端缓冲机制下可以使用单端口存储器。这里假设每个输入端有4个VC,每个VC有4个片深度的缓冲队列。
片自从其进入路由器起,整个在路由器中停留的时间都保存在这些缓冲器中。这与处理器流水线中将指令在流水线级间的缓冲器中进行锁存(latching)是不同的。如果不使用源路由(source routing),则路由计算逻辑将会计算(或者查找)这个包的正确的输出端。VC分配器和开关分配器(virtual channel allocator and switch allocator)选择片来进入下一个阶段:即通过交叉开关。最终,交叉开关物理上将片从输入端转移到输出端。
接下来几节分别讨论各个组成部分。
6.4 分配器和仲裁器
一个分配器将N个请求(request)匹配(match)到M个资源(resource),一个仲裁器将N个请求匹配到1个资源。在一个r路由器中,资源是指VC和交叉开关端口。
在一个没有VC的虫孔路由器中中,在每一个输出端处的开关分配器(switch arbiter,SA)将该输出端匹配和授权给发出请求的输入端,因此,有P个仲裁器,分别位于每个输出端,每一个都可以在竞争条件下将P个输入端的请求匹配到其所在的输出端。
在一个多VC的router中,我们需要一个虚拟通道分配器(virtual channel allocator,VA),用以解析对输出 VC的竞争并且把他们授权(grant)给输入VC,以及一个SA来将交叉开关端口授权给输入VC。一个包中仅有头片需要VA,而所有的片都需要在每个周期中通过SA。
具有较高匹配概率的分配器或仲裁器可以使得更多的包成功获得VC并且通过交叉开关,因此可以提高网络的吞吐率(throughput)。在大多数的NoC中,路由器中的分配逻辑(allocation logic)决定了周期的时长(cycle time)。因此,分配器和仲裁器必须是快速的、可流水的,这样使得他们可以在较高的时钟频率下工作。