(57)【要約】複数の相互に接続された被エミュレーション側プロセシングユニットを備えた被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続された実際のプロセシングユニットを有するデータプロセッサ。少なくとも１つの被エミュレーション側プロセシングユニットは、２つ以上の実際のプロセシングユニットの寄与によりエミュレートされ、少なくとも１つの実際のプロセシングユニットが２つ以上の被エミュレーション側プロセシングユニットのエミュレーションに寄与する。
2009527836.tif 000002
【特許請求の範囲】
【請求項１】
複数の相互に接続された被エミュレーション側プロセシングユニットを備えた被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続されたエミュレーション側プロセシングユニットを有するデータプロセッサであって、
少なくとも１つの被エミュレーション側プロセシングユニットが、２つ以上のエミュレーション側プロセシングユニットの寄与によってエミュレートされ、
少なくとも１つのエミュレーション側プロセシングユニットが、２つ以上の被エミュレーション側プロセシングユニットのエミュレーションに寄与する、
ことを特徴とするデータプロセッサ。
【請求項２】
請求項１に記載のデータプロセッサであって、エミュレーション側プロセシングユニットが、メッセージ受け渡し通信プロトコルによって互いに通信することを特徴とするデータプロセッサ。
【請求項３】
請求項２に記載のデータプロセッサであって、エミュレーション側プロセシングユニットは、エミュレートされる動作を前記メッセージ受け渡し通信プロトコルを介して同期させるように、構成されていることを特徴とするデータプロセッサ。
【請求項４】
請求項２あるいは３に記載のデータプロセッサであって、エミュレーション側プロセシングユニットが循環データバスによって相互接続されていることを特徴とするデータプロセッサ。
【請求項５】
請求項４に記載のデータプロセッサであって、前記データバスは双方向バスであることを特徴とするデータプロセッサ。
【請求項６】
上に記載された請求項のいずれか１つに記載のデータプロセッサであって、監視プロセッサを有し、前記監視プロセッサは被エミュレーション側プロセッサに関する命令を翻訳し、翻訳された命令が実行できるように、エミュレーション側プロセシングユニットに情報を提供することを特徴とするデータプロセッサ。
【請求項７】
請求項６に記載のデータプロセッサであって、被エミュレーション側プロセシングユニットに供給される前記情報が、エミュレーション側プロセシングユニットにネイティブなオブジェクトコードを有することを特徴とするデータプロセッサ。
【請求項８】
請求項６あるいは請求項７に記載のデータプロセッサであって、前記監視プロセッサは、どの被エミュレーション側プロセシングユニットがあるエミュレーション側プロセシングユニットによりエミュレートされるかを変更するために、エミュレーションタスクのエミュレーション側プロセシングユニットへのアロケーションを変化させるように動作できることを特徴とするデータプロセッサ。
【請求項９】
複数の相互に接続された被エミュレーション側プロセシングユニットを備えた被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続されたエミュレーション側プロセシングユニットを有するシステムに関するデータ処理方法であって、
前記方法は、
２つ以上のエミュレーション側プロセシングユニットの寄与によってある被エミュレーション側プロセシングユニットをエミュレートするステップと、
１つのエミュレーション側プロセシングユニットで２つ以上の被エミュレーション側プロセシングユニットをエミュレートするステップと、
を有することを特徴とするデータ処理方法。
【請求項１０】
請求項９に記載の方法を実行するためのコンピュータソフトウェア。
【請求項１１】
請求項１０に記載のコンピュータソフトウェアを提供する媒体。
【請求項１２】
請求項１１に記載の媒体であって、記憶媒体であることを特徴とする媒体。
【請求項１３】
請求項１１に記載の媒体であって、伝送媒体であることを特徴とする媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理に関する。
【背景技術】
【０００２】
データ処理の例として、電子ゲームが良く知られており、そのような電子ゲームは磁気ディスクや光ディスクあるいは光磁気ディスクなどの様々な配布媒体によって供給できる。通常のコンピュータや専用のゲーム機を用いて、これらのゲームをプレイすることができる。
【０００３】
あるプロセッサの動作を別のプロセッサ上でエミュレートする必要がある場合がある。すなわち、エミュレーション側プロセッサはネイティブなプログラムコードを実行するのであるが、そのネイティブなプログラムコードの構成は、ネイティブな命令あるいはネイティブな命令のグループが、被エミュレーション側のシステムに関するデータ処理命令と同じ効果を有するように構成されている。
【０００４】
このような必要が生じる状況として、データプロセッサが製造者によって新しい「世代」へと（例えば、新しいハードウェアアーキテクチャや命令プロトコルへと）アップグレードされたのに、その製造者が依然として古い世代の装置に関係するソフトウェアが使用できること（いわゆる、下位互換性）を望む場合がある。多くの場合、これを実現する唯一の方法は、新世代の装置がエミュレーションソフトウェアを実行し、エミュレーションソフトウェアが旧世代の装置に関する命令に応じて動作することである。この場合、勿論、ネイティブなソフトウェアを実行する場合に比べて、エミュレーションを実行するほうがプロセッサを通常より多く使用することが認められているが、データ処理ハードウェア性能の世代による進歩の全体的な傾向として、処理オーバーヘッドの増加が普通に扱えるようになっている。
【発明の開示】
【０００５】
本発明は、複数の相互に接続された被エミュレーション側プロセシングユニットを有する被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続された実際のプロセシングユニットを有するデータプロセッサであって、
少なくとも１つの被エミュレーション側プロセシングユニットが、２つ以上の実際のプロセシングユニットの寄与によってエミュレートされ、
少なくとも１つの実際のプロセシングユニットが、２つ以上の被エミュレーション側プロセシングユニットのエミュレーションに寄与する、
ことを特徴とするデータプロセッサを提供する。
【０００６】
本発明は、マルチプロセッサアーキテクチャを使用するエミュレーションシステムに関連する問題を扱うものであり、特に（しかし、それに限定するわけではないが）、（エミュレーション側システムにおける）プロセッサ間の通信がエミュレーション側システムの一般的な動作速度に比較して遅い場合を扱ったものである。本発明は、ある被エミュレーション側プロセシングユニットのエミュレーションを２つ（あるいはそれ以上の）エミュレーション側プロセシングユニットに分割することにより、それら被エミュレーション側プロセシングユニットのエミュレーション間の通信を提供するために必要なメッセージトラフィックを減少できることを認識したものである。同様に、通常互いの通信量の多い複数のプロセシングユニットのエミュレーションを（単一のエミュレーション側プロセシングユニット上に）グルーピングすることにより、それら被エミュレーション側プロセシングユニットのエミュレーション間の通信を提供するために必要なメッセージトラフィックをやはり大幅に減少することができる。これらの手段を共に採用することにより、より高速でより効率的なエミュレーションを提供することができる。
【０００７】
本発明の他の様々な側面および特徴は、添付した請求の範囲に記載されている。
【０００８】
添付図面を参照して、本発明の実施形態について以下に説明するが、それら実施形態は例示のためだけのものである。
【発明を実施するための最良の形態】
【０００９】
図を参照すると、図１はプレイステーション２コンピュータゲーム機の全体的なシステムアーキテクチャを概略的に示したものである。システムユニット１０が設けられており、様々な周辺デバイスをシステムユニットに接続することができる。
【００１０】
システムユニット１０は、エモーションエンジン１００と、グラフィックスシンセサイザ２００と、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を有するサウンドプロセッサユニット３００と、読取り専用メモリ（ＲＯＭ）４００と、コンパクトディスク（ＣＤ）／ＤＶＤディスク（ＤＶＤ）読取り装置４５０と、ラムバスＤＲＡＭ（ＲＤＲＡＭ）ユニット５００と、専用ＲＡＭ７５０を備えた入出力プロセッサ（ＩＯＰ）７００とを有している。オプションとして、外部ハードディスクドライブ（ＨＤＤ）３９０を接続することができる。
【００１１】
入出力プロセッサ７００は、２つのユニバーサルシリアルバス（ＵＳＢ）ポート７１５と図示していないｉＬｉｎｋあるいはＩＥＥＥ１３９４ポート（ｉＬｉｎｋはソニーによってＩＥＥＥ１３９４規格を実現したものである）とを有している。ＩＯＰ７００は、すべてのＵＳＢ、ｉＬｉｎｋおよびゲームコントローラのデータトラフィックを処理する。例えば、ユーザがゲームをプレイしているとき、ＩＯＰ７００はゲームコントローラからデータを受け取り、受け取ったデータをエモーションエンジン１００に向けて送信し、エモーションエンジン１００はそれに応じてゲームの現在状態を更新する。ＩＯＰ７００は、速いデータ転送速度を達成するために、直接メモリアクセス（ＤＭＡ）アーキテクチャを有している。ＤＭＡは、データをＣＰＵを介して渡さずに、メインメモリから装置にデータを転送することが関係している。ＵＳＢインタフェースはオープンホストコントローラインタフェース（ＯＨＣＩ）に準拠しており、１．５Ｍｂｐｓないし１２Ｍｂｐｓのデータ転送速度を処理することができる。これらのインタフェースを設けることにより、プレイステーション２は、カムコーダーなどのディジタルビデオカセットレコーダ（ＶＣＲ）、ディジタルカメラ、マイク、プリンタ、キーボードやマウスやジョイスティックなどの入力装置などの周辺デバイスに適合できる可能性を有している。
【００１２】
一般に、ＵＳＢポート７１５に接続された周辺デバイスとのデータ通信を成功裏に実現するためには、デバイスドライバなどの適切なソフトウェアを提供する必要がある。デバイスドライバ技術は良く知られているので、ここでは詳しく説明しないが、ここに記載された実施例においてデバイスドライバや類似のソフトウェアが必要とされるであろうことは、当業者には知られている。
【００１３】
本実施例では、ＵＳＢマイク７３０がＵＳＢポートに接続されている。ＵＳＢマイク７３０は手持ち式のマイクでもよいし、オペレータが装着するヘッドセットの一部をなしていてもよいことは理解されるであろう。ヘッドセットを装着することの利点は、オペレータの手が自由に他の動作ができることである。マイクはアナログ−ディジタル変換器（ＡＤＣ）と基本的なハードウェアベースのリアルタイムデータ圧縮符号化装置とを含んでいるので、マイク７３０によってオーディオデータはプレイステーション２システムユニット１０で復号するのに適切なフォーマットで、例えばストリーミング圧縮オーディオフォーマットで、ＵＳＢポート７１５に送信される。
【００１４】
ＵＳＢポートを別にすると、他の２つのポート７０５、７１０は独自仕様のソケットであり、ゲーム関連の情報を記憶するための独自仕様の不揮発性ＲＡＭメモリカード７２０や、手持ち式のゲームコントローラ７２５、あるいは手持ち式コントローラを模倣するダンスマットなどのデバイス（図示されていない）を接続することができる。
【００１５】
システムユニット１０は、ネットワークへのインタフェース（例えば、イーサネット(登録商標)インタフェース）を提供するネットワークアダプタ８０５に接続することができる。このネットワークは、例えば、ＬＡＮ、ＷＡＮ、あるいはインターネットとすることができる。ネットワークは一般のネットワークでもよいし、ゲーム関連の通信専用のネットワークでもよい。ネットワークアダプタ８０５により、データを同じネットワークに接続された他のシステムユニット１０へ送信し、また他のシステムユニット１０から受信することができる（他のシステムユニット１０も対応するネットワークアダプタ８０５を備えている）。
【００１６】
エモーションエンジン１００は、ゲームアプリケーション用の３次元（３Ｄ）グラフィックスの効率的なシミュレーションのために特別に設計された１２８ビットの中央演算処理装置（ＣＰＵ）である。エモーションエンジンの構成要素には、データバス、キャッシュメモリ（ＣＰＵコアの一部）、およびレジスタが含まれており、そのすべては１２８ビットタイプである。これにより、大量のマルチメディアデータの高速処理が容易となる。比較として、従来のＰＣは６４ビットの基本データ構造を有している。プレイステーション２の浮動小数点計算の性能は６．２ギガフロップス（ＧＦＬＯＰＳ）である。エモーションエンジンはまたＭＰＥＧ２デコーダ回路を有しており、それにより３ＤグラフィックスデータとＤＶＤデータの同時処理が可能である。エモーションエンジンは、数学的変換および平行移動を含む幾何学的な計算を実行し、また、シミュレーション物体の物理に関連した計算、例えば、２つの物体間の摩擦の計算、を実行する。エモーションエンジンは、画像レンダリングコマンドのシーケンスを生成し、それらのシーケンスは、後に、グラフィックスシンセサイザ２００により利用される。画像レンダリングコマンドは、ディスプレイリストの形で出力される。ディスプレイリストは、グラフィックスシンセサイザに対して画面上でどの基本グラフィックスオブジェクト（例えば、点、線、三角形、スプライト）をどの座標位置に描くべきかを指定する描画コマンドのシーケンスである。それで、典型的なディスプレイリストは、頂点を描くコマンド、多角形（ポリゴン）の面に陰影付けするコマンド等を有している。エモーションエンジン１００は複数のディスプレイリストを非同期的に生成することができる。
【００１７】
グラフィックスシンセサイザ２００は、エモーションエンジン１００により生成されたディスプレイリストのレンダリングを実行するビデオアクセラレータである。グラフィックスシンセサイザ２００はグラフィックスインタフェースユニット（ＧＩＦ）を含んでおり、ＧＩＦは複数のディスプレイリストを処理し、追跡し、管理する。グラフィックスシンセサイザ２００のレンダリング機能は幾つかの代替的な標準出力画像フォーマット（即ち、ＮＴＳＣ／ＰＡＬ、高品位テレビおよびＶＥＳＡ）に適合した画像データを生成することができる。一般に、グラフィックスシステムのレンダリング性能は、ピクセルエンジンとビデオメモリ（どちらもグラフィックスプロセッサ内に配置されている）の間のメモリ帯域幅によって定義されている。従来のグラフィックスシステムは外部ビデオランダムアクセスメモリ（ＶＲＡＭ）を用いており、そのＶＲＡＭはオフチップバスによってピクセルロジックに接続されているので、利用できる帯域幅は制限されがちである。しかし、プレイステーション２のグラフィックスシンセサイザ２００は単一の高性能チップ上にピクセルロジックとビデオメモリを設けているので、毎秒３８．４ギガバイトという比較的大きなメモリアクセス帯域幅が可能である。グラフィックスシンセサイザは、理論的には、毎秒７千５百万ポリゴンというピーク描画性能を達成することができる。テクスチャ、照明および透明度など一そろいの効果を用いる場合でも、持続的に毎秒２千万ポリゴンの速度で連続的に描画することができる。したがって、グラフィックスシンセサイザ２００はフィルム品質の画像を描くことができる。
【００１８】
サウンドプロセッサユニット（ＳＰＵ）３００は、事実上、本システムのサウンドカードであり、ディジタルシアターサラウンド（ＤＴＳ、登録商標）サウンドや、ＤＶＤ用のサウンドフォーマットであるＡＣ−３（ドルビーディジタルとしても知られている）などの３Ｄディジタルサウンドを扱うことができる。
【００１９】
付属スピーカ装置３１０を備えたビデオモニタやテレビなどのディスプレイ／サウンド出力デバイス３０５が接続されており、グラフィックスシンセサイザ２００およびサウンド処理ユニット３００からのビデオ信号およびオーディオ信号を受信する。
【００２０】
エモーションエンジン１００をサポートするメインメモリは、ラムバス社（Ｒａｍｂｕｓ  Ｉｎｃｏｒｐｏｒａｔｅｄ）からライセンスされたＲＤＲＡＭ（ラムバスダイナミックランダムアクセスメモリ）モジュール５００である。このＲＤＲＡＭメモリサブシステムは、ＲＡＭと、ＲＡＭコントローラと、ＲＡＭをエモーションエンジン１００に接続するバスとを有している。
【００２１】
図２は、図１のエモーションエンジン１００のアーキテクチャを概略的に示す図である。エモーションエンジン１００は、相互に接続されて所望の機能集合を実現する幾つかの処理ユニットの総称である。この文脈の観点からすれば、エモーションエンジンは、浮動小数点演算ユニット（ＦＰＵ）１０４と、中央演算処理装置（ＣＰＵ）コア１０２と、ベクトル演算ユニット０（ＶＵ０）１０６と、ベクトル演算ユニット１（ＶＵ１）１０８と、グラフィックスインタフェースユニット（ＧＩＦ）１１０と、割り込みコントローラ（ＩＮＴＣ）１１２と、タイマーユニット１１４と、直接メモリアクセスコントローラ１１６と、画像データプロセッサユニット（ＩＰＵ）１１８と、ダイナミックランダムアクセスメモリコントローラ（ＤＲＡＭＣ）１２０と、サブバスインタフェース（ＳＩＦ）１２２とを有しており、これらすべての個々の処理ユニットは１２８ビットのメインバス１２４によって接続されている。
【００２２】
ＣＰＵコア１０２は、３００ＭＨｚ（実際には２９４．９１２ＭＨｚであるが、この数字の略記として３００ＭＨｚが用いられる傾向がある）のクロックで動作する１２８ビットプロセッサである。ＣＰＵコアはＤＲＡＭＣ１２０を介して３２ＭＢのメインメモリにアクセスできる。ＣＰＵコア１０２の命令セットはＭＩＰＳ  ＩＩＩ  ＲＩＳＣに基づいており、幾らかのＭＩＰＳ  ＩＶ  ＲＩＳＣ命令と付加的なマルチメディア命令を備えている。ＭＩＰＳ  ＩＩＩおよびＩＶは、ＭＩＰＳテクノロジーズ社（Ｍｉｐｓ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，  Ｉｎｃ）の所有する縮小命令セットコンピュータ（ＲＩＳＣ）命令セットアーキテクチャである。標準命令は６４ビットの２ウェイスーパースケーラーであり、これは２つの命令が同時に実行できることを意味している。他方、マルチメディア命令は、２つのパイプラインを介して１２８ビット命令を利用する。ＣＰＵコア１０２は、１６ＫＢの命令キャッシュと、８ＫＢのデータキャッシュと、１６ＫＢのスクラッチパッドＲＡＭとを有しており、スクラッチパッドＲＡＭは専用バスでＣＰＵに接続されたキャッシュの一部であり、メインバスからは独立してデータアクセスが可能である。
【００２３】
ＦＰＵ１０４はＣＰＵコア１０２に対して第一のコプロセッサとしての役割を果たす。ベクトル演算ユニット１０６は第二のコプロセッサとして機能する。ＦＰＵ１０４は、浮動小数点除算計算器（ＦＤＩＶ）を有している。ベクトル演算ユニット１０６および１０８は数学演算を実行するが、本質的に、ベクトル方程式の乗算および加算の評価が非常に高速な特化したＦＰＵである。それらベクトル演算ユニットは、加算および乗算の演算用の浮動小数点乗加算器（ＦＭＡＣ）と除算および平方根演算用の浮動小数点除算器（ＦＤＩＶ）とを用いている。ＦＭＡＣは３２ビット値に対して演算を行い、従って、演算が（４個の３２ビット値からなる）１２８ビット値に対して実行される場合、演算は４部分について同時に実行することができる。例えば、２つのベクトルの加算を同時に行なうことができる。ベクトル演算ユニット（ＶＵ）は、マイクロプログラムを格納するための内蔵メモリを有しており、また、ベクトルインタフェースユニット（ＶＩＦ）（対応するベクトル演算ユニットと同じ番号で参照される）を介して、本システムの残りの部分とのインタフェースを取る。ベクトル演算ユニット０  １０６は、専用の１２８ビットバスを介してＣＰＵコア１０２に対するコプロセッサとして機能することができるので、本質的に、第二の特化したＦＰＵである。他方、ベクトル演算ユニット１  １０８は、グラフィックスシンセサイザ２００に対する専用バスを有しており、従って、完全に別個のプロセッサと考えることができる。２つのベクトル演算ユニットを設けることにより、ソフトウェアの開発者は作業をＣＰＵの異なる部分の間で分割することができ、ベクトル演算ユニットは直列接続でも並列接続でも用いることができる。
【００２４】
ベクトル演算ユニット０  １０６は、４個のＦＭＡＣと１個のＦＤＩＶとを有している。ベクトル演算ユニット０は、コプロセッサ接続によってＣＰＵコア１０２に接続されている。ベクトル演算ユニット０は、データ用の４ＫＢのベクトル演算ユニットメモリと、命令用の４ＫＢのマイクロメモリとを有している。ベクトル演算ユニット０  １０６は、表示する画像に関連した物理計算を実行するのに有用である。ベクトル演算ユニット０  １０６はＣＰＵコア１０２と共に、主に、パターン化されていない幾何学的処理を実行する。
【００２５】
ベクトル演算ユニット１  １０８は５個のＦＭＡＣと１個のＦＤＩＶとを有している。ベクトル演算ユニット１はＣＰＵコア１０２への直接的な経路を有していないが、ＧＩＦユニット１１０への直接的な経路を有している。ベクトル演算ユニット１は、データ用の１６ＫＢのベクトル演算ユニットメモリと、命令用の１６ＫＢのマイクロメモリとを有している。ベクトル演算ユニット１  １０８は変換を実行するのに有用である。ベクトル演算ユニット１は、パターン化された幾何学的処理を主に実行し、生成されたディスプレイリストを直接ＧＩＦ１１０に出力する。
【００２６】
ＧＩＦ１１０はグラフィックスシンセサイザ２００へのインタフェースユニットである。ＧＩＦ１１０は、ディスプレイリストパケットの最初にあるタグスペシフィケーションに従ってデータを変換し、描画コマンドをグラフィックスシンセサイザ２００に転送すると共に、相互に複数の転送のアービトレーションを行なう。割り込みコントローラ（ＩＮＴＣ）１１２は、ＤＭＡＣ１１６を除く周辺デバイスからの割り込みのアービトレーションを行なう。
【００２７】
タイマーユニット１１４は、１６ビットカウンタを備えた４個の独立したタイマーを有している。これらのタイマーはバスクロック（１／１６あるいは１／２５６の間隔）あるいは外部クロックによって駆動される。ＤＭＡＣ１１６は、メインメモリとスクラッチパッドＲＡＭとの間の、あるいはメインメモリかスクラッチパッドＲＡＭと周辺装置との間のデータ転送を処理する。同時に、ＤＭＡＣ１１６はメインバス１２４のアービトレーションを行なう。ＤＭＡＣ１１６の性能の最適化はエモーションエンジンの性能を向上するための主要な方法である。画像処理ユニット（ＩＰＵ）１１８は、圧縮された動画およびテクスチャ画像を展開するために用いられる画像データプロセッサである。画像処理ユニット１１８はマクロブロックの復号、色空間の変換、そしてベクトル量子化を実行する。最後に、サブバスインタフェース（ＳＩＦ）１２２は、ＩＯＰ７００へのインタフェースユニットである。ＩＰＵは、サウンドチップや記憶装置などのＩ／Ｏデバイスを制御するために、自分自身のメモリとバスを有している。
【００２８】
図３は、グラフィックスシンセサイザ２００の構成を概略的に示す図である。グラフィックスシンセサイザは、ホストインタフェース２０２と、ピクセルパイプライン２０６と、メモリインタフェース２０８と、フレームページバッファ２１４およびテクスチャページバッファ２１６を含むローカルメモリ２１２と、ビデオ変換器２１０とを有している。
【００２９】
ホストインタフェース２０２は、ホスト（この場合はＧＩＦ１１０）との間でデータを転送する。ホストからの描画データおよびバッファデータはどちらもこのインタフェースを通過する。ホストインタフェース２０２からの出力はグラフィックスシンセサイザ２００に供給され、グラフィックスシンセサイザ２００は、グラフィックスを展開して、エモーションエンジン１００から受信した頂点情報に基づいてピクセルを描き、各ピクセルについてＲＧＢＡ値、デプス値（Ｚ値）、テクスチャ値およびフォグ値などの情報を計算する。ＲＧＢＡ値は、赤、緑、青（ＲＧＢ）の色成分および画像オブジェクトの不透明度を示すＡ成分（アルファ成分）を指定する。アルファ値は完全な透明から完全な不透明までの範囲の値を取り得る。ピクセルデータはピクセルパイプライン２０６に供給され、ピクセルパイプライン２０６はテクスチャマッピング、フォギング、およびアルファブレンディングなどの処理を実行し、計算されたピクセル情報に基づいて最終的な描画色を決定する。
【００３０】
ピクセルパイプライン２０６は１６個のピクセルエンジンＰＥ１，ＰＥ２，．．．，ＰＥ１６を有しているので、最大で１６個のピクセルを同時に処理することができる。ピクセルパイプライン２０６は１５０ＭＨｚ（実際には２９４．９１２／２ＭＨｚ）で動作し、３２ビットカラーで、３２ビットＺバッファを備えている。メモリインタフェース２０８はローカルグラフィックスシンセサイザメモリ２１２に対してデータの読み書きを行なう。メモリインタフェース２０８は、ピクセル演算の最後に描画ピクセル値（ＲＧＢＡおよびＺ）をメモリに書き込み、フレームバッファ２１４のピクセル値をメモリから読み出す。フレームバッファ２１４から読み出されたこれらのピクセル値は、ピクセルテストあるいはアルファブレンディングに用いられる。メモリインタフェース２０８はまた、ローカルメモリ２１２からフレームバッファの現行内容に関するＲＧＢＡ値を読み出す。ローカルメモリ２１２は、グラフィックスシンセサイザ２００に内蔵された３２Ｍビット（４ＭＢ）メモリである。ローカルメモリ２１２は、フレームバッファ２１４とテクスチャバッファ２１６とＺバッファ２１５とに構成することができる。フレームバッファ２１４はビデオメモリの一部であり、色情報などのピクセルデータが格納される。
【００３１】
グラフィックスシンセサイザは、２Ｄ−３Ｄテクスチャマッピング工程を用いて３Ｄ図形に対して視覚的ディテールを付与する。各テクスチャは３Ｄ画像オブジェクトの周りに巻きつけて、伸縮させ、歪ませることにより３Ｄグラフィック効果を与えることができる。テクスチャバッファは、画像オブジェクト用のテクスチャ情報を格納するために用いられる。Ｚバッファ２１５（デプスバッファとしても知られている）は、ピクセルのデプス情報を格納するために用いることのできるメモリである。画像は、グラフィックス基本要素あるいはポリゴン（多角形）として知られる基本的なビルディングブロックから構成されている。ポリゴンがＺバッファリングによってレンダリングされる場合、そのピクセルの各々のデプス値はＺバッファに格納されている対応値と比較される。Ｚバッファに格納されている値が新しいピクセル値のデプス値以上であれば、ピクセルは可視であると判断され、そのピクセルはレンダリングされ、Ｚバッファは新しいピクセルデプス値によって更新される。しかし、Ｚバッファのデプス値が新しいピクセルデプス値より小さい場合は、その新しいピクセル値は既に描画されているものに隠されているので、レンダリングされない。あるいは、Ｚバッファテストを利用することができ、（ａ）新しいピクセルは常に以前の値に取って代わるか、（ｂ）新しいピクセルのデプスがＺバッファに格納されている以前の値以上であれば、新しいピクセルが以前のピクセル値に取って代わる。
【００３２】
ローカルメモリ２１２は、フレームバッファとＺバッファにアクセスするための１０２４ビットの読み出しポートと１０２４ビットの書き込みポート、そしてテクスチャの読み出しのための５１２ビットのポートを備えている。ビデオ変換器２１０は、フレームメモリの内容を指定された出力フォーマットで表示するように動作することができる。
【００３３】
次に、図１ないし図３を参照して説明された本システムのエミュレーションを可能とする構成について説明する。注意すべき点として、便宜上、図１ないし図３に示された処理ユニットを「被エミュレーション側」処理ユニットとして言及し、一方、以下に説明されるエミュレーションシステムでは、その（エミュレーション）システムの処理ユニットは「エミュレーション側」処理ユニットとして言及することにする。生じ得るどんな混同をも避けるために、処理ユニットのどちらの種類も（「被エミュレーション側」ユニットも「エミュレーション側」ユニットも）物理的な処理ユニットであって、それらの処理ユニットに適切なネイティブなソフトウェアをそれぞれ実行できることに注意すべきである。
【００３４】
図４は、ソニー（登録商標）のプレイステーション３（登録商標）娯楽装置の全体的なシステムアーキテクチャを概略的に示す図である。システムユニット９１０には、そのシステムユニットに接続可能な様々な周辺デバイスが提供されている。
【００３５】
システムユニット９１０は、セルプロセッサ１１００と、ラムバス（登録商標）ダイナミックランダムアクセスメモリ（ＸＤＲＡＭ）ユニット１５００と、専用ビデオランダムアクセスメモリ（ＶＲＡＭ）ユニット１２５０を備えたリアリティシンセサイザグラフィックスユニット１２００と、Ｉ／Ｏブリッジ１７００とを有している。
【００３６】
システムユニット９１０はまた、ディスク１４４０を読み取るためのブルーレイ（登録商標）ディスクＢＤ−ＲＯＭ（登録商標）光ディスク読取り装置１４３０と、取外し可能スロットインハードディスクドライブ（ＨＤＤ）１４００とを有しており、それらにはＩ／Ｏブリッジ１７００を介してアクセスすることができる。オプションとして、システムユニットはまた、コンパクトフラッシュ(登録商標)メモリカード、メモリスティック（登録商標）メモリカードなどを読み取るためのメモリカード読取装置１４５０を有しており、同様にＩ／Ｏブリッジ１７００を介してアクセスすることができる。
【００３７】
Ｉ／Ｏブリッジ１７００はまた、６個のユニバーサルシリアルバス（ＵＳＢ）２．０ポート１７１０と、ギガビットイーサネット(登録商標)ポート１７２０と、ＩＥＥＥ８０２．１１ｂ／ｇワイヤレスネットワーク（Ｗｉ−Ｆｉ）ポート１７３０と、７つのブルートゥース接続をサポートできるブルートゥース（登録商標）ワイヤレスリンクポート１７４０とに接続されている。
【００３８】
動作の際に、Ｉ／Ｏブリッジ１７００はすべてのワイヤレス、ＵＳＢそしてイーサネット（登録商標）のデータを扱うが、それには１つ以上のゲームコントローラ１７５１からのデータが含まれる。例えば、ユーザがゲームをプレイしている場合、Ｉ／Ｏブリッジ１７００はブルートゥースリンクを介してゲームコントローラ１７５１からデータを受信し、そのデータをセルプロセッサ１１００へと向け、セルプロセッサ１１００はそれに従ってゲームの現在状態を更新する。
【００３９】
ワイヤレスポート、ＵＳＢポート、そしてイーサネット（登録商標）ポートによって、ゲームコントローラ１７５１のほかに他の周辺デバイスが接続できるが、そのような周辺デバイスとして、リモコン１７５２、キーボード１７５３、マウス１７５４、ソニープレイステーションポータブル（登録商標）娯楽装置などのポータブル娯楽装置１７５５、アイトイ（登録商標）ビデオカメラなどのビデオカメラ１７５６、マイクヘッドセット１７５７などがある。従って、そのような周辺デバイスは、原理的には、システムユニット９１０に無線で接続できる。例えば、ポータブル娯楽装置１７５５はＷｉ−Ｆｉアドホック接続により通信することができ、マイクヘッドセット１７５７はブルートゥースリンクによって通信することができる。
【００４０】
これらのインタフェースが設けられていることは、プレイステーション３装置が、ディジタルビデオレコーダ（ＤＶＲ）、セットトップボックス、ディジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバーＩＰ電話、携帯電話、プリンタ、スキャナなどの他の周辺デバイスにも対応できる可能性があることを意味する。
【００４１】
それに加えて、ＵＳＢポート１７１０を介してレガシーメモリカード読取装置１４１０をシステムユニットに接続し得るので、プレイステーション（登録商標）あるいはプレイステーション２（登録商標）装置によって使用される種類のメモリカード１４２０の読み取りが可能になる。
【００４２】
本実施形態では、ゲームコントローラ１７５１は、ブルートゥースリンクによってシステムユニット９１０と無線通信を行なうことができる。しかし、その代わりとして、ゲームコントローラ１７５１をＵＳＢポートに接続してもよく、それによればゲームコントローラ１７５１のバッテリを充電する電源を供給できる。１個以上のアナログジョイスティックや従来のコントロールボタンに加えて、ゲームコントローラは、各軸での平行移動および回転に対応する６自由度の動きを感知できる。その結果、従来のボタンあるいはジョイスティックによるコマンドに加えあるいは替えて、ゲームコントローラのユーザによるジェスチャーおよび動作をゲームに対する入力に変換することができる。オプションとして、プレイステーションポータブル装置などワイヤレスで使用可能な他の周辺デバイスをコントローラとして使用することができる。プレイステーションポータブル装置の場合、付加的なゲーム情報あるいは制御情報（例えば、制御命令あるいはゲームオーバーまでリトライできる数）を装置の画面上に提供することができる。他の代替的あるいは補助的なコントロール装置を用いることもでき、例えば、ダンスマット（図示されていない）、ライトガン（図示されていない）、ステアリングホイールとペダル（図示されていない）、あるいは迅速応答クイズゲーム用の１個あるいは数個の大きなボタンなどのオーダーメイドのコントローラなどを用いることもできる。
【００４３】
リモコン１７５２もブルートゥースリンクによってシステムユニット９１０との無線通信を行なうことができる。リモコン１７５２は、ブルーレイディスクＢＤ−ＲＯＭ読取り装置１４３０の操作およびディスクコンテンツの操作に適切なコントロールを有している。
【００４４】
ブルーレイディスクＢＤ−ＲＯＭ読取り装置１４３０は、従来の記録済みのあるいは追記型のＣＤならびにいわゆるスーパーオーディオＣＤに加えて、プレイステーションおよびプレイステーション２装置に適合したＣＤ−ＲＯＭの読み取りを行なうことができる。読取り装置１４３０はまた、従来の記録済みのあるいは追記型のＤＶＤに加えて、プレイステーション２およびプレイステーション３装置に適合したＤＶＤ−ＲＯＭの読み取りを行なうこともできる。更に、読取り装置１４３０は、従来の記録済みのあるいは追記型のブルーレイディスクに加えて、プレイステーション３に適合したＢＤ−ＲＯＭの読み取りを行なうことができる。
【００４５】
システムユニット９１０は、表示画面１３０５および１以上のスピーカ１３１０を有するモニタやテレビなどのディスプレイ／サウンド出力デバイス１３００にオーディオコネクタおよびビデオコネクタを介してオーディオおよびビデオを提供することができる。それらのオーディオおよびビデオは、プレイステーション３装置がリアリティシンセサイザグラフィックスユニット１２００によって生成あるいは復号したものである。オーディオコネクタ１２１０は従来のアナログならびにディジタル出力を含むことができ、他方、ビデオコネクタ１２２０はコンポーネントビデオ、Ｓ−ビデオ、複合ビデオ、１以上の高精細度マルチメディアインタフェース（ＨＤＭＩ）出力を様々に含むことができる。その結果、ビデオ出力は、ＰＡＬ方式あるいはＮＴＳＣ方式、あるいは７２０ｐ、１０８０ｉ、１０８０ｐでの高精細度のフォーマットとすることができる。
【００４６】
オーディオ処理（生成、復号など）はセルプロセッサ１１００によって実行される。プレイステーション３装置のオペレーティングシステムはドルビー（登録商標）５．１サラウンドサウンド、ドルビー（登録商標）シアターサラウンド（ＤＴＳ）、およびブルーレイ（登録商標）ディスクからの７．１サラウンドサウンドの復号をサポートしている。
【００４７】
本実施形態では、ビデオカメラ１７５６は１個の電荷結合素子（ＣＣＤ）と、ＬＥＤインジケータと、ハードウェアベースのリアルタイムデータ圧縮符号化装置とを有しているので、圧縮されたビデオデータを、画像内ベースのＭＰＥＧ（ｍｏｔｉｏｎ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）規格など、システムユニット９１０による復号に適したフォーマットで送信することができる。カメラのＬＥＤインジケータはシステムユニット９１０からの適切な制御データに応じて光を照らすようにされており、例えば、照明条件が悪いことなどを知らせる。ビデオカメラ１７５６の実施形態は、ＵＳＢ、ブルートゥース、あるいはＷｉ−Ｆｉ通信ポートを介してなど、様々な仕方でシステムユニット９１０に接続できる。ビデオカメラの実施形態は、関連したマイクを含むことができ、オーディオデータを送信することもできる。ビデオカメラの実施形態では、ＣＣＤの解像度は高精細ビデオキャプチャに適したものとすることができる。使用時に、ビデオカメラによりキャプチャされた画像をゲーム内に組み込んだり、ゲームを制御する入力として解釈したりすることができる。
【００４８】
一般に、システムユニット９１０の通信ポートの１つを介してビデオカメラやリモコンなどの周辺デバイスとのデータ通信が成功裏に実現されるためには、デバイスドライバなどの適切なソフトウェアが提供されなければならない。デバイスドライバ技術は良く知られているので、ここでは詳細に説明しないが、上記本実施形態においてデバイスドライバあるいは同様のソフトウェアインタフェースが必要であることは当業者には既知であろう。
【００４９】
次に図５を参照すると、セルプロセッサ１１００のアーキテクチャは、４つの基本構成要素、すなわち、メモリコントローラ１１６０およびデュアルバスインタフェースコントローラ１１７０Ａ，１１７０Ｂを有する外部入出力構造と、パワープロセシングエレメント（ＰＰＥ）１１５０として言及されるメインプロセッサと、シナジスティックプロセシングエレメント（ＳＰＥ）１１１０Ａ−１１１０Ｈとして言及される８個のコプロセッサと、エレメントインターコネクトバス１１８０として言及され、前記構成要素を接続する循環データバスとを有している。セルプロセッサの全体としての浮動小数点演算性能は２１８ＧＦＬＯＰＳであり、これに比較してプレイステーション２装置のエモーションエンジンは６．２ＧＦＬＯＰＳである。
【００５０】
パワープロセシングエレメント（ＰＰＥ）１１５０は、３．２ＧＨｚの内部クロックで動作する両方向同時マルチスレッディングパワー９７０対応パワーＰＣコア（ＰＰＵ）１１５５をベースにしたものである。ＰＰＥ１１５０は、５１２ｋＢの二次（Ｌ２）キャッシュと３２ｋＢの一次（Ｌ１）キャッシュとを有している。ＰＰＥ１１５０は、クロックサイクル毎に単精度演算を８回実行でき、言い換えれば、３．２ＧＨｚでは２５．６ＧＦＬＯＰＳとなる。ＰＰＥ１１５０の主な役割はシナジスティックプロセシングエレメント１１１０Ａ−１１１０Ｈに対するコントローラとして機能することであり、シナジスティックプロセシングエレメント１１１０Ａ−１１１０Ｈが計算の作業負荷の大部分を扱う。動作の際に、ＰＰＥ１１５０はジョブ待ち行列を保持し、シナジスティックプロセシングエレメント１１１０Ａ−１１１０Ｈのためのジョブをスケジュールし、その進展をモニタする。その結果、シナジスティックプロセシングエレメント１１１０Ａ−１１１０Ｈの各々はカーネルを実行するが、カーネルの役割はジョブをフェッチし、実行し、ＰＰＥ１１５０と同期することである。
【００５１】
各シナジスティックプロセシングエレメント（ＳＰＥ）１１１０Ａ−１１１０Ｈは、それぞれのシナジスティックプロセシングユニット（ＳＰＵ‘−これは、上記サウンドプロセシングユニットと区別するため）１１２０Ａ−１１２０Ｈと、それぞれのメモリフローコントローラ（ＭＦＣ）１１４０Ａ−１１４０Ｈとを有しており、各メモリフローコントローラＭＦＣの方は、それぞれのダイナミックメモリアクセスコントローラ（ＤＭＡＣ）１１４２Ａ−１１４２Ｈと、それぞれのメモリマネジメントユニット（ＭＭＵ）１１４４Ａ−１１４４Ｈと、バスインタフェース（図示されていない）とを有している。各ＳＰＵ’１１２０Ａ−１１２０Ｈは、３．２ＧＨｚのクロックで駆動されるＲＩＳＣプロセッサであり、２５６ｋＢのローカルＲＡＭ１１３０Ａ−１１３０Ｈを有しているが、そのローカルＲＡＭは原理的には４ＧＢまで拡張可能である。各ＳＰＥは、理論的に２５．６ＧＦＬＯＰＳの単精度演算性能を実現できる。ＳＰＵ‘は、単一クロックサイクルで、４つの単精度浮動小数点数、あるいは４つの３２ビット数、あるいは８つの１６ビット整数の演算ができる。同じクロックサイクルで、ＳＰＵ’はメモリオペレーションも実行できる。ＳＰＵ‘１１２０Ａ−１１２０ＨはシステムメモリＸＤＲＡＭ１５００に直接アクセスすることはない。ＳＰＵ’１１２０Ａ−１１２０Ｈにより作成された６４ビットアドレスはＭＦＣ１１４０Ａ−１１４０Ｈに引き渡され、ＭＦＣ１１４０Ａ−１１４０ＨがそのＤＭＡコントローラ１１４２Ａ−１１４２Ｈに対してエレメントインターコネクトバス１１８０ならびにメモリコントローラ１１６０を介してメモリにアクセスするように命令する。
【００５２】
エレメントインターコネクトバス（ＥＩＢ）１１８０はセルプロセッサ１１００内の論理的に循環する通信バスであり、前述のプロセッサエレメント、即ち、ＰＰＥ１１５０と、メモリコントローラ１１６０と、デュアルバスインタフェース１１７０Ａ，１１７０Ｂと、８個のＳＰＥ１１１０Ａ−１１１０Ｈとを、すなわち全部で１２の関与エレメントを、接続している。関与エレメントは毎クロックサイクル８バイトの速度でバスに対して同時に読み書きすることができる。各ＳＰＥ１１１０Ａ−１１１０Ｈは、長い読み出しあるいは書き込みシーケンスをスケジュールするために、先に述べたようにＤＭＡＣ１１４２Ａ−１１４２Ｈを有している。ＥＩＢは４つのチャネルを有しており、２つずつ時計回りと反時計回りの方向である。従って、１２の関与エレメントに関して、任意の２つの関与エレメント間の最長のステップワイズデータフローは適切な方向に６ステップである。従って、１２スロットに対する理論的にピークの瞬時ＥＩＢ帯域幅は毎クロック９６Ｂ（バイト）であり、それは関与エレメント間のアービトレーションによってフルに利用した場合である。これは、３．２ＧＨｚのクロック速度の場合の理論的ピーク帯域幅３０７．２ＧＢ／ｓ（ギガバイト／秒）に等しい。
【００５３】
メモリコントローラ１１６０は、ラムバス社（Ｒａｍｂｕｓ  Ｉｎｃｏｒｐｏｒａｔｅｄ）により開発されたＸＤＲＡＭインタフェース１１６２を有している。メモリコントローラは、ラムバスＸＤＲＡＭ１５００に対して理論的ピーク帯域幅２５．６ＧＢ／ｓでインタフェース接続する。
【００５４】
デュアルバスインタフェース１１７０Ａ，Ｂは、ラムバスＦｌｅｘＩＯ（登録商標）システムインタフェース１１７２Ａ，Ｂを有している。インタフェースは１２チャネルに組織され、各チャネル８ビット幅であり、５つの経路はインバウンドで、７つの経路はアウトバウンドである。これによって、コントローラ１１７０Ａを介してセルプロセッサとＩ／Ｏブリッジ１７００との間に、またコントローラ１１７０Ｂを介してリアリティシミュレータグラフィックスユニット１２００との間に、６２．４ＧＢ／ｓ（アウトバウンド３６．４ＧＢ／ｓ、インバウンド２６ＧＢ／ｓ）の理論的ピーク帯域幅が提供される。
【００５５】
セルプロセッサ１１００によりリアリティシミュレータグラフィックスユニット１２００に送信されるデータは、通常、ディスプレイリストから成っており、ディスプレイリストは頂点を描画するコマンド、テクスチャをポリゴンに適用するコマンド、照明条件を指定するコマンドなどのシーケンスである。
【００５６】
次に、図６を参照すると、リアリティシミュレータグラフィックス（ＲＳＸ）ユニット１２００はＮＶｉｄｉａ（登録商標）Ｇ７０／７１アーキテクチャをベースにしたビデオアクセラレータであり、セルプロセッサ１１００により生成されたコマンドのリストを処理し、レンダリングする。ＲＳＸユニット１２００は、セルプロセッサ１１００のバスインタフェースコントローラ１１７０Ｂと通信できるホストインタフェース１２０２と、８個のバーテックスシェーダ１２０５を備えたバーテックスパイプライン（ＶＰ）１２０４と、２４個のピクセルシェーダ１２０７を備えたピクセルパイプライン（ＰＰ）１２０６と、８個のレンダー出力ユニット（ＲＯＰ）１２０９を備えたレンダーパイプライン（ＲＰ）１２０８と、メモリインタフェース１２１０と、ビデオ出力を生成するビデオ変換器１２１２とを有している。ＲＳＸ１２００は２５６ＭＢのダブルデータレート（ＤＤＲ）ビデオＲＡＭ（ＶＲＡＭ）１２５０により補完されており、このＶＲＡＭ１２５０は６００ＭＨｚのクロックで動作し、理論的ピーク帯域幅２５．６ＧＢ／ｓでＲＳＫ１２００とインタフェース接続できる。動作の際には、ＶＲＡＭ１２５０はフレームバッファ１２１４とテクスチャバッファ１２１６を保持する。テクスチャバッファ１２１６はピクセルシェーダ１２０７にテクスチャを提供し、フレームバッファ１２１４は処理パイプラインの結果を格納する。ＲＳＸは、例えばテクスチャをＶＲＡＭ１２５０にロードするために、ＥＩＢ１１８０を介してメインメモリ１５００にアクセスすることができる。
【００５７】
バーテックスパイプライン１２０４は、主として、レンダリングされる画像内のポリゴンを定義する頂点（バーテックス）の変形および変換を処理する。
【００５８】
ピクセルパイプライン１２０６は、主として、それらポリゴンに対する色、テクスチャ、照明の適用を処理するが、それにはピクセルの透明度も含まれる。ピクセルパイプラインはまた、処理される各ピクセルに対する赤、緑、青およびアルファ（透明度）の値を生成する。テクスチャマッピングは、単にグラフィックス画像を表面に適用することでもよいし、バンプマッピング（表面の概念上の向きをテクスチャ値に応じて摂動させることによって照明モデルにハイライトや陰を生成する方法）あるいは変位マッピング（適用されるテクスチャが更に頂点の位置を摂動させることにより、テクスチャと調和する変形された表面を生成する方法）を含んでもよい。
【００５９】
レンダーパイプライン１２０８はピクセル間のデプスを比較して、最終画像においてどちらをレンダリングすべきかを決定する。オプションとして、途中のピクセル工程がデプス値に影響しない場合（例えば、透明度や変位マッピングが無い場合）、レンダーパイプラインおよびバーテックスパイプライン１２０４は互いにデプス情報を通知して、見えないエレメントをピクセル処理の前に取り除くことにより、全体としてのレンダリングの効率性を向上できる。それに加えて、レンダーパイプライン１２０８はまた、結果として得られた画像に対して、フルスクリーンのアンチエイリアス処理のような、その後の効果を適用する。
【００６０】
バーテックスシェーダ１２０５およびピクセルシェーダ１２０７のどちらもシェーダモデル３．０規格に基づいている。クロックサイクル毎に１３６シェーダ演算まで実行でき、連結されたパイプラインは毎秒７４８億シェーダ演算を実行でき、毎秒８億４千万個の頂点および１００億個のピクセルまでを出力することができる。ＲＳＸ１２００の全体としての浮動小数点演算性能は１．８ＴＦＬＯＰＳである。
【００６１】
通常、ＲＳＸ１２００はセルプロセッサ１１００と密接に連携して動作する。例えば、爆発や雨や雪などの気象効果を表示する際に、多数の粒子の跡をたどり、更新し、場面内でレンダリングしなければならない場合である。この場合、セルプロセッサのＰＰＵ１１５５は、粒子のそれぞれの群れの軌跡を計算するために、１つ以上のＳＰＥ１１１０Ａ−１１１０Ｈをスケジュールしなければならない。その間に、ＲＳＸ１２００は、ビデオＲＡＭ１２５０に現在保持されていないテクスチャデータ（例えば、雪片）があれば、エレメントインターコネクトバス１１８０、メモリコントローラ１１６０およびバスインタフェースコントローラ１１７０を介してメインシステムメモリ１５００からそのテクスチャデータを読み出す。その（あるいは各）ＳＰＥ１１１０Ａ−１１１０Ｈは、計算した粒子のプロパティ（典型的には、位置および姿勢を示す座標および法線）をビデオＲＡＭ１２５０に直接出力するが、その（あるいは各）ＳＰＥ１１１０−１１１０ＨのＤＭＡコントローラ１１４２A−１１４２Hはバスインタフェースコントローラ１１７０Ｂを介してビデオＲＡＭ１２５０をアドレス指定する。このように、割り当てられたＳＰＥは、タスクの存続期間中は、事実上ビデオ処理パイプラインの一部となる
一般に、ＰＰＵ１１５５は利用できる８つのＳＰＥのうち６個に対してこのようにしてタスクを割り当てる。すなわち、１つのＳＰＥをオペレーティングシステムのために取っておき、一方、１つのＳＰＥは任意に使用禁止とする。１つのＳＰＥを使用禁止とする場合、１つのＳＰＥによる製造工程の失敗を許容できるので、セルプロセッサの製造の際の許容値のレベルを大きくできる。あるいは、８個すべてのＳＰＥが動作可能な場合、８番目のＳＰＥは、後にセルプロセッサの寿命中に他のＳＰＥのうちの１個により障害が生じた場合のための冗長性を提供できる。
【００６２】
ＰＰＵ１１５５は様々な仕方でＳＰＥにタスクを割り当てることができる。例えば、ＳＰＥを互いに連鎖させることにより、ＤＶＤのアクセスやビデオならびにオーディオの復号、エラーマスキングなどのような複雑な動作の各ステップをそれぞれ別個のＳＰＥに割り当てて、扱うようにさせることができる。それとは別に、あるいはそれに加えて、上記の粒子のアニメーションの例の場合など、２個以上のＳＰＥで入力データをパラレルに扱うように割り当てることができる。
【００６３】
セルプロセッサ１１００および／またはＲＳＸ１２００により実行されるソフトウェア命令は、製造時に供給してＨＤＤ１４００に記憶してもよいし、および／または、光ディスクや固体状態記憶装置などのデータキャリヤあるいは記憶媒体によって、あるいは有線あるいは無線ネットワークやインターネット接続のような伝送媒体によって、あるいはそれらの組み合わせによって供給してもよい。
【００６４】
製造時に供給されるソフトウェアには、システムファームウェアとプレイステーション３装置のオペレーションシステム（ＯＳ）とが含まれる。動作の際、ＯＳはユーザが様々な機能から選択するためのユーザインタフェースを提供するが、それらの機能にはゲームをプレイすること、音楽を聴くこと、写真を見ること、あるいはビデオを観ることが含まれる。このインタフェースはいわゆるクロスメディアバー（ＸＭＢ）の形を取って、様々な種類の機能が水平に配列されている。ユーザは、ゲームコントローラ１７５１、リモコン１７５２、あるいは他の適切なコントロール装置を用いて所望の機能をハイライトするように機能間を水平に移動することにより操作するが、ハイライトされた機能の個所では、その機能に関係するオプションがその機能を中心にした位置に垂直方向にスクロールできるリストとして現れ、そのリストを類似の仕方で操作することができる。しかし、ゲーム、オーディオ、あるいは映画のディスク１４４０がＢＤ−ＲＯＭ光ディスク読取り装置１４３０に挿入されると、プレイステーション３装置は適切な選択肢を自動的に選択する（例えば、ゲームを開始する）ようにしてもよいし、あるいは、適切な選択肢（例えば、オーディオディスクの再生とそのコンテンツのＨＤＤ１４００への圧縮との間の選択）を提供するようにしてもよい。
【００６５】
更に、ＯＳはオンライン機能を提供するが、それには、ウェブブラウザや、追加のゲームコンテンツ、デモ版、および他のメディアをダウンロードできるオンラインストアとのインタフェースや、当該装置のユーザにより指名された他のプレイステーション３装置のユーザとのオンライン通信を提供するフレンド管理機能が含まれ、利用できる周辺デバイスに応じて、テキスト、オーディオ、ビデオを用いるものとすることができる。オンライン機能はまた、適切に設定したゲームをプレイしているときにオンライン通信、コンテンツダウンロード、コンテンツ購入に対応しており、プレイステーション３装置それ自身のファームウェアおよびＯＳの更新に対応している。
【００６６】
図４ないし図６のエミュレーション側プロセシングユニットが、図１ないし図３の被エミュレーション側プロセシングユニットと比較して（大まかな言って）異なるアーキテクチャ、速度、メモリアクセス機能などを有しているという事実にも拘らず、図１ないし図３を参照して説明したＰＳ２の構成の動作は、図４ないし図６の構成の上で実行されるソフトウェアにより再現される（あるいは殆ど再現される）。
【００６７】
ＰＳ２構成の動作の再現は、シミュレーションというよりはエミュレーションである。すなわち、ＰＳ２の機能に寄与する動作のすべてが、融通性のない仕方でクロック毎にエミュレーション側システムで再現されるというわけではない。むしろ、ある機能は単一のエミュレーション側プロセシングユニット上で時分割で実行してもよく、一般に（被エミュレーション側システム内で）必要がある場合にだけプロセシングユニットは互いに通信し合う。
【００６８】
ＰＰＥ１１５０はエミュレーション側システムの全体的な動作を制御し、エミュレーション側システム用のオペレーティングシステム（ＯＳ）を実行する。ＰＰＥ１１５０はまた、１つのスレッドで、ネイティブなエモーションエンジンＰＳ２命令をネイティブなＳＰＥ命令に翻訳し、エミュレーションの各部分を実行するのに必要な関連情報（エミュレーション機能のアロケーションなど−下の説明を参照）と共にＥＩＢを介して適切なＳＰＥに供給する。一方、他のスレッドは、エミュレーション側システムにネイティブな新しいコードを再コンパイルする機能を提供して、翻訳されたＰＳ２コードにより定義される特定の機能を提供する。上に説明されたＰＳ２システムの様々な部分のエミュレーションは、エミュレーション側プロセシングユニットの役割をする８つのＳＰＥに移譲され、それらＳＰＥが下に示すＰＳ２の機能をエミュレートする。個々のＳＰＥの正確な識別は単に表記上の便宜のためであって、ＳＰＥ間のメッセージの受け渡しの本質からして、技術的な重要性がないことを理解できるであろう。それで、例えば、ＳＰＥ１１１０Ａと１１１０Ｂとに割り当てられた演算は、全体としてのエミュレーションプロセスに技術的な影響を及ぼすことなく、そっくり交換することが可能である。また、上に述べたように１つのＳＰＥを使用禁止とすることができるので、タスクは実際には残り７個のＳＰＥの間で分割されることも理解されるであろう。
【００６９】
ＳＰＥ１１１０Ａ  ＩＰＵ１１８
ＳＰＥ１１１０Ｂ  エモーションエンジンＣＰＵ１０２およびベクトル演算ユニット０
ＳＰＥ１１１０Ｃ  ＶＩＦ０、ＶＩＦ１、ＧＩＦ１１０
ＳＰＥ１１１０Ｄ  ベクトル演算ユニット１
ＳＰＥ１１１０Ｅ  ＧＳ２００（即ち、ＧＳ２００の動作のうちＰＳ２に特有の部分；ＳＰＥ１１１０Ｇはまた、ＰＳ２に特有でないグラフィックス演算に関して、エミュレーション側グラフィックスコントローラ（図示されていない）とのインタフェースを取る）
ＳＰＥ１１１０Ｆ  一般に使用されないが、上記ＰＰＥ１１５０の１つのスレッドの負荷を軽減するために、コードを再コンパイルしてベクトル演算ユニット１をエミュレートすることができる
ＳＰＥ１１１０Ｇ  ＳＰＵ３００
ＳＰＥ１１１０Ｈ  ＩＯＰ７００およびＳＩＦ１２２
ＰＳ２は、様々な被エミュレーション側プロセシングユニット間の通信のために従来のバスを使用する。エミュレーション側システムは、ＳＰＥ間でまたＳＰＥとＰＰＥ１１５０とＩ／Ｏブリッジ１７００（そして／またはＲＳＸ１２００などの他のシステムデバイス）との間でメッセージを受け渡すためにＥＩＢ１１８０を使用する。ＰＳ２システムはＲＤＲＡＭ５００にアクセスするために従来のメモリアクセス構成を有している。エミュレート側システムは分散型ＤＭＡシステム（ＤＭＡコントローラ１１４２Ａ−１１４２Ｈ）を使用する。メインシステムメモリ１５００は共通メモリ「プール」として扱われ、すべてのＳＰＥがそれに対してアクセスできる。
【００７０】
ＳＰＥの各々はローカルに、自分自身のタイムクロックで、動作する。ＳＰＥはソフトウェアを実行して、ＰＳ２システムの機能の一部のエミュレーションを可能にする。ＥＰＵ間に関して、同期が必要なのは、ＥＰＵによってエミュレーションされる被エミュレーション側プロセシングユニットが互いに通信する必要がある場合だけである。そのとき、同期は関係するデバイス間の間だけで行なわれ、ＥＩＢを介してメッセージ転送機構を用いてなされる。
【００７１】
これを達成するために、２つのＳＰＥ間で（被エミュレーション側の機能の）同期が必要な場合、ＳＰＥの１つがＳＰＥの他方をアドレス指定したメッセージをＥＩＢ上に発行する（ソースＳＰＥ識別子、デスティネーションＳＰＥ識別子などを含める）。このメッセージはあるデータに対する請求を含めることができ、あるいはその特定の同期に関係する前記他のＳＰＥに送信されるデータ項目を含めることができる。前記他のＳＰＥから確認応答が返信されると、このトランザクションは完了する。これは、被エミュレーション側プロセッサ間を同期させる信頼できる方法ではあるが、かなり遅い方法である。
【００７２】
ＳＰＥが論理的に配列される仕方は、図５に概略的に示されている。ＳＰＥ間の論理的な通信の経路の例も示されているが、これらは網羅的なものではない。幾つかの機能が同一のＳＰＥを共用すれば、通信するためのメッセージ受け渡し機構を用いる必要を全く回避できる。それで、単一のＳＰＥ上で２個（あるいはそれ以上）の被エミュレーション側プロセシングユニットのエミュレーションを提供すれば、ＳＰＥ間の必要な通信量を減少することによってシステムの性能を向上することができる。
【００７３】
図の明瞭さのために図５に網羅的に示されていない他の特徴として、２つの異なるＳＰＥによりエミュレートされる被エミュレーション側プロセシングユニットがＰＳ２の特定の機能を実行するために互いに大量に通信する必要がある場合、１つの実際のプロセッサの機能の一部を「他の」プロセッサのＳＰＥによって実行することができる。
【００７４】
例えば、ＰＳ２のサウンドプロセシングユニットはほとんど１つのＳＰＥによってエミュレートされる。そのＳＰＥはサンプルを処理し、それらをミックスして出力のための最終サンプルとする。それはまた、そのレジスタマップへのアクセスを処理する。しかし、サウンドプロセシングユニットのサンプルメモリに書き込むために用いられるレジスタをエミュレートするのはＩＯＰ上のＳＰＥであり、それはアクセスの待ち行列を管理し、メインメモリのサンプルメモリイメージに直接アクセスし、それらが生じさせ得る割り込みを、あたかもサウンドプロセシングユニットから送られたかのように、発生させる。
【００７５】
２つ以上のＳＰＥで実現されるＰＳ２システムのデバイスの他の例はＤＭＡＣであり、その機能は、エモーションエンジン、ＶＩＦ、ＧＩＦ、ＩＰＵなどのために主に用いられるエミュレーション側の構成要素に分配される。
【００７６】
１つのエミュレーション側ＳＰＥで複数のＰＳ２システムデバイスのエミュレーションを扱う場合の例は、（単一のエミュレーション側デバイスを）ＰＳ２のＩＯＰのエミュレーションとＣＤディスクコントローラのエミュレーションの大分分とが共用する場合である。
【００７７】
被エミュレーション側プロセシングユニットのエミュレーションを２つの（あるいはそれ以上の）ＳＰＥ（エミュレーション側プロセシングユニット）で分割するこのことは、それら被エミュレーション側プロセシングユニットのエミュレーションの間の通信を実現するために必要なメッセージトラフィックをやはり減少させることができる。ＰＰＥは、どのＳＰＥが特定の被エミュレーション側プロセシングユニットをエミュレートするか、および／または、どの被エミュレーション側プロセシングユニットが特定のＳＰＥによってエミュレートされるかを変更するために、（エミュレーションオペレーション全体にわたる）ＳＰＥ間のエミュレーションタスクの分配を変えることができる。
【００７８】
上に記載された本発明の実施形態が、ソフトウェア制御されるデータプロセシング装置を（少なくとも部分的にでも）用いて実現される場合、そのようなソフトウェア制御を提供するコンピュータプログラム、そのようなコンピュータプログラムが記憶される記憶媒体、そしてそのようなコンピュータプログラムを伝送する伝送媒体が本発明の特徴として想定されていることは理解されるであろう。そのようなソフトウェアは、光ディスクあるいはハードウェアメモリなどの記憶媒体、および／または、ネットワーク接続やインターネットなどの伝送媒体によって提供できることに留意されたい。
【図面の簡単な説明】
【００７９】
【図１】図１は、プレイステーション２の全体的なシステムアーキテクチャを概略的に示す図である。
【図２】は、エモーションエンジンのアーキテクチャを概略的に示す図である。
【図３】図３は、グラフィックスシンセサイザの構成を概略的に示す図である。
【図４】図４は、エミュレーション側プロセッサ、特にソニー（登録商標）プレイステーション３（登録商標）装置の構造を概略的に示す図である。
【図５】図５は、セルプロセッサを概略的に示す図である。
【図６】図６は、グラフィックスユニットを概略的に示す図である。
【図７】図７は、エミュレーション側プロセッサ内の論理的な相互作用を概略的に示す図である。
【図１】
2009527836.tif 000003
【図２】
2009527836.tif 000004
【図３】
2009527836.tif 000005
【図４】
2009527836.tif 000006
【図５】
2009527836.tif 000007
【図６】
2009527836.tif 000008
【図７】
2009527836.tif 000009
【国際調査報告】
2009527836.tif 000010
2009527836.tif 000011
2009527836.tif 000012