インテルのみ表示可能 — GUID: ngj1557106908900
Ixiasoft
インテルのみ表示可能 — GUID: ngj1557106908900
Ixiasoft
5.1.8.2.1. システムレベルのキャッシュ・コヒーレンシー
番号 | チェック欄 | チェックリストの項目 |
---|---|---|
1 | 使用するマスターとその数を検討します。 | |
2 | キャッシュ可能なアクセスの管理方法を決定します。 |
- MPU
- DMA
- マスター・インターフェイスを備えたペリフェラル
- HPSに接続しているFPGA内のマスター
キャッシュ・コヒーレンシーは重要なテーマとして、システム内の複数のマスター間でデータを共有する必要がある場合に理解すべきです。SoCデバイスの場合は、こうしたマスターは、MPU、DMA、マスター・インターフェイスを備えたペリフェラル、およびHPSに接続しているFPGA内のマスターです。MPUには、レベル1およびレベル2のキャッシュ・コントローラーが含まれているため、システム内のメインメモリーよりも最新の内容を多く保持できます。HPSでは、2つのメカニズムをサポートし、システム内のマスターによってメモリーのコヒーレント・ビューを確実に監視することができます。2つのメカニズムとは、1つはメインメモリーに最新の値が含まれるようにすることです。もう1つは、ACE-Liteインターフェイスを使用して、マスターからディレクトリー・ベースのCCUファブリックにアクセスすることです。
MPUでは、バッファーを割り当てて、キャッシュ不能にします。これにより、データのキャッシュが、L1およびL2キャッシュによってされることがなくなります。MPUではまた、キャッシュ可能なデータにアクセスし、ほかのマスターからデータへのアクセスが試行される前に、データをメインメモリーにフラッシュするか、キャッシュ不能のバッファーにコピーすることができます。オペレーティング・システムには、通常、キャッシュ・コヒーレンシーを維持するメカニズムとして上に挙げた2通りの方法が用意されています。
システム内のマスターからコヒーレント・データにアクセスするには、MPUに依存してデータをキャッシュせずにメインメモリーに配置するか、システム内のマスターを使ってキャッシュ可能なアクセスをCCUを介して実行します。使用するメカニズムは、マスターがアクセスしているメモリーのバッファーサイズによって異なります。
詳しくは、FPGAに対するインターフェイス のセクションを参照してください。
ガイドライン: CCUを介してアクセスするデータが1MB L2キャッシュに収まることを確認して、オーバーヘッドのスラッシングを回避します。
L2キャッシュのサイズは1MBです。そのため、システム内のマスターから合計サイズが1MBを超えるバッファーに頻繁にアクセスすると、スラッシングが発生します。
キャッシュ・スラッシングの状況になると、データのサイズがキャッシュのサイズを超えるため、キャッシュによる頻繁な削除とメインメモリーへのプリフェッチの実行が起きます。スラッシングにより、データのキャッシュによるパフォーマンス上の利点が打ち消されます。
スラッシングの可能性がある状況では、マスターから非キャッシュ・コヒーレント・データにアクセスし、MPU上で実行されるソフトウェアによってシステム全体のデータ・コヒーレンシーが維持できるようにする方が理にかなっています。
ガイドライン: データの小さなバッファーをMPUとシステムマスターとの間で共有する場合は、キャッシュ可能なアクセスをシステムマスターから実行することで、キャッシュフラッシュ動作が原因で発生するオーバーヘッドを回避することを検討してください。
システム内のマスターからより小さなコヒーレント・データ・ブロックへのアクセスが必要な場合に検討が必要な事項は、MPUからバッファーへのアクセスをキャッシュ可能なメモリーとして実行させ、システム内のマスターからデータへキャッシュ可能なアクセスを実行させることです。ACE-Liteプロトコルを介したCCUへのキャッシュ可能なアクセス は、FPGA-to-HPSブリッジによってサポートされ、マスターとMPUの両方からアクセスするデータが同じコピーであることが保証されます。MPUによるキャッシュ可能なバッファーの使用と、システムマスターによるキャッシュ可能なアクセスの実行により、ソフトウェアでは、システム全体のコヒーレンシーを維持する必要がなくなり、MPUとシステムマスターの両方によって同じデータのコピーの監視ができるようになります。