2006-08-23

決定的となったヘテロジニアスマルチコアへの潮流 決定的となったヘテロジニアスマルチコアへの潮流 - Nao_uの日記 を含むブックマーク はてなブックマーク - 決定的となったヘテロジニアスマルチコアへの潮流 - Nao_uの日記 決定的となったヘテロジニアスマルチコアへの潮流 - Nao_uの日記 のブックマークコメント

 これまで、CPUはシングルコアの性能を高める方向で来た。そのことは、ソフトウェアにとってはタダ飯食いと同じことだったという。つまり、ソフトウェア側は何もしなくても、CPUが進化するにつれて同じコードがより速く走るようになったからだ。ソフトウェアは、増えるパフォーマンスをどんどん食べればよいだけだった。

 ところが、CPUベンダーがマルチコアにターンしたため、状況が変わってしまった。汎用CPUコアのシングルスレッド性能は、現状ではもはや急激には伸びてゆかない。その代わり、マルチコア化によりマルチスレッド性能が急激に上がって行く。そのため、ソフトウェア開発者はCPUのパフォーマンスを活かそうとすると、ソフトウェア側を根底から切り替えて行かなければならない。

 特に、ヘテロジニアスマルチコアになると、対応が非常に重要となる。CellやAMD CPU+GPUの場合は、演算コアであるSPEやShaderで走るコードを書けば非常に高いパフォーマンスが得られるが、そうしない限り大きな性能アップは得られない。これまでと違って、パフォーマンスアップはタダではなく、代価を払わなければならない。フリーランチは終わってしまったというわけだ。


ヘテロジニアスマルチコア化によってソフトウェアの負担が増える分、CPUベンダーはそこに力を入れなければならない。CPUベンダーの役割は、ハード設計だけでなく、ソフトウェアベースの方に、さらに寄らなければならない。しかし、Sutter氏は昨年(2005年)のFall Processor Forumのキーノートスピーチで、ハードウェア側にはソフトウェア側の困難に対する理解は、まだ薄いのではないかと指摘した。


ハードウェアは一度設計すれば終わりだけど、ソフトウェアは目的ごとに個別に作っていかなくてはならない。理論の上では高速に動作できるハードがあったとしても、そこにその性能を生かしたソフトが適切なタイミングで出てこないのでは意味がない。ソフトウェア技術の進歩は低層部分を可能な限りブラックボックス化し、目的に近いレイヤーのみで思考できるような方向に進んでいるのに、アプリケーションのレベルでさえCPUの設計に特化した作りにしないといけないというのは、時代に逆行しているような感覚も受ける。

このような手段をとらないとこれ以上の性能の向上が難しいのはわかるけれど、そうであるならなおのことどこかのレイヤーで吸収してフリーランチに近い状態で利用できるようにしていかないと、下手すると高機能なハードはあってもソフトの数が出揃わないままに終わってしまうような気がする。そもそも何のために更なる高性能が必要とされているのか、という疑問もなくはないけど。

百年の言語 --- The Hundred-Year Language 百年の言語 --- The Hundred-Year Language - Nao_uの日記 を含むブックマーク はてなブックマーク - 百年の言語 --- The Hundred-Year Language - Nao_uの日記 百年の言語 --- The Hundred-Year Language - Nao_uの日記 のブックマークコメント

http://www.shiro.dreamhost.com/scheme/trans/hundred-j.html