(57)【特許請求の範囲】
【請求項１】
方法であって、
ａ）システムのカレントバージョンにロードされたアプリケーションがシステムの前記カレントバージョン向けであるのか、それとも前記システムのより強力ではないバージョン向けであるのかを判断することであって、前記システムの前記カレントバージョンが標準クロック周波数を特徴とする、判断することと、
ｂ）前記アプリケーションがシステムのカレントバージョン向けに設計されているとき、前記システムの前記カレントバージョンの前記標準クロック周波数でプロセッサ上で前記アプリケーションを実行すること、または
ｃ）前記アプリケーションが前記システムのより強力ではないバージョン向けに設計されているとき、第２のクロック周波数で前記アプリケーションを実行することであって、前記システムの前記より強力ではないバージョンが異なる標準クロック周波数を特徴とし、前記第２のクロック周波数が前記システムの前記カレントバージョンの前記標準クロック周波数未満であり、前記システムの前記より強力ではないバージョンの前記標準クロック周波数よりも高い、前記実行することと、
を含む、前記方法。
【請求項２】
ａ）が前記アプリケーションのソフトウェアＩＤ、前記アプリケーションのソフトウェアチェックサム、前記アプリケーションと関連付けられたメタデータ、または前記アプリケーションと関連付けられたメディアタイプを調べることを含む、請求項１に記載の方法。
【請求項３】
ｃ）が前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の待ち時間もしくは待ち時間の特性の差、前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間のスループットもしくは動作の速度の差、または計算で利用できるアルゴリズムに関して前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の差に基づいて前記第２のクロック周波数を設定することを含む、請求項１に記載の方法。
【請求項４】
ｂ）において前記プロセッサは前記システムの前記カレントバージョンの前記標準クロック周波数で実行するために設定されたクロックを含み、ｃ）における前記アプリケーションを実行することが、前記第２のクロック周波数で前記プロセッサを動作させるために第２のクロックを設定することと、異なるアプリケーションのための異なる値に前記第２のクロック周波数を設定することを含む、請求項１に記載の方法。
【請求項５】
ｃ）が、計算で使用されるアルゴリズムに関して、前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の差を考慮に入れることによって前記第２のクロック周波数を決定することをさらに含む、請求項１に記載の方法。
【請求項６】
システムであって、
プロセッサと、
メモリと、
前記メモリに埋め込まれたプロセッサ実行可能な命令であって、前記命令が前記プロセッサによる実行時に方法を実装するように構成される、プロセッサ実行可能な命令と、
を備え、前記方法が、
ａ）システムのカレントバージョンにロードされたアプリケーションがシステムの前記カレントバージョン向けであるのか、それとも前記システムのより強力ではないバージョン向けであるのかを判断することであって、前記システムの前記カレントバージョンが標準クロック周波数を特徴とする、前記判断することと、
ｂ）前記アプリケーションがシステムのカレントバージョン向けに設計されているとき、前記システムの前記カレントバージョンの前記標準クロック周波数でプロセッサ上で前記アプリケーションを実行すること、または
ｃ）前記アプリケーションが前記システムのより強力ではないバージョン向けに設計されているとき、第２のクロック周波数で前記アプリケーションを実行することであって、前記システムの前記より強力ではないバージョンが異なる標準クロック周波数を特徴とし、前記第２のクロック周波数が前記システムの前記カレントバージョンの前記標準クロック周波数未満であり、前記システムの前記より強力ではないバージョンの前記標準クロック周波数よりも高い、前記実行することと、
を含む、前記システム。
【請求項７】
ａ）が、前記アプリケーションのソフトウェアＩＤ、前記アプリケーションのソフトウェアチェックサム、前記アプリケーションと関連付けられたメタデータ、または前記アプリケーションと関連付けられたメディアタイプを調べることを含む、請求項６に記載のシステム。
【請求項８】
ｃ）が前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の待ち時間もしくは待ち時間の特性の差、前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間のスループットもしくは動作の速度の差、または計算で利用できるアルゴリズムに関して前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の差に基づいて前記第２のクロック周波数を設定することを含む、請求項６に記載のシステム。
【請求項９】
ｃ）が、異なるアプリケーションのための異なる値に前記第２のクロック周波数を設定することを含む、請求項６に記載のシステム。
【請求項１０】
ｃ）が、計算で使用されるアルゴリズムに関して、前記システムの前記カレントバージョンと前記より強力ではないバージョンとの間の差を考慮に入れることによって前記第２のクロック周波数を決定することをさらに含む、請求項６に記載のシステム。
【請求項１１】
その中にコンピュータ可読命令を埋め込ませた非一過性のコンピュータ可読媒体であって、前記命令がプロセッサによる実行時に方法を実施するように構成され、前記方法が、
ａ）システムのカレントバージョンにロードされたアプリケーションがシステムの前記カレントバージョン向けであるのか、それとも前記システムのより強力ではないバージョン向けであるのかを判断することであって、前記システムの前記カレントバージョンが標準クロック周波数を特徴とする、前記判断することと、
ｂ）前記アプリケーションがシステムのカレントバージョン向けに設計されているとき、前記システムの前記カレントバージョンの前記標準クロック周波数でプロセッサ上で前記アプリケーションを実行すること、または
ｃ）前記アプリケーションが前記システムのより強力ではないバージョン向けに設計されているとき、第２のクロック周波数で前記アプリケーションを実行することであって、前記システムの前記より強力ではないバージョンが異なる標準クロック周波数を特徴とし、前記第２のクロック周波数が前記システムの前記カレントバージョンの前記標準クロック周波数未満であり、前記システムの前記より強力ではないバージョンの前記標準クロック周波数よりも高い、前記実行することと、
を含む、前記非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様は、コンピュータシステム上でのコンピュータアプリケーションの実行に関する。特に、本開示の態様は、コンピュータシステムのより旧いバージョン向けに設計されたアプリケーション／タイトルに下位互換性を提供するシステムまたは方法に関する。
【背景技術】
【０００２】
現代のコンピュータシステムは、多くの場合異なる計算タスクに異なるプロセッサを使用する。現代のコンピュータは、ともに潜在的に他のユニットも含むことがあるアクセラレーテッドプロセッシングユニット（ＡＰＵ）の一部である、中央演算処理装置（ＣＰＵ）に加えて、グラフィックパイプラインでの特定の計算タスク専用のグラフィックスプロセッシングユニット（ＧＰＵ）を有することがある。
【０００３】
より強力な中央演算処理装置（ＣＰＵ）、グラフィックプロセッシングユニット（ＧＰＵ）、及びアクセラレーテッドプロセッシングユニット（ＡＰＵ）はより高い待ち時間、つまりより強力ではない構成要素とは異なる待ち時間特性を有することがある。例えば、より強力なＧＰＵは、より強力ではないＧＰＵと比較されるとき、そのテクスチャパイプラインでより多くの段階を有することがある。係る場合、このパイプラインの待ち時間は増加する。別の例では、より強力なＡＰＵは、係るキャッシュを有していなかったより強力ではないＡＰＵと比較してＣＰＵのためのＬ３キャッシュを含むことがある。係る場合、すべてのキャッシュを見逃すデータにアクセスするために要する時間はより強力なＡＰＵの場合増加するが、平均的な待ち時間はより強力なＡＰＵの場合減少するので、メモリ待ち時間特性は異なる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
より強力な装置及びより強力ではない装置は同じ処理を実行（例えば、ＣＰＵでのプログラム命令またはＧＰＵでの多様なプログラム機能演算及び固定機能演算の実行）できるが、この処理の待ち時間の差異により、より強力な装置はより強力ではない装置に関して下位互換となることができないことがある。同様に、より強力な装置が下位互換となることをできなくする処理の速度またはスループットの差がある場合がある。例えば、特定のタイプの処理の場合、より強力な装置は同じ時間間隔の中で処理のより多くの反復を実行できてよい。代わりに、より強力な装置は、状況に応じてより強力ではない装置よりも速いまたは遅い動作を生じさせる異なるアルゴリズムを使用し、処理を実行できるだろう。  
【０００５】
ビデオゲームコンソールの場合、動作は通常設定されたクロック周波数となり、ソフトウェアアプリケーションはこの設定された周波数での適切な操作について試験される。元のより強力ではないコンソールのために作成されたアプリケーションをより強力なコンソールで実行することが望ましいこともある。多くの場合、この能力が「下位互換性」と呼ばれる。係る場合、待ち時間または処理速度の差の有害な影響なしに、より強力な装置がより強力ではない装置のために作成されたアプリケーションを実行できることが望ましい。
【０００６】
本開示の態様が生じるのはこの状況の中である。
【課題を解決するための手段】
【０００７】
本開示の教示は、添付の図面と併せて以下の発明を実施するための形態を考慮することにより容易に理解できる。
【図面の簡単な説明】
【０００８】
【図１】本開示の態様に従って多様な動作周波数で構成されてよいシステムを示すブロック図である。
【図２】本開示の態様に係るシステムの動作周波数を決定する上で考えられるプロセスの流れの例を示す流れ図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明は説明のために多くの具体的な詳細を含んでいるが、当業者は以下の詳細に対する多くの変形形態及び改変形態は本発明の範囲内にあることを理解するだろう。したがって、以下に説明される本発明の例示的な実施形態は、主張されている本発明の一般性を失うことなく、且つ主張されている発明に制限を課すことなく明記される。
【００１０】
［はじめに］
より強力なコンソールでより強力ではないコンソールのために作成されたアプリケーションを実行するためにいくつかの方法が使用されてよい。一例では、より強力なコンソールは元のコンソールの周波数で実行するように設定されてよい。この周波数設定で、より強力なコンソールの動作は任意の瞬間に実行されている特定の処理に基づいて変わり、実行されているその特定の処理の待ち時間（及び他の）特性に起因し、より強力ではないコンソールよりも遅くまたは速くなることがある。より強力なコンソールの動作が元のコンソールよりも遅いとき、表示タイミング、音声ストリームアウト等によって課されるリアルタイム期限を守ることができないためにアプリケーションで多くのエラーが発生することがある。
【００１１】
別の例では、より強力なコンソールは元のコンソールよりもはるかに高い周波数で実行するように設定されてよい。動作の速度は実行されている処理の詳細に基づいて変わるが、動作の速度は一貫して元のコンソール上よりも速く、したがってリアルタイム期限を無事に守ることができる。しかしながら、アプリケーションの多くのエラーは係る高速動作の試験されていない結果のために生じることがある。例えば、作成者‐消費者モデルでは、データの消費者が最初に予測されるよりも高速で動作する場合、データの消費者は、データの作成者がデータを入手可能にする前にデータにアクセスできるように試みることがあり、同期機構が存在することがあっても、同期機構が元のコンソールで係る状況下で試験される可能性は低い。代わりに、データの作成者が最初に予測されるよりも高速で動作する場合、データの作成者は依然としてデータの消費者によって使用されているデータを上書きすることがある。
【００１２】
［実施形態］
本開示の実施形態は、コンソール（つまり、より強力ではないコンソール）の前のバージョンよりも高い周波数で実行するようにコンソール（つまり、より強力なコンソール）を設定するシステム及び方法を提供する。理想的には、より強力なコンソールの周波数は、より強力なコンソールの動作の速度が任意の瞬間に実行されている処理の詳細に基づいて変わるにつれ、元のコンソールの動作周波数よりもわずかに高く設定される。係る構成により、動作の速度は高速動作の意図しない結果をトリガするほど十分に大きくなく、動作の速度はリアルタイム期限を守ることができないほど低くもないため、エラーの発生率は最小限に抑えられてよい。
【００１３】
具体的には、より強力なコンソールは、待ち時間、スループット、または処理の他の態様の差の影響を無効にする必要なく２つの周波数、つまりより強力なコンソールで実行するために作成されたアプリケーション向けのより高い周波数、及び下位互換性のための元のコンソールと同じ周波数（つまり、元のコンソールのために作成されたアプリケーションを実行するとき）だけで操作できるだろう。しかしながら、待ち時間、スループット、及び処理の他の態様での差の影響を無効にする必要性のために、動作の周波数に対して細粒度制御を有することが望ましく、これにより、より強力なコンソールは元のコンソールよりもわずかに高い周波数で実行できる。正確な周波数設定値は、コンソールと多様なソフトウェアアプリケーションの両方を使用し、実験によって決定できるだろう、または周波数設定値はアプリケーション別に変わるだろう、または周波数設定値はアプリケーションの性能特性に応じてその時々で変わるだろう。
【００１４】
ソフトウェアアプリケーションは、例えばＣＰＵもしくはＧＰＵの動作のサイクルのカウンタ等のサイクルカウンタ、または代わりによりゆっくりした速度でインクリメントするカウンタにアクセスできてよく、例えばカウンタはＣＰＵもしくはＧＰＵが１６のクロックサイクルを完了するたびにインクリメントしてよいことに留意されたい。ＣＰＵ及びＧＰＵの周波数は元のコンソールでは固定されているので、アプリケーションはこのタイミングの一貫性に依存することがある。例えば、ソフトウェアアプリケーションはＣＰＵとＧＰＵとの間のクロックの比率に関して想定を行ってよい。代わりに、アプリケーションは次の垂直帰線区間までの時間を計算し、次いですべてのレンダリングが垂直帰線消去の開始前に完了することを保証するために、実行されているレンダリング動作を修正するためにＧＰＵサイクルカウンタを使用していることがある。
【００１５】
この同じソフトウェアプリケーションがより強力なコンソールでより高い周波数で実行されるとき、多くのエラーがサイクルカウンタのその使用から生じることがある。例えば、より高い周波数で、垂直帰線区間の間のサイクル数がより大きくなるにつれ、次の垂直帰線区間の開始前に利用可能な時間に関する計算が不正確になり、どのレンダリングが実行されるのかに関する不適切な決定及び潜在的に致命的なエラーにつながるだろう。
【００１６】
したがって、本開示の態様は真のサイクルカウンタをより強力ではないコンソールの周波数に一致する数を返すスプーフクロックと置換するシステム及び方法も提供する。サイクルカウンタを読み取ることが真のサイクルカウントを返すかどうか、または代わりにサイクルカウンタがスプーフクロックの値を返すかどうかは使用ケースに左右され、オペレーティングシステムによって構成されるだろう。本開示の実施形態は、２つのモードで動作するように構成されたシステムを提供する。第１のモードは、システムが通常の動作の周波数で動作する通常モードであり、第２のモードは、システムがシステムと他のシステム（例えば、該システムの旧バージョン）との間の互換性を想定して動作する互換モードである。システムは通常モードで活性化され、操作されるように構成される。しかしながら、もともとシステムのより旧いバージョン向けに設計されたアプリケーションまたはタイトルが実行されるとき、システムはロードされるアプリケーションに適切な動作周波数に切り替わるように構成されてよい。
【００１７】
ここで図１を参照すると、本開示の態様に従って多様な周波数で操作されるように構成されたコンピューティングシステム１００の例示的な例が示されている。本開示の態様に従って、システム１００は、埋め込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム機、ワークステーション、ゲームコンソール等であってよい。
【００１８】
システムは、以下に説明される、例えば図２の方法と共通の機能を有する方法を実行することによって、概して本開示の態様を実施するように構成されたプロセッサ及びメモリを含んでよい。示されている例では、プロセッサは、単一のチップ上に中央演算処理装置（ＣＰＵ）１２０及びグラフィックスプロセッシングユニット（ＧＰＵ）１３０を含むアクセラレーテッドプロセッシングユニット１１０である。代替実施態様では、ＣＰＵ１２０及びＧＰＵ１３０は、別々のチップで別々のハードウェア構成要素として実装されてよい。また、システム１００はメモリ１４０も含んでよい。メモリ１４０は、任意選択でＣＰＵ１２０及びＧＰＵ１３０がアクセス可能であるメインメモリユニットを含んでよく、メインメモリの部分は任意選択でグラフィックスメモリ１４２を含んでよい。ＣＰＵ１２０及びＧＰＵ１３０は、それぞれ、例えばシングルコア、ツーコア、フォーコア、エイトコア、またはそれ以上等の１つまたは複数のプロセッサコアを含んでよい。ＣＰＵ１２０及びＧＰＵ１３０は、データバス１９０を使用し、１つまたは複数のメモリユニットにアクセスするように構成されてよく、いくつかの実施態様では、システム１００が２つ以上の異なるバスを含むことが役立つことがある。
【００１９】
メモリ１４０は、例えばＲＡＭ、ＤＲＡＭ等のアドレス可能なメモリを提供する集積回路の形を取る１つまたは複数のメモリユニットを含んでよい。メモリは、システムの動作周波数を決定するための実行時、図２の方法を実施するように構成された実行可能な命令を含む。さらに、グラフィックスメモリ１４２は、グラフィックリソース、グラフィックバッファ、及びグラフィックレンダリングパイプライン用の他のグラフィックデータを一時的に記憶してよい。グラフィックバッファは、例えば頂点パラメータ値を記憶するための１つまたは複数の頂点バッファ、ならびに頂点インデックスを記憶するための１つまたは複数の索引バッファを含んでよい。また、グラフィックバッファは、本開示の態様に従って計算されたピクセル値／サンプル値を保持するカラーバッファ１４５と深度バッファ１４６の両方を含んでよい１つまたは複数のレンダリングターゲット１４４を含んでもよい。特定の実施態様では、カラーバッファ１４５及び／または深度バッファ１４６は、ディスプレイでの提示向けの最終レンダリング画像を構成してよいディスプレイバッファ１４７に記憶される表示ピクセル色値の最終アレイを決定するために使用されてよい。特定の実施態様では、表示バッファはフロントバッファ及び１つまたは複数のバックバッファを含んでよく、ＧＰＵ１３０はディスプレイ１８０での提示のためにディスプレイバッファ１４７のフロントバッファからグラフィックフレームをスキャンアウトするように構成されてよい。
【００２０】
ＣＰＵ１２０は、オペレーティングシステム１２１または（ビデオゲーム等の）レンダリングされたグラフィックスを活用するアプリケーション１２２、及びアプリケーション１２２の状態に基づいてＧＰＵ１３０によって実装されるプログラムに対して描画コマンドまたは描画呼出しを発行するための対応するグラフィックＡＰＩ１２４を含んでよいＣＰＵコードを実行するように構成されてよい。また、ＣＰＵコードは物理学シミュレーション及び他の機能を実装してもよい。ＣＰＵ及びＧＰＵクロック１５６Ｃ、１５６Ｇは、ＣＰＵ及びＧＰＵがシステム１００の標準クロックレートとは異なるクロックレートに基づいて命令を実行できるように構成されてよい。例として、及び制限としてではなく、アプリケーション１２２がシステム１００のより強力ではないバージョン用である場合、クロック周波数１５６Ｃ、１５６Ｇの値は、より強力ではないバージョンのクロック周波数、つまりシステム１００でより高い待ち時間から生じる問題がある場合の周波数よりもわずかに高い周波数に一致してよい。
【００２１】
グラフィックスのレンダリングをサポートするために、ＧＰＵ１３０は頂点シェーダー及びピクセルシェーダーを含んでよいシェーダー１３４を実行してよい。また、ＧＰＵは、例えばジオメトリシェーダー、モザイク細工シェーダー、コンピュータシェーダー等の他のシェーダープログラムも実行してよい。また、ＧＰＵ１３０は、１つまたは複数のテクスチャマッピングユニット、及び／またはグラフィックスパイプラインの１つまたは複数の段階で操作を実施するように構成された他のハードウェアモジュールを含んでよい、特殊化されたハードウェアモジュール１３２を含んでもよい。シェーダー１３４及びハードウェアモジュール１３２は、最終ピクセル値がディスプレイに出力される前に、パイプラインの多様な段階でメモリ１４０及びバッファ１４４内のデータと相互作用してよい。ＡＰＵ１１０、ＣＰＵ１２０、及びＧＰＵ１３０によって実行されるように構成されるシェーダー１３４及び／または他のプログラムは、非一過性コンピュータ読取り可能媒体での命令として記憶されてよい。一例として、及び実装によってではなく、ＧＰＵは、画面空間ピクセル用にプリミティブの複数のサンプルを採取し、サンプルの性質に従って１つまたは複数のピクセルシェーダーを呼び出すように構成されてよい、ラスタライザモジュール１３６を実装してよい。
【００２２】
システム１００は、例えばバス１９０を介してシステムの他の構成部品と通信してよい、周知のサポート機能１５０を含んでもよい。係るサポート機能は、入出力（Ｉ／Ｏ）要素１５２、それぞれＣＰＵ１２０及びＧＰＵ１３０のために別々のクロック１５６Ｃ、１５６Ｇ、及びキャッシュ１５８を含んでよい１つまたは複数のクロックを含んでよいが、これに限定されない。システム１００は、プログラム及び／またはデータを記憶するために、任意選択でディスクドライブ、ＣＤ−ＲＯＭドライブ、フラッシュメモリ、テープドライブ、ブルーレイドライブ等の大量記憶装置１６０を含んでよい。一例では、大量記憶装置１６０は、もともとより強力ではないシステムで実行するように設計されたレガシーアプリケーションを含むコンピュータ可読媒体１６２を受け入れてよい。代わりに、レガシーアプリケーション１６２（またはその部分）は、メモリ１４０にまたは部分的にキャッシュ１５８内に記憶されてよい。
【００２３】
また、装置１００は、システム１００とユーザーとの間の対話を容易にするためにユーザー及びユーザーインタフェースユニット１７０にレンダリングされたグラフィック１８２を提示するためにディスプレイユニット１８０を含んでもよい。ディスプレイユニット１８０は、フラットパネルディスプレイ、ブラウン管（ＣＲＴ）画面、タッチスクリーン、ヘッドマウントディスプレイ（ＨＭＤ）、またはテキスト、数字、グラフィック記号、または画像を表示できる他の装置の形をとってよい。ディスプレイ１８０は、本明細書に説明される多様な技法に従って処理されるレンダリンググラフィック１８２を表示してよい。ユーザーインタフェース１７０は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、タッチスクリーン、及び／またはグラフィックユーザーインタフェース（ＧＵＩ）と併せて使用されてよい、他の装置等の１つまたは複数の周辺機器を含んでよい。特定の実施態様では、アプリケーション１２２の状態及びグラフィックスの基本的なコンテンツは、例えばアプリケーション１２２がビデオゲームを含むビデオゲーム実装で、少なくとも部分的にはユーザーインタフェース１７０を通したユーザー入力によって決定されてよい。
【００２４】
システム１００は、装置がネットワーク上で他の装置と通信できるようにするためにネットワークインタフェース１７２を含んでもよい。ネットワークは、例えばローカルエリアネットワーク（ＬＡＮ）、インターネット等の広域ネットワーク、ブルートゥース（登録商標）ネットワーク等のパーソナルエリアネットワーク、または他のタイプのネットワークであってよい。示され、説明される構成要素の内の多様な構成要素は、ハードウェア、ソフトウェア、もしくはファームウェア、またはこれらの内の２つ以上のなんらかの組合せで実装されてよい。
【００２５】
本発明の態様に従って、ＣＰＵ１２０は、ＣＰＵ動作の実行を同期させるためにサイクルカウンタＣＣＣを実装するハードウェア構成要素を含んでよい。同様に、ＧＰＵ１３０は、ＧＰＵ動作の実行を同期させるためにサイクルカウンタＣＣＧを実装するハードウェア構成要素を含んでよい。サイクルカウンタＣＣＣ、ＣＣＧは、対応する標準クロック１５６Ｃ、１５６Ｇまたは対応するスプーフクロック１２５、１３５であってよいクロックからクロックサイクルを読み取る。本開示の態様に従って、システム１００のカレントバージョンのために作成されたアプリケーションを実行するとき、サイクルカウンタＣＣＣ、ＣＣＧは、標準クロック１５６Ｃ、１５６Ｇからサイクルを読み取るように構成されてよい。それに対して、システムのより強力ではないバージョン用に作成されたアプリケーションを実行するとき、サイクルカウンタＣＣＣ、ＣＣＧは、ハードウェアのより強力ではないバージョンの標準動作周波数に設定されてよいスプーフクロック１２５、１３５からサイクルを読み取るように構成されてよい。
【００２６】
図２は、オペレーティングシステム１２１または他のソフトウェア機構もしくはハードウェア機構によって実装されるように、本開示の態様にしたがってコンソールのために動作の周波数を決定する上で考えられるプロセスの流れの例を示す流れ図である。２０１で、動作は、アプリケーション１２２がシステム１００で実行するためにロードされるときに、通常モードで開始してよい。第１に、ソフトウェアＩＤ、ソフトウェアチェックサム、ソフトウェアと関連付けられたメタデータ、メディアタイプ、または他の機構の調査によって、アプリケーション１２２が２１０で示されるように、このシステム向けに設計されているのか、それともシステムの前のバージョン向けに設計されているのかの判断が下される。ロードされたアプリケーションがシステム１００を対象にしていると判断されるとき、システムは、２２０で示されるように通常の周波数で実行してよい。例えば、ＣＰＵ１２０及びＧＰＵ１３０は、それぞれその通常の動作周波数で実行してよい。特に、サイクルカウンタＣＣＣ、ＣＣＧは、２２２で示されるように対応するクロック１５６Ｃ及び１５６Ｇを読み取ってよい。
【００２７】
ロードされたアプリケーション１２２がシステム１００のより強力ではないバージョン向けに設計されるとき、システムは２３０で示されるようにエラーがない動作のためのクロック周波数を決定してよい。一例として、及び制限としてではなく、クロック１５６Ｃ及び１５６Ｇはより強力ではないシステムで対応するクロック周波数よりもわずかに高い周波数でＣＰＵ１２０及びＧＰＵ１３０を実行するために設定されてよい。代わりに、クロック周波数１５６Ｃ及び１５６Ｇは、システム１００の動作の速度が任意の瞬間に実行されている処理の詳細に基づいて変わるにつれ、処理が同じ速度でまたはより強力ではないシステムよりもわずかに速い速度で発生するようにリアルタイムで調整されてよい。クロック周波数は、ＣＰＵ１２０及び／またはＧＰＵ１３０を用いる処理のより高い待ち時間、スループット、及び他の態様の影響を考慮に入れるように決定されてよい。スプーフクロック周波数１２５、１３５は、２３２に示されるように、より強力ではないシステムのＣＰＵ動作及びＧＰＵ動作の標準周波数に一致するように設定される。特に、サイクルカウンタＣＣＣ、ＣＣＧは、２３４に示されるように、対応するスプーフクロック１２５及び１３５を読み取るように構成される。
【００２８】
一例を挙げれば、システムの前のバージョンのＧＰＵは、５００ＭＨｚのＧＰＵクロックで実行する可能性があり、カレントシステムは７５０ＭＨｚのＧＰＵクロック１５６Ｇで実行する可能性がある。システムは、カレントシステム専用に設計されるアプリケーションがロードされるときに７５０ＭＨｚに設定される１５６Ｇと実行するだろう。この例では、サイクルカウンタＣＣＧは７５０ＭＨｚ周波数に一致するだろう（つまり、サイクルカウンタＣＣＧは真のサイクルカウンタである）。レガシーアプリケーション（つまり、システムの前のバージョンのために設計されたアプリケーション）がロードされるとき、システム１００は（例えば、５０５ＭＨｚに設定された１５６Ｇを有する）前のシステムの動作周波数よりもわずかに高い周波数で実行してよい。この下位互換モードでは、ＧＰＵスプーフクロック１３５は５００ＭＨｚで実行するように構成され、サイクルカウンタＣＣＧはスプーフクロックから導出され、このようにしてレガシーアプリケーションに予想される値を提供するだろう。
【００２９】
カレントシステムは、待ち時間特性、スループット、または計算で利用されるアルゴリズムに関して前のシステムとは異なることがあるため、計算の結果は同じであることがあるが、コンソールの動作の速度は実行される動作の詳細に基づいて変わる。結果として、ロードされたアプリケーション１２２がレガシーアプリケーションであるとき、例えばより高いクロック周波数で実行し、処理エラーが発生しなくなるまで有効クロック周波数を徐々に削減することによって等、ロードされた特定のアプリケーションを試験することによって決定された値にクロック１５６Ｃ、１５６Ｇを設定することが望ましいことがある。また、アプリケーションの性能特性に基づいてクロック１５６Ｃ、１５６Ｇを動的に調整することが望ましいこともある。
【００３０】
本開示の態様は、プログラムがより強力なシステムで実行されるより強力ではないシステムのために作成されるときに生じる下位互換性にまつわる問題を克服する。より強力なシステムのシステムクロックレートを調整することは、装置間の差に対処する。真のクロックの代わりにスプーフクロックに読取り可能なサイクルカウンタを基づかせることは、レガシーアプリケーションコードの正しい動作を可能にする。
【００３１】
上記は本発明の好ましい実施形態の完全な説明であるが、多様な代替策、変更形態、及び均等物を使用することが可能である。したがって、本発明の範囲は上記の説明を参照して決定されるべきではなく、代わりに均等物のその完全な範囲とともに、添付の特許請求の範囲を参照して決定されるべきである。本明細書に説明される任意の特徴は、好ましいかどうかに関わりなく、本明細書に説明される任意の他の特徴と組み合わされてよい。以下の特許請求の範囲では、［不定冠詞「Ａ」または「Ａｎ」］は、特に明記される場合を除き、冠詞に続く品目の１つまたは複数の量を指す。添付の特許請求の範囲は、係る制限が句「のための手段」を使用する所与の請求項で明記される場合を除きミーンズプラスファンクション制限を含むとして解釈されるべきではない。
【図１】
0006467062.tif 000002
【図２】
0006467062.tif 000003