ニュース
「Radeon RX 6800」の秘密兵器はCPU由来の「Infinity Cache」だ
2020年11月18日 23:00
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の採用やジオメトリ/テッセレーション部分の最適化といった「クロックあたりの性能の向上」に集約されるという。
レイトレーシングに関する実装は最小限
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ワーキングセットを保持しておくことで、インターセクションの遅延を抑えているのである。
そもそもDirectXにおけるレイトレーシングの実装自体、専用のハードウェアを用いる必要がなく、従来の汎用演算ユニットで対応可能なのだが、Radeonではレイアクセラレータというシンプルな実装を行なうだけで、ソフトウェアで処理するより高速に行なえるようにした。ちなみにレイトレーシングにおけるノイズ削減に関しては、同社独自の「FidelityFX」によって実現していくとのことだった。
Radeonの開発チームは、実用的なリアルタイムレイトレーシング性能と品質を、現時点の半導体技術で実装するのは現実的ではないと考えている。また、既存のレンダリング技術でも、さまざまな手法が増えてきていて、レイトレーシングに見劣りしないレベルのグラフィックスを実現できている。そのためレイトレーシングの実装にコストを大きく割かなかった。
もっとも、RDNA 2では汎用演算に使われるCompute Unitに関しては強化されている。まず、異なる精度の整数/浮動小数点演算が混在する操作が可能となった。これはTensor演算への対応のためとされているが、つまりはTensorコア的な振る舞いもできるという理解でいいだろう。
また、レンダーバックも強化し、1サイクルあたり8つの32bitピクセルが扱えるようになった。ラスタライゼーションとも連携し、可変レートシェーディングにも対応した。このほか、DirectX 12 Ultimateで定められているメッシュシェーダ、サンプラーフィードバックにも対応した。
最大の秘密兵器はInfinity Cache
上の説明で何度か登場している「Infinity Cache」だが、じつはこれがRDNA 2アーキテクチャのなかの最大の秘密兵器だ。
現代的なGPUにとって最大のボトルネックとなっているのがメモリである。GPUは2年で性能を2倍にするのは簡単だが、メモリのバンド幅が2倍になるのは難しい。単純にバス幅を増やすのが一番単純明快だが、ピン数が増え基板配線が煩雑になる。するとメモリの世代交代やそれに伴うクロックの高速化といったところだが、標準化のしがらみもあってスムーズにはいかない。そのためGPUは過去に、さまざまなメモリ圧縮技術や、広帯域メモリ技術の導入を試みてきた。
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で接続した。
これにより、GDDR6の4倍ものピーク帯域性能を達成。データの移動にかかるエネルギーも、GDDR6だと7~8pJ(ピコジュール)消費するのに対し、Infinity Cacheだと1.3pJで済み、4Kタイトルの場合、最大で58%ものキャッシュヒット率を実現。結果的に256bitバスで結ばれたGDDR6と比較して、2.4倍以上の電力あたりの性能を実現したとしている。
また、クロック向上に対する性能のスケーリングにも優れており、とくに2GHz超の帯域において性能向上の鈍化を抑えられる。レイテンシも48%削減でき、無駄な電力と性能低下を抑えられた。ちなみにInfinity Fabricのバンド幅は約1,500GB/sだが、メモリアクセスが多発する場合、さらに550GB/s向上するブースト機能も備える。
Radeon RX 6000シリーズは、従来のRadeon RX 5700 XTの2倍の性能を達成しているが、その実現の裏には、RyzenやEPYCといったCPU開発チームの功績があったと言ってもいいだろう。