IntelのGPU研究開発の1つ Intelが“ディスクリートGPU”のプロトタイプを発表した。 Intelは、AMDからRadeon GPU部門のトップであるRaja Koduri(ラジャ・コドゥリ)氏を引き抜き、Core and Visual Computing GroupのChief Architect兼Senior Vice Presidentに据えた。この劇的な移籍から、IntelがディスクリートGPUに参入するのでは、という観測が一部で流れていた。そんなタイミングで、Intelは、米サンフランシスコでの半導体の国際会議ISSCC(IEEE International Solid-State Circuits Conference)で、ディスクリートGPUの試作チップを発表した。 といっても、今回の試作チップは、製品として市場に出せるレベルのものではない。あくまでも、技術検証のためのGPUチップ。既存のIntelの内蔵GPUアーキテクチャをベースに、IVR(Integrated Voltage Regulator:統合電圧レギュレータ)を使った電力とパフォーマンス制御の技術を検証したものだ。 Intelは、過去にもこうした省電力機能の検証のための試作GPUチップを開発しており、2014年にもISSCCで22nnmのプロトタイプチップを発表している(「5.7 A Graphics Execution Core in 22nm CMOS Featuring Adaptive Clocking, Selective Boosting and State-Retentive Sleep」S. B. Nasir, et al., ISSCC 2014)。とはいえ、このプロトタイプチップは、GPUとしてのフル機能を備えており、拡張すれば製品にすることも不可能ではない。 今回の試作のGPUアーキテクチャは、最新のIntel Graphics Gen9世代で、Intelの標準的なGPUコアそのもの。ただし、実装はLP(ローパワー)、つまりAtom系CPUアーキテクチャSoCに混載されている低電力のGPUコア実装となり、スタンダードセルライブラリなどがPC向けと異なると見られる。 プロセスはIntelの14nmで、10メタル(配線)層。ダイサイズは8×8mm、1.5Bトランジスタ。動作周波数と電圧は50MHz/0.51Vから400MHz/1.2Vまで。トランジスタ数が多いのはキャッシュSRAMを大量に搭載しているためだ。

Intelの内蔵GPUコアをベースに新設計を導入 IntelのGPUコアは、「EU(Execution Unit)」と呼ばれるベクタコアで構成される。1個のEUは、2つの4-wayベクタユニットを搭載する。FP32(32-bit浮動小数点演算)ユニットが4-wayで、128-bit長のベクタユニットだ。EUには2つのベクタユニットと7マルチスレッドの汎用レジスタ(GRF)、命令フェッチャやブランチユニットが含まれる。 プロトタイプチップでは、EUが6個バインドされ「Sub-Slice(SS:サブスライス)」を構成している。サブスライスには、EUだけでなくサンプラ(テクスチャユニット)やL1/L2キャッシュ、スレッドディスパッチャ、データポートなどが付属する。 今回のチップでは、3個のサブスライスで1個の「Slice(スライス)」を構成していると見られる。ダイ写真にはSS0からSS2までの3個のEUが見える。3個のEUのサブスライスのうち、今回の新しい電力制御機構が実装されているのは2個。SS1とSS2が新設計のEUとなっている。 SS0は、比較用に従来どおりの設計となっている。3個のSSで構成されるスライスはフル機能のGPUコアとなっており、グラフィックス固定機能(FF:Fixed Function)やコマンドストリーマ、L3キャッシュなどを内包する。 テストチップは1スライス構成で、合計で3個のサブスライス、18個のEUを搭載する。ベクタユニット内のFP32(32-bit浮動小数点演算)の積和算ユニットは、合計で144ユニットの計算だ。PC向けのIntelグラフィックスのローエンドGT1は、スタンダード実装で96 FP32となる。 テストチップは周波数の低いLP実装で144ユニットなので、ラフに言って、ローエンドのPC向けグラフィックスレベルの性能と言えそうだ。また、通常のGPUコアには、動画コーデックなどを含むマルチメディアコアが付属するが、今回のプロトタイプチップには含まれているかどうか明記されていない。 ISSCCで発表されたGPUチップには、GPUコアだけでなく、制御系やI/O回りを含むSystem Agent(SA: システムエージェント)が搭載されている。メモリインターフェイスはホスト側。そのためか、SAに4MBと大きめのページングキャッシュも搭載されている。ホストPCとは、FPGAのブリッジを経由して結ばれる。構成を見るかぎり、実証実験用のプロトタイプだ。

IVRの導入でユニット毎の電圧の切り替えが可能に 従来のIntelの設計では、GPU全体に対してIVRから単一の電圧(Vgpu)で電力が供給されていた。下のスライドの左の図のような形だ。それに対して、今回の設計では、GPUの中の演算ユニットであるEUと、そのほかのユニットには個別の電圧で電力が供給される。スライドの右の図のようになる。それぞれ独立したIVRが割り当てられる。 従来の実装の場合は、コンピュートインテンシブのタスクの場合、EUの負荷が高まり、その結果、GPU全体の電圧が高く遷移し、クロックはPLLのリロックで高クロックに切り替えられる。そのとき、EU以外のユニットは負荷が低くても、EUと同電圧、同クロックに押し上げられ、GPUコア全体の消費電力が上がってしまう。 それに対して、EUとほかのユニットを個別に周波数と電圧制御する場合は、より柔軟になる。EUの電圧だけが負荷に応じて引き上げられ、EUの動作周波数は通常周波数の2倍に切り替えられる。個別に応答性の高いIVRを実装することで、電圧の引き上げを短時間に可能とする。 また、周波数は倍速へと切り替えることで、PLLのリロックを不要とする。Intelはこれを「EU Turbo(EUターボ)」と呼んでいる。ベースクロックを2xで供給し、通常時はそのクロックを半分にして供給、ターボ時には本来の2xクロックに切り替える。結果として、負荷の上下に迅速に応答する電圧/周波数の切り替えが可能となる。 逆に、EUが短時間のストールに入ったときは、EU部の電圧をリテンション電圧に落として、クロック供給を止めスリープ状態にする。従来は、クロックゲート時に電圧を落とすことができなかったが、ISSCCの実装ではEUのIVRが独立しているため、EUの電圧をSRAMが保持できる下限の電圧に落として電力を削減できる。 さらに、EUそれぞれに個別にIVRを設置することで、動作できる最低電圧Vminのばらつきを調整することもできる。プロセス自体のばらつきだけでなく、温度によるばらつきもあるが、IVRで動的に各ユニットそれぞれにVminを調整できる。そのため、Vminをユニット毎に最低の電圧にすることができる。