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

7nmプロセスで2GHz近いクロックのGPU「Radeon RX 5700」のアーキテクチャ

AMD GPUの大きな革新となるNaviアーキテクチャ

 AMDは、7nmプロセス世代のCPU「ZEN 2」と同じく7nm世代GPU「Navi」の2つのアーキテクチャの組み合わせをゲーム向けプラットフォームとして強力に推進する。その背景には、次世代PlayStationと次世代Xboxの2つのゲームプラットフォームを、ZEN 2とNaviの組み合わせで押さえ、さらにはクラウドゲーミングもAMD GPUで占めつつあるという背景がある。AMDはPCゲーミングもZEN 2とNaviアーキテクチャで制したいと見ている。

 次世代のPlayStationとXboxは、どちらもZEN 2とNaviをベースとした、カスタムチップを使う。2020年に登場すると見られる両ゲーム機を先取りする形で、AMDはZEN 2ベースの「Ryzen 3000」シリーズCPUと、Naviベースの「Radeon RX 5700」シリーズを発表した。Radeon RX 5700は、おそらく今後続くNaviベースGPUの前哨となるGPUと推測される。

Radeon RX 5700XTのフィーチャ

 Naviでは、AMDはメジャーアーキテクチャチェンジを行なった。従来のAMD GPUアーキテクチャ「GCN(Graphics Core Next)」から、新設計の「RDNA(Radeon DNA)」へと切り替えた。その結果GCN世代よりクロックあたりの演算性能は1.25倍に増え、消費電力が減ったことで電力あたりの性能は1.5倍になった。演算性能/クロックの向上は、命令発行の効率が上がったことによる。

 RDNAの高効率の源は、7nmプロセスだけでなく、アーキテクチャの刷新にある。RDNAでは、全体のユニットの構成から、キャッシュ階層、プロセッサクラスタの内部マイクロアーキテクチャ、物理設計に至るまで、全ての面で従来のAMD GPUから刷新した。従来のAMD GPUのGCN(Graphics Core Next)アーキテクチャは、大きなワークロードを効率良く実行することに最適化されていた。しかし、RNAでは小さなワークロードから大きなワークロードまで広いレンジを効率良く実行することに最適化されている。

 また、スループットを高めるだけでなく、低レイテンシに実行することも重視された。グラフィックスワークロード時の、内部データパスのトラヒックを減らす仕組みも組み込まれた。こうした改良の結果、RDNAはモバイル製品にも派生的に展開できる電力効率と設計の柔軟性を持つようになった。

2種類のSKUで投入されるRadeon RX 5700シリーズ

 AMDのNaviアーキテクチャの第一弾となるNavi10は、2つのSKU(Stock Keeping Unit=アイテム)で提供される。上位の「Radeon RX 5700XT」は、40個のCU(Compute Unit)、2560個のストリームプロセッサ(32-bit FMADユニットを核とした演算ユニット)を持つ。演算性能は最大9.75TFLOPSで、動作周波数は最高19,05MHzと、いよいよ2GHzに近づいた。ベースクロックは1,605MHzで、平均的なゲームプレイ時のクロックであるゲームクロックは1,755MHzだ。

Radeon RX 5700XTのスペック
Radeon RX 5700/XTの製品スペックの詳細。ただし、このスライドには間違いがある。テクスチャユニットが256となっているが、実際には160ユニットだ
今回の製品では、動作周波数の指標が3つになっており、ゲームロード時の典型的なクロックであるゲームクロックが示されている

 Radeon RX 5700XTのメモリインターフェイスは256-bitでGDDR6をサポート。現在の製品のメモリは14Gbpsの8G-bit品で、8個のDRAMでトータルのメモリ容量は8GBとなっている。ただし、GDDR6は2ダイ構成であるため、DRAMダイは16個となる。14Gbpsは現在の量産出荷GDDR6の最高スピードで、メモリ帯域は448GB/s。ラフに言ってHBM2の4スタック構成の半分の帯域となるが、コストははるかに安い。

Navi10は廉価なGDDR6を採用

 下位のRadeon RX 5700は、36個のCU(Compute Unit)、2304個のストリームプロセッサの構成だ。動作周波数はピークが1,725MHz、ベースが1,465MHz、ゲームが1,625MHz。演算性能は7.95TFLOPS。メモリ回りは仕様がRadeon RX 5700XTと同様だ。Radeon RX 5700シリーズはどちらもPCI Express Gen4をサポートする。出力ではどちらもDisplay Stream Compression 1.2a規格に対応する。

Radeon RX 5700のスペック。演算ユニットの数が減っており、クロックも抑えられている

ミッドレンジクラスのダイサイズで高性能を実現

 Navi10は、これまでのAMDのトップGPUのような巨大ダイのGPUではない。ダイサイズは251mm2で、トランジスタ数は10.3B(103億)。同じ7nmで一世代前のVegaのRadeon VIIは331mm2ダイで13.2B(132億)で、今回のNavi10より一回り大きい。ストリームプロセッサ数も4096コアで多く、メモリインターフェイスはHBM3で4スタックの4096-bitインターフェイス。メモリ帯域は1TB/sに達する。

Naviと前世代のvegaの比較
PDF版はこちら

 コンシューマ向けのNavi10がダイサイズを抑えているのは、7nmプロセスの特殊事情がある。7nmプロセスは液浸多重露光技術を使っており、非常にプロセスコストが高い。マスク枚数が多くなり、露光回数が増えるため、スループットが落ちて歩留まりも上げにくいからだ。歩留まりを加味すると、7nmの製造コストは14/16nmの2倍に達するとAMDは説明する。つまり、7nmのチップはダイサイズが14nmの半分で、製造コストが釣り合う計算となる。

 AMDは7nmのVegaは、コンピュートにフォーカスという位置づけとしている。コンピュート向けのRadeon Instinctブランドが7nm版Vegaの本命で、Radeon VIIは追加の製品的なイメージだ。AMDはもともと、7nm GPUのコンシューマ版としてはNavi10を計画していたと見られる。

ダイサイズを抑えたNavi10。左のダイ写真は本当のレイアウトではなく、加工したものと見られる

 Navi10はダイを小さく保ち演算ユニット数を抑えながら、動作周波数を上げることで性能を高めた。7nmプロセスへの移行によって低電力化した余裕を、動作周波数の引き上げに使った。そのため、相対的にダイエリアあたりの性能が高くなっている。

マイクロアーキテクチャを大幅に変更したRDNAのCU

 AMDは、2012年にGCNを導入して以来、GPUマイクロアーキテクチャはほぼ一定に保って来た。RDNAは7年振りのマイクロアーキテクチャの本格変更となる。RDNAのポイントは3つ。CU(Compute Unit)の構成の変更、キャッシュ階層とレンダーバックエンドの配置の変更、固定グラフィックスパイプラインの高クロック化。

RDNAアーキテクチャのポイント

 RDNAアーキテクチャの概要は後の記事で説明するが、CU(Compute Unit)のマイクロアーキテクチャが大きく異なっている。AMDのGCNのCUは、16-wayのSIMT(Single Instruction, Multiple Thread)プロセッサ(AMDはSIMDと呼んでいる)を4アレイ備えている。AMDのGCNでは、ワークアイテムは64づつバインドされたWavefrontとして実行される。64アイテムを16-wayのSIMDで処理するため、命令実行には4サイクルが必要となる。そのため、1個の命令発行ユニットで1サイクルごとに1つの16-way SIMDに命令を発行して、4個の16-way SIMDをフルに走らせることができる。

 RDNAはこの構造を大きく変えた。まず、SIMDアレイを倍の幅の32-wayに変更。処理するワークアイテムサイズも従来の64から、標準で32へと変更した。32アイテムのwave32を、32-wayのSIMDユニットが1サイクルで1サイクルで処理する。同時に命令スケジューラも、CUあたり1個から2個へと変更。2つのwave32を同時に処理できるようにした。

 waveの粒度を半分にしたことで、レイトレーシングのような粒度の小ささが求められるようなアプリケーションも効率的となった。さらに、互換性のために、64ワークアイテムのWave64を実行するモードも設けられた。言い換えれば、Wave32とWave64の2つの論理ベクタ長をサポートしている。

Wave32を32-wayのSIMDで処理するRDNAアーキテクチャ
RNDAワークグループの全体像。Wave32とWave64の2つの論理ベクタ長をサポートする

 RDNAでは、従来SIMDユニットと命令ポートが共有されていたスーパーファンクションユニットも分離された。また、SIMD32に1つづつスカラユニットなどの付加ユニットも加えられている。RDNAではCUは2個づつバインドされて、ローカルデータシェアメモリやスカラデータキャッシュを共有する。このバインドをワークグループプロセッサ(WGP)と呼んでいる。

 RDNAでは64アイテムのWave64は、32-way SIMDで2サイクルかけて実行される。下のスライドでは2つのSIMD32で実行されるように見えるが、実際にはそれぞれのSIMD32は別なレジスタにアクセスするため、1つのWave64を実行することはできない。

これはWave64を2つのSIMD32で実行するという図ではなく、64アイテムのワークロードを並列処理できるという説明

レイトレーシングは今後のRDNAで採用

 メモリ階層では、新たに128KBのL1キャッシュが設けられた。L1は、WGPと内部ファブリックの間に挟まれ、複数のWGPで共有される。より重要な点は、L1キャッシュの増設に合わせて、L1キャッシュより内側のWGP寄りにレンダーバックエンドが配置されたことだ。従来、PC向けのGPUでは、RBはメモリコントローラに接続されていた。RDNAではレンダーバックエンドが内部に取りこまれたことで、GPU内部のネットワークで転送するカラーデータの圧縮化が可能になった。

キャッシュ階層とレンダーバックエンドが大きく変わった
新たなキャッシュ階層図

 このアーキテクチャは、ディファードレンダリングなどの最近のレンダリング技術にも適合している。また、SoC(System on a Chip)やCPUへの組み込みの際も有利になる。内部ファブリックへのトラヒックの負担が小さくなるからだ。

 Navi10の最大の疑問の1つだったレイトレーシングについては、今回は専用ハードウェアが搭載されていないことが明らかにされた。しかし、次世代PlayStationと次世代XboxはNaviアーキテクチャでレイトレーシングアクセラレーションハードウェアを搭載するとみられている。AMDは、次世代のRDNAアーキテクチャで、ハードウェアレイトレーシングが搭載されるビジョンも明らかにした。

AMDが示したレイトレーシングビジョン