最近のPCは高速なのか?

最近Core2QuadとCorei7のPCの比較をしていくつか興味深い現象がありました。
Corei7には、SpeedStep、TurboBoost、HyperThreadingなど処理を効率化化する様々なテクノロジが搭載されていますが、画像処理のような画像取り込み直後に瞬間的に負荷がかかる状況だと思わぬ副作用がでるようです。

SpeedStepは期待したように働かない

本来のSpeedStepの働きは暇なときはCPUの動作を遅くして消費電力を削減し、発熱を押さえるすばらしい機能です。
でも画像処理のように一回の負荷が100ミリ秒前後の瞬間的な負荷ではSpeedStepが期待したように動作しません。いつまでもCPUは休憩したまま本来の実力を発揮してくれません。

実際に、SpeedStepを有効にしたままでベンチマークをとるとほぼ同一クロックのCore2Quadの2倍近くCorei7の処理時間がかかります。

電源の管理でハイパフォーマンスを選択したり、BIOSSpeedStepを無効にすることで本来のパフォーマンスを発揮します。

TurboBoostはあんまり効果がなさそう

TurboBoostは特定のCoreのクロックをあげる代わりにそのほかのCoreのクロックを下げて、シングルスレッドアプリケーションのパフォーマンスを向上するためのテクノロジです。
画像処理の場合は、マルチスレッドを一部利用していることもあり、影響のほどが予想できなかったのですが、BIOS設定でTurboBoostを入れ、切りして試してみたのですが、有意な差がでませんでした。

アプリケーションに大きく依存するとは思いますが、劇的な改善がみられないので、処理時間を安定させるためには、BIOS設定で切っておいた方がいいかもしれません。

HyperThreadingは切った方が速い

このテクノロジはずいぶん前から搭載されたCPUがありますが、短時間で処理を完了させるという目的にはあっていません。
複数の処理を並列して動かし続けるのは得意ですが、シングルスレッドの処理能力がOFFの状態に比べて10%程度下がります。

実際に画像処理のベンチマークでも、BIOSHyperThreadingを切った方が10%ほど、処理時間が短くなりました。

Corei7だと、タスクマネージャに表示されるコア数が8個から4個に減るのでなにかもったいない気がしますが、画像処理のパフォーマンスのみ追求するのならばBIOSで切った方がいいと思います。

まとめ

ここに書いたことは、あまり大きくない画像処理のベンチの結果です。実際のアプリケーションでは、また異なった結果になる可能性もあります。ここの情報はあくまでも目安として実際のアプリケーションで実験した上で設定を決めてください。
また、ここで取り上げた機能はPCを効率的に動かすための仕組みです。SpeedStepは、消費電力の削減や発熱量の削減に有効ですし、TurboBoostは、負荷の高い特定のスレッドに処理性能を優先的に割り振る機能ですし、HyperThreadingは多くのプロセスが同時に動く際により多くのスレッドが並列に動作する助けになります。速度最優先でなければ、これらの機能を有効に活用することもいいと思います。