マルチコアというアーキテクチャ自体は、計算能力向上と発熱対策のジレンマから生まれたはずなので、そのことをマルチコアジレンマ言っているのかと思ってたんだけど、そうではなく、何がジレンマって、『マルチコアアーキテクチャで確かにCPUの計算能力は上がることになるんだけど、多くのミッションクリティカルなエンプラ系のAPはマルチコアサーバでは速くなんない』という話だそうだ。
The "dilemma" is this: a large percentage of mission-critical enterprise applications will not "automagically" run faster on multi-core servers.理由は2つ。後者の方に注目したい。
- マルチコアというのは複数のコアプロセッサを載せているわけだけど、1つ1つのコアの性能は比較的よくない。
- ほとんどのエンプラ系APはマルチスレッドでプログラムが書かれていない。
並列・分散プログラミングなど、今後のプログラム言語の進化に影響してきそうですが、さらに設計にもいくらか影響するだろうし、また並列・分散ということで一般的にテスト・デバッグはかなりしんどいものになるだろうな。形式手法などが陽の目を見るのかもしれない。
ただ、エンプラ系APでもそんだけ性能をがつがつにチューニングしないといけないものはどれくらいあるんだろうかとも思うし、CPUネックなAPってそんなに多くない気もする。
この話を会社でしてたら、エンプラ系だとストレージ分散の方が重要じゃないかという意見も。たしかにそうかも…。分散DBや分散ファイルシステムの方がエンプラ系だと重要なのかもしれん。
なお、この「マルチコアジレンマ」は「マルチコア危機」という言葉でも表現されている。
マルチコア危機:ScalaとErlangの対立
マルチコアにより、並列プログラミングのための言語というのが注目されてくる。その代表としてScalaとErlangがある。
MSが150万ドルを投じる7大学によるマルチコア研究プロジェクト
MSも注目しているんでしょう。というか、OS自体をマルチコアチューニングしていかんとあかんのでしょうか。

