2016年2月5日 09:00
コンピュータアーキテクチャの話 (347) CPUとは異なり、レジスタ対応が固定ではないGPU
整数演算や単精度浮動小数点演算を行う場合は16個のCoreを使い、2サイクル同じ命令を実行して1ワープに含まれる32スレッドを処理する。64bitのDP演算は2命令分のレジスタファイルを使うので、1サイクルに16演算しか実行できず、2サイクル同じ命令を実行することで32スレッドを実行していると考えられる。
LD/STやSFUはCoreやDP Unitのように16個×2サイクル、あるいは8個×4サイクルで32スレッドを処理している可能性が高い。どの方法でもサイクルあたりに実行できる命令数は同じであるが、ワープスケジューラごとにLD/STやSFUが存在する方がスケジュールはやり易いのではないかと思われる。8個×4サイクルとした場合は、32スレッドの実行の開始から終了までのサイクル数は3サイクル長くなるが、LD/STやSFUは、元々レーテンシが長い処理であり、この程度のレーテンシの増加は許容できると思われる。
片側の2つのワープスケジューラは、毎サイクル2ワープから、最大4命令を読み出す。一方、実行ユニットの受付可能な命令数はCoreが3命令、DP Unitが2命令(レジスタファイルが制限となる場合は1命令)