2016年3月18日 13:00
コンピュータアーキテクチャの話 (350) NVIDIAの世代別GPUに見るハードウェアの違い
○NVIDIA GPUのCompute Capability
NVIDIAはGPUの世代ごとに偉大な科学者の名前を付けており、このシリーズの初代が「Tesla」、そして2代目が「Fermi」、そして、3代目が「Kepler」で、最新の4代目は「Maxwell」という名前が付けられている。また、この後は「Pascal」、そして「Volta」と名付けられることになっている。
Tesla、Fermi、Kepler、Maxwellと順に開発してきたこれらのGPUは、ある意味では、CPUと同様に、上位互換になっており、前のGPUで動いたPTXコードはそのまま動くようになっているが、ハードウェアの中身は大きく変わっている。
また、NVIDIAのGPUの場合は、PTX命令はGPUで直接実行されるのではなく、GPUドライバが、本当のマシン命令に翻訳したものをGPUハードウェアに供給するという仕組みになっている。マシン命令とPTXはかなり近いといわれるが、GPUの世代によって、同じPTX命令が異なるマシン命令あるいはマシン命令の列に翻訳されて実行されることがあり得る。
これはハードウェアの違いを隠して、同じプログラムを実行させられるという点ではうまいやり方であり、ハードウェアが急速に進歩しているGPUでは、このようなやり方を取らざるを得ない点もある。