AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な...

20
XAPP1293 (v1.0) 2016 8 8 1 japan .xilinx.com この資料は表記のバージ ョ ンの英語版を翻訳し たもので、 内容に相違が生じ る場合には原文を優先し ます。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。 概要 IBM Coherent Accelerator Processor Interface (CAPI) は、カスタム アクセラレーション エンジンを POWER8 プロセッサのコ ヒーレント フ ァ ブ リ ッ ク へ接続 し てハ イ ブ リ ッ ド な高性能 ソ リ ュ ーシ ョ ン を 実現 し ま す。 一方で、 ほ と ん ど のザ イ リ ン クス IP は標準インターフェイスとして AXI4 を使用し、Vivado® Design Suite IP インテグレーターでは AXI4 ベースのイン フ ラ ス ト ラ ク チ ャ を用いて複雑な IP システムを構築します。既存のザイ リンクス IP Vivado IP インテグレーションのイ ンフ ラ ス ト ラ クチャに別の目的に利用するには、 このアプ リ ケーシ ョ ン ノートで説明するアダプターを使用して AXI4 ンターフェイスを CAPI に変換する必要があ り ます。 このアプリケーション ノ ー ト では、 AMBA AXI4 to CAPI アダプターの機能、 設計およびインプ リ メ ンテーシ ョ ンについ て説明します。 また、 このアダプターの制限事項についても説明します。 Alpha Data 社の ADM-PCIE-7V3 カードで動作 するサンプル デザインを提供し、 このデザインを使用して、 CAPI で接続されたアクセラレータを含む POWER8 ベース システム向けハイブリ ッド システムを開発する場合の設計フローを紹介します。 ADM-PCIE-7V3 カードは、 Virtex®-7 XC7VX690T-2FFG1157C FPGA をベース と しています。 サンプル デザインの AMBA AXI4 to CAPI アダプターの一部および AFU ( アクセラレータ ファンクション ユニッ ト ) は、 ザイリンクスの Vivado High-Level Synthesis (HLS) ツールを使用して開発されています。 このツールは、 C 言語をソース コー ド と し て高効率で合成可能な Verilog または VHDL コードを生成します。 サンプル デザインを含む は、ザイリンクスのウェブサイトからダウンロードできます。 デザイン フ ァ イ ルの詳細は、 「リファレンス デザイン」 を参照してください。 注記: リファレンス デザインには、 Memcopy アクセラレータ ファンクション ユニッ ト (AFU) も含まれています。 はじめに AXI4 は、 SoC の作成におけ る事実上のプ ロ ト コ ルであ り 、 ザ イ リ ン ク ス IP コアでは標準インターフェイスとして使用さ れています。 AXI4 の詳細は、 『AMBA AXI and ACE Protocol Specification[参照 1] を参照してください。 AXI4 には 3 種類 のインターフェイスがあります。 AXI4: 高性能な メ モ リ マップ方式の通信に使用されます。 1 つのアドレス フェーズで最大 256 データ サイクルの バース ト 転送が可能です。 AXI4-Lite: シンプルで低スループッ トのメモリマップ方式の通信に使用されます。 バース ト転送をサポートする AXI4 とは異なり、 1 つのアドレス フェーズで 1 データ サイ クルの転送をサポー ト し ます。 AXI4-Stream: 高速デー タ ストリーミング アプ リ ケーシ ョ ンに使用されます。 AXI4-Stream は、 ア ド レ ス フェーズの 要件をすべて取り去った、 データ バース ト サイズに制限のないプロ ト コルです。 AXI4 は、 ready/valid のハンドシェイク信号を使用して、 データ転送方向 (順方向 と 逆方向) のフロー制御も可能です。 CAPI とは、 コヒーレント アクセラレータを POWER ベースのシステムに接続する際に用いられる、 基礎構造を表す一般 的な言い方です。 詳細は、 『Coherent Accelerator Processor Interface User's Manual[参照 2] を参照してください。 CAPI を使 用 し た場合、 ハ イ ブ リ ッ ド システムの演算機能や I/O の負担が大きい機能はアクセラレータで駆動され、 アクセラレータ POWER8 プロセッサで駆動されるメイン アプリケーションとコヒーレントな方式で通信します。 アクセラレータは、 プロセッサに対するピアであり、 変更されていない実アドレスを使用して、 ホス ト メ モ リ 内の共有オブジ ェ ク ト へア ク セスします。 また、 システム ソ フ ト ウ ェ アでページ フォルトが処理されるプロセッサのページ テーブルへ直接ア クセス します。 1 に、 CAPI の概要図を示し ます。 アプリケーション ノート : Virtex-7 FPGA XAPP1293 (v1.0) 2016 8 8 AMBA AXI4 to IBM CAPI アダプター 著者: Lisa LiuMark Paluszkiewicz

Transcript of AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な...

Page 1: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

XAPP1293 (v1.0) 2016 年 8 月 8 日  1japan.xilinx.com

この資料は表記のバージ ョ ンの英語版を翻訳したもので、 内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用としてご使用の上、 最新情報につきましては、 必ず最新英語版をご参照ください。

概要

IBM Coherent Accelerator Processor Interface (CAPI) は、 カスタム アクセラレーシ ョ ン エンジンを POWER8 プロセッサのコヒーレン ト ファブリ ッ クへ接続してハイブリ ッ ドな高性能ソ リ ューシ ョ ンを実現します。 一方で、 ほとんどのザイ リ ンクス IP は標準インターフェイス と して AXI4 を使用し、Vivado® Design Suite IP インテグレーターでは AXI4 ベースのインフラス ト ラ クチャを用いて複雑な IP システムを構築します。既存のザイ リ ンクス IP や Vivado IP インテグレーシ ョ ンのインフラス ト ラ クチャに別の目的に利用するには、 このアプリ ケーシ ョ ン ノートで説明するアダプターを使用して AXI4 インターフェイスを CAPI に変換する必要があ り ます。

このアプリ ケーシ ョ ン ノートでは、 AMBA AXI4 to CAPI アダプターの機能、 設計およびインプリ メンテーシ ョ ンについて説明します。 また、 このアダプターの制限事項についても説明します。 Alpha Data 社の ADM-PCIE-7V3 カードで動作するサンプル デザインを提供し、 このデザインを使用して、 CAPI で接続されたアクセラレータを含む POWER8 ベース システム向けハイブリ ッ ド システムを開発する場合の設計フローを紹介します。 ADM-PCIE-7V3 カードは、 Virtex®-7 XC7VX690T-2FFG1157C FPGA をベース と しています。

サンプル デザインの AMBA AXI4 to CAPI アダプターの一部および AFU (アクセラレータ ファンクシ ョ ン ユニッ ト ) は、ザイ リ ンクスの Vivado High-Level Synthesis (HLS) ツールを使用して開発されています。 このツールは、 C 言語をソース コード と して高効率で合成可能な Verilog または VHDL コードを生成します。

サンプル デザインを含むリ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。デザイン ファ イルの詳細は、 「 リ ファレンス デザイン」 を参照して ください。

注記: リ ファレンス デザインには、 Memcopy アクセラレータ ファンクシ ョ ン ユニッ ト (AFU) も含まれています。

はじめに

AXI4 は、 SoC の作成における事実上のプロ ト コルであ り、 ザイ リ ンクス IP コアでは標準インターフェイス と して使用されています。 AXI4 の詳細は、 『AMBA AXI and ACE Protocol Specification』 [参照 1] を参照してください。 AXI4 には 3 種類のインターフェイスがあ り ます。

• AXI4: 高性能なメモ リ マップ方式の通信に使用されます。 1 つのアドレス フェーズで最大 256 データ サイクルのバース ト転送が可能です。

• AXI4-Lite: シンプルで低スループッ トのメモ リマップ方式の通信に使用されます。 バース ト転送をサポートする AXI4 とは異なり、 1 つのアドレス フェーズで 1 データ サイ クルの転送をサポート します。

• AXI4-Stream: 高速データ ス ト リーミ ング アプリ ケーシ ョ ンに使用されます。 AXI4-Stream は、 アドレス フェーズの要件をすべて取り去った、 データ バース ト サイズに制限のないプロ ト コルです。

AXI4 は、 ready/valid のハンドシェイ ク信号を使用して、 データ転送方向 (順方向と逆方向) のフロー制御も可能です。

CAPI とは、 コ ヒーレン ト アクセラレータを POWER ベースのシステムに接続する際に用いられる、 基礎構造を表す一般的な言い方です。 詳細は、 『Coherent Accelerator Processor Interface User's Manual』 [参照 2] を参照してください。 CAPI を使用した場合、 ハイブリ ッ ド システムの演算機能や I/O の負担が大きい機能はアクセラレータで駆動され、 アクセラレータは POWER8 プロセッサで駆動される メ イン アプリ ケーシ ョ ンと コ ヒーレン ト な方式で通信します。 アクセラレータは、プロセッサに対するピアであ り、 変更されていない実アドレスを使用して、 ホス ト メモ リ内の共有オブジェク トへアクセスします。 また、 システム ソフ ト ウェアでページ フォルトが処理されるプロセッサのページ テーブルへ直接アクセスします。 図 1 に、 CAPI の概要図を示します。

アプリケーシ ョ ン ノート : Virtex-7 FPGA

XAPP1293 (v1.0) 2016 年 8 月 8 日

AMBA AXI4 to IBM CAPI アダプター著者: Lisa Liu、 Mark Paluszkiewicz

Page 2: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

はじめに

XAPP1293 (v1.0) 2016 年 8 月 8 日  2japan.xilinx.com

アクセラレータは PSL (Power Service Layer) を使用して、 POWER8 システムと相互作用します。 これは次の 5 つの独立したインターフェイスを介して、 アクセラレータへキャ ッシュ ライン ベースのサービスを提供します。

• 制御インターフェイス : ホス ト上のメ イン アプリ ケーシ ョ ンがアクセラレータを開始、 停止、 またはリセッ トする際に使用するインターフェイスです。

• コマンド インターフェイス : アクセラレータがホス ト メモ リの読み出し /書き込み要求を送信する際に使用するインターフェイスです。

• 応答インターフェイス : アクセラレータにコマンドの完了を知らせるために使用するインターフェイスです。

• 書き込みバッファー /読み出しバッファー インターフェイス : アクセラレータがホス ト メモ リに対してデータを送受信する際に使用するインターフェイスです。

• MMIO (Memory Mapped IO) インターフェイス : ホス ト上のメ イン アプリ ケーシ ョ ンがアクセラレータ内のレジスタへアクセスする際に使用するインターフェイスです。

フロー制御をサポートするため、 PSL には ready/valid ハンドシェイ ク信号があ り ます。 データ /応答は、 コマンドの発行と同じ順序でアクセラレータへ返される とは限り ません。

AMBA AXI4 to CAPI アダプターの機能には、 AXI4、 AXI4-Lite、 AXI4-Stream インターフェイスを 5 つの PSL インターフェイスへ変換する機能、 バース ト幅転送を PSL で使用されるキャ ッシュ ラ イン ベースのデータ転送へ分割する機能、 PSL のアウ ト オブオーダ応答の処理、 および AXI4 で使用される READ/VALID フロー制御プロセスのサポート が含まれます。

X-Ref Target - Figure 1

図 1: AMBA AXI4 to CAPI アダプターの概要図

Page 3: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インプリ メンテーシ ョ ンの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  3japan.xilinx.com

インプリ メンテーシ ョ ンの詳細

AMBA AXI4 to CAPI アダプターは、 柔軟で高性能なアーキテクチャを使用して 3 種類の AXI インターフェイスをサポート します。 このデザインでは、 次の 3 つのモジュールを使用する階層的なデータ フロー アーキテクチャを使用します。

• Low-Level Shim

• High-Level Shim

• AXI-Full/AXI-Lite to AXI-Stream アダプター

図 2 に、 AMBA AXI4 to CAPI アダプターのアーキテクチャを示します。

Low‐Level Shim

Low-Level Shim モジュールは VHDL で設計されており、 PSL アクセラレータ インターフェイスを対応する AXI4-Stream (axis) インターフェイスに変換する際に使用されます。 コマンド ス トールの認識、 クロ ッ ク乗せ換え、 読み出し /書き込みデータ ス ト リームのデカップリ ング、 ローレベル エラー処理 (パリティ エラー )、 バッファー オーバーフロー エラーなどを制御します。

X-Ref Target - Figure 2

図 2: AMBA AXI4 to CAPI アダプター アーキテクチャのブロック図

Page 4: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インプリ メンテーシ ョ ンの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  4japan.xilinx.com

図 3 に、 Low-Level Shim のブロ ッ ク図を示します。

コマンド インターフェイス ブロ ッ クは、 Low-Level Shim から AXI4-Stream コマンドを読み出して、 コマンド、 TAG、CSIZE、 およびアドレスを PSL へ送信します。 また、 応答インターフェイス モジュールからはコマンド ス トール認識用のコマンド クレジッ ト カウン ト (credit_cnt) 値を読み出します。 PSL は、 応答のない 64 以上のコマンドを受信できないため、 64 コマンド クレジッ トがなくなる と、 コマンド インターフェイス モジュールのス トール認識機能によってコマンドの送信が停止されます。 このと き、 コマンド インターフェイス ブロ ッ クは、 cmd AXI4-Stream 信号の ready 信号をディアサート して、 High-Level Shim へのバッ クプレッシャーを生成します。

コマンド ス トール認識のコードを次に示します。

-- command_stall_recognitioncroom_of <= ‘1’ when stall_ptr = cmd_cnt else ‘0’;stall_pntr <= credit_cnt + haX_croom;axi_ready <= ‘0’ when croom_of = ‘1’ else ‘1’;

コードの説明:

• cmd_cnt は、 発行されたコマンド数を示します。

• credit_cnt は、 PSL で処理されたコマンド数を示します。

• haX_croom は、 PSL が受信できるコマンド数を示します。

• stall_ptr、 つま り credit_cnt + haX_croom が cmd_cnt と同じになる と、 コマンド生成マシンがス トールします。

X-Ref Target - Figure 3

図 3: Low‐Level Shim のブロック図

Page 5: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インプリ メンテーシ ョ ンの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  5japan.xilinx.com

図 4 に、 コマンド ス トールの図を示します。

書き込みバッファー インターフェイス ブロ ッ クは、 PSL 書き込みバッファー インターフェイスから TAG 付きのホス ト メモ リ DATA を受信し、 それらを WriteData FIFO へ書き込みます。 その後、 High-Level Shim へ AXI4-Stream 出力を提供します。 エラー (FIFO not ready、 FIFO オーバーフロー、 パリティ エラーなど) が生じた場合は、 制御インターフェイスにもク リ ティカル エラー メ ッセージを送信します。

読み出しバッファー インターフェイス ブロ ッ クは、 High-Level Shim から AXI4-Stream データを受信して、それらを FIFO へ格納します。 AXI4-Stream TDATA 信号には、 キャ ッシュ ラ イン データ と対応するタグが含まれます。 FIFO の出力は、PSL 読み出しバッファー インターフェイスの DATA および TAG バスへ接続されています。 また、 パリティ エラーを検出し、 対応するエラー コードを制御インターフェイスへ送信します。

応答インターフェイス ブロ ッ クは、 PSL から応答情報 (応答コード、 応答タグ、 コマンド生成用のリサイ クル クレジット ) を受信します。 これらの信号は 1 つのデータ バスにカスケード接続されており、 FIFO へ格納されます。 この FIFO を使用して、 AXI4-Stream データを High-Level Shim へ提供します。 また、 コマンド ス トール認識用のコマンド クレジッ ト カウンター値をコマンド インターフェイスへ送信します。 FIFO not ready やパリ ティ エラーは、 このモジュールで監視され、 エラーが検出される と対応する メ ッセージが制御インターフェイスへ送信されます。

MMIO (Memory Mapped I/O) ブロ ッ クは、 OS 起動中にソフ ト ウェア ド ラ イバーへ AFU (アクセラレータ ファンクシ ョ ン ユニッ ト ) の記述子情報を提供します。 OS 起動後、 ホス トは PSL MMIO インターフェイスの信号を 96 ビッ トに連結して FIFO に格納するよ うに要求し、High-Level Shim に AXI4-Stream 信号が提供されます。High-Level Shim から (も と も とはアクセラレータから ) の AXI4-Stream 方式データは、 64 ビッ トの MMIO データに変換されて PSL へ送信され、 このデータが受信される と きに PSL に対してアクセラレータ肯定応答信号が生成されます。

これらのモジュールはすべて、 クロ ッ ク乗せ換えロジッ クを使用するため、 その他のアダプターやアクセラレータは PSL とは異なるクロ ッ ク レートで動作できます。

X-Ref Target - Figure 4

図 4: コマンド  ストールの図

Page 6: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インプリ メンテーシ ョ ンの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  6japan.xilinx.com

High‐Level Shim

High-Level Shim モジュールは HLS を使用して設計されており、 AXI4-Stream 方式の PSL インターフェイスを メモ リ アクセス方式の AXI4-Stream へ変換するために使用されます。

図 5 に、 High-Level Shim のブロ ッ ク図を示します。

High-Level Shim の主な目的は、 キャ ッシュ ライン サイズ (128 バイ ト ) よ り大容量のデータへアクセスできるよ うにサポートするこ とです。 コマンドやデータの分割と再組み立て、 タグ管理、 およびアウ トオブオーダ データや応答のリオーダ リ ングなどを行います。 タグ管理は主にタグの生成や再利用です。 システム リセッ ト信号がディアサート されると、 tagGen ブロ ッ クは 64 個のタグ (つま り PSL がサポートできる未処理コマンドの最大数) を生成し、 それらを freeTags FIFO に格納します。 その後、 tagCmd ブロ ッ クは freeTags FIFO からタグを取得して、 発行される PSL コマンドに取得したタグを付けます。 同時に、 受信した応答タグが decodedResp ブロ ッ クで リオーダ リ ングされて、 freeTags FIFO へプッシュされます。 データ と応答のリオーダ リ ング機能は、 decodeResp ブロ ッ クおよび processWbuf ブロ ッ クで実行されます。 decodeResp ブロ ッ クでは、 受信した応答信号を次のよ うに リオーダ リ ングします。

1. 64 エン ト リ テーブル内の受信した応答を有効な応答と してマークします。

2. issuedCmds FIFO の分類されたコマンド タグを使用して、 有効な情報を取得します。

3. 有効な応答と してインデッ クス付けされたタグを、 tagGen ブロ ッ クで再利用されるよ うに returnedTags へプッシュ、または受信したキャ ッシュ ラインを リオーダするために validRdHostRespTags FIFO へプッシュします。 processWbuf ブロ ッ クでも同様の方法でデータを リオーダします。

cmdDataBreakDown ブロ ッ クはコマンドやデータを分割します。 AXI コマンドを AFU 準拠コマンドに変換したり、 コマンドをキャ ッシュ ラインのメモ リ読み出し /書き込み PSL コマンド (Read_cl_na または Write_na) に分割したり、 各書き込みコマンドにキャ ッシュ ライン サイズのデータを付けて、 その結果をダウンス ト リーム パイプライン ステージへ渡したり します。 afuMemCmdWr バスと afuMemCmdRd バスは 96 ビッ トで、 32 ビッ トのオフセッ ト情報と 64 ビッ トのバイ ト アドレスでの開始アドレス情報を伝搬します。 afuMemDataWr バスは 1024 ビッ ト信号で、 1 サイ クルでキャ ッシュ ライン全体をパイプラインへプッシュするために使用できます。 データを含む各メモリの読み出し /書き込みコマンドの逆アセン

X-Ref Target - Figure 5

図 5: High‐Level Shim のブロック図

Page 7: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インプリ メンテーシ ョ ンの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  7japan.xilinx.com

ブリが完了する と、 生成された PSL コマンドの数と コマンドが読み出しまたは書き込みのいずれかを示すフラグが cmdBrkInfos ス ト リームで genAfuCmdResp モジュールに送信されます。

tagCmd ブロ ッ クは、分割されたキャ ッシュ ラインの読み出し /書き込みコマンド とデータを読み出して、受信したフ リー タグをこれらに加え、 読み出し /書き込みコマンドを 1 つのコマンド ス ト リーム taggedCmds に結合します。

registCmds ブロ ッ クは、 taggedCmds と taggedWrHostData ス ト リームを読み出して、 Low-Level Shim へコマンドを発行します。 その後、 発行したコマンド タグ順に issuedCmds ス ト リームへプッシュし、 発行したコマンドを 64 エン ト リのローカル テーブルに格納します。 ローカル テーブルの各エン ト リは、 5 つの要素を持つタプル <cmd、 address、 csize、 value> を含み、 その 1024 ビッ ト値フ ィールドは、 ホス ト メモ リの書き込みコマンドでのみ使用されます。 ホス ト メモ リの読み出しみ出しコマンドの場合、 この値フ ィールドは空になり ます。 このローカル テーブルは、 エラー応答が errRespTags ス トリームに到達した場合に、 コマンドを再発行するために使用されます。 エラー応答のタグを使用してテーブルにインデックスが作成され、 発行されたコマンドを検索して再び発行できます。

decodeResp ブロ ッ クには 64 エン ト リのローカル テーブルが含まれます。 ローカル テーブルの各エン ト リは、 2 つの要素を持つタプル <response code,、 valid> を含み、 応答/コマンド タグでインデッ クスが作成されます。 Low-Level Shim から応答信号が受信される と、 ローカル テーブルの対応するエン ト リが 1 に設定された有効なフ ィールドでアップデート されます。 issuedCmds ス ト リームからの発行済み PSL コマンドのタグを使用してローカル テーブルを検索し、 有効なフ ィールドが設定されているかチェッ ク します。 設定されている場合は、 tagGen ブロ ッ クでタグが再利用されて応答が genAfuCmdResp ブロ ッ クに返されます。 genAfuCmdResp ブロ ッ クは、 受信した応答数をカウン ト して、 cmdBrkInfo ス トリームの PSL コマンド数と比較します。 これらの値が一致した場合、 ユーザー コマンドに対応する応答が 1 つ生成されて、 High-Level Shim の afuMemCmdResp インターフェイスに渡されます。 一致するタグがある限り動作は継続され、 複数のコマンドが発行されている と複数の応答が受信されます。

processWbuf ブロ ッ クは、 Low-Level Shim から返されたキャ ッシュ ライン データを受信して、 それらを 64 エン ト リのローカル テーブルに格納します。 このデータは応答タグでインデッ クス付けされます。 validRdHostRespTags ス ト リームにタグが到達する と、 processWbuf ブロ ッ クが読み出して、 テーブルのアクセスに使用し、 データを取得します。 取得したデータは、 High-Level Shim の afuMemDataRd インターフェイスに返されます。 こ こで留意すべき点は、 validRdRespTags ス ト リームのタグは、 すでに正しい順序になっているため、 processWbuf ブロ ッ クから返されたデータの順序も整っています。

sAXI2mAXIS

図 6 に示す sAXI2mAXIs モジュールは、 AXI インターフェイスから受信した 5 つのス ト リームを読み込んで、 それらを High-Level Shim で受け入れるこ とができる メモ リ アクセス コマンド とデータ ス ト リームに変換します。wr_path ブロ ックは、 AXI インターフェイスから m_axi_WADDR ス ト リームと m_axi_WDATA ス ト リームを読み出して、 バース ト ベースの m_axi_WADDR 信号をキャ ッシュ ラ インの書き込みコマンド信号、 memWrCmd に変換します。 また同時に m_axi_WDATA 信号で伝搬された 2 つの 64 バイ トのハーフ キャ ッシュ ラ インを 1 つの 128 バイ ト キャ ッシュ ラ インに結合して、 memWrData バスに送信します。 発行されたキャ ッシュ ラ イン幅の書き込みコマンド数が memCmdWrCounters ス ト リームにプッシュ される と、 resp_decoder ブロ ッ クがこれらの情報を用いて High-Level Shim から受信した応答信号をデコード し、 AXI マスター書き込み要求の対応する m_axi_BRESP 信号を生成します。 同様に、AXI マスター読み出しコマンドは rdCmd_Path ブロ ッ クで処理されます。 m_axi_RADDR 信号のバース ト数が rAddrLen ス ト リームにプッシュされる と、 rdData_path がこれらの情報を使用して、 OpenCL カーネルまたは AXIS インターフェイスに接続されたユーザー ロジッ クに m_axi_RLAST 信号を生成します。 rdCmd_path も各 m_axi_RADDR 要求に対して dataShift ビッ ト を生成し、128 バイ ト を受信した rdData_Path ブロ ッ クはアドレス と整列するよ うに左にシフ ト された 64 バイ トであるこ とを示します。

Page 8: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インターフェイスの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  8japan.xilinx.com

図 6 に、 sAXI2mAXIS のブロ ッ ク図を示します。

mmio2axiLite

mmio2axiLite ブロ ッ クは、High-Level Shim モジュールの MMIO インターフェイス経由で伝送されたホス ト mmio 要求を AXI Lite マスター インターフェイスに変換し、 OpenCL カーネルやその他のユーザー機能のレジスタを設定/取得するために使用します。 このモジュールは Verilog で実装されています。 変換は 1 対 1 で行われます。 つま り、High-Level Shim の MMIO ス ト リーム インターフェイスのアドレス、 読み出し /書き込み制御、 入力/出力データ ビットが AXI Lite 信号に直接変換されます。 ただし例外と して、 ユーザーが CAPI を介して MMIO アドレス 8 に 1 を書き込む場合は特別な注意が必要で、 この書き込み動作によって、 PSL 制御インターフェイスへ ah_jdone が発行されることにな り ます。 つま り、 AFU がタスクを完了し、 アンロードの準備が整ったこ とをホス ト ソフ ト ウェアに知らせるこ とにな り ます。 したがって、 ホス ト側のソフ ト ウェア コードでは、 アドレス 8 (PSL の解釈では MMIO アドレス 2) へ MMIO 書き込み 1 を実行した後、ホス ト コードは通常、 cxl_afu_free プロシージャを呼び出して AFU をアンロードします。

インターフェイスの詳細

表 1 では、 CAPI AXI Shim のすべてのポートについて説明しています。 PSL ポートの詳細は、 『AMBA AXI and ACE Protocol Specification』 [参照 1] を参照してください。 AXI 信号の説明は、 『Coherent Accelerator Processor Interface User's Manual』 [参照 2] を参照してください。

X-Ref Target - Figure 6

図 6: sAXI2mAXIS のブロック図

表 1: CAPI AXI Shim のポート一覧

ポート名 I/O 幅 説明

afu_clock 入力 1 High Level-Shim、 sAXI2mAXIS、 mmio2axiLite、 および OpenCL カーネルの駆動に使

用されるク ロ ッ ク。

pwron_reset 入力 1 Low-Level Shim 用のアクティブ High リ セッ ト信号。

PSL ポート

ha_pclock 入力 1 すべての PSL ポートはこのクロ ッ クの立ち上がりエッジに同期。 Gen3 PSL の場合、

このクロ ッ クは 250MHz。

Page 9: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インターフェイスの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  9japan.xilinx.com

PSL コマンド  インターフェイス

ah_cvalid 出力 1 インターフェイス上に有効なコマンドがあるこ とを示す。 この信号は、 各コマンド

に対して 1 サイクル間アサート される。

ah_ctag 出力 8 PSL コマンドの ID。 High-Level Shim で生成され、 PSL バッファーおよび応答イン

ターフェイスのアレイ アドレス と して使用される。

ah_ctagpar 出力 1 ah_ctag 用の偶数パリティ。

ah_com 出力 13 コマンドのオペコードで、 PSL で実行される。

ah_compar 出力 1 ah_com 用の偶数パリティ。

ah_cabt 出力 3 PSL の変換オーダ リ ング ビヘイビア。

ah_cea 出力 64 コマンド用の有効なバイ ト アドレス。

ah_ceapar 出力 1 ah_cea 用の偶数パリティ。

ah_cch 出力 1 AFU 駆動の context モードで、 ah_cea を拡張するために使用するコンテキス ト ハン

ドル。

ah_csize 出力 12 パーシャル ライン コマンド用のバイ ト数。

ha_croom 入力 8 PSL が対応できるコマンド数。

PSL バッファー インターフェイス

ha_brvalid 入力 1 インターフェイス上に有効なデータ転送が存在する場合に、 この信号がアサート さ

れる。

ha_brtag 入力 8 ホス ト メモ リの書き込み要求の ID。

ha_brtagpar 入力 1 ha_brtag 用の偶数パリティ。

ah_brad 出力 4 ホス ト メモ リへ書き込まれるデータのハーフ ラ イン インデッ クス。

ah_brdata 出力 512 ホス ト メモ リへのデータ。

ah_brpar 出力 8 ah_brdata 用の偶数パリティ。

ha_bwvalid 入力 1 インターフェイス上に有効なデータ転送が存在する場合に、 この信号がアサート さ

れる。

ha_bwtag 入力 8 ホス ト メモ リの読み出し要求の ID。

ha_bwtagpar 入力 1 bwtag 用の偶数パリティ。

ha_bwad 入力 6 ホス ト メモ リから読み出されるデータのハーフ ラ イン インデッ クス。

ha_bwdata 入力 512 ホス ト メモ リから読み出されるデータ。

ha_bwpar 入力 8 ha_bwdata 用の偶数パリティ。

PSL 応答インターフェイス

ha_rvalid 入力 1 インターフェイス上に有効な応答信号が存在する場合に、 この信号がアサート される。

ha_rtag 入力 8 要求の ID。

ha_rtagpar 入力 1 ha_rtag 用の偶数パリティ。

ha_response 入力 8 応答コード。

ha_rcredits 入力 9 クレジッ トの 2 の補数値。

ha_rcachestate 入力 2 キャ ッシュ ステートが与えられる。

ha_rcachepos 入力 13 PSL で生成されたキャ ッシュ位置識別子。

PSL MMIO インターフェイス

ha_mmval 入力 1 インターフェイス上に MMIO 転送が存在する場合に、 この信号がアサート される。

ha_mmcfg 入力 1 MMIO は AFU 記述子空間アクセスを表す。

ha_mmrnw 入力 1 1 = 読み出し、 0 = 書き込み

表 1: CAPI AXI Shim のポート一覧 (続き)

ポート名 I/O 幅 説明

Page 10: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インターフェイスの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  10japan.xilinx.com

ha_mmdw 入力 1 1 = ダブル ワード (64 ビッ ト )

0 = ワード  (32 ビッ ト )

ha_mmad 入力 24 MMIO ワード アドレス。

ha_mmadpar 入力 1 ha_mmad 用の偶数パリティ。

ha_mmdata 入力 64 ホス トが書き込むデータ。

ha_mmdatapar 入力 1 ha_mmdata 用の偶数パリティ。

ah_mmack 出力 1 ホス トの書き込み動作が完了し、 読み出しデータが有効であるこ とを通知するため

に、 この信号は 1 サイクル間アサート される必要がある。

ah_mmdata 出力 64 読み出しデータ。

ah_mmdatapar 出力 1 ah_mmdata 用の偶数パリティ。

PSL 制御インターフェイス

ha_jval 入力 1 有効なジ ョブ制御コマンドがある場合に、 この信号がアサート されます。

ha_jcom 入力 8 ジ ョブ制御コマンドのオペコード。

ha_jcompar 入力 1 ha_jcom 用の偶数パリティ。

ha_jea 入力 64 保存/回復アドレス、 スヌープ アドレス、 Ipc 読み出し /書き込みアドレス、 タイム

ベース情報、 llcmd 情報、 または asb event infol。

ha_jeapar 入力 1 ha_jea 用の偶数パリティ。

ah_jrunning 出力 1 アクセラレータが動作しているこ とを示す。

ah_jdone 出力 1 アクセラレータの動作が終了する と、 この信号が 1 サイクル間アサート される。

ah_jcack 出力 1 LLCMD 通知に関連するプロセスを承認する場合に 1 サイクル間アサート される。

ah_jerror 出力 64アクセラレータ エラー コード。 0 = エラーなし。 0 以外の場合、 AFU_ERR_An レジ

スタにデータがキャプチャされ、 PSL_DSISR_An [AE] がセッ ト されて割り込みが生

じる。

ah_jyield 出力 1 PSL にス ト ップ コマンドを発行させるために AFU が有効になる場合、 この信号が 1 サイ クル間アサート される。

ah_tbreq 出力 1 この信号が 1 サイ クル間アサート される と、 現在のタイムベース値でタイムベース

の制御コマンドを送信するよ うに PSL へ要求する。

ah_paren 出力 1 この信号がアサート される と、 アクセラレータがさまざまなインターフェイス バス

上でのパリティ生成をサポートする。

AXI4 ポート

kernel_reset_n 出力 1Low-Level Shim が生成するアクティブ Low のリセッ ト信号で、 High-Level Shim、

sAXI2mAXIS、 mmio2axiLite、 および HLS/OpenCL カーネルを リセッ トする場合に使

用される。

書き込みアドレス チャネル信号

m_axi_gmem_AWVALID 入力 1 書き込みアドレスが有効であるこ とを示す信号。

m_axi_gmem_AWREADY 出力 1 書き込みアドレスが使用可能状態であるこ とを示す信号。

m_axi_gmem_AWADDR 入力 64 書き込みアドレス、 仮想ホス ト メモ リ アドレス。

m_axi_gmem_AWID 入力 1 書き込みアドレス ID。

m_axi_gmem_AWLEN 入力 8 バース ト長。 そのアドレスに関連するデータ転送の数を決定する。

m_axi_gmem_AWSIZE 入力 3 バース ト サイズ。 この信号は、 バース ト中の各転送サイズを示す。

m_axi_gmem_AWBURST 入力 2 バース ト タイプ。 バース ト内で各転送のアドレスがどのよ うに計算されるかを決定

する。

m_axi_gmem_AWLOCK 入力 2 ロ ッ ク タイプ。

m_axi_gmem_AWCACHE 入力 4 メモ リ タイプ。

表 1: CAPI AXI Shim のポート一覧 (続き)

ポート名 I/O 幅 説明

Page 11: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

インターフェイスの詳細

XAPP1293 (v1.0) 2016 年 8 月 8 日  11japan.xilinx.com

m_axi_gmem_AWPROT 入力 3 プロテクシ ョ ン タイプ。

m_axi_gmem_AWQOS 入力 4 QoS (Quality of Service)。

m_axi_gmem_AWREGION 入力 4 リージ ョ ン識別子。

m_axi_gmem_AWUSER 入力 1 ユーザー信号。

書き込みデータ  チャネル信号

m_axi_gmem_WVALID 入力 1 書き込みデータが有効であるこ とを示す信号。

m_axi_gmem_WREADY 出力 1 書き込みデータが使用可能状態であるこ とを示す信号。

m_axi_gmem_WDATA 入力 512 書き込みデータ。

m_axi_gmem_WSTRB 入力 64 書き込みス ト ローブ。 有効なデータをホールド しているバイ ト レーンを示す。

m_axi_gmem_WLAST 入力 1 書き込み動作の最後を示す信号で、 ホス ト メモ リの書き込みバース トの最後の転送

を示す。

m_axi_gmem_WID 入力 1 書き込み ID。

m_axi_gmem_WUSER 入力 1 ユーザー信号。

読み出しアドレス チャネル信号

m_axi_gmem_ARVALID 入力 1 読み出しアドレスが有効であるこ とを示す信号。

m_axi_gmem_ARREADY 出力 1 読み出しアドレスが使用可能状態であるこ とを示す信号。

m_axi_gmem_ARADDR 入力 64 読み出しみアドレス、 仮想ホス ト メモ リ アドレス。

m_axi_gmem_ARID 入力 1 読み出しアドレス ID。

m_axi_gmem_ARLEN 入力 8 バース ト長。 ホス ト メモ リの読み出しバース トの転送数を決定する。

m_axi_gmem_ARSIZE 入力 3 バース ト サイズ。

m_axi_gmem_ARBURST 入力 2 バース ト タイプ。

m_axi_gmem_ARLOCK 入力 2 ロ ッ ク タイプ。

m_axi_gmem_ARCACHE 入力 4 メモ リ タイプ。

m_axi_gmem_ARPROT 入力 3 プロテクシ ョ ン タイプ。

m_axi_gmem_ARQOS 入力 4 QoS (Quality of Service)。

m_axi_gmem_ARREGION 入力 4 リージ ョ ン識別子。

m_axi_gmem_ARUSER 入力 1 ユーザー信号。

読み出しデータ  チャネル信号

m_axi_gmem_RVALID 出力 1 読み出しデータが有効であるこ とを示す信号。

m_axi_gmem_RREADY 入力 1 読み出しデータが使用可能状態であるこ とを示す信号。

m_axi_gmem_RDATA 出力 512 ホス ト メモ リから読み出されるデータ。

m_axi_gmem_RLAST 出力 1 読み出しの最後を示す信号。

m_axi_gmem_RID 出力 1 読み出し ID。

m_axi_gmem_RUSER 出力 1 ユーザー信号。

m_axi_gmem_RRESP 出力 2 読み出し応答。 読み出し転送のステータスを示す。

書き込み応答チャネル信号

m_axi_gmem_BVALID 出力 1 書き込み応答が有効であるこ とを示す信号。

m_axi_gmem_BREADY 入力 1 書き込み応答が使用可能状態であるこ とを示す信号。

m_axi_gmem_BRESP 出力 2 書き込み応答。

m_axi_gmem_BID 出力 1 応答 ID。

m_axi_gmem_BUSER 出力 1 ユーザー信号。

表 1: CAPI AXI Shim のポート一覧 (続き)

ポート名 I/O 幅 説明

Page 12: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザイン

XAPP1293 (v1.0) 2016 年 8 月 8 日  12japan.xilinx.com

リファレンス デザイン

注記: リ ファレンス デザインには、 Memcopy アクセラレータ ファンクシ ョ ン ユニッ ト (AFU) も含まれています。

リ ファレンス デザインには、 図 2 にリ ス ト されているすべてのモジュールが含まれています。 IBM PSL は、 配線済みのネッ ト リ ス ト ファ イル (b_routed_design_adv7gen3.dcp) であ り、 アクセラレータは、 ホス ト メモ リのある部分から別の部分へ 1,024 バイ ト データをコピーするアクセラレータ ファンクシ ョ ン ユニッ ト (AFU) です。 このリ ファレンス デザインのホス ト コードは、 ソース ホス ト メモ リ とデスティネーシ ョ ン ホス ト メモ リ を割り当て、 ソース メモ リのコンテンツを実行し、 デスティネーシ ョ ン メモ リでその結果を検証します。

AFU は C プログラ ミ ング言語で実装され Vivado HLS ツールでコンパイルされた後に、データ転送用の AXI-Full インターフェイス と制御レジスタの読み出し /書き込み動作用の AXI-Lite インターフェイスを備えた Verilog/VHDL モジュールを生成しています。 AFU の C コードは次のとおりです。

#include <string.h>#include "ap_int.h"void opencldesign_wrapper(ap_uint<512> *a, ap_uint<512> *output){#pragma HLS INTERFACE m_axi port=a offset=slave bundle=gmem#pragma HLS INTERFACE m_axi port=output offset=slave bundle=gmem#pragma HLS INTERFACE s_axilite port=a bundle=control#pragma HLS INTERFACE s_axilite port=output bundle=control#pragma HLS INTERFACE s_axilite port=return bundle=control

ap_uint<512> bufa[16];

memcpy(bufa, (ap_uint<512> *) a, 16*64); memcpy((ap_uint<512> *) output, bufa, 16*64); return;}

AXI4‐Lite のポート

s_axi_control_AWVALID 出力 1 書き込みアドレスが有効であるこ とを示す信号。

s_axi_control_AWREADY 入力 1 書き込みアドレスが使用可能状態であるこ とを示す信号。

s_axi_control_AWADDR 出力 17 書き込みアドレス、 MMIO アドレス。

s_axi_control_WVALID 出力 1 書き込みデータが有効であるこ とを示す信号。

s_axi_control_WREADY 入力 1 書き込みデータが使用可能状態であるこ とを示す信号。

s_axi_control_WDATA 出力 32 書き込みデータ、 アクセラレータ内のレジスタに書き込まれるデータ。

s_axi_control_WSTRB 出力 4 書き込みス ト ローブ。

s_axi_control_ARVALID 出力 1 読み出しアドレスが有効であるこ とを示す信号。

s_axi_control_ARREADY 入力 1 読み出しアドレスが使用可能状態であるこ とを示す信号。

s_axi_control_ARADDR 出力 17 読み出しデータ、 アクセラレータ内のレジスタの MMIO アドレス。

s_axi_control_RVALID 入力 1 読み出しデータが有効であるこ とを示す信号。

s_axi_control_RREADY 出力 1 読み出しデータが使用可能状態であるこ とを示す信号。

s_axi_control_RDATA 入力 32 読み出しデータ。

s_axi_control_RESP 入力 2 読み出し応答で、 MMIO 読み出し動作が完了したこ とを示す。

s_axi_control_BVALID 入力 1 書き込み応答が有効であるこ とを示す信号。

s_axi_control_BREADY 出力 1 書き込み応答が使用可能状態であるこ とを示す信号。

s_axi_control_BRESP 入力 2 書き込み応答。

表 1: CAPI AXI Shim のポート一覧 (続き)

ポート名 I/O 幅 説明

Page 13: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザインの実行

XAPP1293 (v1.0) 2016 年 8 月 8 日  13japan.xilinx.com

このアプリ ケーシ ョ ン ノートの 「 リ ファレンス デザイン」 は、 ザイ リ ンクスのウェブサイ トからダウンロードできます。

デザイン  ファイルの階層

図 7 に、 最上位フォルダー (ibm_capi) の下のディレク ト リ構造を示します。

リファレンス デザインの実行

必要なハードウェアとソフ トウェア

• Alpha Data 社製の高性能で再コンフ ィギュレーシ ョ ン可能な演算カード ADM-PCIE-7V3 [参照 3]。 このカードは、Virtex-7 XC7VX690T-2FFG1157C FPGA をベース と しています。

• IBM 社の POWER8 プロセッサ搭載 「IBM Power Systems」 サーバー

° システム コンフ ィギュレーシ ョ ン: モデル 8247-21L

° オペレーティング システム: Ubuntu 15.04

• Windows 7 または Linux Red Hat 5.1 を使用する X86 ベース コンピュータ。 X86 ベースのコンピュータを使用して、Vivado Design Suite および Vivado HLS ツールで FPGA コンフ ィギュレーシ ョ ン ファ イルを構築します。 Windows または Linux OS はこれらよ り新しいバージ ョ ンでも問題あ り ません。

• ザイ リ ンクスのプラ ッ ト フォーム ケーブル USB II (製品番号 HW-USB-II-G)。 X86 コンピュータを ADM-PCIE-7V3 へ接続し、 FPGA をプログラムする際に必要です ( 『プラ ッ ト フォーム ケーブル USB II データシート 』 (DS593) [参照 4] 参照)。

必要なソフ トウェア

X86 コンピュータには次のソフ ト ウェアが必要です。

• Vivado Design Suite 2015.4

• 「 リ ファレンス デザイン」

X-Ref Target - Figure 7

図 7:ディレク ト リ構造

b_route_design_adv7gen3.dcp

Page 14: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザインの実行

XAPP1293 (v1.0) 2016 年 8 月 8 日  14japan.xilinx.com

ADM‐PCIE‐7V3 カードのインストール

重要: 製造メーカーの推奨事項に従って、 ADM-PCIE-7V3 カードを正し く実装し、 電源要件と適切な冷却方法を適用してください。 詳細は、 『Alpha Data ADM-PCIE-7V3 User Manual』 [参照 3] を参照してください。

1. ADM-PCIE-7V3 カードの裏面にある DIP スイ ッチ SW1 を確認し、 図 8 に示すよ うに設定します。

2. ADM-PCIE-7V3 カードを 8247-21L POWER8 サーバーのスロ ッ ト P1-C7 に取り付けます。

注記: スロ ッ ト P1-C7 と P1-C6 は CAPI 対応です。

X86 コンピュータのセッ トアップ

1. コンピュータにインス トールされていない場合:

a. Linux をインス トールします。

b. Vivado Design Suite バージ ョ ン 2015.4 (Vivado HLS ツールを含む) をホス ト コンピュータにインス トールします。

重要: vivado および vivado_hls コマンドを含むフォルダーを PATH 環境変数の設定に含めてください。

デザインの構築

1. リ ファレンス デザイン ファ イルを X86 コンピュータ と POWER8 サーバーのク リーンなディ レク ト リに解凍します。

2. X86 コンピュータ上で、 インス トール ディ レク ト リから次のディ レク ト リへ移動します。ibm_capi/afus/memcpy_sdaccel/scripts

3. コマンド ラインで 「source ./make_hw.sh」 と入力します。

source ./make_hw.sh は、Vivado Design Suite を実行して、CAPI AXI shim と memcpy AFU を含むプロジェク ト を開き IP コアの合成を開始します。

X-Ref Target - Figure 8

図 8: ADM‐PCIE‐7V3 カードの SW1 の設定

2 3 41

On

Off

Pin

1

Page 15: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザインの実行

XAPP1293 (v1.0) 2016 年 8 月 8 日  15japan.xilinx.com

4. IP コアが合成された後、 図 9 に示すよ うに Tcl コンソールに 「source ../scripts/synImpDesign.tcl」 と入力します。

5. Vivado Design Suite を終了します。図 10 に示すよ うに、プロジェク トの保存を問う ウ ィンド ウでは、 [Don't Save] をクリ ッ ク します。

6. ibm_capi/afus/memcpy_sdaccel/scripts へ移動します。

7. 「vivado -mode batch -source write_bitstream.tcl」 と入力して、 ibm_capi/afus/memcpy_sdaccel ディ レク ト リに psl_fpga_flash.bin という コンフ ィギュレーシ ョ ン ファ イルを生成します。

X-Ref Target - Figure 9

図 9: TCL コンソール

X-Ref Target - Figure 10

図 10: プロジェク トは保存しない

• • • • • • •• • • • • •

Page 16: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザインの実行

XAPP1293 (v1.0) 2016 年 8 月 8 日  16japan.xilinx.com

フラッシュ  メモリに初期 CAPI デザインをプログラム

注記: このタスクの実行は一度のみにします。

1. 図 11 に示すよ うに、 X86 コンピュータ、 プラ ッ ト フォーム ケーブル USB II、 ADM-PCIE-7V3 を接続します。

2. X86 コンピュータで Vivado Design Suite を駆動します。

3. [Open Hardware Manager] をダブルク リ ッ ク します。

4. ポップアップ ウ ィンド ウで、 [Open target] → [Auto Connect] をク リ ッ ク します。

5. 図 12 に示すよ うに xc7690t_0 デバイスを右ク リ ッ ク して、 [Add Configuration Memory Device] をク リ ッ ク します。

X-Ref Target - Figure 11

図 11: JTAG プログラ ミング接続

X-Ref Target - Figure 12

図 12: [Add Configuration Memory Device] の選択

Wally

Page 17: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザインの実行

XAPP1293 (v1.0) 2016 年 8 月 8 日  17japan.xilinx.com

6. 図 13 に示すよ うに、 [Add Configuration Memory Device] ウ ィンド ウで、 デバイスのエリ アス名 「28F00AG18F」 を検索します。 [OK] をク リ ッ ク します。

7. [Program Configuration Memory Device] ウ ィンド ウで [Configuration file] に 「ibm_capi/tools/psl_fpga.mcs」 と入力します (図 14)。 [OK ] をク リ ッ ク して、 コンフ ィギュレーシ ョ ン プロセスを開始します。

8. コンフ ィギュレーシ ョ ン プロセス完了後、 POWER8 サーバーをパワー サイ クル (一度電源を切断して、 再び電源を投入する ) して、 .bin ファ イルを受信するために ADM-PCIE-7V3 カードを有効にします。

X-Ref Target - Figure 13

図 13: コンフ ィギュレーシ ョ ン  メモリの選択

X-Ref Target - Figure 14

図 14: コンフ ィギュレーシ ョ ン  ファイルの選択

• • • • • • •• • • • • •

Page 18: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

まとめ

XAPP1293 (v1.0) 2016 年 8 月 8 日  18japan.xilinx.com

AXI4 to CAPI アダプターを実行

1. ルート ユーザーと して POWER8 サーバーにログインします。

重要: LD_LIBRARY_PATH 環境変数に ibm_capi/lib/libcxl-master パスが含まれているこ とを確認します。

2. X86 コンピュータから、 コンフ ィギュレーシ ョ ン ファ イル psl_fpga_flash.bin をディ レク ト リ ibm_capi/tools の POWER8 サーバーにコピーします。

3. POWER8 サーバーで ./capi_flash_xilinx_ad.sh psl_fpga_flash.bin を実行します。

この動作では、 まず最初に psl_fpga_flash.bin の FPGA コンフ ィギュレーシ ョ ン ファ イル (ビッ ト ファ イルとも言う ) を ADM-PCIE-7V3 カードへ転送し、 その後に FPGA を リセッ ト します。 FPGA カードがリセッ ト された後、フラ ッシュ メモ リ内の新しい FPGA コンフ ィギュレーシ ョ ン ファ イルが FPGA コンフ ィギュレーシ ョ ン メモ リにロード され、 FPGA はそのコンフ ィギュレーシ ョ ン メモ リに基づいて動作を開始します。

4. ibm_capi/lib/libcxl-master ディ レク ト リに移動します。

5. 「make」 と入力します。 make コマンドは、 POWER8 サーバーの X86 アプリ ケーシ ョ ンで使用されるライブラ リ を構築します。

6. ibm_capi/afus/memcpy_sdaccel/sw/native へ移動します。

7. 実行可能なアプリ ケーシ ョ ンを作成します。

a. 次を実行します。 cp Makefile_POWER8 Makefilemake

a. 「./capi_memcpy」 と入力します。

正しい出力は図 15 のよ うにな り ます。

まとめ

このアプリ ケーシ ョ ン ノートでは、 AMBA AXI4 to CAPI アダプター リ ファレンス デザインの設計およびインプリ メンテーシ ョ ンについて説明しました。 このアダプターを使用するこ とで、 既存の IP コアを別の方法で利用できるよ うにした り、 C または OpenCL などの高水準言語でハードウェア機能を実装して、 CAPI ベース ハイブリ ッ ド システムの開発時間を短縮します。 こ こでは、 アダプターの使用法を示すために memcpy サンプル デザインを提供しています。

X-Ref Target - Figure 15

図 15:実行可能なアプリケーシ ョ ンの出力

• • • • • • •• • • • • •

Page 19: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

リファレンス デザイン

XAPP1293 (v1.0) 2016 年 8 月 8 日  19japan.xilinx.com

リファレンス デザイン

注記: このリ ファレンス デザインには、 Memcopy AFU (アクセラレータ ファンクシ ョ ン ユニッ ト ) も含まれています。

このアプリ ケーシ ョ ン ノートの リ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。 表 2 に、 リ ファレンス デザインの詳細を示します。

表 2: リファレンス デザインの詳細

パラメーター 説明

全般

開発者 Lisa Liu、 Mark Paluszkiewicz

ターゲッ ト デバイス Virtex-7 XC7VX690T-2FFG1157C FPGA

ソース コードの提供 あ り

ソース コードの形式 HDL および C

既存のザイ リ ンクス アプリ ケーシ ョ ン ノート / リ ファレンス デザイン、 またはサードパーティからデザインへのコード /IP コアの使用

なし。デザインは Vivado Design Suite の IP カテゴ リーから標準ザイ リ ンクス IP コアを使用。

シミ ュレーシ ョ ン

論理シ ミ ュレーシ ョ ンの実施 なし

タイ ミ ング シ ミ ュレーシ ョ ンの実施 なし

論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョンでのテス トベンチの利用

N/A

テス ト ベンチの形式 N/A

使用したシ ミ ュレータ /バージ ョ ン N/A

SPICE/IBIS シ ミ ュレーシ ョ ンの実施 なし

インプリ メンテーシ ョ ン

使用した合成ツール/バージ ョ ン Vivado Design Suite 2015.4

使用したインプリ メンテーシ ョ ン ツール/バージ ョ ン Vivado Design Suite 2015.4

スタティ ッ ク タイ ミ ング解析の実施 Vivado Design Suite 2015.4

ハードウェア検証

ハードウェア検証の実施 あ り

使用したハード ウェア プラ ッ ト フォーム Alpha Data 社製 ADM-PCIE-7V3 高性能で再コンフ ィギュレーシ ョ ン可能な演算カード

Page 20: AMBA AXI4 to IBM CAPI アダプター (XAPP1293) · コードとして高効率で合成可能な Verilog または VHDL コードを生成します。 ... アクセラレータは

参考資料

XAPP1293 (v1.0) 2016 年 8 月 8 日  20japan.xilinx.com

参考資料

1. 『AMBA AXI and ACE Protocol Specification』https://developer.arm.com/products/architecture/amba-protocol/amba-4

2. 『Coherent Accelerator Processor Interface User’s Manual Xilinx Edition』http://www.alpha-data.com/pdfs/capi-ref-design-user-guide.pdf

3. 『Alpha Data ADM-PCIE-7V3 high-performance reconfigurable computing card』http://www.alpha-data.com/dcp/products.php?product=adm-pcie-7v3

4. 『Platform Cable USB II データシート 』 (DS593)

改訂履歴

次の表に、 この文書の改訂履歴を示します。

法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開

示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適用される

法律が許容する最大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供され、 ザイ リ

ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または貴社による本情報の使用

を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わない (契約上、 不法行為上 (過失の

場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害には、 直接、 間接、 特別、 付随的、 結

果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の損失、 その他あらゆる種類の損失や損害を

含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能であったり、 ザイ リ ンクスがそれらの可能性につい

て助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に含まれるいかなる誤り も訂正する義務を負わず、 本情

報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いません。 事前の書面による同意のない限り、 貴殿または貴社

は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と と

なるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照して ください。 IP コアは、 ザイ リ ンクスが貴殿

または貴社に付与したライセンスに含まれる保証と補助的条件に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、

または、 フェイルセーフの動作を要求するアプリ ケーシ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな

重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。

https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性の機

能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セーフティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用前または提供前

に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品を使用する リ スクは

すべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2016 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれるその

他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれの保有者に帰属

します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの右下

にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で入力可能

です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており

ません。 あらかじめご了承ください。

日付 バージョ ン 内容

2016 年 8 月 8 日 1.0 初版