インテルのみ表示可能 — GUID: pxo1614827051727
Ixiasoft
インテルのみ表示可能 — GUID: pxo1614827051727
Ixiasoft
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を以下に示す形式で作成する必要があります。
次の図は、3つのシナリオでmsi_pnd_ *信号を送ります。最初のシナリオは、MSI保留ビット・レジスターが使用されていない場合を示しています。 2番目のシナリオは、物理機能0のみが有効で、MSI保留ビット・レジスターが使用されている場合を示しています。最後のシナリオは、4つの物理機能が有効で、MSI保留ビット・レジスターが使用されている場合を示していま 。
32の可能なMSIメッセージがあります。特定のコンポーネントによって要求されたメッセージの数は、割り当てられたメッセージの数に必ずしも対応していません。たとえば、次の図では、エンドポイントは8つのMSIを要求しますが、割り当てられるのは2つだけです。この場合、割り当てられた2つのメッセージのみを使用するようにアプリケーション層をデザインする必要があります。
次の表に、3つの実装例を示します。最初の例では、32個すべてのMSIメッセージを割り当てます。 2番目と3番目の例では、4つの割り込みのみを割り当てます。
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の代わりに、グローバル割り込みイネーブルを実装できます。