対するNVIDIAのGeForce GTX 4x0のテクスチャキャッシュは、1SM内の4つのテクスチャユニットから共有される構成で、その容量は各12KBだ。

さらにGeForce GTX 4x0では、用途別に容量構成を変更できる64KBのオンチップメモリ(Configurable On-Chip Memory)も各SMごとに搭載されている。

これは、前述したSM内のロード/ストアユニットが読み書きするデータのL1キャッシュ(=汎用データキャッシュ)として使うもよし、スレッド内同期通信を行うためのスレッド間共有メモリ「Shared Memory」として利用するもよし……の、いわばスクラッチパッドメモリ的な多目的な高速メモリ領域になる。NVIDIAによれば、L1キャッシュ16KB+共有メモリ48KB、あるいはL1キャッシュ48KB+共有メモリ16KBという2通りの使い方ができるとのことだが、3Dグラフィックスプロセッサの"GeForce"として動作する場合は、L1キャッシュ16KB+共有メモリ48KBの構成の方が採択される。なお、このShared Memoryは、キャッシュメモリとしての用途以外に、溢れレジスタやスタックポインタの待避場所としても利用されるという。

GeForce GTX 4x0の全体ブロックダイアグラム。L2キャッシュは全てのGPCで共有される設計

Streaming Multi-Processor(SM)のクローズアップ。テクスチャキャッシュとL1キャッシュを別々に搭載するGeForce GTX 4x0

少し前でも触れたように、L2キャッシュ容量はGeForce GTX 2x0の256KBの3倍に相当する768KBとなったが、それだけでなく「統合型データキャッシュ」(Unified L2 Cache)となったことも特記しなければならないだろう。

GeForce GTX 2x0の時のL2キャッシュは「テクスチャL2キャッシュ」(Tex L2)の名称でキャッシュされるのはテクスチャデータのみであったが、GeForce GTX 4x0ではキャッシュされるデータの種類に制限はなく、シェーダコアからのメモリアクセスはもちろん、ROPシステムからのメモリアクセスについてもキャッシュされるようになった。

さらに、このL2キャッシュはライトバックキャッシュになったことも大きな進化ポイントだ。ライトバックキャッシュとはメモリの書き出しがあったとき、そのアドレスがキャッシュメモリでキャッシングされている場合は、まずその書き出しをL2キャッシュメモリ上に対して行うだけにとどめ、そのアドレスがキャッシュから排除される際にグラフィックスメモリ側への実書き出しを行う仕組みのこと。つまり、ある一定のパターンで同一アドレスへの読み書きが集中する場合は、読み出しも書き込みもL2キャッシュ効果による高速化が見込めるのだ。

GeForce GTX…GeForce GTX 4x0のキャッシュシステムの階層相関図

GeForce GTX 4x0のキャッシュシステムの利用パターン相関図。レンダリングパイプラインにおける内部データのやりとりにおいてもキャッシュシステムを積極利用する

こうしてみてくると、キャッシュシステムについてはGeForce GTX 4x0が、Radeon HD 58x0よりも先進的なアーキテクチャになっていることが見て取れる。

NVIDIAが、キャッシュシステムの強化に力を入れたのは、やはりNVIDIAがGPGPUを重視しているからだろう。一般的な3Dグラフィックス用途において主たるメモリアクセスとはテクスチャアクセスやレンダリング結果の書き出し、Zバッファへのアクセスであり、メモリアドレス的見地からすれば、そのアクセスパターンには局所性が高いという特徴が見られる。これに対し、NVIDIAのGPGPUプラットフォームである「CUDA」や、DirectX 11のもう一つの新要素であるDirectComputeを利用したGPGPUでは、CPUプログラムに近い、より複雑なロジックを走らせることになるため、ランダムかつ広範囲なメモリアクセスが頻発すると想定される。そうしたランダムアクセスを高性能にこなすために実装されたのが、今回のGeForce GTX 4x0の新キャッシュシステムなのだ。

確かに、GPU向けとしては過剰なキャッシュシステムではあるが、3Dグラフィックス処理系の高効率化にも貢献するので、無駄ということはない。

GeForce GTX 4x0(GF100)とGeForce GTX 2x0(GT200)とのキャッシュシステムの違い