Click


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

PlayStation2の心臓Emotion Engineはこうなっている

●驚異的なカスタムデザインのCPU

 PlayStation2の驚異的な表現力を産み出しているのは、斬新なアーキテクチャのCPU「Emotion Engine」だ。ソニー・コンピュータエンタテインメント(SCEI)が東芝と共同開発したこのプロセッサは、マルチメディア拡張命令を搭載した128bitのCPUコア(MIPSベース)に、10個の浮動小数点積和演算ユニット、4個の浮動小数点除算ユニット、デジタルビデオコーデック、Direct Rambus DRAM(RDRAM)インターフェイス2チャンネルなどを搭載する。途方もない演算ユニットの数だ。トランジスタ数は1,050万で、CPUコアのトランジスタ数ならPentium III(950万)に匹敵する。クロックは294.912MHzだが、浮動小数点演算性能ならPentium IIIを大きく上回る。

 SCEと東芝は、1年前の学会「1999 ISSCC (IEEE国際固体回路会議)」で、このEmotion Engineを発表した。その際に一度レポートしているが、PlayStation2デビューを迎え、改めてEmotion Engineを振り返ってみたい。

●CPUコアとベクトル演算ユニットを統合

図1:ダイアグラム図

 PlayStation2が必要とする膨大な演算処理のために、Emotion EngineはCPU以外にも演算ユニットを搭載している。図1のダイアグラム図のとおり、次のようなユニットがある。

・CPUコア
・VPU(ベクトル演算ユニット)0
・VPU1
・IPU(イメージプロセッシングユニット)

 各ユニットは128bitの内部バスで接続され、10チャンネルのDMAコントローラが、このバスをハンドルする。CPUコアはMIPS IIIをベースに独自にマルチメディア命令を拡張したものだ。

 VPU0とVPU1の基本アーキテクチャはほぼ同じだが、役割は異なる。VPU0がエモーションシンセシス(感情合成)あるいはビヘイビアシンセシス(振る舞い合成)と呼ばれる、物理シミュレーションなどでリアルなフィーリングを再現する処理をメインに行なう。一方の、VPU1は、3Dグラフィックスのジオメトリ処理をメインに担当する。つまり、エモーションシンセシスと3Dグラフィックスの処理は並列に行なうことができる。IPUはMPEG-2などの圧縮されたイメージの展開を行なう。

●マルチメディア拡張されたCPUコア

 Emotion EngineのCPUコアは、MIPS IIIアーキテクチャをベースに、107のマルチメディア命令を新たに加えている。新命令では、ひとつの命令で複数のパック化されたデータに対して同じ処理を同時に実行する並列処理を行なう「SIMD(Single Instruction, Multiple Data)」を整数演算でサポートする。SIMD命令は128bit幅のパック化データを扱えるようになっており、8bit×16個、16bit×8個、32bit×4個のデータタイプをサポートする。また、整数レジスタもこれに合わせて64bitから128bit(32本)に拡張された。

 CPUコア内部は、64bitの整数演算パイプを2つ備えた2ウェイのスーパースカラ構造になっている。Emotion Engineの2個の整数演算ユニットは、128bit幅のSIMD命令を実行できる1個の128bit整数演算ユニットとして機能もする。データタイプが128bitに拡張されたことに合わせて、128bitのロード/ストアユニットも備えられた。

 拡張された命令は以下の通りになっている。

乗算/除算 19
3オペランド乗算/積和算 4
パイプ1に対する乗算 10
加減算 19
パック化/伸張 11
最小値/最大値 4
絶対値 2
シフト 9
論理 4
コンペア 6
128bitロードストア 2
その他 17

 パイプラインは6段で、ISSCC99で発表された性能は、250MHz時にDhrystone2.1ベンチマークで363MIPSとなっていた。しかし、Emotion Engineは実際には300MHz弱で動作する上に、ISSCCでの性能値は、チューンされていないコンパイラを使ったものであったため、ベンチマーク値は今後、さらに大幅にアップするだろうという。

 CPUコアには、このほか、単精度浮動小数点演算ユニット、シングルサイクルでアクセスできる16KBのスクラッチパッドRAM(SPRAM)、8KBのデータキャッシュ、16KBの命令キャッシュなどをCPUコアに備える。

●PlayStation2の異常な表現力の源ベクトル演算ユニット

図2:VPUの構造

 Emotion Engineのベクトル演算ユニット、VPU0とVPU1は、アーキテクチャ的にはほぼ同じだ。VPU0もVPU1も、4個の浮動小数点積和算ユニット(FMAC)と1個の浮動小数点除算ユニット(FDIV)を持つ。VPU1は、そのほか、VPU0にはないEFU(エレメンタリファンクションユニット)という、ジオメトリパイプラインで多用されるサイン/コサイン演算などを担当するユニットが加えられている。

 VPUの浮動小数点演算ユニットは、IEEE単精度フォーマットだけをサポートし、倍精度はサポートしない。単精度しか要求されないゲームに特化した浮動小数点演算エンジンだ。FMAC 4個の構成は、3Dグラフィックスで多用される4×4のマトリックス演算を意識したものだ。FMACは、各サイクルごとに4個の並列演算が可能で、レジスタもそれに対応した構成になっている。つまり、32本の128bit幅の浮動小数点レジスタがあり、各レジスタがそれぞれが32bit×4の単精度浮動小数点データを格納できる。

 積和算はレイテンシ4/スループット1、除算はレイテンシ7/スループット7で実行できる。マトリックス演算では、4×4のマトリックス*ベクトル演算がレイテンシ7/スループット4、4×4のマトリックス*マトリックス演算がレイテンシ19/スループット16となっている。

 VPUの命令セットアーキテクチャはVLIW(very long instruction word)を取る。ただし、Crusoeのような4イシュー128bit長の長い命令語ではなく、32bit長の命令2つを納めた2イシュー64bit長の命令語となっている。1つの命令語に納められた2つの命令のうち、アッパーインストラクションがFMAC群に対して発行され、ローワーインストラクションがFDIVやEFU、ロードストアユニットなどFMAC以外のユニット群に対して発行される。図2のような構造となっている。

図3:VPUパイプライン
 こうした構造を取っているため、VPUでは例えば、3Dの頂点オペレーションに必要な、19個のマトリックス乗算/積和算と1つの除算を7サイクルのスループットで並列に行なうことができる。ISSCCで示された例が図3だ。また、ローワーインストラクションで、除算を発行したあと、命令スロットの空きを使ってロードストア命令などを発行することもできる。VPUでは、ソフトウェアパイプライニング技術を使えるようになっている。整数レジスタは16bitが16本だ。

 VPUは、データ用のメモリとして「VUMEM」と名付けられたメモリをユニット内部に持つ。容量はVPU0が4KB、VPU1が16KBとなっている。また、インストラクション用のメモリ「microMEM0」があり、VPU0が4KB、VPU1が16KBとなっている。

 2つのVPUは、アーキテクチャ的にはほぼ同じだが、説明した通り役割が異なるため、他のユニットとの接続が異なる。VPU0は、CPUコアと専用の128bitポートで接続されており、メインバスを使わないでデータを転送できる。これは、VPU0の処理するビヘイビアシンセシスのタスクが、CPUのタスクと密接に連携しているためだという。

 一方、VPU1はCPUとはあまり同期する必要がないグラフィックス処理を行なうため、CPUコアとの専用ポートは持っていない。その代わり、別チップのグラフィックスチップ「グラフィックスシンセサイザ」とのインターフェイスである、グラフィックスインターフェイスシステム(GIF)への、専用ポートを持っている。これは、VPU1が生成した膨大なディスプレイリストをチップ内部のメインバスを使わないで渡せるようにするためだ。

●DVD再生を可能にするイメージプロセッシングユニット

 3番目のユニットIPUは、圧縮されたイメージデータのデコードのアクセラレータだ。MPEG-2のマクロブロックデコーディングをサポートし、カラースペースコンバージョンとベクトル量子化も行なう。iDCT変換など負担の大きな処理をIPU側で行なうため、CPUコアはほぼ半分のプロセッサパワーでMPEG-2デコードを行なうことができるという。また、テキスチャデータの展開もIPUで行なうという。

●DRDRAM2チャネルとWillamette並のメモリインターフェイス

 Emotion EngineのDirect RDRAMのインターフェイスは2チャネルだ。メモリ帯域は3.2GB/秒になる。これは、Intelの次期CPU「Willamette(ウイラメット)」用チップセットと同じだ。メモリの量は32MBで、128MbitのDirect RDRAMチップを2個使う構成となるようだ。

 こうやってEmotion Engineを概観してみると、これがいかにとんでもないプロセッサかがわかる。ピークの浮動小数点演算性能は6.2GFLOPSというとんでもない数字で、とてもゲーム機のエンジンとは思えない。汎用CPUではできない、とんがった設計を満載して、ゲームの表現力を伸ばすことだけに集中した、じつに思い切りのいいプロセッサだ。あまりに特異なデザインであるため、業界では、このプロセッサについて様々なウワサが飛び交っている。

 しかし、誰が設計したにせよ、この仕様にはSCEIの意向と技術が強力に反映されていることは確かで、SCEIが望んだものを盛り込んだプロセッサであることは間違いない。そして、すごいのは、こんな仕様をゲーム機のエンジンとして考え、それを実現させてしまうところだ。

 しかも、SCEIの構想はここにとどまらない。SCEIの久夛良木 健氏は、昨年10月3~4日に米国サンノゼで開催されたMicroprocessor ForumでEmotion Engineをさらに進化させることを宣言した。2002年には次世代のEmotion Engine2(EE2)を、2005年にはEE3を発表する予定だという。EE2は、Emotion Engineのアーキテクチャをベースにするが、0.13μmで製造し、4,000万トランジスタを集積するという。EE3は0.10μmで製造し、数億トランジスタを集積する。そして、このエンジンをベースにしたマルチメディアワークステーションを作ってゆくという。

 今、いちばん元気がいい日本メーカーがソニーであることは間違いがない。

□関連記事
プレイステーション2 関連記事リンク集
http://pc.watch.impress.co.jp/docs/article/20000221/ps2i.htm


バックナンバー

(2000年3月2日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当pc-watch-info@impress.co.jp