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

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

2.2.4.3. 例3: FPGAでキャッシュ・コヒーレンシーなデータをHPSから読み取る

この例では、FPGAはHPSを起源とするデータへのアクセスを必要とします。HPSのMPUがこのデータに最近アクセスしたため、データがまだキャッシュに含まれている可能性があります。よって、キャッシュされたデータにFPGAでアクセスすることが最適だと考えられます。ダーティー・キャッシュ・ラインをフラッシュする必要があるソフトウェアのオーバーヘッドを回避するために、FPGAはFPGA-to-HPSブリッジへのキャッシュ・コヒーレントな読み出しを実行することができます。読み取られるバッファーのサイズは比較的小さいことが重要です。これに従わない場合、L2キャッシュでは、ほとんどの転送において、SDRAMからのデータの読み出しでスラッシングが発生する可能性があります。大規模なバッファーの転送には、例1で示されているように、FPGAがFPGA-to-SDRAMポートから直接データを読み出すほうがより適切です。

ガイドライン: FPGA-to-HPSブリッジをターゲットとするフルアクセスを実行します。

トランザクションをキャッシュ可能にするには、FPGAマスターでFPGA-to-HPSブリッジからの読み出しを行い、少なくとも、ARCACHE信号のキャッシュ可能ビットと読み出し割り当てビットを設定する必要があります。Avalon-MMマスターを使用してキャッシュ可能なデータにアクセスする場合は、ARCACHE信号を適切な値に強制するロジックを提供する必要があります。Avalon-MMのトランザクションをキャッシュ可能に強制する例は、FPGA-to-HPSブリッジのデザイン例で示されています。

図 5. FPGAでのキャッシュ・コヒーレンシーなデータの読み取り略語については、Overview of HPS Memory-Mapped Interfacesの図を参照ください。

ガイドライン: FPGA-to-HPSブリッジをターゲットとし、32バイトにアライメントされたキャッシュ可能なアクセスを実行します。

HPSのACPスレーブは、キャッシュラインと同じサイズ (32バイト) のトランザクションに最適化されています。そのため、データを32バイト境界に揃え、データ幅の調整後に、64ビットのACPスレーブへのバースト長が4ビート長になるようにする必要があります。例えば、FPGA-to-HPSブリッジが128ビットのトランザクションに設定されている場合は、データを32バイトに揃え、バースト長2で128ビット全体のアクセスを実行する必要があります。

ガイドライン: キャッシュ可能なトランザクションごとに32バイトにアクセスします。

各バースト・トランザクションでは、32バイトにアクセスするようにします。各トランザクションは、32バイト境界で開始する必要があります。

表 6.  32バイトのアライメントのバースト長
ブリッジ幅 (ビット) アクセスサイズ (バイト) バースト長
32 4 8
64 8 4
128 16 2