インテル上位レベルのシンセシス・アクセラレーター機能ユニットのデザイン例のユーザーガイド

ID 683025
日付 11/30/2018
Public
ドキュメント目次

4.1.1. HLS AFUコンテナー 

HLS AFUコンテナーは、HLSコンパイラーによって生成されたコンポーネントといくつかのサポートコンポーネントを含むPlatform Designerシステムです。
表 1.  HLS AFUコンテナーのコンポーネント
コンポーネント 変更内容

mm_bridge_0

(Pipeline bridge)

HLSコンポーネントのスレーブ・インターフェイスとAFU IDスレーブが同じスレーブ・インターフェイスを共有できるようにします。

afu_id_avmm_slave_0

Avalon-MM Slave

UUIDを含むAFUのDFHを格納します。 DFHをホストに公開します( アクセラレーター・ファンクショナル・ユニット(AFU)開発者ガイドを参照 )
floatingPointVectorReduce_float HLSコンポーネント。このコンポーネントは浮動小数点数のベクトルを消費し、すべての要素を一緒に追加することでそれを削減します。 

read_bridge

(Pipeline bridge)

HLSコンポーネントの読み出し専用Avalon-MMマスター・インターフェイスをパイプライン処理します。

write_response_bridge_irq_0

(Write response bridge)

HLS Avalon-MMマスター・インターフェイスは、ホストメモリーからの書き込み確認をサポートしていません。このカスタム・コンポーネントは、デザインがすべての未処理のホスト・メモリー・ライトを確認するまで、HLSコンポーネントの割り込み信号を防ぎます。このコンポーネントは、すべての結果をホストメモリーに書き込むまで、デザインがホストに割り込まないことを保証します。このコンポーネントを使用しない場合、デザインがホストメモリーへのすべてのライトをコミットする前に、HLS done割り込みがホスト・アプリケーションに到達する可能性があります。 
図 14. HLS AFUコンテナーのブロック図 

HLSコンポーネントは、単純なベクトル削減を実行します。また、入力ベクトルをホストメモリーにコピーし、各ベクトル値を1.0fずつ増やします。

図 15. 簡略化されたHLSコンポーネント このコードには、削減を実行する基本的なソースコードが含まれています。サイクルごとに単一の32ビット浮動小数点値を読み出し、合計を累積します。
1.	component
2.	float floatingPointVectorReduce_basic(float *masterRead,
3.	                                      float *masterWrite,
4.	                                      int size)
5.	{
6.		float sum = 0.0f;
7.		for (int idx = 0; idx < size; idx++)
8.       {
9.           float readVal = masterRead[idx];
10.          sum += readVal;
11.	
12.          masterWrite[idx] = readVal + 1.0f;
13.      }
14.	
15.		return sum;
16.   }

これは有効なHLSソースコードですが、AFUデザインには不十分です。インテルのアクセラレーション・スタックには、AFUがホストメモリーにアクセスする方法とホストシステムがホストメモリーを認識する方法を規定する特定の要件があります。幸いなことに、HLSは柔軟性が高いため、これらの制約を満たすようにコンポーネントを再構成できます。要件は次のとおりです。

  1. コントロールとパラメーターは、HLSがデフォルトで使用するコンジット・インターフェイスではなく、Avalon-MM I/Oスレーブ・インターフェイスを介して公開する必要があります。
  2. AFUには、システムメモリーにアクセスするための2つのAvalon-MMマスター・インターフェイスがあります。 1つのAvalon-MMマスターを読み出し専用として構成します。もう1つは書き込み専用です。
    • 両方のAvalon-MMマスター・インターフェイスは512ビット幅でなければなりません。
    • 両方のAvalon-MMマスター・インターフェイスは48ビットアドレスを使用する必要があります。