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

Xbox 360 CPUの鍵を握る超高速FSB




●従来のPowerPCバスとは異なる新設計のFSB

Xbox 360 CPUのチーフエンジニア Jeffrey Brown氏

 発売が迫ったMicrosoftの次世代ゲームコンソール「Xbox 360」のCPUのハードウェアスペックの、最後のベールが剥がされた。11月25~26日に米サンノゼで開催されたCPU関連カンファレンス「Fall Processor Forum」で、Xbox 360 CPUを開発したIBMが講演。FSB(Front Side Bus)などの概要を発表した。

 Xbox 360 CPUは、従来のPowerPCとは全く異なるアーキテクチャの高速FSBを備える。FSBのデータ転送レートは5.4Gbpsで、帯域は21.6GB/sec。これは、IntelのPentium Extreme Edition(XE)の1,067MHz FSBの約5倍の転送レート、2.5倍の帯域だ。

 発表を行なったIBMのJeffrey Brown氏(IBM, Distinguished Engineer)は「FSBはIBMがゲームに最適化してフルカスタマイズして開発した」と言う。広帯域FSBは、Xbox 360 CPUの最も重要な仕様の1つである。おそらく、Xbox 360 CPU設計の際に、MicrosoftとIBMが最も注力した点だ。

 Xbox 360 CPUのFSBは、高速伝送のため1方向(Uni-Directional)で幅が狭い、ポイントツーポイント型のインターフェイスとなっている。片方向16レーン(16bit)のバスを双方向用意し、両方向で合計32レーンとなっている。従来のPowerPC 970のバスは、片方向32bit、双方向で64bitだった。また、IntelのPentium 4バスは、64bitの双方向バスとなっている。より狭いバスだ。

Xbox 360 CPU Chip Overview
PDF版はこちら
Front Side Bus
PDF版はこちら

Front Side Bus-Physical Layer
PDF版はこちら
 もっとも、Xbox 360 CPUも内部では64bit幅のパラレルバスでユニットを接続している。そのため、Xbox 360 CPUでは、内部の64bitパラレルバスをSerDes(シリアライザ/デシリアライザ)で4:1にシリアル化している。

 ただし、SerDesを使うものの、PCI Expressのようなシリアル系インターフェイスとは異なりクロックは信号線にエンベデッドしない。クロックはソースシンクロナス方式で伝送する。と言っても、片方向16レーンのバス全体を1クロックに同期させるのではない。片方向8レーンを1バンドルとして制御、この8レーンにつき1レーンのクロック信号が付随し、クロックを伝送する。

 そのため、分類的には、狭幅の高速パラレル伝送技術となる。8レーン単位のバンドルにクロック線を付随させるあたりは、HyperTransportライクだ。現行のXboxは、HyperTransportをチップセット間の接続に使っている(CPUのFSBはPentium III仕様)。しかし、Xbox 360 CPUは、他のバスアーキテクチャとは異なる、完全に独自の仕様となっているという。

●CellのFlexIOより転送レートは高いが帯域は狭い

 5.4GbpsというXbox 360 CPU FSBの転送レートは、既存のメジャーCPUの中では最高速だ。ちなみに、ライバルであるソニー・コンピューターエンタテインメント(SCEI)のPLAYSTATION 3(PS3)に搭載するCellプロセッサも、シリアル系インターフェイスの技術を多数取り入れたRambusの高速パラレル伝送技術「FlexIO(Redwood:レッドウッド)」を採用する。FlexIOのスペックは最高6.4Gbpsだが、PS3版CellではGPUとの間を5Gbpsで結ぶ。現状では、これが量産可能なスペックだと推定される。

 両CPUのFSBの転送レート的にはほぼ同レベルだが、Cellの方がインターフェイス幅が96bitと広く、GPUとの間を35GB/secの帯域(下り20GB/sec@32bit, 15GB/sec@24bit)で結んでいる。これは、FlexIOの実装の方がよりコンパクトであるためだと思われる。Rambusの強みは、ダイエリア(ダイ面積)当たりの転送レートの高さにあると、Rambusは主張している。

 Xbox 360 CPUのFSBの信号線は、高速伝送のため、1.1Vと振幅が小さい「CML(Current Mode Logic)」を採用している。以前、Webで暴露されたXbox 360 CPUの解体写真を見ると、1レーンは2本のディファレンシャル(差動)動作の信号線で構成されていた。そのため、データは32レーンで64本、クロックが4レーンで8本で合計36レーンの計算となる。解体写真の基板では、CPUとGPUの間に、基板の表面に24レーン、裏面に16レーンが配されていた。合計で40レーンとなり計算が合わないが、何らかの用途に4レーンが使われていると推定される。

 Xbox 360 CPU FSBのリンクレイヤはCPUとGPUで構成が異なる。最大の理由は、CPUとGPUでは、内部バス幅と動作周波数が大きく異なるためだ。

 CPUGPU
トランザクション層64bit@1.6GHz128bit@700MHz
リンク層64bit@1.35GHz128bit@675MHz
物理層16bit@5.4GHz16bit@5.4GHz

 CPU側は内部バス幅が64bitと狭いが、動作周波数が高い。それに対して、ノースブリッジチップ機能を内蔵するGPU側は内部バスが128bitと広いが、動作周波数が低い。CPUが64bit、ノースブリッジが128bitという内部バス幅自体は、標準的だ。複雑なワイヤードロジックがまだ多い現在のGPUは、CPUほど高クロックに適していない。そのため、同じ90nmプロセスでもCPUの方が通常高クロックとなる。

●CPU側とGPU側で内部バス幅と周波数が異なる

 CPU側はSerDesで4:1で、64bitを16bitにシリアル化する。GPU側は同様にSerDesで8:1で、128bitを16bitにシリアル化する。リンク層はCPUが64bit 1.35GHzで、帯域は完全に物理層に一致する。エンベデッドクロックではないため、シリアル化してもクロック信号でデータ帯域が食われることがないためだ。

 トランザクション層はリンク層より高速になっている。CPU側は64bit 1.6GHz。これはCPUコアが3.2GHz動作、コア以外のL2キャッシュやバスインターフェイスが1.6GHz動作なので、バスインターフェイスに同期させたものと推定される。もっとも、どちらのチップも、FSBとアプリケーションドメインは非同期となっている。

 GPU側は128bit 700MHz。これは、メインメモリのGDDR3インターフェイス(128bit/700MHz)と同期しているように見える。GDDR3メモリの転送レートはクロックの2倍の1.4GHzなので、メモリ帯域の方が2倍となる。ただし、メモリインターフェイスは双方向で、FSBは双方向なので、ちょうどつりあうことになる。

 ちなみに、GPUコアの動作周波数は500MHzなので、バスの方が速く動作していることになる。しかし、GPUコアでメモリアクセスする必要があるユニット群(Backend Central, Texture Cacheなど)の多くは、256bit幅でメモリハブに接続しているため、各ユニット毎の帯域は16GB/secとなる。GPUコア内部が256bit幅になっているのは標準的だ。

 また、Xbox 360 CPU FSBは、2本のバーチャルチャネルが可能で、仮想的に2チャネルを構成できる。

 こうしたXbox 360 CPUのFSBの強力なスペックからわかることは、IBMがこのCPUを開発するに当たって、FSBに非常にフォーカスしたことだ。ゲームコンソールでは、この部分にネックがあると考えていることがよくわかる。Cellと異なり、メモリインターフェイスをCPU側に内蔵していないため、3つのCPUコアにデータ&プログラムをフィードするためには、広いFSBが必要だと考えたものと見られる。ちなみに、現行世代のゲームコンソールCPUでIBMが開発したゲームキューブのCPU「Gekko(PowerPC750の拡張版)」も、FSBは1.3GB/secとXboxより広かった。

●11 FO4のステージ遅延で高クロック化を達成

 Xbox 360 CPUのコア内部についても、さらに詳細が明らかになった。下がコアアーキテクチャの図だ。

64b IBM PowerPC Architecture Core
PDF版はこちら

 Xbox 360 CPUは2命令発行のインオーダ(命令を順番に実行する)コアだ。3内部命令をアウトオブオーダ(命令順序を入れ替えて実行する)コアのPentium 4などのPC CPUとは大きく異なる。

 今回明らかになった点で重要なことは、Xbox 360 CPUコアの、パイプラインステージのディレイが11 FO4(Fanout-Of-4)と非常に小さいこと。この数字が小さければ、それだけ高クロック化が容易になる。ステージ毎の遅延が小さければ、より高い動作周波数で回すことが可能になるからだ。

 ちなみに、11 FO4というスペックは、CellのCPUコア群のスペックと同じだ。もっとも、これはある程度予想ができた。というのはXbox 360 CPUコアと構成が似ているCellのPPE(Power Processor Element)も、同様のスペックだからだ。PPEとXbox 360 CPUコアは、パイプライン構造が非常によく似ており、パイプラインステージの遅延も同程度だと推定されていた。原理的にも、Xbox 360 CPUはCellと同程度の高クロック化が可能ということになるため、3.2GHz動作で両CPUが揃っているのは不思議ではない。

 パイプラインを細分化すると高速動作が可能になるが、トレードオフもある。それは消費電力だ。逆を言えば、今のIBMプロセスはSOIのおかげもあって、Intelプロセスなどと比べると、比較的動作時の消費電力が小さい。そのため、IBM系CPUはその利点を生かした高クロック化へ向かっているように見える。

 もっとも、Xbox 360 CPUも、電力効率を上げるためにクロックゲーティングを強化するなどの措置は取られている。各パイプラインは、命令がアクティブになるまでシャットダウンされている。おそらく、パイプラインに命令が発行される直前(キューの最終段近くに命令が来る)に、その命令が発行されるパイプラインがターンオンされると見られる。こうした、デフォルトで各パイプをシャットダウンしておく手法は、一般的になりつつある。

 実行パイプラインでは、ロード命令の実行後に、遅れて演算を行なう「Delayed Execution」型のパイプラインにすることで、データのロード待ちを最小にしている。また、ベクタ&浮動小数点パイプでは、ベクタとスカラそれぞれで、ロードとストアのユニットが、分離されていることがわかる。

 レジスタがGPR(General Purpose Register)とFPR(Floating Point Register)ともに64本になっている。これは2スレッドのハードウェアマルチスレッディングをサポートするため、それぞれのスレッドが32本ずつのレジスタを持つためだ。論理レジスタ空間はPowerPCアーキテクチャのままだ。ただし、VRF(Vector Register File)は論理128本に拡張されていて、2スレッドで256本となっている。従来の32本のレジスタは128本の最初の32本にマップされるため、上位互換は保たれる。

Combined VMX and FPU Unite
PDF版はこちら
Xbox 360 CPU Pipeline
PDF版はこちら

●疑問が残るXbox 360 CPUのマルチスレッディング

 いくつかの疑問が明らかになる一方で、逆に謎が増えたのはXbox 360 CPUのマルチスレッディングだ。Xbox 360 CPUは2wayのハードウェアマルチスレッディングを実装している。このマルチスレッディングアーキテクチャについての説明が、過去のものと食い違っている。

 8月のHotChipsでのMicrosoftの説明では、Xbox 360 CPUのマルチスレッディングは「シンメトリック・ファイングレイン・マルチスレッディング(Symmetric fine grain multithreading)」だと説明されていた。それに対して、今回のFPFの説明では「サイマルテニアス・マルチスレッディング(Simultaneous multithreading)」だと説明されている。前者だとすると、通常、特定のサイクルに実行できるスレッドはどちらか片方であることを意味する。それに対して、後者だとすると、通常、1サイクルに2つのスレッドの命令を混在して実行できることを意味する。

 マルチスレッディングの最大の効用はメモリレイテンシの隠蔽だ。しかし、Simultaneous multithreadingだと、それに加えて実行ユニットに2スレッドから命令をディスパッチすることで、より並列性を高める効用がある。より実行ユニットをビジーに保つことができるわけだ。

 しかし、その反面、Simultaneous multithreadingの方が制御がより複雑になる。特に、CPUがout-of-order制御でない場合、Simultaneous multithreadingは実装に余計なコストがかかる。Xbox 360 CPUがin-orderコアであることを考えると、実際にはFine grain multithreadingである可能性が高い。また、このあたりの用語の定義自体、まだあまり定まっていない。

 Xbox 360 CPUのダイサイズは168平方mmであることが明らかにされた。トランジスタ数はすでに公表されており、1億6,500万(165M)。これは、PLAYSTATION 3のCellプロセッサの、235平方mm、2億4,100万トランジスタという規模より一回り小さい。プロセス技術は、IBMの90nm SOI CMOSプロセス「10KE」で、Cellとほぼ同じため、チップサイズが小さい分Xbox 360 CPUの方が原理的には歩留まりは高くなる。

 しかし、PS3ではCellの8個のサブプロセッサコア「SPE(Synergistic Processor Element)」のうち、7個しか使わない。そのため、PS3ではSPEのダイエリアに1カ所欠陥があって、1個のSPEが動作しない場合でも、そのコアを殺して使うことができる。Xbox 360 CPUには、その利点がない。

Shared L2 Cache Features
PDF版はこちら
High Bandwidth Data streaming Features
PDF版はこちら

Xbox 360 System(一部推定)
PDF版はこちら

□関連記事
【9月14日】【海外】マルチスレッディングを前提に設計されたXbox 360 GPU
http://pc.watch.impress.co.jp/docs/2005/0914/kaigai212.htm
【9月9日】【海外】Xbox 360コアとCellの類似性
http://pc.watch.impress.co.jp/docs/2005/0909/kaigai210.htm
【2004年11月17日】【海外】Intel CPUはシリアルFSBへと向かう
http://pc.watch.impress.co.jp/docs/2004/1117/kaigai135.htm

バックナンバー

(2005年10月28日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.