iPhone登場以来、スマートフォンのCPUはどのぐらい高速化したのか計算してみた

iPhone登場以来、スマートフォンのCPUはどのぐらい高速化したのか計算してみた
昨年(2024年)、「最新CPUは50年前の__万倍速い!進化の歴史を辿ってみた」という記事を書かせて頂いたが、編集部から「今度はiPhone登場以降のモバイル向けプロセッサの進化について、性能がどのぐらいになったのかまとめていただきたいのですが」という依頼をいただいた。
……まぁやることは以前とあんまり変わらないのだが。
いわゆる携帯電話に、電話機能以外のものがいつ入ったか?というのは判断が難しいのだが、ゲームなら1998年の「Nokia 6110」(写真1)がSnake Game(写真2)を搭載したのが多分最初である。

【写真1】Nokia 6110。By (c)Raimond Spekking / CC BY-SA 4.0 (via Wikimedia Commons), CC BY-SA 4.0,

【写真2】Snake Gameの画面。By Nokia - , Fair use,。ちなみに、ほかにMemoryとLogicというゲームも搭載されていたらしい
これに搭載されていたのはTIのMAD2こと「5L43H04」というチップセットで、13MHz駆動の「ARM7TDMI」コアを搭載していた。ARM7TDMIは0.7 DMIPS/MHzとされていたので、13MHz駆動で9.1 DMIPSほどの性能となる。ちなみにArduino Uno R3が9.85 DMIPSなのだそうで、これと同程度の性能と考えると分かりやすい。
ただこの頃はまだアプリケーションプロセッサといった考え方もなかったし、5L43H04もメインとなる処理は通信制御であって、Snakeはオマケという扱いだったから、この頃は実はプロセッサの性能を比較してもあまり意味がない。
その後、フィーチャーフォンでもアプリケーションプロセッサを搭載したものとかが出てきたりした。もっともこの世代は、機種ごとにプロセッサが異なったりしている(松下は確かUniphierベースの独自プロセッサを採用していた)など、公平に比較する方法が見つからないのと、そもそもお題が“iPhone以降のスマートフォン向けプロセッサ”という話だったので、iPhone以前は割愛させていただく。
また、Android系はあまりに多数のメーカーがありすぎて、表を作るのが大変に困難だったので、今回はGoogle提供の製品のみに限らせて頂いた。あとスマートフォンということでタブレット(iPadやNexus系タブレット)あるいはメディアプレーヤー(iPod Touch類)は省かせて頂いている。
ちなみになんでタブレットを外したかというと、利用できる電力がスマートフォンの倍以上(ついでに放熱能力も倍以上)ということで、一緒に比較するのが困難なためだ。あくまでも今回は、消費電力コアあたり1~2W未満に抑えられているスマートフォンのみでの比較としている。
2007~2010年: スマートフォン市場の興隆(表1)

iPhoneを手にするスティーブ・ジョブズ氏
まず2007年6月に初代「iPhone」が、翌2008年7月には3G携帯電話網に対応した「iPhone 3G」が登場する。
iPhoneに搭載されていたのは、Samsungが製造したARM11ベースのSoCで、定格620MHzのところ、実際には412MHz駆動となっていた。ちなみに初代Raspberry Piに搭載されていた「Broadcom BCM2835」は、同じARM11コアを搭載しつつ動作周波数は700MHzほどだったで、初代iPhoneやiPhone 3Gは、初代Raspberry Piの6割弱の性能しかもっていなかったことになる。
ただAppleは、2009年にはCortex-A8を内蔵したSamsungの「APL0298C05」を搭載した「iPhone 3GS」、2010年には、やはりCortex-A8搭載(ただし動作周波数をやや引き上げた)「Apple A4」を搭載する「iPhone 4」を発表する。
Android陣営はやや遅れたが、2010年1月にまず「Nexus One」、同年11月に「Nexus S」を発表している。Nexus OneはCortex-A5シングルコアの「Snapdragon S1」ということで性能的にちょっと見劣りしたが、Nexus SはCortex-A8搭載の「Samsung Exynos 3」を搭載して、iPhoneとほぼ性能的には互角となった。

iPhone 4

Nexus One
2011~2013年: 性能競争の始まり(表2)
AppleだけがiPhoneを出している時代はある、意味競争もへったくりもないわけだが、Androidが競合として出てくるようになると、当然そこで競争が始まる。2013年までの範囲で言えば、これはAndroid陣営の方がやや有利であった。
「Nexus 4」は「iPhone 5」をほぼキャッチアップし、Nexus 5でiPhone 5を上回る性能を出すようになる。ただこの頃Appleは何をやっていたか?というと、続く64bitへの対応作業を進めており、こちらはむしろAndroid陣営より先行していたので、別にAppleが手を抜いたとかそういう話ではない。

Nexus 4

iPhone 5
2013~2016年: 64bitへの移行(表3)
2011年3月、ARMは64bit命令セットであるARM v8-Aを発表した。これにいち早く対応したのがAppleであり、Apple A7で64bit対応を果たしている。
Googleの方は「Snapdragon 805」を搭載した「Nexus 6」でこれをキャッチアップしたが、ちょっと対応が遅れたことは否めない。ちなみにiOS/Androidのどちらも、OSそのものは早期に64bit対応が施されたが、アプリケーションの64bit対応はやや時間を要した。

iPhone 6とiPhone 6 Plus

Nexus 6
余談だが、x86の場合は32bitと64bitで命令が共通であり、それもあって基本的に処理性能に差はない。もちろん、64bit化によるメインメモリの4GB超えとかに起因するメリットはあるが、性能に直接関係するところでは、汎用レジスタの数が増えた(ので、無駄にスタックを積まなくても良くなった)ことで若干の高速化は実現可能(実際には64bitでも律儀にスタックを積むコードを吐くコンパイラが当初は多数だった)という程度である。
ところがArmの場合は32bit(AArch32)と64bit(AArch64)では命令体系そのものが異なっており、より高速動作が可能になってはいる。といっても、そこまで劇的に性能が変わる、というものでもなかったのだが、一応高速化は実現している。ただそのメリットを享受するためには、OSだけでなくアプリケーションも64bit対応が必要であり、こちらはゆっくりと変わって行くという感じであった。
2015~2024年: big.LITTLE/DynamiQの実装(表4)
Armにおいて、高性能コアと省電力コアの両方を1つのプロセッサに実装する「big.LITTLE」そのものは2011年に発表されていたが、これが実際に製品に実装されたのは2015年以降のことである。
先行したのはGoogleで、「Nexus 6P」に搭載された「Snapdragon 810」がこれに対応。翌2016年にはAppleも「A10 Fusion」でやはりbig.LITTLEを実装する。
ちょっと面白いと思うのは、Snapdragonや、表にはないがこの当時Snapdragonの競合の位置にあったSamsungのExynosやMediaTekのHelio/Dimensityシリーズは、いずれもbig.LITTLEでサポートされていた最大構成である合計8コア製品をラインナップしていたこと。中にはMediaTekのHelio X20~X30のように、独自拡張した10コア(超高性能コア×2+高性能コア×4+省電力コア×4)構成の製品までラインナップしていたのに対し、Appleはbig×2+LITTLE×4の6コア構成を維持していることだ。
実際のところ、消費電力枠を考えると、たくさんbigコアを搭載してもそこまで長時間動作はできないという問題は常にあり、結果から言えばAppleの実装の方が実効性能を高められた可能性は否定できない。

Nexus 6P

iPhone X
Appleにしても、たとえば「iPhone 7」向けの「Apple A10」はHurricane×2+Zephyr×4だが、「iPad Pro(2017)」向けの「Apple A10X」はHurricane×3+Zephyr×3に変更されているし、「iPhone XS」向けの「Apple A12」はVortex×2+Tempest×4だが、「iPad Pro(Gen 3)」向けの「Apple A12X」はVortex×4+Tempest×4に強化されている。
big.LITTLEは2017年にDynamiQに進化。第1世代のDynamiQは最大8コアに制限されていた(これはおそらくCCN: Cache Coherent Networkの制限)が、第2世代以降は制限が大分緩和されており、もっと多数のコアを実装できるようになった。ただ電力および放熱能力にゆとりがあるタブレット向けはともかく、スマートフォン向けは一部の例外を除き、引き続き8コアが最大構成のままになっている。
2023年~: Armv9-Aの実装(表5)
最新のアーキテクチャの変更が、Armv9-Aへの対応である。もともとArmの命令セット、特にArm v8-Aはサブバージョンがいっぱいあり
・v8.0-A: ベースとなる64bit命令
・v8.1-A: Atomics命令/VHE(Virtualization Host Extensions)を追加
・v8.2-A: FP16のサポート、Stat Profiling、RAS(Reliability、Availability、Serviceability)機能、SVEを追加
・v8.3-A: Nested Virtualization、RCpc(Release Consistent processor consistent)、Pointer Authentificationを追加
・v8.4-A: 暗号化命令の強化、SHA512/SHA3対応命令の追加、Secure EL2、MPAM(Memory Partitioning and Monitoring)を追加
・v8.5-A: 乱数発生命令、Branch Target Identifier、Memory Taggingを追加
・v8.6-A: MatMul命令、BF6サポート、仮想化強化、ポインタ認証強化(Enhanced PAC2/FPAC実装)、高精度タイマ
・v8.7-A: PCIe Hot plug、Atomic 64Bytes load/store、WFI(Wait for Instruction)/WFE(Wait For Event)のサポート
となっている。ただこれを全部サポートしているプロセッサがあるか?というと、Armですらそういうプロセッサを出していなかったりする。
この辺が問題と思ったのか、2021年に発表されたArmv9-AというかArmv9.0-Aは、Arm v8.5-A+CCS(onfidential Compute Architecture)+SVE2という構成になり、v9.1-A/v9.2-Aはそれぞれv9.0-Aにv8.6-A/v8.7-Aの機能を盛り込んだものとなっている。
Armのコアで言えば、2021年に発表された「Cortex-X2」「Cortex-A710」「Cortex-A510」以降がArm v9-A対応になっているのに対し、Appleは2024年発表の「A18 Bionic」でやっとArm v9-A対応を果たしている。
もっともAppleの場合、A10がArm v8.1-A、A11がArm v8.2-A、A12がArm v8.3-A、A14がArm v8.4-A、A15がArm v8.5-A、A16/A17がArm v8.6-A対応になっており、逆にArmのCortex-X1は基本はArm v8.1-A準拠で、そこにArm v8.2-AのRASと暗号化命令、v8.3-AのLDAPR命令、v8.4-Aのdot products命令を追加しただけ、という中途半端な実装になっている。

Google Pixel 9

iPhone 16 Pro Max
Arm v9-Aのメリットは、SVE2のサポート以外だとv8.5-AのBranch Target IdentifierやMemory Taggingなどの脆弱性対応の話であり、これはむしろAppleの方が先に実装を済ませていたという話であるから、実はそれほどデメリットにはなっていない。
スマートフォンのCPUはどのぐらい速くなった?
ということで、5つの時代に分けてAppleとGoogleのスマートフォンと、そこに実装されているコアの特徴を簡単にご紹介したところで、最後に性能をまとめてみてみたい。
いろいろ調べたのだが、ある程度網羅しているものとなるとGeekbenchくらいしか存在しないのが実情で、しかもv3/v4/v5/v6のスコアが混在している。表1~5にそれぞれGeekbenchの結果を記したが、これはMulti Core Scoreの代表値である。
あと表1の世代は、そもそもGeekbench自体がない。仕方がないので、この世代のみコアのDMIPS値(ARM11: 1.25 DMIPS/MHz、Cortex-A5: 1.57 DMIPS/MHz、Cortex-A8: 2.0 DMIPS/MHz、Cortex-A9: 2.5 DMIPS/MHz)にコアの数と動作周波数を掛けたものを利用して性能比を算出している。
またベンチマーク同士の性能比は、前回同様にベンチマーク結果の相乗平均で算出している。
ということでグラフ1がその結果である。Appleで言えば、2007年6月の初代iPhoneと2024年9月のiPhone 16 Proの性能比が384.9倍と算出されており、17年3カ月で384.9倍なので年率40.5%ほどの伸びとなっている。

【グラフ1】スマートフォン向けCPUの性能進化
一方Googleの方は、2010年1月のNexus Oneと2025年3月のGoogle Pixel 9aの比は76倍ほど。年率32.2%ほどとやや伸びが悪い。理由の1つは、GoogleのTensor G4が、Cortex-X4コアを搭載しつつも、最大クロックは3.1GHz留まりと、あまり伸びていないことで、その主な理由はSamsung 4LPPを利用しているためと思われる。競合のApple A18 BionicのEverest Coreが最大4GHzで動作していることを考えると、これが性能の伸びをやや抑えている要因と考えられる。
韓国のthe bellが6月19日に、GoogleがTensor G5の製造委託先をTSMCに変更したことを報じた(リンク先は韓国語)が、それも止むなしと思われる。仮にTensor G4が4GHzで動作し、Geekbenchのスコアも動作周波数に比例して伸びたと仮定すると、性能の伸びは年率34.7%まで改善することになる。Appleほどではないが、まぁ納得できる性能の伸びである。
以前の記事では49年で6,769万倍、年率44.5%という数字を示したが、Appleの40.5%は結構これに近い数字になっているのが分かる。とはいえ、グラフを見て頂くと、そのAppleでも2019年以降は次第に伸びが鈍化してるのが目に見える。2019年9月のA13 Bionicと2024年9月のA18 Bionicの性能比はおおよそ2.2倍。年率にすると15.1%程度の伸びでしかない。やはり消費電力や実装面積が厳しい分、むやみにコアを増やしたり動作周波数を引き上げられないのが効いているということかもしれない。
逆に言えば、アーキテクチャ改良だけで年率15%も性能を引き上げた、というのは凄いことなのかもしれないが。