2次キャッシュとメモリ階層

図8.9にGCNアーキテクチャのGPUのメモリ階層を示す。CUには16KBの1次データキャッシュ(L1 Vector Data Cacheと書かれている)がつながり、その次に64~128KBの2次キャッシュ群がつながっているが、その間にクロスバが設けられており、どのCUとどの2次キャッシュ(L2 Cache)スライスも通信できるようになっている。

図8.9 GCNアーキテクチャのGPUのメモリ階層

2次キャッシュスライスはメモリコントローラと1対1に接続されている。高性能のGPUでは、12個とか18個とかのGDDR5 DRAMが使われるが、一般に2個のGDDR5メモリを1台のメモリコントローラで制御しており、6台とか8台の2次キャッシュスライスとメモリコントローラがある。

CPUの2次キャッシュとは異なり、GPUの場合は、2次キャッシュスライスは、1対1に接続するGDDR5メモリのデータだけをキャッシュするメモリサイドキャッシュになっている。この作りであれば、同じアドレスのデータが複数の2次キャッシュスライスに存在することは無いので、自動的に2次キャッシュスライス間では矛盾が生じることは無く、コヒーレンシが維持される。

AMD GPUのデバイスメモリ

GPUは、高品質の描画を行うためには、多くのメモリアクセスを必要とし、動画となれば、それを毎秒60回とか繰り返す必要がある。このため、デバイスメモリには高バンド幅が必要になる。また、GPUは多数の演算器を集積しており、それらにデータを供給するためには高バンド幅のメモリを必要とする。

このため、多くのハイエンドGPUでは、デバイスメモリとしてGDDR5 DRAMを使っている。GDDR5 DRAMは1チップで32ビット幅の読み書きができ、データ伝送速度は5~7Gbit/sと非常に高速の伝送ができる。5Gbit/sの場合、ピークメモリバンド幅は20GB/sとなり、これを16個使用するAMDのFirePro W9100 GPUのメモリバンド幅は320GB/sとなっている。

ただし、GDDR5は高速の伝送を行うため、電気的にGPUとGDDR5メモリを短い配線で1対1に接続しなければならない。このため、CPUのようにDIMMを使って、多数のメモリを接続することはできず、FirePro W9100のデバイスメモリの容量は、16Gbit のGDDR5 DRAMを使った場合で、32GBとなっている。

4K、8Kと解像度が上がり、VRなどをサポートするには毎秒100フレームの書き直しが必要などと、メモリバンド幅の必要量は増え続けている。このため、GDDR5でも不足で、もっとメモリバンド幅が欲しいということから、HBM(High Bandwidth Memory)が作られた。HBMは図8.10に示すように、4枚のDRAMチップをTSV(Through Silicon Via)技術を使って積層したモジュールを使う技術で、1Gbpsの信号を1024本引き出している。信号伝送速度はGDDR5より遅いものの、信号線の本数が圧倒的に多いので、100GB/s以上のメモリバンド幅が得られる。

そして、図8.10に示すように、4枚のDRAMチップの下にはインタフェースやテスト回路などを収めたロジックダイがあり、シリコンインタポーザという微細な配線基板を経由してGPUチップに繋がっている。GPUとDRAMチップの間の距離が短く、寄生容量を小さくできるので、その充放電で消費されるエネルギーが小さく、消費電力も小さくなる。

図8.10 Hot Chips27でAMDが発表したHBMの構造図

AMDのRadeon R9 Fury GPUでは、このモジュールを4個使用し、512GB/sのピークメモリバンド幅を実現している。

しかし、TSVでDRAMを積層したり、シリコンインタポーザが必要となるなどのコストアップ要因が多く、AMDでの採用はRadeon R9 Fury GPUだけに留まっている。そして、コンシューマ向けなどの価格にセンシティブな用途のGPUでは、GDDR5を10Gbt/s程度まで高速化したGDDR5Xの採用に向かっている。さらに、その先は14Gb/s以上の速度を持つGDDR6という話も出ており、原理的には優れているHBMであるが、値段が下がらないと採用は進まないという感じである。

なお、NVIDIAも、Pascal P100 GPUで第2世代のHBM2を採用しているが、PCI Express版の製品では、HBM2が4個のモデルと3個のモデルがあり、HBMを減らして値段を下げていると考えられる。また、P40 GPUを使うモデルではGDDR5Xを使っている。