特別インタビュー:青木海 ハードウェア実装の難しさ

0

hard_teaser

2015年度に独立行政法人情報処理推進機構(IPA)の未踏IT人材発掘・育成事業(以下未踏)に採択、スーパークリエータにも認定された、情報メディア創成学類卒業生の青木海さん(2012年度入学)にお話を伺いました。

今回は、未踏に採択されたプロジェクトのポイントについて解説していただきました。

関連記事 特別インタビュー:青木海(情報メディア創成学類卒業生・未踏スパクリ)
http://magazine.mast.tsukuba.ac.jp/archives/1908

 

ソフトウェアからハードウェアへ

前回お話ししたとおり、ハードウェアにすればだいたいの場合速く動きます。これは様々な分野で言われていて「ハードウェアアクセラレーション」と呼ばれています。

ハードウェアアクセラレーションの例としては、GPGPUがあります。GPUというのは、浮動小数点の演算ユニットがたくさん乗っているプロセッシングユニットのことです。具体的には、パソコンのディスプレイにものを表示したり、3Dのものを二次元の平面上に落としこんだりする為の演算をする装置です。これを計算用途に使って速く計算をしようというのがGPGPUです。

他にも、FPGAと呼ばれるプログラマブルなIC・LSI・集積回路、つまりCPUみたいなものを使って処理を速くするものがあります。

 

実際にはどのような場所でハードウェア実装が行われているのでしょうか?

データセンターのような大量のトラフィック*をさばく必要がある場所や、車載システムなどでよく使われています。

最近は車が画像認識してすぐに止まってくれるシステムがありますよね。それを実現するためには素早く周囲の状況を画像から判断して、すぐにブレーキをかけなければならない。あれはCPUでやっていると、安定しないし遅くなってしまいます。また万が一壊れたら人命に関わります。正確に・きちんと動かなければならないので、ハードウェア回路になっています。

あとは携帯電話の基地局も良い例です。並列のトラフィックを大量に受け取り、それらを全て短い時間でさばかなければならないので回路になっています。

 

ソフトウェアからハードウェアへ実装するのが難しいと聞いたのですが

その通りです。ハードウェアアクセラレーションはとても有効な手法ではあるものの、実装がものすごく大変です。GPGPUは資料もたくさんあるのでまだ実装出来るのですが、FPGAの場合は数段難しくなります。

例えば、シンセサイザーをMaxなどのGUIアプリケーション・ビジュアルプログラミング言語を使って作るような人たちは、新しい表現を模索したくて使っている「アーティスト」です。だいたいの場合FPGA実装は出来ない。

つまり、「楽器を作る」という分野においてFPGA実装が有効であるにもかかわらず、アーティストはそれが出来ない。ではエンジニアなら出来るかというと、ソフトウェアエンジニアにとっても難しいのです。ハードウェアエンジニアが結構頑張らないと実装出来ないという問題があります。

 

少しでも実装を簡単にするような技術は無いのでしょうか?

FPGA実装を簡単にするために、高位合成という技術があります。

普通のFPGA実装をするときには人間が手で回路論理を書き、テストしてシミュレーションして…ということを繰り返します。これを、ソフトウェアでどのように動くかの動作を記述して、その動作記述からハードウェアの回路論理を生成することができるようにするための技術を「高位合成」と呼びます。

イメージとしては、コンパイラ*のようなものです。人間が適当なコードを書いてもコンパイラがうまい具合に変換してくれますよね。アセンブリを手書きするよりはちょっと遅いにしても、きちんと動くようなコードを生成してくれる。言い換えると、ソフトウェア言語で書いて、CPUを動かすためのマシンコードに落とせるということです。高位合成はこれと同じような感覚で、ソフトウェア言語で動作を書くと勝手に回路を設計してくれるものです。

しかし、現在はその高位合成技術があまり成熟していません。ハードウェアの構造を理解している人が、どういう回路構造に落ちるのかを意識しながらソフトウェア言語で書かないとうまく回路になってくれないのです。これは大きな問題で、ソフトウェアプログラミングの場合は遅くても動くものは作れるのですが、ハードウェアの場合はそもそも合成できないのです。つまりFPGAの上に載らない、ということが起こってしまいます。

ハードウェアのことを理解していないソフトウェアプログラマが高位合成ツールを使っても、動くものが作れないのです。それでは困るし、アーティストの人には使えません。アーティストの人が、ハードウェアの構造をわかってなくて書いても動くものを作ろうというのがsigboostのコンセプトです。

未踏事業成果報告会の様子

0