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

12コア以上のIvy Bridgeへ結ぶSandy Bridgeのリングバス



●ノースブリッジチップの機能を統合したシステムエージェント

 Sandy Bridgeは大きく分けて3つのブロックに分かれている。CPUコアとキャッシュのブロック群と、グラフィックスコア、そしてノースブリッジ(MCH)の機能を統合したシステムエージェント(System Agent)のブロックだ。これらのブロックは、異なる電力/周波数ドメインとなっている。そして、各ブロックを横断的にリングバスで接続している。

 CPU全体で見た場合のSandy Bridgeの大きな特長は、このリングバスの採用だ。Sandy Bridgeでは2~4個のCPUコアと、グラフィックスコア、そしてシステムエージェントの4~6ユニットがリング型バスで接続されている。つまり、メモリ-I/O間のトラフィック以外(例えばフレームバッファからディスプレイ出力へのトラフィック)は、全てリングバスを流れる。

4コアSandy Bridgeのアーキテクチャ
PDF版はこちら
リングバスを採用するSandy Bridge

 Sandy Bridgeのシステムエージェントは、従来のMCH(Memory Controller Hub)の機能をほぼ統合している。しかし、単純に既存のMCHのIPを持ってきたのではなく、CPUの先端プロセスに合わせて、全ての機能を再設計したという。そのため、ノースブリッジであるシステムエージェント部分の電力効率もアップしているという。

 1点目立つのは、システムエージェントにディスプレイコントローラが含まれていることだ。「ディスプレイエンジンは、論理的にはグラフィックスデバイスの一部だが、電力とシステム設計上の理由からシステムエージェントに統合した。ディスプレイエンジンは、メモリ上のフレームバッファから画面を読み込んで、それをディスプレイに表示するために出力する。Sandy Bridgeの設計では、グラフィックスコアが何もしないアイドル状態でスリープステートにあっても、ディスプレイエンジンは独立してフレームバッファを読み込んで画面に表示し続けることができる。そのために、ディスプレイエンジンはシステムエージェントに入れた」とSandy BridgeのアーキテクトOpher Kahn氏(Senior Principal Engineer, Intel)は語る。

 また、この設計では、メモリからのフレームバッファ読み出しのデータトラフィックは、リングバスを通らない。そのため、リングバスへの帯域圧迫が減るという利点もある。

●電力管理マイクロコントローラを含むシステムエージェント

 システムエージェントにはDDR3のメモリコントローラ、PCI Express Gen 2.0、DMIなども含まれる。上の図はモバイル版のコンフィギュレーションで、そのためDisplayPortが出ている。デスクトップではFDIとなっている。また、モバイル版Sandy Bridgeは最上位のCore i7系でDDR3-1600をサポートする。ただし、クライアント向けSandy Bridgeは、いずれも低電圧(1.35V)版のDDR3を、当面はサポートしないと見られる。

 デスクトップPCやローエンドサーバーのインターフェイス構成は次のようになる。Sandy Bridge 4コアのPCI ExpressはGen2のままだが、20レーンが実装されている。クライアントPC向けでは、このうち16レーンが使えるようになっている。サーバー向けは20レーンを使うことができる。

サーバーとクライアント向けSandy Bridgeの違い
PDF版はこちら

 Sandy Bridgeのシステムエージェトには、電力管理を行なう「Power Control Unit(PCU)」が統合されている。これは、Nehalemに搭載されているPCUの発展版だという。PCU自体はハードウェアステイトマシーンで、電力コントロールアルゴリズムはファームウェアで供給している。それは、電力コントロールのアルゴリズムが複雑で、数千行ものコードフットプリントになってしまうからだという。PCUのプログラムはファームウェアであるため、あとから訂正したり拡張することができるという。

 電力ドメインは3つに分かれている。システムエージェント部分は固定された電力&周波数が供給されるドメインだ。それに対して、CPUコアとリング部分のドメインと、GPUコアのドメインは、それぞれが独立した可変電圧&周波数ドメインとなっている。この他、各CPUコアとグラフィックスコアには、それぞれパワーゲート時のステイト待避用に、スリープ状態でもI/O電圧で電力が供給される小さなドメインがあるはずだ。

Sandy Bridgeのパワードメイン
PDF版はこちら
ブロックごとに分かれたパワードメイン

 システムエージェントは、密接にリングドメインに接続されている。リングバスと各I/Oを低レイテンシで接続するため、工夫がこらされているという。

●リングバスをサーバーからクライアントへと持ち込む

 Sandy Bridgeのリングバス型の内部インターコネクトアーキテクチャは、ライバルAMDと大きく異なっている。AMDで、同様に2~4個のCPUコアとグラフィックスコア、ノースブリッジチップを統合するAPU(Accelerated Processing Unit)系製品は、リングバスを採用しないと見られるからだ。

 Intelはハイエンドサーバーの8コア「Nehalem-EX(ネヘイレム-EX)、10コア「Westmere-EX(ウエストミア-EX)」と、キャンセルになった「Larrabee(ララビ)」でもリングバスを採用している。リングバスにはこだわりと経験がある。Sandy Bridgeのリングバスも、技術的にはNehalem-EX以降のリングバスの延長にあるという。つまり、Intelは段階的に従来のセンタライズドバスからリングバスへと移行しつつある。IntelのPC&サーバーCPUでは、リングバスが標準の内部バスになりつつある。

 Intelはリングバスを採用した理由の1つは、CPUをモジュラー化して、コンフィギュレーションの異なるチップを設計することを容易にするためだと説明する。「リングバスによるモジュラー設計なので、簡単にコンポーネントを加えたり取り去ったりできる」とSandy BridgeのアーキテクトOpher Kahn氏(Senior Principal Engineer, Intel)は語る。実際、Sandy Bridgeの4コアと2コアの両バージョンの違いは、リングにぶらさがったCPUコアの数の違いだけだという。論理設計上は、リングのストップの数を変更するだけで、どんなコンフィギュレーションを作ることもできる。もちろん、グラフィックスコアが異なるバージョンなどを作ることも簡単にできるとKahn氏は言う。

 もっとも、実際の物理設計では、Sandy Bridgeの4コアは、2コアにした時にメモリインターフェイスが収まるように、設計上の余裕を持たせており、そのため、ダイ(半導体本体)にある程度のムダがある。その分、ダイサイズ(半導体本体の面積)が大きく、デッドスペースの部分は歩留まりには関係しないとは言うものの、コストが若干アップする。そこがトレードオフだ。

Sandy Bridgeのモジュラー設計
PDF版はこちら
Sandy Bridgeのダイレイアウト
PDF版はこちら
Sandy Bridgeの特徴

●4リングで構成されたSandy Bridgeのリング

 現行のPC向けNehalem/Westmere系CPUは、各CPUコアが中央化されたLL(Last Level)キャッシュに接続されておりキャッシュへのインターコネクトは共有となっている。内部バスはリング構造を取っていなかった。そのため、スケーラビリティには問題があり、コア数が異なるバージョンへの派生は制限されていた。そこで、ハイエンドサーバー向けのNehalem-EX/Westmere-EXでは、スケーラビリティの高いリングバスを採用したという。

 Kahn氏によると、基本のコンセプトは、Nehalem-EXで実績のあるリングバスの帯域とビヘイビアをクライアントにも持ち込むことにあったという。Sandy Bridgeのリングバスは、ハイエンドサーバー向けのNehalem-EXで実装したものとよく似ているという。Kahn氏は、Sandy Bridgeのサーバー版でもリングバスを使うと説明する。同氏によると、Intelはリングアーキテクチャを長期的に使う計画だという。22nm世代のIvy Bridgeのサーバー版は、最大12コア以上を搭載すると見られている。リングバスは、その世代への布石ということになる。

 リング自体は4つの異なるリングで構成されている。1つはデータ転送用の32-byteデータリング(Data Ring)で、その他にトランザクション用のリクエストリング(Request Ring)それとアクノーレッジリング(Acknowledge Ring) 、スヌープリング(Snoop Ring)の3種類がある。これらのサブリングを使うことで、各CPUコアに付属するLLキャッシュスライス間のコヒーレンシを維持し、“共有”LLキャッシュとして使えるようにする。共有に“”をつけたのは、従来の共有キャッシュとは考え方が異なるためだ。

 リングは32-byte(256-bit)幅なので、64-byteのキャッシュラインを2パケットで送受信することができる。3GHz動作時のリングストップ当たりの帯域は96GB/secとなる。リングは完全にパイプライン化されており、個々のリングストップは並列動作し、同時にパケットを流すことができる。そのため、理論上はリングストップが増えるほど、リングへのアクセスの帯域は増えることになる。

Nehalem-EXのリングバス
Sandy Bridgeのセグメント分け
PDF版はこちら

●LLキャッシュのアクセスレイテンシも短縮される

 IntelのKahn氏は、4コア版Sandy Bridgeの場合、LLキャッシュは4リングストップで接続されているため、LLキャッシュアクセスの帯域は384GB/secになると説明する。2コア版は2リングストップなので、192GB/secとなる。Nehalemでは、共有の中央コントロールのLLキャッシュが3GHz時に96GB/secの帯域だったという。Kahn氏はLLキャッシュの合計帯域では4倍になったと説明する。もちろん、これには異論はある(リング上のトレインがすでにパケットで占められていればリングストップからパケットを載せることができないから)。

 また、Kahn氏はLLキャッシュレイテンシが短縮されたことも強調する。「Sandy BridgeでのLLキャッシュレイテンシは、26~31クロックだ。クロックは、リング上のどのキャッシュにデータがあるかによって異なる。前世代ではLLッキャッシュのレイテンシは33クロック前後だった(Intelの「Intel 64 and IA-32 Architectures Optimization Reference Manual」ではNehalemは35~40+クロックレイテンシとなっている)。レイテンシは短くなっている」。

 リングストップ間は1クロックのレイテンシで結ばれている。最奥のグラフィックスコアから最も離れたCPUコア+LLキャッシュのストップは4つ離れている。各CPUコアが、自分と直結しているLLキャッシュスライスにはリングを経由しないでアクセスできるとすると、リングに乗るための1クロック分のレイテンシもなくなる。そうすると、CPUコアがそれぞれに直結したLLキャッシュスライスにアクセスするレイテンシが26サイクルと考えると、グラフィックスコアコアからは31クロックの計算となる。Sandy BridgeでのLLキャッシュレイテンシの5クロックの違いが、リングストップの差とすれば計算が合う。

Sandy Bridgeのリングバス