後藤弘茂のWeekly海外ニュース

AppleがArmベースのSoCをMacに採用する背景

AppleがMacの3度目のCPU命令セット変更を発表

現行のx86コアではトレードオフとなる性能と電力を独自コアで解決

 Appleは、Macに自社開発のCPUコアチップ搭載を発表した。現在のMacは、Intelのx86/x64系命令セットCPUだが、AppleのチップではArm系命令セットのCPUとなる。

 x86/x64からArmv8へと、命令セットの転換となり、ソフトウェアには大きなインパクトとなる。もっとも、Appleは過去にもモトローラ68000系からPowerPCへ、PowerPCからIntel x86へと命令セットの乗り換えを行なっており、今回で3回目の転換となる。

 68000系からPowerPCへの転換では、性能が行き詰まると考えられたCISC(Complex Instruction Set Computer)命令から、性能を引き上げやすいと考えられたRISC(Reduced Instruction Set Computer)へと乗り換えた。PowerPCからIntel x86への転換では、先細りになったPowerPCから、マイクロアーキテクチャの拡張で性能引き上げが続くx86へと乗り換えた。

 今回は、性能/電力の効率が悪いx86から、最適な性能/電力の得られるArmへの切り替えだとしている。MacのArmへの転換は、AppleのこれまでのCPUコア開発を見ているととくに不思議ではない。

 現在のAppleのビッグCPUコアは、マイクロアーキテクチャ的にはすでにハイエンドクラスのCPUコアとなっている。また、クロック当たりの性能では、PC向けCPUに対して遜色がないレベルに達しつつある。これは必然であり、なぜなら、7nmでのAppleの現在のArm CPUコアのダイエリアは、同じ7nmのAMD Zen 2とそれほど変わらないからだ。

 つまり、AppleのCPUコアは、拡張を続けた結果、x86/x64 CPUコアと同じ程度の規模にまで拡大されていたのだ。

 そして、Appleが採用するArmのCPU命令セットArmv8.xも、拡張を続けて、高性能CPUとして足りなかった機能や、新たなセキュリティ脅威に対する機能を強化してきた。

 また、AppleはMacに搭載するチップをSoCだとしている。iPhone/iPad向けのApple AシリーズSoCと同様に、ワンチップに、自社の求める機能を詰め込んだSoCを搭載する。そのためのGPUコアやニューラルネットワークコアなどの要素コア技術は、すでにApple Aシリーズで蓄積している。

独自IPを集約したSoCを開発

 4、5年前の状況では、コンシューマ向けArm CPUコアは、性能ではまだx86/x64系におよばず、機能面でも不足があった。しかし、現在はそうした不足要素が追いつき、Appleとしてはチップアーキテクチャを転換可能な状態になったと判断できるようになった。

 Armコアへの転換でのAppleの利点は、自社の求めるパフォーマンスレンジに最適化した高い性能/電力効率のコアを得られること、自社の求める機能のコアを集積したSoCを得られること、そして、おそらくは自社の求めるCPU命令の拡張が得られることだと見られる。

 x86/x64系であるかぎり、CPUコアの性能/電力には限界があり、自由なコアの集積SoC設計は難しく、CPU命令の拡張も簡単には行きそうにない。

Zen 2とそれほど変わらないサイズのA13のCPUコア

 現在の最新のApple SoCであるApple A13については、半導体調査会社のTechInsightsが、昨年(2019年)の分析「Apple iPhone 11 Pro Max Teardown」で、ダイ写真を公開している。ダイ写真上では、CPUコアとGPUコアは比較的判別がし易い。複数コアがあるため、同じレイアウトパターンが重複している部分がCPUコアやGPUコアであるためだ。

Apple A13のCPUコアとZen 2 CPUコアの比較

 Apple A13の場合、ビッグCPUコア(Lightning)は2個なので、2つの同じレイアウトが対称で並んでいる部分がビッグCPUコアとなり、簡単に見つけることができる。ダイ写真から計算すると、7nmプロセスで2個のビッグCPUコアのサイズは、L2キャッシュを除くと5.1平方mm程度となる。1個の7nm CPUコアが2.5平方mm強のサイズだ。

 CPUコアで2.5平方mmのサイズは、かなり小さいように思えるかもしれないが、7nmでこのサイズはかなり大きい。Arm系CPUではビッグコアも7nmでは1平方mm台が普通なので、異例のサイズだ。

 そして、x86/x64系と比べると、A13のビッグコアは、同じTSMCの7nmプロセスのAMD Zen 2コアより少し小さいだけだ。言い換えれば、Appleの現在のビッグコアは、ダイエリア的にはx86/x64系とほぼ同じ規模になっている。x86/x64 CPUの命令デコーダオーバーヘッドを考慮すれば、ほぼ同じサイズのCPUコアと言ってもいい。

 モバイル向けCPUコアのマイクロアーキテクチャは、2つの方向に分かれていた。1つは省電力重視で、できるかぎりアーキテクチャをコンパクトに抑える方向、もう1つは性能重視で、PC向けCPU並にアーキテクチャを拡張しようとする方向。Appleは後者のアーキテクチャ拡張路線の最右翼で、ひたすらIPC(Instruction-per-Clock)を高める方向へと進んで来た。

 Appleは、高性能低電力CPUベンチャのP.A. Semiを買収し、CPUコアの独自開発をスタート。ほかのモバイルSoCベンダーがCPUコアを4コアにしたときも、2コア構成を継続し、その代わりCPUコアのマイクロアーキテクチャの拡張を進めた。

 Apple A10からは、ビッグCPUコアとスモールCPUコアの組み合わせに変更し、ビッグCPUコアについてはアーキテクチャ拡張をさらに推し進めた。

 現在は、7命令デコード/サイクルのフロントエンドとなっている。Arm自身のCPUコアIPは、これまでの製品では4命令デコード/サイクル(Cortex-A77)なので、Appleは大きく凌駕していることになる。実行ユニットやスケジューラも、フロントエンドに合わせて拡張されてきた。

 Appleはこのように、CPUコア数を増やすよりも、CPUコアを強化する方向でモバイルSoCを発展させてきた。AppleのCPUマイクロアーキテクチャの拡張は、従来のモバイルユースだけを考えると不自然で、そのためにApple CPUコアのMacへの導入は、以前から推測されていた。

 CPUコアのマイクロアーキテクチャから見ると、MacへのApple CPUコアの投入は、必然的な流れだったと言える。

急ピッチでアーキテクチャを拡張するArm系CPUコア

 チップのダイサイズを見ても、拡張ぶりは明らかだ。Apple AシリーズSoCチップは、初期のApple A4では53平方mmと組み込み向けのチップサイズだった。

 それが、現在ではiPad向けのXやZがつくSoCになると、ダイサイズは120平方mmを越えるのが普通になった。メインストリームPC向けのチップと同程度のダイサイズとなっている。

モバイルSoCのダイサイズ
PDF版はこちら

 PCクラスのCPUコア性能を追い求めるApple。しかし、こうした方向を取るArm CPUメーカーはAppleだけではない。たとえば、Samsung Semiconductorは、同社のSoC「Samsung Exynos」ファミリの独自CPUコアで、ひたすらアーキテクチャの拡張路線を走っている。

 Exynosコアは、初代の14nmプロセスのExynos M1では4命令デコード/サイクルだったのが、10nmのM3で6命令デコードとなった。現在の7nmのM5も6命令だが、5nmのM6では8命令デコードとなる予定だ。

 Exynos CPUコアの命令デコードの拡張は、Apple CPUコアを追いかけるかたちとなっている。16nmのApple A10の6命令デコードを追いかけて、10nmで6命令デコードとし、5nmでAppleを上回る8命令デコードを目指している。

 そして、Arm自身も新たに発表した「Arm Cortex-X1」で5命令デコードへとマイクロアーキテクチャを拡張した。Armはこれまで慎重にCPUマイクロアーキテクチャの拡張を抑えてきたが、路線が変わりつつあることがわかる。

 こうしてみると、Arm系CPUコアのトレンドが、x86/x64系CPUへ迫るマイクロアーキテクチャの拡張であることが見えてくる。

 x86/x64系のハイエンドCPUは、4から5命令デコード/サイクルなので、Arm系CPUの拡張のほうがより拡張しているように見える。しかし、CISC系命令セットのx86/x64命令セットと、RISC系命令のArmv8-A命令セットでは、命令粒度が異なるため、デコード命令/サイクルだけで比較はできない。

 たとえば、Zen 2は4命令デコードだが、実行パイプは11パイプだ。雑に言えば、Arm系の6-7命令デコードCPUは、実行パイプで比較するならx86/x64系CPUの4-5命令デコードクラスだと言えそうだ。

 ともあれ、商用製品向けのArm系CPUコアが高性能クラスのマイクロアーキテクチャに成長しつつあることは確かだ。そういう意味では、Arm Macは、コンシューマ向け高性能CPUエリアへのArmコアの浸透の最初の一歩で、今後もその流れは続くかもしれない。

Armv8命令セットアーキテクチャの進化

 AppleにとってArmアーキテクチャの魅力は、自社に最適なマイクロアーキテクチャを設計できることだけではない。命令セットアーキテクチャについても、自社の要望を反映させやすいことが魅力だと見られる。

 Armは、基本の命令セットアーキテクチャは自社で開発しており、つい最近までベンダーのカスタム命令も認めていなかった。

 しかし、Appleは、Armと命令セットの定義について協議できる大顧客であり、自社が求めるフィーチャをArm命令セットのなかに抱合させてきたと見られる。

 Armは64-bit化した「Armv8-A」命令セットを導入してから、命令セットの小幅な拡張を継続してきた。2014年のArmv8.1-Aからはじまり、毎年小数点以下のバージョンを1つずつ上げている。そして、Appleは、Armの命令セット拡張をいち早く採用するアーキテクチャライセンシだ。

Armv8命令セットの進化
PDF版はこちら

 実際、Arm自身のCPUコアは、現行ではArmv8.2-Aまでのサポートにとどまっているのに対して、AppleコアはArmv8.3-A以降もサポートしている。具体的には、Apple A12のCPUコアではArmv8.3-A相当の命令がサポートされている。

 Appleの開発文書に、Apple A12以降のCPUではArmv8.3-Aの目玉機能であるポインターオーセンティケーション(Pointer Authentication)のサポートが記述されている。

 さらに、AppleはApple A13のCPUコアでは、Armv8.4相当の命令をサポートした。LLVM (Low Level Virtual Machine)の各CPUのサポート機能のリストを見ると、Apple A13 CPUの定義であるProcAppleA13で、Armv8.4の新機能である「SHA-3(Secure Hash Algorithm-3)」のハードウェア実装などがサポートされている。

 こうしてみると、Armv8.xの新命令/新機能は、Arm自身のIPでサポートされるより先に、Appleが採用している。ほかのライセンシよりも採用が早い。このことは、これらの新命令/新機能が、Appleの要請もあって追加された可能性が高いことを示している。

 MacへのArmv8ベースコアのSoC採用の背景には、このように、Appleが先導するArm CPUコアのマイクロアーキテクチャや命令セットの拡張の潮流がある。長い時間をかけた拡張の結果、ついにMacの命令セットアーキテクチャを置き換えるところまできた。