2014年12月19日 10:00
コンピュータアーキテクチャの話 (319) CPUに比べて圧倒的に多いレジスタ数
○GPUのレジスタ
GPUの仕様を見ると、32論理PEあたり、数1000個の32bitレジスタを持っていると書かれている。CPUの汎用レジスタの数は16個とか32個であるので、それに比べて圧倒的に多いレジスタ数である。
しかし、マルチスレッドCPUの場合は、整数レジスタや浮動小数点レジスタなどの汎用レジスタは、スレッドごとに用意されており、いくつスレッドがあろうとも、各スレッドで使えるレジスタ数は変わらないという構造になっているが、GPUの場合は、巨大なレジスタを同時並列的に切り替えて実行するすべてのスレッドで分割して使用するという構造になっている。
例えば、8192レジスタの場合、これは32論理PEの合計のレジスタ数であるので、1論理PEあたりで使えるレジスタは256レジスタである。そして、各論理PEが16ワープをサイクル(あるいは2サイクル)ごとに切り替えながら実行する場合は、1つのスレッドが使えるレジスタ数は平均16個になってしまう。
NVIDIAのGK110というハイエンドのGPUのSMX(マルチコアCPUの1つのコアに相当し、GK110チップには15個のSMXが搭載されている)