AN 802: インテル® Stratix® 10 SoC デバイスのデザイン・ガイドライン

ID 683117
日付 4/17/2019
Public
ドキュメント目次

4.3. システムレベルのキャッシュ・コヒーレンシー

キャッシュ・コヒーレンシーは、システム内の複数のマスター間で常にデータを共有する必要があることを理解するための基本的な内容です。SoCデバイスにおけるこれらのマスターは、MPU、DMA、マスター・インターフェイスを備えるペリフェラル、およびHPSに接続されるFPGAのマスターになります。MPUにはレベル1およびレベル2のキャッシュ・コントローラーが含まれているため、システムのメインメモリーよりも多くの最新コンテンツを保持できます。HPSは、システム内のマスターがメモリーの一貫したビューをもつための2つのメカニズムをサポートします。つまり、メインメモリーに最新の値が含まれるようにする、またはACE-Liteインターフェイスを使用しマスターがディレクトリーベースのCCUファブリックにアクセスするようにします。

MPUはバッファーをキャッシュ不可になるように割り当て、L1およびL2キャッシュによってデータがキャッシュされないようにすることができます。MPUはまた、キャッシュ可能なデータにアクセスし、ほかのマスターがデータへのアクセスを試みる前にデータをメインメモリーにフラッシュするか、キャッシュ不可のバッファーにコピーすることができます。オペレーティング・システムは通常、キャッシュ・コヒーレンシーを維持する上記の両方の方法のメカニズムを提供します。

システム内のマスターは、MPUに依存しデータをキャッシュせずにメインメモリーに配置する、もしくはシステム内のマスターにCCUを介してキャッシュ可能なアクセスを実行させることにより、コヒーレンシーなデータにアクセスします。使用するメカニズムは、マスターがアクセスしているメモリーのバッファーサイズによって異なります。

詳細については、「FPGAとの接続」の章を参照してください。

ガイドライン: スラッシングのオーバーヘッドを回避するため、CCUを介してアクセスされるデータが1 MBのL2キャッシュに収まるようにします。

L2キャッシュのサイズは1 MBであるため、合計サイズが1 MBを超えるバッファーにシステム内のマスターが頻繁にアクセスするとスラッシングが発生します。

キャッシュのスラッシングは、データサイズがキャッシュサイズを超え、キャッシュが頻繁にエビクションとメインメモリーへのプリフェッチを引き起こす状況です。スラッシングは、データをキャッシュすることによるパフォーマンス上の利点を無効にします。

スラッシングの可能性がある状況では、マスターにキャッシュ以外のコヒーレンシーなデータにアクセスさせ、MPUで実行されるソフトウェアにシステム全体のデータ・コヒーレンシーを維持させる方法がより合理的です。

ガイドライン: MPUとシステムマスターで共有されるデータの小さなバッファーの場合、システムマスターにキャッシュ可能なアクセスを実行させ、キャッシュのフラッシュ動作によるオーバーヘッドを回避することを検討します。

システム内のマスターがより小さなコヒーレント・データ・ブロックへのアクセスを必要とする場合、MPUがキャッシュ可能なメモリーとしてバッファーにアクセスし、システム内のマスターがデータへのキャッシュ可能なアクセスを実行することを検討する必要があります。FPGA-to-HPSブリッジでサポートされているACE-Liteプロトコルでのキャッシュ可能なCCUへのアクセスは、マスターとMPUがデータの同じコピーにアクセスすることを保証しています。MPUがキャッシュ可能なバッファーを使用し、システムマスターがキャッシュ可能なアクセスを実行することで、ソフトウェアは、MPUとシステムマスターがデータの同じコピーをもつようシステム全体のコヒーレンシーを維持する必要がなくなります。