2014年7月22日

2014年7月19日

2014年7月18日

スマートフォンにクアッドコアは必要なのか。ベンチマークで実態を検証


 現在、Android端末やiPhoneなどスマートフォンは、一番注目を集めている情報/エンターテイメントデバイスと言っても過言ではないだろう。実際、携帯電話ラインナップの中でスマートフォンが占める割合は、ほんの1年前までNTTドコモでは50%未満、KDDIでは30%未満だったのが、2012年3月時点ではソフトバンクモバイルを含めた3社とも80%に迫る勢いでスマートフォンは成長している。

GALAXY Nexus

 成長しているのは数だけではない。そのプラットフォームも、まさに日進月歩で進化している。たとえば、そのほとんどがまだバージョン2.xである中、Androidは2011年10月に4.0が発表され、日本でもそれを搭載するGALAXY Nexusが翌11月に発売されたのは記憶に新しいが、すでにバージョン5.0の声も聞こえ始めている。ハードウェアにおいても、ハイエンド機では、4型前後の大きさの中に、720pというHD液晶や、デュアルコアそしてクアッドコアプロセッサといったノートPC顔負けのコンポーネントを搭載し始めている。

 スマートフォンに求める機能や、性能、価格は人によって千差万別。そのため、ユーザーとしては、多くのメーカーから多くの機種が発売され、選択肢が広がるのは歓迎だろう。しかし一方で、本当にスマートフォンにクアッドコアのようなものが必要なのかという懐疑の声もある。

 ここでいう「必要なのか」というのには、2つの意味があると思う。1つは、その性能が求められるのかという疑問だ。これについては、必要であると即答できるだろう。なぜなら、PCがまさにそうであったように、デバイスの性能が向上することで、従来のタスクがより快適にこなせるようになるだけでなく、その増えた性能を活かそうと、これまでにはなかった機能や用途を持つアプリが開発されるという相乗効果が生まれるからだ。もちろん、エントリーモデルの性能だけで十分というユーザーもいるだろうが、だからといって、ハイエンドな製品が不要と言うことにはならない。

 もう1つの意味は、果たして現在のハンドヘルドプラットフォームがクアッドコアの恩恵に十分あずかれる設計になっているのかという疑問だ。これについては、実際に検証を行ない、結果を吟味する必要がある。特にベンチマークには、シングルスレッド対応のベンチマークソフト、マルチスレッドに対応したベンチマークソフトなどがあり、どのベンチマークで計測するかによってデバイスの性能への理解が変わってしまう。クアッドコア搭載スマートフォンをシングルスレッド対応のベンチマークで計測した場合、デバイスがもつ本来の性能が発揮されないだろう。同様の検証は過去にも行なったことはあるが、今回はベンチマークアプリの数を増やし、より詳細に調べてみる。これが本稿のテーマだ。

●シングル/デュアル/クアッドコアで性能を比較

 検証に用いる機材だが、現時点ではクアッドコア搭載スマートフォンがないことや、スマートフォンでは仕様を揃えづらいことから、タブレットを用いる。タブレットもスマートフォンも基本的に同じプロセッサ/プラットフォームなので、今回の結果はほぼそのままスマートフォンにも当てはまると考えて良い。iPadでは最新機種で解像度が大きく変わっているので、Android環境にてプロセッサのコア数による性能の変化を見ることにする。

 具体的な製品は表の通り。なるべくOSのバージョンと画面解像度を揃えた上で、プロセッサの異なるものを選んだ。デュアルコアはNVIDIAのTegra 2とTIのOMAP4430を用意。いずれもCortex-A9アーキテクチャで1GHzで、プロセッサによる差異を見たい。

 クアッドコアはNVIDIA Tegra 3を用意した。Tegra 3の総合性能はTegra 2の5倍とされているが、これはGPU分も含められている。CPU部分はアーキテクチャが同じCortex-A9で、コア数が2倍、クロックが3割増しなので、理論的には3倍弱の性能が期待できる。また、Tegra 3については、OSによるマルチコア最適化があるのかを見るため、同じ製品でAndroid 3.xと同4.xの2種類の環境を用意した。なお、表でTegra 3の周波数について「1.3GHz(1.4GHz)」としているのは、マルチコア時は最大1.3GHz、シングルコア時は最大1.4GHzで動作することを意味する。

 シングルコアはSamsungのS5PC110。アーキテクチャはCortex-A8で、OSのバージョンも解像度も異なるが、CPU部分の性能は比較対象として充分参考になるだろう。

 ベンチマークソフトは、ある程度定番のものを選択した。表には5回計測した平均を載せている。基本的にCPU性能に着目しているが、GPU専用のベンチマークも一部実施している。

GALAXY Tab SC-01C ARROWS Tab LTE F-01D
Eee Pad TF101 Eee Pad TF201

【表】評価機の主な仕様
  Eee Pad TF201(ICS) Eee Pad TF201 Eee Pad TF101 ARROWS Tab LTE F-01D GALAXY Tab SC-01C
プロセッサ Tegra 3 Tegra 3 Tegra 2 OMAP4430 S5PC110
周波数 1.3GHz(1.4GHz) 1.3GHz(1.4GHz) 1GHz 1GHz 1GHz
コア数 4 4 2 2 1
OS Android 4.0.3 Android 3.2.1 Android 3.2.1 Android 3.2 Android 2.x
液晶解像度 1,280×800ドット 1,280×800ドット 1,280×800ドット 1,280×800ドット 1,024×600ドット
メモリ 1GB 1GB 1GB 1GB 512MB

 それでは結果を見ていこう。まずはQuadrant Professional 2.0。このソフトは、CPU、メモリ、I/O、ビデオ性能を総合的に計測する。バージョン2.0からは、Android 4.0とマルチコアを正式にサポートとされている。CPUの結果を見ると、S5PC110とOMAP4430ではあまり差が出ていないが、Tegra 2はそれなりの伸びを見せている。そしてTegra 3はそこからさらに50%近い伸びを見せている。しかしながら、同じTegra 3でもAndroid 4.0環境ではスコアが4倍近くになってしまった。2Dグラフィックの結果にも表われている通り、このソフトはOSのバージョンが変わるとスコアが大きく変化するので、そこを揃えないと正しい比較はできない。その意味で、Android 3.xの3機種の結果を見ると、前述の通り、Tegra 3はTegar 2に対して50%程度、OMAP4430に対して80%近い向上を見せている。

【グラフ1】Quadrant Professional 2.0

 AnTuTu 2.7.3はQuadrantに似た総合性能を計測するアプリで、こちらもクアッドコア正式対応を謳う。CPU性能はTegra 3とTegra 2でおよそ3倍の差がついた。コア数とクロックの違い以上の差となっているのは、それ以外の点での改善/最適化の現われとみなせば、CPUの演算性能として妥当と言えなくもないが、実アプリの体感でそこまでの差が出ることはあまりないと思われる。Tegra 3にはSIMDエンジンのNEONがあって、Tegra 2には無いという点も関係しているかもしれない。このベンチがNEONを使うのであれば綺麗に説明がつく。

 なお、こちらもOSが変わると2Dグラフィックスのスコアにぶれが出ているが、実はこの項目は、Tegra 3だと同じシステムであっても、計測するたびに2倍以上の違いが出ることがあった。これはQuadrantにも当てはまる。ただし、実際のアプリでは見た目が2Dであっても3D APIを使うことが多いので、2Dの結果の重要性は低いのが実態だ。3Dの結果はというと、どの環境でも安定している。メモリについては、デュアルチャネルのOMAP4430が、どちらのベンチも芳しくない結果になっているのは気になるところだが、原因は不明だ。

【グラフ2】AnTuTu 2.7.3

 Smartbench 2012は、ProductivityとGamingという2つの性能を計測する。基本的に、前者はCPU、後者はGPU用だ。こちらもマルチコア対応で、特にクアッドコアに最適化されているという(Google Playでの説明だと「未来形」の英文表記だが、これは現在の仕様を示しているものと思われる)。また、3Dについては、端末のネイティブ解像度で描画するので、高解像度機ではスコアが下がりがちになるとされている。Productivityは、デュアルコアとクアッドコアで6割程度の差となっており、Android 3.xでのQuadrantの場合と近い。ただし、Tegra 3+Android 3.xでは最低2202、最高3507、OMAP4430では最低1065、最高2255と、計測回によって大きな差が出る場合があり、またシングルコアについては、アーキテクチャとOSの違いもあるのだろうが、低すぎるスコアになっているので、安定したベンチとは言いがたい。

【グラフ3】Smartbench 2012 1.0

 Linpack for AndroidはCPUの演算性能を見るベンチ。シングルスレッドとマルチスレッドのモードがある。LINPACKは浮動小数演算の性能を計測するが、開発者によるとこのベンチはどちらかというとAndroidのJava実行環境であるDalvikの性能を表わしているという。また、基本的にコア数よりも、アーキテクチャと周波数の影響が強く出るベンチと言われており、実際そのような結果が出ている。

【グラフ4】Linpack for Android 1.2.8

 AndEBenchは、Javaに加え、ネイティブ処理の性能も計測するベンチで、同時実行スレッド数を設定できる。LINPACKと違い、こちらは整数演算が主体となる。今回はそれぞれ1スレッドと4スレッドの設定でテストした。結果は、きれいにアーキテクチャとコア数、周波数に比例するものとなった。1スレッドでは、A8よりA9の方がやや良いスコアだが、アーキテクチャと周波数の違い分の差にとどまっている。一方の4スレッドでは、コア数に応じた差が出ているのが分かる。

【グラフ5】AndEBench 1429

 CF-Benchは、マルチコアに対応したCPUおよびメモリ関連のベンチマークアプリ。Javaとネイティブで計測を行なう。Android 4.xの結果は明らかにおかしいので、Android 3.xだけを見てみると、ネイティブにおいてTegra 3はTegra 2とOMAP4430に2倍近い性能となっている。しかし、JavaにおいてはTegra 2が最も良いスコアだ。開発者は、マルチコアに対応し、安定したスコアが出るとしているが、ちょっと不可解な結果となっている。

【グラフ6】CF-Bench 1.1

 ここからはブラウザベンチマークの結果を見ていく。SunSpiderはJavaScriptのベンチマークで、演算、ストリング処理など多岐にわたり、実際のプログラムで利用される処理を想定した内容となっている。結果は処理にかかった時間であり、数値が小さいほど優秀となる。S5PC110の結果が飛び抜けて悪いのはさておき、OMAP4430とTegra勢を比較するとおおむね周波数に比例した結果となっている。これは、本ベンチマークがシングルスレッドだからだ。とはいえ、ブラウザはマルチコアに対応しているので、mathなどコア数に応じた結果も出ている。

【グラフ7】SunSpider 0.9.1

 MoonBatは、SunSpiderを改良したベンチマーク。ただし、Firefox 3.5とSafari 4以降に搭載されたWeb Workersというバックグラウンド処理機能を利用しているので、このベンチマークだけはAndroid標準でなくFirefox 10を使っている。こちらもスコアが小さいほど良い。1Workerでは、数値こそ違うものの、Tegra 2とOMAP4430がほぼ同じで、Tegra 3がそれより3割前後良いというSunSpiderと同じ傾向が出た。4Workersの設定にすると、S5PC110は1Workerのちょうど4倍程度の時間がかかり、Tegra 2とOMAP4430は3倍弱程度の時間がかかっている。それと比べるとTegra 3では1Workerの2倍程度の時間がかかる処理もあり、全般的にコア数に応じたきれいなスケーリングは見られないが、他の製品より圧倒的に速い。ここでもS5PC110の分が悪いのは、アーキテクチャの違いによるものだろう。

【グラフ8】MoonBat (Web Workers=1)
【グラフ9】MoonBat (Web Workers=4)

 V8 Benchmark Suiteは、GoogleによるオープンソースのJavaScriptエンジンであるV8を使ったベンチマーク。結果は、S5PC110に対して、Tegra 2とOMAP4430が3〜4倍程度の性能で、Tegra 3はさらに2〜3倍程度良いスコアとなっている。

【グラフ10】V8 Benchmark Suite 7

 Browser MarkJavaScriptとHTMLレンダリングの性能を測るベンチマーク。Android 3.x環境でクアッドコアの効果は目立たない。Android 4.xと2.xの結果を見ると、かなりOS(ブラウザ)バージョンによってスコアが左右されるようだ。

【グラフ11】BrowserMark

 Vellamo Mobile Web Benchmarkも、JavaScriptとレンダリング性能を見るブラウザベンチマーク。このベンチマークはQualcommが開発したものだ。結果は、Tegra 3、Tegra 2、OMAP4430でほぼ横並びとなった。こちらもTegra 3の結果を見ると、OS(ブラウザ)バージョンによってスコアがぶれるようだ。

【グラフ12】Vellamo 1.0.6

 今回はCPUのマルチコア部分に焦点を当てているが、最後にグラフィック系ベンチの結果も紹介しておく。軽めのベンチマークを選んでしまったため、頭打ちになっている部分も少なくないが、Tegra 3が最も良い成績を収めている。

【グラフ13】GUIMark 2 Mobile
【グラフ14】NenaMark1 1.8
【グラフ15】NenaMark2 2.2
【グラフ16】Neocore 1.9.35
【グラフ17】GLBenchmark 2.1.4

●本当に2つで十分?

 これらの結果を総合すると、マルチコア化はAndroid環境で確実に性能向上をもたらす。PC業界では、周波数や発熱の問題から、周波数を下げてでもマルチコア化して総合性能を引き上げたという経緯があるため、シングルスレッドならシングルコアの方が有利という印象もあるかもしれないが、現状、スマートフォン業界では周波数を保ちながら、あるいは向上させながらコア数を増やしているので、それは杞憂と言っていい。アプリによってばらつきが大きいが、AndEBenchやCF-Benchなど、コア数に応じてリニアに性能が上がるものも多々ある。

 そこで気になるのは、ではいったいどのアプリがマルチコアを効果的に活用しているのかという点だ。その関連として、OSレベルでAndroid 3.xと4.xの違いを見てみた。総じてAndroid 4.xの方が良い結果となっており、マルチコアへの最適化が進んでいると見れなくもないが、どちらかと言うと、アプリの対応がまだ十分に進んでおらず、Android 3.xとの比較には適さない結果が多いという印象だ。

 加えて言うなら、Android向けベンチマークはスコアが不安定なものが見受けられ、まだ発展途上といった感じだ。実は今回のレビューの背景には、そのあたりを確かめる意味もあった。だが、数多くのベンチマークを実施したことで、コア数が増えただけ性能が上がる傾向は確認できた。

 アプリレベルでは、各アプリ次第の一言に尽きるのだが、メジャーなゲームエンジンや、HTMLレンダリングエンジンのWebKit、アプリケーションプラットフォームのAdobe AIRなどはマルチコアに対応しており、そのように明記されていなくても、これらを使ったアプリは少なくなく、多くの状況でマルチコアの恩恵は受けられると言っていいだろう。

 1つ気になるのは、AndroidブラウザがWeb Workersに対応していない点だが、Android 4.x向けに現在ベータ版が公開されているChrome for Androidは対応しているので、今後は純正ブラウザでもその効果を体感できるようになる。

 さて、性能が上がるのは歓迎だが、その分バッテリ消費量が増えたのでは元も子もない。これについて、プロセッサメーカー各社は、従来のデュアルコア製品よりクアッドコア製品の方が、性能が高いのはもちろん、消費電力は減っていると明言している。これらのプロセッサは、コア毎に電源をオン/オフできるので、従来のシングルスレッドのアプリを動作させても、他のコアが無駄に電力を消費することはない。マルチコア対応アプリの場合は、フル稼働時はシングルコアプロセッサよりも消費電力が増すかもしれないが、処理時間は半分や4分の1になるので、合計では増えない。むしろ、プロセスルールの縮小などにより、電力効率が上がっているので、平均消費電力も総消費電力も減るという計算だ。たとえば今回利用したTF201は、TF101とバッテリ容量は同じだが、駆動時間が約9.5時間から約12時間に伸びている。加えてTF201は、アプリだけでなく、ホーム画面のスワイプ時の動作なども体感できるほど軽快になっている。

 というわけで、マルチコアプロセッサは良いことずくめのようだが、前述の通り、スマートフォンやタブレットを選ぶに当たり、重要視するのは性能だけではない。画面の解像度、LTEやWiMAXに対応しているか、サイズ感など、さまざまな要素があり、どこに重きを置くかはユーザー次第だ。また、これらのプロセッサの単価は明らかにされないが、クアッドコアは当然デュアルコアより高価だろう。

 だが、もし最終候補に絞った2台が似たような仕様だったらどうか?「Nexus何某」というアンドロイドが登場する某SF映画では「2つで十分ですよぉ」という非常に有名な台詞があるが、プロセッサのコア数については、2つよりも4つをお勧めしたい。

(2012年 5月 10日)

[Reported by 若杉 紀彦]