ソフトウェア制御可能なカーネル - 2021.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

ソフトウェアで制御可能なカーネルは、プログラマブル レジスタ インターフェイスをオープンにして、ホスト ソフトウェア アプリケーションがレジスタの読み出しと書き込みを介してカーネルと対話できるようにします。これらは最も一般的で広く適用されるカーネルのタイプです。ソフトウェア制御可能なカーネルには、ユーザー管理と XRT 管理の 2 種類があります。

注記: XRT 管理のカーネルは、特殊な形式のユーザー管理のカーネルです。

ユーザー管理のカーネルと XRT 管理のカーネルの主な違いは、カーネル実行モードに関連しています。XRT は Vitis HLS で生成される ap_ctrl_chain および ap_ctrl_hs 実行プロトコルに依存するため、C/C ++ カーネル および Vitis HLS のカーネルのコンパイル で説明されるように、XRT 管理のカーネルは C++ 開発者により適しています。また、ユーザー管理のカーネルは、既存の Vivado RTL IP のように多くの異なるユーザー定義の実行プロトコルをサポートできるので、RTL カーネル で作業する RTL 設計者により適しています。

Vitis アプリケーション アクセラレーション開発フローは、XRT ネイティブ C/C++ API を使用して記述されたホスト プログラムをサポートします。この API は、ユーザー管理のカーネルと XRT 管理のカーネルの両方をサポートし、終了しないカーネルなどの一部の高度なデザインもサポートします。また、XRT 管理のカーネル用の OpenCL API を使用するホスト アプリケーションもサポートします。次のセクションでは、XRT 管理のカーネルまたはユーザー管理のカーネルに必要なプログラミング API とさまざまなハードウェア インターフェイスについて簡単に説明します。

表 1. XRT API を使用したソフトウェア制御
XRT 管理のカーネル ユーザー管理のカーネル
  • XRT 管理のカーネルのオブジェクト クラスは xrt::kernel です。
  • ソフトウェア アプリケーションは、set_argrunwait などの上位レベルのコマンドを使用して、XRT 管理のカーネルと通信します。
  • プログラマブル レジスタおよびカーネル実行プロトコルの下位レベルの詳細を知る必要はありません。
  • 制御レジスタおよびステータス レジスタは、XRT にカーネルと対話するための既知のインターフェイスを提供し、これらの上位レベル コマンドを実行できるようにします。
  • 必要であれば、XRT 管理のカーネルをユーザー管理のカーネルとして制御することもできます (アトミック レジスタの読み出しと書き込みを使用します)。
  • OpenCL API は XRT 管理のカーネル (cl::kernel) で使用することもできます。
  • ユーザー管理のカーネルのオブジェクト クラスは xrt::ip です。
  • ソフトウェア アプリケーションは、AXI4-Lite インターフェイスを介したアトミック レジスタの読み出しと書き込みを使用して、ユーザー管理のカーネルと通信します。
  • アプリケーション開発者は、カーネル内の各レジスタのアドレス オフセットと目的を把握し、適切に使用する責任があります。
  • チェック機能、高度な制御機能、プロファイリング機能はありません。ユーザーがシミュレーションを実行して、パフォーマンスを解析/デバッグする必要があります。