後藤弘茂のWeekly海外ニュース
スマホ&タブレットのグラフィックス性能を100GFLOPS台に引き上げる次期PowerVR「Rogue」
(2012/12/17 00:00)
モバイルGPUのパフォーマンスを100GFLOPS台に
2年半で38倍のパフォーマンス向上。これが、タブレットでのグラフィックスパフォーマンスの向上ペースだ。初代iPadでは2GFLOPSだったGPUの生演算パフォーマンスは、最新のiPad(4)では76.8GFLOPSへと膨れ上がった。PCの世界でのゆるやかなパフォーマンス向上とはまったく別物のパフォーマンスカーブが、モバイルデバイスの世界では起きている。
モバイルデバイスでは、ARM CPUコアもパフォーマンスをどんどん向上させている。しかし、GPUコアのパフォーマンス上昇は、CPUコアのそれをはるかに凌ぐ。その背景には、タブレット/スマートフォンの急激な画面解像度向上と3Dゲームの浸透、そしてグラフィックス性能を支えるモバイルメモリ技術の発展がある。
その結果、現在のモバイルSoC(System on a Chip)のダイは、GPUコアが大半を占めるようになっている。特に著しいのはAppleのSoCだが、他社もAppleに対抗するためにSoCの中のGPUコアを強化しつつある。少なくともタブレットでは、現在の主役はGPUコアで、CPUコアは脇役となっている。
Appleが自社のモバイルSoC「Apple Ax」シリーズでGPUコアに採用しているのは、Imagination TechnologiesのPowerVR SGX系コアだ。Appleは自社でGPUコアの開発をスタートさせているが、自社コアに代替するまではPowerVRを使い続けると見られる。Imagination Technologiesも、Appleの強いグラフィックスパフォーマンス要求に応えるために、GPUコアをひたすら拡張し続けている。そして、今は次世代のPowerVR Series6(Rogue)へとシフトが始まりつつある。
下のチャートは、Imagination TechnologiesのWebサイトにある「The rise of GPU compute」というブログ記事にあったチャートを元に起こしたものだ。元のチャートにはGFLOPSの数字は入っていなかったので、計算して補完した。
PowerVR Series6のGFLOPS値は、今年(2012年)1月にRogueアーキテクチャコアを発表した際の数字を入れ込んでいる。元図のチャートの比率は、下の図に書き込んだGFLOPS値と合致している。
このチャートを見ると、Imagination TechnologiesがGPUパフォーマンスを急増させていることがよくわかる。図では右端の2つの柱が、PowerVR Series6シリーズのG64x0と62x0のパフォーマンスだ。来年(2013年)から市場に登場するRogueアーキテクチャからは100GFLOPSのパフォーマンスレンジに入り、いよいよPCグラフィックスの世界に近づく。
動作周波数を倍に引き上げるRogueアーキテクチャ
PowerVR Series6の性能が、従来のApple製品と比べてどうなるかを比較すると、下の図のようになる。初代iPadからiPad(4)までの主要製品のパフォーマンスとALU(Arithmetic Logic Unit、演算ユニット)数を、PowerVR Series6の第1世代と比較している。Appleは猛烈な勢いでALUを増やし、その結果パフォーマンスが急増したことがよくわかる。
そしてPowerVR Series6世代では、現在のタブレットで最高性能のiPad(4)を、生パフォーマンスで凌駕することが分かる。PowerVR Series6の第1世代は28nmプロセスがターゲットと見られるため、Appleが来年(2013年)に32nmプロセス(A6/A6X)から28nmへとシフトすればPowerVR Series6を使うこともできる。AppleはPowerVR Series6を使うことで、現在のパフォーマンスカーブを維持することができそうだ。
PowerVR Series6の演算パフォーマンスが高いのは、Imagination Technologiesがこの世代でアーキテクチャを一新したからだ。PowerVR Series6では、GPUコアの構成を変えて、より大規模なプロセッサ構成を容易に採ることができるようにした。GPUコア内部の命令制御を大幅に変更して、ダイ面積や電力当たりのパフォーマンスを引き上げようとしている。また、動作周波数は従来の200~300MHz台から、最高600MHzへと倍に引き上げた。
ターゲット動作周波数を上げたことは、GPUコアの演算ユニットのパイプライン構造を変えたことを意味している可能性が高い。プロセス技術の進化分だけでは、ここまで周波数を上げることは難しいからだ。
プロセッサのパイプラインを深くすれば、より高周波数での動作が可能になる。従来のPowerVRは、浮動小数点演算ユニットを4サイクルの実行レイテンシで回すパイプライン構造を採っていた。つまり、演算ユニットは4ステージのパイプライン構造となっていた。
1演算ユニットが1命令を実行するのに4サイクルかかる。しかし、パイプライン化されているため、新しい命令の実行を1サイクル毎にスタートさせることができる。PowerVRアーキテクチャの場合は、サイクル毎に異なるスレッドの命令を実行する。そのため、4サイクルのレイテンシを隠蔽するために4スレッドを並列に実行することになる。
今回、Imagination TechnologiesがPowerVR Series6の動作周波数を2倍に引き上げることは、4ステージのパイプラインを8ステージに深めることを意味すると推測される。その場合、命令の実行レイテンシは4サイクルから8サイクルに増える。そのため、実行レイテンシを隠蔽するために、2倍の8スレッドが必要となる。
つまり、PowerVR Series6では高周波数化のためにオンザフライで実行できるスレッド数を増やさなければならない。そして、そのためには、現在16エントリのスレッドプールも拡張する必要がある。隠蔽しなければならないメモリアクセスレイテンシのサイクル数が増えるためだ。
Imagination Technologiesがパイプラインを深くしたとすると、このように、制御しなければならないスレッド数が増えるために、スレッド制御部分のオーバーヘッドが増える。また、パイプラインを深くするとラッチ回路が増え、クロックディストリビューションも複雑になるため、電力消費が増える。しかし、それだけのトレードオフを払っても、見合うだけのパフォーマンス向上が得られると判断したことになる。
ちなみに、AMDもかつてATI Technologies時代に、同様のパイプラインの深化を行なっている。Radeon HD 2900(R600)の時に、命令シーケンサを二重にして、従来の4サイクルから8サイクルへと実行レイテンシ隠蔽のサイクル数を増やした。
SIMD幅がPowerVR Series5からRogueで大きく変わる?
動作周波数を高める一方、PowerVR Series6では、コントロールオーバヘッドを減らす改良も行なわれると見られる。Imagination Technologiesが今年(2012年)8月に更新した「PowerVR Performance Recommendations」というドキュメントに、従来のPowerVR Series5とPowerVR Series6のプログラミング上の違いについて触れられている。その中で、分岐粒度の変化について書かれている。
通常、GPUはSIMD型の実行ユニットを備えて、複数のデータに対して同じ命令を実行する。そのため、複数のスレッドをベクターで処理する場合に、各スレッドをそれぞれ個別に条件分岐させる場合に問題が生じる。GPUでは、一定の分岐粒度があり、その粒度の中での条件分岐は、見かけ上の分岐をさせるなどの方法を採る。
具体的には、プレディケーションを行ない、SIMDの各レーンのスレッド毎に、命令を実行するかしないか(または演算の結果をレジスタに書き込むか書き込まないか)をマスクレジスタによって選択する。プレディケーションによって見かけ上、各レーンはスカラプロセッサとして動作する。しかし、実際にはハードウェア的にはSIMDであり、プログラム上の実行パスはSIMD全体でコヒーレントして(整合性をとって)実行される。プレディケーションでその結果が反映されないだけだ。ちなみにSIMD実行の粒度は、NVIDIAアーキテクチャでは32スレッド、AMDアーキテクチャでは64スレッドとなっている。
しかし、従来のPowerVR Series5では、そうしたPC向けGPUのような大きな分岐粒度を持たなかった。PowerVR Series5では、1個の頂点または1個のピクセルの単位で条件分岐が可能だ。これについては、「POWERVR SGX OpenGL ES 2.0 Application Development Recommendations」というImagination Technologiesの文書の中に明記されている。
PowerVR Series5では原理的に、プログラム中に条件分岐があった場合、頂点/ピクセル毎に異なる命令実行パスを実行することができる。ただし実際には、頂点とピクセルともに複数のスレッドに分解してしまうため、複数スレッドの粒度を持っている。例えば、RGBAのピクセルなら4スレッドになるため、ハードウェア的に分岐粒度は4スレッドであると見られる。
それに対して、PowerVR Series6では分岐粒度がもっと大きくなるという。Imagination Technologiesの文書によると、ピクセルシェーダプログラムの分岐はピクセル単位の粒度では行なわれるのではなく、コヒーレントが発生するとされている。つまり、PowerVR Series6では、より大きな分岐粒度を持つと推測される。
PC向けGPUは、いずれもPowerVR Series5より、ずっと大きな分岐粒度を採っている。これは、分岐粒度を上げたほうが、命令制御ユニットを簡略化して、チップ上の演算ユニットの比率を高めることができるからだ。つまり、GPUコアの一定のダイ面積当たりの演算ユニットの数を増やすことが容易になる。
PowerVR Series6が、分岐粒度(=論理ベクター長)を増やしたとしたら、どの程度に拡張したかがポイントになる。先述の「The rise of GPU compute」というブログ記事では、PowerVR Series6の実行モデルを「scalar/wide SIMD execution model」と呼んでおり、NVIDIAやAMDと似たような方式であることを示唆している。つまり、比較的広いSIMDユニットで、プレディケーションによって分岐を制御してスカラプロセッサとして動作させる手法を採ると見られる。
しかし、PowerVR Series6のSIMDの粒度については、まだ現段階では明らかにされていない。PowerVRの開発者向けのフォーラムでも、この点について質問がされているが、Imagination Technologies側の返答は“まだ明らかにできない”というものだった。PowerVR Series6の実行ユニットは16 ALUずつバンドルされているという情報があるため16-wayのSIMDが予想されるが、NVIDIAやAMDのように複数サイクルに渡って同じ命令を実行する場合もあるため、まだ分からない。
いずれにせよ、より広いSIMDへの変更は、GPUコアのコントロールオーバーヘッドを減らして、全体にパフォーマンス/ダイ面積/電力を高める効果がある。これは、高周波数化による複雑度の増加を相殺するかも知れない。
予想以上に大規模なPowerVR Series6のクラスタの構成
前回のPowerVRの記事を書いた段階では、引用したブログ記事「The rise of GPU compute」を見つけていなかった。そのため、Rogueアーキテクチャでのパフォーマンスもマルチコア構成時のものである可能性があると前回は書いた。しかし、これを見ると、単一コアのPowerVR G6400系で、最高210GFLOPSを目指していることが分かる。
そのため、PowerVR Series6(Rogue)の推定構成図も訂正する必要が生じた。Rogueアーキテクチャはクラスタ構成を採っており、第1世代ではG6400系が4クラスタ、G6200系が2クラスタで構成される。現在分かっているのは、クラスタ内の演算ユニットALUのパイプが16本単位になっていること。1クラスタにつき16 ALUだった場合は、G6400系は合計で64 ALUとなり、600MHz時の演算パフォーマンスは76.8GFLOPSにしかならない。
しかし、G6400系は4クラスタで210GFLOPSを達成することから、GPUコア内のALUの数はもっと多いと見られる。600MHz動作とすると、計算上は176 ALUあれば210GFLOPSに達することになる。4クラスタ構成で176 ALUの場合は、1クラスタ当たり44 ALUと、収まりが悪い数字になってしまう。
一方、ALUが16個ずつ1グループにバインドされていると仮定すると、1クラスタに16 ALUのパイプが3本で、クラスタ当たり48 ALUがありそうな構成の数字となる。4クラスタ構成のG6400では、合計192 ALUとなる。しかし、192個のALUを600MHz動作させると、パフォーマンスは230GFLOPSになってしまう。
だが、600MHzは見積もり上の最高周波数で、実際は550MHz程度が現実的だとImagination Technologiesが見なしているとしたら、192 ALU×550MHzで210GFLOPSとなる。Imagination TechnologiesのWebサイトの図でも、PowerVR Series6の部分は~600MHzとなっており、600MHzと明記されていなかった。
今のところ、正確なスペックは分からないが、おそらく各クラスタに16 ALUのグループが3つずつ、というあたりがありそうな構成だ。この推測を反映させたPowerVR Series6(Rogue)シリーズの推定構成図は下のようになる。
想定されるGPUクラスタの構成がより大きいということは、よりPC向けGPUに似ていることを意味している。また、従来のPowerVR Series5XTのマルチコア構成と比べると、より無駄な重複部分が少なくなることを示す。クラスタをこのサイズにするならば、マルチコア構成は今後は使わずに、クラスタを増やすことでGPUを強化する方式を採るのかも知れない。
クラスタと同時にスケールアップするテクスチャユニット
PowerVR Series6のRogueアーキテクチャでは、2クラスタで1個のテクスチャユニット群を共有する。従来のPowerVR Series5のアーキテクチャでは、テクスチャユニットはコア全体で共有するユニットだったが、PowerVR Series6ではクラスタと密接に連携している。そのため、クラスタを増やして演算パフォーマンスを増やすと、同時にテクスチャユニットも増えることになる。
これは、PC向けGPUでは当たり前で、PC向けでは演算に対するテクスチャの比率をある一定に保つことが重要となっている。PowerVR Series6のテクスチャユニット群のスループットは、まだ完全にはわかっていない。しかし、ALUと連携してスケールするようになったことは重要だ。
モバイルデバイス向けのアプリケーションプロセッサでは、長年、メモリ帯域がボトルネックになってきた。プロセッサ内部のパフォーマンスはプロセスの微細化でトランジスタ数が増えるにつれて増加するのに、メモリ帯域はそれに見合うペースでは増えなかったからだ。そのため、モバイル向けGPUでは、メモリ帯域を抑えるタイリングアーキテクチャが一般的になっている。
タイリング系のアーキテクチャでは、オンチップのメモリによって、ピクセル処理での外部メモリアクセスの必要をなくす。しかし、テクスチャを読み込むための外部メモリアクセスをなくすことはできない。テクスチャはキャッシュも効きにくいため、メモリ帯域の制約が大きく響く。上の図の右端がPowerVRのアーキテクチャだが、テクスチャデータの読み込みの負荷だけが残っていることがわかる。
そのためモバイルGPUでは、演算ユニットのスケールアップと、テクスチャユニットは切り離してあることが合理的だった。プロセスの微細化で演算パフォーマンスは容易に向上させられる一方、メモリ帯域の制約があるためテクスチャユニットは増やしても意味がなかったからだ。
だが、この2~3年でモバイル向けDRAMの状況は一変した。現在は、2年に2倍のペースでメモリ帯域が拡張される傾向にあり、プロセス微細化によるパフォーマンスの向上に追いついている。少なくとも2015年頃までは、このハイペースなメモリ帯域の向上が続く。そのため、モバイルGPUでもメモリ帯域は制約ではなくなりつつある。
PowerVR Series6のRogueアーキテクチャは、こうしたトレンドに対応したと見ることもできる。PowerVR Series6でも依然としてタイリング系の「Tile Based Deferred Rendering (TBDR)」を採ると見られるが、テクスチャユニットに関しては従来のように演算ユニットと分離する方針を採らない。
結果として、PowerVR Series6では、演算と同期してスケールアップするテクスチャパフォーマンスを期待できる。よって、原理的にはテクスチャを多用するグラフィックスを走らせやすくなる。
20nmプロセスがRogueのメインターゲットか
Imagination Technologiesは現在、同系列のGPUアーキテクチャを複数のプロセス技術の世代にまたがって継続している。PowerVR Series5系は、65nmプロセスから45/40nm、そして32/28nmへと続いている。PowerVR Series6(Rogue)系は、28nmプロセスからスタートするが、20nmがメインターゲットで、おそらく16/14nmプロセスでも継続すると推測される。PowerVR Series6でTFLOPSクラスの性能を達成できるというImagination Technologiesの発表は、そうしたプロセスの進化も念頭に置いていると推測される。
もし、PowerVR Series6の1クラスタが48 ALUで構成されているとしたら、4クラスタ構成のPowerVR G6400系では192 ALUの構成となる。現在、モバイルSoCで最大のGPUを持つAppleのA6Xは32nmプロセスで製造され、PowerVR SGX554 MP4で128 ALUを備える。28nmプロセスに移行するなら、同程度のダイサイズで、192 ALUのGPUコアを搭載することはできそうだ。その場合は、AppleのA7X世代のSoCは、A6Xの3倍となる200GFLOPSクラスのGPUパフォーマンスを達成できることになる。
ちなみに、Imagination TechnologiesはPowerVR Series6(Rogue)の第2世代コアをすでに発表しており、PowerVR G6630では6クラスタ構成となる。しかし、28nmプロセスでは、6クラスタのG6630を経済的なダイサイズに収めることは難しいだろう。SoCメーカーはすでに20nmプロセスのチップの設計に入っており、6クラスタPowerVR G6630は、20nmをターゲットにしたものだと推測される。