GPUは低クロックで多くのゲートを並列動作させる

GPUはスループット(シングルスレッドの性能ではなく、全スレッドの合計の仕事量)重視のプロセサである。演算あたりのエネルギーを抑えるため、低電源電圧で低いクロックで処理する場合は、一定の処理性能を実現するためには、クロックに逆比例して多くの論理ゲートが必要となる。

現実には、ハイエンドのGPUをCPUの演算性能の仕様と比較すると、GPUは5~10倍の演算性能を持っており、低クロックのハンデを加えると10~30倍の演算器を搭載する必要がある。

GPUは、メモリアクセスが比較的規則的なので、ハイエンドCPUのように大きなL3キャッシュを持っていない。また、CPUはOut-of-Orderや投機実行などのシングルスレッド性能を向上させる複雑な制御機構を実装しており、命令処理の部分に大量のハードウェアをつぎ込んでいるが、GPUは簡単なIn-Orderの命令処理を行っており、この部分のオーバヘッドが少なくチップ面積を食わない。さらに、32スレッドとか64スレッドを纏めて命令のデコードや発行を行っており、CPUと比べると、演算に対するフェッチとデコードユニットのオーバヘッドが非常に小さい。

定量的なデータはないが、命令スレッドあたりのフェッチ、デコードオーバヘッドの削減と小さなLast Level Cache、それに7トラックの面積の小さい基本セルの採用に加えてチップサイズを大きくするなどの合わせ技で10~30倍の演算器の搭載を実現していると考えられる。

図3-15はNVIDIAのKepler GPUのチップ写真であるが、 CPUで言うとプロセサコアに相当するSMXと呼ぶユニットが3個入った領域が、上側の左右に2個、下側に3個あり、全部で15SMXが搭載されている。そして上側の中央の領域は命令の制御関係や1.5MBのL2キャッシュなどが収容されていると見られる。この写真をみてもキャッシュの領域は小さく、論理ゲートが多数詰め込まれていることが分かる。

図3-15 NVIDIAのKepler GPU GK110のチップ写真。この色分けは機能の違う部分を示すためで、実際のチップに各種の色が付いているわけでない