片上网络初印象

  • ~3.80K 字
  1. 1. 导论
    1. 1.1. 片上网络之前
    2. 1.2. 片上网络优势
    3. 1.3. 片上网络基本构建模块
  2. 2. 片上网络的系统架构接口
    1. 2.1. 共享缓存
    2. 2.2. 缓存一致性协议
    3. 2.3. 协议级死锁
    4. 2.4. 多级缓存
    5. 2.5. 基于目录的协议中的内存控制器
    6. 2.6. 未命中/事物状态保持寄存器 MSHR(Miss Status Holding Register)
    7. 2.7. 片上网络接口标准
  3. 3. 拓扑
  4. 4. 路由
    1. 4.1. 路由算法种类
    2. 4.2. 设计考量
    3. 4.3. 性能对比
  5. 5. 流控制
    1. 5.1. 消息、数据包、flit和phit
    2. 5.2. 流控制机制
    3. 5.3. 无死锁流控制
    4. 5.4. 缓冲区反压
    5. 5.5. 流控机制性能对比
  6. 6. 路由器微体系结构
    1. 6.1. 虚拟通道路由器微体系结构
    2. 6.2. 交叉开关
    3. 6.3. 分配器和仲裁器
    4. 6.4. 流水线

前言:本内容根据《片上互联网络——多核/众核处理器关键技术》中文版自行整理

导论

片上网络(On-Chip Networks),也即NoC,是一种新型的芯片内通信结构,它采用类似计算机网络的设计思想,将片上系统内部的各个处理器、存储器、I/O等单元连接起来,形成一个可重构的、高效的、灵活的通信网络。

片上网络之前

在NoC出现之前,片上系统主要采用总线架构(Bus)或者交叉开关(Crossbar)。

  • 总线是一种共享的物理通道,所有处理器核通过同一线路进行通信,同一时间仅允许一对核进行数据传输
  • 交叉开关通过矩阵式开关实现任意两个核间的直接连接,支持多对核同时通信
    但随着多核处理器(如MPSoC)和复杂SoC的发展,传统架构的局限性愈发明显。总线和交叉开关都无法满足高并发、低延迟、低功耗的需求,促使研究者借鉴计算机网络的分组交换思想,提出了片上网络。

片上网络优势

  1. 高可扩展性:模块化设计,通过添加路由器和链路可线性拓展节点数量,避免总线架构因节点增加导致的带宽竞争问题
  2. 高带宽:并行传输
  3. 低延迟:短距离片上通信和分布式路由算法

片上网络基本构建模块

  1. 拓扑:在网络中各个节点(各个模块连接一个路由器,路由器作为与网络中其他节点的直接对接节点)和通道形成的形状
  2. 路由:在某种拓扑结构中,消息从源节点到目的节点的走法
  3. 流控制:消息在传输时需要资源(谁先谁后,通过哪一条路径),流控制规定了给消息分配资源的策略
  4. 路由器微体系结构:整个路由器工作时需要输入缓冲区、路由器状态、路由逻辑、分配器和交叉开关等部分,这些部分工作的逻辑通常设计为流水线结构
  5. 链路结构:全摆幅逻辑和带有中继器的连线

片上网络的系统架构接口

共享缓存

在大规模并行处理系统中,结合消息传递接口(Message Passing Interface, MPI)单芯片多处理器(Chip Multiprocessor, CMP)技术,将统一的地址空间划分为多个地址空间分区,每个分区对应多个共享存储的节点,各个分区之间的数据交互通过 MPI 进行统一管理。
实现共享存储的一种方式是共享存储模型:
共享存储的 CMP 架构

缓存一致性协议

多核系统中常用两种缓存一致性协议:

  • 基于广播(broadcast)的协议,常采用 MESI 协议
    • Modified
    • Exclusive
    • Shared
    • Invalid
  • 基于目录(directory)的协议:中心化目录记录缓存状态
    两类缓存一致性协议的网络请求示例

协议级死锁

不同类消息之间存在资源依赖时,就可能导致死锁。

多级缓存

缓存结构

私有二级缓存和共享二级缓存的节点设计

基于目录的协议中的内存控制器

内存控制器在网路中的部署位置

未命中/事物状态保持寄存器 MSHR(Miss Status Holding Register)

  • 功能:跟踪未完成缓存未命中请求
  • 工作流程:
    1. 缓存未命中时分配MSHR条目
    2. 合并后续相同地址请求
    3. 数据返回后批量响应

片上网络接口标准

  1. 基于总线的事务语义
  2. 乱序事务

拓扑

  • 直连拓扑
    • ring
    • mesh
    • torus
  • 非直连拓扑
    • crossbar
    • butterfly
    • clos
    • fat tree
  • 不规则拓扑

路由

路由算法种类

  1. 确定性路由(Deterministic Routing)

    • 特点:路径选择仅依赖源目地址
    • 典型算法:
      • XY路由(2D-Mesh)
      • 维度序路由(DOR)
    • 优势:无死锁、实现简单
    • 缺点:负载不均衡
  2. 无关路由(Oblivious Routing)

    • 特点:路径随机选择,不感知网络状态
    • 典型实现:
      • Valiant’s随机路由
      • ROMM(随机最小路由)
    • 适用场景:容错需求高的系统
  3. 自适应性路由(Adaptive Routing)

    • 特点:根据网络状态动态选择路径
    • 高级算法:
      • Duato协议(虚拟通道+逃生通道)
      • DBAR(动态缓冲分配路由)
    • 优势:负载均衡、高吞吐量

设计考量

  1. 死锁避免机制

    • 通道依赖图(CDG)分析
    • 虚拟通道分区技术
    • 转向限制(如West-First策略)
  2. 服务质量(QoS)支持

    • 优先级通道划分
    • 延迟敏感型数据优先路由
  3. 实现复杂度

    • 路由计算单元(RCU)面积开销
    • 流水线深度影响(典型3-5级)

性能对比

算法类型 吞吐量 路径多样性 硬件开销 典型延迟
确定性路由 30-50ns
无关路由 随机 40-60ns
自适应性路由 20-40ns

流控制

消息、数据包、flit和phit

  • 消息(Message):应用层逻辑单元(如缓存行请求)
  • 数据包(Packet):包含路由信息的传输单元(头flit+体flit+尾flit)
  • flit(Flow control digit):流控制基本单元(典型大小:128-256bit)
  • phit(Physical unit):物理链路传输单元(与链路宽度相等)

层级关系:消息 → 拆分为多个包 → 包拆分为多个flit → flit拆分为多个phit

流控制机制

  1. 电路交换(Circuit-Switching)
  • 级别:消息级
  • 工作原理:建立专用物理通路后传输完整消息
  • 特点:
    • 高延迟(建立+拆除时间)
    • 低链路利用率
    • 适合长消息传输(如DMA操作)
  1. 存储转发(Store-and-Forward)
  • 级别:数据包级
  • 工作流程:完整接收数据包后才向下一跳转发
  • 缺点:缓冲区需求大(需存完整包)
  1. 虚拟直通(Virtual Cut-Through)
  • 级别:数据包级
  • 改进原理:收到包头即开始转发,无需等待整个包
  • 要求:下一跳节点必须保证有足够缓冲空间
  • 优势:减少端到端延迟约30%
  1. 虫洞交换(Wormhole Switching)
  • 级别:flit级
  • 流水机制:头flit建立路径,后续flit流水跟进
  • 关键特性:
    • 缓冲区仅需存储少量flit
    • 队头阻塞(HoL)可能造成性能抖动
  • 适用场景:小数据包密集场景
  1. 虚拟通道流控(VC Flow Control)
  • 层级:flit级
  • 核心机制:多逻辑通道共享物理链路
  • 管理策略:
    • 静态VC:固定映射业务类型
    • 动态VC:集中式分配器管理
  • 优势:打破通道依赖,预防协议级死锁

无死锁流控制

  1. 时间线和虚拟通道划分
  • 原理:将网络操作划分为时间片周期(典型5-10个周期)
  • 实现:奇数周期使用VC1,偶数周期使用VC2
  • 优势:天然打破资源依赖环
  1. 逃生虚拟通道
  • 设计原则:为每个物理通道保留至少1个专用逃生VC
  • 工作流程:
    1. 常规VC发生阻塞时启用逃生通道
    2. 采用确定性路由确保逃生路径无循环
  • 案例:Duato协议使用2个VC(1个自适应+1个逃生)
  1. 气泡流控制
  • 机制:在环形拓扑中保持至少1个空缓冲区(气泡)

缓冲区反压

  1. 基于 credit 的反压
  • 实现原理:
    • 接收方初始分配固定credit值(通常8-16)
    • 每发送1 flit消耗1 credit
    • 返回空credit包补充信用值
  • 优势:精确控制流量,适合高带宽链路
  • 开销:每个VC需要5-10%的额外带宽
  1. 基于开启/关闭信号的反压
  • 工作方式:
    • 接收方缓冲区达到阈值时发送STOP信号
    • 空闲缓冲区超过阈值时发送GO信号
  • 响应延迟:3-5 cycles
  • 优点:实现简单,适合低功耗设计

流控机制性能对比

特性 Credit-based ON/OFF 混合方案
反压粒度 flit级 通道级 VC级
实现面积 高(12K gates) 低(4K) 中(8K)
最大吞吐量 95% 85% 92%
最佳适用场景 HPC处理器 IoT芯片 移动SoC
时钟同步要求 严格 宽松 中等
多跳累计延迟 1.2ns/hop 2.1ns 1.5ns

路由器微体系结构

虚拟通道路由器微体系结构

基于 credit 的缓冲区反压机制的虚拟通道路由器微体系结构

交叉开关

交叉开关

分配器和仲裁器

  • 轮询(round-robin)仲裁器
  • 矩阵仲裁器
  • 分离式分配器
  • 波前分配器

流水线

路由器流水线

典型5级流水线工作流程:

  1. 缓冲区写入(BW)
  • 功能:将到达的flit写入输入缓冲区
  • 缓冲深度:4-8 flit/VC
  • 写入策略:非阻塞式旁路写入
  1. 路由计算(RC)
  • 关键操作:
    • 解码头flit的目标地址
    • 查询路由表确定输出端口
  • 计算延迟:2-3 logic levels
  1. 虚拟通道分配(VA)
  • 分配流程:
    1. 请求目标端口的可用VC资源
    2. 仲裁器执行最大匹配算法
  • 并行度:支持4-8个并发请求
  1. 开关分配(SA)
  • 仲裁机制:
    • 输入VC ↔ 输出端口权重匹配
    • 可配置优先级(QoS权重高达30%)
  1. 交叉开关传输(ST)
  • 物理特性:
    • 128bit并行传输
    • 建立时间:0.3ns @7nm工艺
  • 功耗:占总功耗的25-35%
  1. 链路传输(LT)
  • 电气规范:
    • 差分阻抗:100Ω ±10%
    • 信号摆幅:200mVpp
  • 重传机制:基于CRC32的错误检测

优化技术:

  • 前瞻路由计算(lookahead routing):将RC阶段提前到缓冲区写入时
  • 低负荷旁路(low-load bypassing):低负载时跳过仲裁阶段
  • 基于推测的虚拟通道分配:动态合并空闲VC提升利用率