DirectX 11世代となったことで両者で似通ったアーキテクチャ面も

前段まででアーキテクチャの素性と、それぞれの本質的な設計思想の違いが見て取れたと思うが、今世代のRadeonとGeForceは、「DirectX 11対応」「GPGPUを意識した設計」という共通思想もあることから、アーキテクチャ面で似た仕様になっている部分もある。ここではそのあたりの話題について見ていくことにしよう。

1つはSPの演算精度にまつわる仕様で、Radeon HD 58x0、GeForce GTX 4x0ともに演算精度に関してIEEE754-2008規格に準拠するものとなった。IEEE754-2008規格とは「浮動小数点演算における誤差の丸め方」などを規定したもので、計算時の例外処理事例などを、近代のHPC環境に合わせて規定した規格になる。IEEE235-2008規格では計算結果が無限大になるようなケースなどの例外処理時の割り込み発生の規定などもあるが、あくまでGPUが準拠しているのは演算精度のみになる。

なお、この規格準拠に伴って、RadeonもGeForceも、FP32とFP64両対応のFused Multiply Add(以下、FMA)命令への対応がなされることとなった。FMAとは、厳格な精度規定がなされた積和算手法のこと。これまでは、例えば32bitの積和演算「A+B×C」において、B×Cの演算結果が32bit幅を超えた場合に、32bitに"丸めて"から最後のAを足していたものを、FMAでは内部の演算は高精度で行い、丸め処理は最後の和算のあとに1回だけにして誤差を最小限にする。

Radeon HD 58x0のThread Processor(TP)の構成。1TPは5SP出構成されるが、うち1SPは超越関数計算能力を持つ特別仕様

GeForce GTX 4x0のSPのクローズアップ。FP32スカラ演算器と32ビット整数(Int32)スカラ演算器のデュアル構成となっているのが特徴的

「厳格な演算精度」の遵守は、3Dグラフィックス処理においてはRadeonでもGeForceでも正確に同じ描画を保証することに繋がる。例えば、隣接するポリゴンが微妙にオーバーラップするような、差が出やすい描画ケースにおいても、RadeonとGeForceとでレンダリング結果を同じにできるのだ。とはいえ、この規格準拠はGPGPU用途での演算精度の信頼性を高める狙いがあって行われたのであろう。

もう一つ、DirectX 10.x世代SM4.x対応GPU時代までは当たり前のように存在していた補間ユニットが、Radeon HD 58x0とGeForce GTX 4x0では削除された。

補間ユニットの役割とは何か。

ポリゴン上のピクセルと、そこに貼り付けるテクスチャの対応は、視線位置や視線との相対角度によって変わり、描画する1ピクセルがテクスチャ上の1テクセルに対応することはレアケースとなる。この対応を計算するのが「テクスチャアドレス計算」なのだが、この計算を受け持つのが補間ユニットになる。これまで、テクスチャヘビーなシェーダプログラムが動作したときに、単一の補間ユニットでは処理しきれない自体がままあり、補間ユニットがボトルネックになることがあった。そこで、今世代のGPUではRadeonもGeForceでも、この補間ユニットの役割をシェーダコア側にやらせるように設計が改良されている。

具体的には、Radeon HD 58x0では、SIMD Engine側のSPを起用して行うようになり、GeForce GTX 4x0では、SFUが補間ユニットの肩代わりをするようになっている。つまり、Radeon HD 5870では1600基のSPを、GeForce GTX 480では60基(64基の内の4基が無効化のため)を、補間ユニット用途に転用できるようになったということだ。全てが補間ユニットに転用されることはあり得ないが、少なくとも、これまでのように、補間ユニットがボトルネックになってテクスチャパフォーマンスが下がる確率は減ることになる。

また、副次的な効果として、今期のGPUは前述したように演算精度がIEEE754-2008準拠となったので、補間計算の演算精度が厳格に規定されることになり、RadeonとGeForceとでテクスチャ適用時の見た目に違いが出にくくなることも期待される。また、こうした補間ユニット機能のプログラマブル(シェーダ)プロセッサへの移管にともない、補間計算をプログラマブルに対応させる「Programmable Interpolation of Input」機能が、DirectX 11のSM5.0に新設されている。