招待論文
FPGA ハードウェア・アクセラレーション向け日の丸高位合成ツール*
渡邊

実† a)

中條

拓伯†††††† e)

佐野健太郎†† b)

高前田伸也††† c)

三好健文††††,††††† d)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 Speciﬁc 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: tmwatan@ipc.shizuoka.ac.jp

代前半まで，FPGA は量産前の試作，ASIC の試作前b) E-mail: kentah@caero.mech.tohoku.ac.jpのテスト，若しくは研究用途等に限られて使用され，

c) E-mail: shinya@is.naist.jpd) E-mail: miyo@wasamon.net

量産品に対してはコストあたりの性能に秀でた ASICe) E-mail: nakajo@cc.tuat.ac.jpが多用されてきた．

* 本論文はシステム開発・ソフトウェア開発論文である．
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-Eﬃcient Accelerators andえも困難で時間のかかっていたハードウェア記述言

Reconﬁgurable 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 deﬁned 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 ﬂow 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 Speciﬁc 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 ﬂow 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-4Sort-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.Dataﬂow [37] を用いてソースコードレベルで VHDL あるいは Verilog HDL実装した．表 1 に示すように，ソート及び FFT につに変換する処理系である．ハードウェアを記述するた

いては，Veriloggen.Dataﬂow を用いることで，少なめの特別な文法や演算子を導入しない純粋な Java プ

いコード行数でパイプライン化された回路を設計でき

ログラムを入力言語とするため，ソフトウェアプログ

た．回路構成そのものではなく回路構成のルールを記

ラムとしてコンピュータ上で実行可能なプログラムを述しているため，パラメータを変更するだけで入力点そのまま FPGA 上のハードウェアとして実現できる．

数が異なる回路を合成できる．Veriloggen.Dataﬂow

これは，複雑なアルゴリズムを 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 (Reconﬁg-ていることもあり，入力した 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 Demystiﬁed: 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, andT. 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 reconﬁgurable 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 highcil computations,” IEEE International Conference on
Cluster Computing (CLUSTER), pp.132–139, 2014.

performance deblocking ﬁlter hardware for high efﬁciency 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 ﬁeld 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 veriﬁcation,” IEEE VLSI-TSA Internationaltional Conference on Field-Programmable Logic andSymposium 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]

speciﬁc 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 thenDataﬂow 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 reconﬁgurable 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://ﬂopoco.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 streamsis, 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 ﬂoating-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, “Eﬃcient 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 Uniﬁed Frame- workfor Vertically Integrated Computer Architec- ture Research,” MICRO-47, pp.280–292, 2014.

9電子情報通信学会論文誌 2017/1 Vol. J100–B No. 1

渡邊

実

（正員）

中條 拓伯

（正員）

1992 年静岡大学工学部光電機械工学科卒業．1994 年静岡大学大学院光電機械工学
専攻修士課程修了．1994 年〜1999 年 121985 年神戸大学工学部電気工学科卒
業．1987 年同大学大学院工学研究科修了．
1989 年同大学工学部助手の後，1998 年より月まで日産自動車（株）にて組み込みシス
テムの研究開発に従事．2000 年 1 月九州工業大学情報工学部助手．2005 年同学内

1 年間 Illinois 大学 Urbana-Champaign
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

校 Center for Supercomputing Research