OKI IDS 2015年10月27日 © Copyright 2015 OKI IDS Co., Ltd. OKI IDS Vivado-HLSによるアルゴリズムのHW実装 Vivado-HLSによるCアルゴリズムの高速化手法 Hardware Accelerationによる性能結果/実装結果 Vivado-HLS Summary SDSoCによるアルゴリズムのHW実装 Vivado-HLSでのCアルゴリズムのハードウェア化問題点 Vivado-HLSでのCアルゴリズムのハードウェア化(課題発生実例) Cアルゴリズムのハードウェア化(課題対策手法) SDSoC Summary © Copyright 2015 OKI IDS Co., Ltd. 2 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 3 OKI IDS アルゴリズム概要: Java Scriptにおけるオブジェクト表記法を応用したデータ形式であるJSON(Java Script Object Notation)の構造体内に含まれているキーワード探索を高速に行う探索アルゴリズムを Vivado-HLSを用いて FPGAにハードウェアとして実装。 アルゴリズム要求Spec: 1文字4Byteの140文字(560Byte)で構成される1textを、8192個のキーワードからなる1Mbyte のキーワードテーブルと参照制御を行い、1秒間に8000 text以上のキーワード探索処理を行う。 ●アプリケーションは、探索したいTextを、PCI Expressを介してキーワード探索部 に転送する。 ●キーワード探索部は、Textとキーワードのマッチング処理を行い、その結果を PCI Expressを介してアプリケーションに転送する。 このマッチング処理をVivado HLSによりHardware Accelarate. PCI Express全二重転送によるリアルタアイム・サーチエンジンを構築 © Copyright 2015 OKI IDS Co., Ltd. 4 OKI IDS 課題: ●アルゴリズムは単純だが、処理を並列化して高速に行おうとすると、1クロックで大量の比較演算を 同時に行う必要があり、且つ、入力データ種別も多岐に渡る為、HDL記述の場合、ターゲット回 路やテストベンチの記述が煩雑になる可能性がある。 ● 単純に1文字4Byteの140文字(560Byte)で構成される1textを1Mbyteのキーワード テーブルと、1秒間に8000text以上のキーワード 探索処理を行うには、293.6GHzの CLK性能が必要。 【1Mbyteテーブルデータと140文字/1textのサーチ演算CLK試算】 ●1024KByte/キーワードテーブル ÷ 4Byte/文字 = 262,144 CLK/文字サーチ ●262,144 CLK * 140文字/text = 36,700,160CLK/textサーチ ●8000text/s * 36,700,160CLK/textサーチ = 293,601,280,000CLK = 293.6GHz 対応方策: ●C言語でアルゴリズムを簡潔に記述し、 “Vivado-HLS”にてハードウェア化を行う。 ●“Directive(指示子)”を指定して、簡潔な記述を崩すことなく並列化を行う。 © Copyright 2015 OKI IDS Co., Ltd. 5 OKI IDS 【C言語でアルゴリズムを記述し、Vivado-HLSで実施する事によるメリット】 ターゲット回路とテストベンチの両方を、抽象度の高いC言語で記述/デバッグできる。 EclipseのUIを用いた、各種デバッグが可能 C言語文のハードウェア変換は、 “Directive”(指示子)を用いて、簡潔に指定できる。 UNROLL ARRAY_PARTITION ARRAY_RESHAPE etc… メモリアクセスや、リセット等のインターフェースは、関数の引数の型と指定した Directiveに応じて自動的に生成してくれる。 © Copyright 2015 OKI IDS Co., Ltd. 6 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 7 OKI IDS VIVADO HLSによる高速化の基本は、Directiveを用いて、 ループ処理やデータアクセスを並列化することにある ●並列化の代表例 1) ループ処理の並列化 UNROLL 2) データアクセスの並列化 ARRAY_PARTITION ARRAY_RESHAPE 3) 関数の並列化 DATAFLOW © Copyright 2015 OKI IDS Co., Ltd. 8 OKI IDS TEXTの1文字と、16個のキーワードの全ての文字を比較するサブ関数 • textBuf変数:TEXTの一文字 • keywordBuf配列:キーワード16個 • resultBuf配列:比較結果 • textBufと、keywordBufの全ての要素 のXORを取り、resultBufに代入する © Copyright 2015 OKI IDS Co., Ltd. 9 OKI IDS UNROLL Directive=ループを展開し、ループ処理を並列化する 複数のループ処理を同じクロックで行うようにする ループ 一回目 ループ 二回目 ループ 三回目 ループ 四回目 複数のループにそれぞれ UNROLLを指定すると、ルー プが展開され、 自動的に • キーワード2文字を1ク ロックでリードするよう、 メモリインターフェース がデュアルポートRAM のインターフェースに 置き換わる。 • キーワード2文字分の XORと結果のライトを1 クロックでライトするよ う、回路内部とメモリイ ンターフェースが置き 換わる。 ループ 一回目 ループ 二回目 ループ 三回目 ループ 四回目 LOOP UNROLL ため、UNROLLを指定しな い場合と比べて、レイテン シが1/4になる。 © Copyright 2015 OKI IDS Co., Ltd. 10 OKI IDS ARRAY_PARTITION Directive=配列の要素を分割し、各要素を並列に アクセスできるようにする ポートの数(BRAM)を増やし、複数のデータアクセスを同じクロックで行うようにする 配列[0] リード 配列[1] リード 配列[2] リード 配列[3] リード 配列[0] リード 配列[1] リード ARRAY_PARTITION keywordBuf配列とresultBuf配列に ARRAY_PARTITIONを指定し、ポート数を 増やす事で、 • Text1文字のリード • キーワード16×32文字のリード • TEXT1文字と、キーワード 16×32文字のXOR • 16×32個の結果のライト 配列[2] リード が、1クロック全て行われるようになり、 レイテンシを0とすることが可能 配列[3] リード (組み合わせ論理回路になる) © Copyright 2015 OKI IDS Co., Ltd. 11 OKI IDS ARRAY_RESHAPE Directive=配列の要素を結合し、複数の要素を 並列にアクセスできるようにする ポートのデータ幅を増やし、複数のデータアクセスを同じクロックで行うようにする 配列[0] リード 配列[1] リード 配列[2] リード 配列[3] リード ARRAY_RESHAPE 配列[0]& 配列[1]& 配列[2]& 配列[3] リード • © Copyright 2015 OKI IDS Co., Ltd. ARRAY_PARTITONの指定により組み合わ せ回路に変換されたが、入力ポートと出力 ポートが512個もある回路になる 外部回路との接続が複雑になる 場合がある ARRAY_RESHAPE Directiveにより、ポート 数を増やさずに並列化することもできる • ARRAY_RESHAPEで並列化することにより、 1個の入力ポートと出力ポートに変換される • • データ幅はどちらも8192ビットに なる 外部の回路のインターフェースと接続しやす くなるように、ARRAY_PARTITIONと ARRAY_RESHAPEを使い分ける必要がある。 12 OKI IDS DATAFLOW Directiveにより、関数(回路)を並列化することができる 個々の関数のデータ依存性を自動的に解析し、依存性がなければ 並列化される subDetector_1(a,b) detector(a,b,c,d,e,f,g,h) { subDetector_1(a,b); subDetector_2(c,d); subDetector_3(e,f); subDetector_4(g,h); } subDetector_1(a,b) subDetector_2(c,d) subDetector_3(e,f) subDetector_4(g,h) DATAFLOW subDetector_2(c,d) subDetector_3(e,f) subDetector_4(g,h) © Copyright 2015 OKI IDS Co., Ltd. 13 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 14 OKI IDS PCIe Gen2 4Lane 【回路全体のCLK周波数125MHz(8ns)設定時 Timing Summary】 FPGA PCIe Endpoint iDMAC target_cnt PIO制御 検出処理部 設定/キーワードレジスタ 転送完了 割込み 起動 DMA Ch1 結果 受信用 DMA 起動レジスタ 転送起動 (検出終了 )/面情報 検出処理 BlockRAM 結果 面 検出回路 結果 BlockRAM 結果 B面 DMA Ch0 テキスト 送信用 Constrain Spec:125MHz(8.0ns) Summary Spec: 126.7MHz(7.89ns) 検出回路 検出回路 検出回路 【回路全体のリソース使用量】 XC7V690Tの15%使用率 検出回路 転送完了 (検出開始 )/面情報 検出回路 BlockRAM Text A面 検出回路 Text BlockRAM Text B面 © Copyright 2015 OKI IDS Co., Ltd. 15 OKI IDS 要求Spec 8000/s text以上のキーワード探索処理に対し Summary Spec 8625/s text のキーワード探索処理の性能確保 © Copyright 2015 OKI IDS Co., Ltd. 16 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 17 OKI IDS アルゴリズムのHardware Accelerater開発に最適 © Copyright 2015 OKI IDS Co., Ltd. 18 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 19 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 20 OKI IDS 実は・・・ Vivado-HLSでアルゴリズムをハードウェア 化する際には設計的な課題があります。 アルゴリズム全体をHLS化すると、 回路が膨大になり合成が終わらない。 C言語プログラム中の一部のアルゴリズ ムをHLS化する場合、ハードウェア化し たアルゴリズムを制御するソフトウェア (Driver)は?⇒新規で作成要。 ソフトウェアから制御する為のデータパス (DMA等)は?⇒新規で作成要。 どうする? © Copyright 2015 OKI IDS Co., Ltd. 21 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 22 OKI IDS お客様からの依頼: ARM CPU上で動作しているアルゴリズム含むソフトウェアの性能を向上させたい為、 ZYNQ PL部にアルゴリズムを移植したい。(既存ソフトウェア全てをZYNQに移植) ARM CPU上で動作済ソフトウェア ARM CPU動作soft構成 ・VIDEO IN/OUT Gstreamer Lib ・ALGO OpenCV Lib ORG ALGO Lib ARM CPUからZYNQへのソフトウェア移植および アルゴリズムのアクセラレート開発 © Copyright 2015 OKI IDS Co., Ltd. 23 OKI IDS Open CV LibのHarris ConnerのHLS化(Xilinx Conner Harris)は出来た。 だが、PL部に搭載したConner Harrisを制御する Driver(ソフトウェア)が作れない。 ・Opev CV libとHLS Libでは、関数に与える引 数が違い、従来のDrvは使えない。 ・PL部のConner Harrisにデータを転送する データパス/MemMAPも新規で作らなければ ならない。 ※ソフトウェアシステム全体の解析が要。 HLSは新規アルゴリズムのAccには向いてる ただ、既存ソフトウェアのAccには・・・・ © Copyright 2015 OKI IDS Co., Ltd. 24 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 25 OKI IDS 問題点 解析アルゴリズム部のHard化 Step6:Harris Conner LIBのHLS LIB化 ※Driver組込難。断念 解決策(新手法) ソフトウェア全体の制御フローより抽出すべき アクセラレーション対象をツール上で指定し、 アクセラレーションライブラリと既存ソフトウェア間 の制御パス(Driver/Data Pass)を自動生成 Open CV LibのHarris ConnerのHLS化(Xilinx Conner Harris)は出来た。 だが、PL部に搭載したConner Harrisを制御する Driver(ソフトウェア)が作れない。 ・Opev CV libとHLS Libでは、関数に与える引 数が違い、従来のDrvは使えない。 ・PL部のConner Harrisにデータを転送する データパス/MemMAPも新規で作らなければ ならない。 ※ソフトウェアシステム全体の解析が要。 © Copyright 2015 OKI IDS Co., Ltd. 26 OKI IDS HarrisConner Lib 読み込まれたソフト ウェア内部の 全関数に対し、 HW/SWのSwit chが設定でき、 Accしたい関数を GUIで指定可能。 指定されたAcc対象のソースコードを表示 ※Open CV Harris Conner Lib Source GUIでのAcc指定が可能 © Copyright 2015 OKI IDS Co., Ltd. 27 OKI IDS ARM(PS)上のソフトウェア とConner Harrisを 結ぶData Pass (DMA Data Mover) をSDSOCが自動生成 ARM(PS)上のソフトウェア よりConner Harrisを 制御するDriverも SDSOCが自動生成 Xilinx Conner Harris Lib 断念したConner Harrisの Hardware Accelatarion実現! © Copyright 2015 OKI IDS Co., Ltd. 28 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 29 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 30 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 31 OKI IDS © Copyright 2015 OKI IDS Co., Ltd. 32 OKI IDS HLS Vivado ・開発サイクルの短縮 ・流用設計の容易化 ・設計資産の蓄積 ・SW設計リソースによるFPGA開発 © Copyright 2015 OKI IDS Co., Ltd. 33 OKI IDS ご清聴ありがとうございました © Copyright 2015 OKI IDS Co., Ltd. 34
© Copyright 2025 ExpyDoc