インテル® アクセラレーション・スタック (インテル® Xeon® CPU&FPGA対応) コア・キャッシュ・インターフェイス (CCI-P) リファレンス・マニュアル

ID 683193
日付 11/04/2019
Public
ドキュメント目次

1.2.3. メモリーおよびキャッシュ階層

CCI-Pプロトコルはキャッシュヒントのメカニズムを提供します。AFUに精通しているデベロッパーは、このメカニズムを使用しパフォーマンスを調整することができます。この章では、 インテル® FPGA PACおよびFPGA統合プラットフォームのメモリーとキャッシュ階層について説明します。CCI-Pが提供する制御メカニズムについては、次の「インテル FPGA PAC」と「FPGA統合プラットフォーム」の章で説明します。

インテル® FPGA PAC

図 4.  インテル® FPGA PACのメモリー階層
上の図は、単一プロセッサーの インテル® Xeon® プラットフォームにおける インテル® FPGA PACのメモリーおよびキャッシュ階層を表しています。 インテル® FPGA PACには、次の2つのメモリーノードがあります。
  • ホストメモリーと呼ばれている、プロセッサーのSDRAM (Synchronous Dynamic Random Access Memory)
  • ローカルメモリーと呼ばれている、FPGAに接続するSDRAM
AFUは、リクエストをローカルメモリーにルーティングする必要があるか、CPUメモリーにルーティングする必要があるかを決定します。
ローカルメモリー (B.1) は、ホストメモリー (A.2) とは異なるアドレス空間にあります。ローカルメモリーをターゲットにするAFUリクエストはかならず、図 4 において (B.1) と示されているSDRAMによって直接処理されます。
注: ローカル・メモリー・アクセス・パスにともなうキャッシュはありません。

PCIeを介してCPUメモリーに向かうAFUリクエストは、図 4 で示されるように、プロセッサー側で処理することができます。

図中 (A.1) で示されるラスト・レベル・キャッシュの場合
  • 受信する読み出しリクエストのレイテンシーは、 SDRAM (図中A.2) から読み出すよりも小さくなります。
  • 書き込みリクエストヒントを使用し、書き込まれたデータをどのように処理するかをラスト・レベル・キャッシュに指示できます (キャッシュ可または不可、および局所性など)。

リクエストがラスト・レベル・キャッシュでミスになった場合、SDRAMで処理することが可能です。

詳細は、CCI-Pプロトコルの定義にあるWrPush_Iリクエストを参照ください。

FPGA統合プラットフォーム

図 5.  FPGA統合プラットフォームのメモリー階層
図 5 は、1つの インテル® Xeon® プロセッサーを備えるFPGA統合プラットフォームAFUから見た3つのレベルのキャッシュとメモリー階層を表しています。単一プロセッサーのFPGA統合プラットフォームは、1つのメモリーノードのみを備えています (図中A.3のプロセッサー側のSDRAM)。インテルUPIのコヒーレント・リンクは、図 5 の緑の点線で示されるように、 インテル® Xeon® プロセッサーのコヒーレンシー・ドメインをFPGAに拡張します。UPIのキャッシュ・エージェントは、CPUメモリーのそのほかの部分と一貫性のあるFIUにFPGAキャッシュを保持します。CPUメモリーをターゲットにするアップストリームのAFUリクエストは、以下で処理することができます。
  • FPGAキャッシュ (A.1) —インテルUPIのコヒーレント・リンクは、 インテル® Xeon® プロセッサーのコヒーレンシー・ドメインをFPGAキャッシュに拡張します。FPGAキャッシュでヒットするリクエストのレイテンシーは最も小さく、また、帯域幅は最も高くなります。VL0仮想チャネルを使用するAFUリクエストおよびUPIパスの使用が選択されたVAリクエストは、FPGAキャッシュをまず検索し、ミスになった場合にのみチップからプロセッサーに送信されます。
  • プロセッサー側のキャッシュ (A.2) —プロセッサー側のキャッシュでヒットする読み出しリクエストのレイテンシーは、FPGAキャッシュでヒットする場合よりも大きくなりますが、プロセッサーのSDRAMから読み出す場合よりも小さくなります。書き込みリクエストヒントを使用し、プロセッサー側のキャッシュへの書き込みを指示できます。詳細は、CCI-Pプロトコルの定義にあるWrPush_Iリクエストを参照ください。
  • プロセッサーのSDRAM (A.3) —プロセッサー側のキャッシュでミスとなったリクエストは、SDRAMで処理されます。

データアクセスのレイテンシーは、(A.1) から (A.3) に増加します。

注: ほとんどのAFUは、VL0、VH0、VH1の使用を明示的に選択するのではなく、VA仮想チャネルを選択することで最大の帯域幅を実現します。FIUに実装されているVCステアリング・ロジックはプラットフォームに対して調整されており、物理リンクのレイテンシーと効率特性、物理リンクの使用率およびトラフィックの分散を考慮し最大限の帯域幅を提供します。

VCステアリング・ロジックの制限の1つに、ステアリングの決定においてキャッシュの局所性を考慮しないことがあります。VCのステアリングの決定はキャッシュ検索の前に行われます。つまり、キャッシュラインがFPGAキャッシュにある場合でも、リクエストがVH0またはVH1に向けられる場合があることを意味します。そのようなリクエストでは、リクエストを完了させるために場合によってはプロセッサーがFPGAキャッシュをスヌーピングする必要があるため、レイテンシーがさらに課される可能性があります。AFUがすでにアクセスの局所性を認識している場合は、VL0仮想チャネルを使用しキャッシュの局所性を活用するほうが有効な場合があります。