Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Apple M1 とはなにか

f:id:x67x6fx74x6f:20201126022102j:plain

とりあえず、まとめてみる。

どうやら、JIS 的に3文字以上の最後の長音は伸ばし棒を付けない謎ルールが無くなったらしいので今回はカタカタに「ー」を付けることにした。

 

そもそも iPhone / iPad の Apple A シリーズ や Apple M1 で言われる ARM のチップとは

Arm という会社が出す ARM アーキテクチャーで作られたコンピューターの脳味噌となる半導体。主に CPU を指す。
もともとはファミコンや PC エンジンで使用されていたモトローラからスピンアウトしたモステクノロジーの MOS 6502 プロセッサーの置き換えとして始まり、Apple の出資から ARM 6 がつくられ Apple Newton で使用された。
Android も含め、現状、ほとんどのスマートフォン、タブレットは ARM アーキテクチャーのプロセッサーである。

日本では ARM 7 は au の携帯電話、ARM9 から docomo、PDA、ゲームボーイアドバンスから Nintendo Switch、PlayStation Vita など小型のガジェットで昔から使用されている。

ちなみに Arm という会社はチップを売って儲けているわけではなく、設計書や Apple M1 のように改良する権利を売って会社が成り立っている。モバイル用 GPU の仕様も売っているが・・・。
実は設計書を売る会社なのでめちゃめちゃ儲かっているわけではない。

 

ARM アーキテクチャーとは

CPU としては大きく分けると Intel (AMD) のアーキテクチャと ARM アーキテクチャーがある。

めっちゃざっくり書くと Intel は CISC で時間はかかるが大きな処理ができ、ARM は RISC で小さい処理を速くできるとされている。
この特徴から ARM は省電力に有利になるが、マルチスレッド処理では不利な面がある。

大きな範囲ではこれらを命令セットアーキテクチャー (instruction set architecture / ISA) とか言ったりもする。

 

イベントや記事で言われている SoC と SiP とは

SoC は System-On-a-chip の略でひとつのチップ上に、プロセッサーやマイクロコントローラーなどを入れ連携をして動かす。
Apple で言うと、現状 アクセサリー製品、一部 Intel Mac 以外には必ず入っている。

SiP は複数のチップひとつにまとめたもの。
Apple M1 では SoC とメモリーがセットになっている。(Apple A シリーズも近い状態ではあるが)
Apple 製品では M1 がはじめてと言う感じがするが、Apple Watch の S シリーズや AirPods Pro のイヤフォン部分のチップはそれにあたる。
例えば AirPods Pro のイヤフォンの方のチップはオーディオ関連と Apple H1 でひとつの SiP となっている。

 

Apple M1 の SoC チップが持つ機能とは

f:id:x67x6fx74x6f:20201126004102j:plain

Apple A14 Bionic ではイベントでは以下の機能が書かれていた

  • 高効率、省電力 GPU
  • 高性能な内臓 GPU
  • 広帯域のキャッシュ
  • 高速な暗号化(多分 CPU などを使用しない)と Secure Enclave
  • 高性能なユニファイドメモリー
  • 高速な機械学習と Neural Engine
  • ポートレートモードなどに深度情報に使う Depth Engine
  • プロ仕様のビデオエンコード/デコード
  • HDR Imaging や HDR Video プロセッサー
  • Camera Fusion
  • 常時端末稼働を行う Always-on プロセッサ デスクトップ級のストレージ(コントローラー)
  • 高度なディスプレイ用エンジン
  • パフォーマンスコントローラー(電源周り)
  • 高効率なオーディオプロセッサー
  • 省電力設計
  • 高度な半導体のパッケージ

 

f:id:x67x6fx74x6f:20201126004128j:plain

M1 では追加して書かれているもの

  • 高性能な NVMe ストレージ
  • 省電力なビデオ再生
  • 高性能なビデオ編集
  • Thunderbolt / USB 4 コントローラー
  • Gen 4 PCI Express

 

NVMe ストレージは多分ストレージ扱うためのコントローラーのことだろうか。
ビデオに関してはビデオプロセッサーや Image Signal Processor (ISP) と呼ばれるものやハードウェアエンコード・デコードを指しているのだと思われる。
iFixit の MacBook Pro / Air の分解によると Thunderbolt / USB 4 コントローラーは SoC とは別で Intel 製のチップを使用しており、ここで書かれている理由は不明。

あと iPhone は iPod の派生端末なのでメインのオーディオ関連のプロセッサーは SoC とは別で存在しているはずで、Apple M1 端末も同様だと思われる。
むかしは Audio subsystem と書かれていた気がする。

どこかの記事がインタビューで、クレイグ・フェデリギ氏が Apple M1 ではジャイロが使えないと言っていたため、もしかしたらモーションセンサーがない、または使わせない状態にあるのかもしれない。

 

なぜ、省電力かつ最速のシングスレッド、デスクトップ級のマルチスレッドの CPU ができたか

f:id:x67x6fx74x6f:20201126005213j:plain

ハードウェアのしっかりとした技術があり、 ARM のチップがおもちゃだった頃から、優秀な企業を買収してきたから。

創業するチップ企業が幾度と大手に買収される社長とチップ界の天才ジム・ケラーの P.A. Semi。
当時、サムスンとも協力してチップつくっていた高速、省電力の ARM チップの Intrinsity を買収している。

と書きつつ、単純に命令デコードやALU(演算装置)が他より多い。

 

Apple Silicon の CPU で言われている big.LITTLE や ARM の DynamIQ とはなにか

いくら省電力な ARM チップでも常に高い能力の CPU を使い続ければバッテリーの消耗が激しくなってしまう。
そのため、Apple M1 ではチップ構成を処理を速く行うがバッテリーの消費が高い高効率の CPU を 4 つ、処理は低いがバッテリーの消費が低い省電力の CPU を 4 つの計 8 つの CPU コアを持っている。

処理を多く捌きたい場合は高効率(big)、 通常時あまり処理をしないくてよい場合は省電力(LITTLE)など状態に応じて適したコアに切り替える処理とそのチップの構成を big.LITTLE と呼んでいる。
big.LITTLE ではいくつかの方式があるが、現状ほとんどが高効率と省電力が同じコア数となっており、ペアとして切り替えるようになっている。

Apple M1 の Mac の発表で言っていたように、ほとんどのケースで省電力の CPU が使用されており、他社製の ARM チップと比べかなりの最適化がされていると思われる。

また、Arm 社の設計では DynamIQ という仕様があり、高効率と省電力が同じコア数という構成である必要がなくなった。
最近の Qualcomm 社の ARM チップはプライムコアという速いコアをひとつだけ持つという構成があるため DynamIQ の仕様を使っているのかもしれない。

DynamIQ に近しいものとして、Apple Silicon に関してはいつからだったか忘れたが、高負荷時に全ての高効率、省電力のコアを動かすことができるようになっていたはず。

 

Apple M1 のコアはなぜ 8 コアなのか

一応、ARM の仕様上 1 クラスタに対して8コアまでであるため。

ARM では最大の8個を繋ぎ合わせて最大96コアにする構成例もあったし、
富岳は 13 コア * 4の 52 コア構成になっていたはずなので、のび代はありそう。

 

ユニファイドメモリーのなにがよいか

Apple A12X Apple M1
f:id:x67x6fx74x6f:20201126005550j:plain f:id:x67x6fx74x6f:20201126005148j:plain

 

一応、最近の iPhone / iPad の A11 からユニファイドメモリではあり、今まではチップの上に載っていたが、どうやら Apple M1 はチップ右横に配置されている。

何がユニファイドなのかと言うと CPU、GPU、Neural Engine、Image Signal Processor など詰められた SoC からメモリーに接続されており、各プロセッサから同じメモリーにアクセスできる。
例えば、各プロセッサで処理しメモリーに保存し、他のプロセッサから同じデータにアクセスできるため効率化できる。

ただ、ユニファイドにはデメリットがあり、 同じメモリを使用するためプロセッサの処理に待ち時間ができてしまう可能性があり、
Apple Silicon ではそれらの問題を対処するための施策が行われている。

また、GPU からのメモリーへのアクセスは多くなるためメモリバンド幅が広い可能性がある。 そのため、Apple M1 では CPU なども広い帯域を使用している可能性もある。

 

ファブリックとキャッシュとはなにか

f:id:x67x6fx74x6f:20201126004348j:plain

アプリ開発者側でも詳細な説明がないため不明だが、
一般的に考えるとファブリックとは各プロセッサや機器などを操作するマイクロコントローラーを繋ぎそれらとメモリーのデータをやり取りする線というかネットワークのようなもの。
キャッシュは一時的にデータを蓄える場所で、CPU の L1, L2 キャッシュとは別のものと想定される。

現行の Apple Silicon には PC や Android にある L3 キャッシュと呼ばれるものは存在しない。
ここで言うキャッシュなのか、もしくはメモリーの方がアクセススピードが速いか何か無駄があるからだとは思われる。

 

Apple Silicon の Apple GPU はなにがすごいのか

f:id:x67x6fx74x6f:20201126010101j:plain

Apple GPU や Android などのスマートフォンは PC とは異なり Tile-Based Deferred Rendering という方法で画面の表示をしている。
画面全体を一度に描画するのではなく、画面をある程度のピクセルごとに矩形で分割し表示する。
そのため分割した領域内の表示が更新されなければ、そこを再描画しなくて済み、省電力に貢献する。

  f:id:x67x6fx74x6f:20201128012205j:plain

A11 から Apple 謹製の GPU になり、Memoryless Rendering という機能が使用できる。

Apple GPU と Apple のグラフィックライブラリ Metal には Tile Memory という GPU が保存できるデータの保存領域とシステムがある。
この機能を使用することにより、一部機能はメインメモリーに問い合わせ CPU を使用することなく GPU だけで処理することができる。

Tile Memory が何なんのか開発者には知らされてはいないが、メインメモリーではなくキャッシュを使用している可能性がある。

現状、Apple GPU の Metal の機能では既存の Intel 統合 GPU や AMD と同等かつ、少し使える機能が増えている状態である。
まだパワーは弱いが dGPU と同じ機能は使えると思って良いと思う。

また、今年出た Apple Silicon の世代の GPU でも新機能が増えている。

 

リアアルタイム レイトレース は可能なのか

f:id:x67x6fx74x6f:20201126015318p:plain

そもそも現状のリアアルタイム レイトレースは誤魔化しと力技であるため、かなり前から Metal で再現可能。
ただ、現状 iPhone 12 Pro の Apple A14 Bionic でもかなり荷が重い。

 

f:id:x67x6fx74x6f:20201126015313p:plain

オフラインレンダリングだが Metal でもこのような映像を作ることができる。

 

Arm のチップとなって機械学習はどうなるか

CPU / GPU を使用する ML Compute、
GPU を使用する Metal Performance Shaders Graph が存在し、一応は使用できる。
Apple M1 の TensorFlow は ML Compute を使用する模様。

Neural Engine に関してはアプリ開発者側からは触ることはできず、使用する必要がある際に使用されるとのこと。
現状、推測するに GPU に近しいものではないかと言うところ。
CPU で得意な分野では動作していないため。

ちなみに ML Compute は画像を CSV にしたもの使い MNIST を試したが 1 分以内で全て終わり手書きの数字を認識できた。

 

ビデオ編集について

ハードウェアデコード/エンコードでは、
h264、h265 / HEVC (8 bit)、h265 / HEVC (10 bit)、VP8、VP9。

ハードウェアデコードのみは AV1、VC-1、AVC。

前からではあるが、10Bit の HEVC がハードウェアで処理できるし、ハードウェアデコードのみではあるが、AV1 などでき、今後の動画編集も期待できそう。

iPhone 12 Pro / Pro Max で Apple ProRAW が使えるとなると、メモリーだけではなくハードウェア側で多量のデータを処理する謎な機能がありそうな予感はする。

 

iPhone / iPad とのパフォーマンスのちがい

予想ではあるがタッチパネルがない分、同じディスプレイ解像度でも電力消費が Apple M1 端末の方が少ないのではないかと思っている。

 

Android で使用されている Qualcomm Snapdragon との違いはなにか

Snapdragon のハイエンドはチップに全部入りである。
そのため、通信モデムも入っていたりする。 (最近は 5G モデムが別になっているものもある)

また、最大の違いは汎用的に使用する DSP と呼ばれるものが Apple Silicon には存在せず、Neural Engine や ISP など専用のプロセッサーとして入っている。
(厳密にいうと違うが謳い文句としては発言されたことがない)

 

Apple Silicon の今後

現在、世界最速のスーパーコンピューターである富士通の富岳は Intel でもなく、AMD でもなく、GPU でもなく、ARM プロセッサーをカスタマイズしたチップを頭脳としている。

スマートウォッチやスマートスピーカーなど小型なものから、スマートフォンやタブレット、ラップトップ、デスクトップ、そしてスーパーコンピューターまで CISC チップから RISC チップへ大きな流れの変化となり、コンピューターの歴史でも大きな転換期となるだろう。

ARM のアーキテクチャーでは Split-Lock というものがあり Split モードでは Intel の Hyper-Threading のように 1 サイクルで 2 つのスレッドを同時実行できる。
もし、Apple M1 なら 16 コアで動くということになる。

富士通と Arm が富岳用に開発した Scalable Vector Extension (SVE / Scalable Vector Length) という NEON、他で言う SIMD をチップ開発者が 128 bit ~ 2048 bit 幅で拡張できる。
(容量は少ないがめっちゃ速いメモリのようなもの)
富岳は 512 bit で、初期の Apple Silicon では 256 bit である。
(増やせば高速に演算ができるようになるが、その分デメリットもある)

今後、数年の間に Apple Silicon は iMac や MacBook Pro の上位版、iMac Pro や Mac Pro 向けの CPU。
デスクトップ級の GPU がリリースされるのではないかと予想される。

また、Arm 社の特許的な問題もあるのでどうなるかわからないが、
これから10年後の Apple は ARM アーキテクチャーから離れオープンソースの ISA である RISC-V へと移り変わるかもしれない。