AMD Versal CPM5 QDMA Gen4x8 ST Only Performance Design CED示例

描述

本文作者:AMD 工程师 Padmini Boreddy

一文看懂 AMD Vivado 2024.1 中 “AMD Versal CPM5 QDMA Gen4x8 ST Only Performance Design” CED 示例。

本篇博文演示了在AMD Vivado Design Suite 2024.1 中生成 CPM5_QDMA_Gen4x8_ST_Only_Performance_Design 并使用为 QDMA 提供的驱动程序来运行性能测试的步骤。这是 AMD Versal 自适应 SoC CPM QDMA 端点 (EP) 设计中可用的预设之一。

对于 PL PCIe IP,用户可以使用“Open Example Design”选项来生成示例设计。

此示例设计对于 CPM5 PCIe 不适用;因此改为通过 AMD CED Store GitHub 仓库提供示例设计。如需了解有关 AMD CED Store 的更多详细信息,请访问以下链接:

https://github.com/Xilinx/XilinxCEDStore

注释:性能数据取决于硬件和软件(系统调谐、使用的队列数量等)。如果所得到的性能数据与您的预期不符,请联系您的销售代表或 AMD 技术支持。

生成 Versal 自适应 SoC CPM5 Gen4x8 QDMA 端点设计

步骤 1:启动 Vivado,然后转至“Tools -> Vivado Store”。

soc

步骤 2:下载最新版本的目录:

选择“Example Designs-> PCIe -> Versal CPM QDMA EP Design”,然后单击“Update”。

socsoc

步骤 3:从“Quick Start”页面中选择“Open Example Project”。

soc

步骤 4:如下截屏所示,访问 Versal CPM QDMA 端点设计:

soc

步骤 5:根据所选开发板会自动选择“CPM_Config”,针对 VCK190 会选中 CPM4,针对 VPK120 则选中 CPM5。选择 Versal VPK120 评估平台。

soc

步骤 6:对于 CPM5_Preset,请选择

 CPM5_QDMA_Gen4x8_ST_Only_Performance_Design。

这是含“Streaming”选项的 Versal CPM5 Gen4x8 QDMA 端点设计。其中已启用 4PF、240VF 和 SRIOV。

soc

步骤 7:复查“Project Summary”,确认所选部件和产品家族正确。

soc

示例设计架构

在其他正常工作的示例设计中,用户逻辑功能要求在用户逻辑专用寄存器中配置包数、包长度和队列 ID,并且需要通过配置特定寄存器来触发包生成。

如需了解更多详情,请参阅本文:运行 Versal 自适应 SoC CPM5 PCIE Gen4x8 QDMA CED 示例设计 :

https://adaptivesupport.amd.com/s/article/000034687?language=zh_CN

ST 性能参考设计包含仅限 AXI4-Stream 的包生成器(适用于 C2H 方向),以及同时适用于 C2H 方向和 H2C 方向的性能测量工具。当存在可用描述符时,该参考设计会生成已知的数据模式(时间戳),并在 C2H 方向上发送用户指定的包长度。此数据模式可由 dma-perf 应用环回到 H2C 方向,并进行性能测量。

以下截屏显示了 CED 的“Sources”层级。cpm_pcie_qdma_ep_wrapper 模块框图包括 cpm_pcie_bridge_ep 块、用于 AXI4-Stream 模式生成器和检查器逻辑的用户控制逻辑,以及实现 C2H 和 H2C 性能计数器逻辑的 axi_st_module。

soc

以下是“cpm_pcie_qdma_ep.bd”的模块框图:

soc

CPM5 配置

生成的 Versal CPM5 QDMA Gen4x8 ST Only Performance Design 配置如下:

Gen4x8 DMA 模式

PCIE 控制器 1 配置为含 AXI4-Stream 接口的 QDMA

启用 4PF、240VF 和 SRIOV

内部模式

注释:在此 CED 的 2023.2 及更低版本中,VF 的地址映射存在已知问题。

这在 2024.1 版中已得到修复。如果使用 2023.2 或更低版本,需要使用下图所示的数值更新“PCIe : BARs”选项卡和“SRIOV VF BARs”选项卡,以便在 VF 器件上执行 C2H 和 H2C 传输事务。

soc

soc

soc

soc

soc

soc

soc

soc

soc

PS PMC 配置

soc

soc

硬件测试

更新 CPM5 IP 配置(如上所述)后,保存设计,然后单击“Generate Device Image”。

将 VPK120 评估板连接到主机 PC。

使用 CED 生成的 PDI 文件对 FPGA 进行烧录。

重新启动主机 PC。

使用“lspci”命令检查端点器件检测情况。

soc

QDMA 驱动程序安装

运行以下命令。如需了解更多详情,请参阅:

https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/build.html

soc

使用 dma-ctl 列出系统中可用的功能,请参阅:

https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#device-management-commands

dma-ctl dev list

soc

SOLUTIPF 上的传输事务

队列分配

soc


如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#allocate-the-queues-to-a-function

soc

为 C2H 串流模式测试添加和启动队列

如需了解更多信息,请参阅:

https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#add-a-queue


https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#start-a-queue

soc

soc

运行不同传输大小的串流模式 C2H(从设备发出 DMA )测试

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_from_device.html


与 CPM QDMA 端点功能测试设计不同,用户无需配置任何寄存器即可初始化数据传输。CED 的 `user_control` 模块会在内部产生报文。

soc

为 H2C 串流模式测试添加和启动队列

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#add-a-queue


https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#start-a-queue

soc

soc

运行不同传输大小的串流模式 H2C(DMA 到设备)测试

如需了解更多信息,请参阅 :

https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_to_device.html
 

soc

运行 dma-perf 应用

“dma-perf”是一款定制工具,用于收集单向和双向流量的性能指标。

可使用“fio”等标准 I/O 工具,通过字符设备接口执行 I/O 操作。但是,大多数工具仅限于每次发送或接收 1 个包,并等待该包处理完成,因此无法使驱动程序或硬件保持足够繁忙以进行性能测量。尽管 fio 也支持异步接口,但它不会在并行轮询完成的同时持续提交 I/O 请求。

“dma-perf”工具会利用 libaio 库提供的异步功能。通过使用 libaio,应用程序可向驱动程序提交 I/O 请求,驱动程序会立即将控制权返回给调用方(即,非阻塞)。完成通知是单独发送的,因此应用程序随后即可轮询完成情况,并在收到完成通知后释放缓冲区。


如需了解有关 dma-perf 工具的更多信息,请参阅 QDMA Linux 内核参考驱动程序用户指南,本指南托管于:

https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmaperf.html

用于串流模式测试的 dma-perf 配置文件包含在 Linux 参考内核驱动程序源文件内,这些源文件托管于 https://github.com/Xilinx/dma_ip_drivers 的 QDMA/linux-kernel/apps/dma-perf/dmaperf_config 目录下:

C2H 单向:st-c2h-pfetch1.zip

H2C 单向:st-h2c.zip

C2H 和 H2C 双向:st-bi.zip

测试用例 - 1:bi_st_1_1_pfetch-cmptsz1_4096.txt

作为 dma-perf 工具输入的配置文件为测试设置了以下标志:

队列的模式和方向 - 串流,双向

PCI 总线:61,器件 - 00,功能 - 0 (PF),每个方向单个队列 (q_range) - 0 : 0

包数 - 64,每个包大小 - 4096 字节

soc

使用以下命令搭配 bi_st_1_1_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

soc

qdma-perf 工具负责:

以 H2C 方向的 idx 0 添加和启动 1 个队列

以 C2H 方向的 idx 0 添加和启动 1 个队列

C2H 和 H2C 数据传输

停止并删除已添加的 C2H 和 H2C 队列

收集并显示写入 (H2C) 和读取 (C2H) 性能结果

测试用例 - 2:bi_st_1_4_pfetch-cmptsz1_4096.txt

作为 dma-perf 工具输入的配置文件为测试设置了以下标志:

队列的模式和方向 - 串流,双向

PCI 总线:61,器件 - 00,功能 - 0 (PF),每个方向 4 个队列 (q_range) - 0 : 3

包数 - 64,每个包大小 - 4096 字节

soc

使用以下命令搭配 bi_st_1_4_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

soc

qdma-perf 工具负责:

以 H2C 方向的 idx 0-3 添加和启动 4 个队列

以 C2H 方向的 idx 0-3 添加和启动 4 个队列

C2H 和 H2C 数据传输

停止并删除已添加的 C2H 和 H2C 队列

收集并显示写入 (H2C) 和读取 (C2H) 性能结果

VF 上的传输事务

启用 VF 器件

以下命令显示了为 1 个 PF 器件 (BDF: 61:00.0) 启用 2 个 VF 的操作:

soc

以下命令列出了这些 PF 器件和 VF 器件:

soc

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#instantiate-the-virtual-functions

soc

lspci 命令列出了启用的 PF 器件和 VF 器件,如下所示:

soc

预留 VF 的队列

soc

“dma-ctl dev list”给出了预留的队列的数量。

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#reserve-the-queues-for-vfs

soc

在 VF 上添加和启动双向队列以执行 C2H 和 H2C 串流模式测试

soc

soc

运行包大小为 64 字节的 C2H 和 H2C 测试

soc

在 VF 器件上运行 dma-perf 应用

作为 dma-perf 工具输入的配置文件 vf_bi_st_1_1_pfetch-cmptsz1_4096.txt 为测试设置了以下标志:

队列的模式和方向 - 串流,双向

PCI 总线:61,器件 - 02,功能 - 0 (VF),每个方向单个队列 (q_range) - 0 : 0

vf_perf = 1

包数 - 64,每个包大小 - 4096 字节

soc

使用以下命令搭配 vf_bi_st_1_1_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

soc

qdma-perf 工具负责:

以 H2C 方向的 idx 0 添加和启动 1 个队列

以 C2H 方向的 idx 0 添加和启动 1 个队列

C2H 和 H2C 数据传输

停止并删除已添加的 C2H 和 H2C 队列

收集并显示写入 (H2C) 和读取 (C2H) 性能结果

AMD 自适应 SoC 及 FPGA 中文技术支持社区

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分