PCI Expressのマルチチャネル DMA インテル® FPGA IPユーザー ガイド

ID 683821
日付 4/20/2022
Public
ドキュメント目次

8.2.3. DPDK ベースのアプリケーション

MCDMA PMD は、デバイスをイーサネット・デバイスとして公開します。環境抽象化レイヤー ユーティリティを使用することにより、アプリケーションは機能に基づいてデバイス、メモリー、および割り込みを初期化します。使用することで ethdev API、このアプリケーションは、H2D および D2H 方向で DMA を実行します。

複数のチャネルによるマルチスレッド

入力パラメーターに基づいて、アプリケーションは複数のスレッドを開始し、実行から完了までのモデルで一度に 1 つずつ DMA トランザクションを送信します。複数のスレッドが一度にチャネルを取得して解放しようとするため、MCDMA PMD はチャネル管理の実行中に同期の問題を処理します。

スレッドからのキューのスケジューリング

DPDK スレッド管理ライブラリは、スレッドの作成と初期化に使用されます。単一スレッドからより多くのキューをサポートする必要があるため、テスト・アプリケーションは、DMA 操作のために単一スレッドで複数のキューをスケジュールします。

  • BDF (例: “-b 86:00.0”)
  • ユーザー(-a<num> )からスレッド数を読み出します。
  • DMA が実行する必要があるキューの数(-c<num> )を計算します。
  • スレッドごとのキューの数を計算し、複数のスレッドを 1 つのスレッドに割り当てます。
  • 各トランザクションの後、testapp はキューをスワップアウトし、別のキューにスワップして DMA 操作を実行します。
  • バッチサイズ (-x<num> )

ソフトウェア・プロセスのカーネル・コンテキストの切り替え

ユーザー空間ドライバーは DMA 操作を実行します。したがって、カーネル コンテキスト スイッチの処理は、どのシナリオでも必要ありません。