调试步骤 - 2023.2 简体中文

Versal 自适应 SoC 系统集成和确认方法指南 (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 简体中文

性能瓶颈可能会在各处出现。大部分问题均可分类为 4 个不同调试部分:

主控制器
启动传输的器件。
  • 请检查其功能。方法是计算 AXI 数据总线宽度 * 该主控制器的 AXI 频率。
  • 如果 CPM 作为主控:
    • 请检查它是同时使用 2 个 AXI4-MM 端口,还是仅使用单个 AXI4-MM 端口。计算通过这些端口的聚合带宽。
    • 检查 CPMTOPSWCLK 频率。CPM AXI4-MM 端口位宽固定为 128 位。
    • 检查流量模式。确保数据包按传输 ID(可以是队列 ID 或通道 ID)拆分。请勿拆分使用相同 AXI4 ID 的数据包。
从设备
接收传输的器件。
  • 请检查其功能。方法是计算 AXI4 数据总线宽度 * 该从设备的 AXI4 频率。
  • 如果 CPM 用于接收传输:
    • CPM 仅有 1 个 AXI4-MM 端口。计算通过此端口的带宽。
    • 检查 CPMTOPSWCLK 频率。CPM AXI4-MM 端口位宽固定为 128 位。
    • 检查流量模式。从端口用于访问内部寄存器(在内部使用 AXI4‑Lite 接口且有 1 项未完成的 AXI4 传输事务),且用于对 PCIe 链路执行总线主控(读写)操作。请勿将这些传输事务目标进行交织,以免发生队头阻塞。
互连
数据包必须经过的所有互连和开关。
  • 分析传输路径中的所有互连。包括 NoC、CCI-500、SmartConnect 等。请检查其吞吐量能力。方法是计算 AXI4 数据总线宽度 * 这些互连的 AXI4 频率。
  • 检查 AXI4 未完成的传输事务设置。系统时延越高或者 AXI4 数据包越小,则此数值应越高,以免信用值不足。
  • 检查流量模式。确保“慢”数据路径和“快”数据路径不会交织,以免发生队头阻塞。
外部/软件
超出 AMD 器件范围的因素。
软件/驱动/应用
软件和驱动通常比硬件慢得多。为了最大程度提升吞吐量,您必须确保传输期间软件具有最低“维护”要求:
  • 最大程度提升可用的描述符队列环大小或描述符链大小。
  • 最大程度提升传输大小(包括主机的最大有效载荷大小和最大读取请求大小设置)。
  • 最大程度提升队列和 DMA 通道数量。
  • 最大程度减少中断并避免过度使用轮询模式。
  • 最大程度减少指针或硬件更新。
  • 避免从软件执行总线主控。交由硬件来执行 DMA 或总线主控。
  • 避免过度从用户复制到内核层级存储器。指定主机上的某一存储器用于传输。
开关/IOMMU/处理器链路
当传输事务进出主机时,有各种常用模块沿这些路径传输,这可能导致时延增加,从而对系统性能产生不利影响:
  • 请选择包含 PCIe 开关最少的路径。分析可用 PCIe 插槽及其总线拓扑结构。确保软件或驱动在连接到该 PCIe 总线的 CPU 上运行。使用直接连接到该 CPU 的存储器器件(磁盘、DDR 存储器等)。
  • 所选 CPU 和 PCIe 开关应具有较多 PCIe 信用值,或者可使用扩展 PCIe 标签。这样会显著提升未完成的 PCIe 数据包数量,因此需要对主机的高时延进行补偿。企业级系统传输的值通常比桌面系统或工作站系统更高。
  • 确保有效的 PCIe 插槽和 PCIe 开关的链路宽度和速度与您的器件相匹配。验证 PCIe 链路是否已训练至最优链路速度和宽度。
  • 在多功能器件中通常需要 IOMMU,但它会增加用于转换这些 PCIe 地址的时延。如非必要,请避免依赖 IOMMU。
  • PCIe 和 CPU 上禁用低功耗状态。虽然这些功能能够节省功耗(在大型数据中心环境内尤其如此),但重复进出这些功耗状态可能导致减缓传输速度并增加时延。
注释: 如需了解有关调试的更多信息,请参阅 GitHub 中的 PCIe Debug K-Map。