
エモーションエンジンは、 PlayStation 2ビデオゲームコンソールで使用するためにソニーコンピュータエンタテインメントと東芝が開発および製造した中央処理装置です。また、PlayStation 2ゲームのサポートを提供するために、日本と北米で販売された初期のPlayStation 3モデル(CECHAxxおよびCECHBxx)にも使用されました。エモーションエンジンの量産は1999年に開始され、PlayStation 2の生産終了に伴い2012年末に終了しました。[ 1 ]


エモーションエンジンは、それぞれが特定のタスクを実行する8つの独立した「ユニット」で構成され、同じダイ上に統合されています。これらのユニットは、CPUコア、2つのベクトル処理ユニット(VPU)、10チャネルDMAユニット、メモリコントローラ、および画像処理ユニット(IPU)です。インターフェースは3つあります。I/Oプロセッサへの入出力インターフェース、グラフィックスシンセサイザへのグラフィックスインターフェース(GIF)、およびシステムメモリへのメモリインターフェースです。[ 2 ]
CPUコアは、最初のVPUであるVPU 0と密接に連携しています。両者は連携して、ゲームコードの実行と高レベルのモデリング計算を担当します。2番目のVPUであるVPU 1は、ジオメトリ変換とライティング専用で、マイクロコードによって制御され、CPUコアと並行して独立して動作します。VPU 0は、使用されていない場合はジオメトリ変換にも使用できます。CPU /VPU0とVPU1によって生成された表示リストはGIFに送信され、GIFはそれらを優先順位付けしてからグラフィックスシンセサイザに渡してレンダリングします。
CPU コアは、 R5000をベースにしたMIPS R5900 双方向スーパースカラ順序付きRISCプロセッサ[ 3 ]で、MIPS-III命令セット アーキテクチャ(ISA) を実装し、MIPS-IV のサブセットに加えて、ソニーが開発したカスタム命令セットも実装しています。このカスタム命令セットは、32 ビット、16 ビット、または 8 ビットの整数の 128 ビット幅のグループに対して、単一命令複数データ(SIMD) 方式で動作します (たとえば、4 つの 32 ビット整数を他の 4 つの整数に単一の命令で加算できます)。定義されている命令には、加算、減算、乗算、除算、最小値/最大値、シフト、論理、先行ゼロカウント、128 ビット ロード/ストア、256 ビットから 128 ビットへのファンネル シフトなどがありますが、ソニーは競合上の理由から一部の命令については説明していません。誤解されがちですが、これらのSIMD機能はプロセッサが「128ビット」であることを意味するものではありません。メモリ アドレスも整数自体も128ビットではなく、共有SIMD/整数レジスタのみが128ビットだったからです。比較のために述べると、128ビット幅のレジスタとSIMD命令は、 1999年にSSEが導入されて以来、 32ビットx86アーキテクチャに存在していました。ただし、内部データ パスは128ビット幅であり、プロセッサは単一レジスタで4x32ビットの値を並列処理することができました。
このプロセッサは、6段の整数パイプラインと15段の浮動小数点(FP)パイプラインを備えています。レジスタ群は、32個の128ビットVLIW SIMDレジスタ(ネーミング/リネーミング用)、1個の64ビットアキュムレータ、2個の64ビット汎用データレジスタ、8個の16ビット固定関数レジスタ、16個の8ビットコントローラレジスタで構成されています。また、2個の64ビット整数演算論理ユニット(ALU)、128ビットロードストアユニット(LSU)、分岐実行ユニット(BXU)、および32個の64ビットFPレジスタと15個の32ビット整数レジスタを備えたMIPSベースプロセッサコアを含む32ビットVU1浮動小数点ユニット(FPU)コプロセッサ(VPU0/VPU1の同期コントローラとして機能)も備えています。 ALUは64ビットで、32ビットのFPUはIEEE 754規格に準拠していません。カスタム命令セット107 MMI(マルチメディア拡張)は、2つの64ビット整数ALUをグループ化することで実装されています。整数パイプラインと浮動小数点パイプラインはどちらも6段構成です。
実行ユニットに命令とデータを供給するため、16 KB の双方向セット連想命令キャッシュ、8 KB [ 4 ]の双方向セット連想非ブロッキングデータキャッシュ、および 16 KB のスクラッチパッド RAMがあります。命令キャッシュとデータキャッシュはどちらも仮想的にインデックス付けされ、物理的にタグ付けされていますが、スクラッチパッド RAM は別のメモリ空間に存在します。仮想アドレスを変換するために、48 エントリの二重エントリ命令およびデータ変換ルックアサイドバッファが提供されています。分岐予測は、64 エントリの分岐ターゲットアドレスキャッシュと、命令キャッシュに統合された分岐履歴テーブルによって実現されます。短い 6 段パイプラインのため、分岐予測ミスによるペナルティは 3 サイクルです。
Emotion Engineの浮動小数点演算性能の大部分は、VPU0とVPU1という2つのベクトル処理ユニット(VPU)によって提供されています。これらは基本的に3D演算に特化したDSPであり、ハードウェア頂点シェーダーパイプラインの先駆けとなりました。各VPUには、32個の128ビットベクトルSIMDレジスタ(4Dベクトルデータを保持)、 16個の16ビット固定小数点レジスタ、4個の浮動小数点乗算累積(FMAC)ユニット、浮動小数点除算(FDIV)ユニット、およびローカルデータメモリが搭載されています。VPU0のデータメモリは4KB 、VPU1は16KBです。
高帯域幅を実現するため、VPUのデータメモリはGIFに直接接続されており、両方のデータメモリはDMAユニットによって直接読み取ることができます。1つのベクトル命令は4つの32ビット単精度浮動小数点値で構成され、これらは処理のために4つの単精度(32ビット)FMACユニットに分配されます。この方式は、IntelのSSEx拡張機能と類似しています。
FMACユニットは1つの命令を実行するのに4サイクルかかりますが、6段パイプラインを備えているため、1サイクルあたり1命令のスループットを実現しています。FDIVユニットは9段パイプラインを備えており、7サイクルごとに1命令を実行できます。
IPUはMPEG-2圧縮画像のデコードを可能にし、DVDやゲームのFMVの再生を可能にした。また、2Dグラフィックスデータのベクトル量子化も可能にした。[ 5 ]
メモリ管理ユニット、RDRAMコントローラ、およびDMAコントローラは、システム内のメモリアクセスを処理します。[ 5 ]
MIPSコア、2つのVPU、GIF、メモリコントローラ、およびその他のユニット間の通信は、Emotion Engineのクロック周波数の半分で動作する128ビット幅の内部データバスによって処理されますが、より広い帯域幅を提供するために、CPUとVPU0の間、およびVPU1とGIFの間にも128ビットの専用パスが設けられています。150MHzで動作する 内部データバスは、理論上の最大帯域幅2.4GB/sを提供します 。
エモーションエンジンとRAM間の通信は、2つのDRDRAM(Direct Rambus Dynamic Random Access Memory)チャネルと、内部データバスに接続するメモリコントローラ を介して行われます。各チャネルは16ビット幅で、400MHz のDDR(Double Data Rate)で動作します。2つのDRDRAMチャネルを合わせると、理論上の最大帯域幅は25.6Gbit /s(3.2GB /s)となり、内部データバスの帯域幅よりも約33%広くなります。そのため、メモリコントローラはDRDRAMチャネルから送信されたデータをバッファリングし、余剰帯域幅をCPUが利用できるようにしています。
エモーションエンジンは、専用の64ビット、150MHzバスを介してGIFを介してグラフィックスシンセサイザに直接接続され、 理論上の最大帯域幅は1.2GB /sです。[ 6 ]
エモーションエンジンと入出力プロセッサ(IOP)間の通信を提供するために、入出力インターフェースは、 最大理論帯域幅が150 MB/sの32ビット幅、37.5 MHzの入出力バスを 内部データバスに接続します。このインターフェースは、高速データアクセスとオンライン機能のためにP-ATAインターフェースを内蔵したネットワークアダプタに使用されたPCMCIA拡張コネクタに十分な帯域幅を提供します。高帯域幅の利点は、IDE HDDサポートを内蔵したネットワークアダプタなどのハードウェア拡張機能や、機能と製品ライフサイクルを拡張するためのその他の拡張機能を容易に導入できることであり、これは競争上の優位性と見なされます。ただし、新しいバリアント(スリム版など)では、HDDサポートが削除され、PCMCIAコネクタ設計がよりスリムな設計に置き換えられたため、インターフェースはPlayStationの入出力デバイスが必要とする帯域幅をはるかに超える帯域幅を提供します。
エモーションエンジンは、 240 mm 2の集積回路(IC) ダイ上に1350 万個の金属酸化物半導体(MOS) トランジスタを搭載していました。[ 7 ] [ 8 ]これは、ソニーと東芝によって0.25 μm (実効L G 0.18 μm )の相補型金属酸化物半導体(CMOS) プロセスで、4 レベルの相互接続を使用して製造されました。
エモーションエンジンは、540接点のプラスチックボールグリッドアレイ(PBGA)にパッケージ化されている。
エモーションエンジンの主な用途は、PlayStation 2のCPUとして機能することだった。
最初に製造されたPlayStation 3の改良版には、PlayStation 2ゲームとの下位互換性を実現するためにマザーボード上にEmotion Engineが搭載されていました。しかし、コスト削減のため、PlayStation 3の2番目の改良版では物理的なEmotion Engineは搭載されず、 Cell Broadband Processorによるソフトウェアエミュレーションによってすべての機能が実行されました。また、PlayStation 2との下位互換性を実現するために、ハードウェアグラフィックスシンセサイザーは引き続き搭載されていました。それ以降のすべての改良版ではグラフィックスシンセサイザーは削除されましたが、ソニーのエンターテインメントネットワークで購入可能なPS2クラシックタイトルで使用するために、後のシステムソフトウェアの改良版にはPlayStation 2ソフトウェアエミュレーターが用意されています。
Emotion Engineは、 PlayStation 2のハードウェアを使用したPSX(デジタルビデオレコーダー)や、ソニーのWEGA HVX HDTV(KDE/KDL-xxxHVX)、ソニーのBRAVIA KDL22PX300にも使用されました。