Hot Chips 29においてVega 10 GPUを発表するAMDのMichael Mantor氏

Hot Chips 29においてAMDは、新たなフラグシップGPUとなる「Vega 10」を発表した。

Vega 10は14nm FinFETプロセスで製造され、486mm2のチップサイズに125億トランジスタを集積するGPUである。前世代の「Fiji」は28nmプロセスではあるが、586mm2であったので、チップサイズという点では、かなりコンパクトになったと言える。

デバイスメモリとしては、HBM2を2個搭載している。Fijiで使った初代HBMに比べてHBM2メモリはバンド幅が2倍になっているので、個数を4個から2個に減らしてもほぼ同じメモリバンド幅が確保できている。また、スタックのメモリチップの容量も増加しているので、最大16GBのメモリを搭載できる。次の写真でRADEON VEGAと書かれたGPUチップの下に2個の多少白っぽいチップが見えるが、これがHBM2である。

AMDのVega 10 GPUは14nmプロセスで製造され、486mm2のチップに125億トランジスタを集積する。デバイスメモリとしてはHBM2を2個搭載している (このレポートのすべての図は、Hot Chips 29におけるAMDの発表資料のコピーである)

次の図に、現在のFijiアーキテクチャと次期Vega10アーキテクチャのGPUの諸元を示す。

クロックがFijiの1.05GHzからVega10では1.677GHzと約60%向上しており、それに伴いFP32の演算性能も1.6倍になっている。また、FP16/INT16の演算をサポートし、これらの演算は2 SIMDで並列演算を行うので、演算性能がFP32の2倍となっており、Fijiと比べるとマシンラーニングなどで使用するFP16性能は3.2倍に向上している。

ピークメモリバンド幅は、Fijiの512GB/sから484GB/sとわずかに減少しているが、L2キャッシュが2MBから4MBに倍増されていることもあり、メモリ系の性能は全体としては改良されていると思われる。

FijiアーキテクチャのGPUとVega 10アーキテクチャのGPUの諸元の比較

次の図は2つのゲームでのメモリの割り当て量と、実際にゲームソフトがアクセスしたメモリ量をプロットしたものであるが、この図にみられるように、実際にアクセスするのは割り当てた半分程度のメモリだけであるという。

2つのゲームソフトの割り当てメモリ量と実際にアクセスしたメモリのプロット。半分程度のメモリしかアクセスされていないことがわかる

そこで「High Bandwidth Cache Controller(HBCC)」という機構を作り、アクティブなページだけを「High Bandwidth Cache(HBC:実態はHBM2メモリ)」にキャッシュすることにした。

そして、アクセス頻度の低いページは、HBM2より遅いメモリ(CPU側のホストメモリ)に移動する。

左側のHBCCがない場合はアクセス頻度が低いデータもHBCに格納されてしまうが、右側のページ単位で格納するHBCC付きの場合は、HBCを有効に使える

Vega10では「Infinity Fabric」と呼ぶチップ内の接続ネットワークを採用した。制御を担当する「Scalable Control Fabric」と実際にデータを運ぶ「Scalable Data Fabric」がグラフィックス、演算用のACE、DMAエンジンなどを接続している。

このInfinity Fabricの採用で、最大67%テクスチャキャッシュのレーテンシが減少している。

Vega 10のInfinity Fabric。テクスチャキャッシュのライトレーテンシが1/3、リードレーテンシが1/1.7に短縮した

次の図は、Vega 10のGPU部のブロックダイヤであるが、64個のピクセルユニット、4個のACEという構成で、このレベルの図では前世代のFijiから大きな変更はない。

Vega 10 GPUのグラフィックスエンジン。ブロックダイヤのレベルでは前世代から大きな変更は見られない

今回の発表でAMDが改良の目玉として説明したのが、「Draw Stream Binning Rasterizer(DSBR)」という機能である。

次の図のように複雑にプリミティブが重なっている場合、他のプリミティブに隠れてしまうので本来はフェッチやシェーディングが必要ないプリミティブも処理してしまい無駄に処理を行うケースが出てくる。DSBRは、これを、タイル方式のように細かい領域に分割して、頻繁に使われる部分をオンチップのキャッシュに格納することにより、効率的に処理するものと考えられる。ただし、今回の発表では細かい説明がなく、どのような処理になっているのかは良くわからない。

Draw Stream Binning Rasterizer(DSBR)は複雑にプリミティブが重なっている状況でフェッチやシェーディングを効率化する

DSBRは無駄なフェッチやシェーディング処理を省くので、描画の性能やエネルギー効率を改善することができる。次の図に示すように、DSBRをオンにすることで、標準ベンチマークのSPECviewperfでのエネルギー効率は2倍あまりに改善するという。

SPECviewperfではDSBRをオンにすると電力効率が2倍強に改善される

次の図は、各種ゲームでの性能、および、性能/電力の改善を示す棒グラフである。改善効果が大きいゲームでは性能、性能/電力ともにDSBRオンで10%程度の改善が得られている。しかし、効果の少ないゲームでは2%強の改善であり、どのような画面が描画され、プリミティブの重なり具合がどうなっているのかに依存するのであろう。

各種ゲームでのDSBRオンによる性能、性能/電力の改善効果。左が性能、右は性能/電力の改善量を示す

Vega 10のNCU(Next-generation Compute Unit)は基本的には前世代から変わっていないが、40種の新しい命令がサポートされた。また、NCUの動作としても、いくつかの改善が行われている。その第1は、IEEE754規格に準拠したFMA32がフルレートで実行できるようになったことである。第2は、Permute命令がサポートされ、1つのWavefrontの中の64スレッドの間でデータを交換できるようになったことである。スレッド間のデータ交換は、以前からLDS(Local Data Share)を使えば可能であったが、Permute命令を使えばLDSを使わず、他のスレッドのレジスタにデータを書き込んだり、他のスレッドのレジスタの値を読んだりすることができる。そして、LDSを使わないので、LDSのメモリバンド幅やレーテンシに制約されずより高い性能が得られる。