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

ID 683192
日付 8/14/2020
Public
ドキュメント目次

2.2.2. キャッシュ・コヒーレンシーの維持

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

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

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

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

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

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

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

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

システム内のマスターがより小さなコヒーレント・データ・ブロックへのアクセスを必要とする場合は、MPUがキャッシュ可能なメモリーとしてバッファーにアクセスし、システム内のマスターがデータへのキャッシュ可能なアクセスを実行することを検討する必要があります。キャッシュ可能なアクセスは自動的にMPU ACPスレーブにルーティングされるため、マスターとMPUがデータの同じコピーにアクセスすることが保証されます。MPUがキャッシュ可能なバッファーを使用し、システムマスターがキャッシュ可能なアクセスを実行することにより、ソフトウェアでは、システム全体のコヒーレンシーを維持してMPUとシステムマスターがデータの同じコピーを認識することを保証する必要がなくなります。