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

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

3.2.3.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ブリッジに書き込み、ACE-Liteプロトコルのキャッシュ拡張信号を使用する必要があります。キャッシュ・コヒーレンシーなアクセスのためのACE-Liteプロトコル信号拡張に関する詳細は、関連情報を参照ください。

図 16. FPGAでのキャッシュ・コヒーレンシーなデータの書き込み略語については、HPSメモリーマップド・インターフェイスの概要にある図を参照ください。

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

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

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

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

ECCが有効になっているか無効になっているかにかかわらず、64バイトのキャッシュ・トランザクションは最高のパフォーマンスをもたらします。64バイトのキャッシュ・トランザクションの詳細については、例3「FPGAでキャッシュ・コヒーレンシーなデータをHPSから読み取る」の章にあるガイドライン: キャッシュ可能なトランザクションごとに64バイトにアクセスしますを参照してください。

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

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