FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール

招待論文
FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール*
実† a)
渡邊
中條
佐野健太郎†† b)
高前田伸也††† c)
三好
健文††††,††††† d)
拓伯†††††† e)
Japanese High-level Synthesis Tools for FPGA Hardware Acceleration∗
Minoru WATANABE†a) , Kentaro SANO††b) , Shinya TAKAMAEDA†††c) ,
Takefumi MIYOSHI††††,†††††d) , and Hironori NAKAJO††††††e)
あらまし 近年,FPGA は家電製品,自動車,そして宇宙システムと幅広い用途に使用されている.しかし,
2000 年代前半まで,FPGA は ASIC と比較して性能が低く,試作,テスト,研究用途に用いられただけで,量
産品に対してはコストあたりの性能に秀でた ASIC が多用されてきた.これが変わるのが 2000 年代後半であり,
FPGA は最先端のプロセスが利用できる数少ない集積回路の一つとなり,高性能な製品を生み出す主役の座に躍
り出た.その代表的なものの一つに FPGA を利用したハードウェア・アクセラレータがあり,その有効性につ
いては,Microsoft が Bing 検索に用いるデータセンターに対して FPGA を用いたサーバーを開発したり,Intel
社が Xeon プロセッサに FPGA を実装する等,もはや疑う余地がなくなったと言える.そして今日,FPGA ベ
ンダーは開発に多大な工数を要したハードウェア記述言語 (HDL) の代わりに,C++から FPGA への回路実装
が可能な汎用的な高位合成ツールの提供を開始している.このような皆高位合成ツール時代の FPGA 開発におい
て,各企業が他社との優位性を確保するためには,これら万人向けに作られた汎用高位合成ツールやベンダーか
ら提供される HDL 開発環境等を活用するだけでなく,汎用ツールの弱点を補完でき,より高性能な製品をより
少ない工数で開発できる特定用途向けのツール群が必要になる.本論文では既に広く有効性が認知された汎用的
な高位合成ツールではなく,まだ認知度が低いが日本で独自に開発が進められる「日の丸」ツール群を紹介する.
キーワード
フィールド・プログラマブル・ゲートアレイ,ハードウェア記述言語,高位合成
1. ま え が き
†
静岡大学大学院総合科学技術研究科,浜松市
Graduate School of Science and Technology, Shizuoka
近年,FPGA (Field Programmable Gate Array)
University, 3–5–1 Johoku, Hamamatsu-shi, 432–8561
[1], [2] は家電製品 [3], [4],自動車 [5], [6],そして宇宙
Japan
††
東北大学大学院情報科学研究科,仙台市
システム [7] と幅広い用途に使用されるようになって
Graduate School of Information Sciences, Tohoku Uni-
きた.
versity, 6–6–01 Aramaki Aza Aoba, Aobaku, Sendai-shi,
FPGA は Look-Up Table (LUT) やスイッチング
980–8579 Japan
†††
北海道大学大学院情報科学研究科,札幌市
Graduate School of Information Science and Technology,
††††
Hokkaido University, Kita 14, Nishi 9, Kita-ku, Sapporo-
グラムできるアーキテクチャ [8] を採るが,そのアー
shi, 060–0814 Japan
キテクチャゆえに,同じプロセスで作られた ASIC
わさらぼ合同会社,町田市
WasaLabo, LLC., Machida-shi, 194–0045 Japan
†††††
(株) イーツリーズ・ジャパン,八王子市
e-trees.Japan, Hachioji-shi, 192–0045 Japan
††††††
マトリックスを用いることで回路を自由自在にプロ
(Application Specific Integrated Circuit) [9] やフル
カスタム集積回路 [10] と比較すると,動作周波数や消
東京農工大学大学院工学研究院,小金井市
費電力の性能面で大きく劣り,またダイサイズも大き
Institute of Engineering, Tokyo University of Agriculture
くなり,コストの面でも大きく劣る [11].それゆえに
and Technology, 2–24–16 Naka-cho, Koganei-shi, 184–
8588 Japan
XILINX 社や ALTERA 社が設立されてから 2000 年
a) E-mail: [email protected]
代前半まで,FPGA は量産前の試作,ASIC の試作前
b) E-mail: [email protected]
のテスト,若しくは研究用途等に限られて使用され,
c) E-mail: [email protected]
d) E-mail: [email protected]
量産品に対してはコストあたりの性能に秀でた ASIC
e) E-mail: [email protected]
が多用されてきた.
* 本論文はシステム開発・ソフトウェア開発論文である.
DOI:10.14923/transcomj.2016JBI0002
電子情報通信学会論文誌
しかし,65nm プロセス技術が導入された 2000 年
c 一般社団法人電子情報通信学会 2017
B Vol. J100–B No. 1 pp. 1–10 1
電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1
代中頃から先端プロセスのイニシャルコストの高騰が
んに行われてきており,1980 年から研究を始め,世
急激に進み,ASIC が最先端のプロセスを使用できず
界に先駆けてハードウェア記述言語と論理合成,圧縮
に苦戦することになった.その一方で FPGA は新し
システムを世に出した NTT の Parthenon [24],1993
いプロセス技術が生まれるたびに即座にそれを導入し,
年より世界に先駆けて C 言語レベルの設計を可能にし
高性能な量産品を生み出す主役の座に躍り出た [12].
た NEC の CyberWorkBench [25] などの優れたツー
Microsoft が Bing 検索に用いるデータセンターに対
ルが開発されている.NEC の CyberWorkBench は
して Stratix V FPGA [1] を用いたサーバーを開発し
FPGA への利用の実績も豊富であり,効率の高い並列
た事例 [13] や,Intel 社が Altera 社を買収し,Xeon
システムを簡単に生成することが可能であり,アーキ
プロセッサに FPGA を実装した事例 [14] などがその
テクチャ探索を高速に行うことができる点で FPGA
代表例であろう.
ハードウェアによるアクセラレータ用のツールとして
このように FPGA が高性能な製品に幅広く使用さ
も優れた特徴をもっており,高く評価されている.
れ,プロセッサや GPGPU (General-purpose com-
このような皆高位合成ツール時代の FPGA 開発に
puting on graphics processing units) をも凌駕する
おいて,各企業が他社との優位性を確保するためには
ハードウェア・アクセラレータ [15]∼[18] として使用で
これら万人向けに作られた汎用高位合成ツールやベン
きるようになった背景にはレトロプロセスの ASIC と
ダーから提供される HDL 開発環境等を活用するだけ
最先端のプロセスの FPGA との間で性能差が縮まって
でなく,汎用ツールの弱点を補完でき,より高性能な
きたことと,フルカスタム集積回路 [10] と性能的にな
製品をより少ない工数で開発できる特定用途向けの
んら遜色のない ARM プロセッサ [19],DSP (Digital
ツール群が必要になると考えている.本論文では既に
Signal Processor),BRAM (Block Random Access
広く有効性が認知された汎用的な高位合成ツールでは
Memory),PCI Express,高速シリアル I/O 等のカ
なく,まだ認知度は低く,著者達が日本で独自に開発
スタム設計されたハードマクロが多種,かつ多数実装
を進め,性能や工数削減の面で優れた特定用途向けの
されるようになったからである.最新の FPGA には
「日の丸」ツール群を紹介する.日本人開発者による
浮動小数点演算が可能な DSP さえも導入されようと
日本語でのサポートが期待できるツールでもある.
している [20].
また一方で,通信機器においても FPGA は多用さ
れている.FPGA ベンダーも通信用途が重要である
ことを良く理解しており,FPGA は高速な通信ポー
2. 高位合成(HLS)ツールの現状と特定
用途向けツール群
FPGA の大規模化が進む今,この回路の大規模
トを実装し続けている.2011 年には ALTERA 社と
化に対応するためには,特殊な例を除き高位合成
AVAGO Technology 社が FPGA チップ内に光通信
(HLS) を使用することが今後必須になるが,高位
インターフェースを実装した先駆的な光 FPGA も開
合成 (HLS) による設計では,ハードウェア記述言
発している.このチップの通信速度は 120 Gbps にも
語 (HDL),RTL (Register Transfer Level) と比較
達する.今や通信機器においても FPGA が不可欠と
して回路の性能が劣る場合が多い.例えば,ハード
なっている.このように,誰もが FPGA の有効性に
ウェア・アクセラレータの実装技術を競い合ってい
疑いをもたず,FPGA を使う時代を迎えたと言える.
る ICFPT (International Conference on Field Pro-
そして今日,FPGA メーカーである XILINX 社や
grammable Technology) や HEART (International
ALTERA 社は,豊富な経験をもつエンジニアでさ
Symposium on Highly-Efficient Accelerators and
えも困難で時間のかかっていたハードウェア記述言
Reconfigurable Technologies) の FPGA デザインコ
語 (HDL:Hardware description language) [21] の代
ンテストの結果からは,残念ながら,高位合成 (HLS)
わりに,C++から FPGA への回路実装が可能な汎
ツールの回路がハードウェア記述言語 (HDL) の回路
用的な高位合成 (HLS: High-level synthesis) ツール,
よりも劣ることが示されている.例えば,Non-binary
VivadoHLS [22] や OpenCL [23] の提供を開始してい
LDPC Decoders [26] の実装例では VivadoHLS の合
る.誰もが高位合成ツールを使用できる時代を迎えて
成結果は RTL の 50%の性能であると報告されている.
いる.
この問題に対し,近年では,設計対象に特化した最適
実は,ハードウェア設計ツールの開発は国内でも盛
2
化を施した特定用途向け高位合成 (HLS) ツールが開
招待論文/FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール
発されており,これらを使用することで性能問題を緩
Processing Description) を定義している.関数呼び
和できるようになった.また,高位合成 (HLS) ツール
出しでは,SPGen の標準 HDL ライブラリの他,ユー
には,更に簡易な設計を可能とすることも求められて
ザが独自に記述した HDL モジュールを使用すること
おり,90 年代から事例のある C 言語に加え,JAVA,
により,数値計算以外の様々なストリーム処理を自由
Python,Fortran など利便性の高い言語による開発も
に記述できる.また,別の SPD により記述したスト
サポートされている.本論文では,これら FPGA 向
リーム計算コアを呼び出すことも可能であり,例えば,
け高位合成ツールに関する近年の動向を紹介し,設計
計算要素を相互に接続してアレー構造の大規模実装を
品質の改善例と,多種の言語による設計の例を示す.
簡潔に記述できる.4 については,目標動作周波数を
本論文では,まず,3. において,ストリーム計算の
指定して計算パイプライン部分の段数を調整可能とし
合成に特化することでハードウェア記述言語 (HDL)
ている.
並の合成結果を生み出すことができる高位合成コンパ
3. 2 SPD 形式
イラ,SPGen を紹介する.ここでは,新規に工数の削
図 1 に,SPD 記述例を示す.3∼7 行は計算コアの
減効果について明らかにする.また,4. では,ハード
名前と入出力の定義である.この例では,主入力イン
ウェア設計を徹底的に効率化するために Python の言
ターフェース mi とその変数 x1,x2,x3,x4 及び,主出
語機能を活用したコンパイラ,Veriloggen について示
力インターフェース mo とその変数 z1, z2 を定義して
す.ここでは世界で初めて Veriloggen を紹介し,その
いる.また,計算途中の入出力インターフェースであ
使用方法,実装結果について明らかにする.また,5.,
る支流として,入力 bi とその変数 bi1 及び出力 bo と
6. では Java を用いた高位合成 (HLS) ツールで,汎
その変数 bo1 を定義している.9∼12 行では,単一代
用的なツールでありながら HDL モジュールとの親和
入文によりストリーム計算を定義している.全ての演
性を考慮して設計されている Synthesijer 及び,マル
算は 32 ビットの単精度浮動小数点数により行われる.
チプロセッサからの FPGA 運用で威力を発揮し,演
式の間の依存関係は,変数名の一致により表現されて
算レベルの並列性とアクセラレータの仮想化を目指
いる.13 行では,出力変数 bo1 に中間変数 t2 の内容
す JavaRock-Thrash を紹介する.ここでは,世界で
を代入している.
初めて Synthesijer,JavaRock-Thrash の機能を紹介
また,図 2 に,図 1 の計算コアを相互接続する記述
し,実装結果について報告する.そして最後に,スー
例を示す.5∼7 行の HDL で始まる記述は,関数呼び
パーコンピュータ向けの Fortran の設計資産を効率的
出しの形で計算コア Core を組み込んでいる.左辺は
にハードウェア化できる新しい高位合成 (HLS) ツー
コアの出力変数,右辺は入力変数を示す.続く二つの
ル,FortRock を世界で初めて紹介する.
括弧のうち最初のものは主流の入出力を,二つ目のも
のは支流の入出力を示す.このような HDL モジュー
3. ストリーム計算用高位合成コンパイラ
SPGen
ル呼び出しにより,計算コアの詳細記述とその相互接
3. 1 概
び出しには,SPD で記述したコアの他に,SPGen の
要
SPGen は,入力データストリームの各要素に対し
続を階層的に分けて記述できる.HDL モジュール呼
標準ライブラリモジュールを利用することができる.
主に浮動小数点演算から成る計算を繰返し行うような
高性能ストリーム計算 [27] を対象としている.入出力
データストリームの各要素は,複数の数値からなるベ
クタである.また,入力から出力までの計算遅延は任
意とできる.SPGen は以下の要件を満たす.
( 1 ) 抽象的な計算記述からパイプラインを合成
( 2 ) HDL で書かれた様々なモジュールを使用可能
( 3 ) 設計の再利用と階層的モジュール設計が可能
( 4 ) パイプラインの段数を制御可能
1,2,3 に対して,数式の単一代入文と関数呼び出しが
可能な独自のストリーム処理記述形式 SPD (Stream
図 1 ストリーム計算に対する SPD 記述例
Fig. 1 SPD code example for stream computing.
3
電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1
図 2 図 1 の計算コアを相互接続する SPD 記述
Fig. 2 SPD code example for connection of cores defined in Fig.1.
図 4 FPGA による津波シミュレーション結果 (アリュー
シャン列島付近での地震発生の 50 分後の様子)
Fig. 4 Result of FPGA-based tsunami simulation,
50 minute after earthquake occurred near the
Aleutian islands.
る 2 次元流体計算 [33],フラクショナルステップ法に
よる 2 次元の非圧縮性流体計算 [34],浅水方程式によ
る津波計算 [35] を実装し,その動作と有用性を確認済
みである.図 4 は,FPGA による津波計算結果であ
る.格子ボルツマン法の例では,Arria 10 10AX115
図 3 SPGen のコンパイルフロー
Fig. 3 Compilation flow of SPGen.
FPGA に 225 MHz 動作の計算要素 (PE) を 18 個実
装し,525 GFlops の実効性能を達成している.また,
新たな知見として,SPGen を用いることで工数が圧
ライブラリには,例えば,選択,定数生成,比較,符
倒的に削減され開発期間が大幅に短縮可能なことが確
号反転,ストリーム前進・後退などのモジュールが用
認できた.ハードウェア設計に不慣れな学生が 1 年間
意されている.このほかにはユーザが独自に記述した
をかけて HDL を用いて実装するような回路と同等な
HDL モジュールも利用可能である.
性能や規模のストリーム計算回路が,SPGen により
3. 3 処 理 系
数週間程度で実現できた.また,階層的回路記述やモ
SPGen の処理の流れを図 3 に示す.SPGen により
ジュール再利用により,SPD コードのわずかな修正の
SPD ファイルをコンパイルすると,ALTERA のシス
みで PE 単位の並列性に関する設計空間を効率良く探
テム統合ツール Qsys で利用できる IP コアのファイル
索できた他,Stratix V から Arria10 へといった異な
群が生成される.浮動小数点演算器は,コンパイラ内
る FPGA 間の移植が容易に行えた.
部でオープンソースの FloPoCo [32] を用いて生成し
ている他,加減算と乗算については Arria10 の浮動小
4. Veriloggen
数点 DSP ブロックを利用することも可能である.ま
4. 1 概
た,Stratix V FPGA の搭載された DE5-NET ボード
これまでにハードウェア設計のための様々なプログ
要
及び Arria 10 FPGA の搭載された DE5A-NET ボー
ラミング言語を用いたドメイン固有言語 (DSL:Do-
ド用のシステムフレームワークを Qsys を用いて実装
main Specific Language) が提案されている.例えば,
済みであり,得られた IP コアを組み込んで Quartus
Chisel [38] は Scala 上に構成されたハードウェア設計
コンパイラにより論理合成と配置配線を行うことによ
DSL であり,また,MyHDL [39] や PyMTL [40] は
り,200∼225MHz 程度の周波数で動作する高性能ス
Python を用いた DSL である.ソフトウェア設計に使
トリーム計算システムを容易に構築できる.システム
用される言語のクラス・メソッド等の文法を適宜ハー
の制御は,PCI-Express で接続されたホスト PC のソ
ドウェア要素の定義に割り当てることで RTL 設計を
フトウェアにより行われる.
可能にしている.これらの DSL では,ハードウェア定
3. 4 応用事例と評価
義ソースコードを抽象構文木 (AST:Abstract Syntax
これまで,SPGen を用いて格子ボルツマン法によ
Tree) に変換し,静的に構文解析することで最終的に
4
招待論文/FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール
図 5 Python と Veriloggen を用いたハードウェア生成
フロー
Fig. 5 Hardware synthesis flow by Python and Veriloggen.
Verilog HDL に変換する.そのため,元の言語処理系
とは別に,AST を解析しコード生成を行う独自の処
理系を実装しており,ハードウェア記述に利用可能な
文法や機能は元の言語仕様の一部に制限されている.
図 6 Veriloggen を用いた設計例:LED 点滅回路
Fig. 6 Hardware design example with Veriloggen:
blinking LED circuit.
一方,Veriloggen [36] では,HDL の AST に相当す
るデータ構造を Python の言語機能を活用して明示的
に組み立てるメタプログラミングのアプローチを採用
Veriloggen の特徴として,Python における代入・
している.図 5 に Veriloggen を用いたハードウェア
演算と,組み立て対象である Verilog HDL における代
の設計フローを示す.Veriloggen を用いたハードウェ
入・演算は明確に分けて取り扱われる.Verilog HDL
ア設計では,通常のソフトウェアと同様にインタプリ
における全ての代入・演算は,Veriloggen で定義され
タ上で実行可能な Python のソースコードとしてハー
ているクラスのオブジェクトとして表現される.例え
ドウェア構成を記述する.図 5 左のように,ハード
ば,図中 14 行目のように,変数 count に対する代入
ウェア部品を表現するオブジェクトを Python の構文
は,count を指し示す Reg オブジェクトをメソッドと
を用いて明示的に組み上げる.そして,その Python
して呼び出すことで表現でき,呼び出し結果として代
スクリプトを実行することで,組み上げられたハー
入オブジェクト (Subst) が返却される.全ての回路定
ドウェア構成を内部情報に変換し,最終的に Verilog
義をオブジェクトとして扱うことで,回路を定義する
HDL のソースコードが得られる.このような設計フ
Python のソースコードの見た目と,実際に生成され
ローとすることで,設計に要するコード量を劇的に削
る回路の構成を切り離すことが可能になる.この特徴
減することができる.
を活用することで,回路定義の追加(または変更)パ
4. 2 記
述
図 6 に Veriloggen を用いた簡単な設計例として
LED 点滅回路の記述を示す.まず図中 5 行目のよう
に,Verilog HDL のモジュール定義に相当する Module
ターンをメソッドとして切り出すことができ,用途や
目的に特化した回路ジェネレータを容易に構築するこ
とが可能になる.
4. 3 応用事例と評価
オブジェクトを生成する.この段階ではこの Module
Veriloggen を用いたハードウェア設計生産性と生成
オブジェクトは,空のハードウェアである.Module オ
されるハードウェアの品質を合成回路とテストベンチ
ブジェクトは,信号定義を追加するメソッド(Input,
の両面から評価する.Veriloggen は合成可能な回路に
Output, Reg, Wire 等)や always 文や assign 文を追
加えてテストベンチの生成が可能であり,このテストベ
加するメソッド(Always, Assign)をもつ.これらの
ンチについては,テストベンチ用ライブラリを用いる
メソッドを用いて回路定義を Module オブジェクトに
ことで少ないコード量で実装できる.生成されるハー
対して追加する.
ドウェアの品質は,FPGA の合成ツール (Xilinx ISE
5
電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1
表 1 Veriloggen ハードウェアの生成元・生成後コード行数,回路規模,最大動作周波数
Table 1 Source LOC in Python and Verilog HDL, circuit size, and maximum
clock frequency.
回路
LED
Sort-4
Sort-8
Sort-16
Sort-32
FFT-4
FFT-8
FFT-16
Python 行数
本体 (テスト)
35 (18)
45 (45)
(= Sort-4)
(= Sort-4)
(= Sort-4)
68 (67)
115 (79)
(= FFT-8)
Verilog 行数
本体 (テスト)
31 (39)
713 (223)
3575 (939)
15779 (5531)
66107 (38139)
3131 (552)
11531 (760)
33099 (1136)
Reg
LUT
DSP
18
1295
6709
29873
125545
1607
7298
21987
33
587
2712
11576
47736
511
1945
5154
0
0
0
0
0
0
48
128
Fmax
[MHz]
352
366
370
370
370
388
387
387
説明
LED 点滅 (LED 数 8)
ソート (データ数 4, 32 ビット整数)
ソート (データ数 8, 32 ビット整数)
ソート (データ数 16, 32 ビット整数)
ソート (データ数 32, 32 ビット整数)
FFT (4 点,16 ビット固定小数)
FFT (8 点,16 ビット固定小数)
FFT (16 点,16 ビット固定小数)
14.7) と Xilinx Artix-7 XC7A100T FPGA を用いて,
組みをもつため,生成される回路の質の低さという処
回路規模及び最大動作周波数の点から評価する.比較
理系の弱みをカバーしつつ,オブジェクト指向設計を
対象の回路は,文献 [37] で評価を行った,LED 点滅
活用した設計コストの軽減ができることである.また,
回路 (LED),ソート (Sort: 4 点,8 点,16 点,32 点)
オープンソースで公開しており,実験的な機能の追加
に加えて,フーリエ変換 (FFT: 4 点,8 点,16 点) の
や,ユーザ自身による拡張も可能である.
3 種とする.ソートと FFT の回路全体は,Veriloggen
5. 2 SW でも HW でも動作
の基本機能を組み合わせて開発したパイプライン回路
Synthesijer は Java で記述されたプログラムを,
合成ライブラリの Veriloggen.Dataflow [37] を用いて
ソースコードレベルで VHDL あるいは Verilog HDL
実装した.表 1 に示すように,ソート及び FFT につ
に変換する処理系である.ハードウェアを記述するた
いては,Veriloggen.Dataflow を用いることで,少な
めの特別な文法や演算子を導入しない純粋な Java プ
いコード行数でパイプライン化された回路を設計でき
ログラムを入力言語とするため,ソフトウェアプログ
た.回路構成そのものではなく回路構成のルールを記
ラムとしてコンピュータ上で実行可能なプログラムを
述しているため,パラメータを変更するだけで入力点
そのまま FPGA 上のハードウェアとして実現できる.
数が異なる回路を合成できる.Veriloggen.Dataflow
これは,複雑なアルゴリズムを FPGA 上に実装したい
を用いた回路では,演算ごとにパイプラインレジスタ
場合に,まずその動作をソフトウェアとして実行して
が挿入され,自動的に動作周波数が向上する.このよ
確認することができるため,時間のかかるシミュレー
うに Veriloggen を用いると生産性と性能の両立が可
ションや面倒なハードウェア上のデバッグコストを低
能になる.
減できるというメリットがある.
5. Synthesijer
5. 1 概
要
5. 3 Thread の活用
FPGA 上の専用ハードウェアとして処理を実現する
メリットの一つに,大規模な並列性を活用できること
Java や C#をベースとしたハードウェア設計の代
がある.しかしながら並列処理は実装とデバッグが難
表的な高位合成 (HLS) ツールとしては,Java をベー
しく,処理の不整合やデッドロックなどのバグの温床
スとした Sea Cucumber [41],Java に独自の拡張を
ともなる.Synthesijer では,Java の Thread による
加えた Lime [42],C#をベースにした Kiwi [43] があ
並列処理を,そのまま複数ハードウェアによる同時処
る.Synthesijer [44] もまた,Java ベースの高位合成
理に対応づけている.そのため,ハードウェアの動作
(HLS) ツールの一つである.
に慣れていない,ソフトウェアプログラマでもハード
Java を入力言語とする Synthesijer の特徴は,単一
のプログラムソースがソフトウェアとしてもハード
ウェア上の並列処理を慣れ親しんだ記法で設計できる.
5. 4 HDL モジュールのインスタンス化
ウェアとしても実行可能であること,Thread を活用
高位合成 (HLS) 処理系によってソフトウェア記述
してプログラマにとって慣れた形式でハードウェア上
用のプログラミング言語を使ったハードウェア設計が
の並列処理が表現できることである.加えて,HDL
可能になったとは言え,細かい演算のハードウェア実
モジュールを Java のインスタンスとして取り扱う仕
装ではハードウェア記述言語 (HDL) による設計の方
6
招待論文/FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール
が,高速で省スペースのハードウェアモジュールを実
を生成するだけでなく,アクセラレータを仮想化し,
現できることは少なくない.加えて,Synthesijer は,
複数のマルチコアプロセッサから効率良く利用でき
他の高位合成処理系と比べて最適化処理の実装が遅れ
る再構成可能仮想アクセラレータ ReVA (Reconfig-
ていることもあり,入力した Java から生成したハー
urable Virtual Accelerator) (図 7) [48] といった,大
ドウェアの質は HDL で記述したモジュールに比べて
規模 FPGA アクセラレータシステムにおいて,効率
低い.
的なアクセラレータの開発環境を提供する.高位合成
しかしながら,実際に,FPGA が使用されたアプリ
(HLS) ツールを利用する場合には,ハードウェア記
ケーションの実装に目を向けてみると,処理の本体で
述言語 (HDL) で設計する場合に比べ,回路規模が増
ない I/O 処理や複雑な逐次処理部分に対しては,補
加する傾向にある.そこで,Java ソースの段階から,
助的なプロセッサの利用や愚直に実装されたステート
利用する FPGA の規模に応じて回路を分割する機構
マシンで処理されているケースが多数みられる.この
を考案し,JavaRock に適用して,その有効性を示し
ようなケースに対しては,多少の性能低下によるデメ
た [50].
リットが Synthesijer を使って開発コストを削減でき
るというメリットで簡単に上回ると考えられる.
6. 2 FortRock
高性能計算 (HPC: High Performance Computing)
Synthesijer は,質が高くないという弱みを補うた
の分野においても,FPGA を用いるとソフトウェア
めに HDL で記述したモジュールを Java のオブジェ
の処理を何倍にも高速化できることから,ハードウェ
クトとしてラップして,インスタンス化できるという
ア・アクセラレーションに注目が集まっている.HPC
仕組みをもつ.この仕組みは,HDL モジュールの入
では膨大なソフトウェア資産があり,その大部分は
出力ポートを Java の変数や配列,あるいはメソッド
Fortran で記述されている.そこで,HPC のソフト
定義に見せかけることができる.そのため,手書きの
ウェアをハードウェア・アクセラレーションするため
HDL による高速な演算モジュールや,I2C などハー
には,Fortran をベースにした高位合成 (HLS) ツール
ドウェア特有の制御が必要なペリフェラルを,Java の
が必要で,現在,FortRock が開発されている [51].こ
オブジェクトと同じように取り扱うことが可能になり,
の FortRock では,Fortran で記述されたソースコー
複数のインスタンスの管理と制御が簡単に実現できる.
ドを入力とし,いったん LLVM の Fortran フロント
5. 5 機能拡張性
エンドである Dragonegg を用いて LLVM IR に変換
LegUp [45] など一部の処理系を除いて,多くの高
している.その後,LLVM IR レベルで重複命令の削
位合成 (HLS) ツールではソースコードが公開されて
除やレジスタ名の指定などの前処理を行い,FortRock
いない.一方,Synthesijer はオープンソースである
のコア部分である FortRock Core によって,この前
ため,新たな仕組みの実験的な追加が簡単にできる.
処理を経た変換済み LLVM IR から Verilog HDL の
他の高位合成 (HLS) で通常禁止されている再帰呼び
出力を得ることができる.このように,今後,高位合
出しの実装,特定の FPGA の論理ブロック構造に特
成 (HLS) ツールはスーパーコンピュータの分野でも
化した実装,特定のプログラミングフレームワーク向
けのインターフェース拡張などが,オープンソースで
あるが故に可能である.
6. JavaRock-Thrash と FortRock
6. 1 JavaRock-Thrash
JavaRock-Thrash は Java ソースから Verilog HDL
に変換し,浮動小数点演算の演算レベルでの並列性を
追求した高位合成 (HLS) ツールである [49].Java を
採用したことで,マルチスレッドによる並列性がその
まま演算器などの並列実装に結びつき,Vivado HLS
C/C++に対し,CFD において最大 1.5 倍の性能を発
揮できた.このツールは,単に Java ソースから HDL
図 7 ReVA における分散共有回路 (DSL)
Fig. 7 Distributed Shared Logic in ReVA.
7
電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1
使用されていくことになるであろう.
7. む す び
[8]
天野英晴,FPGA の原理と構成,オーム社,2016.
[9]
L. Xiu, “CellBased ASIC design methodology,” VLSI
Circuit Design Methodology Demystified: A Conceptual Taxonomy, pp.73–188, Wiley-IEEE Press, 2008.
FPGA のハードウェア・アクセラレータを用いて
[10]
プロセッサのソフトウェア処理を 1000 倍以上高速化
http://www.intel.co.jp/content/www/jp/ja/
processors/core/core-i7-processor.html
した事例が報告されている.FPGA を用いれば既存
のソフトウェア処理を劇的に高速化することが可能
Intel,“Core i7 プロセッサー,
”
[11]
S.L. Lu, P. Yiannacouras, R. Kassa, M. Konow, and
T. Suh, “An FPGA-based PentiumR in a complete
になる.加えて,現在では誰でも FPGA ベンダーが
desktop system,” Proc. 2007 ACM/SIGDA 15th In-
提供する高位合成 (HLS) ツールを使用できるように
ternational Symposium on Field Programmable Gate
なった.ソフトウェアエンジニアでさえも C++言語
を用いて FPGA 開発に携わることができる.Intel 社
Arrays, pp.53–59, 2007.
[12]
High-
A. Putnam, et al., “A reconfigurable fabric for accel-
tecture, pp.13–24, 2014.
[14]
E. Charles and G. Kaul, Xeon+FPGA: Better Together An Overview of Architecture and Practices,
IntelCorporation, 2016.
[15]
Synthesijer,JavaRock-Thrash,FortRock が,近い
T. Fujimori and M. Watanabe, “Full FPGA Game
Machine,” IEEE International Conference on Con-
将来,日本,そして世界で幅広く使用されていくこと
sumer Electronics, pp.431–432, 2016.
[16]
T. Fujimori, T. Akabe, Y. Ito, K. Akagi, S. Furukawa,
H. Shinba, A. Tanibata, and M. Watanabe, “FPGA
謝辞 Veriloggen に関する研究の一部は,公益財団
Trax Solver based on a Neural Network Design,” In-
法人マツダ財団研究助成の支援による.
文
Benkrid,
41st International Symposium on Computer Archi-
可能になる特定用途向けツールが多種開発されてい
を期待したい.
K.
erating large-scale datacenter services,” ACM/IEEE
ずである.そのような中で,日本では特定の開発領域
る.ここで紹介したツール群,SPGen,Veriloggen,
and
2013.
[13]
うに使う時代が目前に来ていることが理解できるは
においてより強力な力は発揮し,大幅な工数削減も
Vanderbauwhede
Performance Computing Using FPGAs, Springer,
が Altera 社を買収し,Xeon プロセッサに FPGA を
実装している例からも,皆が FPGA を当たり前のよ
W.
ternational Conference on Field-Programmable Tech-
献
nology, pp.260–263, 2015.
[17]
T. Endo and G. Jin, “Software technologies coping
[1]
Altera Corp., http://www.altera.com/
[2]
XILINX Inc., http://www xilinx com/
with memory hierarchy of GPGPU clusters for sten-
[3]
E. Ozcan, Y. Adibelli, and I. Hamzaoglu, “A high
cil computations,” IEEE International Conference on
Cluster Computing (CLUSTER), pp.132–139, 2014.
performance deblocking filter hardware for high efficiency video coding,” IEEE Trans. Consum. Elec[4]
[18]
tron., vol.59, no.3, pp.714–720, 2013.
mance and Power Analysis of High-Density Multi-
R.S. Sherratt and S. Makino, “Numerical precision
GPGPU Architectures: A Preliminary Case Study,”
requirements on the multiband ultra-wideband sys-
High Performance Computing and Communications
(HPCC), pp.66–71, 2015.
tem for practical consumer electronic devices,” IEEE
[5]
Trans. Consum. Electron., vol.51, no.2, pp.386–392,
[19]
ARM Holdings plc, https://www.arm.com/ja/
2005.
[20]
ALTERA corp., “Stratix 10 FPGA & SOC,”
https://www.altera.co.jp/products/fpga/
J. Choi and R.A. Rutenbar, “Video-rate stereo
stratix-series/stratix-10/overview.html
matching using Markov random field TRW-S inference on a hybrid CPU+FPGA computing platform,”
[21]
R. Lipsett, C.F. Schaefer, and C. Ussery, VHDL:
[22]
Xilinx Inc., “Vivado 高位合成,
”
Hardware Description and Design, Springer, 1989.
IEEE Trans. Circuits Syst. Video Technol., vol.26,
no.2, pp.385–398, 2016.
[6]
http://japan.xilinx.com/products/design-tools/
S. Shreejith and S.A. Fahmy, “Extensible FlexRay
vivado/integration/esl-design.html
communication controller for FPGA-based automotive systems,” IEEE Trans. Veh. Technol., vol.64,
[7]
[23]
S. Gao and J. Chritz, “Characterization of OpenCL
no.2, pp.453–465, 2015.
on a scalable FPGA architecture,” International Con-
J.J. Wang, R.B. Katz, J.S. Sun, B.E. Cronquist, J.L.
ference on ReConFigurable Computing and FPGAs,
pp.1–6, 2014.
McCollum, T.M. Speers, and W.C. Plants, “SRAM
tions,” IEEE Trans. Nuclear Science, vol.46, no.6,
名古屋彰,“SFL/PARTHENON によるトップダウン設計
” インターフェース,vol.20, no.6, pp.196–206,
のすすめ,
pp.1728–1735, 1999.
June 1994.
based re-programmable FPGA for space applica-
8
Y. Gao, S. Iqbal, P. Zhang, and M. Qiu, “Perfor-
[24]
招待論文/FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール
[25]
K. Wakabayashi, “CyberWorkBench: integrated de-
[41]
cumber: A synthesizing compiler for fpgas,” Interna-
sis and verification,” IEEE VLSI-TSA International
tional Conference on Field-Programmable Logic and
Symposium on VLSI Design, Automation and Test,
pp.173–176, 2005.
[26]
Applications, pp.875–885, 2002.
[42]
“Lime:
Silva, P. Ienne, and G. Falcao, “Fast design space
guage for heteroge- neous architectures,” SIGPLAN
decoders,” IEEE 23rd Annual International Sym-
[29]
specific circuits with concurrent c# programs,”
Machines, p.97, 2015.
IEEE/ACM International Conference on Formal
K. Sano, Y. Hatsuda, and S. Yamamoto, “Multi-
Methods and Models for Codesign (MEMOCODE),
pp.21–30, 2010.
with constant memory-bandwidth,” IEEE Trans.
[44]
Synthesijer, http://synthesijer.github.io/web/
Parallel Distrib. Syst., vol.25, no.3, pp.695–705,
[45]
A. Canis, J. Choi, M. Aldham, V. Zhang, A.
2014.
Kammoona, J.H. Anderson, S. Brown, and T.
D.F. Bacon, R. Rabbah, and S. Shukla, “FPGA pro-
Czajkowski, “legup:
gramming for the masses,” Commun. ACM, vol.56,
based processor/accelerator systems,” ACM/SIGDA
no.4, pp.56–63, 2013.
International Symposium on Field Programmable
O. Pell, O. Mencer, K.H. Tsoi, and W. Luk,
high-level synthesis for fpga-
Gate Arrays, pp.33–36, 2011.
[46]
D.F. Bacon, P. Cheng, and S. Shukla, “And then
Dataflow Engines,” High-performance computing us-
there were none: A stall-free real-time garbage col-
ing FPGAs, pp.747–774, Springer, New York, 2013.
lector for reconfigurable hardware,” SIGPLAN Not.,
“National Instulments LabVIEW,”
http://www.ni.com/labview/
[31]
D. Greaves and S. Singh, “Designing application
posium on Field-Programmable Custom Computing
“chapter Maximum Performance Computing with
[30]
A java-compatible and synthesizable lan-
Not., vol.45, no.10, pp.89–108, 2010.
[43]
FPGA accelerator for scalable stencil computation
[28]
J. Auerbach, D.F. Bacon, P. Cheng, and R. Rabbah,
J. Andrade, N. George, K. Karras, D. Novo, V.
exploration using vivado HLS: Non-binary LDPC
[27]
J.L. Tripp, P.A. Jackson, and B. Hutchings, “Sea cu-
sign environment based on C-based behavior synthe-
vol.47, no.6, pp.23–34, 2012.
[47]
K. Zhai, R. Townsend, L. Lairmore, M.A. Kim, and
“MathWorks HDL Coder,”
S.A. Edwards, “Hardware synthesis from a recur-
http://www.mathworks.com/products/hdl-coder/
sive functional language,” International Conference
[32]
“FloPoCo Project,” http://flopoco.gforge.inria.fr/
on Hardware/Software Codesign and System Synthe-
[33]
K. Sano, “DSL-based design space exploration for
temporal and spatial parallelism of custom stream
sis, pp.83–93, 2015.
[48]
computing,” International Workshop on FPGAs for
Software Programmers, 2015.
http://arxiv.org/abs/1509.00040/
[34]
RECONF2015-40, Sept. 2015.
[49]
K. Sano, Y. Kono, H. Suzuki, R. Chiba, R. Ito, K.
[50]
[51]
ス高位合成ツールを用いた回路分割方式の実装と評価,
”
情処学論「組込みシステム工学」特集号,vol.56, no.8,
pp.1593–1603, Aug. 2015.
山下貴大,五十嵐雄太,中條拓伯,“Fortran ベース高位
puting of fully-streamed lattice boltzmann method
Computer Architecture News, vol.41, no.5, pp.47–52,
2013.
[35]
K. Nagasu, K. Sano, F. Kono, and N. Nakasato,
“Performance and power evaluation of FPGA-based
Tsunami simulator using floating-point DSPs,” International Synposium on Low-Power and High-Speed
Chips (COOL Chips XIX), poster paper#17, 2016.
[37]
高前田伸也,“Python を用いた高水準ハードウェア設計環
” 信学技報,RECONF2015-36, Sept. 2015.
境の検討,
高前田伸也,“マルチパラダイム型高水準ハードウェア設
[38]
J. Bachrach, et al., “Chisel: Constructing Hardware
[36]
小池恵介,三好健文,五十嵐雄太,船田悟史,中條拓伯,
“Java 言語ベース高位合成ツールによるアクセラレータ
開発環境,
” 信学論(D),vol.J98-D,no.3, pp.373–383,
March 2015.
松田和也,三好健文,船田悟史,中條拓伯,“Java 言語ベー
Koizumi, and S. Yamamoto, “Efficient custom comon tightly-coupled FPGA cluster,” ACM SIGARCH
中條拓伯,老子裕輝,竹岡尚三,竹本正志,三好健文,“再
” 信学技報,
構成可能仮想アクセラレータ ReVA の構想,
合成ツール FortRock の開発,
” 組込みシステムシンポジ
ウム 2015(ESS2015) 論文集,pp.5–12, Oct. 2015.
(平成 28 年 5 月 25 日受付,8 月 8 日再受付,
10 月 3 日早期公開)
計環境の検討,
” 信学技報,VLD2015-115, Feb. 2016.
in a Scala Embedded Language,” DAC-49, pp.1216–
1225, 2012.
[39]
“MyHDL,” Web page: http://www.myhdl.org/
[40]
D. Lockhart, et al., “PyMTL: A Unified Frame- work
for Vertically Integrated Computer Architec- ture Research,” MICRO-47, pp.280–292, 2014.
9
電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1
渡邊
実
(正員)
中條 拓伯
(正員)
1992 年静岡大学工学部光電機械工学科
卒業.1994 年静岡大学大学院光電機械工学
専攻修士課程修了.1994 年∼1999 年 12
1985 年神戸大学工学部電気工学科卒
業.1987 年同大学大学院工学研究科修了.
1989 年同大学工学部助手の後,1998 年より
月まで日産自動車(株)にて組み込みシス
テムの研究開発に従事.2000 年 1 月九州
工業大学情報工学部助手.2005 年同学内
1 年間 Illinois 大学 Urbana-Champaign
校 Center for Supercomputing Research
and Development(CSRD)にて Visit-
講師.2007 年から静岡大学大学院准教授.光電子融合デバイ
ス,リコンフィギュラブルシステム,ハードウェア・アクセラ
レーションの研究に従事.電子情報通信学会,情報処理学会,
ing Research Assistant Professor を経て,現在,東京農工大
学大学院工学研究院准教授.プロセッサアーキテクチャ,並列
処理,リコンフィギュラブルコンピューティングに関する研究
応用物理学会,計測自動制御学会,IEEE,ACM,OSA 各会
員.博士(情報工学).
に従事.博士(工学).
佐野健太郎
(正員)
2000 年東北大大学院情報科学研究科博
士課程了.2001 年同助手.2005 年同助教
授.現在同准教授.2006 年インペリアル
カレッジロンドン客員研究員.博士 (情報
科学).FPGA を用いたカスタム高性能計
算機に関する研究に従事.電子情報通信学
会,情報処理学会,IEEE,ACM 各会員.国際シンポジウム
HEART ステアリング委員.
高前田伸也
(正員)
2009 年東京工業大学工学部情報工学科
卒業.2011 年東京工業大学大学院情報理
工学研究科修士課程修了.2014 年東京工
業大学大学院情報理工学研究科博士課程修
了.博士(工学).2011 年から 2014 年ま
で日本学術振興会特別研究員.2014 年か
ら 2016 年まで奈良先端科学技術大学院大学情報科学研究科助
教.2016 年から北海道大学大学院情報科学研究科准教授.コン
ピュータアーキテクチャ,リコンフィギュラブルシステム,高
位ハードウェア設計方式に関する研究に従事.IEEE,情報処
理学会,電子情報通信学会各会員.
三好
健文
(正員)
2007 東京工業大・物理情報システム専
攻修了.博士 (工学).同年東京大学情報理
工学系研究科特任助教.東京工業大学情報
理工学研究科産学官連携研究員,電気通信
大学大学院情報システム学研究科助教を経
て,2012 年に株式会社イーツリーズ・ジャ
パンに入社,2014 年に,わさらぼ合同会社を設立,現在に至
る.FPGA や GPU を活用したアクセラレータ,HW/SW 協
調設計に関する研究・開発及びコンパイラ技術に関する研究に
従事.2011 年より Synthesijer の開発を開始,オープンソー
スで公開中.
10