メールボックスの使用 - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

自動再起動 HLS デザインの主な利点は、ソフトウェア アプリケーションと頻繁にやり取りしたり、ソフトウェア制御を必要とせず、データ駆動型として半自立的に動作するところです。ただし、カーネルの自動再起動は、メールボックスという機能を使用して、半同期にもできます。メールボックスは、非同期のノンブロッキングで安全な方法でソフトウェア アプリケーションとデータを交換する機能です。

ソフトウェア アプリケーションによって開始された HLS デザインは、明示的に停止されるまで自動的に再開されます。ソフトウェア アプリケーションは、デザインのステータスをクエリして、指定の後に実際に実行がいつ終了したかを判断することもできます。アプリケーションと自動再起動デザインは、次の通信プロトコルを使用します。

  • ソフトウェア アプリケーションからデザインに引数の値を渡すため、メールボックスはダブルバッファーの s_axilite マップド レジスタのセットをインプリメントし、ソフトウェア アプリケーションによるノンブロッキング通信と一貫した入力の受け渡し、およびデザインによる出力の受け渡しが問題なくできるようにします。
  • ソフトウェア アプリケーションは、入力引数に書き込むたびに、ソフトウェア側のコピーを変更します。ハードウェアで実行される HLS デザインは、この変更を認識しません。ソフトウェア アプリケーションがメールボックスの書き込みを要求すると、次にデザインが認識したレジスタのコピーを自動的に再起動したときに、その最新の入力で更新さされるようになります。この結果、ソフトウェア アプリケーションは任意の数の引数を任意の順序で書き込むことができます。HLS デザインは、ソフトウェア アプリケーションがメールボックスの書き込みを要求してデザインが再起動するまでこれらの更新を認識しません。
    ヒント: いくつかの引数が s_axilite レジスタ ファイルにマップされた配列である場合、配列全体を連続したメールボックス書き込みの間に書き込む必要があります。これは、配列がピンポン バッファーとしてインプリメントされるためです。
  • HLS デザインがデザイン側のレジスタに書き込み、メールボックスの読み出しを要求した場合も、同じプロセスが出力側で発生します。次回デザインが実行されると、s_axilite のマップされた出力引数の値が更新され、ソフトウェア アプリケーションは必要に応じてそれらを読み出すことができます。

このため、ソフトウェア アプリケーションには次の基準があります。

  • 制御駆動型デザインの場合のように、HLS デザイン実行時の入力データの提供、出力データの最終的な収集はしません。
  • 一部のデザイン入力パラメーター (配線テーブルなど) の設定や更新、デザイン実行のステータスのチェックなどに関与します。通常、この半同期操作は、ソフトウェア アプリケーションと HLS デザイン間の通信速度が固定されていない状態で実行されます。
  • ソフトウェア アプリケーションが HLS デザインに送信する新しいパラメーター セットを持っている場合、デザインがどの実行をしているかに関係なく、そのパラメーター セットが送信されます。ソフトウェア アプリケーションが HLS デザインのステータスをチェックする必要がある場合、デザインがどの実行をしているか関係なく、チェックがされます。パラメーターの更新とステータス チェックがハードウェアに対して一貫して実行されるだけで十分です。