インテル® HLS コンパイラー: リファレンス・マニュアル

ID 683349
日付 6/23/2017
Public
ドキュメント目次

1.4.4.2. スレーブメモリー

デフォルトでは、コンポーネントへのポインター引数はコンポーネントにメモリーマップド・マスター・インターフェイスを生成します。ポインターはコンポーネントの外部でシステムメモリーに格納されているバッファーを参照します。
ポインター引数によるコンポーネントにメモリーマップド・マスター・インターフェイスを生成には、潜在的な欠点が 2 つあります。
  • マスター・インターフェイスはシングルポートを有します。コンポーネントに複数のロード・ストアー・サイトがある場合、そのポートの調停により、ストール可能なロジックが作成される可能性があります。
  • コンポーネントがインスタンス化されているシステムによっては、コンポーネントが動作中に他のマスターがメモリーバスを使用して、バス上に好ましくないストールを作成する場合があります。

小から中サイズのオンチップ・メモリーでは、スレーブメモリーのポインター引数は上記の欠点にアドレスする可能性があります。ポインター引数をスレーブメモリーとして宣言することは、コンポーネントの中で静的アレイを宣言することと類似しています。静的アレイの宣言とは異なり、内部初期化はメモリーに外部から公開されたポートに置き換えられます。メモリーは現在コンポーネントの内部にあるため、HLS コンパイラーは通常のメモリー最適化をすべて利用して、コンポーネントのアクセスパターン ( つまり、バンキング、結合など ) に最適化されたメモリー・アーキテクチャーを作成することができます。

HLSコンパーラーはオンチップ・メモリーブロックにスレーブメモリーを実装します。

コンポーネントは多数のメモリー・インターフェイスを有することができます。CSR スレーブ・インターフェイスとともにグループ化されたスレーブレジスター引数とは異なり、スレーブメモリーはコンポーネントで独自のスレーブ・インターフェイスを有します。スレーブメモリー・インターフェイスのデータバス幅はスレーブタイプの幅により決定します。メモリーへの内部アクセスが結合した場合、スレーブメモリー・インターフェイスのデータバス幅はスレーブタイプの幅の倍数になる可能性があります。