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 校验、重传缓冲和流控信用管理上,通常与以太网处理链配合使用。
带宽、时延、抖动:定义与工程判据
带宽通常指单位时间内成功传输的有效载荷量,而不是线路速率。以 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 错误触发重传时,重传缓冲深度决定了恢复时间;缓冲太浅会导致丢包,太深会增加时延。工程上通常根据链路误码率和最大突发长度来估算缓冲深度。
一个可参考的指标预算示例
假设一个 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 设计和验证才有明确的判据。