跳到主要内容

PAXI + RC Link 建模行为分析

本文档从仿真建模的角度, 系统梳理 PAXI (事务层) 和 RC Link (传输层) 的传输流程、Buffer 资源、重传机制和流控行为。

基于: PAXI SUE2.0 Core UserGuide V2R0P5, RCLINK AFH SPEC v2.4


名词定义

协议栈与架构

术语全称定义
PAXIProtocol of Accelerated eXchange Interconnect合见工软的芯片间互联 IP, 事务层组件, 将 AXI 总线事务映射到以太网链路
RC LinkReliable Connection LinkSUE2.0 传输层, 提供可靠传输 (Go-Back-N)、流控 (CBFC)、速率控制
CESOC-以太网控制器子系统, 包含 CEMAC (MAC)、CEPCS (PCS)、CEFEC (FEC)
SUE-合见工软完整智算互联协议 (SUE Protocol), PAXI+RC Link+CESOC 为其组成部分
FlitFlow Control UnitPAXI 基本传输单元, AXI 信号经编码后的数据包
RHRouting HeaderRC Link 报文路由头, 64-bit, 包含 QP/PSN/Opcode 等信息
MPSMaximum Packet Size单个数据包的最大尺寸
MRMemory RegionRDMA 内存区域 (旧版概念, SUE2.0 中由 AXI 地址空间替代)

寻址与通道

术语全称定义
DADestination Address目标芯片标识符, PAXI 通过 DA 寻址远端设备
SASource Address源芯片标识符
VCVirtual Channel虚拟通道, SUE2.0 支持 8 个独立 VC (VC0~VC7)
QPQueue Pair队列对, RC Link 的基本通信端点, 最多 1024 个
QPIDQueue Pair IdentifierQP 序列号, 标识发送/接收队列
Bank-TYPE1 REQ 按 QPID 低位分为最多 4 个 Bank, 用于独立流控和轮转仲裁
P_keyPartition Key分区密钥, 只有相同 P_key 的 QP 才能通信 (隔离机制)

传输与可靠性

术语全称定义
PSNPacket Sequence Number数据包序列号 (12-bit), 用于 Go-Back-N 重传的顺序检测
OSTOutstanding已发出但未收到确认的请求数量
Go-Back-N-重传算法: 检测到 PSN 错误时, 从错误点开始重发所有后续包
ACK/NAKAcknowledge / Negative Acknowledge确认/否定确认报文 (RH Opcode=01)
FACKForced ACK强制 ACK 标记, 带此标记的请求要求对端尽快回复 ACK
CNPCongestion Notification Packet拥塞通知报文 (RH Opcode=10), 检测到 ECN 标记时生成
ECNExplicit Congestion Notification显式拥塞通知, IP 头 ToS 字段低 2bit
RTTRound-Trip Time往返延迟, 通过 RH 中 Timestamp 字段测量
ICRCInvariant CRC不变 CRC 校验, TYPE1 可选 (type1_remove_icrc_en 控制)

流量控制

术语全称定义
CBFCCredit-Based Flow Control基于信用的端到端流控, 发送方跟踪接收方可用 Credit, 不足时阻塞
PFCPriority Flow Control优先级流控, 基于 RX Buffer 水位线触发暂停帧
Credit-信用单元, 代表接收方的可用缓冲空间 (单位由 credit_size 配置)
CLCredit Limit单个 VC 的最大 Credit 数量
credit_size-单个 Credit 代表的字节数: 32/64/128/256/1024/2048
credit_uf_limitCredit Underflow LimitCredit 下限 (1~7), 剩余 Credit 低于此值时阻塞 VC
Watermark-水位线, RX Buffer 的高/低阈值, 用于触发/解除背压

数据类型与报文

术语全称定义
TYPE1-RC Link 可靠单播传输类型, 支持 Go-Back-N E2E 重传, 512 OST
TYPE2-RC Link 不可靠多播传输类型, 无重传, 16 OST
TYPE3-RC Link 原始以太网报文类型, 使用 MD 机制
MDMemory Descriptor128-bit 数据描述符, TYPE3 用于管理数据缓冲区
REQRequestAXI 请求方向 Flit (AW+W, AR)
RSPResponseAXI 响应方向 Flit (R, B)
MULMulticast多播 Flit
WSTRBWrite StrobeAXI 写字节选通信号, 全 1 时可省略以节省带宽

报文格式

术语全称定义
Standard-标准报文格式, 含 MAC/IP/UDP/RH 完整头部
AFH_GEN1-自定义 MAC 头格式, 可选 TC 域
AFH_GEN2_16b-16-bit 地址压缩格式, 缩减 DA/SA 域
AFH_Lite-精简格式, 通过 Traffic Class 区分 TYPE1/TYPE2, 无 CRC
TCTraffic Class流量类别域 (8-bit), 使能 CBFC 时携带 VC 信息
VLANVirtual LAN虚拟局域网标签, 可选插入

完整传输流程

单播写请求 (AXI Write) 端到端流程

这是最典型的传输路径, 涵盖从 AXI Master 发起写事务到远端完成写操作并返回 B 响应的全过程。

2.1 AXI Write 端到端流程

编辑源文件: drawio/2_transmission_flows.drawio · 页面: "2.1 AXI Write E2E"

B 响应返回路径 (反向, RSP 通道):

2.1b B 响应返回路径

编辑源文件: drawio/2_transmission_flows.drawio · 页面: "2.1b B Response Return"

单播读请求 (AXI Read) 端到端流程

2.2 AXI Read 端到端流程

编辑源文件: drawio/2_transmission_flows.drawio · 页面: "2.2 AXI Read E2E"

关键差异: R 通道支持 interleaving, PAXI 为每个 OST 读请求分配独立 Buffer 空间, 按 Buffer 填满的顺序发送 (非严格 FIFO)。

多播写请求流程

2.3 多播写请求流程

编辑源文件: drawio/2_transmission_flows.drawio · 页面: "2.3 Multicast Write"

建模要点:

  • TYPE2 无 Go-Back-N 重传, 可靠性依赖 FEC
  • B 响应延迟 = max(所有组内设备的响应延迟)
  • 超时阈值: 默认 ~64M cycles

传输流程中的关键延迟分解

从建模角度, 端到端延迟可分解为以下阶段:

2.4 端到端延迟分解

编辑源文件: drawio/2_transmission_flows.drawio · 页面: "2.4 Latency Breakdown"

最低延迟: 150ns AXI-to-AXI @ 400G (C2C 直连, 无竞争)


Buffer 资源全景

PAXI TX 方向 (5 个 Buffer)

Buffer容量触发发出条件建模影响
AW+W1 个 MPS burst收到 AW 请求 + 当前 burst 的 WLAST写延迟受 burst 长度影响: 必须收齐整个 burst 才发出
ROST 个空间按 Buffer 填满顺序发出支持 interleaving; 多个并发读的 R 数据可交叉返回
AR深度 16(1) 达到 TX_BUF_WM 水位<br>(2) DA/VC 切换<br>(3) TX_BUF_ACC_WT 超时打包优化: 最多 16 个 AR 合并为 1 个 Flit, 减少帧头开销
B深度 16同 AR打包优化: 最多 16 个 B 合并为 1 个 Flit

AR/B 打包行为详解:

  • 三个触发条件中任一满足即发出
  • 打包后帧长不能超过最大帧长 (由 Ethernet Frame Length Register 配置)
  • DA 或 VC 发生切换时, 强制发出之前累积的数据 (不同目标不能混在同一 Flit)

PAXI RX 方向 (8 个 Buffer)

VC Buffer (3 个)

Buffer总容量默认高水位预留吸收空间触发背压
REQ MEM32 帧 + 2 RTT32 帧 + 1 RTT1 RTT超过高水位 -> PFC/CBFC 背压
RSP MEM32 帧 + 2 RTT32 帧 + 1 RTT1 RTT同上
MUL MEM8 帧 + 2 RTT8 帧 + 1 RTT1 RTT同上

水位线行为: 数据量超过高水位时触发背压 (PFC/CBFC), 低于低水位时解除背压。预留 1 RTT 空间用于吸收在途数据。详见 3.4 节总结图。

AXI 通道 Buffer (5 个)

Buffer容量说明
AW Buffer16 MPS写地址通道
W Buffer16 MPS写数据通道
B Buffer16 MPS写响应通道
AR Buffer16 MPS读地址通道
R Buffer16 MPS读数据通道

每个通道独立握手, 即使某通道被 AXI 背压, 其他通道仍可正常接收。

资源TYPE1 (可靠单播)TYPE2 (不可靠多播)TYPE3 (原始以太网)
Outstanding51216N/A
最大 Payload1344 字节1344 字节TX: 4096B, RX: 8192B
QP 数量最多 1024N/AN/A
VC 通道4 (4 Bank)11
重传 Buffer512 Slot (Go-Back-N)
ACK Buffer2^QP_AW (ACK MERGE)N/AN/A
CNP Buffer深度 8 (CNP MERGE)N/AN/A
初始 Credit由 CBFC 配置2048由 CBFC 配置

Buffer 资源总结图

编辑源文件: drawio/3_buffer_architecture.drawio

TX 方向:

3.1 TX 路径 Buffer 总览

页面: "3.1 TX Path Buffers"

RX 方向:

3.2 RX 路径 Buffer 总览

页面: "3.2 RX Path + Watermark"


重传机制 (Retry)

三层错误保护体系

4.1 三层错误保护体系

编辑源文件: drawio/4_retry_mechanisms.drawio · 页面: "4.1 Three Error Levels"

L2: Go-Back-N E2E 重传详解

触发条件: 接收方检测到 PSN 不连续 (丢包或乱序)

重传行为:

4.2 TX Slot 状态机

编辑源文件: drawio/4_retry_mechanisms.drawio · 页面: "4.2 Go-Back-N State Machine"

Go-Back-N 行为:

  • 接收方发现 PSN 缺口时, 发送 NAK (Opcode=01, NAK flag)
  • 发送方收到 NAK 后, 将该 QP 所有 WAIT_ACK 状态的 Slot 回退到 WAIT_GRANT
  • 从最早未确认的包开始重新发送
  • 重传计数器递增, 超过阈值 (RETRY_TIMER_CFG) 则上报中断

ACK MERGE 机制: 接收方对多个连续 PSN 的 ACK 合并为一个批量 ACK 发送 (4 组/轮), 减少 ACK 报文开销。ACK MERGE 行为在上图的状态机中体现。

FACK (Forced ACK):

  • 发送方在报文 RH 中设置 FACK=1
  • 接收方收到后尽快回复 ACK, 不等待 ACK MERGE 合并
  • 用于延迟敏感的事务

建模参数:

参数影响
PSN 宽度12-bit (0~4095)PSN 回绕周期
最大 OST512 (TYPE1)发送窗口大小, 影响吞吐
最大 QP1024并发连接数
最大 Payload1344 字节单包数据量
重传阈值可配置 (RETRY_TIMER_CFG)超限后进入 fatal 状态
ACK MERGE 轮询4 组/轮ACK 延迟

L3: PAXI DA 级错误恢复

当 RC Link 重传超限时, PAXI 执行 DA 级隔离:

4.3 PAXI DA 级错误恢复流程

编辑源文件: drawio/4_retry_mechanisms.drawio · 页面: "4.3-4.4 DA Recovery + QP Fatal"

当某个 QP 重传次数达到阈值, 需要完整的 QP 重建 (流程图见 4.3 节):

  • 上报 QP Fatal 中断
  • 清除该 QP 的所有 Slot 状态
  • 通知上层软件重新初始化 QP (包括 Credit 重新协商)

流控机制

流控体系全景

5.1 流控体系全景

编辑源文件: drawio/5_flow_control.drawio · 页面: "5.1 Flow Control Overview"

CBFC 详细行为

CBFC 是 SUE2.0 主要的端到端流控机制。

初始化:

MAC 通过 MAC2TX_CBFC_RST_I[31:0] 配置各 VC:
- 低 8bit: 指示哪些 VC 需初始化 (可同时或逐个)
- 配置内容: credit_size, credit_limit (CL), pkt_ovhd
- 建议在 RC Link 工作前完成

稳态工作:

5.2 CBFC 稳态工作流程

编辑源文件: drawio/5_flow_control.drawio · 页面: "5.2 CBFC Detail"

VC 到物理流量映射:

7 路物理流量 <-> 8 个 VC (一一映射, 不可共享)

TYPE1_REQ Bank0 (QPID[1:0]=00) -> type1_req_bank0_cbfc[2:0] -> VCx
TYPE1_REQ Bank1 (QPID[1:0]=01) -> type1_req_bank1_cbfc[2:0] -> VCy
TYPE1_REQ Bank2 (QPID[1:0]=10) -> type1_req_bank2_cbfc[2:0] -> VCz
TYPE1_REQ Bank3 (QPID[1:0]=11) -> type1_req_bank3_cbfc[2:0] -> VCw
TYPE1_ACK + CNP -> type1_ack_cbfc[2:0] -> VCa
TYPE2 -> type2_cbfc[2:0] -> VCb
TYPE3 -> type3_cbfc[2:0] -> VCc

高级特性:

特性行为适用范围
动态下限 (dyn_uf_limit_cbfc_en)Credit 低于水线但仍大于最大包长时, 允许再发一个包仅 TYPE1 REQ
软件流控 (software_ctrl_cbfc_vc_status)对应 VC 位=0: 强制停止; 位=1: 允许所有 VC
全局禁用 (stop_cbfc_en)最高优先级, 禁用所有 CBFC全局

PFC 行为 (CBFC 的替代方案)

5.3 PFC 触发与解除流程

编辑源文件: drawio/5_flow_control.drawio · 页面: "5.3 PFC Behavior"

注意: 即使使用 CBFC 模式, RX 方向的反压信号 TX_PFC_REQ_O[7:0] 仍被复用 (CBFC 和 PFC 共用该接口)。

Per-QP 速率控制

5.4 Per-QP 速率控制

编辑源文件: drawio/5_flow_control.drawio · 页面: "5.4 Rate Control + Arbitration"

TYPE2 也支持独立速率控制, 通过 SET_TYPE2_RATE_VLD_I 接口设置。

反馈信号给上游:

  • CC_TYPE1_QP_EN_SET_O / CC_TYPE1_QP_EN_CLR_O: 通知上游 PAXI 某 QP 是否可发送
  • 防止上游在 QP 被限速时持续灌入数据, 导致 RC Link 内部 Buffer 被占满而阻塞其他 QP

TYPE1 发送仲裁

TYPE1 发送仲裁流程与速率控制在上图 (5.4 节) 中统一展示。 arbitration 顺序: Slot FIFO -> Bank 轮转 -> Rate Gate -> CBFC Gate。

CNP MERGE (拥塞通知过滤)

5.6 CNP MERGE 拥塞通知过滤

编辑源文件: drawio/5_flow_control.drawio · 页面: "5.6-5.7 CNP Merge + Multicast FC"

多播双重流控

TYPE2 多播报文需同时满足两层流控 (流程图见 5.6 节):

  • CBFC 端到端 Credit: 保证对端接收方 buffer 不溢出
  • 多播 MAC TX Credit: 保证本地 MAC 多播复制 buffer 不溢出
  • 两者均通过才允许发送; 多播 Credit 复用 CBFC 控制器模块

建模关键参数汇总

性能相关参数

参数默认/典型值影响
MAC 带宽400G / 200G链路峰值吞吐
AXI-to-AXI 延迟150ns @ 400G (C2C, Mode 0: P2P 直连无 NoC)最低端到端延迟基准 (含 NoC 时更高)
TYPE1 最大 Payload1344 字节单包有效数据量, 影响帧效率
TYPE1 OST512RC Link 发送窗口, 影响流水线吞吐
TYPE1 Overcredit512OST 之外的额外缓冲, 影响吞吐上限
TYPE2 OST16多播并发度
PAXI W/R OST256PAXI Core 层最大在途事务数 (< RC Link OST)
PAXI W/R MPS4096BPAXI Core 层单次 burst 最大尺寸
QP 数量1024并发通信端点数
VC 数量8流量隔离通道数
Bank 数量4 (TYPE1 REQ)REQ 仲裁公平性粒度
时钟频率最大 1GHz (RC Link)处理吞吐上限

Buffer 容量参数

参数公式/说明
REQ/RSP MEM32 帧 + 2 RTTRTT 取决于链路配置
MUL MEM8 帧 + 2 RTT多播 Buffer 较小
高水位默认N 帧 + 1 RTTN=32 (REQ/RSP) 或 8 (MUL)
AXI 通道 Buffer16 MPS/通道5 个独立通道
AR/B TX 打包深度16最多 16 事务合并
TX_BUF_WM可配置AR/B 打包水位
TX_BUF_ACC_WT可配置AR/B 打包超时

流控参数

参数范围说明
credit_size32/64/128/256/1024/2048 字节Credit 粒度
credit_limit (CL)可配置per-VC 最大 Credit 数
CBFC_NUM 位宽15 bit (最大 32767)Credit 计数器上限
credit_uf_limit1~7Credit 下限 (禁止配 0)
pkt_ovhdsigned 10-bit每包额外开销, 影响 credit 消耗: ceil((payload + pkt_ovhd) / credit_size)
CC_WINDOW4.096~65.536 us速率控制时间窗口
length_thrper-QP 配置每窗口最大发送字节数
Channel Weight REQ/RSP默认 0x0008通道仲裁权重
Channel Weight MUL默认 0x0100多播权重 (较高)
PFC XON/XOFF (TYPE1/TYPE3)depth/2, depth*3/4PFC 模式水位线公式
PFC XON/XOFF (ACK)0x80, 0xC0 (固定)ACK 通道固定阈值

重传参数

参数说明
PSN 宽度12-bit序列号空间 0~4095
retry_counter4-bit [3:0]常规 Go-Back-N 重传计数
rnr_retry_counter4-bit [7:4]RNR (Receiver Not Ready) 重传计数
重传次数阈值可配置 (RETRY_TIMER_CFG)任一计数器超限进入 fatal
ACK MERGE 深度2^QP_AWACK 合并 Buffer
ACK MERGE 轮询4 组/轮调度粒度; 最大额外延迟 = QP_NUM/4 个检查周期
CNP MERGE 深度8CNP 过滤 Buffer
CNP MERGE 时间窗口TIMER_THR_I (可配置)重复 CNP 过滤间隔
多播超时默认 0x03d0_9000 cycles~64M cycles

报头开销 (影响有效带宽)

格式报头组成估算开销
StandardMAC(14B) + IP(20B) + UDP(8B) + RH(8B) + 可选ICRC(4B)~50-54B
AFH_GEN1MAC(14B) + 可选TC + RH(8B)~22-30B
AFH_GEN2_16b压缩MAC + RH(8B)~16-20B
AFH_Lite压缩MAC + TC区分TYPE最小

有效带宽 = 链路带宽 x (Payload / (Payload + Header + FEC开销))


序列保证与限制

无顺序保证的场景

  1. 同一地址的读写: PAXI 不保证同地址读写事务的顺序
  2. 不同 DA 的事务: 发往不同目标的事务无顺序保证
  3. 不同 VC 的数据: 跨 VC 无序列保证

有顺序保证的场景

  1. 同 QP 的 TYPE1 报文: PSN 保证同一 QP 内的包顺序
  2. 同 VC 同 DA: 在同一 VC 通道内发往同一 DA 的事务保持顺序
  3. Go-Back-N 重传: 重传时从错误点严格按序重发

建模影响

上层软件/NoC 需要自行管理顺序依赖。建模时如果需要保序, 必须将相关事务映射到同一 QP 和同一 VC。