2015年2月6日 11:00
コンピュータアーキテクチャの話 (322) GPUが用いるメモリのアクセス時間の短縮方法
○GPUのメモリ階層
GDDR5 DRAMやHBMを使うGPUのメインメモリ(以下ではCPUのメインメモリと区別するためデバイスメモリと呼ぶ)は高いメモリバンド幅を持っているが、アクセスに掛かる時間は、DDR3/4 DRAMと大差ない。GPUのクロックはCPUよりも遅いと言っても、直接、デバイスメモリをアクセスしたのでは、GPUの処理はメモリネックになってしまう。
このため、CPUの場合と同様に、GPUコアの近くに高速の小容量のメモリを置き、多くの処理ではこのメモリを使用することにより、平均的なアクセス時間を短縮して性能を上げるという方法が取られる。
CPUの場合は、ハードウェアが管理して自動的に使用頻度の高いデータを入れてくれるキャッシュが使われるのが一般的であるが、GPUではシェアードメモリなどと呼ばれるローカルなメモリや、ソフトウェアによる管理が必要なキャッシュが用いられることが多い。
マルチコアで複数のキャッシュがあるCPUでは、複数のキャッシュの間で、同じアドレスに異なるデータが書かれてしまうという矛盾が生じないようにするコヒーレンシ制御が必要になる。しかし、そのためには、書き込みに際して、他のすべてのキャッシュに同じアドレスのデータが入っていないことを確認することが必要になる。