ハードウェア

モバイル端末のCPUコアはどのような動きをしているのかを可視化するとこうなる


モバイル端末のプロセッサの進化はとどまるところを知らず、クアッドコアは当たり前、最近ではデカコア(10コア)のCPUを搭載するSoCも登場しています。そんな目まぐるしく進化するモバイル端末用のCPUでは処理速度以上に消費電力を低減する機能が重要で、深いアイドル状態に入る機能や周波数をこまめに下げたり消費電力の小さなコアとパワフルなコアを組み合わせたりとさまざまな仕組みが取り入れられています。処理速度と省電力性能の両立を目指すモバイル端末用CPUが、実際にどのように動作しているのかについて、AnandTechが詳細に計測したデータを図示しています。

The Mobile CPU Core-Count Debate: Analyzing The Real World
http://www.anandtech.com/show/9518/the-mobile-cpu-corecount-debate

AnandTechはモバイル端末に使われるマルチコアCPUの動作を分析するために、Android端末のCPUの挙動を詳細に計測しました。なお、今回の測定結果はLinuxカーネルで動くAndroid端末に限ったものであり、iOS端末には必ずしも当てはまらないという点には注意が必要だとのこと。

◆計測データの読み取り方
実験にはGalaxy S6が用いられており、同スマートフォンのSoC・Exynos 7420(2.1GHzのCortex A57×4+1.5GHzのCortex A53×4のbig.LITTLE構成の8コアCPU)で計測が行われ、各種計測データを分かりやすいようにグラフィック化されています。

・CPUコアの周波数
グラフは縦軸が周波数の占める割合、横軸が時間を示しています。例えば、下のグラフの赤いラインを引いた瞬間は、CPUは占有周波数順に900MHz、600MHz、1.1GHz、400MHzで稼働していることを示します。


・CPUコアのステート
これはCortex A53のコアの状態(ステート)を表すグラフで、縦軸がコアに占めるステート、横軸が時間を示しています。緑色がコアが活動的なアクティブ状態、青色がC1(アイドル状態)、茶色がC2(より深いアイドル状態)を表しています。


・実行キューの深さ
LinuxベースのAndroidでは、複数のプログラムを短い時間で切り替えて並列稼働させる「実行キュー」という仕組みが採用されています。実行キューとは簡単に言うと処理を待っているプログラムのことで、待機するプログラムが多いほど実行キューが「深い」と表現し、処理における負荷が大きいことを示しています。なお、実行キューの情報は開発者向けオプションの「CPU使用状況を表示」を有効化すれば計測可能です。


以下は実行キューの深さを示したグラフ。グラフの横軸が時間を示し、縦軸は実行キューの深さを示しています。例えば、実行キューの深さの値が「0.2」であるときとはCPUが20%しか使用されていないと言うことで、「1」ならば100%使用していることを表します。なお、1を超える数値はCPUコアの性能を複数のプロセスで先取りされていることを示しており、例えば「2」の場合は2つのプログラムでCPU性能の50%ずつをシェアした状態を意味しています。


◆アプリごとのCPUコアの計測結果
・Chrome
まずはブラウザアプリChromeを使ってAnandTechのトップページを表示させるテストから。なお、テストの様子は以下のムービーで確認することができます。

Browser Chrome AnandTech Frontpage - YouTube


画像のレンダリングが多いためか、CPU周波数は目まぐるしく変化しています。


ChromeではCortex A53(LITTLE)コアはほぼアクティブ状態。


実行キューの深さは、すべてのコアが「1」を上回る場面があり、合計数は最大で「7」。


一方、Cortex A57(big)コアの周波数はこんな感じ。


Cortex A53よりもアイドル状態が長くなっています。


とはいえ、実行キューは多く、負荷は高め。


実行キューの合計数は最大で「8.5」を計測しています。


Chromeを使ってBBCのトップページを表示させるテストはこんな感じ。

Browser Chrome BBC Frontpage - YouTube


Cortex A53コアのCPU周波数。


AnandTechのトップページに比べるとCortex A53コアはアクティブな割合が高め。ここから、閲覧するサイトによってCPUの状態が大きく異なることがよく分かります。


Cortex A53コアの実行キューの深さ……


Cortex A57コアの周波数……


Cortex A57コアのステートなど、AnandTechのトップページ閲覧時とCPUの挙動自体の傾向は似通っています。


なお、一貫して負荷の大きなのコアと負荷の小さなコアがあることが確認できます。


Cortex A57コアの実行キューの合計数。ほとんどの時間で「2」を上回っていました。


・ハングアウト
ハングアウトを起動するときのCPUコアの様子は以下の通り。なお、ホーム画面からの起動ではメモリがキャッシュされていなかったため、若干の待ち時間があったとのこと。

App Hangouts Open - YouTube


Cortex A53コアのCPU周波数はこんな感じ。途中で1.3GHzとかなり高めの周波数となっています。


ステートの状態は、深いアイドルに入る時間が長め。


アプリが起動した瞬間に実行キューの深さが最大になっているようです。


一方、Cortex A57コアは途中から深いアイドル状態に移行。


周波数も途中から最低状態に。


ハングアウトアプリではlittleコアはそれほど活用されないようです。


これに対してハングアウトでメッセージを入力するとこんな感じ。

App Hangouts Message Writing - YouTube


文字入力を行う度にCortex A53コアの周波数は目まぐるしく変化。


ステート状態もかなり細かく変更されています。


実行キューも細かく変化。


しかし、Cortex A57コアはほぼ休眠状態。


クロック数も一瞬だけ増加していますが、ほぼ800MHzで一定。


実行キューの深さもほぼ「0」。文字入力程度では、bigコアの出番はないようです。


・Google Play
Google Playでアプリをアップデートするとこんな感じ。なお、アプリのアップデートにかかった時間は約80秒です。

Cortex A53コアは時折、周波数が急上昇しています。


ステートも小刻みに変化。


実行キューの深さも小刻みに変化しており、最大値は「10」に近い値になっています。


アプリのアップデートでは、Cortex A53コア以上にCortex A57コアが活動的。周波数も高めで変化。


ステートの変化する様子からもCortex A57コアがよく動いていることが分かります。


実行キューの深さも断続的に高い数値になっています。


・カメラ
カメラで撮影する場合はCPUコアは低活動状態を維持していることが分かっています。

Cortex A53は700MHzの時間が長め。


4つのCortex A53コアのうち、3つのコアが深いアイドル状態に入っています。


Cortex A57コアはすべてのコアが深いアイドル状態に移行。


クロック数も800MHzで安定。カメラ撮影ではJPEG画像はハードウェアアクセラレーターによって処理されるため、CPUはメタデータ管理やサムネイル生成やファイルの保存時にだけ活動的になるようです。

この記事のタイトルとURLをコピーする

・関連記事
ARMの次期CPUコア「Cortex-A72」はIntelのCore M以上の超絶性能であることが判明 - GIGAZINE

3.5倍高速で消費電力4分の1の新CPU「Cortex-A72」をARMが発表 - GIGAZINE

Intelが新SoC「Atom x3」でライバルのARMグラフィックチップを採用した理由とは? - GIGAZINE

AppleのA8Xチップを上回り自動運転車もできるNVIDIAの「Tegra X1」は何がすごいのか? - GIGAZINE

in モバイル,   ハードウェア,   動画, Posted by darkhorse_log

You can read the machine translated English article here.