このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第151回

省電力で2倍の性能 NVIDIA「Kepler」の今後はTSMC次第?

2012年05月14日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

スケジューラーと倍速動作を廃止し
その分シェーダーを増やして性能を向上

 GeForce GTX 680はシェーダーの数がざっと3倍になったのだから、性能もさぞかし上がるだろう……と思うと、そこまでの差はついていない。というのも、Fermi世代ではCUDAコアが倍速動作になっているからだ。例えばGeForce GTX 580なら、GPUコア全体は772MHzだが、CUDAコアは1544MHzで動作している。これを加味すると、そこまでの性能差はないことになる。ラフな計算であるが、性能が「CUDAコアの数」×「CUDAコアの動作周波数」に比例すると考えると、GeForce GTX 580対GeForce GTX 680の性能比は以下のようにほぼ倍となる。。

  • 512(個)×1544(MHz) : 1536(個)×1006(MHz) ≒ 1:1.954

 こちらのベンチマークテスト結果では、そこまでの性能差はないが、描画性能比がそのままフレームレートに直結するわけではないから、そう間違った試算ではないと思う。

 なぜNVIDIAはKeplerをこういう構成にしたのか? それは28nmになって利用できるトランジスター数が増えたので、倍速動作をさせてまで性能を稼ぐ必要がなくなったからだ。TSMCの28nmプロセスは、最近だとARMのCortex-A9ベースのテストチップが3.1GHz動作を達成したというニュースもあるほどだが(関連リンク)、これを量産ベースで作るというのはまた別の話。一般論で言えば、動作周波数を2倍にすると回路規模(≒トランジスター数)を2倍にするよりも消費電力が増えるから、Fermi世代に発熱で苦労したことを考えれば、消費電力は下げたいところだ。しかも28nm世代になって利用できるトランジスター数が増えるから、理論上はダイサイズが同じままで倍の規模の回路が利用できる。

 もっとも、実際のKeplerでは2倍どころか3倍に回路規模が膨れているわけだが、これは同時に内部構成も変更したことによる。Fermiの場合、SM内部に複雑なハードウェアスケジューラーを搭載しており、このハードウェアスケジューラーが各CUDAコアに処理を割り振っていた。一方のKeplerでは、このスケジューラーを思いっきり簡素化して、作業の大半をソフトウェア(つまりデバイスドライバー)側で行なうように変更した。

 またCUDAコアの倍速動作をやめたので、その分回路も簡素化できた。一般に高速化にはパイプラインの微細化などが有効だが、そのためには当然回路規模が増える。このスケジューラー簡素化と倍速動作廃止で回路を節約できた分、CUDAコアの数を増やせたとNVIDIAは説明している。

 このNVIDIAの説明は間違っていないのだが、もうひとつ付け加えると、現在のKeplerはHPCなどのGPGPU的用途で要求される64bit演算のサポートを、きっぱりと廃止したという理由もある。Fermi世代では64bit演算をハードウェアでサポートしていたのだが、現時点のKeplerはソフトウェアエミュレーションで64bit演算を処理している※1。これもまた回路規模の節約に効果的であったと思われる。
※1 ソフトウェア的に64bit演算を32bit演算の組み合わせに変更して実行する

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン