ラップトップは通常、せいぜい4コアで、デュアルコアの方が一般的でしょう。私は最近、クアッドコアからデュアルコアに変更しましたが、CPUに負荷のかかるタスクであっても、クアッドコアの使用例は限られていることが確認できます。
一方、携帯電話では、クアッドコア、ヘキサコア、オクタコアが一般的のようです。なぜでしょうか?どのようなタスクに利用できるのでしょうか?
私は、big.LITTLEがその答えの一部となり得ると理解しています。つまり、これだけ多くのコアを同時に使えることが最大のメリットではなく、現在の作業負荷に適した消費電力のコアを使うことが重要なのです。しかし、例えばSnapdragon 625はCortex-A53コアを8個搭載しており、big.LITTLEには当てはまらないように思われる。
もしかしたら、ARMアーキテクチャは、1ワットあたりの最適性能のポイントが低いのかもしれません。つまり、1ワットあたりの最適性能にチューニングされたコアを1つ持っていると、ARMではIntelよりも性能が低くなってしまうのです。だから、性能を発揮するために、より多くのコアを使用するのです。これはあくまで仮説です。
しかし、この場合でも、携帯電話で8コアを効率的に使えるワークロードがあるとは思えません。ラップトップであれば、プロジェクトのフルコンパイル(非インクリメンタル)などは想像できます。でも、携帯電話ではどうでしょう?
既にご指摘の通り、[big.LITTLE][big-little]の組み合わせ戦略(厳密には[HMP]hc、Heterogeneous Multi-Processing**クラスタ)が、多くの(時には圧倒的に多くの)コアを要する最大の理由なのです。モバイル機器は、高負荷と軽負荷の両方を含む複数のシナリオで動作することがよくあります。
コンシューマクラスの極端な例として、MediaTekのHelio X20は、2つのパフォーマンス重視のA72コア、4つのバランスのとれたA53コア、4つのエネルギー効率のよいA35コアを搭載しています。これは、さまざまな使用状況において、非常に柔軟性があります。しかし、私は通常、2クラスタ8コアで十分だと思います。
もう1つ、デスクトップのような例として、QualcommのSnapdragon 800シリーズ(S 800、S 801、S 805)があります。各SoCには、同じマイクロアーキテクチャのコアが4つだけあり、2つが高クロック、2つが低クロックになっています。Qualcommは、自社のマイクロアーキテクチャ(Krait 400とKrait 450)に自信があったからこそ、これらのSoCを作ったのです。
ゲームの場合、一見CPUよりもGPUの性能を要求しているように見えても、CPUに大きな負荷がかかっています。GPUは、何か他のものから処理するデータを供給されなければ単独では動作しませんし、それはゲーム中にCPUが行っている大きな仕事の1つです。ほとんどのゲームでは、GPUはグラフィックを描画するだけで、データ、リソース、アセットをロードしたり、システム、環境、物理などのゲーム内の仕組みを計算したりする他のすべての仕事はCPUによって行われます。GPUをアップグレードしても、ローエンドのCPUに固執していると、より高いフレームレートを観察することはできません。
第二の理由は、AndroidがどのようにCPUリソースを使用するかです。Androidは、アプリケーション環境をほとんど自前で作っています。Javaからのコード(とAPI)以外は何も使っていませんが、Dalvikという独自の仮想マシンを持っており、これは後にART(API Level 21)に置き換わりました。APKは実行コードをquot;neutral"というフォーマットで持っており、Javaの.class
ファイルによく似ています。APKは、Javaの.classファイルのような、quot;neutral;quot;フォーマットで実行コードを持ち、実行前に、そのコードがマシンのネイティブ命令にもう一度コンパイルされます。コンパイルはマルチスレッドで行われ、マルチコアを利用することで性能を向上させることができます。
また、アプリが実行されているとき、アプリと並行して、他のいくつかのプロセスや仕組み(ガーベッジ・コレクターなど)が実行されています。コアを増やせば、メインアプリだけでなく、補助的なプロセスもより効率的に実行できるようになります。
1. ファイルタイプ識別子を使用すると、"optimized" dexファイルはELFフォーマットで、"neutral" dexファイルはそれ自身のフォーマットであることがわかります。
もう一つの理由は、ARMコアはIntel x86チップほど高速に動作できないということです。Intel x86マイクロアーキテクチャは、[Intel 8086][intel-8086]チップの設計が始まった1976年までさかのぼることができ、つまりx86は長い時間をかけて発展してきたということです。現代のハイエンドARM Cortex-A73コア1個は、Core i5-660を例にすると、Intel Clarkdaleコアと同程度の性能しかない(GeekBench、シングルコア)。これは、x86がCISCマイクロアーキテクチャであるのに対し、ARMがRISCマイクロアーキテクチャであるためです。2つ程度のアプリを起動しただけでラグが発生するような携帯電話は、きっと嫌ですよね。コアを増やせば、その負担を軽減することができます。そのため、デュアルコアSoCが比較的普及しているのは、スマートウォッチに限られます。スマートウォッチに性能が必要な人はいますか?
興味深いことに、コアの数が多いほど、同じ負荷でシングルコアよりも消費電力が少なくなります。CPU の周波数と消費電力の関係は線形以上なので、周波数を 2 倍にすると、常に 2 倍以上、あるいは 3 倍や 4 倍の電力を必要とすることになりますが、性能は(キャッシュなど他のリソースの制限により) 2 倍未満になります。つまり、4つのコアは同じ負荷でシングルコアを容易に上回り、より良い性能を提供すると同時に、より少ない電力を要求することができるのです。
さらに読む
理由は複雑なほどシンプルです。
簡単に言えば、携帯電話市場は、これまでも、そしてこれからも、インテルが牽引することはないからである。
長い答えはここで再開するには長すぎますが、基本的なコンセプトは、インテルは長年、あらゆる手段を使ってPC市場を支配し、PCメーカーが自分のCPUを最初で唯一の選択肢とするために金を払って買収し(これには罰金も課される)、その結果、PC市場を支配してきたということです。
市場を完全にコントロールすることで、インテルはCPUの価格をつり上げ、ユーザーが望むべき機能と処理能力を人為的に決定することができた。そのため、本当にスマートで革新的なことをしようとすることはほとんどありませんでした。同時に、サーバー市場でマルチコアCPUをべらぼうに高い値段で売りつけることもできる。 サーバは常に大量の並列処理能力を必要とするものであり、現在、そのようなサーバを実現しようとするトレンドがあるほどです。を使うサーバーを実現しようとする傾向があるほどです。
このことは、並列プログラミングの重要性に追いついていない開発者のコミュニティにも反映され、開発者の多くは、一度に複数のスレッドを使用すること、つまり、技術的ではない方法で表現すると、ソフトウェアに一度に複数のタスクを行わせることを気にしたことがありません。ところで、顧客の99%が最大でも2コアの場合、これは理にかなっています。悲しいことに、これが「並列アルゴリズムは実装が難しく、問題のごく一部にしか適用できない」という伝説を生んだのです。
その代わり、モバイル市場ではインテルが成功したことがありません。実際には、インテルが通常の X86 アーキテクチャとは異なることを行おうとすると、ほとんどの場合、まったく逆のことが起こります。そのため、市場への影響力と支配力を欠き、他のCPUメーカーは、PC市場以外では古くから常識となっている方向、つまり並列コンピューティングに進んでしまったのです。
1つは非常に現実的で、もう1つは歴史的な要因です。
現実的な理由としては、携帯電話におけるミックスドアーキテクチャの利用が挙げられます。携帯電話では消費電力が重要であり、携帯電話は多くの時間を、ほとんど性能を必要としないモードで過ごします。性能が必要ないときは消費電力を抑えるように最適化されたコアがあり、性能が必要なときは最大限の性能を発揮するように最適化されたコアがあるのは理にかなっています。
もう1つの理由は、歴史的なものです。2005年頃まで、デスクトップCPUはすべてシングルコアでした。デスクトップCPUの性能向上といえば、1秒間にできるだけ多くの命令を実行できるコアを作ることに尽きます。現在でも、多くのデスクトップ用ソフトウェアはマルチコアをフルに活用できないため、20%遅いコアを持つ8コアCPUよりも4コアのCPUを好む人が多いようです。
1 つのコアから可能な限り多くの性能を引き出すには、膨大な CPU 領域が必要です。この領域は、より多くのコアを提供するために使用することができる領域です。このため、Intelの最新のKaby Lake CPUは最大4コアで、各コアが以前のコアよりも高速であるため、人々はそれを購入するのです。多くの人にとって、より高いコア数を持つCPUからのアップグレードとなります。
やがて、より多くのデスクトップソフトウェアが、より多くのコアをサポートするために完全に最適化されるようになることが予想されます。そうなれば、エンジニアリングのトレードオフは、デスクトップではより高速なコアよりもより多くのコアを優先するようになるでしょう。コアが高速化することはほぼ間違いありませんが、たとえ各コアが20%遅くなったとしても、4コアCPUよりも8コアCPUを好む人が現れ始めるでしょう。チップ設計者は市場に追随していくでしょう。