PlayStation 3の次は家庭内Cellコンピューティング

 クタたんの妄想大爆発的分散型コンピューティング構想のまとめ。要するにクタたんは「Cell」という CPU を基盤に、ネットワーク上のノード全てを同じアーキテクチャで結ぶ事で分散処理が成立し、リアルタイム性を発揮すると言う事のようです。
 以下眠気覚ましに書いた素人の駄文。
 俺が P.L.D. の基本構想を考えたのはだいたい 5 年くらい前で、具体的にデジタロイドがリアルタイム性をもって走る(runする)には分散型コンピューティングしかないんじゃないかなーと素人なりにぼんやりと思い始めたのが昨年の頭ごろ。
 それでボケーっと口半開きで 1 年程考えた結果、

  1. 高速なネットワークが必要
  2. 共通の OS が必要
  3. どうやって処理を分散するか考えなあかん

以上が材料として必要っぽいかなと。
 1.は 40 年以上も未来の話なので、物理層は多分十分なものが用意されてると思いますが、問題はデータリンク層以上のプロトコルTCP/IP だと多分遅延発生しまくりでだめぽな気が。と言うより、ネットワークのプロトコル自体が分散処理を前提として書かれた物でないと、各ノードが自分の周囲にあるノードの位置やそこまでの速度や CPU パワーなどのリソースを把握できないんじゃないかなーと思いました。あとそこまで行ったら OSI 参照モデルは役に立たない気がしてきました。ぎゃふん。
 2.はそもそも OS が共通でないと API を利用するプログラムを分散処理出来ねぇんじゃないかナと。というか分散処理自体を動かすものがないと意味ないし。あと上のネットワークプロトコルとあわせて、別のノードからメモリ上のアドレスを参照できるように OS 側がサポートしてやる必要がありそうだネと。ついでだから API から見てメモリとネットワークが論理的に地続きだったらデジタロイドの活動も想像しやすいヨと。具体的にはユニークなノードアドレスと、物理メモリアドレスのハッシュ値を組み合わせた、MAC アドレス的な論理アドレス。言い換えれば物理アドレス的な論理アドレス。なんじゃそら。しかもハッシュ値って。子供でもセキュアだって言わねぇよ、最近。複号するノードの負荷考えろよ俺みたいな。ちなみに「NOS」なんていうダセぇ名前はもちろんパトレイバーから来てます。
 3.どうやって処理を分散するか。一応プログラムを関数なんかを 1 単位としたセグメントに分け、ヘッダに先の論理メモリアドレスを含んだ電子署名をつけてネットワークに放流、というやり方です。セグメントはヒマなノードが受け取って処理し、電子署名を参照して宛先の論理メモリアドレスに返します。ていうかこれくらいしか俺の頭では考えつかねーっつーの!! クラスタサーバとかよく知らないから妄想でしか話作れねぇーっつーの!! 俺はかーちゃんの奴隷じゃないっつーの!! ってナニを逆切れしてますか俺。いろいろツッコミどころ満載ですが、こんな感じです。セグメントを放出したノードは、いつどのアドレスのどんなセグメントをどのノードに渡したかなんて覚えてられない(それでデータベースとか組んでたらとんでもない量のコミットがかかってオーバーヘッドで本末転倒になりそう)と思うので、処理を受け取ったノードが「いついつにどこどの物理メモリアドレス(を先頭とする)の処理をやってやった。返すからありがたく思え」と教えてあげなければならないんではなかにゃーと。一応電子署名つきなので改ざんとかやりにくいかなーと。
 あと処理を返す時の経路も問題。放流したセグメントをいつどこのノードが処理してくれるかわかんないので、処理を行ったノードは放出元ノードの位置なんか基本的に知らないハズ。ノードアドレス自体はユニークなので、とりあえずとなりのノードにセグメントを渡して順繰りにノードを辿っていけばいつかは放出元ノードにたどり着くでしょうが、果てしなく時間がかかりそう。各ノードが自分の周囲を把握していればルータのように経路を決定できそうですが、そもそもルータってのはパケットをノードに渡すのではなくネットワークに渡すものなのでこれもムリそう(ノードアドレスにある程度の法則性をもつノードが複数固まっていれば一つのネットワークとして考える事ができるのでルータっぽく機能することも可能でしょうが、ユニークなノードアドレス自体てんでばらばらに配置されているので意味無ぇ。だってイメージとしてノードアドレスってぶっちゃけ製造番号で、要は NICMAC アドレスだし)。
 なんつーかこう、SF の時代考証って難しいですね。メモリアドレスの件にしてもハードディスクの事を全く考慮に入れてないし(というより二次記憶にハードディスクを使う事自体古い考え方になってそうだし)。自分で考えてても十分に穴あるし。※この話は sage で。