L15:片上网络(一):拓扑与流量控制(On-Chip Networks I: Topology / Flow Control)
MIT 6.5900 Fall 2024 · Daniel Sanchez 主题:互连网络架构、拓扑(topology)及其度量、流量控制(flow control)协议
一、从互连网络到片上网络
互连网络按尺度从大到小:箱间(box-to-box)→ 板间(board-to-board)→ 芯片间(chip-to-chip)→ 片上网络(on-chip network, NoC)。
- 多芯片场景:超级计算机、数据中心、互联网路由器、服务器;
- 片上场景:服务器、笔记本、手机、HDTV、接入路由器。
本讲聚焦连接共享内存处理器中各 Cache 的片上网络。
什么是片上网络
在缓存一致的片多处理器(chip multiprocessor)中,网络在处理器核之间传输缓存一致性消息与缓存行。例如某核执行 Load reg1, addressA,请求需经网络到达地址 A 的归属节点(home node)或持有副本的共享者(sharer)。
二、互连网络架构的五个层面
| 层面 | 问题 |
|---|---|
| 拓扑(Topology) | 如何把节点(处理器、存储器、路由器线卡……)连起来? |
| 路由(Routing) | 消息应走哪条路径? |
| 流量控制(Flow control) | 消息实际如何从源转发到目的? |
| 路由器微架构 | 如何构建路由器? |
| 链路微架构 | 如何构建链路? |
本讲采用自底向上:先讲流量控制(假设路由已定),下一讲讲路由算法。
三、拓扑及其度量
拓扑性质
- 路由距离(Routing Distance):路径上的链路数;
- 直径(Diameter):最大路由距离;
- 平均距离(Average Distance);
- 若移除一组链路会使图断开,则称该组链路划分了网络;
- 对分带宽(Bisection Bandwidth):穿过把网络一分为二的最小割的带宽。
线性阵列与环
路由
| 度量 | 线性阵列(Linear Array) | 环 / 1-D 环面(Ring / Torus) |
|---|---|---|
| 直径 | ||
| 平均距离 | ||
| 对分带宽 |
环面例子:FDDI、SCI、FiberChannel Arbitrated Loop、Intel Xeon。环可排布成使用短线的形式。
多维网格与环面
- d 维阵列:
个节点,用 d 维坐标向量 描述; - d 维 k 元网格(k-ary d-mesh):
, ; - 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;
- 流量控制从无缓冲(电路交换、丢弃、误路由)到有缓冲(存储转发、虚直通、虫孔、虚通道),虚通道用最小代价显著降低阻塞。
下一讲:路由器(交换机)微架构与路由算法