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

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

2.2.4.4. 例4: FPGAでキャッシュ・コヒーレントなデータをHPSに書き込む

この例では、HPSのMPUはFPGAを起源とするデータへのアクセスを必要とします。小さなデータブロックをMPUと共有する最も効率的なメカニズムは、FPGA内のロジックでHPSへのキャッシュ可能な書き込みを実行することです。HPSに書き込まれるデータの量は、比較的小さなブロックの形式であることが重要です。大きなブロックの書き込みはL2キャッシュのスラッシングにつながり、ほとんどの転送でキャッシュがSDRAMに書き込まれるようになります。大規模なバッファー転送の場合は、例2に示すように、FPGAでFPGA-to-SDRAMポートに直接データを書き込むほうが適切です。

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

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

図 6. 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ビット全体のアクセスを実行する必要があります。

ガイドライン: L2でECCが有効になっている場合、FPGA-to-HPSブリッジへのキャッシュ可能なアクセスが8バイト境界でアライメントされていることを確認します。

L2キャッシュでエラー検出と訂正 (ECC) を有効にする場合はまた、8バイトの各データグループが完全に書き込まれるようにする必要があります。L2キャッシュは64ビット境界でECCの動作を実行するため、キャッシュ可能なアクセスを実行する際はかならず、アクセスを8バイト境界に揃え、一度に8つのレーンすべてに書き込む必要があります。これらの規則に従わない場合は、ダブル・ビット・エラーが発生します。これは回復することができません。

ECCが有効になっているか無効になっているかにかかわらず、32バイトのキャッシュ・トランザクション は最高のパフォーマンスをもたらします。32バイトのキャッシュ・トランザクションの詳細に関しては、例3の「キャッシュ可能なトランザクションごとに32バイトにアクセスします」のガイドラインを参照してください。

ガイドライン: L2でECCが有効になっている場合、FPGA-to-HPSブリッジへのキャッシュ可能なアクセスで8つの書き込みストローブのグループが有効になっていることを確認します。

  • 32ビットのFPGA-to-HPSアクセスでは、バースト長を2、4、8または16にし、書き込みバイトストローブをすべて有効にする必要があります。
  • 64ビットのFPGA-to-HPSアクセスでは、すべての書き込みバイトストローブを有効にする必要があります。
  • 128ビットのFPGA-to-HPSアクセスでは、上位8つまたは下位8つ (もしくは両方) の書き込みバイトストローブを有効にする必要があります。