「タダ飯の時代は終わった」(The free lunch is over.)とHerb Sutterは宣言した。
タダ飯というのは、コンピューターの性能向上にかかる期間があまりに短かった時代を表す言葉だ。一昔前は、コンピューターの性能が倍々に上がっていくので、今、コンピューターの性能が足りないために使えないソフトウェアでも、来年辺りには使えるようになっていたのだ。つまり、プログラマーは苦労せずしてタダ飯をかっ食らうことができるのだ。どうせ1年か2年待てば、パフォーマンスは問題にならなくなるのだ。今ソフトウェアを最適化する意味がない。
一昔前、我々はタダ飯を享受していた。集積回路の密度が9ヶ月、ないしは1年、そして1.5年で倍になり、回路を駆動させるクロック周波数も倍になっていくのだから、実質、1年ぐらいで、コンピューターの性能は倍になるのだ。すると、2年後には4倍に、3年後には8倍になってるだろう。
パフォーマンスなんて気にするな、プログラマーの諸君。飯はタダだぞ。
ところが、そのような素晴らしいタダ飯の時代は終わった。まずクロック周波数を引き上げることが難しくなり、純粋にクロックを倍にして性能の底上げをすることができなくなった。集積回路の密度は今も上がっているが、あまりに細かくなりすぎて、単純にクロックあたりの性能を倍にすることも難しくなった。そういうわけで、今のコンピューターは、以前ほど性能が上がらなくなっている。
私は、6年前に組んだコンピューターをいまだに使っている。たしかにこのコンピューターは今となっては遅い。しかし、まだ絶望的にパフォーマンスが不足しているわけではない。以前ならば、6年もたてば、コンピューターの性能は64倍になり、ソフトウェアも64倍の性能をあてにするようになり、6年前のコンピューターなど漬物石にしかならないはずであるが、今は、コンピューターの性能がそれほど伸びていないのだ。
たしかに、コンピューターを6年も使うには、色々と面倒なことがある。GPUは何度か交換している。CPUファンも壊れたので交換した。電源ユニットも壊れたので交換した。HDDもOSを入れ替える際に交換した。
とまあ、細かく見ていけば、純粋に6年前のコンピューターではないのだが、マザーボードとCPUとメモリーは変えていないし、HDDをSSDに変えたわけでもないので、まあ、ほとんどは6年前の性能だ。
さて、今のコンピューターの性能をつらつらおもんみるに、CPUのクロック周波数は変わっていない。CPUのクロックあたりの性能は、6年前より、3倍ほど向上したようだ。6年でたったの3倍とは、一昔前では考えられない。3倍程度の性能差というのは、ローエンドとミドルエンド程度の違いでしかない。なるほど、通りで絶望的なパフォーマンス不足を感じないわけだ。6年前のミドルエンドは、今のローエンド程度でしかないのだから。
かわりに、今やローエンドCPUでもマルチコアだったり、仮想化のような特定分野専用の支援機能があったり、電力効率を重視したりしているが、絶対的な性能がそれほど向上していないというのでは、もうタダ飯の時代ではない。
CPUより悲惨なのは、メモリだ。メモリの性能は、全然上がっていない。容量はともかく、メモリ帯域が全然上がっていない。ただでさえ鈍化したCPUの演算性能向上にすら追随できていないのだ。
このため、DOOM 3 BFGの最適化にもあるように、今のソフトウェアの最適化は、できるだけアクセスするメモリの範囲はキャッシュに収まる範囲に狭めなければならない。いくらメモリ容量があろうとも、縦横無尽にメモリ領域を読み書きして回るわけにはいかないのだ。なるべく狭い範囲に読み書きを分割して集中させなければならない。
私がPCを組んだ6年前というのは、確かちょうどDDR3が市場に出回るようになった頃だ。当時、私は価格を考慮して、安価なDDR2を選択したわけだが、まさかいまだに一般市場でDDR3を使っているとは思わなかった。DDR→DDR2→DDR3と、だいたい4年ぐらいの期間で世代交代しているのだが、DDR3はやけに長い。来年の2014年には、DDR4が一般市場に出てくるそうなのだが。
興味深いことに、GPUだけは、この6年間にかなり性能が向上したように思う。単なる演算性能だけではなく、機能的にも、よりprogrammableになっている。
ストレージは、SSDの登場によって一気に性能が上がった。どうも記憶が曖昧だが、6年前は、まだSSDが市場に出回っていなかったか、あったとしても、容量数十GBがウン万もしたはずである。
追記:AKIBA PC HotlineにSSDという言葉が初出したのが2007年のようだ。32GBで約8万円、64GBで約17万円したそうだ。
ただ、SSD自体としても、容量増加以外の性能向上が鈍いように思われる。これも、一種のメモリであるから、同じ問題なのだろうか。
まとめ
6年前と比べて、CPUはクロックあたりの演算性能が3倍になった。メモリはちょうどDDR2とDDR3の転換期だったために帯域が2倍になった。GPUは相当に性能とプログラミング性が向上した。ストレージはSSDにより一気に性能が上がり、2013年では容量的にもHDDを十分置き換えられるようになりつつある。
SSDに関しては128GBアレば使い物になること、データ保管庫としては不適合なことなどを鏡見て、
ReplyDelete現状でも商売になっているので容量を上げる必要が無いのでしょう。
確かにNANDメモリは細微化に行き詰っていますが、消耗品である以上今のバランスが最適に思います。
6年前のGPUというと、ちょうどG80とR600でunified shaderへの転換期ですね。
ReplyDeleteそこから比較的大きな変化があったのは去年のKeplerとGCNなので、GPGPUという新しい分野が興ったにしては、性能はともかくアーキテクチャの進化は随分ゆっくりとしたペースに思えます。
> ミドルエンド
ReplyDeleteミドル(真ん中)にエンド(端)はない。