Hatena::ブログ(Diary)

言語ゲーム このページをアンテナに追加 RSSフィード Twitter

とあるエンジニアが嘘ばかり書く日記
ホームページ | blog | twitter

2008-05-26

FPGA に夢を見る。

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

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

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

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

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

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

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

FlorianFlorian 2008/05/26 18:54 FPGAよりも、関数型言語に慣れ親しむ方がソフトウェアエンジニア的には未来にさわってる気分になりますね。何となく同時に動いている姿がまぶたの裏に浮かびますし、フォン・ノイマン型コンピュータに特化した「早まった最適化」ってのは最近しみじみ感じます。
でも、職場の人に「今回のDSLは関数型言語で行こう!」と叫んでも(ゲームは伝統的にDSLを使い捨てます)いまいちぴんと来ないらしい今日この頃。早すぎるのかなぁ。

propellapropella 2008/05/27 00:41 ハードウェア記述言語は関数型言語だ!というのもまたいつか書きます。きっと FPGA ベースのゲーム機もすぐ出てきますよ。

nqthmnqthm 2008/05/27 21:23 ハードの記述も含めたプログラムを考えたら面白そうですね。動的にコネクションマシンとそのプログラムを自分で構築できる日がくるのでしょうか。

FlorianFlorian 2008/05/27 21:48 ちなみに、Nintendo64のビデオ・音声は1つのチップ内で信号を合成していましたが、このチップ(RCP:Reality Co Processor)はリコンフィギュアルデバイスでした。どうやってプログラミングしていたかは、当時のNDAの向こう側ですが……。
「RCPを細工して、コンポジットの音声端子もヴィデオ出力にしましょう!史上初のデュアルディスプレイ据え置き機ですよ!」と、当時本職の人に言ったら鼻で笑われたのもいい思い出です(^^;)。端子のアナログ回路的な特性はともかく、動くとは思ったんだけどなー。

propellapropella 2008/05/29 05:35 おー。それは面白そうですね。

むかーし QY20の ライン出力を、ゴミ捨て場で拾ったテレビのビデオ端子に繋いで画像を出して遊んでました。ポー、とか、ピー、とか、単純な音なら結構それなりに面白い画像が出ますよ。テレビから、キーンといういかにもやばそうな音が出る時がありますが。

FPGA に慣れたらそれのハイテク版も作ってみたいと思います。ブラウン管じゃないと駄目かな。


カレンダー
<< 2008/05 >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新コメント一覧