未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

エコプログラミング(技術的なヨタ話)

マイクロプロセッサの高速化はクロックを高速化することによって随分長い間なされていた。ソフトウェアにとっては、特に何もしないでハードウェアがよきにはからってくれるからこれほど楽な事はない。ムーアの法則万歳である。

しかし、クロックの高速化もメモリアクセスがCPUの高速化に追いつかないのでキャッシュミスをしたときのコストが高くなりすぎて、ソフトウェアもキャッシュについてちょっとは考えなくてはいけなくなってきた。

さらに、クロックの高速化は消費電力の増大を招くので、昨今の電力事情、地球温暖化に鑑み、むやみやたらな高速化もいかながものかなという時代になってきた。

クロックレートは頭打ちにしてコアをいっぱい増やすことによって性能向上をしようというのが最近の流れではあるが、マルチコアの場合、ソフトウェアを書き換えないと性能が向上しないので、ソフトウェア屋さんとしては、頭が痛いところである。

従前のCPUの高速化のキーワードは、投機的実行、スーパースカラー、アウトオブオーダー実行、トレースキャッシュ、などなど、大量の複雑なハードウェアをこれでもかこれでもかと使って、無駄な実行も含めて可能な限り並列実行させて、性能を稼ごうというものであった。まあ、言ってみればF1マシンみたいなものでガソリンをがぶ飲みする高性能マシンという感じである。

それに対して、そーゆー難しいことは一切省いて、もっとエコに実行するプロセッサ、省電力プロセッサが出てきた。

http://journal.mycom.co.jp/articles/2008/02/06/isscc3/

トランジスタの数を劇的に減らして(トランジスタ数4700万というのはサーバー機の5分の一以下)性能の絶対値は低いが消費電力はもっと低い。つまり電力あたりの性能を高くするという流れがある。

モバイルデバイスだと電池の重さがそのデバイスの重要なファクターになる。

消費電力の少ないソフトウェアアルゴリズムの研究というのが必要かと思う。(いったいどんなアルゴリズムが消費電力が少なくてすむかまるっきり見当もつかないけど、ともかく消費電力効率のいいアルゴリズムが必要なのである)

エコカーみたいなエコプログラミング。

消費電力が半分ですめば電池の重さも半分ですむ。値段も安くできる。