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

Google Nexus 10を支えるARM製GPUファミリ「Mali-T6xx」のロードマップ

GPUコンピューティングに力を入れるARM

 ARMは12月6日に東京で、技術カンファレンス「ARM Technology Symposium 2012 Japan」を開催した。ARMは64-bitの新CPUコア「Cortex-A50」ファミリを発表したばかりだが、実は、その裏でGPUコアも一新。GPUコアも今回のカンファレンスの焦点の1つとなった。

 ARMのGPU「Mali-T6xx」シリーズは、モバイル機器の将来を考える場合に非常に重要だ。それは、ARM自身のGPUコアというだけでなく、モバイル向けにGPUコンピューティングにフォーカスして設計されたコアだからだ。ARMはダークシリコン問題(電力の制約からシリコン上でオンにできないエリアが広がって行く)を回避して、シリコンダイ(半導体本体)を有効に活用するために、CPUコアから他のユニットコアへと積極的にオフロードしようとしている。そのため、GPUコアを汎用に使うことを非常に重視している。つまり、ARMによるヘテロジニアスコンピューティング戦略の要となるのが、Mali GPUコアだ。

Nexus 10やChrome Bookに採用

 ARMはこうした発想に沿ったGPUコアとして「Midgard(ミッドガルド)」と呼ばれる、いわゆるユニファイドシェーダ型のGPUアーキテクチャを開発した。そして、Midgardの最初のGPUとして「Mali-T604」を2010年11月に発表した。それから2年、Mali-T604は、Samsungの最新のモバイル向けSoC(System on a Chip)「Exynos 5250」に搭載されて市場に登場した。GoogleのタブレットNexus 10や、Chrome OSノートであるChromebookの最新版は、Exynos 5250ベースでMali-T604を載せている。

 発表から2年経ってようやく製品が市場に登場するというペースは、PCの世界から見れば遅いように思えるかも知れない。しかし、ARMの発表はRTL(Register Transfer Level)ファイルの提供という意味なので、実際にRTLから物理設計を行ない製品を完成させて市場に出すまでは、長ければ2年かかる。もっとも、現在はARMは、Maliコアの「POP(Processor Optimized Packages)」も提供し始めたため、今後は製品化のペースは加速すると見られる。

SIGGRAPH時に新しいGPUコアファミリを発表

 ARMはMidgard系のGPUとして、今年(2012年)8月にSIGGRAPHに合わせて新たに3系列を発表した。最大4コアの「Mali-T624」と、8コアまでの「Mali-T628」、それにコア自体を拡張した最大8コアの「Mali-T678」の3系列だ。現在製品が市場に登場しつつあるMali-T604を第1世代とするなら、Mali-T624/628/678は第2世代となる。位置づけとしては、Mali-T624/628がどちらかと言えばスマートフォン、Mali-T678がタブレット最適化となる。

Maliのロードマップ
Mali T6xxロードマップ
※PDF版はこちら

 ARMのGPU名称は、数字の羅列なので、やや分かりにくい。しかし、命名規則自体は非常に単純だ。まず、最初の3桁目の数字はアーキテクチャを示す。6はMidgardアーキテクチャ系であることを示している。ARMの現在の主力は、Mali-T400系とT600系の2系列だ。Mali-T400はスマートフォンだけでなく、DTVにも浸透している。

 アーキテクチャを示す3桁目に対して、次の2桁目の数字は同系アーキテクチャでの世代やバリエーションを示す。具体的には、Mali-T604から624で、同じMidgardアーキテクチャでも世代が1つ進んだため、ARMは2桁目に20を加えて示している。

 コアアーキテクチャのバリエーションもこの2桁目で示される。現在のT6xx系アーキテクチャでは、シェーダコア当たりのALU群の数が2個のものと4個のものの2種類がある。そして、4ALU群の構成の製品は型番に50を加える規則となっている。658は1世代目の4ALU群構成、678が2世代目の4ALU群構成となる、つまり、678の場合は、60xに対して、2世代目を示す20と、拡張アーキテクチャを示す50を加えた命名となっている。

 ちなみに、ARMは昨年(2011年)秋に、604のコアアーキテクチャを拡張した「Mali-T658」を発表した。これも命名規則に沿って50が加えられている。ただし、Mali-T658は現実解では、Mali-T678に引き継がれているようだ。

 最後の1桁目の数字は、単純にコア数を示す。604と624は、4コア構成で、PowerVRの命名規則に合わせるならMP4となる。628や678は8コア構成でMP8相当となる。ちなみに、604からの派生で1コアの場合は601、2コアの場合は602となる。

第1世代に対して第2世代は50%パフォーマンスを引き上げる

 Mali-T624/628/678の3系列と、従来のMali-T604の基本的な違いは、パフォーマンスと効率の向上だ。「従来世代と比べると、同じプロセス技術でも50%パフォーマンスが上がった」とARMのIan Smythe氏(Director of Marketing, Media Processing Division, ARM)は説明する。パフォーマンスの向上の中身は、ARMのBlogで説明されている。それによると、動作周波数の向上と、アーキテクチャ上の効率性の向上によってパフォーマンスの上限が引き上げられたという。

 細かく見て行くと、新しいMali-T62x/67x系列では、OpenGL ES 3.0で加わったテクスチャ圧縮フォーマット「Adaptive Scalable Texture Compression (ASTC)」がサポートされた。Mali系はタイリングアーキテクチャだが、タイリングで抑えられるのはレンダリングのメモリ帯域だけで、実際にはテクスチャがメモリ帯域を圧迫する。新シリーズでは、ここを大幅に節約できる道が開けた。もっとも、ASTCについては、政治的な闘争があり、NVIDIAが反対していると言われる。そのため、すんなり標準になるかどうかは、まだ明確にはなっていない。

ARMのIan Smythe氏
OpenGL ES 3.0に対応

 また、「Transaction Elimination」と呼ぶタイルベースの省レンダリング手法も導入された。これは、画面をレンダリングのために切り分けたタイルのうち、変更が発生したタイルだけを書き換える手法だ。変更がなかったタイルについては、メモリ上のタイルに書き出すことをストップする。これによって、無駄なトランザクションを減らして、メモリ帯域を節約することができる。

 冒頭で触れたように、ARMはMali-T628/T678からPOPを導入した。POPはファウンドリの特定プロセスに最適化した設計パッケージで、RTLだけでなくPOPを使うことで、最適な物理設計を短期間で、フレキシビリティを維持しながら行なうことができる。Maliの場合は、POPによって、RTLを単純に論理合成した場合より、27%の動作周波数の向上、24%のダイ面積の縮小、19%の省電力が実現できるという。こうしたさまざまなレベルの技術やアーキテクチャの改良によって、Mali-T62x世代では50%の性能向上が実現された。

演算パフォーマンスを倍増

 Mali-T604の場合は、合計のALU群の数は、各コアに2個のALU群で4コアであるため、合計で8 ALU群の構成となる。ARMはMali-604について、各ALU群はVec4の128-bit SIMD(Single Instruction Stream, Multiple Data Stream)ユニットと1個のスカラALUで構成されると説明していた。そのため、単精度32-bit浮動小数点演算では、合計5 ALUが、1個のALU群に含まれていると見られる。いわゆる「Vec4+1ALU」の構成で、ユニファイドシェーダ化する前のPC向けGPUと似たようなアプローチだ。ただし、ARMはMali-T604では1コア当たり17の浮動小数点演算が可能だと説明しており、計算が合わない。

Mali-T604のシェーダコア
※PDF版はこちら
Mali-T604概要
※PDF版はこちら

 Mali-T624のアーキテクチャは、Mali-T604をベースにしている。ALUの構成自体は同じだという。Mali-T628は、Mali-T624に対してコアグループを2倍にしてシェーダコアの数を8に増やしたバージョンだ。ブロックの構成を見る限り、4コアを束ねたコアグループでL2キャッシュを共有してコヒーレンシを維持する。コアグループ間のメモリコヒーレンシは、ARMのシステムバスであるAMBA4バスを通じて維持する仕組みとなっている。また、ジョブをコアに分配するジョブマネージャは、8コア間にまたがってジョブをスケジュールする。

Mali-T628概要
※PDF版はこちら

 これがMali-T678になると、すでに説明したようにシェーダコア自体が拡張されている。Mali-T604/T62xではコア当たりのALU群が2個だったのが、Mali-T678では4個と倍増されている。演算パフォーマンスは倍増する。この構成はMali-T658と同じだ。加えて、最大8コア構成になるため、計算上の演算パフォーマンスはMali-T624の2倍になる。

Mali-T6xxのシェーダコアの比較
※PDF版はこちら

 ただし、コア内のロード/ストアパイプとテクスチャパイプは同数で示されているため、演算対ロード/ストアとテクスチャの比率が変わる。同一ファミリ内で、シェーダコア内の演算対メモリアクセスユニットの比率が異なると、最適化が異なってしまうため、本来的に言えば望ましくはない。しかし、メモリ帯域に制約がある中で演算性能を上げるためには合理的な方法だ。ARMもこうした制約がわかっているからか、Mali-T678はコンピューティングパフォーマンスを高めた製品だと位置づける。

(後藤 弘茂 (Hiroshige Goto))