3. 高速网络协议与加速需求分析

在 Agilex 平台上做网络加速,第一步不是写 RTL,而是把“协议—接口—指标”三件事对齐。以太网、PCIe、Interlaken 这三类协议分别对应不同的数据路径位置:以太网是外部链路入口,PCIe 是主机侧交互通道,Interlaken 是芯片间或板内高带宽互连。它们对加速的需求并不相同,混在一起谈“带宽”和“时延”很容易得出错误结论。

三类协议在 Agilex 上的角色定位

以太网侧关注的是 MAC/PCS 层处理、包解析、流分类、时间戳与队列调度。以 100GbE 为例,单条链路的线速约为 100 Gbps,扣除前导码、IFG 和 FCS 后有效载荷约 98.9 Gbps;若按最小 64 字节帧计算,包速率可达约 148.8 Mpps。这个数字决定了加速逻辑必须在每个时钟周期处理多个字节,否则无法跟上线速。Agilex 的硬核以太网 MAC 与 PCS 可以承担物理层和部分链路层工作,但流表查找、ACL、隧道封装、时间戳插入等仍需在 FPGA 逻辑或 NoC 中完成。

PCIe 侧关注的是主机与加速卡之间的 DMA 效率、描述符管理、地址转换和中断聚合。以 PCIe Gen4 x16 为例,理论带宽约 32 GB/s(单向),实际可用带宽受 TLP 开销、MPS、读写比例影响,通常为理论值的 70%~85%。如果加速卡需要把 100GbE 流量全部送到主机,PCIe 就会成为瓶颈;因此更合理的做法是在卡内完成过滤、聚合或协议转换,只把必要数据交给主机。

Interlaken 侧关注的是芯片间高带宽、低开销互连。它采用多 lane 并行、64/67 编码和通道化设计,适合在 Agilex 与另一颗 FPGA 或交换芯片之间传输大块数据。Interlaken 的加速需求集中在通道对齐、CRC 校验、重传缓冲和流控信用管理上,通常与以太网处理链配合使用。

Agilex 三类高速协议加速路径与关键指标 以太网 100GbE MAC / PCS / FEC 包解析 · 流分类 · 时间戳 ACL · 隧道封装 · 队列调度 线速 100 Gbps / 148.8 Mpps 时延目标:< 2 μs(卡内) PCIe Gen4 x16 DMA · 描述符 · ATS/PASID 中断聚合 · MSI-X · 地址转换 主机内存读写 · 队列对 理论 32 GB/s / 实际 22~27 GB/s 时延目标:< 1 μs(DMA 往返) Interlaken 多 Lane · 64/67 编码 通道对齐 · CRC · 重传 流控信用 · 突发缓冲 单 Lane 10.3125 Gbps / 可聚合 抖动目标:< 100 ps(lane 间) 包/流 块数据 Agilex NoC / FPGA 逻辑加速层 流表查找 · 包修改 · 队列管理 · 时间戳 · 聚合 · 重传缓冲 关键指标定义与判据 带宽 单位时间有效载荷 判据:≥ 线速 95% 时延 入口到出口单程时间 判据:卡内 < 2 μs 抖动 时延变化范围 判据:< 100 ns(P99) 丢包/重传 缓冲溢出或 CRC 错 判据:0 丢包

带宽、时延、抖动:定义与工程判据

带宽通常指单位时间内成功传输的有效载荷量,而不是线路速率。以 100GbE 为例,线速 100 Gbps 是物理层速率,扣除以太网帧头、IFG 和前导码后,有效带宽约 98.9 Gbps;如果叠加 VLAN、MPLS 或隧道封装,有效载荷还会进一步下降。工程上判断加速是否达标,应看“有效载荷带宽”是否达到线速的 95% 以上,而不是只看接口是否 link up。

时延指一个数据单元从进入加速逻辑到离开加速逻辑所经历的时间。对于卡内处理,典型目标是在 2 μs 以内;对于经过 PCIe 到主机的往返,目标通常在 1 μs 量级。时延的测量点必须明确:是在 MAC 接口处打时间戳,还是在 DMA 描述符完成处打时间戳。参照点不同,数值差异可能达到数百纳秒。

抖动指时延的变化范围,通常用 P99 或 P99.9 分位数衡量。网络加速场景中,抖动主要来自队列排队、仲裁冲突、DMA 突发和重传缓冲。一个常见的工程判据是:在 100GbE 线速下,P99 抖动应小于 100 ns;如果超过 1 μs,说明队列深度或仲裁策略需要调整。

加速需求如何落到 Agilex 资源上

以太网加速的核心是把“每包处理”变成“流水线处理”。以 100GbE 为例,若时钟为 400 MHz,则每周期需要处理 250 bit,约 32 字节。这意味着包解析、流表查找和包修改必须在一个或两个周期内完成,否则需要多级流水。Agilex 的 NoC 可以把以太网 MAC、DMA 和 FPGA 逻辑连接起来,减少跨时钟域和总线仲裁带来的抖动。

PCIe 加速的核心是减少主机侧 CPU 参与。使用 MSI-X 中断聚合、描述符预取和 ATS 地址转换,可以把每次 DMA 的固定开销从数百纳秒降到几十纳秒。如果加速卡需要处理 100GbE 流量,建议在卡内完成流分类和聚合,只把统计结果或必要载荷通过 PCIe 上传,避免 PCIe 成为瓶颈。

Interlaken 加速的核心是通道对齐和重传管理。多 lane 之间 skew 必须控制在 100 ps 以内,否则接收侧无法正确重组。CRC 错误触发重传时,重传缓冲深度决定了恢复时间;缓冲太浅会导致丢包,太深会增加时延。工程上通常根据链路误码率和最大突发长度来估算缓冲深度。

在 Agilex 平台上做协议加速,建议先明确三个问题:数据从哪个接口进、从哪个接口出、中间需要做哪些有状态处理。这三个问题决定了带宽、时延和抖动的预算分配,也决定了 NoC 和 FPGA 逻辑的资源划分。

一个可参考的指标预算示例

假设一个 100GbE 到 PCIe Gen4 x16 的加速卡,目标是在卡内完成流分类和聚合,只把聚合结果上传主机。可以按以下方式分配预算:以太网 MAC/PCS 引入约 200 ns 时延,包解析和流表查找约 300 ns,聚合缓冲约 500 ns,DMA 和 PCIe 传输约 800 ns,总时延约 1.8 μs,满足卡内 2 μs 的目标。带宽方面,PCIe 实际可用约 22 GB/s,对应约 176 Gbps,足以承载 100GbE 的聚合结果。抖动方面,聚合缓冲深度设为 4 KB,在 100GbE 下约对应 320 ns 的排队时间,P99 抖动可控制在 100 ns 以内。

处理阶段 典型时延 主要影响因素 优化方向
以太网 MAC/PCS 约 200 ns FEC 解码、时钟域 crossing 使用硬核 MAC,减少逻辑级数
包解析与流表 约 300 ns 查找深度、流水级数 使用 TCAM 或哈希分级查找
聚合缓冲 约 500 ns 缓冲深度、读写仲裁 按突发长度动态调整深度
DMA 与 PCIe 约 800 ns TLP 开销、描述符获取 MSI-X 聚合、描述符预取

需要强调的是,上述数值是教学示例中的合理假设,不是实测结果。实际项目中应通过 Agilex 的片上调试工具或外部测试仪测量每个阶段的时延和抖动,再根据测量结果调整流水线级数和缓冲深度。只有把协议角色、指标定义和资源分配三者对齐,后续的 RTL 设计和验证才有明确的判据。