ラベル マルチコア の投稿を表示しています。 すべての投稿を表示
ラベル マルチコア の投稿を表示しています。 すべての投稿を表示

2006年12月29日金曜日

来年のコンピューティングの潮流は?

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#は全く知らないので何とも言えないが。

2006年10月31日火曜日

マルチコア

どこかの記事で、Intelは今後コンシューマ向けデスクトップPCでもクアッドコア(4コア)プロセッサを推進する、なんて物騒なことが書かれていた。既にデュアルコアのプロセッサは普通になりそうな勢いなので、当然コンシューマ向けのソフトウェアが並列化される流れも起きるのではないかと思う。

そこで気になるのが、まぁ誰でも知っていることだが、並列化が可能なソフトウェア、つまりマルチスレッド対応のソフトウェアを書くのは面倒臭いということだ。かなりCPUをぶん回す様な画像処理とか動画処理のソフトウェアはともかくとして、一般的なブラウザ、メーラあたりでマルチスレッドを活かした実装にするのは結構大変なのではないかと思う。

勿論、既にスレッドに分けて処理を行っているだろうことは想像に難くないが、そのソフトウェアの総実行時間中どれくらいの時間がマルチスレッド処理されているのか、というのが問題だ。これを限りなく100%に近づけないと、マルチコアの恩恵はフルには享受できない。

さて、コンシューマとかデスクトップとか書いておいていきなりなんだが、この並列処理をコンパイラやツールでサポートしてしまおうという流れもある。例えば、IA64プロセッサがそうだ。実行時ではなく機械語生成時に並列化可能性を判断し、並列にしてしまうという発想だ。以下は宣伝記事だが、内容は面白い。


今後、デスクトップでもマルチコアをフル活用するには、こういったツールでのサポートが欠かせないのではないかと思う。