このページの本文へ

【ISSCC 2005 Vol.2】CellプロセッサーとPS2のCPU“Emotion Engine”との大きな違いとは?――ISSCCのセッションから読み解くCellプロセッサーの詳細

2005年02月09日 21時25分更新

文● 西川善司(トライゼット)

  • この記事をはてなブックマークに追加
  • 本文印刷
Cellプロセッサーのブロックダイアグラム。左下のPPEがCPUコアで、独立した1次、2次キャッシュメモリーを備える。上に並ぶ8つのSPEはそれぞれが128bit SIMD RISCプロセッサーで、それぞれ256KBのローカストアーメモリー(LS)を備える
Cellプロセッサーのブロックダイアグラム。左下のPPEがCPUコアで、独立した1次、2次キャッシュメモリーを備える。上に並ぶ8つのSPEはそれぞれが128bit SIMD RISCプロセッサーで、それぞれ256KBのローカストアーメモリー(LS)を備える
Cellプロセッサーの詳細について説明を行なったソニー・コンピュータエンタテインメント(株)半導体事業本部マイクロプロセッサー開発部部長の鈴置雅一氏(左)、米IBM社Broadband Processor Technology Microelectronics Divisionのジム・ケール氏(Jim Kahle、中央)、(株)東芝 DIRECTOR OF ENGINEERING,STI DESIGN CENTERの増渕美生氏
Cellプロセッサーの詳細について説明を行なったソニー・コンピュータエンタテインメント(株)半導体事業本部マイクロプロセッサー開発部部長の鈴置雅一氏(左)、米IBM社Broadband Processor Technology Microelectronics Divisionのジム・ケール氏(Jim Kahle、中央)、(株)東芝 DIRECTOR OF ENGINEERING,STI DESIGN CENTERの増渕美生氏

半導体関連学会“ISSCC 2005(International Solid-State Circuits Conference 2005)”では、現地時間の7日に行なわれたCellプロセッサーの正式発表を受ける形で、Cellプロセッサーの詳細を解説するセッションが複数行なわれた。現地時間の8日までに行なわれた2つのCellに関するセッション、“7.4 A Streaming Processing Unit for a Cell Processor”(Cellプロセッサーのストリーミングプロセッシングユニット)と“The Design and Implementation of a First-Generation Cell Processor”(第1世代Cellプロセッサーの設計と実装)から、興味深い内容をピックアップして紹介する。



Cellプロセッサーのブロックダイアグラム

Cellプロセッサーの全体的なブロック図を見てみよう。左下の“PPE”(Power Processor Element)は64bit Powerアーキテクチャーのプロセッサーで、第一報で報じたようにVMX(Vector Multimedia Extension:128bit SIMD命令用コプロセッサー)に対応したPowerPC 970相当のCPUコアである。インオーダー、2Wayのハードウェアマルチスレッディング処理に対応しており、おもにOSやタスク処理を取り扱う。ワークステーションやゲーム機のCPUとしてCellプロセッサーを搭載した場合、PPEがメインプロセッサー的な位置づけになるだろう。

PPEの1次キャッシュは命令、データそれぞれ32KBずつ。加えて512KBの統合型2次キャッシュが内蔵される。PPEは“EIB”(Element Interconnect Bus)に接続されており、このEIBには8基の“SPE”(Synergistic Processor Unit)も接続されている。

各SPEは4要素ベクトルを4個同時に演算できる最大16Way、同時2命令発行型の128bit SIMD型のRISCプロセッサーである。SPEは1次キャッシュや2次キャッシュを持たない。これはSPEがデータ駆動型のストリーミングプロセッサー的な用途を前提とされているためだ。次々と送られてくるデータを流れ作業的に処理し続けるため、同じメモリーアドレスのデータを短時間で何度も処理することが少なく、キャッシュを実装する意味がないという判断に基づく。1次命令キャッシュくらいはあってもよいような気がするが、SPEは分岐履歴蓄積機能も持っておらず、反復や条件分岐を含むソフトウェアを高速に処理する用途では作られていないため、命令キャッシュも不必要という判断なのだろう。その代わりというわけではないが、レジスター数は膨大で、128bit長のレジスターを128個も持っている。

さらにキャッシュではないが、各SPEには“ローカルストアー”(LS)と称されるスクラッチパッドメモリーが256KBずつ搭載される。これは演算結果の保持などに活用され、この結果をEIBを通じて他のSPEに受け渡すこともできる。

CellのSPEはEmotion EngineのVUとどう違うのか?

Cellの1PPE+8SPEという構造を見て、PlayStation2(PS2)のCPU“Emotion Engine”(EE)の1RISC+2VU(Vector Unit)の構成を連想し、「PS2のEEの強化版か?」と思う方もいるだろう。ある意味ではそのような見方もできなくはないが、細かく見ていくとEEとCellには大きな相違点がある。

PlayStation2のCPU、EEのブロックダイアグラム。メインのRISC CPUコアとは別に、2つのRISCプロセッサー“VU”が搭載されている点は、Cellの構造に似ているとも言える
PlayStation2のCPU、EEのブロックダイアグラム。メインのRISC CPUコアとは別に、2つのRISCプロセッサー“VU”が搭載されている点は、Cellの構造に似ているとも言える

第一の相違点は、SPEがメインプロセッサーを補助するコプロセッサーという位置づけでなく、独立したRISC CPUである点にある。EEのVUも、メインCPUであるRISC CPUコアから独立して動作するモードが用意されていた。しかしVUプログラムがVU内メモリーに存在することが前提で、限定的な使い方しかできず、メインCPUのお助け役という位置づけに留まっていた。これに対してCellの各SPEにはメインメモリーへのアクセス能力が備わっていて、PPEに依存せずにメインメモリー上にある独立したソフトウェアを動作させることができる。

もうひとつの相違点、いや新要素ともいえる点は、各SPEがEIBを通じて連動できるというところだ。たとえば、あるSPE(SPE#1)の処理結果をEIBを通じて順次別のSPE(SPE#2)に受け渡し、それに対する処理をSPE#2で行なうといった、複数SPEを使った多段パイプライン的な処理も可能になる。

メディアプロセッサーとしてCellを見ると、この8SPEの構成はかなり強力であることは間違いない。たとえばワークステーションのCPUとして利用すれば、これまで専用ハードウェアが必要だった処理がCPUだけでできることになり、まったく新しいコンピューティングの世界が開けてくる。あるいはCellベースのMacintoshなどが出てくれば、なかなかおもしろいものになりそうだ。しかしゲーム機のCPUとして見た場合は、EEのVUが当初言われたのと同様に、“SPEを何に使うか”が大きなポイントとなってくるだろう。

実際、早速「VUの時の二の舞になるのか?」という声もささやかれているが、Cellプロセッサーのプロジェクトはソニーだけでなく、IBMが大きく絡んでいることが救いとなるかもしれない。IBMはコンパイラー技術も卓越したものを持っており、SPE関連の開発環境構築にも期待が見出せる。

Cellプロセッサーのバス“EIB”の秘密

EIBについての詳細説明も行なわれた。PPEと8SPE、そしてMIC(Memory Interface Controller)、BIC(Bus Interface Controller)を相互に結ぶEIBは、クロスバー接続ではなくリングバス接続(山手線のように巡回するバスで、何用のデータかを示すタグを含む)となっている。

EIBは左回りバス、右回りバスがそれぞれ2本ずつの計4本あり、それぞれ64bitのタグと128bitのデータからなる計192bitのパケットがバス内を走る。つまりEIBは、ピーク性能では1サイクルあたり192bit×4本=96B(バイト)のデータ伝送帯域を持っていることになる。なおリングバスという構造上、通信レイテンシーは必ず存在する。最大性能を追求するのであれば、すべてを相互に直結したクロスバー接続が理想的だが、そうしなかったのは回路規模の節約や高クロック動作を考慮しただけでなく、SPEの数を増減したCellプロセッサーのバリエーション展開を想定したためだと思われる。SPEの数が変化しても、EIB自体のアーキテクチャーは変更せずにすむからだ。

メモリーインターフェースのMICは既報のとおり、米ラムバス社の“XDR DRAM”のデュアルチャネル接続に対応する。もうひとつのバスであるBICは周辺デバイスとの接続に使われるが、ブロックダイアグラム中に“RRAC I/O”の記述がある事からも分かるように、ラムバスの最新パラレルインターフェース技術“FlexIOプロセッサバス”(コード名Redwood)を採用していることが明らかにされた。BICのFlexIOは、ブロックダイアグラムでは上り下りそれぞれ2セットあるように記載されているが、実際には上り下りのそれぞれ帯域幅を変更可能な形で96bit分のバスが用意されている。たとえば下りを56bit分、上りを40bit分という構成も可能となる。

BICの用途は、Cellプロセッサーを搭載するシステムを何に使うかによって変わる。PlayStation3の場合は、ここにGPUを接続すると想定される。それ以外の例としては、たとえばCellプロセッサーを複数個使ったSMP(Symmetric Multi Processor:対称型マルチプロセッサー)システムを作る場合に、BICをCellプロセッサー同士の接続に使うことが考えられるだろう。ワークステーションやゲーム機でのCPU~GPU間のデータ伝送は、ジオメトリーデータやテクスチャーデータをGPUに伝送するCPU→GPU方向(下り方向)のデータ転送が圧倒的に多い。そこで、たとえばBICの全96bitのうち、周辺デバイスとのI/Oに上下それぞれに16bit(計32bit)を割り当てて、残り64bitをGPUとの接続用として、下り40bit上り24bitといった非対称のバスで構成することも可能になる。おそらくPlayStation3におけるCellプロセッサーも、BICのコンフィギュレーションは下りのバスに多くを割り当てることになるだろう。

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン