GPU部は、描画やメディア処理を行う機構のみで、表示用出力は、System Agent側にある(図11)。これは、メインメモリにフレームバッファが確保されており、出力は、これを定期的にアクセスして出力するだけだからだと思われる。
GPU部は、固定の機能を実行するFixed Function部分と、命令により処理を実行するProgrammable Function部分に分かれる。固定機能部分には、3Dの頂点処理やラスタライズの機能などがあり、メディアプロセッシングや複数フォーマットに対応したコーデック(エンコード、デコード)などがある。
Programmable Functionは、複数のExecution Unitから構成され、固定機能部分と連携して動作する。EU部分は前世代と比較して2倍の性能を持つという。従来のインテルGPUでは、メディア処理、たとえば動画のデコードなどでは、一部をProgrammable Functionで実現する必要があったが、Sandy Bridgeでは、ビデオのデコードは、完全に固定機能部にあるMulti-format CODECで処理可能となった(図12)。
図12: NehalemまでのIntel GPUでは、ビデオのデコードなどで一部プログラマブル機構(EU)を使う必要があったが、Sandy Bridgeでは、完全にCodec機構だけでデコードが可能になっている |
GPU部分は、CPUコアとLLCを共有しており、メディア処理などで、コアとの連携を組みやすい。また、固定部分だけでなく、Programmable Function部でもメディア処理を行うことが可能だ。
これらをつなぐリングバスは、4つのリングで構成されている。32bytesのDataリングと、Requestリング、Acknowledgeリング、Snoopリングである。コア周波数で動作でき、特にキャッシュ部は、上り、下りの2つの接続点があるため、最適な方向を選択することができる(図13)。
図13: リングバスの模式図。コアやGPU、System Agentは、リングバスを介してLLCにアクセスする。リングバスは、メモリアドレスに対するブロードキャストなどを伝達し、該当アドレスを保持しているCache Boxがあれば、これに応答、Cache位置に関わらずアクセスが可能になっている。また、LLCは、保持しているアドレスがコア内にもキャッシュされているかどうかの管理を行っている |
リングの1つの目的は、キャッシュをコアおよびグラフィックス、System Agentと共有すること。そして、System Agent側にあるメモリコントローラのアクセス、コアからのI/OやGPUへのアクセスである。
LLCは、コアごとに4つに分割されている。この4つのキャッシュ(Cache Box)がリングバスで接続されており、共有キャッシュと同じように振る舞うことができる。
各コアからのメモリアクセスは、リクエストリングバスによりキャッシュへと伝わり、ヒットしたCache Boxが応答を返す。すべてのリクエストがリングバスを通って他のノードへと伝達されるため、上位のキャッシュを持つ
リクエストがヒットすれば、キャッシュは応答を返し、その後リングバスを使ってデータをコアやGPUへと転送する。どのキャッシュボックスもヒットしない場合には、リクエストは、System Agentに送られ、内蔵メモリコントローラを介してメインメモリの読み出しを行う。
リング構造とすることで、コア/Cache Boxの対の増減に柔軟に対応できる。ある種のモジュラー設計である。おそらくサーバ用は、グラフィックス部分をなくし、8コア程度まで内蔵可能と思われる。
また、このようにSystem Agent、コア/Cache Box、GPUが分離されるため、それぞれでの動作電圧や動作クロックを変更するパワーマネジメントも可能となる。
System Agentには、メモリコントローラーのほかにDisplay部やDMI、PCI Expressなどが含まれる。サーバー向けにはQPIも装備される模様(図14)。