PSX-sceneで、Mathieulh氏がPS3に搭載されているPS2エミュレーション機能を解説していました。搭載されてはいるものの、実際には有効化されていません。この理由についてMathieulh氏はハードウェアに余力がないためだとしています。
Mathieulh氏はPS3に搭載されているPS2ソフトウェアエミュレータps2_gxemuについて調査をしたそうです。実際にどのような仕組みでEmotion Engineをエミュレートしているのかを解説していました。以下、大まかですが翻訳です。
使われているのはSPU(Synergistic Processor Unit:PS3のCELLプロセッサに搭載されたRISCプロセッサ)で、稼働している6基のSPUは以下のような役割になっている。
SPU0 : IOPのエミュレート
SPU1 : DMAのエミュレート
SPU2 : VU1のエミュレート
SPU3 : IPUのエミュレート
SPU4 : GXIFのエミュレート
SPU5 : ps2 SPU2のエミュレート (ps3 spuに付属している)ps2 SPU2以外のプロセスに実行に必要な仕事量はps3 SPUのおよそ半分だが、パフォーマンス向上のためにspuアセンブラでプログラムが記述されている。一方、PS2 SPU2のプロセスはC++で書かれている。
PPU(Physics Processing Unit)はデバイスをthread 0で、Emotion Engineのエミュレートをthread 1で行っているが、コードはC++とppuアセンブラが使われている。
これらによりPS2のマザーボードに存在するGraphic Synthesizer以外をエミュレートするが、PS2互換機能を持つCECHA/BモデルはEmotion Engineをチップとして搭載しているのでps3 SPUが実際にエミュレートするのはIOPとps2 SPU2だけとなる。
問題になるのは、Emotion Engineもエミュレートした場合残りのハードウェアでGraphic Synthesizerをエミュレートできないということだ。PS3のGPUであるRSX(Reality Synthesizer)では、SPUやPPUがPS2のハードウェアエミュレートでフル稼働している状態でGraphic Synthesizerをエミュレートするだけの余力がない。そのためps2_softemuが実行できず、PS2のソフトウェアエミュレートが実現できない。
PS2のハードウェアが搭載されていないというPS3のハードウェアの制限がある状態で完全にPS2のエミュレートができる方法は全く思いつかない。間違いなく言えることは、コードを完全に一新してPS3に最適化することは必要、ということだけだ。
これをそのまま受け取ると、現在のPS3のハードウェア構成のままではPS2のソフトウェアエミュレーションをするだけのパワーがないということになります。
ソフトウェアだけでエミュレートできるならば、ハードウェアのコストがかからない分安価に実現が可能だと誰もが考えるところですが、実際PS3に搭載されている機能としては存在するものの現実的にはPS2の性能が高すぎて、PS3では物理的にエミュレートは不可能ということになりそうです。
この状況が変わらないのであれば、PlayStation3がモデルチェンジをしてPlayStation4にでもならない限り、PS2エミュレーションによる後方互換は夢物語です。