2016年2月5日 09:00
コンピュータアーキテクチャの話 (347) CPUとは異なり、レジスタ対応が固定ではないGPU
しかし、このような可変の割り当てを可能にするためには、各ワープは何番のレジスタから何個のレジスタを使うのかという情報を記憶して置き、プログラムで指定された論理レジスタ番号に、各ワープに割り当てられたレジスタ領域の先頭のレジスタ番号を加算して、2048エントリのレジスタをアクセスすることが必要となる。
加算を含むので、このレジスタファイルのアクセスも2~3段のパイプラインにしないと間に合わないと思われるので、レジスタファイルからのオペランドの読み出しと演算結果の書き込みアクセスだけでも合計4~6段のパイプラインとなり、簡単な論理演算を行って、再度レジスタファイルにアクセスして書き込むという動作でも10サイクル程度かかるというのは理解できる。
一方、CPUの場合は直前の命令の演算結果を使うというケースが多く、レジスタファイルアクセスは1サイクルというパイプラインが常識で、アクセス時間が遅い2048エントリなどの巨大レジスタは使えないし、アクセスの前にレジスタ番号を求める加算の時間が必要となるというような構造にはできない。○SMの実行ユニットの処理能力
前に述べたように、KeplerのSMはCoreを192個、DP Unitを64個、LD/STとSFUを32個持っている。