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

Xbox 360コアとCellの類似性




●詳細がわかってきたXbox 360 CPU

 いよいよ発売時期が迫ってきたMicrosoftの次世代ゲームコンソール「Xbox 360」。来週の東京ゲームショウ前後には、日本での発売価格がアナウンスされるという噂もある。この時期に、Xbox 360のシステムのさらに詳細が明らかになってきた。

 今回、明らかになったのは、CPUのパイプライン構成やGPUアーキテクチャの詳細などだ。

 Xbox 360 CPUは、整数演算で19ステージ(ライトバックなどは含まない段数と見られる)、浮動小数点演算で41ステージとかなり長いパイプラインを持つ。単純に長さだけを見ると、初代Pentium 4並のパイプライン段数だ。ステージを細分化すればその分高周波数化が容易になる。Xbox 360 CPUが3.2GHzを90nmプロセスで高歩留まりで達成できる理由のひとつは、このパイプラインの深さにある。

 こうした詳細が明らかになるにつれて、明瞭になってきたのは、Xbox 360 CPUのCPUコアと、PLAYSTATION 3に搭載されるCellプロセッサのPowerPCコアである「PPE(Power Processor Element)」との類似性だ。Cellは、データ処理用のCPUコア「SPE(Synergistic Processor Element)」は、SIMD(Single Instruction, Multiple Data)演算に特化した特殊なコアだが、PPEは汎用的なPowerPC系CPUコアとなっている。基本スペックは、Xbox 360 CPUコアとPPEで共通項が多い。2命令発行(issue)/サイクルのインオーダ(in-order)型で、2way ファイングレインマルチスレッディング、整数演算が1ユニット、整数ロード/ストアが1ユニット、分岐が1ユニット、SIMD(Single Instruction, Multiple Data)演算のVMXユニット群を備えるといったスペックは共通だ。

 今回は、パイプライン構成が明らかになったことで、ますます両者の類似点が明瞭になった。パイプラインだけを見ると、両CPUコアは双子のようだ。PPEは、整数演算パイプラインしか公開されていないが、その部分をXbox 360 CPUと比較すると、まるでPPEをコピーして来たかのように見える。両CPUの設計チームが設計を共有したはずはないので、PowerPC 970をベースにしたら、結果として同じような設計になったと見られる。

●3つのCPUコアは1個がゲーム専用、2個はシステムと共用

Xbox 360 CPUのダイ

 Xbox 360でのCPUの使い方も見えてきた。Xbox 360 CPUは、3つの全く同じCPUコアを搭載している。3個のCPUコアのうち、CPUコア0はプライマリ、CPUコア1とCPUコア2はセカンダリとなっている。

 このうち、CPUコア0はゲームプログラムで占有できる。CPUコア1とCPUコア2は、ゲームプログラムとシステムが共有する。ネットワークスタックや各種常駐プロセス、USBドライバなどのドライバ類はセカンダリコア群で走る。

 ただし、セカンダリコア群でも、システムの占有率は非常に低い。コア1とコア2のそれぞれのコアにつき、5%程度のコンピュテーションを、システム側が消費するという。ゲームプログラムは、理論上は、CPUコア0の全てと、CPUコア1と2の95%を最大で使うことができる。

 このほか、Xbox 360では、オーディオ処理の多くはソフトウェアで行なう。サウスブリッジチップ側に搭載されているのは、Xbox 360で使うXMAオーディオフォーマットのハードウェアデコード、256音声の伸張など。XMAはWMA Proを多少変更したフォーマットだ。その他の、3DオーディオやDolbyエンコーディング、ミキシングなどはCPUのセカンダリコア群のCPUコア2で、ソフトウェア処理をする。256音声でDolbyエンコーディングをかけ、3D処理を行なった段階で、CPUコア2の25%前後の負荷となるという。

●Xbox 360 CPUのパイプライン

 下の図が、Xbox 360 CPUのパイプライン構成図だ。

Xbox 360 CPUパイプライン構造図
PDF版はこちら

 大まかに言うと、命令のフェッチとバッファ、デコード、発行で12ステージ、整数演算系は分岐の実行を含めて11ステージ、浮動小数点演算系は整数パイプの後に配置されている。

MPF2002で公開されたPowerPC 970のパイプライン構造

 Microsoftは、Xbox 360 CPUはPowerPC 970をベースにしたと説明している。オリジナルのPowerPC 970のパイプラインは、フェッチ&デコードが9ステージ、ディスパッチが1~2ステージ、実行が整数演算で5ステージ、浮動小数点演算で最長が13ステージ、コンプリーションが1ステージ。最短で16ステージ(コンプリーションまで含む)、最長で25ステージのパイプラインだった。

 PowerPC 970の場合は、アウトオブオーダ(命令順次を入れ替えて実行する)型なので、スケジューリングにステージを必要とする。しかし、Xbox 360 CPUはインオーダ(命令を順番に実行する)型なので、そうしたステージは不要となり、ロジックも簡略になる。それを加味すると、Xbox 360 CPUのパイプはPowerPC 970より深いと言えるかもしれない。Xbox 360 CPUで、後半、浮動小数点演算系のパイプラインが異常に長いのは、深いキューを間に挟んで、実行パイプをずらしているからだ。そのため、見た目ではXbox 360 CPUのパイプラインとPowerPC 970のそれは、かなり異なる。

 むしろパイプラインが似ているのはCellの制御用CPUコアであるPPEだ。

 Xbox 360 CPUのパイプラインを頭の方から見て行くと、最初は命令フェッチとバッファで合計6ステージ。Xbox 360 CPUコアはマルチスレッディングなので、当然ながらスレッド単位で行なう。4ステージ目の命令列から分岐命令をスキャンして分岐予測ユニットに流しているため、命令キャッシュからのフェッチは4ステージ目で終わることがわかる。

 次が命令デコードと命令間の依存性チェック、命令発行。インオーダコアなので、アウトオブオーダの複雑なスケジューリングとレジスタリネーミングは必要ない。下から2ステージ目が「IS(Instruction Issue) 2」となっているので、命令デコードが前半3ステージ、命令発行が後半3ステージであると推測される。つまり、フェッチ&デコードで合計9ステージで、これはPowerPC 970と同じとなる。

 IS2ステージは「ストップ」マークがついていたので、キューになっていて命令を留め置くと推測される。このキューを抜かすと、発行は2段で、これもPowerPC 970と同様だ。

 実行パイプラインは大きく整数演算系とベクタ&浮動小数点演算系に分かれる。整数系のパイプ群には、ロード/ストアパイプと整数パイプと、分岐実行パイプの3本がある。各パイプにはレジスタファイルアクセスとディレイステージが設けられている。明記されていないが、ロード/ストアが2サイクル後から実行に入るところから、レジスタフェッチはそれぞれ2ステージだと見られる。ディレイでステージがずらされているのは、インオーダ実行なので、ディレイを入れてロード/ストアパイプと演算パイプをずらした構成にしている。

 ベクタ&浮動小数点系パイプは、発行ステージから8ステージの深いキューに入る。整数パイプとは、実行ステージが完全にずれる。この構成なら、条件分岐が成立してパイプラインをフラッシュする場合も、後続のベクタ&浮動小数点演算命令はまだ実行に移っていない計算になる。

 ベクタ&浮動小数点系パイプは、2グループに分かれる。図の右下が、ベクタ/スカラのロードとストアとパーミュートのパイプライン。つまり、メモリアクセスとレジスタ操作系となる。図の左下のグループはベクタ整数演算のベクタシンプル、スカラ浮動小数点演算、ベクタ浮動小数点演算、それからドットプロダクト(内積)演算の4パイプだ。パイプラインは並列しているが、CPUコア自体はアウトオブオーダではなく、インオーダの2イシューだ。スループットは、2命令となる。ロード/ストア系と演算系のそれぞれのパイプ群に対して、1命令/サイクルの命令発行になっていると見られる。

 レジスタアクセスは3ステージ。整数系より1ステージ多いのは、レジスタ本数が128本と強化されている(整数系は32本)ためだと推測される。浮動小数点演算系は実行に時間がかかるので、ステージは深い。一部のベクタ浮動小数点演算とドットプロダクト演算が14ステージで、フェッチから数えて41ステージとなる。

●Cellの整数パイプとXbox 360 CPUの比較

 このパイプライン構成を、今度はCellのPPEと比べてみよう。Xbox 360 CPUのパイプライン図と同じフォーマットのPPEのパイプ図は公開されていない。そこで、PPEのブロック図を参考に、PPEのパイプライン図をXbox 360 CPU風に描き直してみた。

CellとXbox 360 CPUの比較用図
PDF版はこちら

 PPEのブロック図では、バッファ中の命令に対する分岐命令のスキャンが各スレッド毎に4命令/サイクルになっているので、ここのバッファリングはXbox 360 CPU同様に4wayになっていると推定した。デコーダの帯域は2命令/サイクルで、これもXbox 360 CPUと同様なので、同じように2wayを明示して描いてみた。

 PPEのフェッチ&バッファは、キャッシュアクセスが4ステージ、バッファが2ステージで、4ステージ目から分岐予測パイプに送られる。この構成は、Xbox 360 CPUコアそっくりだ。デコードは3ステージ、命令発行は3ステージ。この構成も、Xbox 360 CPUと同じと推測される。

 整数系パイプでは、ロード/ストアが2ステージのレジスタファイルアクセスで始まる。整数演算と分岐は、3ステージのディレイを挟んでスタートする。これも、Xbox 360 CPU側の整数パイプが想定通りだとすれば、同じ構成となる。パイプライン長は、Xbox 360 CPUとPPEで異なるが、これは表現の問題もあるため、実際に異なるかどうかはわからない。

 PPEのベクタ&スカラ系の演算パイプは、明らかになっていないが、ブロック図を見ると、こちらにもキューが設けられているため、Xbox 360 CPUと類似のずらした構成になっている可能性はある。ただし、PPEのVMXレジスタは標準の32本で、Xbox 360 CPUと異なり強化されていない。

 こうして比較すると、両CPUコアの整数パイプラインは異様なほど似ていることがわかる。ルーツが同じだから当たり前と言えば当たり前だが、兄弟CPUコアと言ってもよさそうだ。はたして、任天堂の次世代ゲームコンソール「Revolution」のCPUは、この兄弟に加わるのだろうか。

●まだ謎が残るFSB

 このほか、Xbox 360のシステム構成では若干のアップデートがあった。これまで公式には明らかにされていなかった、GPU内のGPUメインダイ(半導体本体)とeDRAM(組み込みDRAM)ダイの間のインターコネクトの転送レートが32GB/secであることが明らかになった。この2チップはオンパッケージで接続されており、かなりインターフェイス幅も取っているため、チップ間接続でも高速転送が可能になったと見られる。ちなみに、eDRAM内部では、ピクセル処理プロセッサ群とDRAMセルが256GB/secの帯域で結ばれている。

Xbox 360システム構成図最新版
PDF版はこちら

 また、公式な情報ではないが、Webで暴露されたXbox 360のマザーボードの写真から、CPUとGPUの間のFSB(Front Side Bus)も、ある程度見えてきた。写真を見る限り、CPUとGPU間は、ディファレンシャル(差動)のペアが、上下16対づつで、等長配線はしていない。これが意味するのは、Xbox 360 CPUのFSBは、ピン当たり5.4GbpsとPCI Expressの約2倍の転送レートで、おそらくシリアル転送か、Cellの採用したRambusのFlexIO(Redwood:レッドウッド)のような技術を使っているということだ。Xbox 360 CPUでは、意外とこの超高速FSBも重要な技術要素だ。

□関連記事
【8月23日】Hot Chipsで公開されたXbox 360のシステム構成
http://pc.watch.impress.co.jp/docs/2005/0823/kaigai205.htm

バックナンバー

(2005年9月9日)

[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.