前回の最後でご紹介したグラフだが、Geekbenchに第4世代iPad Airの結果が公開された。
ただこのテストはGeekbench 5での結果であり、一方で前回紹介したグラフはGeekbench 4の結果で、2つの結果を混ぜて比較できない。ということで同じGeekbench 5でiPhone 11 Pro Maxの結果を探したのがこちら。先の第8世代iPadのスコアが正しいと仮定した場合、
となり、A13→A14で17%ほど性能が向上していることになる。
動作周波数そのものは同じだから、前回の最後で示した「世代ごとに16.3%近い性能改善」がA13→A14でも実現したことになる。ちなみにA14の詳細はいまだに分からない。一応bigコアがFirestorm、LITTLEコアがIcestormという話になっており、この17%の性能改善はFirestormの方である。おそらくは、さらに解釈/発行命令数を強化しているとは思うのだが。
さて、話をApple Siliconに移したい。現状発表されている内容はこちらで簡単にまとまっている。もう少し突っ込んだ内容は本田雅一氏の記事にまとまっているが、まずはこの辺りからスタートしたい。
macOSでのbig.LITTLE問題
まず基本的な話を整理すると、
Single Thread Performance、つまりCPUコア単体での「動作周波数当たりの性能(≒IPC)」は、既にApple A12の時点でIntel Coreプロセッサにほぼ比肩しうるとされている。もちろんIntelもどんどん性能を強化してはいるが、前回ご紹介したようにAppleも性能をどんどん上げており、おそらく米IntelのTiger LakeとApple A14はやはり同等レベルと考えてよい。なので、「より高い性能が必要」というのでない限り、CPUのアーキテクチャそのものは、現在のApple Aシリーズの延長をそのまま利用できるとみられる。
その一方で、動作周波数そのものはピークでも3GHzを切る程度であり、iPhoneに使われるAxxシリーズはコア当たり1~2W、iPad向けに消費電力枠の大きなAxxX/Zシリーズでも3~5W程度に抑えられているとみられる。これはスマートフォン向けアプリケーションの動作には適しているが、デスクトップや将来的にワークステーション/サーバの分野までカバーするにはちょっと低すぎる。
big.LITTLEに関しては現状判断が難しい。基本的には現時点のmacOSのアプリケーションは、big.LITTLEを考慮して記述されていない。もっとも本来big.LITTLEはアプリケーション側からはTransparentな存在として実装されているので、アプリケーションがこれを見ながら操作を行うのは筋論として間違ってはいる。
間違ってはいるのだが現実問題として、例えばFPSゲームなどでは、戦闘と戦闘の合間の比較的負荷が少ないシーンで勝手にLITTLEコアに切り替わってしまうと、いざ戦闘となって負荷が急増するタイミングでbigコアに戻るまでのレイテンシがばかにならないから、「負荷が減ってもbigコアのままで動かしたい」なんてニーズは当然存在する。この辺りをプロファイルでやるとか、実行ファイルにTagを付けておくとか、いろいろと実現手段はあるのだが、どれを使うにしても現時点のmacOSにbig.LITTLEのインプリメントが存在しない以上は、そもそもbig.LITTLEを使わない(bigコアのみ)方式にするか、あるいはmacOSにbig.LITTLEの実装を入れるかのどちらかということになる。
この辺りの判断が難しい一つの理由は、例えばArmはサーバ向けではbig.LITTLEを利用していないこと。確かにサーバ向けプロセッサ「Neoverse N」シリーズ(スケーラビリティ重視)と「Neoverse E」シリーズ(省電力重視)の2種類のコアの混在はできるが、これはダイナミックに切り替えではなく、Nシリーズのクラスタ(CPUコアを複数まとめた管理単位)とEシリーズのクラスタを同時に動かし、ただしそこで走らせる処理をそれぞれに適したものにする、という形の実装を前提にしている。要するにヘテロジニアスなプロセッサ環境だ。米AMDはそもそもbig.LITTLEの実装はまるで予定していない。
厄介なのがIntelで、まずbigコア(Sunny Cove)×1+LITTLEコア(Tremont)×4という組み合わせの「Lakefield」と呼ばれるCPUを2020年に発表、21年にMicrosoftから発売されるSurface Neoに実装される予定だ。ただこれは超薄型、AppleでいえばMacBook Airとか、iPad Airというか超薄型のフォームファクター向けの製品であり、デスクトップというよりは限りなくスマートフォン/タブレットに近いもので、アプリケーションの使われ方もこちらに近いからあまり考慮する必要はない。
問題はIntelがこのbig.LITTLEの実装をデスクトップ向けにも展開しようとしていることだ。来年第1四半期に投入される「Rocket Lake」がその第一弾で、これは単一コア(「Coffee Lake」と同じものという話とSunny Coveを入れるという話の両方がある)ながら、8コア12スレッドという変則的なものである。つまり4コアはHyper Threadingが無効化されているという疑似アシンメトリック・プロセッサである。
本命はその次に予定されている「Alder Lake」で、こちらはbigコアにGolden Cove、LITTLEコアにGracemontを搭載する、完全なアシンメトリック・プロセッサである。何でこんな変な構成にするかというと、要するにIntelのプロセスが相変わらず不調で、10nm世代の次世代(10nm SuperFin)にしても、性能レンジが狭くなっているからだ。ピーク性能でAMDのRyzenシリーズに伍(ご)するためには、高性能/高消費電力にプロセスをチューニングせざるを得ず、すると低負荷時の消費電力が高くなり過ぎる。そこで、相対的に低消費電力なAtomベースのGracemontを組み合わせて消費電力を下げる、という形で解決しようというわけだ。
Intelがbig.LITTLEに走る理由が、主にプロセスに起因する消費電力増を少しでも抑えるためという辺り、これをAppleが採用する可能性はすごく低いと思いたいが、こればっかりは今後のTSMCその他のプロセスの動向次第なのでなんともいいがたい。多分ではあるが、macOSにもbig.LITTLEの実装は入れつつ、ただし実際のApple Siliconは(少なくとも5nmプロセスを使う世代では)モノリシックな構成になるのではないかと思う。
「ではApple Siliconはどういうものになるか」という話を少し考えてみたい。まずプロセス絡みの話を。
図1は、一般的なプロセスにおける動作周波数と動作電圧の関係をまとめたものだ。
基本的には、あるところ(Sweet Spotの手前)までは動作電圧がそれほど増えずに動作周波数を上げていけるが、Sweet Spotあたりから急に増え始める格好になる。ちなみに動作電圧は、ある程度以下だとそもそもトランジスタが動作しない(これが下限)し、ある程度を超えるとトランジスタそのものが破壊される(これが上限)ので、この範囲内で動かすことになり、動作周波数の上限と下限も、この電圧の上限と下限で一意に決まる形となる。
さて、このカーブはプロセスそのもので決まる。写真1はちょっと古いが、台湾TSMCが2015年のArm TechConで示した、N16とN16+という2つのプロセスの特性を示したものだ。
黒がN16のシミュレーション結果、緑がN16+のシミュレーション結果で、赤が実際にN16を利用して製造したシリコンでの実測値である。N16の実測値がN16シミュレーションと同じカーブを描きつつ、やや右にシフトしているのは、実際に製造したらシミュレーションよりちょっと特性が良い(同じ電圧でより高速に動く)という話だし、N16+はさらに高い動作周波数が狙えるという話になる。
さて、写真1でいえば、通常のモバイル向け製品は動作周波数の下限~Sweet Spot辺りまで、デスクトップやサーバ向け製品はSweet Spot~動作周波数の上限辺りまでを利用する形になる。
IntelとかAMDは、同一のダイながら、この動作周波数と電圧の関係を利用して、モバイル向け(~25Wとか35W)とデスクトップ向け(~100W未満、最近は100Wを超えるものも出てきた)を作り分けている格好だ。ただこの方式は「デスクトップ向けCPUをモバイルに転用する」ことはできるが、「モバイル向けCPUをデスクトップCPUに転用する」ことはできない。これは内部の配線やトランジスタの作り方に起因する。
図1は縦軸を電圧としたが、オームの法則(電圧=電流×抵抗)で分かるように、電圧を増やすと電流も増える。なので、デスクトップ向けのようなCPUでは、増える電流に対応するために配線を太くしたり、電流の駆動力を増やすためにトランジスタを変更したり(昔のプロセスだとトランジスタの寸法を微調整して対応したが、昨今ではFinFET構成なのでFinの数を増やして対応する)する必要がある。
これは消費電力とダイサイズの大型化につながるが、デスクトップとサーバ向けでは必ずしも大きな問題にはならない。一方でモバイル向けの場合は、基本的には電圧を落として低めの動作周波数で使うから、電流もそれほど大きくはならないので、配線も相対的に細くていいし、トランジスタの駆動能力も低めで足りる。そのかわり消費電力とダイサイズを小さく抑える必要がある。
写真2はIntelの14nmの例だが、デスクトップあるいはサーバ向けのHigh Performance Clientは配線層そのものが結構太い(厚みがある)一方で、左右方向の密度はそれほど高くないことが分かる。
一方モバイル向けとなるHigh Density SoCでは厚みも減らされ、そのかわり左右方向の密度もずっと高くなっている事が分かる。要するに、どの程度の電流が流れるかに応じて配線層の構成が全く変わっている訳だ。こうした内部の作り方に応じて、特性も図2のように変わってくる。
モバイル向けのプロセスだと、特に負荷が少ない時の消費電力をものすごく落とせる一方、それほど高い動作周波数は期待できない。デスクトップ/サーバ向けのものは、負荷が少なくてもそれなりの消費電力になる一方、より高い動作周波数が期待できることになる。
macOS向けApple Siliconの姿
さて、長々とプロセスの話をした理由はこういうことだ。現在のApple AxxとかAxxX/Zというのは、基本的にはモバイル向けの作り方をしている。つまり高密度・低消費電力向けになっている。これをデスクトップに持ってきても、それほど動作周波数を引き上げる事はできない。図2で、High DensityとHigh Performanceのグラフが途中で交わっているのが分かるかと思う。
この交点が大体境目であって、これを超える動作周波数に引き上げると効率が悪い。そしてある限界を超えると、チップが壊れるとか燃えるといったことになりかねない。
水道に例えれば、モバイル向けというのは細いホースで配管をしているもので、水の量が少ない間は効率が良いが、ここに大量の水を流そうとすると無理がかかってホースが外れたり、バルブから水漏れしたりする。クライアント向けはいわば太いホースであって、大量の水も無理なく流せるが、その代わり蛇口を締めてもちょろちょろ水漏れするような感じである。というわけで、アーキテクチャ的には現在のApple Axx(最新だとA14)をそのままデスクトップに持ち込んでも問題はないだろうが、回路自体はデスクトップ/モバイルに合わせて作り直す必要がある。これそのものの難易度は高くないが、時間がかかるという問題がある。
CPUの場合、大別すると2つの設計図が必要である。一つが論理的な設計図であり、もう一つが物理的な設計図である。電子回路の工作で、回路図と実体配線図にそれぞれ相当すると思えばよい。Apple Siliconに関していえば、アーキテクチャが基本的に同じというのは論理的な設計図はほぼそのまま使いまわせるという話であるが、その一方で物理的な設計図は新規に作り直す必要がある。これが実は結構な手間で、シミュレーションなどを駆使しながら、早くても半年。大規模なものだと1年近くを要したりする。
仮にA14をベースに最初のApple Siliconを作るとすれば(Appleが同時に複数の物理実装チームを走らせている、というのでない限り)、A14の物理実装が一段落した段階で最初のApple Siliconに取り掛かることになる。
A14そのものは今年前半にTSMCの量産がスタートしていることを考えると、最初のプロトタイプが今年初頭にリリースされ、これの検証と修正を行って、物理設計が完了したのが3~4月頃と思われる。となると、Apple Siliconが出てくるのは早くて今年末。現実的には来年頭にプロトタイプが出てくるという辺りだろう。これは2020年中にリリースされるという、最初のArm搭載Mac向けではないだろう。最初のArm搭載Macは、恐らくA14をそのまま載せた、MacBook Airに近いフォームファクターのものと思われる。Apple Silicon搭載のMacの発表は2021年以降になると考えられる。
このApple Siliconの構成は、A14をベースにしているとはいえ、だいぶ変わるはずだ。最初のターゲットはMac mini辺りだと思うが、現行のMac miniですらCore i3-8100(4コア/3.6GHz)とかCore i5-8500(6コア/3GHz)を搭載していることを考えると、少なくともFirestormコアが6コアは必要と思われる。Core i5-8500は、定格こそ3GHz動作だが、Turbo Boost時には4.1GHzまで動作周波数が上がるから、4GHz辺りまでのサポートは必要だろう。Icestormコアは、上で書いた理由により今回は搭載されないように思う。
GPUそのものはどうせMetalで動作するから、A14のGPUコアそのままで行けると思う(コア数がいくつ必要か、はちょっと判断がつかないが)。その一方でメモリインタフェースにはDDR4のサポートが必要だし、ストレージも現在のA14とは異なり、SATAおよびPCIe M.2 NVMeのサポートが必要になる(A14はeMMCベース)。また周辺回路の接続にUSBとかSPI/I2Cなどだけでは足りず、PCI Expressが必要になるだろう。多分第1世代はこんなところで、さらなるCPUの強化などは第2世代のApple Silicon待ちになるのではないかと筆者は予想している。