ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

片上网络的虫孔交换

片上网络的虫孔交换 片上网络NoC中的虫孔交换Wormhole Switching一、什么是虫孔交换虫孔交换Wormhole Switching也称虫孔路由是片上网络Network-on-Chip, NoC中最主流的一种数据包交换机制。它的核心思想是将数据包切片传输像虫子钻洞一样逐段前进。二、基本术语在虫孔交换中一个数据包Packet被拆分为以下层级结构┌─────────────────────────────────────────────────┐ │ Packet数据包 │ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ Flit│ │ Flit│ │ Flit│ ... │ Flit│ │ │ └─────┘ └─────┘ └─────┘ └─────┘ │ │ 头Flit 数据Flit 数据Flit ... 尾Flit │ └─────────────────────────────────────────────────┘术语说明Flit微片​最小的传输和流控单位典型宽度为 32~256 bitHead Flit头微片​包含路由信息目标地址、虚通道ID等负责建立路径Body/Data Flit数据微片​纯载荷数据紧跟头FlitTail Flit尾微片​标记数据包结束释放路由资源三、虫孔交换的工作原理3.1 核心机制时间步 → t1 t2 t3 t4 t5 t6 源 [H] [D1] [D2] [D3] [D4] [T] 路由器A 空闲 [H] [D1] [D2] [D3] [D4] 路由器B 空闲 空闲 [H] [D1] [D2] [D3] 路由器C 空闲 空闲 空闲 [H] [D1] [D2] 目的 空闲 空闲 空闲 空闲 [H] [D1]关键特征头Flit先行头Flit携带路由信息在每个路由器节点决定下一跳方向后续Flit紧跟一旦头Flit获得输出通道后续Flit以流水线方式紧随其后不缓存整个包中间路由器只需要缓存几个Flit一个缓冲区的深度而不需要缓存整个数据包通道释放尾Flit离开后该路径上的通道资源被释放3.2 与存储转发Store-and-Forward的对比存储转发 源 ──[整个Packet]──→ 路由器A ──[整个Packet]──→ 路由器B ──[整个Packet]──→ 目的 (全部接收完) (全部接收完) (全部接收完) 虫孔交换 源 ──[H]──→ 路由器A ──[H]──→ 路由器B ──[H]──→ 目的 ──[D]──→ 路由器A ──[D]──→ 路由器B ──[D]──→ 目的 ──[T]──→ 路由器A ──[T]──→ 路由器B ──[T]──→ 目的对比维度存储转发虫孔交换路由器缓冲需求整个包大小KB级几个Flit数十~数百Byte传输延迟高每跳都要等整包低头Flit到达即开始转发通道利用率低高死锁风险低需要虚通道机制来避免四、流控机制虫孔交换的流控通常在Flit级别​ 进行4.1 基于信用的流控Credit-based Flow Control路由器A (发送方) 路由器B (接收方) │ │ │════ 发送 Flit ════→ │ │ │ 写入接收缓冲区 │←═══ Credit (信用) ═══ │ │ (表示有空闲缓冲) │接收方维护一个信用计数器表示可用缓冲区数量每发送一个Flit发送方信用减1接收方消费一个Flit信用加1并回送Credit信号信用为0时发送方停止发送4.2 基于就绪信号的流控Ready/ValidValid ────→ 数据有效 Ready ←──── 接收方准备好五、虚通道Virtual Channel, VC这是虫孔交换中最重要的扩展机制。5.1 为什么需要虚通道虫孔交换存在通道阻塞问题场景两个包同时经过同一个路由器 包A: 路由器X ──→ 路由器Y (通道被占) 包B: 路由器Z ──→ 路由器Y (等待包A释放通道)如果包A因为下游阻塞而停住它占用的通道资源不会释放导致包B也被阻塞。如果包B恰好是包A路由决策所需的资源如回复包就会形成死锁。5.2 虚通道的解决方案物理通道 ├── VC0 (包A使用) ├── VC1 (包B使用) ├── VC2 └── VC3每个物理通道划分为多个逻辑上独立的虚通道每个VC有独立的缓冲区FIFO和状态机仲裁器在VC之间分配物理通道带宽效果包A阻塞在VC0时包B可以使用VC1通过同一物理链路六、虫孔交换的优缺点总结优点优点说明低缓冲开销​每个路由器只需少量Flit缓冲区几十~几百Byte适合片上面积受限场景低延迟​头Flit到达即可开始转发无需等待整包高带宽利用率​Flit级流水线使通道几乎持续被利用实现简单​相比虚通道路由基本虫孔交换的控制逻辑较简单缺点缺点说明阻塞传播​一个Flit阻塞会导致整条虫阻塞占用多个路由器的资源需要死锁避免​必须使用虚通道或限制路由算法来避免死锁吞吐量受限​长包会长时间占用通道影响其他包的延迟对故障敏感​链路错误会导致整个包重传因为Flit分散在路径上七、与其他交换方式的对比交换方式缓冲需求延迟复杂度NoC中常见度存储转发高高低较少虫孔交换​低​低​中​最主流​虚通道路由虚切通中中高高性能场景电路交换无缓冲建立高/稳态低中特定应用注严格来说虫孔交换是虚通道路由的一种特例缓冲区深度1时退化为虫孔交换。实际NoC设计中常说的虫孔交换通常指带虚通道的虫孔交换。八、一个形象的比喻想象一条隧道物理通道虫孔交换就像一条蜈蚣穿过隧道蜈蚣的头Head Flit先探路决定走哪条隧道身体Data Flits一段一段地跟着钻进去蜈蚣不需要整条同时在一个隧道里而是分段穿过如果头前面的隧道堵了整条蜈蚣就停下来等——这就是阻塞传播如果有多条虚拟隧道虚通道另一条蜈蚣可以并行通过
返回列表