ニュース

「Radeon RX 6800」の秘密兵器はCPU由来の「Infinity Cache」だ

RDNA 2アーキテクチャの特徴

 AMDのRDNA 2アーキテクチャを採用した新世代GPU「Radeon RX 6000」シリーズについての情報が全面的に解禁となった。その性能的な解析については同時掲載のHothotレビューを参照されたいが、ここではRadeon RX 6000シリーズのアーキテクチャ側面について解説したい。

従来のRDNAと比較して54%電力効率が改善したRDNA 2

 既報のとおり、RDNA 2は従来のRDNAと同じ7nmプロセスを採用している。つまりトランジスタの特性的には大きく変わるわけではない。それであるにも関わらず、電力効率が54%改善しているという。

 数字的に見ると、Radeon RX 6900/6800のトランジスタ数は268億で、競合のGeForce RTX 3090/3080が286億であることを考えると抑えめ。製造プロセスの世代の違いもあり、ダイサイズも519.8平方mm対628平方mmと、コンパクトに抑えられている。

 これらの数字の比較だけで言えば、ほぼ拮抗する性能をより安価に(RX 6900が999ドル、RTX 3090が1,499ドル)提供できるのはなんら不思議ではない。ただ、同じ7nmプロセスのRDNAから54%もの電力効率改善が驚異的なのだ。

 同社によると、この54%の内訳は、高性能ライブラリの採用や速度重視のパイプラインの再設計、CPUでも採用された高クロック設計といった「動作クロックの向上」、クロックゲーティングやパイプラインの再配置、データの移動を抑えた「CACと電力の最適化」、Infinity Cacheの採用やジオメトリ/テッセレーション部分の最適化といった「クロックあたりの性能の向上」に集約されるという。

RDNA 2のアーキテクチャ
RDNA 2アーキテクチャの概要
同等のクロックでは半分の電力、同等の電力では1.3倍以上のクロックを実現
電力効率改善の内訳

レイトレーシングに関する実装は最小限

 GeForce RTXではレイトレーシングを専門に行なう「RTコア」と、AI処理を高速化する「Tensorコア」を加え、レイトレーシングのノイズ削減対策を行なっているのに対し、Radeonは1CU/1クロックあたり4本のレイ(光線)とボックス、または1本のレイとトライアングルのインターセクション(交差)処理を行なう「レイアクセラレータ」を内包するに留まっており、GeForce RTXほど大規模な実装を行なっていない。そのためリアルタイムレイトレーシング性能はGeForce RTXに劣る。

 それでもRDNA 2はこのレイアクセラレータにより、従来のRDNAの10倍以上のレイトレーシング性能を実現している。その手助けをしているのが、128MBのL3キャッシュ「Infinity Cache」だ。

 レイトレーシングを実現するうえで重要な手法の1つに、バウンディングボリューム(BVH)がある。オブジェクトを外接する大きなボックスで囲い、レイの軌跡の交差を判定するが、BVHではこのボックスをツリー状に管理し、階層型とすることでインターセクションテストの回数を減らせる。Infinity Cacheではより多くのBVHワーキングセットを保持しておくことで、インターセクションの遅延を抑えているのである。

レイアクセラレータの実装
Infinity Cacheにより、レイアクセラレータという最小限の実装でもソフトウェア処理より10倍高速

 そもそもDirectXにおけるレイトレーシングの実装自体、専用のハードウェアを用いる必要がなく、従来の汎用演算ユニットで対応可能なのだが、Radeonではレイアクセラレータというシンプルな実装を行なうだけで、ソフトウェアで処理するより高速に行なえるようにした。ちなみにレイトレーシングにおけるノイズ削減に関しては、同社独自の「FidelityFX」によって実現していくとのことだった。

 Radeonの開発チームは、実用的なリアルタイムレイトレーシング性能と品質を、現時点の半導体技術で実装するのは現実的ではないと考えている。また、既存のレンダリング技術でも、さまざまな手法が増えてきていて、レイトレーシングに見劣りしないレベルのグラフィックスを実現できている。そのためレイトレーシングの実装にコストを大きく割かなかった。

RDNA 2によって実現するレイトレーシング。どちらかといえばエフェクトの強化の意味合いが強い

 もっとも、RDNA 2では汎用演算に使われるCompute Unitに関しては強化されている。まず、異なる精度の整数/浮動小数点演算が混在する操作が可能となった。これはTensor演算への対応のためとされているが、つまりはTensorコア的な振る舞いもできるという理解でいいだろう。

 また、レンダーバックも強化し、1サイクルあたり8つの32bitピクセルが扱えるようになった。ラスタライゼーションとも連携し、可変レートシェーディングにも対応した。このほか、DirectX 12 Ultimateで定められているメッシュシェーダ、サンプラーフィードバックにも対応した。

RDNA 2の最小構成単位であるCompute Unitの構造
精度が異なる演算も可能になった
レンダーバックを改善し、可変レートシェーディングに対応した
DirectX 12 Ultimateに対応

最大の秘密兵器はInfinity Cache

 上の説明で何度か登場している「Infinity Cache」だが、じつはこれがRDNA 2アーキテクチャのなかの最大の秘密兵器だ。

 現代的なGPUにとって最大のボトルネックとなっているのがメモリである。GPUは2年で性能を2倍にするのは簡単だが、メモリのバンド幅が2倍になるのは難しい。単純にバス幅を増やすのが一番単純明快だが、ピン数が増え基板配線が煩雑になる。するとメモリの世代交代やそれに伴うクロックの高速化といったところだが、標準化のしがらみもあってスムーズにはいかない。そのためGPUは過去に、さまざまなメモリ圧縮技術や、広帯域メモリ技術の導入を試みてきた。

従来のキャッシュ階層
RDNA 2のキャッシュ階層

 AMDがそのなかで見出した答えの1つが、GPUに内包するキャッシュだ。キャッシュはGPU内部にあるためレイテンシはきわめて短く、データの移動にかかるエネルギーもごくわずかで済む。AMDは、フルHDや1440p、4K解像度において、容量128MB程度のキャッシュが、ヒットレートも高く効率的であると考えている。

 ただキャッシュはDRAMではなくSRAMであるため、容量密度が低く、128MBもの大容量を実装しようとするとエリアコストがかかってしまう難点があった。そのためこれまでは4~5MB程度の容量しか実装してこなかった。

 そこでRadeonの開発チームが着目したのは、CPUの開発チームで採用されたL3キャッシュであった。サーバー向けのEPYCに採用されているL3キャッシュは、容量32MBでダイサイズはわずか27平方mm。これはRDNAアーキテクチャのL2キャッシュの4倍に相当する容量密度だという。RDNA 2ではこのキャッシュデザインを採用し、GPUとは16×64b/1.94GHz駆動のInfinity Fabricで接続した。

キャッシュのヒット率と解像度の関係。容量128MBが1つの妥協点となる
EPYCプロセッサに採用されている32MBのL3キャッシュ。面積はわずか27平方mmしかない

 これにより、GDDR6の4倍ものピーク帯域性能を達成。データの移動にかかるエネルギーも、GDDR6だと7~8pJ(ピコジュール)消費するのに対し、Infinity Cacheだと1.3pJで済み、4Kタイトルの場合、最大で58%ものキャッシュヒット率を実現。結果的に256bitバスで結ばれたGDDR6と比較して、2.4倍以上の電力あたりの性能を実現したとしている。

 また、クロック向上に対する性能のスケーリングにも優れており、とくに2GHz超の帯域において性能向上の鈍化を抑えられる。レイテンシも48%削減でき、無駄な電力と性能低下を抑えられた。ちなみにInfinity Fabricのバンド幅は約1,500GB/sだが、メモリアクセスが多発する場合、さらに550GB/s向上するブースト機能も備える。

Infinity Fabricで接続されるキャッシュ
バンド幅を大幅に改善し、データの移動を抑えることで消費電力を抑えた
Infinity Cacheの搭載により、高クロックでの性能も改善するという
メモリのレイテンシが低下し、電力消費を抑えた
ワークロードに応じてバンドを引き上げる機能も搭載する

 Radeon RX 6000シリーズは、従来のRadeon RX 5700 XTの2倍の性能を達成しているが、その実現の裏には、RyzenやEPYCといったCPU開発チームの功績があったと言ってもいいだろう。