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

ARMが10nm世代の新CPUコア「Cortex-A73」と新GPUアーキテクチャ「Bifrost」を発表

2017年の次世代CPUとGPUをCOMPUTEXで発表

 ARMは10nmプロセスをターゲットとした次世代CPUコア「Cortex-A73」、新GPUアーキテクチャ「Bifrost(バイフロスト)」ベースのGPUコア「Mali-G71」を発表、Mali-G71が昨年(2015年)発表した内部バス「CoreLink CCI-550」の双方向キャッシュコヒーレンシに対応することを発表した。

 さらに、big.LITTLEをサポートするLinuxのスケジューラ基盤として「Energy Aware Scheduling」が導入され、発展して行くことを示した。また、これらの技術の組み合わせにより、2017年にはプレミアムスマートフォンのCPU性能が今年(2016年)の1.3倍に、GPUが1.5倍に伸び、VR(Virtual Reality)にも対応できるデバイスが浸透するという見通しも示した。

Cortex-A73
PDF版はこちら
10nmプロセス世代のプレミアムスマートフォンの性能
Cortex-A73とMali-G71のパートナーの一部

 ARMは、台湾の台北で開催されているコンピュータトレードショウ「COMPUTEX TAIPEI」に合わせてプレスカンファレンスを開催。そこで、一連の新IPを発表した。

 Cortex-A73は、コードネーム「Artemis(アルテミス)」と呼ばれていたCPUコアIPだ。ARMの分類では、最上位の性能のプレミアムCPUコアで、big.LITTLE構成のbigコアになる。位置付けとしては、モバイル向けとしては、現在のプレミアムCPUコア「Cortex-A72」の後継となる。16nmのCortex-A72に対して、10nmのCortex-A73は、30%高い性能(モバイル電力枠の場合)、30%高い電力効率、0.65平方mmと極めて小さなコアサイズを実現する。

ARMのCPUラインナップ
PDF版はこちら

 こう書くと、単純に性能と効率が上がったように見えるが、今回は少し話がややこしい。Cortex-A72が相対的に性能を重視した設計であったのに対して、Cortex-A73は相対的に電力効率を重視しているからだ。A72とA73は、位置付けが若干異なるCPUコアとなっている。

2命令デコードパイプラインとなったCortex-A73

 Cortex-A73の最大のポイントは、2命令デコードのスーパースカラパイプラインであること。現在のハイエンドCPUコア「Cortex-A72」が、3命令デコードであるのに対して、命令デコード帯域は3分の2に減っている。ARMのCPUコアでは、Cortex-A9が2命令デコードのスーパースカラだった。つまり、Cortex-A73は、Cortex-A72より狭い命令デコード帯域で、アーキテクチャ的にはCortex-A9相当となる。

ARMのCortex-Aファミリのアーキテクチャと変遷
PDF版はこちら
Nandan Nayampally氏(Vice President of Marketing and Strategy)

 より多くの命令を同時にデコードできれば、より多くの命令を並列実行できる可能性がある。命令デコード数は、クロック当たりの性能に大きく影響する。通常は、高い性能のCPUは、より多くの命令をデコードできるアーキテクチャであるのが普通だ。ところが、ARMはCortex-A73では命令デコード帯域を逆に狭くした。

 これは、スマートフォンへの搭載に最適化して、持続パフォーマンスを高くできるように設計したからだ。結果としてCortex-A73は、ARMのプレミアムCPUコアとしてはもっともダイエリアが小さく、パフォーマンス効率が高いCPUとなった。さらにマイクロアーキテクチャをリファインすることで、クロック当たりの性能でも、3命令デコードのCortex-A72に対して遜色がないものとした。

 ARMのNandan Nayampally氏は(Vice President of Marketing and Strategy)下のスライドを示して、Cortex-A73の高パフォーマンスを説明した。スライドは、ARMの3世代のプレミアムCPUコアの持続(Sustain)パフォーマンスを、スマートフォンの電力枠で比較したものだ。Cortex-A73、A72、A57それぞれ異なるプロセス技術となっている。この比較では、A73がCortex-A72より30%、A57より110%も性能が高くなる。

750mWの電力枠での持続パフォーマンスを比較
PDF版はこちら

750mW/コアで最大の性能を発揮できるCPUコア設計

 ポイントは、これが、スマートフォンCPUコアの電力枠の目安である、コアあたり750mWでの、持続性能の比較である点だ。750mW枠では、10nmのCortex-A73は2.8GHzで、ほぼ持続して動作が可能であるため、フルパフォーマンスを出すことができる。ピーク動作で電力枠であるため、サステインとの性能差はほとんどない。

 それに対して、16nmのCortex-A72は、2.5GHz動作でのピーク性能は10nmのA73とそれほど変わらない。ところが、16nm A72は、ピーク性能では750mWの電力枠の中で持続的に動作できない。そのため、時間とともに性能が落ちてしまう。結果として、持続パフォーマンスではA72に対してA73の方が30%高くなる。

 これが、20nmのCortex-A57となると、プレーナトランジスタであるため、電力消費がさらに多く、差が大きくなる。20nm A57は1.9GHzで動作できるが、持続パフォーマンスはさらに落ちる。A73の方が2倍以上も高い性能となる。

 まとめると、スマートフォン向けという電力の制約の中では、Cortex-A73が実効性能では最高のCPUコアとなる。

 もちろんCPUコアの電力枠が750mWではなく、サーバー向けの2Wなら話は違ってくる。同じ10nmで、より性能を追求した物理設計にすれば、Cortex-A72は高い性能を発揮するだろう。そのため、サーバー向けや電力の制約の少ない分野ではCortex-A72が、スマートフォンなどのモバイル分野ではCortex-A73と棲み分けると見られる。

緑が性能、紫が同じプロセス時の電力、水色が新コアが新プロセスを使う場合の電力

マイクロアーキテクチャを最適化

 Cortex-A73では、このようにスマートフォンに最適化するため、マイクロアーキテクチャを電力効率重視へと再転換、また、モバイルワークロードに最適化した。分岐予測機構をより効率的に改良し、プリフェッチ、メモリパス、キャッシュなどを改良した。

 フロントエンドでは、L1命令キャッシュを拡張、64KB(4-way、64Bキャッシュライン)の構成を取れるようにした。また、RAM自体も電力に最適化した。パイプラインバブルを除去して高いIPC(Instruction-per-Clock)を実現できるようにフォーカス。分岐予測では、Branch Target Address Cache(BTAC)を大きくした(MicroBTACは64エントリのまま)。

PDF版はこちら
PDF版はこちら

 命令デコードは2命令/サイクルに減らし、その代わり、Micro-OPsへとスプリットする命令を減らした。命令発行とリネーミングロジックを改良、32-bit(AArch32)と64-bit(AArch64)の両モードのリソースの共有(ARMでは両命令セットが大きく異なる)を増やして効率をアップさせた。

PDF版はこちら
PDF版はこちら

 NEON/FPUエンジンは、データパスを拡張し、実行レイテンシも一部短縮した。L1データキャッシュも従来の2倍の64KB構成が可能で、データプリフェッチはアルゴリズムがよりスマートになった。また、データキャッシュは仮想アドレスのままキャッシュアクセスができるVIPT(Virtually Indexed, Physically Tagged)となり、アクセスが高速化された。

 メモリアクセスの「Translation Lookaside Buffer (TLB)」も強化され、メモリのページウォーカーも2重になった。複数CPUコアで共有するL2キャッシュは、並列アクセスの性能ロスをなくし、マルチコア性能をアップさせた。

PDF版はこちら
PDF版はこちら

 こうした細かな改良を重ねて、ARMはCortex-A73を2命令デコードながら高い性能を実現できるコアとした。ARMの最初の2命令デコードアウトオブオーダ実行コアだったCortex-A9は、中途半端な部分が目立つコアだったが、Cortex-A73は格段に成熟している。

Cortex-A72より性能が上がる部分も多い
PDF版はこちら

0.65平方mmと過去もっとも小さなプレミアムCPUコア

 2命令デコードのパイプラインとしたことで、Cortex-A73ではチップ上のCPUコアの占める面積であるダイエリアが小さくなった。ARMによると、10nmプロセスのCortex-A73のコア単体のダイエリアは、0.65平方mm以下という。16nmプロセスのCortex-A72と比較するとコアエリアは46%減、20nmのCortex-A57と比較すると70%減とされている。

ダイエリアが大幅に縮小するCortex-A73
PDF版はこちら

 逆算すると、16nm A72のダイは1.2平方mm、20nm A57は2.2平方mmとなる。今までに発表されている資料では、20nmのA57は1.93平方mmとなっていたので、今回の数字とそれほど大きくは違わない。20nm→16nmでは、プロセスのバックエンドのスペックはかなり近いためA57からA72も、設計によってダイを縮小している部分が大きい。

 Cortex-A73のコアの0.65平方mmという数字は、従来のARMのプレミアムCPUコアのサイズではない。コアのサイズが明瞭に分かれていた28nmプロセスでは、プレミアムのCortex-A15が2.x平方mmのダイエリア、ミッドレンジのCortex-A9が1.x平方mmのダイエリア、高効率コアのCortex-A7が0.45平方mmのダイエリアだった。10nm世代では、プレミアムコアのCortex-A73が、高効率コアのダイエリアのレンジとなる。

 Cortex-A73の設計は、スマートフォンでは、CPUコアをそれだけ小さく効率的にして欲しいという圧力が強いことを示している。ARMのCPU IPを使うスマートフォンのCPUコアは、big.LITTLE構成などで6~8コアが一般的となっている。さらに、スマートフォンには高いグラフィックス性能が求められるようになり、モバイルSoCの中でGPUコアが占める割合が増えている。そのため、CPUコアは、ますます小さく省電力であることが求められるようになっている。

Cortex-A53のオクタコアと同等のダイエリアで大幅な性能アップが可能となるCortex-A73x2+Cortex-A53x4のbig.LITTLE構成
PDF版はこちら
Cortex-A72と比べると大幅な性能効率のアップ
PDF版はこちら

Mali-G71でアーキテクチャを大変革

 ARMは、GPUアーキテクチャをこれまでの「Midgard(ミッドガルド)」から「Bifrost(バイフロスト)」へと変えた。今回のARMのGPU発表で、もっとも重要な点は、ARMがGPUのキモと言うべき実行モデルを変更したことだ。

ARM GPUアーキテクチャの変遷
PDF版はこちら
ARM GPUアーキテクチャの変遷
PDF版はこちら
ARMの新GPUコアMali-G71

 GPUの実行モデルは大きく分けて2種類がある。1つは「Array of Structures (AOS)」や「パックド(Packed)」、「SIMD(Single Instruction, Multiple Data)」と呼ばれる方式。もう1つは「Structure of Arrays (SOA)」や「スカラ(Scalar)」、「SIMT(Single Instruction, Multiple Thread)」と呼ばれる方式だ。

 AOS/パックド/SIMD型ではデータを一定の粒度でパックされた形で処理する。それに対して、SOA/スカラ/SIMT型ではあたかもシリアルな処理を複数束ねたような形で処理する。伝統的なGPUは、AOS/パックド型モデルだったが、NVIDIAがGeForce 8800(G80)でSOA/スカラ型モデルへと切り替えたのを皮切りに、次第にSOA/スカラ型へと変えて来た。その中で、ARM GPUだけは、AOS/パックド型のモデルを維持してきたが、BifrostアーキテクチャのMali-G71からいよいよSOA/スカラ型モデルとなった。

従来のARM GPUコアのSIMD型
PDF版はこちら
今回から導入したスカラ型
PDF版はこちら
Bifrostではプレディケーションによって条件分岐を処理
PDF版はこちら
16個の演算ユニットをAOSとSOAのそれぞれの実行モデルで動作させた場合の例
PDF版はこちら

 AOS/パックド型モデルと、SOA/スカラ型モデルにはそれぞれ利点と弱点がある。おおまかに言えば、データが3~4個など決まった数のパックになっている場合は、AOS/パックド型が効率がいい。しかし、データタイプが多様な場合は、SOA/スカラ型の方が柔軟に対応しやすい。また、SOA/スカラ型の方がコンパイラによる最適化が容易で、実行効率を上げやすい。画面解像度が高いとSOA/スカラの方が効率がよくなる傾向がある。

 ARMは、Bifrostへ切り替えることで、GPUコアのエネルギー効率を引き上げた。現世代のMali-T880と比べてMali-G71の性能は16コア構成で1.5倍、電力効率は20%アップし、スケーラビリティは32コア(128 32-bitユニット)となった。

PDF版はこちら
PDF版はこちら
性能がスケールアップするMali-G71
PDF版はこちら
Mali-G71では32コア構成までが可能
PDF版はこちら

モバイルに最適化した演算コア

 ARMのBifrostアーキテクチャは、同じSOA/スカラ型モデルでも、NVIDIAやAMD、PowerVRのImagination Technologiesとは実行ユニットの構成などが大きく異なる。多くのベンダーは、演算ユニットを16~32ユニットのワイドな構成にしている。それに対して、ARMのBifrostは4ユニットの狭い構成としている。演算ユニットの構成は、IntelのGPUコアとよく似ている。

4-wayのFMAとADDで構成されたALU
PDF版はこちら
PDF版はこちら
Bifrostコアの構造
PDF版はこちら

 各演算ユニットも、SIMD(Single Instruction, Multiple Data)を継承している点がBifrostの特徴だ。32-bitの演算パイプは、FP32(32-bit)単精度浮動小数点演算とint32(32-bit整数演算)が実行できるだけでなく、FP16(16-bit浮動小数点)とint16(16-bit整数)はそれぞれ2-way、int8(8-bit整数)は4-wayで実行できる。

Mali-G71のシェーダALU
PDF版はこちら

 こうした小さなデータタイプへの対応は、モバイルではGPUコアにさまざまなデータ処理を行なわせる可能性があるためだ。また、Bifrostアーキテクチャではテンポラリレジスタを備えて演算途中の値をレジスタをバイパスさせることで、性能と電力効率を上げている。レンダリング方式はタイリングのままとなっている。

PDF版はこちら
テンポラリレジスタを使うことで汎用レジスタアクセスを軽減
PDF版はこちら
Bifrostアーキテクチャが目指すのはモバイルでの高度なVR(Virtual Reality)
PDF版はこちら

モバイルの原点に立ち戻ったARMの発表

 今回のCOMPUTEXでのARMの発表は、モバイルの原点に立ち戻ったかのような内容となった。ここ数年は、モバイルから広げて、サーバーのような高パフォーマンス帯や、より小さなIoT(The Internet of Things)へとフォーカスした発表が目立つARMだった。しかし、今回は、いかにモバイルの性能効率を引き上げるかにフォーカスして説明を行なっており、もう一度モバイルの地盤を固め直そうとしているように見える。

PDF版はこちら
ARMのRene Haas氏(Executive Vice President and Chief Commercial Officer)

 その背景には、止まることを知らないモバイル市場の発展がある。ARMのRene Haas氏(Executive Vice President and Chief Commercial Officer)は、30億のARMベースのスマートフォンが使われており、今年(2016年)中にさらに15億のスマートフォンが売られるだろうと説明。スマートフォンは何にでも使える「スイスアーミーナイフ」のような、人々の生活にとって最も重要なコンピューティングデバイスになったと強調した。さらに、スマートフォンが今後のコンシューマIoTや機械学習、VR(Virtual Reality)などの重要なポータルになると説明。そうした要求に応えられるモバイルSoCのIPが必要になるとした。

 Haas氏はアプリケーション分野毎に必要とされるパフォーマンスレンジを提示。120FPSの高フレームレートと4Kの高解像度、グラフィックス表示までのレイテンシの短縮、CPUとGPUの密接な連携とリアルタイム応答性が求められるとした。ARMは、こうしたアプリケーションニーズに応えるために、スマートフォンに最適化したパフォーマンス効率の高いIPを提供しようとしている。

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