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

AppleがiPhone 5sの「A7」でモバイルARM 64-bit一番乗り

iPhoneの歴史上で最大の変化となるiPhone 5s

 Appleの「iPhone 5s」は、iPhoneの歴史の中のマイルストーンとなる。CPUの命令セットアーキテクチャが、従来のARMv7から次世代のARMv8(ARM Version 8)へと変わり、iOSが32-bitベースから64-bitベースへと変わるからだ。ハードウェア的に見れば、過去最大のジャンプであり、OSのバイナリも完全に変わる。

ARMの命令セットアーキテクチャの変遷
AppleのプロセッサAxシリーズとiPad/iPhone(PDF版はこちら)

 AppleはiPhone 5sの中核SoC「A7」によって、モバイルセグメントでは64-bit一番乗りとなる。ARMアーキテクチャCPUの64-bit化は、まだ始まったばかりで、サーバー向けCPUで一部出荷されつつある段階。ARMのロードマップでも、64-bitプロセッサは今年(2013年)プロトタイプで製品は2014年となっていた。また、ARM自身も、64-bit化は、まずARMコアをサーバーに使いたいという要請があったために早まったと説明していた。つまり、サーバーフォーカスだったのを、Appleはスマートフォンに持ち込んだ。

2011年の「ARMv8」発表から2013年にプロトタイプを計画

 実際には、他のモバイルAP(Application Processor)ベンダーも64-bit化を進めており、来年(2014年)には市場に登場し始める。しかし、今のところはiPhone 5sの独走だ。Android OS自体も、現段階では64-bitを製品として出せるフェイズにはない。

 32-bitだったARMアーキテクチャは、2011年秋に発表した「ARMv8」命令セットから64-bit命令を加えた。そして、ISA(Instruction Set Architecture:命令セットアーキテクチャ)の発表から1年後の昨年(2012年)には、ARM自身の設計するARMv8ベースのCPUマイクロアーキテクチャ「Cortex-A57」と「Cortex-A53」を発表している。しかし、ARMのアーキテクチャルライセンスを受けているベンダーは、Cortex-A53/57と平行して、各社独自のARMv8の実装CPUコアを開発していた。AppleのA7もその1つと見られる。

AppleがiPhone 5sを64-bit化する理由

 なぜ、AppleはiPhoneを64-bit化しようとしているのか。通常の場合、CPUのISAを32-bitから64-bitへと移行させる効用は、性能の向上より、メモリアドレススペースの拡張の方が大きい。64-bitの整数演算をサポートしても、通常のアプリケーションでは、性能はあまり向上しない。それに対して、32-bitのメモリアドレス空間の4GBの限界を超えて、4GBより大きなメモリをアドレスできる利点は大きい。

 しかし、iPhone 5sの場合、というか、ARMベースのモバイルアプリケーションプロセッサの場合は事情が異なる。それは、ARMの現在の複雑で古いISAが、さまざまな制約になっているからだ。そのため、ARMの場合は、64-bit化の大きな効用の1つは性能アップのヘッドルームを増やし、モダンなソフトウェア構造を取り入れ易くすることにある。

 ただし、中期的に見れば、タブレットから搭載メモリ量が4GBに到達し始めるため、64-bit化によるメモリアドレススペースの拡張は意味を持ち始める。LPDDR系DRAMチップ自体の大容量化もDDRを上回るペースで進んでいるため、ハードウェア実装上もメモリの大容量化は容易になる。また、ARMはバーチャルマシンのハードウェア支援も実装しているため、バーチャルマシンのためのメモリ空間という面でもアドレススペースの拡張は意味がある。

 さらに遠地点を見ると、新不揮発性メモリ時代に備えたメモリ空間の拡張という意味もある。現在はDRAMのワークメモリが不揮発性になり、ストレージとワークメモリが地続きになると、モバイルデバイスに搭載された数十GBあるいは数百GBのメモリを全てアドレスする必要が出る。その場合は、64-bitアーキテクチャが必須となる。

命令セットのリセットで性能アップを目指す

 ARMにとって新しいARMv8の意味は、ARMのISA(Instruction Set Architecture:命令セットアーキテクチャ)のリセットにある。ARMのオリジナルのARM ISAは、そもそもAcornの教育用コンピュータ向けに、Acornの専用OSのために設計された。そのため、一般的なRISC(Reduced Instruction Set Computer)系CPUのISAよりずっと複雑で特殊だ。ARMは、過去に新しい命令セット「Thumb2」系などを加えることで、ISAのリセットを図ってきたが、うまく浸透しなかった。そこで、ARMは64-bit化に当たっては、完全にISAをモダンなスタイルへと一新した。

 つまり、ARMv8は単なる命令の64-bit化ではなく、命令セットの刷新で、それによってハードウェアも大きく影響を受ける。具体的にはARMv8の64-bitステイト「AArch64」で、命令のフォーマットやレジスタファイル構成、例外処理モデルなどをガラリと変える。ARMの命令セットの特殊性だった、命令の条件実行や複合オペレーション命令、複雑な例外処理モード、バンクレジスタといった部分を変更する。言ってみれば、ARMのISAを普通のRISC風ISAへと変えようとしている。

 特に性能に与える影響が大きいのはレジスタファイルの拡張だ。ARMアーキテクチャでは、これまで汎用レジスタはr0-r15の16個だった。Intelアーキテクチャも16個だが、レジスタを多用するRISC風命令系のARMでは16個はかなりの制約だ。しかも、ARMでは、プログラムカウンタまで汎用レジスタ(r15)を使うので、実質的に使うことができるレジスタ数はさらに少ない。完全に自由に使えるのは13個で、しかも、オリジナルのARMでは、例外モードが多く、例外モードによって汎用レジスタをバンク切り替えする仕様になっていた。

ARMのレジスタセット

 しかし、ARMv8のAArch64では、レジスタは整数汎用レジスタが31本+ゼロレジスタ、メディアレジスタが32本に増える。バンキングもない。使えるレジスタスペースが広がるAArch64は、コンパイラーフレンドリーで、これまでのようなレジスタ数の制約によるムダな命令などがなくなり、それだけでも高速化が期待できる。ただし、64-bit化によるコードサイズの増大によりフェッチ効率の低下などのマイナスはある。もっとも、AArch64の64-bit命令も、命令長は32-bitに抑えられているのでコードが倍になるわけではない。

ARMv8のAArch64レジスタ

 また、ARMv8の実装では、実際にはCPUは2系列の命令デコーダを持つようになると見られている。命令デコーダ的にも、64-bit命令の方が、よりシンプルで扱い易いと見られる。64-bitに最適化すれば、64-bitモードの方が速くなるCPUマイクロアーキテクチャにすることは可能だと見られている。

32-bitとの互換性を取るARMv8アーキテクチャ

 ARMv8では、互換性のために従来の命令セット互換の32-bitステイト「AArch32」も用意した。AArch32では、従来のARMの命令セットはThumb2も含めてサポートされる。そのため、ARMv8のCPUでも、従来の32-bitアプリケーションは、そのまま64-bit OS上で走らせることができる。

32bitステイト「AArch32」で互換性を維持

 64-bitステイトAArch64と32-bitのAArch32の間は、ステイト切り替え式で64-bitと32-bitを併存させる。両ステイト間の遷移は例外処理で、例外レベルで見ると下のスライドのようになる。新しい実行モデルでは、ARMのセキュリティソリューションである「TrustZone」のソフトウェア階層とOSの間にHypervisorが配置される。

ARMv8の例外モデル
ARMv8-Aのプロセッサモード

 こうした拡張によって、セキュアバーチャルマシンによるセキュリティもARMv8でより推進される。セキュリティは、個人情報を持ち歩くモバイル機器にとって非常に重要なポイントだ。特に、iPhone 5sでは、生体認証データのような、外部に漏れたら致命的なデータを保持するようになるため、セキュリティの強化が必要となる。

 ARMv8では、48-bitアドレス(256TB)までのバーチャルメモリ空間をサポート(Cortex-A57の場合は物理メモリアドレス空間は44-bit)できる。大容量メモリが必須のサーバーで、ARMv8が必要とされている最大の理由はここにある。現状では、iPhoneもiPadも最大でメモリは1GBなので、今世代で搭載量が増えても2GB。32-bitの制約である4GBスペースが問題になるには、まだ1~2世代早い。

 しかし、モバイル用のLPDDR系メモリは、モバイルデバイスのメモリ搭載量のニーズが急増していることで、大容量化に拍車がかかっている。4G-bit品へと移行が進み、さらに8G-bit品へと移行すると、タブレットに搭載できる4個のDRAMチップで4GBに到達する。そのため、それほど遠くない時点で、iOSデバイスに搭載される物理メモリも4GBの垣根を越えるだろう。メモリ空間の拡張は、バーチャルマシンでのメモリ空間のマッピングも容易にする。もっとも、実際には、Cortex-A15でも「Large Physical Address Extensions(LPAE)」でも40-bitまでの物理アドレスをサポートする。

将来の不揮発性メモリ時代への布石にもなる

 そう遠くない時点で、DRAMのメモリセルの微細化は行き詰まり、続いて、3D化するNANDも容量増大の限界に達する。より正確には、コストを上げずに容量を増大させることが難しくなる。そのため、次世代の不揮発性メモリが、DRAMやNANDに置き換わると見られている。

 そうなった時、大容量かつ高速な新不揮発性メモリ技術によって、プログラムを実行するためのワークメモリと、コードやデータのストレージメモリの両方を、単一のメモリで兼ねさせる可能性が出てくる。今のiPhoneやiPadでは、メインメモリのDRAMとストレージのNANDに分かれているが、将来のモバイルシステムでは、両者が統合されても不思議はない。

 メモリとストレージの区別がなくなった場合、プロセッサ側は、全ての搭載メモリにアドレスできるようにする必要が出てくる。例えば、数百GBあるいは数TBといったメモリにリニアにアクセスすることが望ましく、物理アドレス空間の拡張が必須になる。その時点で、PC型のシステムが、まだワークメモリとストレージを分離していたなら、モバイルシステムの方が、より広い物理メモリへのアドレス能力が必要になるだろう。また、これは、モバイル機器の旧来の実行スタイルである、NORフラッシュ時代の「XIP(eXecute In Place)」モデルへの回帰でもある。

ユニバーサルメモリの可能性(PDF版はこちら)

 こうして見ると、Appleが64-bit化する理由も見えてくる。AppleがCPUコアを内製した理由も、64-bit化に当たってカスタムCPUをいち早く欲しかったと考えると、辻褄が合いそうだ。

(後藤 弘茂 (Hiroshige Goto)E-mail