软件可控内核 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

软件可控内核会公开一个可编程的寄存器接口,以允许主机软件应用通过寄存器读取和写入来与内核进行交互。这些都属于最常见且适用最广泛的内核类型。有 2 种类型的软件可控内核:用户管理的内核和 XRT 管理的内核。

注释: XRT 管理的内核是用户管理的内核的其中一种专用格式。

用户管理的内核与 XRT 管理的内核的主要区别在于内核执行模式。由于 XRT 依赖于 Vitis HLS 所生成的 ap_ctrl_chainap_ctrl_hs 执行协议,XRT 管理的内核更适合 C++ 开发者,如 C/C++ 内核使用 Vitis HLS 编译内核 中所述。另一方面,用户管理的内核可支持许多不同的用户定义的执行协议(常见于 Vivado RTL IP 中),因此更适合使用 RTL 内核 的 RTL 设计师。

Vitis 应用加速开发流程支持使用 XRT 本机 C/C++ API 编写的主机程序,此 API 同时支持用户管理的内核和 XRT 管理的内核以及某些高级设计(例如,永续内核)。它还支持使用 OpenCL API 来处理 XRT 管理的内核的主机应用。后续章节将简要描述编程 API 以及 XRT 管理的内核或用户管理的内核所需的不同硬件接口。

表 1. 使用 XRT API 进行软件控制
XRT 管理的内核 用户管理的内核
  • XRT 管理的内核的对象类为 xrt::kernel
  • 软件应用使用更高层次的命令来与 XRT 管理的内核进行通信,例如,set_argrunwait
  • 用户无需了解可编程寄存器和内核执行协议的低层次细节
  • 控制寄存器和状态寄存器可以为 XRT 提供已知接口,用于与内核进行交互,从而使这些高层次命令可供使用
  • 如果需要,还可以将 XRT 管理的内核作为用户管理的内核(使用原子寄存器读取和写入)来进行控制
  • OpenCL API 还可搭配 XRT 管理的内核 (cl::kernel) 一起使用
  • 用户管理的内核的对象类为 xrt::ip
  • 软件应用通过 AXI4-Lite 接口使用原子寄存器读取和写入来与用户管理的内核进行通信
  • 应用开发者负责确认内核中每个寄存器的地址偏移和用途,并正确使用这些寄存器
  • 没有可供使用的检查、高层次控制或剖析功能。用户负责运行仿真以进行性能分析/调试。