2006年05月14日 00:30 [Edit]

君はconnection machineを覚えているか?

実は一つ前のentryで電脳進化論を取り上げたのには、理由がある。

→を取り上げたかったのだ。


この3択ならCooSかなぁ。 浅倉卓司のログ/ウェブリブログ
 あ、もちろん弾さんが手がけるであろうParrotネイティブなOSも期待してますよ?

多分それもparrotが普及するにつれ手をつけてしまうと思うのだけど、手をつけたくてつけたくて、手をつけられるだけの経験を曲がりなりにもつんだと思ったら逝ってしまったのが、このConnection Machine。

それがどんなものかは、画像をclickしてwikipediaを見て、さらに出来れば少なくとも電脳進化論にも目を通してほしい。

Connection Machineは、並列計算機のスターだった。

今私はCPUが二つ載ったノートパソコンでこれを書いているが、Connection Machineはそんなもんじゃない。65536もプロセッサーを持っていたのだ。

しかし、本当に画期的だったのはそのことじゃなくて、Virtual Processorという概念を持っていた事。

Virtual Memoryはすでにおなじみだろう。物理的には存在しないMemoryをあたかも存在しているように見せること。今ではパソコンにまで行き渡っている技術だ。

それに対し、Virtual Processorというのは、物理的に存在しないProcessorをあたかも存在しているように扱う技術。

例えば、画像処理を考えてみる。ここでは仮に画像をθだけ回転させる処理を考えてみる。今のCPUを使ったアルゴリズムだと、こんな感じだ。

for my $x (0..$width-1){
  for my $y (0..$height-1){
     my $nx = $x * cos($theta) - $y * sin($theta);
     next if $nx < 0 || $nx >= $width;
     my $ny = $x * sin($theta) + $y * cos($theta);
     next if $ny < 0 || $ny >= $height;
     $new_pix[$ny][$nx] = $old_pix[$y][$x]; 
  }
}

これに対して、connection machineでは、こんな感じになる。

$self->set_pixel($black);
BLOCK:{
  my $nx = $self->x * cos($theta) - $self->y * sin($theta);
  last if $nx < 0 || $nx >= $width;
  my $ny = $self->x * sin($theta) + $self->y * cos($theta);
  last if $ny < 0 || $ny >= $height;
  $self->send_pixel(processor[$ny][$nx]);
}
$self->receive_pixel();

そう。すべての画素にprocessorを一つあてて、それらが同時処理するため、loopが消滅してしまうのだ。

これはプログラムの考え方を根底から変える。当然それにあった環境が必要で、connection machineにもC*という言語が用意されていたようにおぼろげに記憶している。電脳進化論のすごかったのはそこで、このことをきちんと立花隆は見抜いていた。

そのConnection Machineとそれを作ってたThinking Machineが倒産したのは1994年。干支一つも前のことだ。

今時の並列処理は、あまり「並列であることを意識させない」ものばかりだ。プログラムから見て、プロセッサーは一つ、アドレスはリニアというのがあたりまえの環境でソフトウェアエンジニア達は育ってきた。CPU屋もコンパイラー屋も、そうでないことを知りつつも、いかにそれらをコードに意識させないかということにしのぎを削ってきた。今ではregisterからHDDまで、四段階ぐらいのcacheがあるのが当たり前だ(L1-L3 Cache + RAM; 本当はHDDにもcacheがあるけどそれは数えてない)。

確かに下の階層は、上の階層のためにある。しかし、それが下の階層の進化を妨げることもあるような感じがする。それは確かに投資金額からして、下の階層ほど金がかかる。アプリケーションなら資本金200万円から始められるが、CPUを作るには2000億かかる。それゆえ上の階層に行けば行くほど進化は早く、人々、特に若者の目はそちらに行きがちだ。

しかし、それが本当によかったのだろうか?これは熟成なのだろうか遅行なのだろうか。

実際ある階層での革命は、一つ下の階層の革命から始まっている場合が多い。Webにしてからが、TCP/IPあってのことだ。上の階層での「改革」についていこうとして、下の階層の進歩がむしろ止まってしまうということはないのだろうか?

今時の「悟天OS」がイマイチぶっとんでないのは、いづれもぶっとびにはほど遠いハードウェア上で開発されているからかも知れない。

しかし消費電力の観点から、"Massively Parallel for the Rest of us"というのもありなのではないだろうか....

電脳進化論からもう14年。速度、容量といった「量」の変化は大いにあったが、質の変化はどうなのだろう....

Dan the Disconnected Man


この記事へのトラックバックURL

この記事へのトラックバック
思考する機械コンピュータ Daniel Hillis [原著:The Patter on the Stone] Connection MachineのEntryを書いてから、原著の方をむしょうに読みたくなったのだが、入手がなかなか困難そうなので、The Society of Mindと一緒に買ったのがこちらだが、これはお薦...
石の模様【404 Blog Not Found】at 2006年05月26日 15:21
というわけで、こちらのコメントで約束したとおり、今度はGRAPEのお話 手作りスーパーコンピュータへの挑戦 杉本 大一郎 [講談社へのリンク] 雑種路線でいこう - どっこい超並列処理は進化してまっせ『電脳進化論?ギガ・テラ・ペタ』でも取り上げられていた....
葡萄畑は今【404 Blog Not Found】at 2006年05月16日 08:14
『電脳進化論―ギガ・テラ・ペタ』は僕も中学の頃に読んだ.Connection Machineとは懐かしいな.あーゆーセクシーなスパコンがなくなったことは残念でならないって,実物みたことはないんだけどね.弾さんはConnection Machineのようにぶっ飛んだアーキテクチャがなくなって
どっこい超並列処理は進化してまっせ【雑種路線でいこう】at 2006年05月14日 11:14
この記事へのコメント
お,コメント欄でGRAPEが話題になってると知らずエントリを書いてトラバしてしまいました
失礼
Posted by 南方司 at 2006年05月14日 11:36
通る人、
ぎゃふん。次にGRAPEを取り上げようと思っていたのにコメられる(コメントされる)とは。
Dan the Parallel Blogger
Posted by at 2006年05月14日 02:37
牧野さんのこんな話とか。http://grape.astron.s.u-tokyo.ac.jp/pub/people/makino/articles/future_sc/face.html

あと、牧野さんが、wikiのコネクションマシンの項(http://ja.wikipedia.org/wiki/コネクションマシン)は結構「あれ」だって日記にかいてありましたが、なんか知ってたら修正を。
http://grape.astron.s.u-tokyo.ac.jp/pub/people/makino/journal/journal-2006-05.html#8
Posted by 通る人 at 2006年05月14日 02:08