ROPシステムに一長一短の今世代のGPU

あまり派手さはないが、レンダリングの最終プロセスを司るROPシステムについても見ておこう。

ATI Radeon HD 5870のレンダーバックエンド数は、Radeon HD 4870の16基の二倍にあたる32基となった。ただし、ブロックダイアグラム上では8基しかないように見えるので、解説が必要だろう。

Radeon HD 58x0のメモリコントローラ及びレンダーバックエンド周りのクローズアップ。レンダーバックエンド(ROPユニット)は4基のメモリコントローラに2基ずつ実装され、計8基と言う構成。ただし、スループット的には1基あたり2×2の4ピクセルの出力が可能であるため32基相当

Radeon HD 48x0のメモリコントローラ及びレンダーバックエンド周りのクローズアップ(参考)。Radeon HD 58x0は、基本的にこれと同じデザインだが、Radeon HD 58x0ではROPユニットが二倍になっている。なお、Radeon HD 58x0のメモリコントローラのバス幅は256bitのままでRadeon HD 48x0から変わっていない

ATI Radeon HD系のレンダーバックエンドは1クロック当たり2×2の4ピクセル(4テクセル)出力が可能となっているので、Radeon HD 5870の場合、4ピクセル×8基=32ピクセルの出力ができるので「32基相当」という算段だ。

ATIによれば、Radeon HD 48x0で削除されたという高速バッファクリア専用ロジックを、Radeon HD 58x0では復活させたとのことだが、それ以外にRadeon HD 58x0のROPユニットそのものについて、機能面の大きな変化はない。

ROPユニットは、ブロックダイアグラムを見て分かるように4つの島で構成されている。各島はROPユニット(4基相当×2)と、32bit幅×2の64bit幅メモリコントローラ、そして128KBのL2キャッシュと接続されている。

Radeon HD 58x0のROPユニットのスループット性能の、先代Radeon HD 48x0との比較

メモリコントローラは、エラーチェック機構としてEDC(Error Detection Code)機能も組み込まれている。EDCは、高クロックのGDDR5メモリを利用することが前提となるRadeon HD 58x0において、データの信頼性を向上させることが目的で採用となった。科学技術計算などのHPC用途(≒GPGPU用途)におけるデータの信頼性向上はもちろん、ビデオメモリのオーバークロック時の描画不全やクラッシュを未然に防ぐことにも一役買うはずだ。

対するNVIDIAのGeForce GTX 4x0では、ROPユニットは8基ずつが、1つのグループにまとめられており(ROPパーティション)、このROPパーティションが6基あるため、8ROP×6ROPパーティションで総計48基のROPユニットを実装する。メモリコントローラはこの6個のROPパーティションと数の揃った6基構成。各メモリコントローラは32bit幅×2=64bit幅で、ビデオメモリバス幅は総計64bit×6メモリコントローラ=384bit、ということになる。6基のROPパーティションとメモリコントローラは、4基あるGPCで共有しており、各ROPパーティションや各メモリコントローラがどれか1つのGPC専用に割り当てられているわけではない。

GeForce GTX 4x0の全体ブロックダイアグラム。ROPユニットはL2 CACHEを取り巻く、8個のマスが6つの島で描かれている部分

各ROPユニットは、1基あたり32bit整数ピクセルを1クロック、16bit浮動小数点(64bit)ピクセルを2クロック、32bit浮動小数点ピクセルを4クロックで出力できる能力を持つ。また、GPGPU用途では重要となるアトミック(Atomic)命令の場合には、同一アドレスへの処理なら先代GeForce GTX 2x0に対して約20倍も高速化され、隣接したアドレスへの処理においても約7.5倍の高速化を実現したとされる。これは、もちろん前述したキャッシュシステム改良の恩恵によるものだ。

Radeon HD 5870とGeForce GTX 480の両者を比較してみると、1GPU構成ではROPユニットの総数、メモリコントローラのビット幅に優れるGeForec GTX 480の方が高解像度レンダリングに優れるとは思うが、先代からのアーキテクチャ改善という意味においては、両社それぞれ一長一短だという印象を受ける。

GeForce GTX 480はビデオメモリバスを先代GeForce GTX 280から128bitも削って384bitにしてしまったし、Radeon HD 5870は先代Radeon HD 4870からROPユニットを倍化したのにビデオメモリバス幅は先代の256bitから変えないというアンバランスさがある。

NVIDIAは「ビデオメモリバス幅は減ったが、採用ビデオメモリを先代GeForce GTX 280のGDDR3からGDDR5に変えたことでメモリ帯域は向上しているので、実効性能は落ちない」と主張するが、実際にはそうではない。GDDR5は駆動クロックの4倍のデータレートが得られるため、同クロック駆動のGDDR3と比較して倍の帯域が得られるが、それはあくまでバースト転送時(連続するアドレスからの連続データ転送。言い換えればシーケンシャルアクセス)でのこと。ランダムアクセスでの実効帯域はやはりビット幅が広い方が優秀になる。そもそも「GPUにおけるメモリのランダムアクセスは、GPGPU用途において重要視すべきポイント」と説いてきたNVIDIAにとって、ここは自己矛盾ポイントだとも言える。

ATIのRadeon HD 5870も、採用GDDR5ビデオメモリクロックを向上させ、見かけ上のメモリ帯域を広げ、さらにROPユニットの倍増で見かけ上のフィルレートは2倍強になったが、ビデオメモリバス幅が変わらないので高負荷時のスループットは、スペック表記のような素晴らしい値にはなりにくいと推察される。

だからこそ、この部分の弱点をカバーするために、両社、前述したような贅沢な先進的なキャッシュシステムを採用したのかもしれない。