(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-10
(45)【発行日】2022-01-13
(54)【発明の名称】エミュレーションの選択的加速
(51)【国際特許分類】
G06F 9/52 20060101AFI20220105BHJP
G06F 9/455 20060101ALI20220105BHJP
A63F 13/70 20140101ALI20220105BHJP
A63F 13/355 20140101ALI20220105BHJP
【FI】
G06F9/52 150Z
G06F9/455
A63F13/70
A63F13/355
(21)【出願番号】P 2021002726
(22)【出願日】2021-01-12
(62)【分割の表示】P 2019565381の分割
【原出願日】2018-04-24
【審査請求日】2021-01-20
(32)【優先日】2017-05-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】トルストフ、ドミトリ
(72)【発明者】
【氏名】ノートン、ジェフリー
(72)【発明者】
【氏名】風間 隆行
(72)【発明者】
【氏名】スタイン、ジェイコブ
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2016-73360(JP,A)
【文献】米国特許出願公開第2014/0094299(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
G06F 9/455
A63F 13/70
A63F 13/355
(57)【特許請求の範囲】
【請求項1】
対象システムがホストシステムよりも遅く、前記対象システムのための1つまたは複数のエミュレートされたプログラムアセットが、前記ホストシステムの1つまたは複数のホスト出力と同期される、前記ホストシステム上での前記対象システムのためのプログラムの同期エミュレーションにおける、前記ホストシステム上でのエミュレートされたプログラムアセットの処理の選択的加速のための方法であって、前記方法が、
a)前記対象システムのエミュレーションと同期されたレートでエミュレートされたプログラムアセットを前記ホストシステムに送信することと、
b)前記エミュレートされたプログラムアセットとホスト出力との間の同期の必要性の低下の指標を受信することと、
c)前記対象システムとの同期からロック解除された加速したレートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信することと、
を含む、方法。
【請求項2】
前記プログラムの同期エミュレーションを実装するリモートエミュレータは、前記対象システムのエミュレーションと同期された前記レートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信する、請求項1に記載の方法。
【請求項3】
前記プログラムの同期エミュレーションを実装するリモートエミュレータは、前記対象システムとの同期からロック解除された前記加速したレートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信する、請求項1に記載の方法。
【請求項4】
前記プログラムの同期エミュレーションを実装するリモートエミュレータは、前記対象システムのエミュレーションと同期された前記レートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信し、前記プログラムの同期エミュレーションを実装するリモートエミュレータは、前記対象システムとの同期からロック解除された前記加速したレートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信する、請求項1に記載の方法。
【請求項5】
前記プログラムの同期エミュレーションを実装するリモートエミュレータは、前記エミュレートされたプログラムアセットと前記ホストシステムからの前記ホスト出力との間の同期の必要性の低下の指標を受信する、請求項1に記載の方法。
【請求項6】
前記加速したレートで前記ホストシステムに送信される前記エミュレートされたプログラムアセットは、前記ホストシステムのバッファを埋める、請求項1に記載の方法。
【請求項7】
前記加速したレートで前記ホストシステムに送信される前記エミュレートされたプログラムアセットは、前記ホストシステムで行われている加速された処理に従って、即時に処理される、請求項1に記載の方法。
【請求項8】
前記ホストシステムは、エミュレートされたプログラムアセットが多すぎて前記ホストシステムに送信されず、バッファオーバフロー状態をもたらすことを確実にするように、前記プログラムの同期エミュレーションを実装するリモートエミュレータにフィードバックを送信する、請求項1に記載の方法。
【請求項9】
前記ホストシステムは、バッファアンダーフローまたはストーリングを防止するために、追加のエミュレートされたプログラムアセットが即時に必要とされることを示すフィードバックを、前記プログラムの同期エミュレーションを実装するリモートエミュレータに送信する、請求項1に記載の方法。
【請求項10】
前記ホストシステムは、前記プログラムの同期エミュレーションを実装するリモートエミュレータにフィードバックを送信し、エミュレートされたプログラムアセットの加速された処理中に、不正検出または他のレート依存プロセスを一時停止するために、前記リモートエミュレータに通知する、請求項1に記載の方法。
【請求項11】
対象システムがホストシステムよりも遅く、前記対象システムのための1つまたは複数のエミュレートされたプログラムアセットが、前記ホストシステムの1つまたは複数のホスト出力と同期される、前記ホストシステム上での前記対象システムのためのプログラムの同期エミュレーションにおける、前記ホストシステム上でのエミュレートされたプログラムアセットの処理の選択的加速のための方法を、実行時にコンピュータシステムに実施させる実行可能命令を含む非一時的コンピュータ可読媒体であって、前記方法が、
a)前記対象システムのエミュレーションと同期されたレートでエミュレートされたプログラムアセットを前記ホストシステムに送信することと、
b)前記エミュレートされたプログラムアセットとホスト出力との間の同期の必要性の低下の指標を受信することと、
c)前記対象システムとの同期からロック解除された加速したレートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信することと、
を含む、非一時的コンピュータ可読媒体。
【請求項12】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されたメモリであって、対象システムがホストシステムよりも遅く、前記対象システムのための1つまたは複数のエミュレートされたプログラムアセットが、前記ホストシステムの1つまたは複数のホスト出力と同期される、前記ホストシステム上での前記対象システムのためのプログラムの同期エミュレーションにおける、前記ホストシステム上でのエミュレートされたプログラムアセットの処理の選択的加速のための方法を、実行時に前記コンピュータシステムに実施させる実行可能命令を格納する前記メモリを含み、前記方法が、
a)前記対象システムのエミュレーションと同期されたレートでエミュレートされたプログラムアセットを前記ホストシステムに送信することと、
b)前記エミュレートされたプログラムアセットとホスト出力との間の同期の必要性の低下の指標を受信することと、
c)前記対象システムとの同期からロック解除された加速したレートで前記エミュレートされたプログラムアセットを前記ホストシステムに送信することと、
を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権の主張]
本出願は、2017年5月26日に出願された米国特許出願番号第15/607,302号の優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【0002】
本開示は、レガシープログラムのエミュレーションに関する。より詳細には、本開示は、プログラムのエミュレーション中の加速された処理に関する。
【背景技術】
【0003】
対象システム(例えば、レガシーデバイス)用に書かれたプログラムの、ホストシステム(例えば、異なるシステム、またはより最新版の対象システム)上のエミュレーションでは、しばしば、対象システムがホストシステムよりも高性能でないことがある。対象システムの能力の低下は、より遅いクロック速度またはシステムコンポーネントの応答時間となって現れることがある。対象システム用に書かれたプログラムは、対象システムのより遅い速度に依存することがある。この依存関係に起因して、エミュレートされたプログラムは、ホストシステムの最大ケイパビリティを利用することが出来ない場合がある。
【0004】
クラウドベースゲーミングシステムでは、処理の大部分が、クラウドベースサーバ上で行われる。これによって、クラウドベースサーバと通信しているクライアントデバイスプラットフォームは、クラウドベースゲームを処理するのにほとんどリソースを使用しないことが可能となる。現在の技術は、ゲームのロードをより高速にするためのインクリメンタルバッファリング、及びサーバとクライアントとの間の並列処理を実施する。しかしながら、この構成の結果として、クライアントデバイスとサーバとの間の通信は、同期されなければならない。クライアントデバイス及びサーバが同期されない場合、それは、異常な、または予期しないデバイスの挙動をもたらし得る。
【発明の概要】
【0005】
レガシーゲームのクラウドベースエミュレーションでは、クライアントまたはホストデバイスは、レガシーゲームが動作するようにプログラムされた対象システムよりも、著しく高性能であることが多い。その結果、クライアントデバイスが、ゲームのエミュレーションのために処理を加速し得る場合、エミュレートされたゲームの実行に対する改良が実現され得る。したがって、当技術分野において、エミュレートされたゲームの処理を加速する方法に対する必要性が存在する。
【図面の簡単な説明】
【0006】
本開示の態様は、添付図面と併せて以下の詳細な説明を考察することによって、容易に理解され得る。
【0007】
【
図1】本開示の態様による、エミュレーションの選択的加速の方法のフロー図である。
【
図2】本開示の態様による、同期の必要性低下の検出、及び再同期の必要性の検出の方法を示すフロー図である。
【
図3】本開示の態様による、ネットワーク上でのエミュレーションの選択的加速を示すフロー図である。
【
図4】本開示の態様による、エミュレーションの選択的加速を実施するシステムのブロック図である。
【発明を実施するための形態】
【0008】
序論
通常、対象システムの能力によって制約される、対象システム用に書かれたプログラムをエミュレートするとき、ホストシステムの出力は、対象システム上のプログラムアセットの処理速度と同期されなければならない。しかしながら、ホストシステム上での対象システム用プログラムアセットのエミュレーション中に、ホストシステムが対象システムの処理速度によって制約されなくてもよい時間が存在し得る。このウィンドウ内に、ホストシステムは、プログラムアセットの処理を加速し得る。同様に、ネットワークを介したエミュレーションは、ゲームが正しく動作するためにクライアントデバイス及びサーバが同期される必要性によって、制約されることがある。この同期の必要性は、ネットワークを介してエミュレートされたレガシーゲームを実行するときに、より高性能なクライアントデバイスが改良された性能を有することを妨げる。したがって、本開示の態様によれば、同期がゲームの性能に影響しないアプリケーション内の特定の時間において、エミュレートされたゲームの処理を加速することによって、ネットワークを介したゲームのエミュレーションの性能が、実現され得る。
【0009】
以下の詳細な説明は、例示のための多数の具体的詳細を含むが、当業者であれば誰でも、以下の詳細に対する多数の変形及び変更が発明の範囲内にあると理解するであろう。したがって、以下に記載される発明の例示的実施形態は、特許請求された発明に対して一般性を失うことなく、かつ限定を与えることなく、明記される。
【0010】
本開示の態様によれば、ホストシステムは、ホストシステム100上の対象システム用に書かれたプログラムのエミュレーションを加速するための方式を実施し得る。ホストシステムは、結果となる出力(本明細書においてホスト出力と呼ばれる)を生成及び利用するために、ホストシステムによって処理され得るエミュレートされたプログラムアセットを生成することによって、エミュレーションプロセスを実行し得る。代替的には、ホストシステムが、プログラムアセットまたはホスト出力を生成し、それらを処理及び/または利用のためにネットワークを介してリモートシステムに送信し得る。エミュレーションを実施するホストシステムの場合、対象システムコードは、ホストシステムによって変換されてもよく、次いで、変換されたコードが実行されてもよい。実行中、ホストシステムは、ホストシステムの出力間で同期を維持するために、ホストシステムが命令を処理101する速度を低下させてもよい。例えば、プログラムの音声及び映像は、対象上で同期され得るが、そのプログラムがホストシステムの最高速度でエミュレートされるとき、ホストシステム上では音声が映像よりも早く進行し、元のプログラムがこの差を考慮するように設計されていなかったために、同期が失われることとなる。同様に、ホストシステムの最高速度でホストシステム上において動作するときに、ユーザが予期しないやり方でプログラムに挙動させる対象システムについて、プロセッサ速度がプログラム内の映像または音声の要素に依存することがある。これらの問題は全て、システムがエミュレーションを処理する速度を低下させない限り、ホストシステム上でのエミュレーションの品質を低下させる。したがって、エミュレーションの品質の損失を回避するために、ホストシステムは、エミュレートされた対象システムの速度で、エミュレートされたアセットの処理とホスト出力の生成とを同期させる。この妥協の結果として、ホストシステムは、より新しく、より高性能なデバイスであるにもかかわらず、対象システムプログラムを実行することにおいていかなる明白な改良も、エンドユーザに提供しない場合がある。
【0011】
ホスト上で対象システムプログラムの改良された性能を実現するために、ホストシステムは、
図1に示される処理の選択的加速のための方法を実施する。ホストシステムは、102において示されるように、対象システムのエミュレーションとの、エミュレートされたプログラムアセットの処理の同期の必要性が減少したときに検出し得る。エミュレーションの必要性の低下によって特徴づけられ得る、エミュレーション中のいくつかの状況が存在する。多くのそのような状況の共通特徴は、エミュレートされたプログラムアセットの処理とホスト出力の生成との間の同期のレベルの低下または完全な欠如によって、ユーザエクスペリエンスが影響を受けないか、または拡張すらされるということである。このような状況のいくつかの限定的でない実施例は、音声、映像、または触覚の出力が、エミュレーションの他の態様または互いに同期される必要がない状況を含む。
【0012】
限定ではなく実施例として、ある実施態様において、102における、エミュレートされたプログラムアセットを処理することとホスト出力との同期の必要性の低下を検出することが、プリロードされた音声成分及び映像成分を有するプリロードされたミニゲームを検出することを含み得る。そのような検出は、ミニゲームのロードの加速をトリガするために使用されてもよい。例えば、ロード画面ミニゲーム(即ち、別のアプリケーションロード時にプレイ可能なミニゲーム)は、見えないアセット準備を示す一意に識別可能な挙動について、エミュレートされたプログラムメモリサブシステムをモニタリングすることによって、識別され得る。ロード画面ミニゲームに特有であり得る挙動の実施例は、大きなアセットを映像メモリ内に、映像サブシステムによる即時使用なしに、ロードすることである。そのような未使用割り当ての反復パターンは、バックグラウンドローディングが発生すること、及びユーザによって観測される挙動がミニゲームまたはアニメ化されたロード画面であることを強く示す。アセット割り当てサイズ、反復パターン、及び即時使用を判断するための発見的基準は、エミュレートされた対象アーキテクチャに従って変化し得る。
【0013】
同期の必要性の低下が検出される場合に、ホストシステムは、103において示されるように、対象システムのエミュレーションとの同期をロック解除してもよく、104において示されるように、エミュレートされたプログラムアセットの処理を加速してもよい。
【0014】
ホストシステムが同期をロック解除し得るかどうかを検出するために、ホストは、
図2に示されるような出力検出プロセス200を実施し得る。示される実施例において、出力検出プロセスは、音声202の検出と映像201の検出との間で分離され得る。
【0015】
映像201の検出について、システムは、表示出力が、ブラックまたはブランクであるかどうかを最初に検出203し得る。代替的には、ホストシステムは、エミュレートされたプログラムが、画像を画面に出力するようにホストシステムに要求するかどうかを検出203する。画像出力が検出される場合、システムは、出力をモニタリングして、要求される出力が静止であるどうかを検出204し得る。例えば、ホストシステムは、特定の期間にわたる変化について映像出力をモニタリングしてもよく、変化が見つからない場合、ホストシステムは、画面が静止であると判断204する。代替的には、ホストシステムは、エミュレートされたプログラムが静止画面の出力を必要とするかどうかをモニタリング204し得る。静止画面が検出されない場合、ホストシステムは、エミュレートされたプログラムアセットをモニタリングして、映像出力が既にメモリにロードされているかどうかを判断205してもよい。映像出力がメモリ内にプリロードされていると、ホストシステムが検出する場合、ホストシステムは、映像の任意の追加処理が必要とされるかどうかをさらに判断してもよい。他の実施形態において、ホストシステムが、即時使用されない、システムまたはGPUメモリへの反復した大量のメモリ割り当てを検出する場合、ホストシステムは、映像の処理を加速してもよい。プリロードされた映像は、即時使用される単一の、または反復するメモリ割り当てとして検出されてもよい。大量のメモリ割り当ては、システムにより自動的に、またはアプリケーションに依存してユーザによって定義され得ると理解されるべきである。即時使用についての閾値は、アプリケーション、システムアーキテクチャなどに依存して変化し得る。
【0016】
上記ステップの間、ホストシステムが、表示出力203、または静止出力204、またはプリロードされた映像シーケンス205がないと判断する場合、システムは、映像アセットを処理することの同期をロック解除103する。映像アセットの同期は、音声と映像との間であってもよい。代替的には、同期は、エミュレートされた対象システムの処理クロック速度と映像アセットの処理との間であってもよい。例えば、エミュレートされたプログラムは、対象システムとは異なるクロック速度で処理されるときに、ユーザが知覚する望ましくない挙動を生成する、プロセッサのクロック速度依存のアセットを含んでもよい。限定ではなく実施例として、ユーザが知覚する望ましくない挙動は、ビデオゲームにおいて、キャラクタが、予想よりもかなり速く画面を横切って移動することであってもよい。別の実施形態において、同期は、ホストシステム上での映像アセットの処理と、リモートシステム上でネットワークを介して動作するエミュレータとの間であってもよい。言い換えると、ホストシステムは、ネットワークを介して動作するサーバから、エミュレートされたプログラムアセットを受信していてもよい。サーバは、ホストシステムに映像アセットを送信するとすぐに、映像アセット上のプロセスを実行し、結果を表示デバイスに出力してもよい。本開示の態様によれば、システムのユーザが、映像データの処理の加速に起因するプログラム挙動の変化を検出しない時間の間に、ホストシステムは、映像アセットの処理の同期をロック解除103する。限定ではなく実施例として、ホストシステムは、同期をロック解除103してもよく、エミュレートされた対象システムの速度よりも速いクロック速度で、エミュレートされた映像アセットを処理することによって、映像アセットの処理を加速104してもよい。別の実施形態において、ホストシステムは、同期をロック解除103してもよく、エミュレートされた音声アセットの再生レートよりも速いレートで、エミュレートされた映像アセットを処理することによって、処理を加速104してもよい。同様に、ホストシステムは、同期をロック解除103し、エミュレートされたアセットをネットワークを介して送信するリモートエミュレータよりも速いレートで、エミュレートされた映像アセットをホストシステム上で処理することによって、エミュレートされた映像アセットの処理を加速104し得る。
【0017】
ホストシステムがプリロードされた映像シーケンスを検出しない場合、またはプリロードされた映像シーケンスに対してより多くの処理が必要とされる場合、エミュレートされた映像アセットの処理は、対象システム206のエミュレーションと同期されたままである。映像アセットについて論じられたが、用語は、映像に限定されず、本明細書で使用されるように、画面上に表示された画像だけでなく、画像レンダリング用のデータまたはシミュレーション用の物理学データなども指してもよい。
【0018】
音声202の検出について、ホストシステムは、スピーカに出力される何らかの音が存在するかどうかを最初に検出207してもよい。代替的には、ホストシステムは、エミュレートされた音声アセットをモニタリングして、音声出力が必要であるかどうかを判断してもよい。音声出力が必要である場合、ホストシステムは、音声出力が閾値を下回るどうかを判断208してもよい。音声出力が閾値を下回らない場合、ホストシステムは、エミュレートされた音声アセットをモニタリングして、音声が既にメモリにロードされているかどうかを判断209してもよい。音声がプリロードされているとホストシステムが判断する場合、ホストシステムは、音声に対して何らかの処理が行われる必要があるかどうかを、さらに検出してもよい。他の実施形態において、ホストシステムが、即時使用されない、システムまたはGPUメモリへの反復した大量のメモリ割り当てを検出する場合、ホストシステムは、音声の処理を加速してもよい。プリロードされた音声は、即時使用される単一の、または反復するメモリ割り当てとして検出されてもよい。大量のメモリ割り当ては、システムにより自動的に、またはアプリケーションに依存してユーザによって定義され得ると理解されるべきである。即時使用についての閾値は、アプリケーション、システムアーキテクチャなどに依存して変化し得る。
【0019】
上記ステップの間、音声が全くない207か、または音声が閾値を下回る208か、または音声がメモリ内にプリロードされている209と判断される場合、ホストシステムは、音声アセットの処理をロック解除103する。映像に関して上述したように、音声処理は、映像のレートにロックされてもよい。映像と同様に、音声アセットは、エミュレートされた対象システムのクロック速度に依存してもよく、対象システムとは異なるクロック速度で処理されるときに、ユーザが知覚する望ましくない挙動をもたらし得る。限定ではなく実施例として、ユーザが知覚する望ましくない音声の挙動は、処理の加速に起因して、高いピッチで音楽が鳴ることであってもよい。別の実施形態において、同期は、ホストシステム上での音声アセットの処理と、リモートシステム上でネットワークを介して動作するエミュレータとの間であってもよい。言い換えると、ホストシステムは、ネットワークを介して動作するサーバから、エミュレートされた音声アセットを受信していてもよい。サーバが、ホストシステムに音声アセットを送信するとすぐに、ホストは、音声アセット上のプロセスを実行し、出力デバイス(例えば、スピーカ)に結果を出力してもよい。本開示の態様によれば、システムのユーザが、音声データの処理の加速に起因するプログラム挙動の変化を検出しない時間の間に、ホストシステムは、音声アセットの処理の同期をロック解除する。限定ではなく実施例として、ホストシステムは、同期をロック解除103してもよく、エミュレートされた対象システムの速度よりも速いクロック速度で、エミュレートされた音声アセットを処理することによって、音声アセットの処理を加速104してもよい。ホストシステムは、同期をロック解除103し、エミュレートされた映像アセットの処理よりも速いレートで、エミュレートされた音声アセットの処理を加速104してもよい。同様に、ホストシステムは、同期をロック解除103し、リモートエミュレータが対象システムをエミュレートし、エミュレートされたアセットをネットワークを介して送信するよりも速いレートで、音声アセットをホストシステム上で処理することによって、エミュレートされた音声アセットの処理を加速104し得る。
【0020】
ホストシステムがプリロードされた音声を検出しない場合、またはプリロードされた音声206に対してより多くの処理が必要とされる場合、エミュレートされた音声アセットの処理は、対象システムのエミュレーションと同期101されたままである。音声アセットについて論じられたが、用語は、音声ファイルに限定されず、本明細書で使用されるように、音楽、文脈上の音、シミュレートされた環境内の対話からの音などを指してもよい。
【0021】
本開示の態様によれば、ホストシステムが、処理を加速104している間、システムは、出力をモニタリング210して、処理を再同期105するかどうかを判断し得る。システムは、エミュレートされたプログラムアセットの処理をモニタリングして、エミュレートされたプログラムが外部デバイスに情報を出力することをシステムに要求するかどうかを判断211し得る。いくつかの実施形態において、エミュレートされたプログラムアセットの処理をモニタリングすることは、メモリ割り当てをモニタリングして、プリロードされた音声または映像の出力からの変化を検出するためにこれらのメモリブロックを使用するための大量のメモリブロックの割り当てからの変化を検出することを含み得る。限定ではなく実施例として、システムは、画面に送信される表示データの変化について、またはスピーカに送信される音データの変化について、またはコントローラに送信される色データ、またはネットワークを介して送信される通信データなどの他のデータの変化について、プログラムをモニタリングし得る。変化が全く検出されない場合、システムは、エミュレートされたプログラムアセット103の加速された処理を継続する。出力の変化が必要とされる場合、システムは、以前のレートでの処理に戻り、エミュレートされた対象システムと再同期105する。システムが一旦対象と再同期105すると、システムは、同期されたプログラムアセットの処理101に戻ってもよい。
【0022】
本開示の態様によれば、同期のロック解除103は、映像及び音声の実施態様に限定されない。出力を検出する開示された方法200、及び処理を加速する開示された方法100は、例えば、ホストシステムに接続されたライトについての色情報、またはロボティックマニピュレータ制御情報などの、他の種類の出力に適用されてもよい。ロボディックマニピュレータ制御情報への実施態様の1つの可能な実施例は、対象システム命令が、旧式のロボティックデバイス用であり、ホストデバイスが、ある利点を提供できるか、または何らかの特定の機械的プロセスを完全に削除した場合である。そのような状況では、エミュレーションは、本明細書に記載された手法を用いて加速され得る。いくつかの状況において、そのような対象コード命令は、即座に削除されてもよい。さらに、命令が、スキップされず、旧式のロボット工学によって確立された実行確定レートに制限されなくてもよいように、本明細書に記載される技術は、対象命令が他の有意義な副作用を有する状況に適用されてもよい。
【0023】
図3は、本開示の他の態様を示す。ホストシステム301は、ネットワークを介して動作するエミュレータ302と併せて、エミュレーションを加速する方法100を実施し得る。リモートエミュレータ302の場合、ホストシステムは、エミュレートされたプログラムアセット303をリモートエミュレータ302から受信し、エミュレートされたプログラムアセットを即時に処理し、結果106を外部デバイス305に出力し得る。したがって、説明される構成において、ホストシステム301上でのエミュレートされたプログラムアセットの処理が、リモートエミュレータ302上での対象システムのエミュレーションと同期され得る。ホストシステム上でのエミュレートされたプログラムの動作の改良を実現するために、ホストシステム301は、プログラムアセットの加速されたストリーミング107を含む、エミュレーションの加速の方法100を実施し得る。ホストシステム301は、エミュレートされたプログラムアセット101または104の処理についての情報を含む、フィードバック304をリモートエミュレータ302に提供し得る。したがって、エミュレータは、ホストシステム上でのエミュレートされたプログラムアセットの処理について通知されたままであってもよく、ホストシステムがエミュレータ302上での対象システムのエミュレーションと再同期104するときに、この情報を利用してもよい。
【0024】
他の実施形態において、ホストシステム301が、エミュレートされたプログラムアセットの処理の同期をロック解除103し得ることを検出200するときに、ホストシステムは、フィードバック304を通してリモートエミュレータに通知してもよい。これに応じて、リモートエミュレータは、エミュレートされたプログラムアセットがホストシステム107に送信307されるレートで加速し得る。加速したレートでホストシステム301に送信307されるエミュレートされたプログラムアセットは、さらなる処理のためのホストシステムのバッファを埋めてもよい。代替的には、加速されたレート107で送信307されたプログラムアセットは、ホストシステム301上で行われている加速された処理104に従って、即時に処理されてもよい。このプロセスの間、ホストシステムは、エミュレートされたプログラムアセットが多すぎてホストシステムに送信されず、バッファオーバフロー状態をもたらすことを確実にするように、リモートエミュレータ302にフィードバック304を送信し続けてもよい。同様に、ホストシステム301は、バッファアンダーフローまたはストーリングを防止するために、追加のエミュレートされたプログラムアセットが即時に必要とされることを示す、フィードバック304をリモートエミュレータ302に送信し得る。追加的に、フィードバック報告304は、エミュレートされたプログラムアセットの加速された処理中に、不正検出または他のレート依存プロセスを一時停止するために、リモートエミュレータに通知してもよい。
【0025】
ホストシステム301が、エミュレートされたプログラムにより出力が必要であると判断すると、ホストシステム301は、エミュレータ上での対象システムのエミュレーションを、ホストシステム301上でのエミュレートされたアセットの処理と再同期105させるために、フィードバック304をリモートエミュレータ302に送信し得る。
【0026】
図4に示されるブロック図は、概略的に、リモートエミュレーションの特定の状況内の本開示のある態様を示す。この実施例において、エミュレータ407は、ネットワーク460を介してホストシステム402によってアクセスされ得る。ホストシステム402は、ネットワーク460を介して代替リモートエミュレータ407(本明細書においてリモートエミュレータと呼ばれる)にアクセスし得る。エミュレータ407は、互いに同一であってもよく、または、それらは、一意のレガシーゲーム406を含む一意のレガシープログラム406をエミュレートするようにそれぞれがプログラムされてもよい。追加的には、エミュレータ407は、ホストシステム402内に含まれてもよく、内部システムバス450'を介してホストシステムと直接通信してもよい。
【0027】
代替的には、対象システムのエミュレーションは、全体的にホストシステム402上で行われ得る。この場合、レガシープログラムは、ホストシステム402のメモリ436にロードされてもよく、CPU431は、エミュレーションプログラム433を実行する。
【0028】
ホストシステム402は、中央処理装置(CPU)431を含み得る。実施例として、CPU431は、1つまたは複数のプロセッサを含んでもよく、1つまたは複数のプロセッサが、例えば、デュアルコア、クアッドコア、マルチコア、またはセルプロセッサアーキテクチャに従って構成されてもよい。ホストシステム402は、メモリ432(例えば、RAM、DRAM、ROMなど)も含んでもよい。CPU431は、プロセス制御プログラム433を実行してもよく、プロセス制御プログラム433の一部が、メモリ432に記憶されてもよい。ホストシステム402は、入力/出力(I/O)回路441、電源(P/S)442、クロック(CLK)443、及びキャッシュ444などの、周知の支援回路440も含んでもよい。ホストシステム402は、任意選択で、プログラム及び/またはデータを記憶するための、ディスクドライブ、CD-ROMドライブ、テープドライブなどの大容量記憶デバイス434を含んでもよい。ホストシステム402は、また、任意選択で、ホストシステム402とホストシステム402への直接アクセスを要求するユーザとの間の対話を容易にするために、表示ユニット437及びユーザインタフェースユニット438を含んでもよい。表示ユニット437は、文字、数字、またはグラフィカルシンボルを表示する陰極線管(CRT)またはフラットパネルスクリーンの形式であってもよい。ユーザインタフェースユニット438は、キーボード、マウス、ジョイスティック、ライトペン、または他のデバイスを含んでもよい。コントローラ445は、I/O回路441を通してホストシステム402に接続されてもよく、または、ホストシステム402に直接統合されてもよい。コントローラ445は、ホストシステム402とユーザとの間の対話を容易にし得る。コントローラ445は、キーボード、マウス、ジョイスティック、ライトペン、手持ちコントローラ、または他のデバイスを含んでもよい。コントローラ445は、また、触覚レスポンス446を生成することが可能であってもよい。限定ではなく実施例として、触覚レスポンス446は、振動、または接触感覚に対応する任意の他のフィードバックであってもよい。ホストシステム402は、Wi-Fi(登録商標)、イーサネット(登録商標)ポート、または他の通信方法の使用を可能にするように構成される、ネットワークインタフェース439を含んでもよい。
【0029】
ネットワークインタフェース439は、電子通信ネットワーク460を介した通信を容易にするために、適当なハードウェア、ソフトウェア、ファームウェア、またはこれらのうち2つ以上のある組み合わせを組み込み得る。ネットワークインタフェース439は、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークを介して有線または無線通信を実施するように構成され得る。ホストシステム402は、データ及び/またはファイルに対するリクエストを、ネットワーク460を介して1つまたは複数のデータパケットによって送信及び受信し得る。
【0030】
前述のコンポーネントは、内部システムバス450を介して互いに信号を交換し得る。ホストシステム402は、本明細書に説明されるような本発明の実施形態を実施するコードを実行するときに専用コンピュータになる汎用コンピュータであってもよい。
【0031】
エミュレータ407は、中央処理装置(CPU)431'を含み得る。実施例として、CPU431'は、1つまたは複数のプロセッサを含んでもよく、1つまたは複数のプロセッサは、例えば、デュアルコア、クアッドコア、マルチコア、またはセルプロセッサアーキテクチャに従って構成されてもよい。エミュレータ407は、メモリ432'(例えば、RAM、DRAM、ROMなど)も含んでもよい。CPU431'は、プロセス制御プログラム433'を実行してもよく、プロセス制御プログラム433'の一部が、メモリ432'に記憶されてもよい。エミュレータ407は、入力/出力(I/O)回路441'、電源(P/S)442'、クロック(CLK)443'、及びキャッシュ444'などの、周知の支援回路440'も含んでもよい。エミュレータ407は、任意選択で、プログラム及び/またはデータを記憶するための、ディスクドライブ、CD-ROMドライブ、テープドライブなどの大容量記憶デバイス434'を含んでもよい。エミュレータ407は、また、任意選択で、エミュレータ407とエミュレータ407への直接アクセスを要求するユーザとの間の対話を容易にするために、表示デバイス437'及びユーザインタフェースユニット438'を含んでもよい。限定ではなく実施例として、ホストシステムまたはエンジニア402は、所望のレガシープログラム406を適切にエミュレートするように、または追加ケイパビリティをレガシープログラム406へ追加するように、エミュレータ407をプログラムするために、エミュレータ407への直接アクセスを必要とし得る。表示デバイス437'は、文字、数字、またはグラフィカルシンボルを表示する陰極線管(CRT)またはフラットパネルスクリーンの形式であってもよい。ユーザインタフェースユニット438'は、キーボード、マウス、ジョイスティック、ライトペン、または他のデバイスを含んでもよい。エミュレータ407は、Wi-Fi(登録商標)、イーサネット(登録商標)ポート、または他の通信方法の使用を可能にするように構成される、ネットワークインタフェース439'を含んでもよい。
【0032】
ネットワークインタフェース439'は、電子通信ネットワーク460を介した通信を容易にするために、適当なハードウェア、ソフトウェア、ファームウェア、またはこれらのうち2つ以上のある組み合わせを組み込み得る。ネットワークインタフェース439'は、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークを介して有線または無線通信を実施するように構成され得る。エミュレータ407は、データ及び/またはファイルに対するリクエストを、ネットワーク460を介して1つまたは複数のデータパケットによって送信及び受信し得る。
【0033】
前述のコンポーネントは、内部システムバス450'を介して互いに信号を交換し得る。エミュレータ407は、本明細書に説明されるような本発明の実施形態を実施するコードを実行するときに専用コンピュータになる汎用コンピュータであってもよい。
【0034】
エミュレータ407は、内部システムバス450'を通したエミュレーションのためにホストシステム402によって選択されているレガシープログラム406にアクセスし得る。エミュレータに記憶される1つより多くのレガシープログラム406が存在してもよい。レガシープログラムは、また、メモリ432'または大容量記憶デバイス434'に記憶されてもよい。追加的には、1つまたは複数のレガシープログラム406は、ネットワーク460を介してエミュレータ407にアクセス可能なリモート位置に記憶されてもよい。各レガシーゲーム406は、ゲームコード408を含む。レガシーゲーム106がエミュレートされるとき、ゲームコード408は、レガシーゲームデータ409を生成する。
【0035】
実施例として、レガシープログラム406は、対象プラットフォームと互換性がない任意のプログラムであってもよい。限定ではなく実施例として、レガシープログラム406は、Sony Computer EntertainmentのPlayStationコンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、家庭用コンピュータである。実施例として、レガシーゲーム406は、PlayStation2コンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、PlayStation3コンソールである。さらに、限定ではなく実施例として、レガシーゲーム406は、PlayStationコンソール上でプレイされるように設計されていてもよいが、対象プラットフォームは、Sony Computer EntertainmentからのPlayStation Vitaなどの手持ちコンソールである。
【0036】
上記は、本発明の好適な実施形態の完全な説明であるが、多様な代替物、修正物、及び均等物を使用することが可能である。したがって、本発明の範囲は、上記説明を参照することなく判断されるべきであるが、その代わりに、添付の特許請求の範囲を、その均等物の全範囲とともに参照して判断されるべきである。本明細書で説明されたいかなる特徴も、好適か否かに関わらず、本明細書で説明されたいかなる他の特徴とも、好適か否かに関わらず組み合わされてもよい。以下の特許請求の範囲において、不定冠詞「A」または「An」は、そうでないと明示的に述べられている場合を除いて、冠詞に続く品目のうちの1つまたは複数の量をいう。添付の特許請求の範囲は、そのような限定が句「means for」を使用して所与の請求項において明示的に列挙されない限り、ミーンズプラスファンクション限定を含むものとして解釈されるべきでない。