2007年もマルチコア化と仮想化が大きな潮流に
IntelがNetBurstアーキテクチャを用いた(主にクロックの向上による)プロセッサの高速化を断念してマルチコアプロセッサへ舵を切ったこともあり、IntelやAMDというPC向けプロセッサだけでなく、SunのUltra SPARC T1 (コードネームNiagara)も加わって、時代はマルチコアプロセッサ一色といった感じ。
PCだけでなく現在はMacもIntelにプロセッサを切り替え、現行のモデルではCore2 Duoというデュアルコアプロセッサを標準搭載している状況なので、既にコンシューマ向けは少なくともデュアルコア、ハイエンドではクアッドコアのプロセッサを搭載している事が当たり前になりそうだ。
ただ、問題はこの記事でも指摘されている通り、同時に多数のタスク(プロセスもしくはスレッド)を処理する事が使命であるサーバに対して、コンシューマ向けのPC(もしくはMac)ではそれ程の同時処理能力が要求されていないのが現状だと思われる。それには、マルチスレッド化されたコンシューマ向けアプリケーションが少ない事が原因であり、さらに進めるとアプリケーションをマルチスレッド化する事が面倒くさいというのが原因なのではないかと思う。
実際にマルチスレッドのアプリケーションを書いてみるとすぐに分かるが、スレッド間での同期やリソース共有というマルチスレッドアプリケーションに特有の難しさがあり、その為余程のメリットが得られるのでなければ敢えてマルチスレッド化しないというのが普通だろう。
従って、今後はますます採用が進むマルチコアプロセッサを活かす為に、マルチスレッドアプリケーションをより容易に開発する為の支援ツール等の登場が望まれるのではないだろうか。さもないと、コンシューマ向けPCに搭載されたマルチコアプロセッサは、単なる宝の持ち腐れになり兼ねない。
ちなみに、Windows XPやVistaがマルチタスクOSだからマルチコアプロセッサの恩恵を得られる、というのは、理屈としては正しいが現実的には間違っている。主に人間とのインタラクションを行う対話型のアプリケーションが多いコンシューマ向けの環境では、厳密にはほとんどのプロセッサ実行時間においてその負荷はかなり低い。実際の所、音楽や動画のエンコーディング以外のタスクでは、あまりプロセッサの負荷は上がらないだろう。
例外としては、ソフトウェアでシミュレーションを行う様な、特殊な人々(ソフトウェア開発者やソフトウェア関連の研究者)にとってはマルチコアプロセッサは役立つかも知れない。
話が脱線してしまったが、要するにマルチスレッドアプリケーションの開発支援ツールが必要だ、ということである。そういう意味では、何だかんだ言ってJavaのマルチスレッドサポートは素晴らしいので、これからはJavaがまた流行るかも知れない。C#は全く知らないので何とも言えないが。
0 件のコメント:
コメントを投稿