2015年10月27日

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