言語ゲーム

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

Twitter: @propella

マルチプロセスはどうなるの?

最近マルチコアが流行ですが、こないだ物知りな同僚の D 君に聞いたら、今のようなマルチコアがどんどん発達しても上限はせいぜい 100 個くらいで、それ以上は能率が悪すぎてメモリの共有出来なくなるだろうという話でした。それ以上速くしようとすると、今サーバーでやってるみたいに CPU 達を比較的低速なネットワークで繋ぐ形になる。という事は、今からそういう形前提のパソコンのシステムを考えといた方が良いと思うのですがどうでしょうか。

アナロジーと歴史が好きな人のために書くと、昔大型コンピュータしか無かった時代に、アラン・ケイがそのハードウェアを個人のために使えないかと考えたように、今グーグルが持ってるようなコンピュータ群が将来自宅にあったらどういう風に使うと便利だろうかという事です。

そんなの必要なのか?!という話は長くなるので別の日に書きます。必要だという前提で進めます。例えば、今のパソコンだと CPU とメモリとハードディスクがセットで一つの OS が動いているわけですが、この超クラスタ型パソコンだとそんな事やってられない。沢山の CPU が連動してまとまった体験をユーザに提供する必要があります。また CPU 達が一つのパソコンに入っている必要も無くて、上に書いた iPad もそのネットワークに参加する事になる。すると OS は個人ごとになるのかな。

例えば家に iPad が 20 枚くらいあって、テレビが 5 枚くらいあって、いくつかは家族共有になってる場合、OS はコンピュータを制御する物じゃなくて、バラバラなハードウェアに対して一人の個人に仮想的にまとまった体験を作り出すものになる。つまり、階層としてはこんな感じになる。

  • 個人に仕える OS はハードウェアとは独立してある。
  • 複数のコアが協調して動作するチップ内のネットワーク(メモリ共有)
  • 複数の CPU が協調して動作する一個の機器内のネットワーク(プロセス間通信)
  • 複数の機器が協調して動作する家の中のネットワーク(プロセス間通信)
  • インターネット(プロセス間通信)

今はやりのクラウドの考え方で言うと、データは全部サーバーでシンクライアントを使うという事なのだろうけど、これは、今後も CPU 資源を思い切り使うのが計算や保存じゃなくてユーザインタフェースの部分だと思うので無理だと思う。サーバーとクライアントの適切なバランスは何度もシーソーゲームを繰り返して発展するでしょう。

まあよくも知らずに適当に書いてるだけですが、

参考