Emotion Engine



Emotion Engine
 SCEと東芝が共同開発した超高性能プロセッサが、この「Emotion Engine」です。1999年2月に「ISSCC99」で発表され、あまりの高性能さに場内が騒然としたそうです。
 それもそのはず、浮動小数展性能が6.2GFLOPSで、インテル最新CPUのPentiumIII 500MHzと比較しても数倍以上の処理能力を誇っていますからね。

 このプロセッサは、大きくわけて4つのパートから構成されているそうです。
 ・128ビットCPUとFPU(浮動小数点ユニット)
 ・VPU0(ベクトルユニット)
 ・VPU1(ベクトルユニット)
 ・IPU(イメージプロセッシングユニット)

 では、これら4つのパートについて説明します。
128ビットCPU
 128ビットCPUは、「MIPSアーキテクチャ」といわれるプレステでも採用されているアーキテクチャを使っています。
 もちろん、次世代プレステ用のために、107のマルチメディア命令が新しく追加されているようです。
 このマルチメディア命令では、1つの命令に複数のデータをまとめて格納できるので、1度に同じ処理を実行することができます。MMXでも採用されているSIMD(Single Instruction, Multiple Data)命令というものを使っているようですが、詳しい内容は、専門の方におまかせします。

 また、128ビットCPUの中には、
 ・64ビットの整数演算パイプ(IU0、IU1)
 ・16KBの命令キャッシュ
 ・8KBのデータキャッシュ
 ・16KBのSPRAM
が含まれています。IU0とIU1は、2つまとめて128ビットととして使うことができて、先ほどのSIMD命令を実行できるようになっているそうです。

 細かい点はよくわかりませんが、他のVPU0、VPU1、IPUなどに、少しでも早く計算結果を教えられるように考えられた設計になっているようですね。
VPU0
 VPU0とVPU1の構造は、基本的に同じものだそうですが、その役割が違っています。VPU0では、このチップの売りとなる「Behavior Synthesis」のための計算をしています。
 まず、「Behavior Synthesis」というのは、単なるCG合成ではなくて、感情の表現やよりリアルな物の動きを作っていき、ゲーム内での各オブジェクト(背景、プレイヤーなど)を生き生きとしたものにしていく意味を込めた言葉のようです。
 これから容易に考えられるのが、膨大な計算量ですね。

 このために、1つの命令中に複数のオペレーションを入れることができるVLIW(very long instruction word)を採用しています。
 さらに、計算を高速化するために4つの「FMAC(浮動小数点積和算ユニット)」と1つの「FDIV(浮動小数点除算ユニット)」を持っているそうです。
 1度に、4つの積和算と1つの除算を並列して計算できるってことですね。(ただし、除算は、積和算に比べて7倍の時間がかかるそうです。)
 その他に、32の128ビット幅の浮動小数点レジスタ、16の16ビット整数レジスタ、4KBのVUMEM(データ用メモリ)、4KBのマイクロメモリ(先のユニットをコントロールするためのマイクロコードが格納される)が内蔵されています。
 もう一つ注目されるのが、128ビットCPUとVPU0が128ビットの専用バスで接続されているってことですね。状況に応じて素早くオブジェクトを動かすための工夫なのでしょう。
VPU1
 VPU1は、VPU0にEFU(Elementary Function Unit)を増設したものになってます。このEFUは、ジオメトリ計算で多用されるSinやCosの計算を担当するものだそうです。
 また、マイクロメモリとVUMEMは、VU0の4倍の16KBに拡張されているそうです。
 VPU1は、VPU0のように128ビットCPUと128ビットバスでは接続されていません。これは、VPU1が「Graphics Synthesizer」と密接な関係を持っているのがその理由のようです。
IPU
 IPUでは、圧縮されたイメージデータのデコード用のアクセラレータの働きをするようです。メインはCPUで処理して部分的にIPUに処理を任してトータル性能を向上させてるってことのようです。
 この中では、MPEG2の可変長復号化や逆DCT演算を行なったり、MPEG3のマクロブロックレイヤのデコーダの役割もするようです。