後藤弘茂のWeekly海外ニュース

Ivy Bridgeの強化ポイントはGPUアーキテクチャの改革



●CPUよりもGPUの拡張にダイを割くIntelのCPU戦略

 Intelの「Ivy Bridge」には、2つの重要なポイントがある。1つは、言うまでもなく最初の3Dトランジスタチップである点、もう1つは、GPUコアを大幅に強化した点。3Dトランジスタの重要度の方がはるかに高いが、IntelのCPU戦略の中ではGPUコアの強化も見逃せないポイントだ。Ivy BridgeのダイをSandy Bridgeのそれと比べると、GPUコアの大型化は歴然としている。

Ivy BridgeとSandy Bridgeのダイ比較
PDF版はこちら

 Ivy BridgeのGPUコアについては、あまり話題になっていないが、コアの設計はSandy Bridge世代よりかなり拡張されている。単純にDirectX 11に対応したというだけでなく、スケーラブルにGPUコアを拡張できるように再設計された。その目標は、最終的にAMDのAPU(Accelerated Processing Unit)にGPUコアのパフォーマンスで追いつくことにあると見られる。

 Ivy BridgeではGPUコアは最大16個のEU(Execution Unit)で、各EUが単精度浮動小数点演算ユニットを4個備えるので、合計で64個の演算ユニットを備えている。ちなみに、Ivy BridgeのGPUコアにはEUが6個のGT1と、EUが16個のGT2の2種類のコアがある。そして、現在の計画では、来年のHaswell(ハスウェル)の世代で、最大40個のEU、つまり、160個の浮動小数点演算ユニットを備えるようになる。

 それでも、演算ユニットの個数では、AMDのAシリーズAPU(Llano:ラノ)の320演算ユニットと比べると半分の50%に過ぎない。LlanoのGPUコア「SUMO」は、下の図のような構成になっている。

HaswellとLlanoのGPU比較
PDF版はこちら

 差が大きいため、IntelがGPUコアを、AMDより高クロックで動作させたとしても、生演算パフォーマンスでは及ばないだろう。しかも、AMDは次のAPU「Trinity」で、さらにパフォーマンスを引き上げる。しかし、Sandy Bridgeでは48演算ユニット(12EU)だったので、演算リソース数は3.3倍に増えて、AMDとの差を一気に詰めることになる。これまでは、レースにならなかったのが、ようやく、両社のレースになり始める。そのためのスケーラブル設計が、Ivy Bridgeでは実現されている。

SUMOのGPUコア
PDF版はこちら

 Intelは、今後のパフォーマンス拡張は、CPUコア部分より、むしろGPUコア部分で行なおうとしている。ダイの空いたエリアは、CPUコアを増やすことではなく、GPUコアを大きくすることに使う方向にある。現在、GPUプログラマーは、ゲームと汎用のどちらでも、Intelアーキテクチャをあまり重視していないが、Intelの戦略が明確であるため、今後は、Intelアーキテクチャも視野に入れる必要が出てくるだろう。

●Ivy Bridgeは小さなCPUコアと大きなGPUコアの組み合わせ

 Ivy BridgeのGPUコアは、ダイ上のレイアウトを見てもSandy Bridgeとはかなり異なる。32nmプロセスのSandy Bridgeから22nmプロセスのIvy Bridgeへの移行で、CPUコアとLLキャッシュのSRAMセルはサイズが小さくなった。しかし、GPUコアは、冒頭で述べたように肥大化している。Intelの意図は明白で、プロセスの微細化によるトランジスタの増加の利点は、CPUよりもGPUに振り分けている。

GPUコアの比較
PDF版はこちら

 GPUコアのプロセッサ部分であるEUは、Sandy BridgeのGT2構成が12個、Ivy BridgeのGT2構成が16個。プロセスが微細化しているにも関わらず、Ivy BridgeのEUのダイエリアは大して小さくなっていない。GPUコアのプロセッサ部分も、機能が強化され肥大化していることがわかる。

 具体的にIvy Bridgeでは、GPUの何が強化されたのか。下はIvy BridgeのGT2構成のGPUコアのダイアグラム図だ。Intelが詳しいダイアグラムを公式には公開していないため、推測が入っている。Ivy BridgeとSandy BridgeのGPUコアの構造の違いは、一言で表現すればスケーラビイティだ。Ivy Bridgeのコアは、Sandy Bridgeより構成を大きく拡張しやすい構造になっている。もう1つの特長は、より進んだメモリ階層で、GPUコア内部のメモリ階層が整理されている。

Ivy Bridgeのグラフィックスコア
PDF版はこちら

 IntelのGPUコアは、大きく分けて、固定機能ユニットと制御ユニットから構成されるパイプライン部(図中では一番上のFixed-Function Units)と、演算プロセッサコアとテクスチャユニット部分(図の中央部分)、それにピクセルバックエンドやL3キャッシュ、ラスタライザなどの共有ユニット群で構成されている。

 固定機能パイプラインの部分にあるシェーダは、実際に演算を行なうユニットではなく、演算を行なうEUアレイへのスレッドディスパッチの制御を行なう。各EUへはスレッドディスパッチャから、命令が発行される。EUは4ユニットずつ「Row」にまとめられており、L1命令キャッシュを共有する。各EUは、4-wayの演算ユニットなので、各Rowは16個の演算ユニットを備えている。

 ただし、RowはAMDの旧アーキテクチャのSIMDとは異なり、Rowの中の各EUは同じ命令を実行する必要はない。それぞれ個別の命令を実行できるようになっていると言う。Rowで1つのベクタを処理するのではなく、EUがそれぞれ個別のベクタを処理する。粒度が小さいのがIntelアーキテクチャの特徴だ。また、論理ベクタ長も可変でさまざまな長さと構成を取ることができる。これは、論理ベクタ長を、32に固定するNVIDIAや64に固定するAMDと、大きく異なる点だ。Ivy Bridgeの説明では、ベクタ長はSIMD8とSIMD16、SIMD32とされている。32のSIMDレーンの場合は、EUは8サイクル(命令種によって異なる場合がある)かけて実行する計算になる。

 テクスチャユニットは2個のRowにつき1ユニットが配置されている。メディアサンプラとあるのは、メディアプロセッシングのためのデータ処理固定機能ユニットだ。Intelは、シェーダコアによるプログラマブルなメディアプロセッシングに熱心であるため、専用ユニットを備える。メディアプロセシングは、メディアパイプラインの「Video Front-End(VFE)」ユニットに制御される。

●Sandy Bridgeとは異なるIvy BridgeのGPUコア

 Ivy Bridgeに見られる、Intelグラフィックスコアの基本形は、数世代前から継承されて来ているが、段々と進化して来ている。大きくジャンプしたのはSandy Bridgeだったが、Ivy BridgeはSandy Bridgeより進化している。

 下は1世代前のSandy Bridgeの推測ダイアグラムだ。Sandy Bridge世代では、DirectX 11はサポートされていないため、テッセレーションのステージが3D固定機能パイプ部分にない。また、テクスチャフィルタリングユニットも全体で1ユニットを共有している。

Sandy Bridgeのグラフィックスコア
PDF版はこちら

 Sandy Bridgeでは、EUは1個のRowに3ユニットの構成となっている。GPUアーキテクチャに慣れていると、4の倍数ではないユニット数は奇異に感じられる。グラフィックスでは、4の倍数のユニットで4個または16個(あるいは8個)のピクセルを同時に処理することが効率的だからだ。しかし、Intelアーキテクチャの場合は、個々のEUが個別のベクタを処理するため、Rowの中のEUの数を4の倍数に保つ必要はない。

 各EUはマルチスレッドで、Ivy Bridgeの場合は各EUにつき最大8スレッドまでインフライトで立ち上げることができる。GT2の場合、合計で128スレッドを立ち上げることができる。Sandy BridgeのGT2では、各EUにつき5スレッドで合計60スレッドだったので、スレッド数では2倍以上になる。ちなみに、NVIDIAアーキテクチャではベクタの各レーンをスレッドと数えるため、Intelのスレッド数は、NVIDIAの場合のインフライトのWarp数やAMDのWavefront数と比較しなければならない。

 Sandy BridgeとIvy Bridgeの違いは、GPUコアのメモリ階層にも見える。Sandy Bridgeでは、「URB(Unified Return Buffer)」がシェーダコアからの出力を、ディスパッチャと3Dパイプラインに戻すために設置されていた。Ivy Bridgeでは、URBが汎用のL3キャッシュへと切り替えられた。L2命令キャッシュや、図中にはないがコンスタントのバッファなどが全てL3キャッシュへと吸収された。

 このL3はEU側からリード&ライトであると見られ、汎用コンピューティングのプログラムでは、スレッド間のメモリ共有に使うことができると見られる。Sandy Bridgeアーキテクチャでは、汎用キャッシュはCPUコアと共有するLLキャッシュ上の領域となっていたが、Ivy BridgeではGPUコア内にもL3を備えて、よりコアに近くて、電力効率のよいキャッシュとなった。また、メモリ階層もよりすっきりとした、今風のGPUらしいアーキテクチャに進化した。

 また、Sandy Bridgeでは1個のテクスチャユニットを共有していたが、Ivy Bridgeではテクスチャユニットが2個となり、「Half Slice」とIntelが呼ぶプロセッサバンドルに配置されるようになった。単純な計算では、テクスチャのピークスループットが2倍になる。Ivy Bridgeの図と比べると、この部分の違いがわかる。

 また、ディスパッチャも替わった。Sandy Bridgeでのディスパッチャ部分の構成は詳細がわかっていないが、おそらく1段のディスパッチャになっていると見られる。対してIvy Bridgeでは、2段構成となり、各EUに対する命令発行はローカルディスパッチャが受け持つようになったと見られる。ラスタライザは2個のHalf Sliceで共有されているが、下位のディスパッチャに接続する構成へと変わったと見られる。ただし、ディスパッチャは現状では、まだよくわかっておらず、下位のディスパッチャはピクセルシェーダ専用の可能性もある。

●HaswellのGPUコアはIvy Bridgeのアーキテクチャがベース

 Ivy BridgeとSandy Bridgeの図だけを見ると、Ivy Bridgeでのアーキテクチャ変更の意図があまり見えてこない。しかし、下のHaswellのGPUコアの推測図を見れば、Ivy BridgeのGPUコアアーキテクチャの意味がよくわかる。Haswellのコアは、まだわからない部分も多いが、情報をベースにIvy Bridgeの構成を拡張すると下の図のようになる。大まかに言えば、Ivy BridgeのGPUコアであるSliceを2つ束ねた構成だ。

Haswellのグラフィックスコア
PDF版はこちら

 Haswellがこの推測のような構成を取るとしたら、Ivy Bridgeでの拡張部分が活きてくる。まず、ラスタライザが分散化され並列に処理されることで、ラスタライズがボトルネックになる可能性が低くなる。この場合、画面をリージョンに区切って2つのスライスに割り当てると見られる。そのため、レンダーバックエンドまで個別に分かれていても問題はない。

 Ivy Bridgeのスレッドディスパッチャの構成も、図の構成では活きてくる。Ivy Bridgeのディスパッチャが2段構成で、実際の命令スケジューリングは下位のディスパッチャが行なう構成になっているとしたら、HaswellでEUが激増した場合にも対応がしやすいからだ。AMDも、命令ディスパッチャを中央制御から分散化したが、Intelも似たようなことをやろうとしているのかも知れない。

 Intelは、このようにIvy Bridgeから、よりスケーラビリティの高いGPUアーキテクチャへと切り替えることで、次のHaswellではGPUコアを一気に大型化すると見られる。下はIntelの各世代のGPUアーキテクチャの構成だ。ローエンドは6EU構成のまま変わらないが、ハイエンドはどんどん強化されつつあることがわかる。

Intelのグラフィックスの強化
PDF版はこちら

 現在は、AMDの方がCPUコアのサイズがはるかに小さいため、AMDの方がAPUにより強力なGPUコアを載せることができる。しかし、Intelにはプロセス技術の利点があり、それは今後も継続する。そのため、徐々にIntelのGPUコアのパフォーマンスレンジも、AMDに近づいて行くと見られる。明瞭なことは、GPUコアの急発展戦略によって、IntelのGPUコアが、より重要なプラットフォームになり始めることだ。それは、Sandy Bridgeから始まり、Ivy Bridgeで加速されつつある。