言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

FPGA に夢を見る。

この週末はずっと FPGA で遊んでいた。出来たのはただ LED が光るだけの物だが、やっと考えたとおり動いてくれてほっとしている。一息ついたついでに、FPGA のどこが面白くて、何を目指しているかちょっと書いてみる。

この数週間の短い間に、私は FPGA がソフトウェアを変える!と信じるようになった。FPGA はハードウェア記述言語で動かすチップだから、ハードウェア記述言語がソフトウェアを変える!という妙な話の流れになってしまうけど。前からぼんやり思っていたプログラミング言語への違和感が急にはっきりした。その違和感とは、プログラミング言語全体が、いわゆる早まった最適化に陥っているという事だ。

プログラミング言語が必要なのは、コンピュータには人間の言葉が分からないからだ。コンピュータは順番に単純な命令を実行する事しか出来ないから、大きな問題を小さく分けて、さらに順番に並べなければいけない。そう言われてみんな育ってきた物だから、プログラムはそのように書かれる。しかし、少なくとも順番に並べるという部分に関しては事実と異なる。最近のコンピュータは複数の命令を同時に実行する。しかし私達はあまりにも長い間逐次的なプログラムに慣れてきた物だから、並列プログラムを上手に書く技術を持っておらず、ハードウェアの進歩に追いつけないでいる。

これが早まった最適化。つまり、命令を順番に実行という性質は、ある時代のある特定の制約に過ぎないのに、プログラミング言語全体がそっちに最適化してしまって、制約がなくなってしまっても急には元に戻れない。CPU コアが二つとか四つならまだしも、100 以上に増えるであろう近い将来、この最適化が足かせになってしまうのは間違いない。

ここまでは誰もが思う所だろう。しかし現実問題そんなに差し迫った感じも受けないと思う。100コアが来年にも出るわけが無いし、スーパーコンピュータや巨大データセンタを使ってる訳でも無いそこらのエンジニアにとっては関係の無い話。しかしここへ来ての FPGA ブーム。FPGA って一万円ちょっとで手に入る超並列マシンそのものでは無いか。

FPGA を見ていると、まるでマイコンブームの歴史が繰り返されるのを見る思いだ。マイクロプロセッサが電卓の開発から始まり、本物のコンピュータに取って代わってしまったように、FPGA ボードも組込み開発から始まり、コンピュータ自体になってしまうんじゃないか。100 コア Pentium はもう出ないかも知れない、誰もがハードウェアを直接プログラムするようになり、CPU が過去の遺物になって、XILINXIntel に取って代わるんじゃないか。そうなってしまったら、そこらのエンジニアだって関係あるよ!

どちらに転んでも、FPGA によってプログラミングの早まった最適化を矯正する動機が生まれるわけだ。そしてまだ FPGAビル・ゲイツは生まれていない。