CPUのマルチコア化は、ハードウエアの革命ではなく、ソフトウエアの革命だ。いや、ソフトウエアの受難と言った方がいいかもしれない。それくらい、ソフトウエア側は困っている。
1_px500.jpg
| 今後はソフトウエアの改良なしに性能は向上しない |
1_px500.jpg
|
CPUのマルチコア化で「フリーランチ」が終わった
CPUが誕生してからこれまで30年間、CPUはシングルコアの性能を高め続けてきた。シングルコア性能が上がると、何もしなくても、同じソフトウエアがより速く走るようになった。その分、もっと複雑なソフトを作ることができるから、ソフトはシングルスレッドのままどんどん肥大化を続けてきた。
ところが、今では、CPUコアのシングルスレッド性能は、昔のようなペースでは伸びない。CPUが物理的にもアーキテクチャー的にも限界に近づいたからだ。そこで、CPUメーカーはCPUコアのシングルスレッド性能を上げる代わりに、CPUコア数を増やすことにした。
そこで困ってしまったのが、ソフトウエアメーカーだ。シングルスレッド性能が上がらないから、同じソフトのままだとアプリケーションの性能は上がらない。ソフト側が、複数のCPUコアを有効に使っていかない限り、アプリケーション性能は上がらなくなってしまった。
MicrosoftでC++のソフトウエアアーキテクトを務めるハーブ・サッター氏は、この状況を「フリーランチが終わった」と表現した。フリーランチとは文字通りタダ飯のこと。ソフトは、もうタダ飯食い(楽に性能を上げる)はできないという意味だ。プログラミング言語の世界のグル(導師)から、そういう言葉が出るくらい、ソフト側の危機感は強い。それだけ、マルチコアに合わせたプログラミングのハードルが高いからだ。