ニュース
西川善司の3DGE:次世代GPU「Navi」の詳細とRadeon Softwareの新機能をレポート。操作遅延を低減する「Anti-Lag」は本当に効くのか?
そこで本稿では,詳報では説明できなかったNaviの新要素や,Radeon向けの新機能を紹介しよう。
西川善司の3DGE:次世代GPU「Radeon RX 5700」シリーズの秘密に迫る。レイトレーシング対応は第2世代Naviに持ち越し?
北米時間6月10日,AMDは,E3 2019のタイミングに合わせて,独自の新製品発表イベントを開催。それに先駆けて,メディア関係者向けの事前説明会も行った。本稿では,事前説明で開示されたAMDの次世代GPU「Navi」に関する詳細をレポートしよう。
RDNAにおけるWave32とWave64の処理フロー
Naviでは,グラフィックスレンダリングパイプラインのアーキテクチャが従来の「GCN」(Graphics Core Next)系からRDNAへ変更となった。その概要については第一報で説明しているが,本稿でも少し復習しておこう。
GCNアーキテクチャのGPUは,データスレッド(Wave)が64要素固定(Wave64)だったのに対して,RDNAアーキテクチャのGPUでは,32要素のデータスレッド(Wave32)にも対応するようになったのが大きな違いである。しかし,演算ユニットである「Compute Unit」(以下,CU)自体の構造は,大きく変わってはいない。
GCNでは,CU内にある4基のSIMD16演算器が,4つのWave64を4クロックかけて処理する仕組みだった。それに対してRDNAのWave32モードでは,4基のSIMD16演算器を2基のSIMD32演算器として扱い,2つのWave32を1クロックで処理する仕組みだ。
GCNでは,4基のSIMD16演算器が4つのWave64を4クロックかけて処理するわけだが,条件分岐やループ制御などを行うスカラユニットは1個しかないので,あるWave64がスカラユニットを利用していると,ほかのWave64はスカラユニットを利用できない。
これに対して,RDNAは,2つのSIMD32演算器がWave32を同時処理するわけだが,どちらの演算器でも条件分岐やループ制御を処理できるように,スカラユニットが増設されているのだ。
GCNにおけるWave64実行の流れを説明したスライドを見ると,4基のSIMD16演算器に対して,スカラユニットが1基しかないのが分かるだろう。
それに対してRDNAでは,SIMD32演算器それぞれにスカラユニットが1基ずつあるので,分岐命令などを2つ同時に発行できる。
第一報でも説明したとおり,互換性維持のためにRDNAもWave64の動作モードを備えているのだが,Wave64モードでも,2つのSIMD16演算器を1つのSIMD32演算器として動作する形態は変わらない。シンプルに,2つのSIMD32演算器で2サイクルかけて処理するイメージとなるわけだ。
ビデオエンジンの進化とDisplayPort 1.4+DSC対応
続いては,詳報で説明しきれなかったNaviの新機能を紹介していこう。
具体的には,H.265(HEVC)の4K/60pリアルタイムデコードと,4K/90pのリアルタイムエンコードに対応した。それに加えて,H.264では4K/150p,8K/30pのリアルタイムデコードと,4K/90pのエンコードに対応。これは,競合であるGeForce RTX 20シリーズとおおむね肩を並べる性能と言えよう。
Naviでは,ディスプレイ出力を行う機能ブロックの「Display Engine」も新しくなった。
近年のRadeonといえば,Display Engineへの新機能搭載におよび腰という印象があった。たとえばHDMI 2.0は,NVIDIAが2014年にGeForce GTX 900シリーズで対応したのに対して,AMDは,2016年発表のRadeon RX 400シリーズでようやく対応といった具合に,2年ほども遅れている。
E3 2019開幕前に行われた技術説明会でも,「Naviは,8K/60fps出力に対応する」という説明があったので,NVIDIAに先んじてHDMI 2.1対応をするのかと期待したのだが,そうではなかった。
Naviは8K出力に対応するが,それはDisplayPort 1.4による対応となる。AMDの説明では,「HDMI 2.1は現状まだ不要である」というものだったが,Naviの設計段階で,HDMI 2.1対応のトランスミッタIPがなかった,というのが実情だろう。
ただ,Radeonファンはがっかりすることなかれ。HDMI 2.1対応への布石は,ちゃんとNaviに盛り込まれている。それはVESAの映像信号圧縮規格である「Display Stream Compression」(以下,DSC)の最新版「DSC 1.2a」への対応だ。
DSCとは,4K/240Hzのような超ハイフレームレート映像や,8K/HDR/60fpsのような多ビットによる超高解像度モードへの対応に必須の圧縮技術で,
なお,DSCはロッシー,つまり非可逆な圧縮法だ。そのため,DSCで映像を圧縮すると,厳密には画質が劣化してしまう。ただ,映像技術の標準化団体であるVESAは,DSCは視覚上,画質劣化が認識できない(Visually Lossless)と説明している。非可逆圧縮なので,映像制作現場では歓迎されない傾向にあるが,フレームレート至上主義のゲーマーや,そこまで画質にうるさくない一般消費者には有効と言われる技術だ。
ちなみに,MPEGのようなフレーム相関圧縮技術とは異なり,DSCは走査線(横方向のライン)相関圧縮技術であり,遅延時間は映像フレームの数ライン分にしかならないので,事実上ほぼ遅延ゼロということになっている。その代わり,現行のMPEG規格は100分の1以上という高い圧縮率を実現するのに対し,
今後普及していくであろう8K/60fpsの映像になると,DSC対応の有無が重要なポイントとなる可能性がある。その点,NaviのDisplay Engineは,必要なスペックを有していると言えよう。
ゲームの操作遅延を低減する「Anti-Lag」
Naviのアーキテクチャは,技術的視点で見るととても興味深い。しかし,ハードウェアレイトレーシング機能への対応は,次世代以降へ持ち越されてしまった。「ゲーマーにとって,Naviの魅力はどこにあるのか?」と問われた場合,「その将来性に期待してくれ」という回答になってしまう。
Navi世代GPUを搭載する初の製品となったRadeon RX 5700シリーズにしても,スペックに対して妥当な価格設定という印象はある。とはいえ,同日発売となるZen 2コアベースの第3世代RyzenことRyzen 3000シリーズのインパクトが強いこともあり,相対的にNaviの印象は薄い。
具体的には,Radeonユーザー向けのドライバソフト兼コンパニオンソフトである「Radeon Software Adrenalin Edition」(以下,Radeon Software)のアップデートに関する話題だ。
AMDは,新しいRadeon Softwareに3つの新機能を搭載するという。1つめが「Radeon Anti-Lag」(以下,Anti-Lag)だ。
Anti-Lagとは,ゲームプレイ時の操作遅延を低減させる機能であるという。ゲームプログラム側で特別な対応は必要なく,機能を有効にするだけで,最大で約31%も操作遅延が低減できる夢の機能,とAMDは主張していた。
Anti-Lagが短縮するという入力遅延とは,いったい何を指すものか。AMDによるスライドを使って説明しよう。なお,これらのスライドは,分かりやすくするためにやや現実離れした状況を想定している。大昔のPCゲームなどは,実際にスライドのような作りであったが,現代のゲームはもっと複雑だ。
また,ここで言う遅延とは,プレイヤーによる入力が発生してから,その結果が映像に反映されるまでの時間(フレーム単位)を意味する。
さて,1枚めのスライドは「CPUが行うプレイヤーからの入力処理」と「入力を反映したグラフィックス表示」を逐次行うゲームプログラムを想定したもので,入力遅延は1フレームとなっている。最速で入力の結果を映像に反映しても次のフレームからになるので,遅延がゼロになることはない。
いずれにせよ,GPUの描画処理が手一杯になると,その次にCPUが行うプレイヤーからの入力処理を映像に反映するには,GPUの描画処理が終わるのを待たなくてはならない。
プレイヤーが1フレームめの映像を見て操作をする。しかし,GPUが2フレームめの描画に時間を取られてしまうと,入力操作が反映されるのは4フレームめの映像となり,遅延時間は2フレーム分となってしまうわけだ。
GPU処理の終わりを待つような状況では,CPU処理を急いで行う必要はない。むしろ,CPUによる入力処理のサイクルをペースダウンさせるほうが,プレイヤーの入力が次の映像に反映されるまでの時間を短縮できるのではないか。
つまり,CPU側で動いている入力処理を含めたゲームの処理サイクルを,フレームレートに合わせて動的に調整するというのが,Anti-Lagの正体と言えよう。
Anti-Lagは,Navi世代のGPUではDirectX 9およびDirectX 11ベースのゲームに対して適用できるという。一方,Vega世代以前のGPUになると,DirectX 11ベースのゲームだけが対象となるそうだ。DirectX 9ベースへの対応がNavi世代に限定されている理由は不明である。Naviの優位性をアピールするためか,あるいはDirectX 9対応モードを実装する手間を減らしたかったのだろうか。
ゲームプログラム側を改造することなくAnti-Lagを働かせられるのは,GPUドライバ側でDirectX 9/11のAPIコールにAnti-Lagのメカニズムを仕込んでいるためだ。つまり,ゲームプログラム自体がグラフィックスパイプラインを制御するDirectX 12では,Anti-Lagは機能しない。
AMDの説明によると,「2フレームの遅延を1フレームに短縮できた」と説明をしていたわけだが,「World War Z」を使ったデモでは,約3フレーム+αの遅延を2フレーム+αに短縮できていた。
なお,2フレーム以上も遅延している理由は,現代のゲームでは,ある映像を描画している間に1フレーム前の映像を表示する仕組み,いわゆる「ダブルバッファ法」を活用しているためだ。ダブルバッファ法では,原理上2フレームの入力遅延が生じるので,Anti-Lagでも短縮はできない。
それに加えて,FreeSyncのような可変フレームレート描画および表示が可能な環境だと,CPUが行うプレイヤーからの入力処理と,入力を反映したグラフィックス表示は不規則になる。そのうえ現代では,CPUが行う入力処理とGPUによる描画処理を分離して非同期で行う設計のゲームも多い。この場合,遅延時間自体が安定しない可能性もあろう。
実際のプレイで遅延短縮の効果を感じられるかどうかは,ゲームタイトルや環境に影響されることが多そうだ。
超解像処理Image SharpeningとポストエフェクトライブラリFidelityFX
AMDの競合であるNVIDIAは,Turing世代GPUに推論アクセラレータ「Tensor Core」を搭載。これを活用して,ゲームグラフィックスにAIベースの画像処理を適用する「Deep Learning Super Sampling」(以下,DLSS)という機能を提供している。
RadeonにもDLSS的な機能を求める声があったのだろう。AMDが開発したDLSS的な機能が「Radeon Image Sharpening」(以下,Image Sharpening)である。
これは,Radeon Softwareの設定でImage Sharpeningをオンにするだけで,ゲームグラフィックスが超解像処理されるという機能であるという。この機能もNaviだけでなくVega世代以前のGPUでも利用可能だ。
Image Sharpeningの正体は,Compute ShaderによるGPGPU処理で実装したポストエフェクトフィルタである。グラフィックスレンダリングと非同期,かつオーバーラップ実行できるCompute Shaderで実装しているのがポイントで,AMDによると,Image Sharpeningによるグラフィックス性能への悪影響は1%前後だという。
Image Sharpeningは,グラフィックスの陰影を鮮鋭化するポストエフェクトである。Image Sharpeningの流れを簡単に説明してみよう。
まず,処理対象となるピクセルの周辺にあるピクセルにおいて,陰影(輝度)がどう変化しているかに着目する。そして,実際のレンダリング解像度よりも一段高い解像度とした場合に,周辺ピクセルの輝度がどう変化するかを算術的に推測する。そして,推測した輝度の変化を周辺ピクセルに適用するのだ。実質的には,鮮鋭度を増やすシャープネスフィルタ的な動作といったところか。
ちなみに,Image Sharpeningを開発したのは,広く使われているポストプロセス型アンチエイリアス技術「FXAA」の発明者であるTimothy Lottes氏である。元NVIDIAのソフトウェアエンジニアで,Epic Gamesに勤務したのち,AMDに合流したばかりという経歴の持ち主だ。
FidelityFXはシェーダコードライブラリなので,一般のゲーマーが使うものではなく,ゲーム開発者向けのものだ。FidelityFXに含まれるシェーダコードはNavi専用というわけではなく,AMD以外のGPU,それこそNVIDIA製GPUでも利用できる汎用ライブラリとなっている。
整理すると,FidelityFXに含まれるCASフィルタをRadeon Softwareからワンタッチで使えるようにしたのが,Image Sharpeningというわけだ。
詳報でも触れたとおり,Naviは,Vega系Radeon GPUをすぐに置き換えるものではない。今回の発表は,むしろ「今後もNaviの進化にご期待ください」という予告的な内容となってしまった印象もある。しかし,AMDのGPUに対するエンジニアリング技術の高さについては,感心させられるものがあった。
また,Radeon Softwareの新機能は,アイデア商品の見本市みたいな印象だが,それはそれなりに楽しそうではある。種を明かしてしまえば「そういうことか」というAnti-Lagも,ゲームによっては効果がありそうなので,実際に対戦プレイのゲームで使ってみたいという気持ちになった。
ポストエフェクトフィルタのImage Sharpeningも,オンとオフを切り換えて映像の見栄えがどう変わるのか楽しんだり,4Kテレビで疑似4Kゲームをプレイしたりと,なかなか遊べそうである。
もしかすると,AMDによる今回のGPU関連の発表で,一番わくわくしているのは,Vegaやそれ以前のRadeonユーザーかもしれない。
西川善司の3DGE:次世代GPU「Radeon RX 5700」シリーズの秘密に迫る。レイトレーシング対応は第2世代Naviに持ち越し?
北米時間6月10日,AMDは,E3 2019のタイミングに合わせて,独自の新製品発表イベントを開催。それに先駆けて,メディア関係者向けの事前説明会も行った。本稿では,事前説明で開示されたAMDの次世代GPU「Navi」に関する詳細をレポートしよう。
AMDのE3 2019特設Webページ(英語)
4GamerのE3 2019記事一覧
- 関連タイトル:
Radeon RX 5000
- この記事のURL: