マルチコア化に伴うソフトウェア開発者の責任

もとねた
The Free Lunch Is Over - prog-blog
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software By Herb Sutter
斜め読みの要約で申し訳ないが、簡単にまとめると、これまで、ソフトウェア開発者は、自信の作るソフトウェアのパフォーマンスについて、ハードウェアの進歩、主にクロックアップ、キャッシュの増量、パイプライン技術の進化に任せていればよかった、つまり、パフォーマンスに関しては、ハードウェアというフリーランチを食べていればよかったが、マルチコア化によりこの状況が変わっていき、パフォーマンスに関してもソフトウェア開発者が責任を持たなければならなくなる。もうフリーランチというわけにはいかないということがかかれていると思う。


結局のところこれ以上のMPUのクロックアップは望めそうになく、MPUの動作クロックに関しては2004年時のクロックがほぼ最高に近い形で、これ以上クロックアップがなされるという情報はほとんどない。つまりこれがどういう事かというと、モノシリックな単一スレッドで動作するアプリケーションソフトウェアの性能は2004年がピークでそれ以上の向上は望めないことを示している。
MPUがクロックを上げないまま、マルチコア化していくとしたとき、アプリケーションの性能を上げる方法は
よりたくさんのコアを、つまりより多くのレジスタとALUを使うようにアプリケーションを作る必要がある。つまり、アプリケーションをより分割し、並列動作可能なようにアプリケーションを制作する必要がある。また、この並列動作も、マルチコア化するCPUがキャッシュ性能をよりよく発揮できるよう、マルチスレッドアプリケーションに最適化するように設計されてくるので、その実現方法としては、複数のプロセスに分割するのではなく、複数のスレッドに分割するようにソフトウェアを制作すべきである。プロセスのロード・アンロードはオーバーヘッドが大きく、貴重なキャッシュ資源を無駄遣いしてしまう。
こうしたアプリケーションの並列処理化、マルチスレッド化といった作業は、ハードウェアでは行えない。ソフトウェア開発者が責任を持って実行する必要がある。もうただでソフトウェア開発者にパフォーマンスというランチを出してくれるところはない。ハードウェアの進化はもう僕らを救ってくれたりはしないのだ。
これからは並列実効性という視点でも、ソフトウェアの分割を考え、設計、コンストラクションを進めなくてはならない。
追記(2005/12/13 0:20)
誤記、誤字脱字の修正

2 thoughts on “マルチコア化に伴うソフトウェア開発者の責任”

  1. PLinq : .NET Fx における並列化実装の議論が進められているらしい

    MPUのマルチコアが進む一方で、その動作クロックが上がっていかない状況は、MSのソフトウェアアーキテクトであるHerb ShutterがThe Free …

  2. InfoQ: マルチコアプロセッサ時代のソフトウェアアーキテクチャインパクト

    基本的には「フリーランチはない」と同じ内容。それをもう少し具体的この記事の元の記…

コメントを残す