提升 PS 中的性能 - 2023.2 简体中文

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

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

Versal 器件处理器系统 (PS) 中,您可使用以下互连流量类型来控制服务质量 (QoS):低时延数据路径和高吞吐量数据路径。欲知详情,请访问此链接以参阅 Versal 自适应 SoC 技术参考手册(AM011) 中的相应内容。

下图显示了影响 PS 架构的潜在争用点。

图 1. PS 架构争用点

考量处理器系统和存储器子系统性能时,首先要思考的是处理器性能、其时钟频率、存储器层级、高速缓存以及更常用的内部和外部存储器功能。虽然这些考虑因素都很重要,但掌握处理器系统架构也同样重要。

外部共享 DDR 存储器子系统和片上 OCM 是 Versal 器件中存在的 2 个主要存储器子系统。访问存储器子系统的主控制器可位于 PL 或 PS 中。PL 主控制器在遍历 PS 以访问 OCM 或外部 DDR 存储器时可能对 PS 主控制器性能产生显著影响。

PL 主控制器流量布线方式为:

  • PL 主控制器(软核 IP)通过 NoC NMU 连接到 NoC
  • PL 主控制器连接到 PS AXI 接口
  • PL 主控制器连接到 PS ACP

AI 引擎和 CPM 同样可能需要通过 PS 互连来对流量进行布线,请务必关注流量的多种布线方式。

内部 PS 主控制器(APU、RPU、DMA 等)会生成流量,并利用连接到 NoC 的 PS 互连。

  • PL 到 PS 接口直连(S_AXI_FPD、S_ACE_LITE_FPD 和 S_AXI_LPD)
    • S_AXI_FPD(位于 FPD 内)采用虚拟连接且无相干关系
    • S_ACE_LITE_FPD(位于 FPD 内)采用虚拟连接且有相干关系
    • S_AXI_LPD(位于 LPD 内)可配置为物理或虚拟连接且有相干关系
  • NoC 到 PS 接口(NoC_FPD_AXI0、NoC_FPD_AXI_1、NoC_FPD_CCI_0、NoC_FPD_CCI_1,全部位于 FPD 内)
    • NoC_FPD_AXI0 和 NoC_FPD_AXI1 采用虚拟连接且无相干关系
    • NoC_FPD_CCI_0 和 NoC_FPD_CCI_1 采用虚拟连接且有相干关系

了解并利用主控制器到外部 DDR 存储器或 OCM 的多种连接方式对于 PS 互连布线最优化和避免 PS 互连拥塞具有至关重要的意义。

例如,选择使多个主控制器的流量穿过 CCI 的布线方式对于性能不利,因为仅支持将最多 4 个 CCI500 AXI4 主端口连接到 4 个 NoC NMU。在下图中,这些主端口是 M2、M3、M4 和 M5。

图 2. 连接到 NoC NMU 的主端口

SMMU 和 CCI 同样可能影响性能。这两者各自都具有共享内部资源,可能导致增加时延从而降低吞吐量。如要通过最优化来提升性能,并且没有虚拟化/隔离和相干性要求,则不建议使用 CCI500 和 SMMU。

流量调节机制可在源(即 NoC 开关中的 NMU)和目标从接口 (MC) 中设置。您可使用这些机制来应用所需的 QoS 方案。

PS 互连不支持虚拟通道,因此必须使用物理分隔。

在入口方向(外部主控制器到 PS 从设备),每个 NSU 都支持单一流量类,因此不同的流量类必须通过不同物理端口进入 PS。同样,在出口方向,内部 PS 互连网络将承载不同流量类通过不同物理通道进入连接到水平 NoC 的 NMU。例如,4 条 CCI 到 NoC 通道中的 2 条可承载 LL(上图中的 M2 和 M3),另 2 条则可承载 BE(上图中的 M4 和 M5)。

要支持不断增长的性能需求,同时使能耗保持在可接受的程度,需要克服重重困难。诸如 Versal 器件之类的复杂器件可通过微调来达成最佳单位功耗性能

为了满足这些现代化应用的性能要求,请执行下列操作:

  • 使用业界标准的基准测试对含有 NoC-DDR 的 PS 进行基准测试
  • 使用通用工具执行性能分析时,运行专属算法

PS 性能可基于实时非侵入性措施进行调优,这些措施用于在执行应用时收集性能数据。基于收集的统计数据,可采用频率缩放和任务调度等技巧进行系统调优,在不牺牲性能的前提下降低功耗。

APU、RPU 和 NoC 中的“Performance Monitor Units”(性能监控单元)可提供宝贵数据,用于了解 CPU 使用情况、高速缓存未命中、分支错误预测、查找代码执行热点等。

对于用户交互和设计,在 APU 中设置最多 6 个性能计数器,在 RPU 中设置最多 6 个计数器,用于读取目标事件以获取运行时的处理器性能信息。除了 6 个性能计数器外,每个处理器的 PMU 还可提供专用周期计数器。

对于 APU,可使用 AMD Linux 工具链 PetaLinux 创建 Linux 镜像,通过 Perf(性能)应用提供对 PMU 计数器的访问,用于对工具进行剖析和追踪。

对于 RPU,可实现独立应用来启用其 PMU 计数器。将来计划通过 RPU 独立 BSP 来提供支持。

最后,AMD ChipScoPy 可提供 Python API,通过 JTAG 访问寄存器(例如,性能计数器),并提供了用于显示 NoC 性能的应用示例。