news 2026/6/15 16:31:50

NoC组件之Router微架构解析(九)流水线化的多虚通道Router结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NoC组件之Router微架构解析(九)流水线化的多虚通道Router结构

Chapter 9: Pipelined Virtual-Channel-Based Routers

(本文版权归作者所有,任何形式的转载都请注明出处)

9.1 基本结构与流水

如 Fig 9.2 所示,输入为两包完整 Packet 先后到达相同 inVC,基本结构为三级流水:

  • pipe 0:flit 经过链路传输,到达并写入 Buffer。
  • pipe 1:flit 位于 Buffer 最前端,执行 RC → VA → SA 分配 outVC 后,从 Buffer 出队通过 Switch 到达输出端口。
  • pipe 2:flit 经过链路传输,到达并写入下一 hop 的 Buffer。

如 Fig 9.3 所示,输入为两包 Packet 交织、先后到达不同的 inVC,并且有竞争,存在仲裁失败:

  • cycle 0:H0 到达 Buffer。

  • cycle 1:H0 执行 RC-VA-SA-DQ-ST;H1 到达 Buffer。

  • cycle 2:H0 到达下一 hop 的 Buffer;H1 执行 VA 仲裁失败;B0 到达 Buffer。

  • cycle 3:H1 执行 RC-VA-SA-DQ-ST;B0 执行 SA 仲裁失败;B1 到达 Buffer。

    … …

正常情况下不会断流。若出现以下三种情况会断流:

  • (a) VA 仲裁失败;
  • (b) SA2 仲裁失败;
  • © outVC 无 Credit 可用。

9.2 RC 后插入 Pipeline(不采用 Lookahead RC)

如 Fig 9.6、Fig 9.7 所示,在 RC 后插入一拍(删除outPort寄存器的 Bypass 通路),四级流水:

  • pipe 0:flit 经过链路传输,到达并写入 Buffer。
  • pipe 1:flit 位于 Buffer 最前端,执行 RC 后写入outPort寄存器。
  • pipe 2:用outPort寄存器的值,执行 VA-SA 分配 outVC 后,从 Buffer 出队通过 Switch 到达输出端口。
  • pipe 3:flit 经过链路传输,到达并写入下一 hop 的 Buffer。

控制通路和数据通路都需要插一拍,否则流水中会产生 Bubble 影响吞吐。如 Fig 9.5 所示,H1 必须等 T0 离开 inBuffer 才能执行 RC。在 Fig 9.6 所示结构中,若 flit 因仲裁失败导致被阻塞在 EB,则是属于竞争导致流水 Stall,不属于流水结构问题。

9.3 VA 后插入 Pipeline

如 Fig 9.8 所示,在 VA 后插一拍(删除outVC寄存器的 Bypass 通路),四级流水:

  • pipe 0:flit 经过链路传输,到达并写入 Buffer。
  • pipe 1:flit 位于 Buffer 最前端,执行 RC-VA 分配结果写入outVC寄存器。
  • pipe 2:用outPortoutVC寄存器值组成 SA 输入,SA 成功后从 Buffer 出队通过 Switch 到达输出端口。
  • pipe 3:flit 经过链路传输,到达并写入下一 hop 的 Buffer。

如 Fig 9.9 所示,为两包 Packet 背靠背进入同一个 inVC 的流水时序。H0 分配 VC 成功后,后续 B0 和 T0 可以跳过 RC-VA 阶段,直接用outVC寄存结果参与 SA 仲裁。而 H1 需要等 T0 离开后才能继续执行 RC,原因是 T0 处于 pipe2 时 H1 仍未从 Buffer 出队——因此在每 Packet 之间会产生两拍 Bubble

最好的情况如 Fig 9.10 所示,两包 Packet 属于不同的 inVC,交织传输,顺序为 H0-B0-H1-T0-B1。若不因竞争而断流,此时刚好达到100% 吞吐

那么可不可以效仿之前,在数据通路同步插一拍 EB?—— NO!

当前一包 T0 进入 EB,且 T0 持有 VC0。若 T0 因 SA 仲裁失败或 Credit 不足而阻塞时,随后一包 H1 也被阻塞,且 H1 经过 VA 仲裁后持有 VC1。此时不同 VC 之间会产生依赖链条——即一个 inVC 同时持有两个不同的 outVC(VC0 和 VC1),且必须等待 outVC0 释放后,outVC1 才能释放。所以,为了避免死锁,必须保证 Packet 的原子性,即等待前一包 Packet 完全离开后才能允许下一包 Packet 进入,则数据通路的插拍属于浪费。由此可知,此时流水线 Bubble 是属于不可避免的固有代价,无法通过打拍消除。

9.4 SA 后插入 Pipeline

如 Fig 9.11 所示,在 SA 输出 sel 信号后以及数据通路 ST 前插一拍,四级流水:

  • pipe 0:flit 经过链路传输,到达并写入 Buffer。
  • pipe 1:flit 位于 Buffer 最前端,执行 RC-VA-SA 仲裁成功返回 Grant,控制 Buffer 前端 flit 出队,进入 Switch 前写入 EB。
  • pipe 2:延迟一拍后的 Switch sel 信号,控制 flit 通过 Switch,并更新 Credit Counter。
  • pipe 3:flit 经过链路传输,到达并写入下一 hop 的 Buffer。

关键问题:更新 Credit 比 SA 仲裁延迟一拍,可能导致下游 Buffer 溢出。

当 pipe1 执行 SA 时,由于 Credit 更新有一拍延迟,判断 VC 可用的信息是旧的,Credit 可能已经被前一包 flit 消耗掉。所以 SA 判断 Credit 可用的条件需要由creditCounter > 0调整为creditCounter > 1。由于 Round Trip Delay 增加一拍,所以为了 100% 吞吐,Buffer 深度需要 +1。

更新 Credit 能否提前执行,与 SA 对齐?—— NO!

因为 pipe2 和 pipe3 信息不对称——只有数据成功通过 Switch,才能得到更新 Credit 的VCid信息,前一拍 SA 无法提前更新目标 VC 的 Credit。除非 SA 阶段增加一个 MUX 用于获取 VC 信息,这个 MUX 的输入是每个输入端请求的 outVC,输出是驱动每个 outVC 更新 Credit 的 sel 信号,即 NV × NV,得不偿失。

9.5 全 Pipeline 结构

多级流水无需「重新设计」,只需要把前面提到的「切割方式」组合起来,如 Fig 9.17 所示。影响在于需要重新计算 Round Trip 延时,评估 Buffer 深度。

需要注意的是,类比 Amdahl 定律,随着流水线深度的增加,其在提升频率上的收益会递减。盲目插入 Pipeline 不可取,需要在目标主频硬件代价之间 Trade-off。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 16:29:51

保姆级教程:用Putty SSH登录群晖,安全调整硬盘过热保护阈值

群晖NAS硬盘温度管理全指南:从SSH连接到安全调参实战 最近遇到群晖NAS频繁自动关机?很可能是因为硬盘温度触发了系统保护机制。作为一名长期使用群晖设备的技术顾问,我发现不少用户都面临类似困扰——特别是那些安装了高性能M.2 SSD的用户。…

作者头像 李华
网站建设 2026/6/15 16:27:51

MPC866 SCC控制器GSMR_L寄存器配置详解与驱动开发实践

1. MPC866 SCC控制器:工业通信的“瑞士军刀”在嵌入式系统,尤其是工业控制、网络设备和通信网关这类对可靠性和实时性要求极高的领域,串行通信往往是设备与外界交互的“生命线”。你可能用过UART进行简单的调试打印,或者通过SPI、…

作者头像 李华
网站建设 2026/6/15 16:23:55

嵌入式内存控制器UPM编程:RAM Word位域详解与FPM DRAM时序实战

1. 项目概述:从“硬连线”到“可编程”的内存控制器进化在嵌入式系统开发,尤其是基于PowerPC、ColdFire这类经典架构的微控制器设计中,内存控制器(Memory Controller)的性能和灵活性往往是决定整个系统成败的关键。早期…

作者头像 李华
网站建设 2026/6/15 16:22:58

MSC711x中断控制器架构解析与实战配置指南

1. 项目概述:深入理解MSC711x中断控制器在嵌入式系统开发,尤其是涉及实时信号处理、通信协议栈或复杂外设管理的项目中,中断系统的设计与配置往往是决定系统响应速度和稳定性的关键。飞思卡尔(现恩智浦)的MSC711x系列D…

作者头像 李华
网站建设 2026/6/15 16:22:04

MPC860中断控制器(CPIC)架构解析与嵌入式系统中断编程实战

1. MPC860中断控制器(CPIC)核心架构与设计哲学在嵌入式通信处理器的世界里,中断响应速度往往直接决定了系统的实时性能上限。MPC860 PowerQUICC系列处理器,作为一款经典的通信处理器,其核心魅力之一就在于集成了一个高…

作者头像 李华