JP5746916B2 - データ処理 - Google Patents

データ処理 Download PDF

Info

Publication number
JP5746916B2
JP5746916B2 JP2011120250A JP2011120250A JP5746916B2 JP 5746916 B2 JP5746916 B2 JP 5746916B2 JP 2011120250 A JP2011120250 A JP 2011120250A JP 2011120250 A JP2011120250 A JP 2011120250A JP 5746916 B2 JP5746916 B2 JP 5746916B2
Authority
JP
Japan
Prior art keywords
emulation
processing unit
side processing
emulated
processing units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011120250A
Other languages
English (en)
Other versions
JP2011227908A (ja
Inventor
コリン ジョナサン ヒューズ
コリン ジョナサン ヒューズ
スチュアート サーゲイソン
スチュアート サーゲイソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2011227908A publication Critical patent/JP2011227908A/ja
Application granted granted Critical
Publication of JP5746916B2 publication Critical patent/JP5746916B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Bus Control (AREA)

Description

本発明はデータ処理に関する。
データ処理の例として、電子ゲームが良く知られており、そのような電子ゲームは磁気ディスクや光ディスクあるいは光磁気ディスクなどの様々な配布媒体によって供給できる。通常のコンピュータや専用のゲーム機を用いて、これらのゲームをプレイすることができる。
あるプロセッサの動作を別のプロセッサ上でエミュレートする必要がある場合がある。すなわち、エミュレーション側プロセッサはネイティブなプログラムコードを実行するのであるが、そのネイティブなプログラムコードの構成は、ネイティブな命令あるいはネイティブな命令のグループが、被エミュレーション側のシステムに関するデータ処理命令と同じ効果を有するように構成されている。
このような必要が生じる状況として、データプロセッサが製造者によって新しい「世代」へと(例えば、新しいハードウェアアーキテクチャや命令プロトコルへと)アップグレードされたのに、その製造者が依然として古い世代の装置に関係するソフトウェアが使用できること(いわゆる、下位互換性)を望む場合がある。多くの場合、これを実現する唯一の方法は、新世代の装置がエミュレーションソフトウェアを実行し、エミュレーションソフトウェアが旧世代の装置に関する命令に応じて動作することである。この場合、勿論、ネイティブなソフトウェアを実行する場合に比べて、エミュレーションを実行するほうがプロセッサを通常より多く使用することが認められているが、データ処理ハードウェア性能の世代による進歩の全体的な傾向として、処理オーバーヘッドの増加が普通に扱えるようになっている。
本発明は、複数の相互に接続された被エミュレーション側プロセシングユニットを有する被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続された実際のプロセシングユニットを有するデータプロセッサであって、
少なくとも1つの被エミュレーション側プロセシングユニットが、2つ以上の実際のプロセシングユニットの寄与によってエミュレートされ、
少なくとも1つの実際のプロセシングユニットが、2つ以上の被エミュレーション側プロセシングユニットのエミュレーションに寄与する、
ことを特徴とするデータプロセッサを提供する。
本発明は、マルチプロセッサアーキテクチャを使用するエミュレーションシステムに関連する問題を扱うものであり、特に(しかし、それに限定するわけではないが)、(エミュレーション側システムにおける)プロセッサ間の通信がエミュレーション側システムの一般的な動作速度に比較して遅い場合を扱ったものである。本発明は、ある被エミュレーション側プロセシングユニットのエミュレーションを2つ(あるいはそれ以上の)エミュレーション側プロセシングユニットに分割することにより、それら被エミュレーション側プロセシングユニットのエミュレーション間の通信を提供するために必要なメッセージトラフィックを減少できることを認識したものである。同様に、通常互いの通信量の多い複数のプロセシングユニットのエミュレーションを(単一のエミュレーション側プロセシングユニット上に)グルーピングすることにより、それら被エミュレーション側プロセシングユニットのエミュレーション間の通信を提供するために必要なメッセージトラフィックをやはり大幅に減少することができる。これらの手段を共に採用することにより、より高速でより効率的なエミュレーションを提供することができる。
本発明の他の様々な側面および特徴は、添付した請求の範囲に記載されている。
添付図面を参照して、本発明の実施形態について以下に説明するが、それら実施形態は例示のためだけのものである。
図1は、プレイステーション2の全体的なシステムアーキテクチャを概略的に示す図である。 は、エモーションエンジンのアーキテクチャを概略的に示す図である。 図3は、グラフィックスシンセサイザの構成を概略的に示す図である。 図4は、エミュレーション側プロセッサ、特にソニー(登録商標)プレイステーション3(登録商標)装置の構造を概略的に示す図である。 図5は、セルプロセッサを概略的に示す図である。 図6は、グラフィックスユニットを概略的に示す図である。 図7は、エミュレーション側プロセッサ内の論理的な相互作用を概略的に示す図である。
図を参照すると、図1はプレイステーション2コンピュータゲーム機の全体的なシステムアーキテクチャを概略的に示したものである。システムユニット10が設けられており、様々な周辺デバイスをシステムユニットに接続することができる。
システムユニット10は、エモーションエンジン100と、グラフィックスシンセサイザ200と、ダイナミックランダムアクセスメモリ(DRAM)を有するサウンドプロセッサユニット300と、読取り専用メモリ(ROM)400と、コンパクトディスク(CD)/DVDディスク(DVD)読取り装置450と、ラムバスDRAM(RDRAM)ユニット500と、専用RAM750を備えた入出力プロセッサ(IOP)700とを有している。オプションとして、外部ハードディスクドライブ(HDD)390を接続することができる。
入出力プロセッサ700は、2つのユニバーサルシリアルバス(USB)ポート715と図示していないiLinkあるいはIEEE1394ポート(iLinkはソニーによってIEEE1394規格を実現したものである)とを有している。IOP700は、すべてのUSB、iLinkおよびゲームコントローラのデータトラフィックを処理する。例えば、ユーザがゲームをプレイしているとき、IOP700はゲームコントローラからデータを受け取り、受け取ったデータをエモーションエンジン100に向けて送信し、エモーションエンジン100はそれに応じてゲームの現在状態を更新する。IOP700は、速いデータ転送速度を達成するために、直接メモリアクセス(DMA)アーキテクチャを有している。DMAは、データをCPUを介して渡さずに、メインメモリから装置にデータを転送することが関係している。USBインタフェースはオープンホストコントローラインタフェース(OHCI)に準拠しており、1.5Mbpsないし12Mbpsのデータ転送速度を処理することができる。これらのインタフェースを設けることにより、プレイステーション2は、カムコーダーなどのディジタルビデオカセットレコーダ(VCR)、ディジタルカメラ、マイク、プリンタ、キーボードやマウスやジョイスティックなどの入力装置などの周辺デバイスに適合できる可能性を有している。
一般に、USBポート715に接続された周辺デバイスとのデータ通信を成功裏に実現するためには、デバイスドライバなどの適切なソフトウェアを提供する必要がある。デバイスドライバ技術は良く知られているので、ここでは詳しく説明しないが、ここに記載された実施例においてデバイスドライバや類似のソフトウェアが必要とされるであろうことは、当業者には知られている。
本実施例では、USBマイク730がUSBポートに接続されている。USBマイク730は手持ち式のマイクでもよいし、オペレータが装着するヘッドセットの一部をなしていてもよいことは理解されるであろう。ヘッドセットを装着することの利点は、オペレータの手が自由に他の動作ができることである。マイクはアナログ−ディジタル変換器(ADC)と基本的なハードウェアベースのリアルタイムデータ圧縮符号化装置とを含んでいるので、マイク730によってオーディオデータはプレイステーション2システムユニット10で復号するのに適切なフォーマットで、例えばストリーミング圧縮オーディオフォーマットで、USBポート715に送信される。
USBポートを別にすると、他の2つのポート705、710は独自仕様のソケットであり、ゲーム関連の情報を記憶するための独自仕様の不揮発性RAMメモリカード720や、手持ち式のゲームコントローラ725、あるいは手持ち式コントローラを模倣するダンスマットなどのデバイス(図示されていない)を接続することができる。
システムユニット10は、ネットワークへのインタフェース(例えば、イーサネット(登録商標)インタフェース)を提供するネットワークアダプタ805に接続することができる。このネットワークは、例えば、LAN、WAN、あるいはインターネットとすることができる。ネットワークは一般のネットワークでもよいし、ゲーム関連の通信専用のネットワークでもよい。ネットワークアダプタ805により、データを同じネットワークに接続された他のシステムユニット10へ送信し、また他のシステムユニット10から受信することができる(他のシステムユニット10も対応するネットワークアダプタ805を備えている)。
エモーションエンジン100は、ゲームアプリケーション用の3次元(3D)グラフィックスの効率的なシミュレーションのために特別に設計された128ビットの中央演算処理装置(CPU)である。エモーションエンジンの構成要素には、データバス、キャッシュメモリ(CPUコアの一部)、およびレジスタが含まれており、そのすべては128ビットタイプである。これにより、大量のマルチメディアデータの高速処理が容易となる。比較として、従来のPCは64ビットの基本データ構造を有している。プレイステーション2の浮動小数点計算の性能は6.2ギガフロップス(GFLOPS)である。エモーションエンジンはまたMPEG2デコーダ回路を有しており、それにより3DグラフィックスデータとDVDデータの同時処理が可能である。エモーションエンジンは、数学的変換および平行移動を含む幾何学的な計算を実行し、また、シミュレーション物体の物理に関連した計算、例えば、2つの物体間の摩擦の計算、を実行する。エモーションエンジンは、画像レンダリングコマンドのシーケンスを生成し、それらのシーケンスは、後に、グラフィックスシンセサイザ200により利用される。画像レンダリングコマンドは、ディスプレイリストの形で出力される。ディスプレイリストは、グラフィックスシンセサイザに対して画面上でどの基本グラフィックスオブジェクト(例えば、点、線、三角形、スプライト)をどの座標位置に描くべきかを指定する描画コマンドのシーケンスである。それで、典型的なディスプレイリストは、頂点を描くコマンド、多角形(ポリゴン)の面に陰影付けするコマンド等を有している。エモーションエンジン100は複数のディスプレイリストを非同期的に生成することができる。
グラフィックスシンセサイザ200は、エモーションエンジン100により生成されたディスプレイリストのレンダリングを実行するビデオアクセラレータである。グラフィックスシンセサイザ200はグラフィックスインタフェースユニット(GIF)を含んでおり、GIFは複数のディスプレイリストを処理し、追跡し、管理する。グラフィックスシンセサイザ200のレンダリング機能は幾つかの代替的な標準出力画像フォーマット(即ち、NTSC/PAL、高品位テレビおよびVESA)に適合した画像データを生成することができる。一般に、グラフィックスシステムのレンダリング性能は、ピクセルエンジンとビデオメモリ(どちらもグラフィックスプロセッサ内に配置されている)の間のメモリ帯域幅によって定義されている。従来のグラフィックスシステムは外部ビデオランダムアクセスメモリ(VRAM)を用いており、そのVRAMはオフチップバスによってピクセルロジックに接続されているので、利用できる帯域幅は制限されがちである。しかし、プレイステーション2のグラフィックスシンセサイザ200は単一の高性能チップ上にピクセルロジックとビデオメモリを設けているので、毎秒38.4ギガバイトという比較的大きなメモリアクセス帯域幅が可能である。グラフィックスシンセサイザは、理論的には、毎秒7千5百万ポリゴンというピーク描画性能を達成することができる。テクスチャ、照明および透明度など一そろいの効果を用いる場合でも、持続的に毎秒2千万ポリゴンの速度で連続的に描画することができる。したがって、グラフィックスシンセサイザ200はフィルム品質の画像を描くことができる。
サウンドプロセッサユニット(SPU)300は、事実上、本システムのサウンドカードであり、ディジタルシアターサラウンド(DTS、登録商標)サウンドや、DVD用のサウンドフォーマットであるAC−3(ドルビーディジタルとしても知られている)などの3Dディジタルサウンドを扱うことができる。
付属スピーカ装置310を備えたビデオモニタやテレビなどのディスプレイ/サウンド出力デバイス305が接続されており、グラフィックスシンセサイザ200およびサウンド処理ユニット300からのビデオ信号およびオーディオ信号を受信する。
エモーションエンジン100をサポートするメインメモリは、ラムバス社(Rambus Incorporated)からライセンスされたRDRAM(ラムバスダイナミックランダムアクセスメモリ)モジュール500である。このRDRAMメモリサブシステムは、RAMと、RAMコントローラと、RAMをエモーションエンジン100に接続するバスとを有している。
図2は、図1のエモーションエンジン100のアーキテクチャを概略的に示す図である。エモーションエンジン100は、相互に接続されて所望の機能集合を実現する幾つかの処理ユニットの総称である。この文脈の観点からすれば、エモーションエンジンは、浮動小数点演算ユニット(FPU)104と、中央演算処理装置(CPU)コア102と、ベクトル演算ユニット0(VU0)106と、ベクトル演算ユニット1(VU1)108と、グラフィックスインタフェースユニット(GIF)110と、割り込みコントローラ(INTC)112と、タイマーユニット114と、直接メモリアクセスコントローラ116と、画像データプロセッサユニット(IPU)118と、ダイナミックランダムアクセスメモリコントローラ(DRAMC)120と、サブバスインタフェース(SIF)122とを有しており、これらすべての個々の処理ユニットは128ビットのメインバス124によって接続されている。
CPUコア102は、300MHz(実際には294.912MHzであるが、この数字の略記として300MHzが用いられる傾向がある)のクロックで動作する128ビットプロセッサである。CPUコアはDRAMC120を介して32MBのメインメモリにアクセスできる。CPUコア102の命令セットはMIPS III RISCに基づいており、幾らかのMIPS IV RISC命令と付加的なマルチメディア命令を備えている。MIPS IIIおよびIVは、MIPSテクノロジーズ社(Mips Technologies, Inc)の所有する縮小命令セットコンピュータ(RISC)命令セットアーキテクチャである。標準命令は64ビットの2ウェイスーパースケーラーであり、これは2つの命令が同時に実行できることを意味している。他方、マルチメディア命令は、2つのパイプラインを介して128ビット命令を利用する。CPUコア102は、16KBの命令キャッシュと、8KBのデータキャッシュと、16KBのスクラッチパッドRAMとを有しており、スクラッチパッドRAMは専用バスでCPUに接続されたキャッシュの一部であり、メインバスからは独立してデータアクセスが可能である。
FPU104はCPUコア102に対して第一のコプロセッサとしての役割を果たす。ベクトル演算ユニット106は第二のコプロセッサとして機能する。FPU104は、浮動小数点除算計算器(FDIV)を有している。ベクトル演算ユニット106および108は数学演算を実行するが、本質的に、ベクトル方程式の乗算および加算の評価が非常に高速な特化したFPUである。それらベクトル演算ユニットは、加算および乗算の演算用の浮動小数点乗加算器(FMAC)と除算および平方根演算用の浮動小数点除算器(FDIV)とを用いている。FMACは32ビット値に対して演算を行い、従って、演算が(4個の32ビット値からなる)128ビット値に対して実行される場合、演算は4部分について同時に実行することができる。例えば、2つのベクトルの加算を同時に行なうことができる。ベクトル演算ユニット(VU)は、マイクロプログラムを格納するための内蔵メモリを有しており、また、ベクトルインタフェースユニット(VIF)(対応するベクトル演算ユニットと同じ番号で参照される)を介して、本システムの残りの部分とのインタフェースを取る。ベクトル演算ユニット0 106は、専用の128ビットバスを介してCPUコア102に対するコプロセッサとして機能することができるので、本質的に、第二の特化したFPUである。他方、ベクトル演算ユニット1 108は、グラフィックスシンセサイザ200に対する専用バスを有しており、従って、完全に別個のプロセッサと考えることができる。2つのベクトル演算ユニットを設けることにより、ソフトウェアの開発者は作業をCPUの異なる部分の間で分割することができ、ベクトル演算ユニットは直列接続でも並列接続でも用いることができる。
ベクトル演算ユニット0 106は、4個のFMACと1個のFDIVとを有している。ベクトル演算ユニット0は、コプロセッサ接続によってCPUコア102に接続されている。ベクトル演算ユニット0は、データ用の4KBのベクトル演算ユニットメモリと、命令用の4KBのマイクロメモリとを有している。ベクトル演算ユニット0 106は、表示する画像に関連した物理計算を実行するのに有用である。ベクトル演算ユニット0 106はCPUコア102と共に、主に、パターン化されていない幾何学的処理を実行する。
ベクトル演算ユニット1 108は5個のFMACと1個のFDIVとを有している。ベクトル演算ユニット1はCPUコア102への直接的な経路を有していないが、GIFユニット110への直接的な経路を有している。ベクトル演算ユニット1は、データ用の16KBのベクトル演算ユニットメモリと、命令用の16KBのマイクロメモリとを有している。ベクトル演算ユニット1 108は変換を実行するのに有用である。ベクトル演算ユニット1は、パターン化された幾何学的処理を主に実行し、生成されたディスプレイリストを直接GIF110に出力する。
GIF110はグラフィックスシンセサイザ200へのインタフェースユニットである。GIF110は、ディスプレイリストパケットの最初にあるタグスペシフィケーションに従ってデータを変換し、描画コマンドをグラフィックスシンセサイザ200に転送すると共に、相互に複数の転送のアービトレーションを行なう。割り込みコントローラ(INTC)112は、DMAC116を除く周辺デバイスからの割り込みのアービトレーションを行なう。
タイマーユニット114は、16ビットカウンタを備えた4個の独立したタイマーを有している。これらのタイマーはバスクロック(1/16あるいは1/256の間隔)あるいは外部クロックによって駆動される。DMAC116は、メインメモリとスクラッチパッドRAMとの間の、あるいはメインメモリかスクラッチパッドRAMと周辺装置との間のデータ転送を処理する。同時に、DMAC116はメインバス124のアービトレーションを行なう。DMAC116の性能の最適化はエモーションエンジンの性能を向上するための主要な方法である。画像処理ユニット(IPU)118は、圧縮された動画およびテクスチャ画像を展開するために用いられる画像データプロセッサである。画像処理ユニット118はマクロブロックの復号、色空間の変換、そしてベクトル量子化を実行する。最後に、サブバスインタフェース(SIF)122は、IOP700へのインタフェースユニットである。IPUは、サウンドチップや記憶装置などのI/Oデバイスを制御するために、自分自身のメモリとバスを有している。
図3は、グラフィックスシンセサイザ200の構成を概略的に示す図である。グラフィックスシンセサイザは、ホストインタフェース202と、ピクセルパイプライン206と、メモリインタフェース208と、フレームページバッファ214およびテクスチャページバッファ216を含むローカルメモリ212と、ビデオ変換器210とを有している。
ホストインタフェース202は、ホスト(この場合はGIF110)との間でデータを転送する。ホストからの描画データおよびバッファデータはどちらもこのインタフェースを通過する。ホストインタフェース202からの出力はグラフィックスシンセサイザ200に供給され、グラフィックスシンセサイザ200は、グラフィックスを展開して、エモーションエンジン100から受信した頂点情報に基づいてピクセルを描き、各ピクセルについてRGBA値、デプス値(Z値)、テクスチャ値およびフォグ値などの情報を計算する。RGBA値は、赤、緑、青(RGB)の色成分および画像オブジェクトの不透明度を示すA成分(アルファ成分)を指定する。アルファ値は完全な透明から完全な不透明までの範囲の値を取り得る。ピクセルデータはピクセルパイプライン206に供給され、ピクセルパイプライン206はテクスチャマッピング、フォギング、およびアルファブレンディングなどの処理を実行し、計算されたピクセル情報に基づいて最終的な描画色を決定する。
ピクセルパイプライン206は16個のピクセルエンジンPE1,PE2,...,PE16を有しているので、最大で16個のピクセルを同時に処理することができる。ピクセルパイプライン206は150MHz(実際には294.912/2MHz)で動作し、32ビットカラーで、32ビットZバッファを備えている。メモリインタフェース208はローカルグラフィックスシンセサイザメモリ212に対してデータの読み書きを行なう。メモリインタフェース208は、ピクセル演算の最後に描画ピクセル値(RGBAおよびZ)をメモリに書き込み、フレームバッファ214のピクセル値をメモリから読み出す。フレームバッファ214から読み出されたこれらのピクセル値は、ピクセルテストあるいはアルファブレンディングに用いられる。メモリインタフェース208はまた、ローカルメモリ212からフレームバッファの現行内容に関するRGBA値を読み出す。ローカルメモリ212は、グラフィックスシンセサイザ200に内蔵された32Mビット(4MB)メモリである。ローカルメモリ212は、フレームバッファ214とテクスチャバッファ216とZバッファ215とに構成することができる。フレームバッファ214はビデオメモリの一部であり、色情報などのピクセルデータが格納される。
グラフィックスシンセサイザは、2D−3Dテクスチャマッピング工程を用いて3D図形に対して視覚的ディテールを付与する。各テクスチャは3D画像オブジェクトの周りに巻きつけて、伸縮させ、歪ませることにより3Dグラフィック効果を与えることができる。テクスチャバッファは、画像オブジェクト用のテクスチャ情報を格納するために用いられる。Zバッファ215(デプスバッファとしても知られている)は、ピクセルのデプス情報を格納するために用いることのできるメモリである。画像は、グラフィックス基本要素あるいはポリゴン(多角形)として知られる基本的なビルディングブロックから構成されている。ポリゴンがZバッファリングによってレンダリングされる場合、そのピクセルの各々のデプス値はZバッファに格納されている対応値と比較される。Zバッファに格納されている値が新しいピクセル値のデプス値以上であれば、ピクセルは可視であると判断され、そのピクセルはレンダリングされ、Zバッファは新しいピクセルデプス値によって更新される。しかし、Zバッファのデプス値が新しいピクセルデプス値より小さい場合は、その新しいピクセル値は既に描画されているものに隠されているので、レンダリングされない。あるいは、Zバッファテストを利用することができ、(a)新しいピクセルは常に以前の値に取って代わるか、(b)新しいピクセルのデプスがZバッファに格納されている以前の値以上であれば、新しいピクセルが以前のピクセル値に取って代わる。
ローカルメモリ212は、フレームバッファとZバッファにアクセスするための1024ビットの読み出しポートと1024ビットの書き込みポート、そしてテクスチャの読み出しのための512ビットのポートを備えている。ビデオ変換器210は、フレームメモリの内容を指定された出力フォーマットで表示するように動作することができる。
次に、図1ないし図3を参照して説明された本システムのエミュレーションを可能とする構成について説明する。注意すべき点として、便宜上、図1ないし図3に示された処理ユニットを「被エミュレーション側」処理ユニットとして言及し、一方、以下に説明されるエミュレーションシステムでは、その(エミュレーション)システムの処理ユニットは「エミュレーション側」処理ユニットとして言及することにする。生じ得るどんな混同をも避けるために、処理ユニットのどちらの種類も(「被エミュレーション側」ユニットも「エミュレーション側」ユニットも)物理的な処理ユニットであって、それらの処理ユニットに適切なネイティブなソフトウェアをそれぞれ実行できることに注意すべきである。
図4は、ソニー(登録商標)のプレイステーション3(登録商標)娯楽装置の全体的なシステムアーキテクチャを概略的に示す図である。システムユニット910には、そのシステムユニットに接続可能な様々な周辺デバイスが提供されている。
システムユニット910は、セルプロセッサ1100と、ラムバス(登録商標)ダイナミックランダムアクセスメモリ(XDRAM)ユニット1500と、専用ビデオランダムアクセスメモリ(VRAM)ユニット1250を備えたリアリティシンセサイザグラフィックスユニット1200と、I/Oブリッジ1700とを有している。
システムユニット910はまた、ディスク1440を読み取るためのブルーレイ(登録商標)ディスクBD−ROM(登録商標)光ディスク読取り装置1430と、取外し可能スロットインハードディスクドライブ(HDD)1400とを有しており、それらにはI/Oブリッジ1700を介してアクセスすることができる。オプションとして、システムユニットはまた、コンパクトフラッシュ(登録商標)メモリカード、メモリスティック(登録商標)メモリカードなどを読み取るためのメモリカード読取装置1450を有しており、同様にI/Oブリッジ1700を介してアクセスすることができる。
I/Oブリッジ1700はまた、6個のユニバーサルシリアルバス(USB)2.0ポート1710と、ギガビットイーサネット(登録商標)ポート1720と、IEEE802.11b/gワイヤレスネットワーク(Wi−Fi)ポート1730と、7つのブルートゥース接続をサポートできるブルートゥース(登録商標)ワイヤレスリンクポート1740とに接続されている。
動作の際に、I/Oブリッジ1700はすべてのワイヤレス、USBそしてイーサネット(登録商標)のデータを扱うが、それには1つ以上のゲームコントローラ1751からのデータが含まれる。例えば、ユーザがゲームをプレイしている場合、I/Oブリッジ1700はブルートゥースリンクを介してゲームコントローラ1751からデータを受信し、そのデータをセルプロセッサ1100へと向け、セルプロセッサ1100はそれに従ってゲームの現在状態を更新する。
ワイヤレスポート、USBポート、そしてイーサネット(登録商標)ポートによって、ゲームコントローラ1751のほかに他の周辺デバイスが接続できるが、そのような周辺デバイスとして、リモコン1752、キーボード1753、マウス1754、ソニープレイステーションポータブル(登録商標)娯楽装置などのポータブル娯楽装置1755、アイトイ(登録商標)ビデオカメラなどのビデオカメラ1756、マイクヘッドセット1757などがある。従って、そのような周辺デバイスは、原理的には、システムユニット910に無線で接続できる。例えば、ポータブル娯楽装置1755はWi−Fiアドホック接続により通信することができ、マイクヘッドセット1757はブルートゥースリンクによって通信することができる。
これらのインタフェースが設けられていることは、プレイステーション3装置が、ディジタルビデオレコーダ(DVR)、セットトップボックス、ディジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバーIP電話、携帯電話、プリンタ、スキャナなどの他の周辺デバイスにも対応できる可能性があることを意味する。
それに加えて、USBポート1710を介してレガシーメモリカード読取装置1410をシステムユニットに接続し得るので、プレイステーション(登録商標)あるいはプレイステーション2(登録商標)装置によって使用される種類のメモリカード1420の読み取りが可能になる。
本実施形態では、ゲームコントローラ1751は、ブルートゥースリンクによってシステムユニット910と無線通信を行なうことができる。しかし、その代わりとして、ゲームコントローラ1751をUSBポートに接続してもよく、それによればゲームコントローラ1751のバッテリを充電する電源を供給できる。1個以上のアナログジョイスティックや従来のコントロールボタンに加えて、ゲームコントローラは、各軸での平行移動および回転に対応する6自由度の動きを感知できる。その結果、従来のボタンあるいはジョイスティックによるコマンドに加えあるいは替えて、ゲームコントローラのユーザによるジェスチャーおよび動作をゲームに対する入力に変換することができる。オプションとして、プレイステーションポータブル装置などワイヤレスで使用可能な他の周辺デバイスをコントローラとして使用することができる。プレイステーションポータブル装置の場合、付加的なゲーム情報あるいは制御情報(例えば、制御命令あるいはゲームオーバーまでリトライできる数)を装置の画面上に提供することができる。他の代替的あるいは補助的なコントロール装置を用いることもでき、例えば、ダンスマット(図示されていない)、ライトガン(図示されていない)、ステアリングホイールとペダル(図示されていない)、あるいは迅速応答クイズゲーム用の1個あるいは数個の大きなボタンなどのオーダーメイドのコントローラなどを用いることもできる。
リモコン1752もブルートゥースリンクによってシステムユニット910との無線通信を行なうことができる。リモコン1752は、ブルーレイディスクBD−ROM読取り装置1430の操作およびディスクコンテンツの操作に適切なコントロールを有している。
ブルーレイディスクBD−ROM読取り装置1430は、従来の記録済みのあるいは追記型のCDならびにいわゆるスーパーオーディオCDに加えて、プレイステーションおよびプレイステーション2装置に適合したCD−ROMの読み取りを行なうことができる。読取り装置1430はまた、従来の記録済みのあるいは追記型のDVDに加えて、プレイステーション2およびプレイステーション3装置に適合したDVD−ROMの読み取りを行なうこともできる。更に、読取り装置1430は、従来の記録済みのあるいは追記型のブルーレイディスクに加えて、プレイステーション3に適合したBD−ROMの読み取りを行なうことができる。
システムユニット910は、表示画面1305および1以上のスピーカ1310を有するモニタやテレビなどのディスプレイ/サウンド出力デバイス1300にオーディオコネクタおよびビデオコネクタを介してオーディオおよびビデオを提供することができる。それらのオーディオおよびビデオは、プレイステーション3装置がリアリティシンセサイザグラフィックスユニット1200によって生成あるいは復号したものである。オーディオコネクタ1210は従来のアナログならびにディジタル出力を含むことができ、他方、ビデオコネクタ1220はコンポーネントビデオ、S−ビデオ、複合ビデオ、1以上の高精細度マルチメディアインタフェース(HDMI)出力を様々に含むことができる。その結果、ビデオ出力は、PAL方式あるいはNTSC方式、あるいは720p、1080i、1080pでの高精細度のフォーマットとすることができる。
オーディオ処理(生成、復号など)はセルプロセッサ1100によって実行される。プレイステーション3装置のオペレーティングシステムはドルビー(登録商標)5.1サラウンドサウンド、ドルビー(登録商標)シアターサラウンド(DTS)、およびブルーレイ(登録商標)ディスクからの7.1サラウンドサウンドの復号をサポートしている。
本実施形態では、ビデオカメラ1756は1個の電荷結合素子(CCD)と、LEDインジケータと、ハードウェアベースのリアルタイムデータ圧縮符号化装置とを有しているので、圧縮されたビデオデータを、画像内ベースのMPEG(motion picture expert group)規格など、システムユニット910による復号に適したフォーマットで送信することができる。カメラのLEDインジケータはシステムユニット910からの適切な制御データに応じて光を照らすようにされており、例えば、照明条件が悪いことなどを知らせる。ビデオカメラ1756の実施形態は、USB、ブルートゥース、あるいはWi−Fi通信ポートを介してなど、様々な仕方でシステムユニット910に接続できる。ビデオカメラの実施形態は、関連したマイクを含むことができ、オーディオデータを送信することもできる。ビデオカメラの実施形態では、CCDの解像度は高精細ビデオキャプチャに適したものとすることができる。使用時に、ビデオカメラによりキャプチャされた画像をゲーム内に組み込んだり、ゲームを制御する入力として解釈したりすることができる。
一般に、システムユニット910の通信ポートの1つを介してビデオカメラやリモコンなどの周辺デバイスとのデータ通信が成功裏に実現されるためには、デバイスドライバなどの適切なソフトウェアが提供されなければならない。デバイスドライバ技術は良く知られているので、ここでは詳細に説明しないが、上記本実施形態においてデバイスドライバあるいは同様のソフトウェアインタフェースが必要であることは当業者には既知であろう。
次に図5を参照すると、セルプロセッサ1100のアーキテクチャは、4つの基本構成要素、すなわち、メモリコントローラ1160およびデュアルバスインタフェースコントローラ1170A,1170Bを有する外部入出力構造と、パワープロセシングエレメント(PPE)1150として言及されるメインプロセッサと、シナジスティックプロセシングエレメント(SPE)1110A−1110Hとして言及される8個のコプロセッサと、エレメントインターコネクトバス1180として言及され、前記構成要素を接続する循環データバスとを有している。セルプロセッサの全体としての浮動小数点演算性能は218GFLOPSであり、これに比較してプレイステーション2装置のエモーションエンジンは6.2GFLOPSである。
パワープロセシングエレメント(PPE)1150は、3.2GHzの内部クロックで動作する両方向同時マルチスレッディングパワー970対応パワーPCコア(PPU)1155をベースにしたものである。PPE1150は、512kBの二次(L2)キャッシュと32kBの一次(L1)キャッシュとを有している。PPE1150は、クロックサイクル毎に単精度演算を8回実行でき、言い換えれば、3.2GHzでは25.6GFLOPSとなる。PPE1150の主な役割はシナジスティックプロセシングエレメント1110A−1110Hに対するコントローラとして機能することであり、シナジスティックプロセシングエレメント1110A−1110Hが計算の作業負荷の大部分を扱う。動作の際に、PPE1150はジョブ待ち行列を保持し、シナジスティックプロセシングエレメント1110A−1110Hのためのジョブをスケジュールし、その進展をモニタする。その結果、シナジスティックプロセシングエレメント1110A−1110Hの各々はカーネルを実行するが、カーネルの役割はジョブをフェッチし、実行し、PPE1150と同期することである。
各シナジスティックプロセシングエレメント(SPE)1110A−1110Hは、それぞれのシナジスティックプロセシングユニット(SPU‘−これは、上記サウンドプロセシングユニットと区別するため)1120A−1120Hと、それぞれのメモリフローコントローラ(MFC)1140A−1140Hとを有しており、各メモリフローコントローラMFCの方は、それぞれのダイナミックメモリアクセスコントローラ(DMAC)1142A−1142Hと、それぞれのメモリマネジメントユニット(MMU)1144A−1144Hと、バスインタフェース(図示されていない)とを有している。各SPU’1120A−1120Hは、3.2GHzのクロックで駆動されるRISCプロセッサであり、256kBのローカルRAM1130A−1130Hを有しているが、そのローカルRAMは原理的には4GBまで拡張可能である。各SPEは、理論的に25.6GFLOPSの単精度演算性能を実現できる。SPU‘は、単一クロックサイクルで、4つの単精度浮動小数点数、あるいは4つの32ビット数、あるいは8つの16ビット整数の演算ができる。同じクロックサイクルで、SPU’はメモリオペレーションも実行できる。SPU‘1120A−1120HはシステムメモリXDRAM1500に直接アクセスすることはない。SPU’1120A−1120Hにより作成された64ビットアドレスはMFC1140A−1140Hに引き渡され、MFC1140A−1140HがそのDMAコントローラ1142A−1142Hに対してエレメントインターコネクトバス1180ならびにメモリコントローラ1160を介してメモリにアクセスするように命令する。
エレメントインターコネクトバス(EIB)1180はセルプロセッサ1100内の論理的に循環する通信バスであり、前述のプロセッサエレメント、即ち、PPE1150と、メモリコントローラ1160と、デュアルバスインタフェース1170A,1170Bと、8個のSPE1110A−1110Hとを、すなわち全部で12の関与エレメントを、接続している。関与エレメントは毎クロックサイクル8バイトの速度でバスに対して同時に読み書きすることができる。各SPE1110A−1110Hは、長い読み出しあるいは書き込みシーケンスをスケジュールするために、先に述べたようにDMAC1142A−1142Hを有している。EIBは4つのチャネルを有しており、2つずつ時計回りと反時計回りの方向である。従って、12の関与エレメントに関して、任意の2つの関与エレメント間の最長のステップワイズデータフローは適切な方向に6ステップである。従って、12スロットに対する理論的にピークの瞬時EIB帯域幅は毎クロック96B(バイト)であり、それは関与エレメント間のアービトレーションによってフルに利用した場合である。これは、3.2GHzのクロック速度の場合の理論的ピーク帯域幅307.2GB/s(ギガバイト/秒)に等しい。
メモリコントローラ1160は、ラムバス社(Rambus Incorporated)により開発されたXDRAMインタフェース1162を有している。メモリコントローラは、ラムバスXDRAM1500に対して理論的ピーク帯域幅25.6GB/sでインタフェース接続する。
デュアルバスインタフェース1170A,Bは、ラムバスFlexIO(登録商標)システムインタフェース1172A,Bを有している。インタフェースは12チャネルに組織され、各チャネル8ビット幅であり、5つの経路はインバウンドで、7つの経路はアウトバウンドである。これによって、コントローラ1170Aを介してセルプロセッサとI/Oブリッジ1700との間に、またコントローラ1170Bを介してリアリティシミュレータグラフィックスユニット1200との間に、62.4GB/s(アウトバウンド36.4GB/s、インバウンド26GB/s)の理論的ピーク帯域幅が提供される。
セルプロセッサ1100によりリアリティシミュレータグラフィックスユニット1200に送信されるデータは、通常、ディスプレイリストから成っており、ディスプレイリストは頂点を描画するコマンド、テクスチャをポリゴンに適用するコマンド、照明条件を指定するコマンドなどのシーケンスである。
次に、図6を参照すると、リアリティシミュレータグラフィックス(RSX)ユニット1200はNVidia(登録商標)G70/71アーキテクチャをベースにしたビデオアクセラレータであり、セルプロセッサ1100により生成されたコマンドのリストを処理し、レンダリングする。RSXユニット1200は、セルプロセッサ1100のバスインタフェースコントローラ1170Bと通信できるホストインタフェース1202と、8個のバーテックスシェーダ1205を備えたバーテックスパイプライン(VP)1204と、24個のピクセルシェーダ1207を備えたピクセルパイプライン(PP)1206と、8個のレンダー出力ユニット(ROP)1209を備えたレンダーパイプライン(RP)1208と、メモリインタフェース1210と、ビデオ出力を生成するビデオ変換器1212とを有している。RSX1200は256MBのダブルデータレート(DDR)ビデオRAM(VRAM)1250により補完されており、このVRAM1250は600MHzのクロックで動作し、理論的ピーク帯域幅25.6GB/sでRSK1200とインタフェース接続できる。動作の際には、VRAM1250はフレームバッファ1214とテクスチャバッファ1216を保持する。テクスチャバッファ1216はピクセルシェーダ1207にテクスチャを提供し、フレームバッファ1214は処理パイプラインの結果を格納する。RSXは、例えばテクスチャをVRAM1250にロードするために、EIB1180を介してメインメモリ1500にアクセスすることができる。
バーテックスパイプライン1204は、主として、レンダリングされる画像内のポリゴンを定義する頂点(バーテックス)の変形および変換を処理する。
ピクセルパイプライン1206は、主として、それらポリゴンに対する色、テクスチャ、照明の適用を処理するが、それにはピクセルの透明度も含まれる。ピクセルパイプラインはまた、処理される各ピクセルに対する赤、緑、青およびアルファ(透明度)の値を生成する。テクスチャマッピングは、単にグラフィックス画像を表面に適用することでもよいし、バンプマッピング(表面の概念上の向きをテクスチャ値に応じて摂動させることによって照明モデルにハイライトや陰を生成する方法)あるいは変位マッピング(適用されるテクスチャが更に頂点の位置を摂動させることにより、テクスチャと調和する変形された表面を生成する方法)を含んでもよい。
レンダーパイプライン1208はピクセル間のデプスを比較して、最終画像においてどちらをレンダリングすべきかを決定する。オプションとして、途中のピクセル工程がデプス値に影響しない場合(例えば、透明度や変位マッピングが無い場合)、レンダーパイプラインおよびバーテックスパイプライン1204は互いにデプス情報を通知して、見えないエレメントをピクセル処理の前に取り除くことにより、全体としてのレンダリングの効率性を向上できる。それに加えて、レンダーパイプライン1208はまた、結果として得られた画像に対して、フルスクリーンのアンチエイリアス処理のような、その後の効果を適用する。
バーテックスシェーダ1205およびピクセルシェーダ1207のどちらもシェーダモデル3.0規格に基づいている。クロックサイクル毎に136シェーダ演算まで実行でき、連結されたパイプラインは毎秒748億シェーダ演算を実行でき、毎秒8億4千万個の頂点および100億個のピクセルまでを出力することができる。RSX1200の全体としての浮動小数点演算性能は1.8TFLOPSである。
通常、RSX1200はセルプロセッサ1100と密接に連携して動作する。例えば、爆発や雨や雪などの気象効果を表示する際に、多数の粒子の跡をたどり、更新し、場面内でレンダリングしなければならない場合である。この場合、セルプロセッサのPPU1155は、粒子のそれぞれの群れの軌跡を計算するために、1つ以上のSPE1110A−1110Hをスケジュールしなければならない。その間に、RSX1200は、ビデオRAM1250に現在保持されていないテクスチャデータ(例えば、雪片)があれば、エレメントインターコネクトバス1180、メモリコントローラ1160およびバスインタフェースコントローラ1170を介してメインシステムメモリ1500からそのテクスチャデータを読み出す。その(あるいは各)SPE1110A−1110Hは、計算した粒子のプロパティ(典型的には、位置および姿勢を示す座標および法線)をビデオRAM1250に直接出力するが、その(あるいは各)SPE1110−1110HのDMAコントローラ1142A−1142Hはバスインタフェースコントローラ1170Bを介してビデオRAM1250をアドレス指定する。このように、割り当てられたSPEは、タスクの存続期間中は、事実上ビデオ処理パイプラインの一部となる
一般に、PPU1155は利用できる8つのSPEのうち6個に対してこのようにしてタスクを割り当てる。すなわち、1つのSPEをオペレーティングシステムのために取っておき、一方、1つのSPEは任意に使用禁止とする。1つのSPEを使用禁止とする場合、1つのSPEによる製造工程の失敗を許容できるので、セルプロセッサの製造の際の許容値のレベルを大きくできる。あるいは、8個すべてのSPEが動作可能な場合、8番目のSPEは、後にセルプロセッサの寿命中に他のSPEのうちの1個により障害が生じた場合のための冗長性を提供できる。
PPU1155は様々な仕方でSPEにタスクを割り当てることができる。例えば、SPEを互いに連鎖させることにより、DVDのアクセスやビデオならびにオーディオの復号、エラーマスキングなどのような複雑な動作の各ステップをそれぞれ別個のSPEに割り当てて、扱うようにさせることができる。それとは別に、あるいはそれに加えて、上記の粒子のアニメーションの例の場合など、2個以上のSPEで入力データをパラレルに扱うように割り当てることができる。
セルプロセッサ1100および/またはRSX1200により実行されるソフトウェア命令は、製造時に供給してHDD1400に記憶してもよいし、および/または、光ディスクや固体状態記憶装置などのデータキャリヤあるいは記憶媒体によって、あるいは有線あるいは無線ネットワークやインターネット接続のような伝送媒体によって、あるいはそれらの組み合わせによって供給してもよい。
製造時に供給されるソフトウェアには、システムファームウェアとプレイステーション3装置のオペレーションシステム(OS)とが含まれる。動作の際、OSはユーザが様々な機能から選択するためのユーザインタフェースを提供するが、それらの機能にはゲームをプレイすること、音楽を聴くこと、写真を見ること、あるいはビデオを観ることが含まれる。このインタフェースはいわゆるクロスメディアバー(XMB)の形を取って、様々な種類の機能が水平に配列されている。ユーザは、ゲームコントローラ1751、リモコン1752、あるいは他の適切なコントロール装置を用いて所望の機能をハイライトするように機能間を水平に移動することにより操作するが、ハイライトされた機能の個所では、その機能に関係するオプションがその機能を中心にした位置に垂直方向にスクロールできるリストとして現れ、そのリストを類似の仕方で操作することができる。しかし、ゲーム、オーディオ、あるいは映画のディスク1440がBD−ROM光ディスク読取り装置1430に挿入されると、プレイステーション3装置は適切な選択肢を自動的に選択する(例えば、ゲームを開始する)ようにしてもよいし、あるいは、適切な選択肢(例えば、オーディオディスクの再生とそのコンテンツのHDD1400への圧縮との間の選択)を提供するようにしてもよい。
更に、OSはオンライン機能を提供するが、それには、ウェブブラウザや、追加のゲームコンテンツ、デモ版、および他のメディアをダウンロードできるオンラインストアとのインタフェースや、当該装置のユーザにより指名された他のプレイステーション3装置のユーザとのオンライン通信を提供するフレンド管理機能が含まれ、利用できる周辺デバイスに応じて、テキスト、オーディオ、ビデオを用いるものとすることができる。オンライン機能はまた、適切に設定したゲームをプレイしているときにオンライン通信、コンテンツダウンロード、コンテンツ購入に対応しており、プレイステーション3装置それ自身のファームウェアおよびOSの更新に対応している。
図4ないし図6のエミュレーション側プロセシングユニットが、図1ないし図3の被エミュレーション側プロセシングユニットと比較して(大まかな言って)異なるアーキテクチャ、速度、メモリアクセス機能などを有しているという事実にも拘らず、図1ないし図3を参照して説明したPS2の構成の動作は、図4ないし図6の構成の上で実行されるソフトウェアにより再現される(あるいは殆ど再現される)。
PS2構成の動作の再現は、シミュレーションというよりはエミュレーションである。すなわち、PS2の機能に寄与する動作のすべてが、融通性のない仕方でクロック毎にエミュレーション側システムで再現されるというわけではない。むしろ、ある機能は単一のエミュレーション側プロセシングユニット上で時分割で実行してもよく、一般に(被エミュレーション側システム内で)必要がある場合にだけプロセシングユニットは互いに通信し合う。
PPE1150はエミュレーション側システムの全体的な動作を制御し、エミュレーション側システム用のオペレーティングシステム(OS)を実行する。PPE1150はまた、1つのスレッドで、ネイティブなエモーションエンジンPS2命令をネイティブなSPE命令に翻訳し、エミュレーションの各部分を実行するのに必要な関連情報(エミュレーション機能のアロケーションなど−下の説明を参照)と共にEIBを介して適切なSPEに供給する。一方、他のスレッドは、エミュレーション側システムにネイティブな新しいコードを再コンパイルする機能を提供して、翻訳されたPS2コードにより定義される特定の機能を提供する。上に説明されたPS2システムの様々な部分のエミュレーションは、エミュレーション側プロセシングユニットの役割をする8つのSPEに移譲され、それらSPEが下に示すPS2の機能をエミュレートする。個々のSPEの正確な識別は単に表記上の便宜のためであって、SPE間のメッセージの受け渡しの本質からして、技術的な重要性がないことを理解できるであろう。それで、例えば、SPE1110Aと1110Bとに割り当てられた演算は、全体としてのエミュレーションプロセスに技術的な影響を及ぼすことなく、そっくり交換することが可能である。また、上に述べたように1つのSPEを使用禁止とすることができるので、タスクは実際には残り7個のSPEの間で分割されることも理解されるであろう。
SPE1110A IPU118
SPE1110B エモーションエンジンCPU102およびベクトル演算ユニット0
SPE1110C VIF0、VIF1、GIF110
SPE1110D ベクトル演算ユニット1
SPE1110E GS200(即ち、GS200の動作のうちPS2に特有の部分;SPE1110Gはまた、PS2に特有でないグラフィックス演算に関して、エミュレーション側グラフィックスコントローラ(図示されていない)とのインタフェースを取る)
SPE1110F 一般に使用されないが、上記PPE1150の1つのスレッドの負荷を軽減するために、コードを再コンパイルしてベクトル演算ユニット1をエミュレートすることができる
SPE1110G SPU300
SPE1110H IOP700およびSIF122
PS2は、様々な被エミュレーション側プロセシングユニット間の通信のために従来のバスを使用する。エミュレーション側システムは、SPE間でまたSPEとPPE1150とI/Oブリッジ1700(そして/またはRSX1200などの他のシステムデバイス)との間でメッセージを受け渡すためにEIB1180を使用する。PS2システムはRDRAM500にアクセスするために従来のメモリアクセス構成を有している。エミュレート側システムは分散型DMAシステム(DMAコントローラ1142A−1142H)を使用する。メインシステムメモリ1500は共通メモリ「プール」として扱われ、すべてのSPEがそれに対してアクセスできる。
SPEの各々はローカルに、自分自身のタイムクロックで、動作する。SPEはソフトウェアを実行して、PS2システムの機能の一部のエミュレーションを可能にする。EPU間に関して、同期が必要なのは、EPUによってエミュレーションされる被エミュレーション側プロセシングユニットが互いに通信する必要がある場合だけである。そのとき、同期は関係するデバイス間の間だけで行なわれ、EIBを介してメッセージ転送機構を用いてなされる。
これを達成するために、2つのSPE間で(被エミュレーション側の機能の)同期が必要な場合、SPEの1つがSPEの他方をアドレス指定したメッセージをEIB上に発行する(ソースSPE識別子、デスティネーションSPE識別子などを含める)。このメッセージはあるデータに対する請求を含めることができ、あるいはその特定の同期に関係する前記他のSPEに送信されるデータ項目を含めることができる。前記他のSPEから確認応答が返信されると、このトランザクションは完了する。これは、被エミュレーション側プロセッサ間を同期させる信頼できる方法ではあるが、かなり遅い方法である。
SPEが論理的に配列される仕方は、図5に概略的に示されている。SPE間の論理的な通信の経路の例も示されているが、これらは網羅的なものではない。幾つかの機能が同一のSPEを共用すれば、通信するためのメッセージ受け渡し機構を用いる必要を全く回避できる。それで、単一のSPE上で2個(あるいはそれ以上)の被エミュレーション側プロセシングユニットのエミュレーションを提供すれば、SPE間の必要な通信量を減少することによってシステムの性能を向上することができる。
図の明瞭さのために図5に網羅的に示されていない他の特徴として、2つの異なるSPEによりエミュレートされる被エミュレーション側プロセシングユニットがPS2の特定の機能を実行するために互いに大量に通信する必要がある場合、1つの実際のプロセッサの機能の一部を「他の」プロセッサのSPEによって実行することができる。
例えば、PS2のサウンドプロセシングユニットはほとんど1つのSPEによってエミュレートされる。そのSPEはサンプルを処理し、それらをミックスして出力のための最終サンプルとする。それはまた、そのレジスタマップへのアクセスを処理する。しかし、サウンドプロセシングユニットのサンプルメモリに書き込むために用いられるレジスタをエミュレートするのはIOP上のSPEであり、それはアクセスの待ち行列を管理し、メインメモリのサンプルメモリイメージに直接アクセスし、それらが生じさせ得る割り込みを、あたかもサウンドプロセシングユニットから送られたかのように、発生させる。
2つ以上のSPEで実現されるPS2システムのデバイスの他の例はDMACであり、その機能は、エモーションエンジン、VIF、GIF、IPUなどのために主に用いられるエミュレーション側の構成要素に分配される。
1つのエミュレーション側SPEで複数のPS2システムデバイスのエミュレーションを扱う場合の例は、(単一のエミュレーション側デバイスを)PS2のIOPのエミュレーションとCDディスクコントローラのエミュレーションの大分分とが共用する場合である。
被エミュレーション側プロセシングユニットのエミュレーションを2つの(あるいはそれ以上の)SPE(エミュレーション側プロセシングユニット)で分割するこのことは、それら被エミュレーション側プロセシングユニットのエミュレーションの間の通信を実現するために必要なメッセージトラフィックをやはり減少させることができる。PPEは、どのSPEが特定の被エミュレーション側プロセシングユニットをエミュレートするか、および/または、どの被エミュレーション側プロセシングユニットが特定のSPEによってエミュレートされるかを変更するために、(エミュレーションオペレーション全体にわたる)SPE間のエミュレーションタスクの分配を変えることができる。
上に記載された本発明の実施形態が、ソフトウェア制御されるデータプロセシング装置を(少なくとも部分的にでも)用いて実現される場合、そのようなソフトウェア制御を提供するコンピュータプログラム、そのようなコンピュータプログラムが記憶される記憶媒体、そしてそのようなコンピュータプログラムを伝送する伝送媒体が本発明の特徴として想定されていることは理解されるであろう。そのようなソフトウェアは、光ディスクあるいはハードウェアメモリなどの記憶媒体、および/または、ネットワーク接続やインターネットなどの伝送媒体によって提供できることに留意されたい。

Claims (9)

  1. 複数の相互に接続された被エミュレーション側プロセシングユニットであって被エミュレーション側機能の一部として互いに通信する被エミュレーション側プロセシングユニットを備えた被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続されたエミュレーション側プロセシングユニットを有するデータプロセッサであって、
    前記エミュレーション側プロセシングユニットの各々は、
    ローカルのタイムクロックに従って動作し、
    メッセージ受け渡し通信プロトコルを用いて互いに通信し、
    少なくとも1つの被エミュレーション側プロセシングユニットが、2つ以上のエミュレーション側プロセシングユニットの寄与によってエミュレートされ、
    少なくとも1つのエミュレーション側プロセシングユニットが、2つ以上の被エミュレーション側プロセシングユニットのエミュレーションに寄与し、
    前記エミュレーション側プロセシングユニットが非同期で動作し、被エミュレーション側プロセシングユニットが他の被エミュレーション側プロセシングユニットと通信が必要な場合、前記エミュレーション側プロセシングユニットが相互の同期エミュレーション動作を要求され、
    前記被エミュレーション側プロセシングユニットの機能が互いに通信する場合、該被エミュレーション側プロセシングユニットをエミュレートする前記エミュレーション側プロセシングユニットのうち一つは、前記被エミュレーション側プロセシングユニット間の前記機能の同期のためのメッセージを他の前記エミュレーション側プロセシングユニットのうち一つに発行し、該他の前記エミュレーション側プロセシングユニットからの応答を受信し、
    第1のエミュレーション側プロセシングユニットにエミュレートされる第1の被エミュレーション側プロセシングユニットが、他のエミュレーション側プロセシングユニットにエミュレートされる他の被エミュレーション側プロセシングユニットとの通信を要求する場合に、エミュレーション側プロセシングユニット間でのメッセージ受け渡しの必要を低減するように、前記第1の被エミュレーション側プロセシングユニットの機能の一部が、エミュレーションのために他のエミュレーション側プロセシングユニットに割り当てられる
    ことを特徴とするデータプロセッサ。
  2. 請求項1に記載のデータプロセッサであって、エミュレーション側プロセシングユニットが循環データバスによって相互接続されていることを特徴とするデータプロセッサ。
  3. 請求項2に記載のデータプロセッサであって、前記データバスは双方向バスであることを特徴とするデータプロセッサ。
  4. 請求項1〜3いずれか1つに記載のデータプロセッサであって、監視プロセッサを有し、前記監視プロセッサは被エミュレーション側プロセッサに関する命令を翻訳し、翻訳された命令が実行できるように、エミュレーション側プロセシングユニットに情報を提供することを特徴とするデータプロセッサ。
  5. 請求項4に記載のデータプロセッサであって、被エミュレーション側プロセシングユニットに供給される前記情報が、エミュレーション側プロセシングユニットにネイティブなオブジェクトコードを有することを特徴とするデータプロセッサ。
  6. 請求項4あるいは請求項5に記載のデータプロセッサであって、前記監視プロセッサは、どの被エミュレーション側プロセシングユニットがあるエミュレーション側プロセシングユニットによりエミュレートされるかを変更するために、エミュレーションタスクのエミュレーション側プロセシングユニットへのアロケーションを変化させるように動作できることを特徴とするデータプロセッサ。
  7. 複数の相互に接続された被エミュレーション側プロセシングユニットであって被エミュレーション側機能の一部として互いに通信する被エミュレーション側プロセシングユニットを備えた被エミュレーション側プロセッサの動作をエミュレートするように配列された複数の相互に接続されたエミュレーション側プロセシングユニットを有するシステムに関するデータ処理方法であって、
    前記エミュレーション側プロセシングユニットの各々は、
    ローカルのタイムクロックに従って動作し、
    メッセージ受け渡し通信プロトコルを用いて互いに通信し、
    前記エミュレーション側プロセシングユニットが非同期で動作し、被エミュレーション側プロセシングユニットが他の被エミュレーション側プロセシングユニットと通信が必要な場合、前記エミュレーション側プロセシングユニットが相互の同期エミュレーション動作を要求され、
    前記方法は、
    2つ以上のエミュレーション側プロセシングユニットの寄与によって少なくとも一つの被エミュレーション側プロセシングユニットをエミュレートするステップと、
    少なくとも1つのエミュレーション側プロセシングユニットで2つ以上の被エミュレーション側プロセシングユニットをエミュレートするステップと、
    前記被エミュレーション側プロセシングユニットの機能が互いに通信する場合、該被エミュレーション側プロセシングユニットをエミュレートする前記エミュレーション側プロセシングユニットのうち一つは、前記被エミュレーション側プロセシングユニット間の前記機能の同期のためのメッセージを他の前記エミュレーション側プロセシングユニットのうち一つに発行し、該他方の前記エミュレーション側プロセシングユニットからの応答を受信するステップと、
    第1のエミュレーション側プロセシングユニットにエミュレートされる第1の被エミュレーション側プロセシングユニットが、他のエミュレーション側プロセシングユニットにエミュレートされる他の被エミュレーション側プロセシングユニットとの通信を要求する場合に、エミュレーション側プロセシングユニット間でのメッセージ受け渡しの必要を低減するように、前記第1の被エミュレーション側プロセシングユニットの機能の一部が、エミュレーションのために他のエミュレーション側プロセシングユニットに割り当てられるステップと
    を有することを特徴とするデータ処理方法。
  8. 請求項7に記載の方法を実行するためのコンピュータソフトウェア。
  9. 請求項8に記載のコンピュータソフトウェアを記憶した記憶媒体。
JP2011120250A 2006-02-21 2011-05-30 データ処理 Active JP5746916B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0603446.6 2006-02-21
GB0603446A GB2435335A (en) 2006-02-21 2006-02-21 Multi-processor emulation by a multi-processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008555861A Division JP2009527836A (ja) 2006-02-21 2007-02-19 データ処理

Publications (2)

Publication Number Publication Date
JP2011227908A JP2011227908A (ja) 2011-11-10
JP5746916B2 true JP5746916B2 (ja) 2015-07-08

Family

ID=36178463

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008555861A Pending JP2009527836A (ja) 2006-02-21 2007-02-19 データ処理
JP2011120250A Active JP5746916B2 (ja) 2006-02-21 2011-05-30 データ処理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008555861A Pending JP2009527836A (ja) 2006-02-21 2007-02-19 データ処理

Country Status (5)

Country Link
US (1) US20090247249A1 (ja)
EP (1) EP1987426A1 (ja)
JP (2) JP2009527836A (ja)
GB (1) GB2435335A (ja)
WO (1) WO2007096602A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458754B2 (en) 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
US7813909B2 (en) 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US7792666B2 (en) 2006-05-03 2010-09-07 Sony Computer Entertainment Inc. Translation block invalidation prehints in emulation of a target system on a host system
US7770050B2 (en) 2006-05-03 2010-08-03 Sony Computer Entertainment Inc. Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US8060356B2 (en) 2007-12-19 2011-11-15 Sony Computer Entertainment Inc. Processor emulation using fragment level translation
JP5242628B2 (ja) * 2010-05-06 2013-07-24 株式会社スクウェア・エニックス ゲーム開発におけるプログラマーの生産性を向上させる高級言語
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing
US10554955B2 (en) * 2010-10-11 2020-02-04 Texas Instruments Incorporated Method and apparatus for depth-fill algorithm for low-complexity stereo vision
US10525347B2 (en) 2012-03-13 2020-01-07 Sony Interactive Entertainment America Llc System and method for capturing and sharing console gaming data
US9116555B2 (en) 2011-11-23 2015-08-25 Sony Computer Entertainment America Llc Gaming controller
US10960300B2 (en) 2011-11-23 2021-03-30 Sony Interactive Entertainment LLC Sharing user-initiated recorded gameplay with buffered gameplay
US10486064B2 (en) 2011-11-23 2019-11-26 Sony Interactive Entertainment America Llc Sharing buffered gameplay in response to an input request
CN114882149A (zh) 2022-03-31 2022-08-09 北京智明星通科技股份有限公司 动画渲染方法、装置、电子设备和存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03198161A (ja) * 1989-12-27 1991-08-29 Fujitsu Ltd 論理設計並列処理方式
JPH06202877A (ja) * 1992-12-28 1994-07-22 Fujitsu Ltd エミュレーション装置
US5701479A (en) * 1993-06-15 1997-12-23 Xerox Corporation Pipelined image processing system for a single application environment
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
JPH08263306A (ja) * 1995-03-10 1996-10-11 Xerox Corp パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法
US5966515A (en) * 1996-12-31 1999-10-12 Unisys Corporation Parallel emulation system and method
US6339752B1 (en) * 1998-12-15 2002-01-15 Bull Hn Information Systems Inc. Processor emulation instruction counter virtual memory address translation
US6978233B1 (en) * 2000-03-03 2005-12-20 Unisys Corporation Method for emulating multi-processor environment
JP3964142B2 (ja) * 2000-08-15 2007-08-22 株式会社ソニー・コンピュータエンタテインメント エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
US8149048B1 (en) * 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US6842728B2 (en) * 2001-03-12 2005-01-11 International Business Machines Corporation Time-multiplexing data between asynchronous clock domains within cycle simulation and emulation environments
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7472055B2 (en) * 2002-06-03 2008-12-30 Broadcom Corporation Method and system for deterministic control of an emulation
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US7614053B2 (en) * 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system

Also Published As

Publication number Publication date
US20090247249A1 (en) 2009-10-01
EP1987426A1 (en) 2008-11-05
JP2009527836A (ja) 2009-07-30
WO2007096602A1 (en) 2007-08-30
JP2011227908A (ja) 2011-11-10
GB2435335A (en) 2007-08-22
GB0603446D0 (en) 2006-04-05

Similar Documents

Publication Publication Date Title
JP5746916B2 (ja) データ処理
US8705845B2 (en) Entertainment device and method of interaction
JP5149985B2 (ja) 機能拡張型メモリコントローラを備えるグラフィックス処理システム
US9048859B2 (en) Method and apparatus for compressing and decompressing data
US8180295B2 (en) Bluetooth enabled computing system and associated methods
US7333114B2 (en) System and method for parallel execution of data generation tasks
EP2306399B1 (en) Image processing method, apparatus and system
JP2006520213A (ja) データ処理の制御
JP5570421B2 (ja) エンタテイメント装置及び方法
US8943130B2 (en) Method and apparatus for transferring material
US8269691B2 (en) Networked computer graphics rendering system with multiple displays for displaying multiple viewing frustums
US20100328354A1 (en) Networked Computer Graphics Rendering System with Multiple Displays
JP5345780B2 (ja) データ処理
JP2007512603A (ja) 画像描画
WO2010151511A1 (en) Networked computer graphics rendering system with multiple displays
GB2417846A (en) Rendering an image of a display object to generate a reflection of a captured video image
GB2470759A (en) Displaying videogame on 3D display by generating stereoscopic version of game without modifying source code
GB2465772A (en) Analysing memory accessed by an application
JP5142419B2 (ja) 共有リソースへのアクセス方法及び装置
WO2008035027A1 (en) Video game

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130927

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150511

R150 Certificate of patent or registration of utility model

Ref document number: 5746916

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250