CELLとJAVAの関連性について語ってみる。
JAVAは、CELLが共通して備えるISA (Instruction Set Architecture)に相当
する部分を「仮想マシン=バイトコード」としてソフトウェアで実装した。
なぜJAVAがあれだけ注目されたかというと、様々なCPUアーキテクチャとOSの
アーキテクチャの差分をこの仮想マシンで吸収させることで、"バイトコード
のまま"ネットワーク上にデータを流せる日が来るかもしれないと考えられた
からだ。
でも実際には、バイトコードからネイティブコードとの相互変換プロセスが
オーバーヘッドの塊で、クライアントサイドでは使い物にならなかった。
(勿論SWTやSwingがクライアント実装技術として実用的なのは認めるけど、
やっぱり分散処理を行う基盤としてはお話にならない。その証拠にRMIや
Jiniは広まっていない。)
また、当時としては先進的なセキュリティの仕組みであった「SandBox」だが、
ソフトウェアによる検証機構にはやはり限界があった。その結果、JavaApplet
は制限だらけの使いにくい代物になり、今では最早ニッチな存在である。
(MSとの政治的な駆け引きに敗れたというのもある。)
一つ言えることは、特許でJAVAについて言及されていることからもわかるように、
CELLアーキテクチャも目指す世界はJAVAと同じだということだ。
ただし、共通化するレイヤーはソフトウェアではなく、ハードウェアによる実装
という点でCELLはユニークである。異なるCPUアーキテクチャの差分を吸収する
ためにOSが生まれ、OSの差分を吸収するのにJAVAが生まれた。
でもネットワーク上で動作することを前提としたソフトウェアとしては、パフォーマ
ンス面、セキュリティ面で限界がきている。少なくとも巨大なデータをリアルタイム
で分散処理するには不十分な存在である。従ってJAVAを真似した.NETのCLRも
同様の問題を抱えていると言える。
つまり、CELLはネットワーク上で連携することを前提としたCPUアーキテクチャを
構築して、アセンブラレベルのコードをSoftwareCellに詰めてネット上に流せる
ようにしようとしているのだ。同期機構やSandboxの仕組みもハードウェアで実装
して、パフォーマンス面、セキュリティ面の問題の解決を図ろうとしているのであ
る。
従ってCELLワールドでは、WindowsもJavaもいらない。何しろISAが同じなので、
変換の必要なレイヤーが圧倒的に少ないからだ。ソフトウェア開発の効率を上げる
ために、Toolの揃ったLinuxと複数のプロセスやスレッドを管理しやすくするための
リアルタイムOSがあれば十分なのだ。
近い将来、バス上のレイテンシとネットワークのレイテンシが逆転する時が来る。
それはシリコンフォトニクスが実用化されてCPUコアが光ネットワークに直結され
る日だ。その時まで、CELLは従来のマルチコアCPUと同等の存在に留まるだろう。