Archipelago

Lec 15片上网络(一):拓扑与流量控制(On-Chip Networks I: Topology / Flow Control)

讲义完成更新于 2026-09-29

Lec 15 片上网络(一):拓扑与流量控制(On-Chip Networks I: Topology / Flow Control)

MIT 6.5900 Fall 2024 · Daniel Sanchez 主题:互连网络架构、拓扑(topology)及其度量、流量控制(flow control)协议

TL;DR

  • 片上网络设计维度:互连架构横跨拓扑、路由、流控、路由器微架构与链路五个层次,核心度量包括网络直径、平均跳数与对分带宽。
  • 消息层次与基本单位:消息在逻辑上划分为包(Packet,路由单元)、Flit(流控单元)与 Phit(物理传输单元),实现细粒度带宽与缓冲复用。
  • 流控机制演进:从无缓冲电路交换到存储转发(SAF)、虚直通(VCT),再演进为虫孔(Wormhole)与虚通道(VC)流控,彻底化解线头阻塞(HOL Blocking)。

一、从互连网络到片上网络

互连网络按尺度从大到小:箱间(box-to-box)→ 板间(board-to-board)→ 芯片间(chip-to-chip)→ 片上网络(on-chip network, NoC)。

  • 多芯片场景:超级计算机、数据中心、互联网路由器、服务器;
  • 片上场景:服务器、笔记本、手机、HDTV、接入路由器。

本讲聚焦连接共享内存处理器中各私有缓存的片上网络。

什么是片上网络

在缓存一致的片多处理器(chip multiprocessor)中,网络在处理器核之间传输缓存一致性消息与缓存行。例如某核执行 Load reg1, addressA,请求需经网络到达地址 A 的归属节点(home node)或持有副本的共享者(sharer)。


二、互连网络架构的五个层面

层面问题
拓扑(Topology)如何把节点(处理器、存储器、路由器线卡……)连起来?
路由(Routing)消息应走哪条路径?
流量控制(Flow control)消息实际如何从源转发到目的?
路由器微架构如何构建路由器?
链路微架构如何构建链路?

本讲采用自底向上:先讲流量控制(假设路由已定),下一讲讲路由算法。


三、拓扑及其度量

拓扑性质

  • 路由距离(Routing Distance):路径上的链路数;
  • 直径(Diameter):最大路由距离;
  • 平均距离(Average Distance);
  • 若移除一组链路会使图断开,则称该组链路划分了网络;
  • 对分带宽(Bisection Bandwidth):穿过把网络一分为二的最小割的带宽。

线性阵列与环

路由 A→BA \to B 由相对地址 R=B−AR = B - A 给定。

度量线性阵列(Linear Array)环 / 1-D 环面(Ring / Torus)
直径N−1N-1N/2N/2(N 为偶数)
平均距离N/3−1/(3N)N/3 - 1/(3N)N/4N/4(N 为偶数)
对分带宽1122

环面例子:FDDI、SCI、FiberChannel Arbitrated Loop、Intel Xeon。环可排布成使用短线的形式。

多维网格与环面

  • d 维阵列:n=kd−1×⋯×k0n = k_{d-1} \times \cdots \times k_0 个节点,用 d 维坐标向量 (id−1,…,i0)(i_{d-1}, \ldots, i_0) 描述;
  • d 维 k 元网格(k-ary d-mesh):N=kdN = k^d,k=Ndk = \sqrt[d]{N};
  • d 维 k 元环面(k-ary d-cube):在网格基础上加环绕链路。

四、消息的分层单位

单位含义
包(Packet)路由与排序的基本单位,大小受限(如 64 bits – 64 KB)
flit(flow control digit)带宽/存储分配的基本单位;同一包的所有 flit 走同一路径
phit(physical transfer digit)单个时钟周期内传输的数据

为什么要 flit?为了支持可变包长,并以更细粒度分配带宽与缓冲。

路由 vs 流量控制

  • 路由算法选择包从源到目的应走的路径;
  • 流量控制方案为穿越网络的包分配资源(缓冲、链路、控制状态)。

路由算法的性质

  • 确定性/无关(Deterministic/Oblivious):路径仅由 (源, 目的) 决定,与中间状态(流量)无关;
  • 自适应(Adaptive):路径受沿途流量影响;
  • 最小(Minimal):只选最短路径;
  • 无死锁(Deadlock-free):任何流量模式都不会导致没有包能前进。

五、流量控制协议

竞争(Contention)

两个包试图同时使用同一链路——因为共享带宽与缓冲资源而产生。缓冲有限或没有缓冲时尤为突出。

协议谱系(复杂度与效率递增)

  • 无缓冲(Bufferless):电路交换、丢弃、误路由;
  • 有缓冲(Buffered):存储转发、虚直通、虫孔、虚通道。

1. 电路交换(Circuit Switching)

源到目的先建立一条"电路":用探测包建立路径 → 预留所有链路 → 数据通过 → 释放。无缓冲。

优点:实现简单。缺点:浪费,短包延迟约为 3 倍(请求—确认—释放的往返开销)。

2. 丢弃(Dropping)

若两者同时到达而资源不足,丢弃其一(互联网的流量控制哲学)。

缺点:需重传;流量与缓冲之间的权衡很差。

3. 误路由(Misrouting)

故意把包路由远离拥塞,无需缓冲。

"若每节点每次只能进/出一个消息,网络就永不拥塞"——错!多跳会造成拥塞。问题:活锁(livelock),需保证有进展。

有缓冲路由:链路级背压

既然不能丢包,就要管理缓冲。关注吞吐/延迟与缓冲利用率。背压技术:

  • 朴素停顿(on/off):源能否发送;
  • 复杂停顿(基于信用,credit-based):能向下游发多少个 flit;
  • 推测(ack/nack):先假设能发并保留副本,按 ack/nack 决定丢副本或重发。

4. 存储转发(Store-and-Forward,基于包)

在每个中间站等整个包到齐才继续前进。

优点:其他包可用中间链路。缺点:每跳都经历串行化延迟(serialization latency)。

5. 虚直通(Virtual Cut-Through,基于包)

包的头 flit 先冲出去,不必等整包到齐;头被阻塞时整包阻塞在一个中间节点。用于 Alpha 21364。

优点:更低延迟。缺点:缓冲按包分配 → 缓冲大、利用率低;信道按包分配 → 不公平、利用率低。

6. 虫孔(Wormhole,flit 缓冲流量控制)

包阻塞时,就地阻塞各 flit 当前所在之处。类似直通,但信道与缓冲按 flit 分配(信道状态即虚通道,分配给包以便体 flit 跟随头 flit)。

优点:所需缓冲空间更小。缺点:可能在包中途阻塞一条信道,使其他包无法用其带宽。

7. 虚通道(Virtual-Channel, VC)流量控制

消息阻塞时,不占住物理链路,而是占住虚链路。缓冲中有多个队列(像高速公路上的多车道),虚通道可理解为信道状态 + flit 缓冲。

优点:显著减少阻塞。缺点:路由器更复杂,需公平的 VC 分配。


片上网络拓扑与流量控制机制总结

  • 片上网络的设计分拓扑、路由、流量控制、路由器/链路微架构五个层面;
  • 拓扑用直径、平均距离、对分带宽度量,线性阵列/环/多维网格与环面是基础结构;
  • 消息分为 packet / flit / phit;
  • 流量控制从无缓冲(电路交换、丢弃、误路由)到有缓冲(存储转发、虚直通、虫孔、虚通道),虚通道用最小代价显著降低阻塞。

虫孔流控与虚通道(Virtual Channel)打破线头阻塞的本质

在片上网络早期,虫孔流控(Wormhole Flow Control)凭借「以 Flit 为粒度分配缓冲」的优势,将片上路由器的 SRAM 面积开销压缩到了极致——一个数据包可以像蠕虫一样身跨多个路由器。然而,虫孔流控的致命软肋在于线头阻塞(Head-of-Line Blocking, HOL):当包头 Flit 遭遇下游拥塞停顿在某一输入端口时,其后续跟随的 Body Flits 会被钉死在整条物理路径上,强行占据沿途物理链路的带宽并剥夺其他就绪数据包的前进机会。

Bill Dally 提出的虚通道(Virtual Channel, VC) 技术在微架构层面实现了神来之笔:在单个物理链路上多路复用多个独立的 Flit 缓冲队列与逻辑状态。虽然物理连线依然共享,但不同虚通道的数据包在逻辑上完全解耦。当 VC 0 中的数据包停顿阻塞时,VC 1 中不相干的数据包可以自由借用同一物理链路向前穿行,如同在单行道上动态开辟出「超车道」。这种以极少量寄存器控制逻辑换取网络吞吐翻倍的微架构创新,不仅彻底消除了线头阻塞,更成为后续构建无死锁路由和划分一致性虚拟网络(Virtual Networks)的绝对基石。

下一讲:路由器(交换机)微架构与路由算法