オススメ機能
Twitter
お気に入り
記事履歴
ランキング
4Gamer.net
TOP
PC
Xbox
PS4
PSV
Switch
3DS
スマホ
女性向け
VR
ハードウェア
ハードウェア
レビュー
テストレポート
インタビュー
ムービー
ドライバ
ベンチマークレギュレーション
AC
アナログ
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
QRコードでLINEの4Gamer
アカウントを友達登録すると
月〜金の週5回,21時に厳選
ニュースをお届けします!
※購読にはLINEアプリが必要です
2017年に登場するARMの新CPUコア「Cortex-A73」と新GPUコア「Mali-G71」は,どんな特徴を備えているのか
特集記事一覧
注目のレビュー
注目のムービー
印刷2016/08/13 00:00

ニュース

2017年に登場するARMの新CPUコア「Cortex-A73」と新GPUコア「Mali-G71」は,どんな特徴を備えているのか

 スマートフォンが,今や主要なゲームプラットフォームの1つであることに異論がある人はいないだろう。そんなスマートフォンの中核となっているのが,英国企業であるARMが開発したCPUコアやGPUコアと,それを採用するSoC(System-on-a-Chip)だ。

 日本で販売されているスマートフォンで広く使われているSoCには,ハイエンド系がQualcommのSnapdragonシリーズや,Samsung Electronics(以下,Samsung)のExynosシリーズ(関連記事),ミドルクラスではMediaTekのHelioシリーズやMTxxxxシリーズといったものがある。
 そしてこれらのうち,SamsungやMediaTekのSoCは,ARM製のCPUコアとGPUコアを組み合わせた製品が主流だ。Qualcomm製SoCでも,Snapdragon 810」や「Snapdragon 617」といった製品では,ARMのCPUコアに自社製GPUコア(Adreno)を組み合わせている。

 ARMは,CPUコアだけでなくGPUコアにも力を入れており,これらの処理性能をさらに上げようとしているのだが,性能向上を制約する問題として必ず出てくるのが,消費電力や発熱,そしてバッテリー駆動時間だ。
 図1は,2010〜2016年のハイエンドスマートフォンを比較した,ARMによるスライドを引用したものである。より薄く,より高性能を追求し続けているのが分かるだろう。

図1:2010年から2016年にかけて登場したスマートフォンの,厚さとCPU性能を比較したスライド。ボディが厚ければ,放熱の問題が減るのではなく,スマートフォンの表面温度を低く抑える工夫を盛り込みやすい。薄型化でそれが困難になると考えればいい
Cortex-A

 ところが,筐体が薄くなるというのは同時に,表面温度を低く抑える工夫,たとえばヒートパイプのような仕組みを盛り込むことが難しくなるということでもある。そうなると,スマートフォンが熱くなりすぎて素手で持てなくなくなるのを避けるために,動作クロックを下げて発熱を減らすしかない。
 ARMが示したスライド(図2)では,性能と消費電力や発熱は,トレードオフの関係にあると示しているが,薄型化によって表面温度を抑える工夫がしにくくなるということは,温度を抑えるために処理性能が制約されてしまうことにもつながるわけだ。

図2:CPUコアの動作クロックとSoCの発熱における関係を示したスライド。実際のスマートフォンで実測した結果だそうで,ボディが冷えているときには1550MHz駆動が可能だが,本体の温度が上がると周波数を1229MHzあたりまで下げて発熱を減らさないといけなくなる。
Cortex-A

 こうした問題に対する解決策としてARMが2016年6月に発表したのが,新型CPUコアの「Cortex-A73」と,新型GPUコアである「Mali-G71」のセットである(関連記事)。
 本稿では,これら新型CPUコアとGPUコアの特徴について,解説してみたい。


2015年のCPUコアと比べて,10nmプロセスで2倍の性能向上を謳うCortex-A73


 まずはCortex-A73から説明していこう。
 ARMはCortex-A73の特徴を,従来のCPUコアである「Cortex-A72」と比較して,処理性能と電力効率が3割向上したことや,ダイ全体のうち,CPUコアが占める面積である「エリアサイズ」の縮小を実現したことであるとアピールしている(図3)。

図3:Cortex-A73の特徴を示したスライド。性能だけでなく,SoCの小型化につながるエリアサイズの縮小も重要だ。とくに,スマートフォンの基板は小型化と薄型化が求められているので,小さいSoCのほうが採用しやすい
Cortex-A

 ARMは,同一消費電力に設定したCPUコアによるベンチマークテストの結果を示し,Cortex-A73は2015年のハイエンドCPUコアであった「Cortex-A57」に対して2.1倍,Cortex-A72との比較では1.3倍も高性能であるという(図4)。

図4:同一消費電力におけるCortex-A73とCortex-A72,およびCortex-A57の性能を比較したグラフ。ただし,Cortex-A73は,将来の10nm FinFETプロセスを前提としたものであり,Cortex-A72と同じ現在の16nm FinFETプロセスで製造した場合,この差はもう少し縮まるはずだ
Cortex-A

 図4を見ると,Cortex-A73の動作クロックが2.8GHzなのに対して,Cortex-A72は2.5GHz,Cortex-A57は1.9GHzとなっているので,クロック自体も上がっている。ただ,ARMが主張する性能向上の度合いは,動作クロックの向上分よりも大きいので,クロック以外での性能向上が大きいことになる。この性能向上を,ARMはどうやって実現したのだろうか。

 まず,要である命令パイプラインは,「Cortex-A15」からCortex-A72まで利用してきた「3命令デコード8命令同時発行」のアウトオブオーダー構造(関連記事)を捨て,2命令デコードとしたことがポイントだ(図5)。
 同時にデコードできる命令数が減るというのは,普通に考えると性能が下がりそうに思える。だがARMによれば,Cortex-A73の性能は実際に向上しており,同一のプロセスで製造したCortex-A73とCortex-A72を同一の動作クロックで動作させて比較すると,Cortex-A73では5〜15%ほどの性能改善が見られると,ARMは主張している。

図5:Cortex-A73のブロック図と,改良された命令デコード周りの特徴。なお,「Instruction-fusion」は,Intel CPUにおける複数のx86命令を1つにまとめて処理する機能「Macro Fusion」と類似の機能だ
Cortex-A

 なぜこのような逆転現象が起きているのか。その理由の1つに,Cortex-A15〜A72までのCPUコアは,モバイル用途だけでなく,サーバー用途のようなヘビーなワークロードでの利用を念頭に置いた,性能重視のCPUコアであるという事情があった。
 ここでいうヘビーなワークロードとは,大量の処理やアプリケーションを同時に実行するデータ処理量が多い用途を示す。ところが,モバイル向けCPUコアでは,このような使い方はあまりされない。その結果,ヘビーなワークロードを念頭に置いた3命令デコードのアウトオブオーダー構成は,モバイル向けではフルに活用されているとは言いがたい状況にある。
 これに対してCortex-A73は,サーバー用途でのヘビーなワークロードに向けた仕様をばっさり切り落とし,モバイル向けアプリケーションの性能に最適化した。2命令のアウトオブオーダーでも十分性能が出ているというのが,ARMの主張であるわけだ。

 モバイル向けへの最適化には,消費電力あたりの性能改善と,性能そのものの向上という2通りの手法を用いているという。
 たとえば,消費電力あたりの性能改善では,命令のフェッチに「スロット」という概念を導入した点が挙げられる。Cortex-A73は8つのスロットを持ち,それぞれのスロットが独立して,ARM命令の塊を管理できる仕組みを備えるという。小さな命令ループの管理であれば,1つのスロットがまとめて処理できるので,命令ループの変換に便利であり,結果として命令フェッチの省電力化につながるということだ(図6)。

図6:性能向上に関わる改良点を示したスライド。スロットの導入によって,命令フェッチの速度を改善し,ここでの遅延を減らしたことも,IPC改善に効果があったそうだ
Cortex-A

 また性能向上に関しては,連続して命令の解釈と実行を行うときに,この流れを途切れさせるような処理(※バブルと呼ばれる)を排除するための改良を導入している。これは,クロックあたりの命令実行数(Instructions Per Clock,以下 IPC)を上げるというよりも,IPCを下げないことに注目した改良といえよう。

 この「IPCを下げない」配慮のために欠かせないのが,分岐予測である(図7)。Cortex-A73では,分岐命令の移動先アドレスを保存しておく「分岐先アドレスキャッシュ」(Branch Target Address Cache,BTAC)の容量を拡大している。それに加えて,直近の分岐を高速に呼び出す機能「Micro-BTAC」を新たに追加して,分岐予測の精度を上げた。
 さらに,従来はメモリに保存していた「戻り先アドレス格納スタック」(Return Stack)の専用エリアをCPUコア内に設けたり,性能面では有利だが消費電力の多かった動的な分岐予測機構(Dynamic Prediction)に加えて,性能面ではやや劣るが消費電力面で有利な静的な分岐予測機構(Static Prediction)を追加したりすることで,分岐予測の精度を上げるとともに消費電力低下を狙っているとのことだ。

図7:分岐予測関連の改良点。BTACは,分岐命令が入ったときに,その移動先アドレスを保持しておくもの。単純なループだと,同じアドレスに戻ることが非常に多いので,このアドレスを高速に呼び出せるMicro-BTACに保持しておけば,ループ制御の時間を減らせるという
Cortex-A

 そのほかに,性能向上を実現するために行った実行ユニット側の改良としては,浮動小数点演算ユニット(FPU)とSIMD演算機能「NEON」の性能改善が挙げられていた(図8)。「NEONやFPU命令のデータアクセスを最適化した」とスライドにはあるが,この措置は一般的に最大動作クロックの引き上げに効果があるため,動作クロックの向上につながるのではないだろうか。

図8:FPUおよびNEONや,整数演算ユニットの改良点
Cortex-A

 また,ロード/ストア(Load/Store)ユニットを2基にして,アウトオブオーダー実行できるように改良したことや(図9),一種のアドレス変換キャッシュである「Translation Lookaside Buffer」(TLB)の効率改善,L2キャッシュの内部構造変更(図10)といった改良によって,メモリアクセス効率を改善しているとのことだ。

Cortex-A
図9:ロード/ストアユニットやデータキャッシュの性能向上,L1およびL2の自動プリフェッチなどの改良が施された
Cortex-A
図10:TLBの効率改善やL2キャッシュ内部構造を最適化したことにより,メモリアクセス効率を改善した

 ちなみにスライドはないのだが,実行ユニットそのものは7つになっている。内訳は以下のとおり。

  • ALU(算術論理演算ユニット)×2
  • ロード/ストア×2
  • NEON/FPU×2
  • 分岐

 Cortex-A72には,処理が複数サイクルにまたがる命令を実行する「Multi Cycle Multiply」というユニットがあったのだが,Cortex-A73では,これがALUに取り込まれたらしい。
 いずれにせよ,「Cortex-A73は,2命令デコードのアウトオブオーダー構成になった」とARMは主張しているものの,実行ユニット自体は,Cortex-A72とそう大きくは違わないわけだ。


モバイル向けに不要な仕様を省いて性能向上を実現


 それでは,Cortex-A73はどうやって消費電力を落としたのか。答えは明確で,モバイルに不要なものを徹底的に取り去ったからである。
 たとえば,Cortex-A72のL1 キャッシュが備えていたメモリエラー回避機能である「ECC」(Error Correcting Code)が,Cortex-A73にはない。サーバー用途の場合,放射線などの影響でデータ化けを起こした場合,それを検出して修正するためにECCのサポートは絶対に必要だ。しかし,一般消費者向けのモバイル端末であれば,「おかしくなったら再起動」が許されるので,ECCは必須とはいえない。省略することで消費電力とエリアサイズを節約できるのならば,省略してしまおうというわけだ。
 そのほかにも,「サーバー用途には必須だが,モバイルにはいらない」機能は,全部省いたとのこと。こうした設計によって,Cortex-A73はサーバー用途には適さない,純粋なモバイル向けのCPUコアとなったわけである。

 こうした最適化の結果として,先述したとおり,同一の製造プロセスと同一の動作クロックという条件では,Cortex-A73はCortex-A72に対して演算性能が5〜15%程度の改善を果たした(図11)。

図11:Cortex-A73とCortex-A72の性能比較グラフ。一般的なアプリケーションの例が,Android用のベンチマークテストアプリである「BBench」というのは異論を呼びそうだが,あくまでも一例ということで
Cortex-A

 一方,基本性能が上がったことにより,同等の処理性能であれば,消費電力を平均20%ほど削減できたという(図12)。

図12:Cortex-A73とCortex-A72の消費電力を比較したグラフ。整数演算,浮動小数点演算,L2キャッシュとメインメモリ間のデータコピー性能を比較している。しかし,実際にはCPUコア以外の部分や製造プロセスによっても変わるので,これだけを根拠に「20%削減」というのは語弊がある
Cortex-A

 面白いのは,性能向上による恩恵は,Cortex-A73の主たるターゲットとなるハイエンドスマートフォンだけに限らないと,ARMが主張していることだ。
 ハイエンドスマートフォンは大抵の場合,高性能CPUコアと低消費電力CPUコアを組み合わせる「big.LITTLE」処理を採用するSoCを搭載している。そうしたSoCは,big側にCortex-A57やCortex-A72を,LITTLE側にCortex-A53を採用する構成が一般的だ。一方,ミドルクラスのスマートフォンで使われるSoCでは,bigコアを省いてCortex-A53を8基集積するようなSoCが利用されている。
 ところがARMの試算では,Cortex-A73×2にCortex-A53×4を組み合わせたbig.LITTLE構成にすると,Cortex-A53×8とほぼ同等のエリアサイズで平均30%の性能向上を,シングルスレッド性能では90%の向上が可能であるというのだ(図13)。こうした理由によって,ARMでは,ハイエンド向けSoCだけでなく,ミドルクラスSoCにもCortex-A73が採用されるだろうと見込んでいる。

図13:Cortex-A53×8(左)と,Cortex-A73×2にCortex-A53×4を組み合わせた場合(右)のエリアサイズ(footprint)や処理性能を比較したグラフ。同等のエリアサイズで高い性能を実現できると主張しているわけだが,消費電力面ではちょっと微妙な感じもする
Cortex-A

 ところで,先に掲載した図4では,Cortex-A73が10nmプロセスを前提にしているように見えるが,実際は10nmプロセスでしか製造できないわけではない。2016年6月7日には,TSMCの16FF+プロセスに対応するPOP IP(Processor Optimization Package IP)をARMが提供すると発表しているように(関連リンク,16nmプロセスで製造することも可能である。

 現時点では,さまざまなSoCメーカーがCortex-A73を採用したSoCの設計と製造に取り組んでいる段階だ。これを搭載したスマートフォンが年内に出る可能性は,限りなく低いだろう。しかし2017年には,搭載製品が市場に登場してくると思われる。ただ,Cortex-A73の本命は,2017年に量産が始まるTSMCの10FFプロセスであり,これを使って製造したSoCを搭載するスマートフォンが登場するのは,2017年末以降になるだろう。日本国内では2018年の春〜夏商戦モデルあたりといったところだろうか。


Mali-G71のターゲットはVRコンテンツを実用的に動かすこと


 続いては,ARMの新しいGPUコアであるMali-G71の特徴を見ていこう。
 Mali-G71の狙いは明確で,VR(仮想現実)コンテンツを実用的に動かせるだけの描画性能を実現することである(図14)。

図14:Mali-G71の設計目標を示したスライド。表示遅延4ms以内で4x MSAAをかけながら,4K解像度/120Hzの表示を実現することを目標としている
Cortex-A

 もちろん,従来のARM製GPUコアであるMali-Tシリーズで,VRコンテンツが利用できないわけではない。たとえば,「Mali-T760 MP8」を採用する「Galaxy S6 edge」(搭載SoCはExynos 7420)でも,Samsung製の簡易VR HMD「Gear VR」は利用できる。
 ただGear VRは,4Gamerで掲載したレビュー記事にもあるとおり,あくまでも手軽なVRコンテンツを扱える程度のものだ。今後,描画品質をより高めてゆこうとすると,性能面で不満が出てくる可能性は高い(図15)。VR以外のゲームグラフィックスも同様で,アプリケーションが要求する描画性能は,どんどん上がっている。

図15:モバイル向けの3Dグラフィックスが,2010年から2016年までの間にどれほど進化したのかを示したスライド。これはVRではなく,スマートフォンでの3Dグラフィックスを想定したものだ
Cortex-A

 ところが既存のMali-Tシリーズは,そろそろ拡張の上限に達しつつある。たとえば,最上位モデルである「Mali-T880」の場合,シェーダコアを最大16基集積可能(※Mali-T880 MP12では12基集積)といった具合で,この先にさらに性能を上げてゆくのは難しい。加えていえば,描画以外にGPGPU的な用途で使われるケースも増えてきた。たとえば,最近では機械学習における学習結果の実行といった用途だ。

 こうした状況に対応すべく,Mali-Tシリーズよりも高い性能と拡張性を持つGPUコアとしてARMが開発したのがMali-Gシリーズというわけだ。そしてMali-G71は,新しいBifrostアーキテクチャを採用した最初の製品となる(図16)。

図16:Mali-G71は,Bifrostアーキテクチャを採用する最初のGPUコアとなる
Cortex-A

 余談だが,「Bifrost」(発音はビーフロストゥが一番近いと思う)とは,北欧神話に出てくる,地上とアースガルドを結ぶ虹の橋のこと。Mali-Tシリーズは「Midgard」(北欧神話で人間が住む場所),初代のMaliは「Utgard」(ロキの治めていた巨人の国にある都市名)であり,今回も引き続き北欧神話由来の命名となる。

 さて,そのMali-G71のスペックや性能をMali-T880と比較したスライドが図17である。シェーダコアを最大32基に倍増し,性能対消費電力比,性能対エリアサイズ比も改善。メモリ帯域幅も2割ほど向上したとARMでは主張しているわけだ。

図17:Mali-G71とMali-T880のスペックや性能を比較したスライド
Cortex-A

 ベンチマークテストを使った直接の性能比較ではないのは,消費電力を引き上げてもいいのであれば,いくらでも性能は上げらるので,むしろ性能対消費電力比のほうが重要な要素となると,ARMでは説明している。
 こうした性能向上による結果として,2016〜2017年にかけて出てくるであろうハイエンド向けSoCが搭載するMali-G71は,モバイルというよりも,2015年のノートPC向け単体GPU並みのグラフィックス性能を発揮するだろうと,ARMは予測を示していた(図18)。

図18:ARMによる,Mali-G71とそのほかのGPUの性能比較。既存の「Mali-T880 MP12」と比べて2倍近い性能に達し,2015年のノートPC向け単体GPU並みの性能があると主張している。ただ,比較対象のノートPC向け単体GPUが何かについては触れられていない
Cortex-A


性能向上と消費電力削減に重点を置いたBifrostアーキテクチャの特徴


 ではそのMali-G71が採用するBifrostアーキテクチャとは,いったいどんなものなのか。図19は,システム全体の構造を示したスライドだが,これだけを見ても,Mali-TシリーズのMidgardと大きな違いはない。変化があったのは,この中身である。

図19:Bifrostの基本的な構造を示したスライド。シェーダコアの数が最大で32基というのは,「Control Fabric」がサポート可能な数が最大32基であるためだ
Cortex-A

 図20は,Midgardの構造を細かく図示したスライドだ。Midgardには,2つのALUパイプ(Arithmetic Pipe)とロード/ストア,テクスチャという,独立して実行可能な4つの演算パイプがあった。

図20:Midgardのシェーダコアとその周辺の構造を示したスライド
Cortex-A

 続く図21は,Bifrostの構造を細かく図示したスライドである。スライドに多数出てくる「Quad」(クアッド)は,Midgardまでの「Thread」(スレッド)単位の処理に変わって,新しく導入された処理単位の概念だ。
 Bifrostでは,演算ユニット「Execution Engine」が3基あるほか,ロード/ストア,テクスチャ,さらにMidgardではALUの中に含まれていた「Attribute」や「Varying」というユニット――どちらもポリゴンに対する処理を行う――の7ユニット,Midgard風にいえば7つの演算パイプで構成されている。
 ただし,Midgardはスレッド,Bifrostではクアッドと処理の単位が異なるので,パイプの数だけを比較することに意味はない。

図21:Bifrostのシェーダコアとその周辺の構造を示したスライド。資料を読む限り,各々のExecution Engineは独立して動くようだ
Cortex-A

図22:24bitのデータを4-way SIMD演算にかけると,レーンの1つは使われないままだ
Cortex-A
 Bifrostにおけるクアッドとは何かを,説明する必要があるだろう。
 たとえば,RGBそれぞれが8bitとなる24bitカラーのデータに4-way SIMD演算を行おうとした場合,4つあるSIMD演算ユニットのレーンは,1つが使われないままになってしまう(図22)。この例では,データを処理するのに4サイクルがかかっているわけだ。

図23:そこで,4スレッド分のデータを並び替えて4レーンすべてを使えるようにすると,3サイクルで処理が終わる。 4スレッド分のデータをまとめて処理するから「クアッド」という名前を付けたと思われる
Cortex-A
 そこでBifrostでは,演算4回分のスレッドをまとめてデータを並び替え,並び替えた状態でSIMD演算を行うという仕組みを用意した(図23)。演算後には本来の配置にデータを並べ直すので,アプリケーションからは並び替えの様子は見えない。この仕組みによって,Midgardでは4サイクルかかっていた処理が,3サイクルで済む。
 この並び替えに何サイクルかかるのか,ARMでは明言していないのだが,ハードウェアで処理するなら1サイクルもかからないと思われる。そして,GPUのパイプラインは大抵の場合とても長いので,演算の前後に並び替え処理が入っても結果的にスループットは向上するだろう。そうなれば,トータルでの処理時間は短くなるし,消費電力も減らせるというのが,ARMの主張するBifrostの利点というわけだ。
 もちろん,最低でも4つのスレッドが動作する状態にできなければ,クアッドの効果は得られにくいという問題はあるものの,その点についてARMは,シビアな問題ではないという見解を示している。

 性能向上を目的に導入されたクアッドに対して,省電力に効果がある機能として導入されたものに「Clause」(クローズ)というものがある。
 図24はMidgardにおける処理の流れを,図25はBifrostにおける処理の流れを示した概念図だ。端的にいえば,まとめて処理できる命令はまとめて処理することで,オーバーヘッドを減らそうというのが,Clauseの基本的な仕組みだ。

図24:Midgardで5つの命令を順に処理していく流れを示した図。「Overhead」とは何かは後述する
Cortex-A

図25:Bifrostにおける処理の流れを示した図
Cortex-A

 とはいえ,この図だけを見て,どんな処理が行われているのかをイメージできる人は,あまりいないだろう。ほとんどの読者には意味不明であることを承知のうえで,ARMが提示したマシン語のサンプルコード(図26)を使って説明してみよう。
 図26の左側にあるのが,本来のプログラムコード(Linear Source)だ。簡単にいえば,「LOAD.32」の行でメモリからレジスタ「r0」へとデータを読み出し,「FADD.32」の行でデータが2倍になるように,レジスタ内のデータ同士を加算して別のレジスタ――r0+r0なら「r1」――に結果を保存する。そして,この加算を6回繰り返したうえで,「STORE.32」の行で最終的な値を,r0からメモリに書き戻すという処理を記したコードである。

図25:Clauseの具体的な動作をマシン語のコードで示したスライド。なお,「wait(load)」というのは,そのClauseの処理が終るまで,外から割り込みが入らず,テンポラリレジスタの値が外部から変更されたりしないという意味。なにかの命令ではない。
Cortex-A

 この処理におけるオーバーヘッドとは,ALUパイプラインの外に置かれた外部レジスタ「r1,r2,r3,r4」に対する不必要な保存や読み出しのことだ。高速で動作する外部レジスタであるため,これらを遅延なしでアクセスしようとすると,データの転送だけで消費電力が余計にかかってしまう。そこで,これをどうにかして削減しようというのが,Clauseの基本的な概念である。

 Clauseでは,図25のコードを,最初のLOAD(r0への読み込み)と最後のSTORE(r0からメモリへの書き出し),計算部分という3つに分解する。そして,計算部は外部レジスタではなく,図25の右側で「t0,t1」と書かれた2つのテンポラリレジスタを利用するように組み替えて,外部レジスタへのアクセスを減らすのだ。このテンポラリレジスタは外部レジスタではなく,ALUパイプラインの中にあると思われ,外部レジスタよりもアクセスに要する消費電力が少なくて済む。
 Clauseによる処理を実装しても,処理速度そのものはまったく変わらない。FADD.32の命令数が減るわけではないからだ。だが,消費電力の多いr1〜r4のレジスタアクセスを消費電力の少ないテンポラリレジスタで代替できるので,トータルでの消費電力は減らせますよというのが,Clauseのメリットである。

 ちなみに,BifrostのALUは一種のSIMD演算ユニットとなっており,FMA演算を含む演算を行える(図26)。図26にある「ADD/SF」のSFは「Special Function」(特殊な演算)であるが,Midgardまでと比べて,Bifrostではユニットのサイズを縮小したとARMは説明していた。

図26:BifrostにおけるALUの概念図
Cortex-A

図27:BifrostのALUでは,32bitのデータだけでなく,16bitや8bitのデータも処理できるという。ただし,8bitのデータなら32bitの4倍速いというわけではなさそうだ
Cortex-A
 また,冒頭でもちょっと触れたように,機械学習などでGPUを利用する話題が最近は増えているが,BifrostのALUは,こうした用途にも適していると,ARMは主張している。
 機械学習では,32bitでの演算よりも,16bitあるいは8bitの演算でも十分な
結果が得られる場合があるのは知られた話だ。ARMによれば,Bifrostのアーキテクチャなら,小サイズデータでの処理性能が上がるので,消費電力の削減にもつながるのだという(図27)。

 Bifrostにおける省電力に関する改良点では,もう1つポイントがある。Bifrostでは,テクスチャデータの持ち方をMidgardまでと大きく変更したのだ(図28)。
 図28左端のように,三角形のテクスチャが5つあるとしよう。拡大しないと見えないが,左端の右上にある赤い三角形の斜め下に,黄色のごく小さい三角形があるので,計5つとなっている。Midgardでは,各テクスチャの大きさに合わせて,最小単位(左から2番め),その縦横2倍(左から3番め),縦横4倍(一番右)というように,最小単位を基準にサイズを変えながら,メモリ内でテクスチャデータを管理していた。しかし,このやり方では図を見てのとおり,かなり無駄が多い。右端のテクスチャに至っては,最小単位の16倍ものデータ量となっている。
 そこでBifrostでは,メモリ管理の最小単位が撤廃され,各テクスチャの大きさに合わせたサイズのメモリ――図28の各三角形を囲んでいる破線――だけを使うようになった。これによって,テクスチャメモリの使用量が減り,延いてはメモリアクセスにともなう消費電力も削減できたというわけだ。

図28:Midgard世代では,テクスチャメモリの管理単位がおおざっぱで,無駄が多かった。Bifrostではそれを改め,最小限のサイズ(各三角形を囲んでいる破線)で管理できるようになった
Cortex-A

 なお,黄色のごく小さな三角形は,「Micro-triangle elimination」という機能によって省略されるという。1ピクセル未満に満たないサイズで,描画品質に影響のないような小さいテクスチャを省いてしまうことで,効率を改善しようという仕組みによるものだ。
 こうした積み重ねによって,Bifrostではテクスチャメモリの利用効率を最大95%も改善できるというのが,ARMの主張だった。

 さらに,ARMはBifrostで,「Index-driven Position Shading」という技法も導入した(図29)。これは,何らかのデータの処理をするときに,データそのものをいちいち転送するのではなく,データのを示すインデックスを渡せば済ませられる部分はそれで済ませすことで,データ転送量を減らそうというものだ。
 データそのものを処理する必要がある部分では,転送量は変わらないが,いくつかの処理はインデックスを渡せば,データ転送量を減らせるという。そしてデータ転送量を減らせば,結果として消費電力も減らせるという理屈である。

図29:ポリゴンの陰面処理を例に,MidgardとBifrostでのデータ転送量の違いを示した図。Bifrostではインデックス化によって,頂点の移動や変更,Varyingの処理でアクセスすべきメモリ帯域幅を半減させることが可能であるという。それにより,頂点演算(右側のグラフにあるPositions)は3.5倍から2.0倍,ポリゴンの処理(同Attributes)は2.5倍から1.5倍まで,データ転送量を削減できるとしている
Cortex-A

 既存のMali-T880 MP16を16FF+プロセスで製造した場合,17億ポリゴン(トライアングル)/secを処理できるが,スループットは104億ピクセル/secにしかならない。一方,Mali-G71を16FF+プロセスで製造した場合,850MHzで駆動して8億5000万ポリゴン/sec,272億ピクセル/secというスループットを実現できるとのこと(※ただしコア数は未公表)。ポリゴン性能面では微妙だが,スループットの増大で描画性能の大幅な向上が期待できると,ARMは主張している。
 Cortex-A73でも触れたが,Mali-G71も本命の製造プロセスは,TSMCかSamsung,あるいはGLOBALFOUNDRIESの10nm世代だ。とはいえ,最初の製品はTSMCの16FFか,SamsungかGlobalFoundriesの14LPPあたりで製造され,2017年には市場に登場するだろう。


2017〜2018年に登場する採用製品に期待が高まる


 ということで,Cortex-A73とMali-G71の主な特徴は,以上のとおりとなる。

 Cortex-A73とMali-G71を使ったスマートフォンがあれば,グラフィックス負荷の高い3Dゲームを一日中,それも途中での充電なしで遊べるようになるかといわれると,さすがにそれは無理そうだ。2017年末に登場するであろう,次世代のハイエンドSoCを使うスマートフォンでも厳しいと思う。
 スマートフォンの長時間駆動を実現するには,単にCPUコアやGPUコアの改善だけでなく,ディスプレイパネルや通信機能,GPSの消費電力も下げないと難しい。だがそれらは,現在のARMにはどうしようもない要素であるためだ。

 とはいえ,次世代SoCを見据えて,さらに負荷の高いゲームやVRコンテンツが登場してくるのは確実であろうし,そうしたゲームやコンテンツでは,Cortex-A73やMali-G71が活躍することになると思われる。将来のスマートフォン向けSoCがどのような力を示せるか,今から楽しみだ。

ARMのCortex-A73 製品情報ページ(英語)

ARMのMali-G71 製品情報ページ(英語)


  • 関連タイトル:

    Cortex-A

  • 関連タイトル:

    Mali

  • この記事のURL:
line
4Gamer.net最新情報
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:09月20日〜09月21日