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

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

8.2.5. デザインのソフトウェア・フロー

図 39. DPDK ポーリング・モード・ドライバー・ソフトウェア・フロー

ステップ1

  • 指定された数のキューに基づいて、アプリケーションは Tx および Rx キューを設定します。
  • MCDMA ポーリング・モード・ドライバー (PMD) は、メモリー管理を処理し、指定された配置と境界で物理メモリーの一部を予約します。
  • PMD は、ディスクリプターの開始アドレス、キューサイズ、コンシューム・ヘッドのライトバック アドレス、D2H ディスクリプターのペイロードサイズを含む、キューに関連付けられた QCSR の次のレジスターを初期化し、チャネルを有効にします。
  • QCSR レジスター:
    • Q_RESET (offset 8’h48)
    • Q_TAIL_POINTER (offset 8’h14) Set 0
    • Q_START_ADDR_L (Offset 8’h08)
    • Q_START_ADDR_H (Offset 8’h0C)
    • Q_SIZE (Offset 8’h10)
    • Q_CONSUMED_HEAD_ADDR_L (Offset 8’h20)
    • Q_CONSUMED_HEAD_ADDR_H (Offset 8’h24)
    • Q_BATCH_DELAY (Offset 8’h28)
    • Set q_en, q_wb/intr_en bits, Q_CTRL (Offset 8’h00)
    • (Q_PYLD_COUNT) (Offset 8'h44)
  • すべてのキューが設定されると、デバイスが起動します。
  • Q アプリケーションは、指定されたキューの数に基づいてスレッドを作成します。

ステップ2

新しいディスクリプターのスレッド要求を送信して要求を送信し、必要なフィールド (ディスクリプター・インデックス、SOF、EOF、ペイロード、MSI-X 有効化、ライトバック有効化) を更新します。

ステップ3

ディスクリプター・リング・バッファーを初期化した後、McDMA PMD はディスクリプターの更新回数を QCSR 領域のテール レジスターに書き込みます。ディスクリプターが更新されるたびに、テールポインターは 1 ずつ増加します。 QCSR テール・ポインター・レジスター: Q_TAIL_POINTER (オフセット 8'h14)

ステップ4

  • テールポインターの書き込みが発生すると、MCDMA IP はプログラムされた Q_START_ADDR_L/H アドレスからホストメモリーからディスクリプターをフェッチします。
  • MCDMA IP はディスクリプターの内容を解析して、ソース、デスティネーション・アドレス、およびディスクリプターからのデータの長さを見つけ、DMA 操作を開始します。

ステップ5

ディスクリプターの処理が完了すると、IP は各ディスクリプターで有効にできる次のメソッドに基づいて完了ステータスを通知します。
  • MSI-X 割り込みに基づく: Q_CTRL で有効になっている場合、MCDMA IP は MSI-X 割り込みをホストに送信します。
  • ライトバック: Q_CTRL でライトバックが有効になっている場合、MCDMA IP は Q_CONSUMED_HEAD_ADDR_L/H を更新します。