インテル® アクセラレーション・スタック (インテル® Xeon® CPU&FPGA対応) コア・キャッシュ・インターフェイス (CCI-P) リファレンス・マニュアル
インテルのみ表示可能 — GUID: vxm1506274816044
Ixiasoft
インテルのみ表示可能 — GUID: vxm1506274816044
Ixiasoft
1.3.4. UMsg
UMsgは、CCI-Pの読み出し帯域幅を消費することなく、AFUのスピンループと同じ機能を提供します。これはスピンループの最適化と考えることができ、FPGAキャッシュ・コントローラー内の監視エージェントが、ドライバーによって割り当てられたキャッシュラインへのスヌーピングを監視しています。キャッシュラインへのスヌーピングを検出すると、データを読み出し、AFUにUMsgを送信します。
UMsgフローはキャッシュ・コヒーレンシー・プロトコルを使用し、CPUからAFUへの順序付けされていない高速通信パスを実装します。このプロセスは図 8 に示されるとおり、2つの段階で構成されます。
最初の段階は初期化です。ここでSWはUMsgアドレス空間 (UMAS) を固定し、UMASの開始アドレスをFPGAキャッシュ・コントローラーと共有します。これが完了すると、FPGAキャッシュ・コントローラーはUMASの各キャッシュラインを読み出し、それをFPGAキャッシュに共有状態で配置します。
機能的にUMsgは、スピンループもしくは、インテルXeonプロセッサーのmonitorおよびmwait命令と同等です。
- マルチスレッド・アプリケーションの異なるアドレスへのスピンループに相対的な順序付けの保証がないように、異なるアドレスへのUMsgに順序付けの保証はありません。
- UMAS CLへのCPUの書き込みがすべて、対応するUMsgになるわけではありません。AFUはそれまでに行われたCLの値の変更を見逃す可能性がありますが、CLの最新データを読むことが保証されています。前述のとおり、これをスピンループのように考えると理解しやすくなります。プロデューサー・スレッドがフラグCLを複数回更新した場合、ポーリングスレッドはそれまでに行われた値の変更を見逃す可能性がありますが、最新の値を読むことが保証されています。
- UMsgはFPGAキャッシュを使用するため、キャッシュ・ポリューションを引き起こす可能性があります。キャッシュ・ポリューションとは、プログラムが不必要にデータをキャッシュにロードし、ほかの必要なデータを追い出すことでパフォーマンスが低下することです。
- CPUは誤ったスヌーピングを示す場合があるため、UMsgHは手がかりとなる情報として扱う必要があります。つまり、投機的実行またはUMsgHに基づくプリフェッチを開始することは可能ですが、結果を確定する前にUMsgを待つ必要があります。
- UMsgのレイテンシーは、RdLine_Sを使用するAFUの読み出しポーリングと同じですが、読み出しトラフィックに使用できるCCI-Pチャネルの帯域幅を節約します。