一文看懂AMD Vivado2024.1 中 “AMD VersalCPM5 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”。

步驟 2:下載最新版本的目錄:
選擇“Example Designs-> PCIe -> Versal CPM QDMA EP Design”,然后單擊“Update”。


步驟 3:從“Quick Start”頁面中選擇“Open Example Project”。

步驟 4:如下截屏所示,訪問 Versal CPM QDMA 端點設計:

步驟 5:根據所選開發板會自動選擇“CPM_Config”,針對 VCK190 會選中 CPM4,針對 VPK120 則選中 CPM5。選擇 Versal VPK120 評估平臺。

步驟 6:對于 CPM5_Preset,請選擇
CPM5_QDMA_Gen4x8_ST_Only_Performance_Design。
這是含“Streaming”選項的 Versal CPM5 Gen4x8 QDMA 端點設計。其中已啟用 4PF、240VF 和 SRIOV。

步驟 7:復查“Project Summary”,確認所選部件和產品家族正確。

示例設計架構
在其他正常工作的示例設計中,用戶邏輯功能要求在用戶邏輯專用寄存器中配置包數、包長度和隊列 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。

以下是“cpm_pcie_qdma_ep.bd”的模塊框圖:

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 傳輸事務。









PS PMC 配置


硬件測試
更新 CPM5 IP 配置(如上所述)后,保存設計,然后單擊“Generate Device Image”。
將 VPK120 評估板連接到主機 PC。
使用 CED 生成的 PDI 文件對 FPGA 進行燒錄。
重新啟動主機 PC。
使用“lspci”命令檢查端點器件檢測情況。

QDMA 驅動程序安裝
運行以下命令。如需了解更多詳情,請參閱:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/build.html

使用 dma-ctl 列出系統中可用的功能,請參閱:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#device-management-commands
dma-ctl dev list

SOLUTIPF 上的傳輸事務
隊列分配

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

為 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


運行不同傳輸大小的串流模式 C2H(從設備發出 DMA )測試
如需了解更多信息,請參閱:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_from_device.html
與 CPM QDMA 端點功能測試設計不同,用戶無需配置任何寄存器即可初始化數據傳輸。CED 的 `user_control` 模塊會在內部產生報文。

為 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


運行不同傳輸大小的串流模式 H2C(DMA 到設備)測試
如需了解更多信息,請參閱 :
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_to_device.html

運行 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 字節

使用以下命令搭配 bi_st_1_1_pfetch-cmptsz1_4096.txt 配置執行 dma-perf 測試:

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 字節

使用以下命令搭配 bi_st_1_4_pfetch-cmptsz1_4096.txt 配置執行 dma-perf 測試:

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 的操作:

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

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

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

預留 VF 的隊列

“dma-ctl dev list”給出了預留的隊列的數量。
如需了解更多信息,請參閱:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#reserve-the-queues-for-vfs

在 VF 上添加和啟動雙向隊列以執行 C2H 和 H2C 串流模式測試


運行包大小為 64 字節的 C2H 和 H2C 測試

在 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 字節

使用以下命令搭配 vf_bi_st_1_1_pfetch-cmptsz1_4096.txt 配置執行 dma-perf 測試:

qdma-perf 工具負責:
以 H2C 方向的 idx 0 添加和啟動 1 個隊列
以 C2H 方向的 idx 0 添加和啟動 1 個隊列
C2H 和 H2C 數據傳輸
停止并刪除已添加的 C2H 和 H2C 隊列
收集并顯示寫入 (H2C) 和讀取 (C2H) 性能結果
AMD 自適應 SoC 及 FPGA 中文技術支持社區
-
amd
+關注
關注
25文章
5698瀏覽量
140263 -
soc
+關注
關注
40文章
4606瀏覽量
229718 -
驅動程序
+關注
關注
19文章
872瀏覽量
50650 -
Vivado
+關注
關注
19文章
859瀏覽量
71300
原文標題:開發者分享 | AMD Vivado? 2024.1 中 “AMD Versal? CPM5 QDMA Gen4x8 ST Only Performance Design” CED 示例
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于AMD Versal器件實現PCIe5 DMA功能
【AMD】Physical Design Engineer
AMD熱招 Physical Design Engineer
【AMD】Physical Design Engineer
AMD熱招 Physical Design Engineer
【AMD社招】Physical Design Engineer
利用設計網關的 IP 內核在 Xilinx VCK190 評估套件上加速人工智能應用
PCIe Gen 4/5協議故障注入
AMD Versal? Adaptive SoC CPM PCIE PIO EP設計CED示例
AMD Versal自適應SoC CPM5 QDMA的Tandem PCIe啟動流程介紹
AMD推出第二代Versal Premium系列
AMD推出了Versal Premium Series Gen 2,這是業界第一個支持CXL 3.1和PCIe Gen6的FPGA平臺。
AMD Versal CPM5 QDMA Gen4x8 ST Only Performance Design CED示例
評論