PCI Express*向け F-タイル Avalon® ストリーミングのインテル® FPGA IPユーザーガイド

ID 683140
日付 4/27/2023
Public
ドキュメント目次

3.4.2. MSI

MSI割り込みは、単一のdwordメモリー書き込みTLPを使用してPCI Expressリンクで通知されます。ユーザー・アプリケーションは、Avalon-STインターフェイスを介してMSI要求(MWr)を発行し、MSIインターフェイスを使用してコンフィグレーション・スペース・レジスターを更新します。

Mask BitsレジスターとPending Bitsレジスターの長さはそれぞれ32ビットで、潜在的な各割り込みメッセージには独自のマスクビットと保留ビットがあります。マスクビット・レジスターのビット[0]が設定されている場合、割り込みメッセージ0はマスクされます。割り込みメッセージがマスクされている場合、そのベクターのMSIは送信できません。ソフトウェアがマスクビットをクリアし、対応する保留ビットが設定されている場合、関数はその時点でMSI要求を送信する必要があります。

コンフィグレーション出力インターフェイス(tl_cfg_ *)から必要なMSI情報(メッセージアドレスやデータなど)を取得して、Avalon-STインターフェイスを介して送信されるMWrTLPを以下に示す形式で作成する必要があります。

図 28. MSIリクエスト用のMWrTLPの作成

次の図は、3つのシナリオでmsi_pnd_ *信号を送ります。最初のシナリオは、MSI保留ビット・レジスターが使用されていない場合を示しています。 2番目のシナリオは、物理機能0のみが有効で、MSI保留ビット・レジスターが使用されている場合を示しています。最後のシナリオは、4つの物理機能が有効で、MSI保留ビット・レジスターが使用されている場合を示していま 。

図 29. msi_pnd*信号のタイミング図

32の可能なMSIメッセージがあります。特定のコンポーネントによって要求されたメッセージの数は、割り当てられたメッセージの数に必ずしも対応していません。たとえば、次の図では、エンドポイントは8つのMSIを要求しますが、割り当てられるのは2つだけです。この場合、割り当てられた2つのメッセージのみを使用するようにアプリケーション層をデザインする必要があります。

図 30. MSIリクエストの例

次の表に、3つの実装例を示します。最初の例では、32個すべてのMSIメッセージを割り当てます。 2番目と3番目の例では、4つの割り込みのみを割り当てます。

表 16.  MSI Messages Requested, Allocated and Mapped
MSI Allocated
32 4 4
System Error 31 3 3
Hot Plug and Power Management Event 30 2 3
Application Layer 29:0 1:0 2:0

ホットプラグ、電源管理イベント、およびシステムエラーに対して生成されたMSI割り込みは、常にトラフィッククラス0を使用します。アプリケーション層によって生成されたMSI割り込みは、任意のトラフィッククラスを使用できます。たとえば、送信の最後にMSIを生成するDMAは、データの転送に使用されたのと同じトラフィック制御を使用します。

次の図は、アプリケーション層にベクトルごとのイネーブルビットを使用した割り込みハンドラモジュールの可能な実装を示しています。または、アプリケーション層は、このベクトルごとのMSIの代わりに、グローバル割り込みイネーブルを実装できます。

図 31. 割り込みハンドラブロックの実装例