インテルのみ表示可能 — GUID: jyb1639424172769
Ixiasoft
2.8. External Descriptor Controller
- 合計16個のDMAチャネル (16個のH2Dキューと16個のD2Hキュー)
- H2DおよびD2Hのデータムーバーに個別の記述子コマンドキューをサポート
- 記述子完了メカニズムとしてライトバック (WB) をサポート
- 割り込みサポートはなし
Global/Queue CSR: DMA動作の制御に必要なグローバルCSRレジスターとQueue CSRレジスターを実装します。これらのレジスターへの読み出し/書き込みアクセスは、MCDMA IPのBAMインターフェイスを介して行われます。レジスターの詳細については、レジスター のセクションを参照してください。
H2D/D2H Descriptor Fetch: このブロックは、QCSRレジスターのコンテキストに基づき記述子フェッチコマンドを h2ddm_desc インターフェイスで生成します。
Descriptor Completion Processing: このブロックは、MCDMAに送信された記述子フェッチ要求に対する、h2ddm_desc_cmpl インターフェイスで受信した記述子完了パケットを処理し、受信した記述子を対応する記述子キューバッファー (H2D/D2H Descriptor Queue) に格納します。これらのフェッチされた記述子はキューに入り、対応するデータムーバー・コマンドが h2ddm_desc または d2hdm_desc インターフェイスを介してMCDMA IPに送信されます。
Descriptor Status Processing: このブロックは、h2ddm_desc_status および d2hdm_desc_status インターフェイスで受信したステータス情報を処理し、MCDMA IPに対する適切なライトバック・コマンドを d2hdm_desc インターフェイスで生成します。
記述子のフェッチ動作
次に、記述子のフェッチプロセスを説明します。
- ソフトウェアはQCSRのキュー・コンテキスト・レジスターを更新し、Tail Pointerレジスター (D2Hの場合はオフセット0x10、H2Dの場合はオフセット0x90) を更新します。
- H2D/D2H Descriptor fetch ブロックはTail Pointerレジスターの更新を検出し、記述子フェッチコマンドをMCDMAの h2ddm_desc インターフェイスで生成し、ホストメモリーから記述子を取得します。
- フェッチされる記述子の数は、Head Pointer (D2Hの場合はオフセット0x18、H2Dの場合はオフセット0x98) とTail Pointer (D2Hの場合はオフセット0x10、H2Dの場合はオフセット0x90) の差によって決まります。
- Head Pointerレジスター (D2Hの場合はオフセット0x18、H2Dの場合はオフセット0x98) は、フェッチされる記述子の数に基づき更新されます。
- MCDMAは、受信した記述子の完了を h2ddm_desc_cmpl インターフェイスで提供します。
- 受信する記述子は、それぞれのキューバッファー (H2D/D2H Descriptor Queue) に格納されます。
- 記述子のフェッチプロセスは、複数のキューに対してラウンドロビン調停方式で発生します。
H2Dのデータ移動動作
- H2D Descriptor Queue から記述子が取り出され、対応するデータムーバー・コマンドに変換されて、h2ddm_desc インターフェイスを介してMCDMAに送信されます。
- データ転送は、H2D Data Mover AVMM書き込みマスターを介してホストメモリーから DMA_MEM で発生します。
- データ転送が完了すると、MCDMAはステータスを h2ddm_desc_status インターフェイスで送信します。
- ステータス情報は Descriptor Status Processing ブロックで処理され、MCDMAへの適切なライトバック・コマンドが d2hdm_desc インターフェイスで生成されます。
- Completed Pointerレジスター (H2Dの場合はオフセット0xA8) は、処理された記述子の数に基づき更新されます。
- このフローは、H2D Descriptor Queue のすべての記述子に対して継続します。
D2Hのデータ移動動作
- D2H Descriptor Queue から記述子が取り出され、対応するデータムーバー・コマンドに変換されて、d2hdm_desc インターフェイスを介してMCDMAに送信されます。
- データ転送は、D2H Data Mover AVMM読み出しマスターを介して DMA_MEM からホストメモリーで発生します。
- データ転送が完了すると、MCDMAはステータスを d2hdm_desc_status インターフェイスで送信します。
- ステータス情報は Descriptor Status Processing ブロックで処理され、MCDMAへの適切なライトバック・コマンドが d2hdm_desc インターフェイスで生成されます。
- Completed Pointerレジスター (D2Hの場合はオフセット0x28) は、処理された記述子の数に基づき更新されます。
- このフローは、D2H Descriptor Queue のすべての記述子に対して継続します。
機能 | 一般的なMCDMA | 外部記述子コントローラー・デザイン例 |
---|---|---|
DMAチャネル |
最大2K |
16に固定 |
SRIOV |
あり |
なし |
MSI-X |
あり |
なし (MSI-Xは、今後のリリースでサポートされる可能性があります。) |
ライトバック |
あり |
あり |
Queue CSR |
あり |
あり (詳細は、レジスターの表を参照してください。) |
MSI |
なし |
なし |
記述子リンクのビット |
あり |
なし (記述子は連続する位置に連続して形成され、QCSRの開始アドレスで提供されます。) |
名称 | 幅 | 詳細 |
---|---|---|
SRC_ADDR[63:0] |
64 |
割り当てられているバッファーのソースアドレス。DMAによって読み出されます。 |
DEST_ADDR[127:64] |
64 |
割り当てられているバッファーの宛先アドレス。DMAによって書き込まれます。 |
PYLD_CNT[147:128] |
20 |
DMAペイロードサイズ (バイト単位)。最大1MB、20'h0は1MBを示します。 |
RSRV[159:148] |
12 |
予約済み |
DESC_IDX [175:160] |
16 |
各記述子の一意の識別子。同じ番号がQ_COMPLETED_POINTERに適用されます。 テールポインターとして使用される記述子カウントと同じです。 例えば、4Kページにある128個の記述子の場合、記述子のカウントは1から128までとなります。 |
MSIX_EN[176] |
1 |
MSIXを有効にします。 |
WB_EN[177] |
1 |
ライトバックを有効にします。 |
RSRVD [255:178] |
78 |
予約済み |