週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

GALAXY S4の特定ベンチアプリにおけるCPUクロック操作疑惑を検証

2013年08月05日 15時30分更新

 サムスンのフラッグシップスマホ、GALAXY S4にとある疑惑が浮上した。それは、一部ベンチマークアプリなど、特定のアプリ実行時にCPUやGPUの動作クロックが意図的に制御されているというものだ。そこで、実際にそういうことがあるのか検証してみた。

 きっかけとなったのは、ハードウェア検証サイト“AnandTech”の記事だ。この記事によると、北米などで販売されているオクタコア(Exynos 5 Octa)版のGALAXY S4で、AnTuTu ベンチマークやQuadrant、Linpack for Androidなど、一部の著名なベンチマークアプリを実行すると、CPUやGPUがつねに高クロックで動作するようになるという。

 実際に、オクタコア版のGALAXY S4を用意し、いくつかのベンチマークアプリを実行しつつ、CPUクロックの状態をチェックしてみたところ、確かにLinpack for Androidは起動直後からCPUクロックが最高の1.6GHz、AnTuTu ベンチマークやQuadrantでは1.2GHzとなり、ベンチマークを実行していない、CPU負荷がほとんどない状態でもCPUクロックが下がらないことを確認。それに対し、GFXBench 2.7.0や3DMarkでは、起動後のベンチマークを実行していない低負荷の状態では1GHz以下に低下することを確認した。

GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑海外版GALAXY S4でLinpack for Androidを起動すると、起動するだけでCPUクロックが1.6GHzとなり、CPU負荷がかかっていなくてもクロックが落ちない。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑GFXBench 2.7.0では、起動後にテストを実行していない場面でCPUクロックが800MHzにまで低下する。

 しかも、Linpack for Android、AnTuTu Benchmark、Quadrantではベンチマークテスト実行中でCPU負荷の低い場面でも、CPUクロックが1.6GHzまたは1.2GHzより低いクロックに下がることがほとんどなかったのに対し、GFXBenchや3DMarkではCPU負荷の低い場面ではCPUの動作クロックが1GHz以下に下がることを確認。こういった挙動を見る限り、特定のアプリ実行時にCPUやGPUの動作クロックが制御されていると考えられる。

GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑AnTuTu Benchmarkでは、起動直後からCPUクロックが1.2GHzとなり、テスト中にCPU負荷がかかっていない場面でもクロックが1.2GHzより下に落ちなかった。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑GFXBench 2.7.0では、テスト中のCPU負荷が低い場面でクロックが800MHzにまで低下。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑3DMarkでは、CPU負荷の低い場面で600MHzまでCPUクロックが低下することもあった。

 では、NTTドコモが販売している国内版GALAXY S4ではどうだろう。国内版GALAXY S4は、海外版と異なり、SoCはクアッドコアのSnapdragon 600(APQ8064T、1.9GHz)を採用しているため、挙動が異なる可能性も考えられる。ただ、先ほどの海外版と同じように、いくつかのベンチマークアプリを利用して実際に試してみたところ、Linpack for Android、AnTuTu Benchmark、Quadrantは起動直後からCPUの動作クロックが約1.9GHz(1890MHz)に上昇し、ベンチマークを実行していないCPU負荷率の低い状態でもCPUクロックが下がることがなかったのに対し、GFXBench 2.7.0や3DMarkでは、起動後のベンチマークテストを実行していない低負荷の状態では384MHz、ベンチマークテスト実行中でCPU負荷の低い場面では1GHzを下回るクロックに低下することを確認した。

GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑ドコモ版GALAXY S4でLinpack for Androidを起動してみたところ、海外版同様に起動するだけでCPUクロックが1890MHzで固定となった。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑AnTuTu Benchmarkも、起動するだけでCPUクロックが1890MHzに上昇する。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑3DMarkは、起動後にテストを実行していない状態ではCPUクロックが384MHzに低下。GFXBench 2.7.0でも同様だった。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑3DMark実行中でも、CPU負荷が下がるとCPUクロックが1GHzを下回ることがある。

 GFXBench 2.7.0や3DMark、ベンチマークテスト以外のアプリで、比較的負荷の高い3D描画のゲームアプリでも、CPUの動作クロックが1890MHzに上昇する場面があったので、特定アプリ以外でCPUが動作クロックの上限で動作しないということはないようだ。また、AnTuTu Benchmarkでは、テストを連続で繰り返してSoCの温度が高くなった場合に、CPUの動作クロックが低下する場面があった。つまり、CPUの動作クロックが意図的に設定されている場合でも、SoCのサーマルスロットリング機能は失われていない。とはいえ、海外版同様に国内版でも特定のアプリ実行時にCPUやGPUの動作クロックが制御されているのは間違いなさそうだ。

GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑GFXBench 2.7.0のテスト実行中にCPUクロックが1890MHzに上昇する場面があった。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑3D描画のゲームアプリ『Real Racing 3』でも、CPUクロックが1890MHzに上昇することを確認。特定アプリ以外でCPUクロックの上限が制限されているわけではないようだ。
GALAXY S4のベンチアプリにおけるCPUクロック操作疑惑を検証
↑AnTuTu Benchmarkでは、サーマルスロットリングが働き、CPUクロックが1674MHzに低下することを確認した。

 もともとスマホに搭載されるSoCは、OSやアプリの動作状況、SoCなどの動作温度に応じてCPUやGPUの動作クロックが上下するようになっている。そのようなクロック制御によって、アプリ実行時など処理を行なう場合には動作クロックを上げてSoCが持つ処理能力を最大限に発揮させつつ、スリープ時などなにも作業を行なっていない場合にはCPUやGPUの動作クロックを下げて消費電力を抑えバッテリー駆動時間を長く保ったり、高負荷の作業が続いてSoCが規定を超えて高温になった場合などには、動作に支障をきたさないように動作クロックを落として発熱を抑えるわけだ。そういう意味では、スマホ利用中にCPUやGPUの動作クロックが上下するのは、普通のことではある。ただし、特定のアプリ実行時のみ動作クロックを制御する仕組みを盛り込むというのは、少々問題がある。しかも、その特定アプリが、著名ベンチマークアプリだというのは、ベンチマークテストの結果を少しでも有利にしたいという考えによる、意図的なものと思われても仕方がない。

 CPUやGPUのクロック制御技術自体は、なくてはならない技術だ。それを、ある特定のアプリ実行時に機能させ、自分に有利に働くように利用するということに問題があるだけだ。自社の製品を少しでもよく見せたいという心理はわからないでもないが、だからといって製造メーカー自らが意図的にやっていると思われても仕方がない制御を盛り込むことは、健全とは言えない。もし、そのような意図はないというのであれば、このような特定アプリに対する動作クロック制御は即刻やめるべきだろう。

 ところで、特定アプリに対して動作クロックを制御しているということが発覚したいま、どうせならこの仕組みをユーザーに開放するというのはどうだろう。ユーザーが、アプリごとにCPUやGPUの動作クロックを自由に設定できるようにすれば、かなり魅力的な機能となるはず。たとえば、わざと上限の動作クロックを低くすることで、バッテリー駆動時間を延ばすということも可能になるだろう。本来は公にしたくない機能かもしれないが、それを逆手に特徴に変えるぐらいの懐の深さを見せてもらいたいものだ。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう