(57)【特許請求の範囲】
【請求項１】
対象システムがホストシステムよりも遅く、前記対象システムのための１つまたは複数のエミュレートされたプログラムアセットが、前記ホストシステムの１つまたは複数のホスト出力と同期される、前記ホストシステム上での前記対象システムのためのプログラムの同期エミュレーションにおける、前記ホストシステム上でのエミュレートされたプログラムアセットの処理の選択的加速のための方法であって、前記方法が、
ａ）前記ホストシステム上で、前記同期されエミュレートされたプログラムアセットを処理することと、
ｂ）前記エミュレートされたプログラムアセットとホスト出力との間の同期の必要性の低下を検出することと、
ｃ）前記１つまたは複数のエミュレートされたプログラムアセット及び前記１つまたは複数のホスト出力の処理の同期をロック解除することと、
ｄ）同期がロック解除された、前記１つまたは複数のエミュレートされたプログラムアセットの前記ホストシステム上の処理を加速することと、
を含む、方法。
【請求項２】
ｅ）同期されたホスト出力の切迫した必要性を検出することと、
ｆ）エミュレートされたプログラムアセット及び前記ホスト出力の処理を再同期することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
ｄ）において、エミュレートされたプログラムアセットの前記加速された処理が、加速されたレートで、エミュレートされたプログラムアセットをネットワークを介して受信することをさらに含む、請求項２に記載の方法。
【請求項４】
エミュレートされたプログラムアセットを前記ネットワークを介して受信することが、同期をロック解除するために前記ネットワークを介して信号を送信することをさらに含み、ｆ）が、同期されたエミュレーションを再開するために前記ネットワークを介してフィードバックを送信することをさらに含む、請求項３に記載の方法。
【請求項５】
ｂ）において、エミュレートされたプログラムアセットを処理することと前記ホスト出力との同期の必要性の低下を検出することが、減少した映像出力を検出することを含む、請求項１に記載の方法。
【請求項６】
前記減少した映像出力が、ブランクまたはブラック画面である、請求項５に記載の方法。
【請求項７】
前記減少した映像出力が、静止画像である、請求項５に記載の方法。
【請求項８】
前記減少した映像出力が、プリロードされた映像シーケンスまたはループである、請求項５に記載の方法。
【請求項９】
ｃ）において同期をロック解除することが、映像成分に対してのみ実行され、ｄ）において処理を加速することが、映像成分に対してのみ実行される、請求項５に記載の方法。
【請求項１０】
ｂ）において、エミュレートされたプログラムアセットを処理することとホスト出力との同期の必要性の低下を検出することが、減少した音声出力を検出することを含む、請求項１に記載の方法。
【請求項１１】
減少した音声出力には、音声信号がない、請求項１０に記載の方法。
【請求項１２】
減少した音声出力が、閾値を下回る音声信号である、請求項１０に記載の方法。
【請求項１３】
減少した音声出力が、プリロードされた音声シーケンスまたはループである、請求項１０に記載の方法。
【請求項１４】
ｃ）において同期をロック解除することが、音声成分に対してのみ実行され、ｄ）において処理を加速することが、音声成分に対してのみ実行される、請求項１０に記載の方法。
【請求項１５】
ｂ）において、エミュレートされたプログラムアセットを処理することと前記ホスト出力との同期の必要性の低下を検出することが、プリロードされた音声成分及び映像成分を有するプリロードされたミニゲームを検出することを含む、請求項１に記載の方法。
【請求項１６】
ｅ）において、ホスト出力の切迫した必要性を検出することが、コントローラへの通信出力を検出することを含む、請求項２に記載の方法。
【請求項１７】
ｅ）において、ホスト出力の切迫した必要性を検出することが、ネットワーク上のサーバとの通信出力を検出することを含む、請求項２に記載の方法。
【請求項１８】
ｅ）において、ホスト出力の切迫した必要性を検出することが、表示デバイスとの通信出力を検出することを含む、請求項２に記載の方法。
【請求項１９】
ｅ）において、ホスト出力の切迫した必要性を検出することが、音声出力デバイスへの通信出力を検出することを含む、請求項２に記載の方法。
【請求項２０】
実行時に、ホストシステムの１つまたは複数のホスト出力に同期される、エミュレートされた１つまたは複数のプログラムアセットの処理の選択的加速のための方法を、コンピュータシステムに実施させる実行可能命令を含む非一時的コンピュータ可読媒体であって、前記方法が、
ａ）前記ホストシステム上で、前記同期されエミュレートされたプログラムアセットを処理することと、
ｂ）前記１つまたは複数のエミュレートされたプログラムアセットの処理の、ホスト出力との同期の必要性の低下を検出することと、
ｃ）前記１つまたは複数のエミュレートされたプログラムアセットと前記１つまたは複数のホスト出力との同期をロック解除することと、
ｄ）同期がロック解除された、前記１つまたは複数のプログラムアセットのうちのエミュレートされたプログラムアセットの前記ホストシステム上での処理を加速することと、
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権の主張］
本出願は、２０１７年５月２６日に出願された米国特許出願番号第１５／６０７，３０２号の優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、レガシープログラムのエミュレーションに関する。より詳細には、本開示は、プログラムのエミュレーション中の加速された処理に関する。
【背景技術】
【０００３】
対象システム（例えば、レガシーデバイス）用に書かれたプログラムの、ホストシステム（例えば、異なるシステム、またはより最新版の対象システム）上のエミュレーションでは、しばしば、対象システムがホストシステムよりも高性能でないことがある。対象システムの能力の低下は、より遅いクロック速度またはシステムコンポーネントの応答時間となって現れることがある。対象システム用に書かれたプログラムは、対象システムのより遅い速度に依存することがある。この依存関係に起因して、エミュレートされたプログラムは、ホストシステムの最大ケイパビリティを利用することが出来ない場合がある。
【０００４】
クラウドベースゲーミングシステムでは、処理の大部分が、クラウドベースサーバ上で行われる。これによって、クラウドベースサーバと通信しているクライアントデバイスプラットフォームは、クラウドベースゲームを処理するのにほとんどリソースを使用しないことが可能となる。現在の技術は、ゲームのロードをより高速にするためのインクリメンタルバッファリング、及びサーバとクライアントとの間の並列処理を実施する。しかしながら、この構成の結果として、クライアントデバイスとサーバとの間の通信は、同期されなければならない。クライアントデバイス及びサーバが同期されない場合、それは、異常な、または予期しないデバイスの挙動をもたらし得る。
【発明の概要】
【０００５】
レガシーゲームのクラウドベースエミュレーションでは、クライアントまたはホストデバイスは、レガシーゲームが動作するようにプログラムされた対象システムよりも、著しく高性能であることが多い。その結果、クライアントデバイスが、ゲームのエミュレーションのために処理を加速し得る場合、エミュレートされたゲームの実行に対する改良が実現され得る。したがって、当技術分野において、エミュレートされたゲームの処理を加速する方法に対する必要性が存在する。
【図面の簡単な説明】
【０００６】
本開示の態様は、添付図面と併せて以下の詳細な説明を考察することによって、容易に理解され得る。
【０００７】
【図１】本開示の態様による、エミュレーションの選択的加速の方法のフロー図である。
【図２】本開示の態様による、同期の必要性低下の検出、及び再同期の必要性の検出の方法を示すフロー図である。
【図３】本開示の態様による、ネットワーク上でのエミュレーションの選択的加速を示すフロー図である。
【図４】本開示の態様による、エミュレーションの選択的加速を実施するシステムのブロック図である。
【発明を実施するための形態】
【０００８】
序論
通常、対象システムの能力によって制約される、対象システム用に書かれたプログラムをエミュレートするとき、ホストシステムの出力は、対象システム上のプログラムアセットの処理速度と同期されなければならない。しかしながら、ホストシステム上での対象システム用プログラムアセットのエミュレーション中に、ホストシステムが対象システムの処理速度によって制約されなくてもよい時間が存在し得る。このウィンドウ内に、ホストシステムは、プログラムアセットの処理を加速し得る。同様に、ネットワークを介したエミュレーションは、ゲームが正しく動作するためにクライアントデバイス及びサーバが同期される必要性によって、制約されることがある。この同期の必要性は、ネットワークを介してエミュレートされたレガシーゲームを実行するときに、より高性能なクライアントデバイスが改良された性能を有することを妨げる。したがって、本開示の態様によれば、同期がゲームの性能に影響しないアプリケーション内の特定の時間において、エミュレートされたゲームの処理を加速することによって、ネットワークを介したゲームのエミュレーションの性能が、実現され得る。
【０００９】
以下の詳細な説明は、例示のための多数の具体的詳細を含むが、当業者であれば誰でも、以下の詳細に対する多数の変形及び変更が発明の範囲内にあると理解するであろう。したがって、以下に記載される発明の例示的実施形態は、特許請求された発明に対して一般性を失うことなく、かつ限定を与えることなく、明記される。
【００１０】
本開示の態様によれば、ホストシステムは、ホストシステム１００上の対象システム用に書かれたプログラムのエミュレーションを加速するための方式を実施し得る。ホストシステムは、結果となる出力（本明細書においてホスト出力と呼ばれる）を生成及び利用するために、ホストシステムによって処理され得るエミュレートされたプログラムアセットを生成することによって、エミュレーションプロセスを実行し得る。代替的には、ホストシステムが、プログラムアセットまたはホスト出力を生成し、それらを処理及び／または利用のためにネットワークを介してリモートシステムに送信し得る。エミュレーションを実施するホストシステムの場合、対象システムコードは、ホストシステムによって変換されてもよく、次いで、変換されたコードが実行されてもよい。実行中、ホストシステムは、ホストシステムの出力間で同期を維持するために、ホストシステムが命令を処理１０１する速度を低下させてもよい。例えば、プログラムの音声及び映像は、対象上で同期され得るが、そのプログラムがホストシステムの最高速度でエミュレートされるとき、ホストシステム上では音声が映像よりも早く進行し、元のプログラムがこの差を考慮するように設計されていなかったために、同期が失われることとなる。同様に、ホストシステムの最高速度でホストシステム上において動作するときに、ユーザが予期しないやり方でプログラムに挙動させる対象システムについて、プロセッサ速度がプログラム内の映像または音声の要素に依存することがある。これらの問題は全て、システムがエミュレーションを処理する速度を低下させない限り、ホストシステム上でのエミュレーションの品質を低下させる。したがって、エミュレーションの品質の損失を回避するために、ホストシステムは、エミュレートされた対象システムの速度で、エミュレートされたアセットの処理とホスト出力の生成とを同期させる。この妥協の結果として、ホストシステムは、より新しく、より高性能なデバイスであるにもかかわらず、対象システムプログラムを実行することにおいていかなる明白な改良も、エンドユーザに提供しない場合がある。
【００１１】
ホスト上で対象システムプログラムの改良された性能を実現するために、ホストシステムは、図１に示される処理の選択的加速のための方法を実施する。ホストシステムは、１０２において示されるように、対象システムのエミュレーションとの、エミュレートされたプログラムアセットの処理の同期の必要性が減少したときに検出し得る。エミュレーションの必要性の低下によって特徴づけられ得る、エミュレーション中のいくつかの状況が存在する。多くのそのような状況の共通特徴は、エミュレートされたプログラムアセットの処理とホスト出力の生成との間の同期のレベルの低下または完全な欠如によって、ユーザエクスペリエンスが影響を受けないか、または拡張すらされるということである。このような状況のいくつかの限定的でない実施例は、音声、映像、または触覚の出力が、エミュレーションの他の態様または互いに同期される必要がない状況を含む。
【００１２】
限定ではなく実施例として、ある実施態様において、１０２における、エミュレートされたプログラムアセットを処理することとホスト出力との同期の必要性の低下を検出することが、プリロードされた音声成分及び映像成分を有するプリロードされたミニゲームを検出することを含み得る。そのような検出は、ミニゲームのロードの加速をトリガするために使用されてもよい。例えば、ロード画面ミニゲーム（即ち、別のアプリケーションロード時にプレイ可能なミニゲーム）は、見えないアセット準備を示す一意に識別可能な挙動について、エミュレートされたプログラムメモリサブシステムをモニタリングすることによって、識別され得る。ロード画面ミニゲームに特有であり得る挙動の実施例は、大きなアセットを映像メモリ内に、映像サブシステムによる即時使用なしに、ロードすることである。そのような未使用割り当ての反復パターンは、バックグラウンドローディングが発生すること、及びユーザによって観測される挙動がミニゲームまたはアニメ化されたロード画面であることを強く示す。アセット割り当てサイズ、反復パターン、及び即時使用を判断するための発見的基準は、エミュレートされた対象アーキテクチャに従って変化し得る。
【００１３】
同期の必要性の低下が検出される場合に、ホストシステムは、１０３において示されるように、対象システムのエミュレーションとの同期をロック解除してもよく、１０４において示されるように、エミュレートされたプログラムアセットの処理を加速してもよい。
【００１４】
ホストシステムが同期をロック解除し得るかどうかを検出するために、ホストは、図２に示されるような出力検出プロセス２００を実施し得る。示される実施例において、出力検出プロセスは、音声２０２の検出と映像２０１の検出との間で分離され得る。
【００１５】
映像２０１の検出について、システムは、表示出力が、ブラックまたはブランクであるかどうかを最初に検出２０３し得る。代替的には、ホストシステムは、エミュレートされたプログラムが、画像を画面に出力するようにホストシステムに要求するかどうかを検出２０３する。画像出力が検出される場合、システムは、出力をモニタリングして、要求される出力が静止であるどうかを検出２０４し得る。例えば、ホストシステムは、特定の期間にわたる変化について映像出力をモニタリングしてもよく、変化が見つからない場合、ホストシステムは、画面が静止であると判断２０４する。代替的には、ホストシステムは、エミュレートされたプログラムが静止画面の出力を必要とするかどうかをモニタリング２０４し得る。静止画面が検出されない場合、ホストシステムは、エミュレートされたプログラムアセットをモニタリングして、映像出力が既にメモリにロードされているかどうかを判断２０５してもよい。映像出力がメモリ内にプリロードされていると、ホストシステムが検出する場合、ホストシステムは、映像の任意の追加処理が必要とされるかどうかをさらに判断してもよい。他の実施形態において、ホストシステムが、即時使用されない、システムまたはＧＰＵメモリへの反復した大量のメモリ割り当てを検出する場合、ホストシステムは、映像の処理を加速してもよい。プリロードされた映像は、即時使用される単一の、または反復するメモリ割り当てとして検出されてもよい。大量のメモリ割り当ては、システムにより自動的に、またはアプリケーションに依存してユーザによって定義され得ると理解されるべきである。即時使用についての閾値は、アプリケーション、システムアーキテクチャなどに依存して変化し得る。
【００１６】
上記ステップの間、ホストシステムが、表示出力２０３、または静止出力２０４、またはプリロードされた映像シーケンス２０５がないと判断する場合、システムは、映像アセットを処理することの同期をロック解除１０３する。映像アセットの同期は、音声と映像との間であってもよい。代替的には、同期は、エミュレートされた対象システムの処理クロック速度と映像アセットの処理との間であってもよい。例えば、エミュレートされたプログラムは、対象システムとは異なるクロック速度で処理されるときに、ユーザが知覚する望ましくない挙動を生成する、プロセッサのクロック速度依存のアセットを含んでもよい。限定ではなく実施例として、ユーザが知覚する望ましくない挙動は、ビデオゲームにおいて、キャラクタが、予想よりもかなり速く画面を横切って移動することであってもよい。別の実施形態において、同期は、ホストシステム上での映像アセットの処理と、リモートシステム上でネットワークを介して動作するエミュレータとの間であってもよい。言い換えると、ホストシステムは、ネットワークを介して動作するサーバから、エミュレートされたプログラムアセットを受信していてもよい。サーバは、ホストシステムに映像アセットを送信するとすぐに、映像アセット上のプロセスを実行し、結果を表示デバイスに出力してもよい。本開示の態様によれば、システムのユーザが、映像データの処理の加速に起因するプログラム挙動の変化を検出しない時間の間に、ホストシステムは、映像アセットの処理の同期をロック解除１０３する。限定ではなく実施例として、ホストシステムは、同期をロック解除１０３してもよく、エミュレートされた対象システムの速度よりも速いクロック速度で、エミュレートされた映像アセットを処理することによって、映像アセットの処理を加速１０４してもよい。別の実施形態において、ホストシステムは、同期をロック解除１０３してもよく、エミュレートされた音声アセットの再生レートよりも速いレートで、エミュレートされた映像アセットを処理することによって、処理を加速１０４してもよい。同様に、ホストシステムは、同期をロック解除１０３し、エミュレートされたアセットをネットワークを介して送信するリモートエミュレータよりも速いレートで、エミュレートされた映像アセットをホストシステム上で処理することによって、エミュレートされた映像アセットの処理を加速１０４し得る。
【００１７】
ホストシステムがプリロードされた映像シーケンスを検出しない場合、またはプリロードされた映像シーケンスに対してより多くの処理が必要とされる場合、エミュレートされた映像アセットの処理は、対象システム２０６のエミュレーションと同期されたままである。映像アセットについて論じられたが、用語は、映像に限定されず、本明細書で使用されるように、画面上に表示された画像だけでなく、画像レンダリング用のデータまたはシミュレーション用の物理学データなども指してもよい。
【００１８】
音声２０２の検出について、ホストシステムは、スピーカに出力される何らかの音が存在するかどうかを最初に検出２０７してもよい。代替的には、ホストシステムは、エミュレートされた音声アセットをモニタリングして、音声出力が必要であるかどうかを判断してもよい。音声出力が必要である場合、ホストシステムは、音声出力が閾値を下回るどうかを判断２０８してもよい。音声出力が閾値を下回らない場合、ホストシステムは、エミュレートされた音声アセットをモニタリングして、音声が既にメモリにロードされているかどうかを判断２０９してもよい。音声がプリロードされているとホストシステムが判断する場合、ホストシステムは、音声に対して何らかの処理が行われる必要があるかどうかを、さらに検出してもよい。他の実施形態において、ホストシステムが、即時使用されない、システムまたはＧＰＵメモリへの反復した大量のメモリ割り当てを検出する場合、ホストシステムは、音声の処理を加速してもよい。プリロードされた音声は、即時使用される単一の、または反復するメモリ割り当てとして検出されてもよい。大量のメモリ割り当ては、システムにより自動的に、またはアプリケーションに依存してユーザによって定義され得ると理解されるべきである。即時使用についての閾値は、アプリケーション、システムアーキテクチャなどに依存して変化し得る。
【００１９】
上記ステップの間、音声が全くない２０７か、または音声が閾値を下回る２０８か、または音声がメモリ内にプリロードされている２０９と判断される場合、ホストシステムは、音声アセットの処理をロック解除１０３する。映像に関して上述したように、音声処理は、映像のレートにロックされてもよい。映像と同様に、音声アセットは、エミュレートされた対象システムのクロック速度に依存してもよく、対象システムとは異なるクロック速度で処理されるときに、ユーザが知覚する望ましくない挙動をもたらし得る。限定ではなく実施例として、ユーザが知覚する望ましくない音声の挙動は、処理の加速に起因して、高いピッチで音楽が鳴ることであってもよい。別の実施形態において、同期は、ホストシステム上での音声アセットの処理と、リモートシステム上でネットワークを介して動作するエミュレータとの間であってもよい。言い換えると、ホストシステムは、ネットワークを介して動作するサーバから、エミュレートされた音声アセットを受信していてもよい。サーバが、ホストシステムに音声アセットを送信するとすぐに、ホストは、音声アセット上のプロセスを実行し、出力デバイス（例えば、スピーカ）に結果を出力してもよい。本開示の態様によれば、システムのユーザが、音声データの処理の加速に起因するプログラム挙動の変化を検出しない時間の間に、ホストシステムは、音声アセットの処理の同期をロック解除する。限定ではなく実施例として、ホストシステムは、同期をロック解除１０３してもよく、エミュレートされた対象システムの速度よりも速いクロック速度で、エミュレートされた音声アセットを処理することによって、音声アセットの処理を加速１０４してもよい。ホストシステムは、同期をロック解除１０３し、エミュレートされた映像アセットの処理よりも速いレートで、エミュレートされた音声アセットの処理を加速１０４してもよい。同様に、ホストシステムは、同期をロック解除１０３し、リモートエミュレータが対象システムをエミュレートし、エミュレートされたアセットをネットワークを介して送信するよりも速いレートで、音声アセットをホストシステム上で処理することによって、エミュレートされた音声アセットの処理を加速１０４し得る。
【００２０】
ホストシステムがプリロードされた音声を検出しない場合、またはプリロードされた音声２０６に対してより多くの処理が必要とされる場合、エミュレートされた音声アセットの処理は、対象システムのエミュレーションと同期１０１されたままである。音声アセットについて論じられたが、用語は、音声ファイルに限定されず、本明細書で使用されるように、音楽、文脈上の音、シミュレートされた環境内の対話からの音などを指してもよい。
【００２１】
本開示の態様によれば、ホストシステムが、処理を加速１０４している間、システムは、出力をモニタリング２１０して、処理を再同期１０５するかどうかを判断し得る。システムは、エミュレートされたプログラムアセットの処理をモニタリングして、エミュレートされたプログラムが外部デバイスに情報を出力することをシステムに要求するかどうかを判断２１１し得る。いくつかの実施形態において、エミュレートされたプログラムアセットの処理をモニタリングすることは、メモリ割り当てをモニタリングして、プリロードされた音声または映像の出力からの変化を検出するためにこれらのメモリブロックを使用するための大量のメモリブロックの割り当てからの変化を検出することを含み得る。限定ではなく実施例として、システムは、画面に送信される表示データの変化について、またはスピーカに送信される音データの変化について、またはコントローラに送信される色データ、またはネットワークを介して送信される通信データなどの他のデータの変化について、プログラムをモニタリングし得る。変化が全く検出されない場合、システムは、エミュレートされたプログラムアセット１０３の加速された処理を継続する。出力の変化が必要とされる場合、システムは、以前のレートでの処理に戻り、エミュレートされた対象システムと再同期１０５する。システムが一旦対象と再同期１０５すると、システムは、同期されたプログラムアセットの処理１０１に戻ってもよい。
【００２２】
本開示の態様によれば、同期のロック解除１０３は、映像及び音声の実施態様に限定されない。出力を検出する開示された方法２００、及び処理を加速する開示された方法１００は、例えば、ホストシステムに接続されたライトについての色情報、またはロボティックマニピュレータ制御情報などの、他の種類の出力に適用されてもよい。ロボディックマニピュレータ制御情報への実施態様の１つの可能な実施例は、対象システム命令が、旧式のロボティックデバイス用であり、ホストデバイスが、ある利点を提供できるか、または何らかの特定の機械的プロセスを完全に削除した場合である。そのような状況では、エミュレーションは、本明細書に記載された手法を用いて加速され得る。いくつかの状況において、そのような対象コード命令は、即座に削除されてもよい。さらに、命令が、スキップされず、旧式のロボット工学によって確立された実行確定レートに制限されなくてもよいように、本明細書に記載される技術は、対象命令が他の有意義な副作用を有する状況に適用されてもよい。
【００２３】
図３は、本開示の他の態様を示す。ホストシステム３０１は、ネットワークを介して動作するエミュレータ３０２と併せて、エミュレーションを加速する方法１００を実施し得る。リモートエミュレータ３０２の場合、ホストシステムは、エミュレートされたプログラムアセット３０３をリモートエミュレータ３０２から受信し、エミュレートされたプログラムアセットを即時に処理し、結果１０６を外部デバイス３０５に出力し得る。したがって、説明される構成において、ホストシステム３０１上でのエミュレートされたプログラムアセットの処理が、リモートエミュレータ３０２上での対象システムのエミュレーションと同期され得る。ホストシステム上でのエミュレートされたプログラムの動作の改良を実現するために、ホストシステム３０１は、プログラムアセットの加速されたストリーミング１０７を含む、エミュレーションの加速の方法１００を実施し得る。ホストシステム３０１は、エミュレートされたプログラムアセット１０１または１０４の処理についての情報を含む、フィードバック３０４をリモートエミュレータ３０２に提供し得る。したがって、エミュレータは、ホストシステム上でのエミュレートされたプログラムアセットの処理について通知されたままであってもよく、ホストシステムがエミュレータ３０２上での対象システムのエミュレーションと再同期１０４するときに、この情報を利用してもよい。
【００２４】
他の実施形態において、ホストシステム３０１が、エミュレートされたプログラムアセットの処理の同期をロック解除１０３し得ることを検出２００するときに、ホストシステムは、フィードバック３０４を通してリモートエミュレータに通知してもよい。これに応じて、リモートエミュレータは、エミュレートされたプログラムアセットがホストシステム１０７に送信３０７されるレートで加速し得る。加速したレートでホストシステム３０１に送信３０７されるエミュレートされたプログラムアセットは、さらなる処理のためのホストシステムのバッファを埋めてもよい。代替的には、加速されたレート１０７で送信３０７されたプログラムアセットは、ホストシステム３０１上で行われている加速された処理１０４に従って、即時に処理されてもよい。このプロセスの間、ホストシステムは、エミュレートされたプログラムアセットが多すぎてホストシステムに送信されず、バッファオーバフロー状態をもたらすことを確実にするように、リモートエミュレータ３０２にフィードバック３０４を送信し続けてもよい。同様に、ホストシステム３０１は、バッファアンダーフローまたはストーリングを防止するために、追加のエミュレートされたプログラムアセットが即時に必要とされることを示す、フィードバック３０４をリモートエミュレータ３０２に送信し得る。追加的に、フィードバック報告３０４は、エミュレートされたプログラムアセットの加速された処理中に、不正検出または他のレート依存プロセスを一時停止するために、リモートエミュレータに通知してもよい。
【００２５】
ホストシステム３０１が、エミュレートされたプログラムにより出力が必要であると判断すると、ホストシステム３０１は、エミュレータ上での対象システムのエミュレーションを、ホストシステム３０１上でのエミュレートされたアセットの処理と再同期１０５させるために、フィードバック３０４をリモートエミュレータ３０２に送信し得る。
【００２６】
図４に示されるブロック図は、概略的に、リモートエミュレーションの特定の状況内の本開示のある態様を示す。この実施例において、エミュレータ４０７は、ネットワーク４６０を介してホストシステム４０２によってアクセスされ得る。ホストシステム４０２は、ネットワーク４６０を介して代替リモートエミュレータ４０７（本明細書においてリモートエミュレータと呼ばれる）にアクセスし得る。エミュレータ４０７は、互いに同一であってもよく、または、それらは、一意のレガシーゲーム４０６を含む一意のレガシープログラム４０６をエミュレートするようにそれぞれがプログラムされてもよい。追加的には、エミュレータ４０７は、ホストシステム４０２内に含まれてもよく、内部システムバス４５０'を介してホストシステムと直接通信してもよい。
【００２７】
代替的には、対象システムのエミュレーションは、全体的にホストシステム４０２上で行われ得る。この場合、レガシープログラムは、ホストシステム４０２のメモリ４３６にロードされてもよく、ＣＰＵ４３１は、エミュレーションプログラム４３３を実行する。
【００２８】
ホストシステム４０２は、中央処理装置（ＣＰＵ）４３１を含み得る。実施例として、ＣＰＵ４３１は、１つまたは複数のプロセッサを含んでもよく、１つまたは複数のプロセッサが、例えば、デュアルコア、クアッドコア、マルチコア、またはセルプロセッサアーキテクチャに従って構成されてもよい。ホストシステム４０２は、メモリ４３２（例えば、ＲＡＭ、ＤＲＡＭ、ＲＯＭなど）も含んでもよい。ＣＰＵ４３１は、プロセス制御プログラム４３３を実行してもよく、プロセス制御プログラム４３３の一部が、メモリ４３２に記憶されてもよい。ホストシステム４０２は、入力／出力（Ｉ／Ｏ）回路４４１、電源（Ｐ／Ｓ）４４２、クロック（ＣＬＫ）４４３、及びキャッシュ４４４などの、周知の支援回路４４０も含んでもよい。ホストシステム４０２は、任意選択で、プログラム及び／またはデータを記憶するための、ディスクドライブ、ＣＤ−ＲＯＭドライブ、テープドライブなどの大容量記憶デバイス４３４を含んでもよい。ホストシステム４０２は、また、任意選択で、ホストシステム４０２とホストシステム４０２への直接アクセスを要求するユーザとの間の対話を容易にするために、表示ユニット４３７及びユーザインタフェースユニット４３８を含んでもよい。表示ユニット４３７は、文字、数字、またはグラフィカルシンボルを表示する陰極線管（ＣＲＴ）またはフラットパネルスクリーンの形式であってもよい。ユーザインタフェースユニット４３８は、キーボード、マウス、ジョイスティック、ライトペン、または他のデバイスを含んでもよい。コントローラ４４５は、Ｉ／Ｏ回路４４１を通してホストシステム４０２に接続されてもよく、または、ホストシステム４０２に直接統合されてもよい。コントローラ４４５は、ホストシステム４０２とユーザとの間の対話を容易にし得る。コントローラ４４５は、キーボード、マウス、ジョイスティック、ライトペン、手持ちコントローラ、または他のデバイスを含んでもよい。コントローラ４４５は、また、触覚レスポンス４４６を生成することが可能であってもよい。限定ではなく実施例として、触覚レスポンス４４６は、振動、または接触感覚に対応する任意の他のフィードバックであってもよい。ホストシステム４０２は、Ｗｉ−Ｆｉ（登録商標）、イーサネット（登録商標）ポート、または他の通信方法の使用を可能にするように構成される、ネットワークインタフェース４３９を含んでもよい。
【００２９】
ネットワークインタフェース４３９は、電子通信ネットワーク４６０を介した通信を容易にするために、適当なハードウェア、ソフトウェア、ファームウェア、またはこれらのうち２つ以上のある組み合わせを組み込み得る。ネットワークインタフェース４３９は、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークを介して有線または無線通信を実施するように構成され得る。ホストシステム４０２は、データ及び／またはファイルに対するリクエストを、ネットワーク４６０を介して１つまたは複数のデータパケットによって送信及び受信し得る。
【００３０】
前述のコンポーネントは、内部システムバス４５０を介して互いに信号を交換し得る。ホストシステム４０２は、本明細書に説明されるような本発明の実施形態を実施するコードを実行するときに専用コンピュータになる汎用コンピュータであってもよい。
【００３１】
エミュレータ４０７は、中央処理装置（ＣＰＵ）４３１'を含み得る。実施例として、ＣＰＵ４３１'は、１つまたは複数のプロセッサを含んでもよく、１つまたは複数のプロセッサは、例えば、デュアルコア、クアッドコア、マルチコア、またはセルプロセッサアーキテクチャに従って構成されてもよい。エミュレータ４０７は、メモリ４３２'（例えば、ＲＡＭ、ＤＲＡＭ、ＲＯＭなど）も含んでもよい。ＣＰＵ４３１'は、プロセス制御プログラム４３３'を実行してもよく、プロセス制御プログラム４３３'の一部が、メモリ４３２'に記憶されてもよい。エミュレータ４０７は、入力／出力（Ｉ／Ｏ）回路４４１'、電源（Ｐ／Ｓ）４４２'、クロック（ＣＬＫ）４４３'、及びキャッシュ４４４'などの、周知の支援回路４４０'も含んでもよい。エミュレータ４０７は、任意選択で、プログラム及び／またはデータを記憶するための、ディスクドライブ、ＣＤ−ＲＯＭドライブ、テープドライブなどの大容量記憶デバイス４３４'を含んでもよい。エミュレータ４０７は、また、任意選択で、エミュレータ４０７とエミュレータ４０７への直接アクセスを要求するユーザとの間の対話を容易にするために、表示デバイス４３７'及びユーザインタフェースユニット４３８'を含んでもよい。限定ではなく実施例として、ホストシステムまたはエンジニア４０２は、所望のレガシープログラム４０６を適切にエミュレートするように、または追加ケイパビリティをレガシープログラム４０６へ追加するように、エミュレータ４０７をプログラムするために、エミュレータ４０７への直接アクセスを必要とし得る。表示デバイス４３７'は、文字、数字、またはグラフィカルシンボルを表示する陰極線管（ＣＲＴ）またはフラットパネルスクリーンの形式であってもよい。ユーザインタフェースユニット４３８'は、キーボード、マウス、ジョイスティック、ライトペン、または他のデバイスを含んでもよい。エミュレータ４０７は、Ｗｉ−Ｆｉ（登録商標）、イーサネット（登録商標）ポート、または他の通信方法の使用を可能にするように構成される、ネットワークインタフェース４３９'を含んでもよい。
【００３２】
ネットワークインタフェース４３９'は、電子通信ネットワーク４６０を介した通信を容易にするために、適当なハードウェア、ソフトウェア、ファームウェア、またはこれらのうち２つ以上のある組み合わせを組み込み得る。ネットワークインタフェース４３９'は、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークを介して有線または無線通信を実施するように構成され得る。エミュレータ４０７は、データ及び／またはファイルに対するリクエストを、ネットワーク４６０を介して１つまたは複数のデータパケットによって送信及び受信し得る。
【００３３】
前述のコンポーネントは、内部システムバス４５０'を介して互いに信号を交換し得る。エミュレータ４０７は、本明細書に説明されるような本発明の実施形態を実施するコードを実行するときに専用コンピュータになる汎用コンピュータであってもよい。
【００３４】
エミュレータ４０７は、内部システムバス４５０'を通したエミュレーションのためにホストシステム４０２によって選択されているレガシープログラム４０６にアクセスし得る。エミュレータに記憶される１つより多くのレガシープログラム４０６が存在してもよい。レガシープログラムは、また、メモリ４３２'または大容量記憶デバイス４３４'に記憶されてもよい。追加的には、１つまたは複数のレガシープログラム４０６は、ネットワーク４６０を介してエミュレータ４０７にアクセス可能なリモート位置に記憶されてもよい。各レガシーゲーム４０６は、ゲームコード４０８を含む。レガシーゲーム１０６がエミュレートされるとき、ゲームコード４０８は、レガシーゲームデータ４０９を生成する。
【００３５】
実施例として、レガシープログラム４０６は、対象プラットフォームと互換性がない任意のプログラムであってもよい。限定ではなく実施例として、レガシープログラム４０６は、Ｓｏｎｙ  Ｃｏｍｐｕｔｅｒ  ＥｎｔｅｒｔａｉｎｍｅｎｔのＰｌａｙＳｔａｔｉｏｎコンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、家庭用コンピュータである。実施例として、レガシーゲーム４０６は、ＰｌａｙＳｔａｔｉｏｎ２コンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、ＰｌａｙＳｔａｔｉｏｎ３コンソールである。さらに、限定ではなく実施例として、レガシーゲーム４０６は、ＰｌａｙＳｔａｔｉｏｎコンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、Ｓｏｎｙ  Ｃｏｍｐｕｔｅｒ  ＥｎｔｅｒｔａｉｎｍｅｎｔからのＰｌａｙＳｔａｔｉｏｎ  Ｖｉｔａなどの手持ちコンソールである。
【００３６】
上記は、本発明の好適な実施形態の完全な説明であるが、多様な代替物、修正物、及び均等物を使用することが可能である。したがって、本発明の範囲は、上記説明を参照することなく判断されるべきであるが、その代わりに、添付の特許請求の範囲を、その均等物の全範囲とともに参照して判断されるべきである。本明細書で説明されたいかなる特徴も、好適か否かに関わらず、本明細書で説明されたいかなる他の特徴とも、好適か否かに関わらず組み合わされてもよい。以下の特許請求の範囲において、不定冠詞「Ａ」または「Ａｎ」は、そうでないと明示的に述べられている場合を除いて、冠詞に続く品目のうちの１つまたは複数の量をいう。添付の特許請求の範囲は、そのような限定が句「ｍｅａｎｓ  ｆｏｒ」を使用して所与の請求項において明示的に列挙されない限り、ミーンズプラスファンクション限定を含むものとして解釈されるべきでない。
【図１】
0006824446.tif 000002
【図２】
0006824446.tif 000003
【図３】
0006824446.tif 000004
【図４】
0006824446.tif 000005