2015年6月5日 10:00
コンピュータアーキテクチャの話 (330) レジスタファイルとシェアードメモリ
○GPUのメモリ階層
レジスタファイルは高速でアクセスができ、バンド幅も非常に広いが、容量は制限される。このため、GDDR5 DRAMで作られる大容量のデバイスメモリが接続されるが、デバイスメモリはアクセス速度が遅いので、この差を埋めるため、メモリ階層が設けられる。
図3-18に示すように、NVIDIAのGPUではレジスタファイルの次にシェアードメモリとレベル1データキャッシュ、リードオンリーデータキャッシュが並列に置かれ、レベル1データキャッシュとリードオンリーデータキャッシュは、レベル2キャッシュでバックアップされる。さらにその先にはレベル2キャッシュ、GDDR5 DRAMで構成されるデバイスメモリがあるという階層になっている。
○レジスタファイルの次の階層の主力となるシェアードメモリ
GPUでは数1000のスレッドが並列に実行され、それらが独立にアドレス計算を行なってメモリにアクセスする。つまり、すべてのスレッドが同じ命令列を実行している状態で、ロードやストア命令を実行すると、1つの命令が数1000のロード/ストアになってメモリに押し寄せる。これを順番に1つずつ捌いていたのでは、メモリアクセスに膨大な時間が掛かってしまう。