過去に三度、大きな転換点があったMac。

噂されていた「MacのARMアーキテクチャへの移行」、AppleはWWDC 2020の基調講演でこれを発表しました。長く噂されていたことやiPad Proの高性能ぶりを考えれば、決して不思議なことではありません。この移行は、おそらく驚くほど簡単に進むだろうと予想しています。

かつてパソコンにおいてプロセッサのアーキテクチャを変更することは、そのプラットフォームの存続にかかる大きな決断でした。何しろ、それまでに培ってきたソフトウェア資産を捨てることになりかねないからです。

ところが、そんな大きな決断を伴う移行をMacは二度経験してきました。

最初は1993年のMC68000系からPowerPCへの移行、次は2006年のPowerPCからIntelx86への移行です。その際の移行プロセスを思い返すと、思わず身構える古いMacファンもいるかもしれません。

前者は後続プロセッサの開発もままならなくなり、ライバルとの性能差が大きくなる一方、という状況で、当時台頭していたRISCという新しい考え方のプロセッサへの移行を余儀なくされたからです。”坐して死を待つ”状況を脱するための切り替えでした。

後者も似たようなものです。PowerPCのままでの性能向上が厳しくなっていた上、パソコン用システムとしては出荷数が圧倒的に少なく、コスト面でPowerPCを採用し続けることが難しくなっていました。CPUだけでなく、周辺チップも含めてマイノリティのMacはコスト高だったのです。

大多数のコンピュータはIntelが採用されていましたから、移行することでその周辺の部品も含めて大幅なコストダウンと性能向上を果たせました。時間をかけて用意周到に準備を進めていましたが、こちらも生き残りのための決断でした。

Intel製プロセッサではカバーできない領域に到達するため専用プロセッサを独自に開発。

しかし、今回の「Apple Siliconへの移行」は、”留まることができないため、仕方なく移住する”のではなく、積極的に”新しい領域に打って出る”ということになります。14年前とは状況が全く違います。Macを進化させるため、積極的に前進しようとする中での決断。以前と比べることはできません。

”より良い製品への進化”と”高速なCPU開発”の違い

元々は消費電力が低く、シンプルな命令セットのプロセッサとして生まれたARMですが、スマートフォンで幅広く使われ、さらに性能向上への要求が高まったことで、現在は高性能なプロセッサへと進化しています。

例えば今年、ARMはCortex-X1という高性能コアを発表していますが、このコアは従来のCortex-A75に比べ30%も高速化しています。Appleは独自でコアの設計をライセンス、拡張してプロセッサを設計しているため、Cortex-X1が将来のMacで使われるわけではありません。

しかし、ARMアーキテクチャの可能性を示す、ひとつの目安としては参考になるでしょう。AppleがCoetex-X1の設計を元に、新しいMac用のプロセッサを開発している可能性もありそうです。

CEOのティム・クック氏は、Mac用に自社設計プロセッサの採用を決めた理由に関して、モバイル向けプロセッサと同等レベルの消費電力と、デスクトップ向けレベルの性能を両立できることを示唆しています。

単純に”高速にする”だけならば、冷却性能を高めて高性能なチップを搭載すればいいだけですが、高性能なCPUを搭載することが、より良い製品へと直結していたのは昔の話。一つにはプロセッサが出す熱をどう処理するかといった問題もありますが、加えてコンピュータに求められる性能が多様化していることもあるでしょう。

機械学習のためのニューラルネットワーク処理が得意な回路(Apple製プロセッサにあるNeural Engineなど)や、GPUに代表される並列演算が得意な回路など、一般的なCPUとは別に設計した方が効率よく性能を引き出せる使い方では、用途に合わせて異なる構成のプロセッサを混載した方が、電力あたりの性能は高くなります。

現在はシステム全体の消費電力の枠に対して、どのようなバランスで設計し、最終製品の機能価値として落とし込むのか、目線を最終製品に向けた上でプロセッサの設計目標を置かなければ、より良い製品への進化を導きにくくなっています。

”ARMアーキテクチャ”ではなく”Apple Silicon”と呼んでいる理由

iPhoneだけではなく、iPad向けにも多くの専用SoCが開発されてきた。

ところでAppleは今回、ARMアーキテクチャへの移行を行うとは一言も言っていません。”Apple Silicon”としか話していないのです。iPhoneやiPadのアプリがそのまま動きますよと話していますから、当然、ARMであることは間違いないのですが、あえて”Apple Silicon”と強調しているのは、CPUのアーキテクチャだけが搭載するシステムの位置付けを決めるわけではないからでしょう。

前述したNeural Engineは代表例ですが、iPhone 11シリーズに搭載されるA13 Bionicには他にもサウンド、画像などのメディア処理を行う専用プロセッサが搭載されていますし、GPUもAppleのオリジナル設計です。

目標とする製品のカタチがあり、そこに向けて半導体設計から作り込んでいる。ARMベースのコアはその一部でしかないのですから、ARMアーキテクチャのプロセッサに切り替えるという表現は正しくなく、やはりApple Siliconというのがふさわしいでしょう。それと同時に、これまで以上に大きな期待もできます。

Intel製プロセッサを採用している限り、搭載できるプロセッサのバリエーションが制限されますが、自社設計ならもっと自由に様々な構成要素を組み立てることができます。

基調講演のデモは全てA12Z Bionicで行われた。

これまでのApple製プロセッサで、もっとも高性能なものはA12Z Bionicです。現行iPad Proが搭載しているもので、このプロセッサを開発用マシンにも採用しています。しかし薄型で冷却ファンもないiPad Proに搭載されることを前提に作られたものですから、もしMacBook Proに搭載されることを前提に設計すれば、当然ながら異なる構成になるはずです。

”移行にかかる労力”よりも”獲得できる大きな未来”

14年前と状況が異なるとは言え、もちろん移行には大きなエネルギーが必要です。ただ、今回は比較的スムースに移行できるのではと見ています。

開発環境のXcodeは、すでにiOS、iPad、macOSのクロス開発が可能になっていますし、その際にはx86(x64)とARMの両方のコードを生成できるようになっています。また、Appleは数年をかけてmacOS上にiOS用アプリを移植するためのフレームワークを開発してきました。

逆にiOSやiPadOSでは、ファイルアプリやトラックパッドの採用など、macOSと相互運用する際の親和性を高める改良が積み重ねられています。さらには今回のWWDCで発表されたように、今年秋にリリース予定のmacOS Big Surでは見た目のデザインや操作フィールが、より一層、iOS / iPadOSに近づきます。

Appleが提供しているMac用アプリケーションは、Apple Siliconに全て移植済。

Appleが主張するように「数日でApple SiliconのMac向けにアプリケーションを最適化できる」ほど簡単かどうかは、今後、開発キット上で様々な開発者たちが検証していくはずですが、基調講演でのデモを見る限り、Apple Silicon向けに開発していないIntel向けアプリケーションであっても、速度面でのネガティブなインパクトは最小限で済みそうです。

開発者向けのハードウェアキットは500ドルで販売される。

現行のA12Z Bionicでも、MacBook Pro 13インチモデルのCPUと同等の処理能力と、大きく超えるGPU能力を持っています。それをMacBook Pro 13インチモデルと同じ筐体に搭載するならば、冷却に余裕があるためもっと性能を上げられるでしょう。

それにA13 Bionicで採用されているApple設計の高性能コアLightningも、さらなるブラッシュアップで高性能化、あるいはMac向けのコア数増加などにも期待できます。これはGPUに関しても同じですね。

Mac向けとiPad向けでは求められている性能や機能が異なりますから、当然、集積する回路の取捨選択も異なることになります。

事前にバイナリ変換を行うことで高速に従来コードを実行

ところでAppleは、Apple Siliconで動作するmacOS Big Sur上で、新しい仮想マシンが構築できるというデモを紹介していました。ここで気になったのは、必ずしも”x86の仮想マシン”と話していたわけではないことです。Apple Silicon上での仮想マシン機能とは、x86マシンのエミュレートなのか、それとも単純に仮想マシンを高速に実行できるというだけなのか、基調講演からだけでは読み取れません。

もしApple Silicon上でx86仮想マシンを高速に動かせるような工夫があるのなら、それはそれでとても面白いことだと思うのですが、それ以上に印象的だったのはx86のコードをApple Siliconで高速に実行できるというRossetta 2の性能に対する自信です。

基調講演後、何度か該当箇所を見直してみましたが、パフォーマンスが高い理由は主に”インストール時にコンバートを済ませておく”ことのようです。

実行時に、逐次、ARMのコードに変換しながら実行するのではなく、あらかじめ変換しておくことでオーバーヘッドを減らすわけです。

かつて、Transmetaという会社は、実行を繰り返す中で、こうして変換したコードをさらに自動的にチューニングしていく仕組みを組み込んでいましたが、Rossetta 2にも同様のアプローチ(実行が繰り返されることで最適化が進む)が組み込まれているかもしれません。

このように”あらかじめ変換しておく”ことが、パフォーマンス上、有利であることは明らか。これまであまり採用されてこなかったのは、リアルタイムに実行コードを生成しながら動作させるソフトウェアがうまく動作しなかったからです。

x86との互換機能であるRossetta2は一括変換で高速なエミュレートを可能に。JITなどとの互換性もあり、ユーザーは存在を意識する必要がない。

基調講演で「JITにも対応」と話しているのがその部分でしょう。JITとはジャストインタイムコンパイラのことで、例えばJavaScriptの高速化などでも使われます。JITは実行コードを”その場で生成”します。Intel向けアプリケーションは、当然ながらx86のコードを生成するため、事前に変換しておくわけにはいきません。しかし、Rossetta 2ならばJITが生成したコードをその場で変換して実行できると説明されています。

互換性とパフォーマンスの両立がなされている理由は、この辺りの仕組みに隠れていそうですね。

”Mac Proの領域”には、どのようにして到達するのか

さて、少し妄想を膨らませてみましょう。

年内に登場するであろう「Apple Siliconで動作するMac」には、Mac専用に設計された、しかし次期iPhoneと共通のCPU/GPUコアなどが搭載された特別なAプロセッサが搭載されるでしょう。CPUコア、GPUコアともにMacの本体設計に合わせたコア数と動作クロック周波数になり、iPad向けの”X”よりも高性能になるはずです。

共有メモリを強力なCPUとGPUなどからアクセス可能にすることで、広帯域の処理を行える。

AppleはApple Siliconの特徴として、CPU / GPU / Neural Engine / ISPといった異なる目的で設計されたプロセッサが同じメモリを共有し、強調動作することで性能が高まることを強調しています。

通常、CPUとGPUが協調して動作したり、Neural Engineの処理が間に挟まったりした時、CPUとGPUが使うメモリが異なるとデータの転送が発生して効率が落ちます。

しかし、同じメモリを共有していれば、順番に得意な処理を受け持てばよく、より効率の良いプロセッサで処理が行えます。実際に、iPhone 11ではカメラ処理などで同様の動かし方をしています。この手法は高性能なだけではなく、高効率でもあります。

高性能コアと高効率コア(+Neural Engineなどの専用プロセッサやGPUなど)を組み合わせれば、同じ処理をより少ない電力で目的を達成できます。

WWDCの中ではよりセキュアな起動が行えることも言及されまた。これまではT2チップなどでIntelのシステムをラッピングしていましたが、Apple Siliconでは元から同等以上のセキュリティを備えています。

前述した各種の専用処理ユニットの存在や、それらがメモリを共有することの利点も含め、Apple SiliconのMacは(開発者から見ると)機能的には”上位”で、インテルプロセッサ搭載のMacよりも多くの機能を使えます。

おそらく年末までには、モバイルノート型とディスプレイ一体型デスクトップの2種類が、Apple Silicon搭載Macとして発売されると予想しています。互換性やパフォーマンスも不足しないはずです。

しかし、どのようにして克服するのか、まだ予測できない部分もあります。それが「Mac Proの領域」にどうやって近づいていくかです。

単一のシリコンに複数のプロセッサを内包し、各プロセッサが共有するメモリ上で動作させる方法でパフォーマンスを上げているApple Siliconですが、Mac Proの領域は1つのプロセッサでカバーできないと考えられるからです。

IntelからARMへの切り替えは、14年前よりも簡単に、そしてあっさり進むと予想していますが、Apple Silicon搭載Mac Proが将来登場する時、どんなものになっているのか。少々気が早いのですが、ティム・クック氏が言う「2年(現時点からだと約2年半後)」ぐらいまでには答えが出ているのでしょう。


関連記事:
5分でわかるWWDC20まとめ。ARM版Macが年内登場、iOS 14が今秋配信など盛りだくさん