(57)【要約】【解決手段】新ＣＰＵ上でアプリケーションを実行する新デバイスは、アプリケーションがレガシーＣＰＵを有するレガシーデバイス用であるか否かを判定する。アプリケーションがレガシーデバイス用である場合、新ＣＰＵは、レガシーＣＰＵ上に存在しない新ＣＰＵの選択された機能を無効化して、または新ＣＰＵの命令実行のレイテンシをレガシーＣＰＵのレイテンシに合うまたは近似するように変更して、または新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細をレガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、アプリケーションを実行する。【選択図】図２
2018522335.tif 000002
【特許請求の範囲】
【請求項１】
新ＣＰＵ上でアプリケーションを実行する新デバイスにより、前記アプリケーションがレガシーＣＰＵを有するレガシーデバイス用であるか否かを判定することと、
前記アプリケーションが前記レガシーデバイス用であると前記新デバイスが判定した場合、前記レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、または前記新ＣＰＵの命令実行のレイテンシを前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、または前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することと
を含む方法。
【請求項２】
前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することを含む、請求項１に記載の方法。
【請求項３】
前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵの分岐目標バッファの動作のアルゴリズム詳細及び関連予測論理を、前記レガシーＣＰＵの対応分岐目標バッファの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵを作動させることを含む、請求項２に記載の方法。
【請求項４】
前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することは、前記ＣＰＵの命令デコードユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの命令デコードユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵを作動させることを含む、請求項２に記載の方法。
【請求項５】
前記新ＣＰＵ上で前記アプリケーションを実行することは、レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記新ＣＰＵ上で前記アプリケーションを実行することを含む、請求項１に記載の方法。
【請求項６】
前記レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵ及びその関連予測論理は専用ループ予測器を備えるが前記レガシーＣＰＵはこれを備えない場合に、前記新ＣＰＵの前記専用ループ予測器を無効化することを含む、請求項５に記載の方法。
【請求項７】
レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵはマイクロオペキャッシュを備えるが前記レガシーＣＰＵはこれを備えない場合に、前記新ＣＰＵの前記マイクロオペキャッシュを無効化することを含む、請求項５に記載の方法。
【請求項８】
前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵの命令実行のレイテンシを、前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することを含む、請求項１に記載の方法。
【請求項９】
前記新ＣＰＵの命令実行のレイテンシを、前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することは、前記新ＣＰＵ上の動作のレイテンシを、前記レガシーＣＰＵ上の前記動作のレイテンシに合うまたは近似するように延長することを含む、請求項８に記載の方法。
【請求項１０】
前記新ＣＰＵ上の前記動作の前記レイテンシを延長することは、前記新ＣＰＵ上の結果計算を減速させることを含む、請求項９に記載の方法。
【請求項１１】
前記新ＣＰＵ上の前記動作の前記レイテンシを延長することは、ＣＰＵパイプラインの後続段階へ結果転送を遅らせることを含む、請求項９に記載の方法。
【請求項１２】
アプリケーションの命令を実行するように構成される新中央処理装置（ＣＰＵ）を備えるシステムであって、前記新ＣＰＵは論理ユニットを有し、
前記論理ユニットは、前記アプリケーションがレガシーＣＰＵを有するレガシーデバイス用であるか否かを判定し、前記アプリケーションが前記レガシーデバイス用である場合に、前記レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、または前記新ＣＰＵの命令実行のレイテンシを前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、または前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、
システム。
【請求項１３】
前記新ＣＰＵは、前記アプリケーションが前記レガシーデバイス用である場合に、前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、請求項１２に記載のシステム。
【請求項１４】
前記新ＣＰＵは、前記新ＣＰＵの分岐目標バッファの動作のアルゴリズム詳細及び関連予測論理を、前記レガシーＣＰＵの対応分岐目標バッファの動作のアルゴリズム詳細に合うまたは近似するように変更することにより、前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、請求項１３に記載のシステム。
【請求項１５】
前記新ＣＰＵは、命令デコードユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの命令デコードユニットの動作のアルゴリズム詳細に合うまたは近似するように変更することにより、前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、請求項１３に記載のシステム。
【請求項１６】
前記新ＣＰＵは、前記アプリケーションが前記レガシーデバイス用である場合に、レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記アプリケーションを実行するように構成される、請求項１２に記載のシステム。
【請求項１７】
前記新ＣＰＵは、前記新ＣＰＵ及びその関連予測論理は専用ループ予測器を備えるが前記レガシーＣＰＵはこれを備えない場合に、前記新ＣＰＵの前記専用ループ予測器を無効化することにより、前記レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記アプリケーションを実行するように構成される、請求項１６に記載のシステム。
【請求項１８】
前記新ＣＰＵはマイクロオペキャッシュを備えるが前記レガシーＣＰＵはこれを備えない場合に、前記新ＣＰＵは、前記新ＣＰＵの前記マイクロオペキャッシュを無効化することにより、レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、前記アプリケーションを実行するように構成される、請求項１６に記載のシステム。
【請求項１９】
前記新ＣＰＵは、前記新ＣＰＵの命令実行のレイテンシを、前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、請求項１２に記載のシステム。
【請求項２０】
前記新ＣＰＵは、前記新ＣＰＵ上の動作のレイテンシを、前記レガシーＣＰＵ上の前記動作のレイテンシに合うまたは近似するように延長することにより、前記新ＣＰＵの命令実行のレイテンシを、前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、請求項１９に記載のシステム。
【請求項２１】
前記新ＣＰＵ上の前記動作の前記レイテンシを延長することは、前記新ＣＰＵ上の結果計算を減速させることを含む、請求項２０に記載のシステム。
【請求項２２】
前記新ＣＰＵ上の前記動作の前記レイテンシを延長することは、ＣＰＵパイプラインの後続段階へ結果転送を遅らせることを含む、請求項２０に記載のシステム。
【請求項２３】
実行可能命令を内部に組み込んだ非一時的コンピュータ可読媒体であって、前記命令は、前記命令が実行されると方法を実施するように構成され、前記方法は、
新ＣＰＵ上でアプリケーションを実行する新デバイスにより、前記アプリケーションがレガシーＣＰＵを有するレガシーデバイス用であるか否かを判定することと、
前記アプリケーションが前記レガシーデバイス用であると前記新デバイスが判定した場合、前記レガシーＣＰＵ上に存在しない前記新ＣＰＵの選択された機能を無効化して、または前記新ＣＰＵの命令実行のレイテンシを前記レガシーＣＰＵのレイテンシに合うまたは近似するように変更して、または前記新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を前記レガシーＣＰＵの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記新ＣＰＵ上で前記アプリケーションを実行することと
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、同一出願人による２０１５年７月２７日に出願された米国仮特許出願第１４／８１０，３３４号に対する優先権を主張し、当仮出願の内容全体は、参照により本明細書に組み込まれるものとする。
【０００２】
本開示の態様は、コンピュータシステム上のコンピュータアプリケーションの実行に関する。特に、本開示の態様は、コンピュータシステムのより古いバージョン用に設計されたアプリケーション／タイトルに対する後方互換性を提供するシステムまたは方法に関する。
【背景技術】
【０００３】
最新のコンピュータシステムは多くの場合、様々なコンピューティングタスクに多数の異なるプロセッサを使用する。例えば、最新コンピュータは、多数の中央処理装置（ＣＰＵ）に加えて、グラフィックスパイプラインにおける一定の計算タスク専用のグラフィック処理ユニット（ＧＰＵ）、または音響デジタル信号処理専用ユニットを有し得、これらは全て、他のユニットも同様に含み得る加速処理ユニット（ＡＰＵ）の一部である可能性がある。これらのプロセッサは、ＡＰＵの内部にあり得るまたはコンピュータのマザーボード上に外部的に配置され得るバスを使用して、様々な種類のメモリに接続される。
【０００４】
ゲーム機またはスマートフォン等のコンピュータシステム（「レガシーデバイス」）のためにアプリケーションセットは作成されることが一般的であり、コンピュータシステムの変形版またはさらなる先進版がリリースされると（「新デバイス」）、レガシーデバイスのアプリケーションは、新デバイスのプロパティを考慮した再コンパイルまたは任意の変更なしに、新デバイス上で完璧に稼働することが好ましくある。そのハードウェアアーキテクチャ、ファームウェア、及びオペレーティングシステム内に含まれるような新デバイスの当態様はしばしば「後方互換性」と称される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
後方互換性は多くの場合、新デバイスがレガシーデバイス用に作られたプログラムを実行可能であるバイナリ互換性を通して達成される。しかしながら、ゲーム機またはスマートフォンの場合がそうであるように、デバイスのカテゴリのリアルタイムビヘイビアがデバイスの動作にとって重要である場合、新デバイスの動作速度における有意差により、新デバイスはレガシーデバイスに関して後方互換性を有することができなくなり得る。新デバイスがレガシーデバイスよりも低性能である場合に、後方互換性を妨げる問題が生じ、これはまた、レガシーデバイスと比べて、新デバイスが高性能である場合、または異なる性能特性を有する場合にも当てはまる。
【０００６】
このような観点から、本開示の態様は生じる。
【課題を解決するための手段】
【０００７】
本開示の教示は、添付図面と合わせて以下の詳細説明を考察することにより、容易に理解可能である。
【図面の簡単な説明】
【０００８】
【図１】本開示の態様による後方互換モードで作動するように構成され得る中央処理装置（ＣＰＵ）コアの実施例を示すブロック図である。
【図２】本開示の態様による後方互換モードでＣＰＵを作動させる可能プロセスフローの実施例を示すフロー図である。
【図３】本開示の態様による後方互換性モードで作動するように構成されるＣＰＵを有するデバイスのブロック図である。
【発明を実施するための形態】
【０００９】
以下の詳細説明は例示目的で多数の具体的詳細を含むが、当業者の誰もが以下の詳細に対する多数の変形及び改変が本発明の範囲内であることを理解するであろう。従って、後述の発明の例示的実施形態は、請求される発明に対する普遍性を損なうことなく、かつ請求される発明に制限を課すことなく、明記される。
導入
【００１０】
［イントロダクション］
新デバイスのＣＰＵがレガシーデバイスとのバイナリ互換性を有する（すなわちレガシーデバイス用に作成されたプログラムを実行可能である）としても、新デバイスのＣＰＵとレガシーデバイスのＣＰＵとの性能特性の違いにより、レガシーアプリケーションにおいてエラーが生じ、その結果、新デバイスは後方互換性を有さなくなる。
【００１１】
新デバイスのＣＰＵがレガシーデバイスのＣＰＵよりも低性能である場合、表示タイミング、または音響ストリーム出力等により課されるリアルタイムデッドラインを満たすことが不可能なことから、レガシーアプリケーションにおいて多数のエラーが生じ得る。新デバイスのＣＰＵがレガシーデバイスのＣＰＵよりも大幅に高性能である場合、このような高速動作を試したことがない結果、レガシーアプリケーションにおいて多数のエラーが生じ得る。例えば、生産者−消費者モデルにおいて、データ消費者（例えばＣＰＵ）が本来予期される速度より高速で作動する場合、データ消費者は、データ生産者（例えばコンピュータのある他のコンポーネント）がデータアクセスを可能にする前に、データにアクセスすることを試み得る。あるいは、データ生産者（例えばＣＰＵ）が本来予期される速度より高速で作動する場合、データ生産者は、データ消費者（例えばコンピュータのある他のコンポーネント）がまだ使用しているデータを上書きし得る。
【００１２】
加えて、ＣＰＵによるコード実行速度は実行される特定コードの特性によるため、レガシーデバイスに対する新デバイスのＣＰＵの性能向上度は、実行される特定コードによる可能性がある。これは、前述の生産者−消費者モデルにおいて、生産者及び消費者は両者ともＣＰＵでありながらレガシーハードウェア上で対応したことのない相対速度でレガシーアプリケーションのコードを実行するという問題を引き起こし得る。
【００１３】
［実施例］
本開示の態様は、レガシーコンピュータシステムに関してより高度の後方互換性を可能にし得るコンピュータシステム及び方法を説明する。
【００１４】
本開示の実施態様において、後方互換モード（「ＢＣモード」）での実行時には、ＣＰＵに関する一定のリソースは制限され、ＣＰＵの動作の様々な態様は変更される。
【００１５】
様々なリソースの制限により、ＢＣモードのＣＰＵの性能はレガシーＣＰＵの性能に非常に近づき、その結果、ＣＰＵの予期しない性能特性によるレガシーアプリケーション内のエラーはより少なくなる。
【００１６】
加えて、レガシーＣＰＵ上に存在しないＣＰＵの一定の機能は、ＢＣモードにおいて無効化され、ＣＰＵの命令実行のレイテンシは、レガシーＣＰＵのレイテンシと等しくなるまたはそれに近づくようにＢＣモードにおいて変更され、ＣＰＵの様々なユニットの動作のアルゴリズム詳細は、レガシーＣＰＵのこれらのユニットの動作のアルゴリズム詳細に一致するまたは近づくようにＢＣモードにおいて変更され得る。その結果、ＢＣモード時に新ＣＰＵの性能はレガシーＣＰＵの性能に非常に近づき、その結果、新ＣＰＵの予期しない性能特性によるレガシーアプリケーション内のエラーはより少なくなる。
【００１７】
下記は、ＣＰＵの汎用アーキテクチャ、並びにＢＣモード時の特定リソースの制限、機能の無効化、レイテンシの変更、及び動作のアルゴリズム詳細の変更に関する本開示の様々な態様を説明する。
【００１８】
図１は、ＣＰＵコア１００の汎用アーキテクチャを描く。ＣＰＵコア１００は通常、分岐が行われるか否かを予測することを試み、また（ブランチが行われるイベントにおいて）分岐の宛先アドレスの予測を試みる分岐予測ユニット１０２を含む。これらの予測が正しいほど、投機実行されるコードの効率は向上するため、高精度の分岐予測が非常に望ましくある。分岐予測ユニット１０２は、サブルーチンからリターンアドレスを追跡するリターンアドレススタック１０４と、間接分岐の宛先を追跡する間接目標アレイ１０６と、ブランチの結果アドレスをより正確に予測するために分岐の過去履歴を追跡する分岐目標バッファ１０８及びその関連予測論理といった、高度に専門化されたサブユニットを含み得る。
【００１９】
本開示の一定態様によれば、ＢＣモードにおいて新ＣＰＵの間接目標アレイ１０６のサイズ、リターンアドレススタック１０４のサイズ、または分岐目標バッファ１０８のサイズは、レガシーＣＰＵにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。明瞭化すると、当削減は、例えばリターンアドレススタックの一部の利用を許可しないことにより追跡可能なコール及び関連リターンの数を削減する等、リソースの使用可能部分を縮小する形態を取り、全リソースはＢＣモードでなくなった時に利用可能となる。
【００２０】
本開示の一定態様によれば、ＢＣモードにおいて、新ＣＰＵの分岐目標バッファ１０８の動作のアルゴリズム詳細、及びその関連予測論理は、レガシーＣＰＵのこれらと合うように変更され得る。限定としてではなく例として、お互いに近い分岐命令のビヘイビアを追跡する能力がレガシーＣＰＵにおいて制限される場合、ＢＣモードの新ＣＰＵは当レガシーＣＰＵのビヘイビアに整合し得る。または、レガシーＣＰＵが実質的に異なる様式の分岐予測論理（例えば適用予測器ではなく飽和型カウンタ）を使用する場合、新ＣＰＵはレガシーＣＰＵの論理を含み、ＢＣモードにおいてこれを有効化し得る。
【００２１】
本開示の一定態様によれば、万一新ＣＰＵの分岐目標バッファ１０８及びその関連予測論理が専用ループ予測器を含んだとしても、レガシーＣＰＵ上に専用ループ予測器は存在しないため、ＢＣモードにおいて新ＣＰＵの専用ループ予測器は無効化され得る。
【００２２】
ＣＰＵコア１００は、命令フェッチユニット１１２と命令バイトバッファ１１４と命令デコードユニット１１６とを含む命令フェッチ及びデコードユニット１１０を通常含む。ＣＰＵコア１００はまた、多数の命令関連キャッシュ及び命令変換索引バッファ（ＩＴＬＢ）１２０を通常含む。これらは、仮想アドレスを、ページテーブルエントリ、及びページディレクトリエントリ等の物理アドレス変換情報にキャッシュするＩＴＬＢキャッシュ階層１２４を含み得る。当情報は、命令の仮想アドレスを物理アドレスに変換するために使用され、これにより命令フェッチユニット１１２は、キャッシュ階層から命令をロード可能となる。限定としてではなく例として、プログラム命令は、コア内に存在するレベル１命令キャッシュ（Ｌ１Ｉ−キャッシュ）１２２、並びにＣＰＵコア１００外に存在する他のキャッシュレベル１７６を含むキャッシュ階層に従ってキャッシュされ得、これらのキャッシュは、命令の物理アドレスを用いて、プログラム命令のために最初に検索される。命令が見つからない場合には、命令はシステムメモリ１０１からロードされる。アーキテクチャによるが、後述のように、デコードされた命令を含むマイクロオペキャッシュ１２６も存在し得る。
【００２３】
本開示の一定態様において、ＢＣモード時にＬ１Ｉ−キャッシュ１２４、マイクロオペキャッシュ１２６、または様々なレベルのＩＴＬＢキャッシュ階層１２２のサイズもしくは連想度は、レガシーＣＰＵにおけるそれぞれのサイズ及び連想度に合うように、またはより近似するように、変更され得る。限定としてではなく例として、ＩＴＬＢキャッシュ階層１２４のサイズの変更、例えば縮小は、（１）レベルの数を削減すること、または（２）１つまたは複数のレベルのサイズ（例えばキャッシュサイズ、ブロックサイズ、セット内のブロック数）を変更することを伴い得る。キャッシュの連想度を変更することは、例えばフルアソシアティブ型キャッシュを４ウェイまたは２ウェイキャッシュとして作動させることを伴い得る。本開示の態様は、命令関連キャッシュまたはＩＴＬＢのサイズまたは連想度が縮小された実施態様を含むが、本開示はこのような実施態様に限定されない。例えば、レガシーＣＰＵは、レガシーＣＰＵ内で低連想度（例えば４ウェイの代わりに２ウェイ）であるより大きなキャッシュを有することも可能である。このような事例において、新ＣＰＵはＢＣモードで、レガシーＣＰＵ上のキャッシュのビヘイビアに合うまたは近似するように拡張された対応キャッシュサイズ及び縮小された連想度で、稼働し得る。
【００２４】
一旦プログラム命令がフェッチされると、これらは通常、命令バイトバッファ１１４に配置され、命令フェッチ及びデコードユニット１１０により処理されるのを待つ。デコードは非常に複雑なプロセスであり得、各サイクルで複数の命令をデコードすることは困難であるため、命令整列に対する制限、またはサイクル中にデコード可能な命令数を制限するような命令の種類が存在し得る。アーキテクチャによるが、デコードされた命令はマイクロオペキャッシュ１２６に配置され得るため（新ＣＰＵ上に１つ存在するならば）、プログラム命令の後続利用の際、デコード段階は回避可能となる。
【００２５】
本開示の一定態様において、ＢＣモード時に新ＣＰＵの命令フェッチ及びデコードユニット１１０の動作のアルゴリズム詳細は、レガシーＣＰＵのこれらと合うように変更され得る。限定としてではなく例として、レガシーＣＰＵが、命令バイトバッファ１１４における特定領域内でオペコードによる命令のデコードを制限する場合、新ＣＰＵも同様にデコードを制限し得る。
【００２６】
本開示の一定態様において、万一マイクロオペキャッシュ１２６が新ＣＰＵ上に存在し、レガシーＣＰＵ上に存在しない場合には、ＢＣモードにおいて新ＣＰＵのマイクロオペキャッシュ１２６は無効化され得る。
【００２７】
デコードされた命令は通常、ディスパッチ及びスケジューリング１３０のために、他のユニットへ渡される。これらのユニットは、ＣＰＵパイプラインの余りを通して命令のステータスを追跡するために、リタイアメントキュー１３２を使用し得る。また、数多くのＣＰＵアーキテクチャ上において限定数の汎用及びＳＩＭＤレジスタが利用可能であることから、レジスタリネーミングが行われ得る。論理レジスタ（アーキテクチャレジスタとも知られる）は実行される命令のストリーム内で起こるため、レジスタリネーミングにおいて、物理レジスタ１４０がこれらを表すように割り当てられる。物理レジスタ１４０は、特定のＣＰＵアーキテクチャ上で利用可能な論理レジスタのサイズよりもはるかに大きなサイズであり得る単一命令多重データ（ＳＩＭＤ）レジスタバンク１４２及び汎用（ＧＰ）レジスタバンク１４４を含み、その結果、性能が大幅に向上され得る。レジスタリネーミング１３４が行われた後、命令は通常、多数の命令がサイクルごとに（依存関係に基づき）実行ユニット１５０により実行されるために選択され得るスケジューリングキュー１３６に配置される。
【００２８】
本開示の一定態様において、ＢＣモード時にＣＰＵのリタイアメントキュー１３２のサイズ、スケジューリングキュー１３６のサイズ、またはＳＩＭＤレジスタバンク１４２もしくはＧＰレジスタバンク１４４のサイズは、レガシーＣＰＵにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。明瞭化すると、当削減は、例えばＢＣモードにおいてアプリケーションにより利用可能な物理レジスタの数を制限する等、リソースの使用可能部分を縮小する形態を取り、全レジスタバンクはＢＣモードでなくなった時にアプリケーションにより使用可能となる。
【００２９】
実行ユニット１５０は通常、ＳＩＭＤレジスタバンク１４２に含まれる１２８ビット以上のＳＩＭＤレジスタに含まれる多重データフィールドに対し多数の並列動作を行うＳＩＭＤパイプ１５２と、ＧＰレジスタバンク１４４に含まれるＧＰＲに対し多数の論理、演算、及び雑多動作を行う論理演算ユニット（ＡＬＵ）１５４と、メモリが記憶またはロードされるべきアドレスを計算するアドレス生成ユニット（ＡＧＵ）１５６とを含む。各種類の実行ユニットの多重インスタンスが存在し得、インスタンスは異なる能力を有し得、例えば特定ＳＩＭＤパイプ１５２は、浮動小数点乗算演算を行うことは可能であるが、浮動小数点加算演算を行うことは不可能であり得る。
【００３０】
本開示の一定態様において、ＢＣモード時にＡＬＵ、ＡＧＵ、またはＳＩＭＤパイプの使用可能な数は、レガシーＣＰＵ上に存在するこのようなユニットのそれぞれの数に一致するように、またはより近似するように、削減され得る。
【００３１】
本開示の一定態様において、ＢＣモード時に新ＣＰＵの命令実行のレイテンシは、レガシーＣＰＵのレイテンシと等しくなるまたは近くなるように変更され得る。例えばＢＣモード時に新ＣＰＵ上の除算演算のレイテンシは、レガシーＣＰＵ上の除算演算のレイテンシに合うように、またはより近似するように、延長され得る（例えばよりゆっくり結果を計算することにより、またはパイプラインの後続段階へ結果の転送を遅らせることにより）。
【００３２】
ストア処理及びロード処理は通常、ストアキュー１６２及びロードキュー１６４にバッファされ、このため数多くのメモリ動作が並列で実行可能となる。メモリ動作を支援するために、ＣＰＵコア１００は通常、多数のデータ関連キャッシュ及びデータ変換索引バッファ（ＤＴＬＢ）１７０を含む。ＤＴＬＢキャッシュ階層１７２は、仮想アドレスを、ページテーブルエントリ、及びページディレクトリエントリ等の物理アドレス変換にキャッシュし、当情報は、メモリ動作の仮想アドレスを物理アドレスに変換するために使用されるため、システムメモリからデータを記憶またはロードすることが可能となる。データは通常、コア内に存在するレベル１データキャッシュ（Ｌ１Ｄ−キャッシュ）１７４、並びにコア１００外に存在する他のキャッシュレベル１７６にキャッシュされる。
【００３３】
本開示の一定態様において、ＢＣモード時にＬ１Ｄ−キャッシュ１７４、または様々なレベルのＤＴＬＢキャッシュ階層１７２のサイズ及び連想度は、レガシーＣＰＵにおけるそれぞれのサイズ及び連想度に合うように、またはより近似するように、縮小され得る。本開示の一定態様において、ＢＣモード時にＣＰＵのストアキュー１６２またはロードキュー１６４のサイズ（例えば許容可能な未対応ストア処理またはロード処理数）は、レガシーＣＰＵにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。
【００３４】
図２は、本開示の態様による方法の可能プロセスフローの実施例を示すフロー図である。方法は、例えば新ＣＰＵを有するシステムにアプリケーションをロードすることにより、２０１にて始まる。２１０に示されるように、ソフトウェアＩＤ、ソフトウェアチェックサム、ソフトウェアに対応付けられたメタデータ、メディアタイプ、または他の機構の検査を介して、アプリケーションが新ＣＰＵ用に設計されたか、またはシステムの前のバージョン用に設計されたか、判定が行われる。このような判定は、システム上で稼働するソフトウェアにおいて、またはシステムのハードウェアにおいて、実施され得る。ロードされたアプリケーションが新ＣＰＵを対象とすることが判定されると、２２０に示されるように、システムは通常に稼働し得る。例えば、ＣＰＵは、レガシーＣＰＵのビヘイビアに合わせるまたは近似させるための使用可能なリソースの制限、機能の無効化、命令実行のレイテンシの変更、またはアルゴリズム詳細の変更を行わずに、通常に稼働し得る。
【００３５】
ロードされたアプリケーションがレガシーＣＰＵを対象とすることが判定されると、ＣＰＵは、レガシーＣＰＵのビヘイビアに合わせるまたは近似させるために、ＢＣモードにおいて、選択した利用可能リソースを制限して（２４２）、レガシーＣＰＵ上に存在しない選択された機能を無効化して（２４４）、命令実行のレイテンシを変更して（２４６）、またはアルゴリズム詳細を変更して（２４８）、あるいはこれらのうちの２つ以上を組み合わせて、稼働する。これらの可能性の実施例は、前述されている。
【００３６】
限定としてではなく例として、選択リソースを制限して（２４２）ＣＰＵを作動させるために、ＢＣモードは、新ＣＰＵのハードウェアの好適な構成により、ＣＰＵを稼働させるオペレーティングシステムの好適な構成により、または両者のある組み合わせにより、実施され得る。例えば、前述のように、ＢＣモードにおいてＣＰＵの間接目標アレイ１０６のサイズ、リターンアドレススタック１０４のサイズ、または分岐目標バッファ１０８のサイズは、レガシーＣＰＵにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。限定としてではなく例として、ＢＣモードにおいてオペレーティングシステムまたはＣＰＵファームウェアが、間接目標アレイ１０６のサイズを、レガシーＣＰＵにおけるそれぞれのサイズに合うよう、またはより近似するよう、縮小できるように、関連ハードウェアは構成され得る。下記の擬似コードは、この実施方法の例を示す。
ｖｏｉｄ  ｆｕｎｃｔｉｏｎ  ＢＣ＿ｍｏｄｅ＿ｉｎｄｉｒｅｃｔ＿ｔａｒｇｅｔ＿ａｒｒａｙ＿ｓｉｚｅ
ｉｆ  ＢＣ＿ｍｏｄｅ  ｉｓ  ｔｒｕｅ  ｛
ｓｅｔ  ｉｎｄｉｒｅｃｔ＿ｔａｒｇｅｔ＿ａｒｒａｙ＿ｓｉｚｅ  ｔｏ  ｒｅｄｕｃｅｄ＿ｉｎｄｉｒｅｃｔ＿ｔａｒｇｅｔ＿ａｒｒａｙ＿ｓｉｚｅ
｝
【００３７】
リターンアドレススタック１０４のサイズ、または分岐目標バッファ１０８のサイズ、または他の利用可能なリソースも、同様のやり方で縮小され得る。
【００３８】
同じように、選択された機能を無効化して（２４４）ＣＰＵを作動させるために、レガシーＣＰＵ上に存在しないが新ＣＰＵ上に存在する一定のハードウェアリソース（例えばマイクロオペキャッシュ１２６）は、ＢＣモード時にオペレーティングシステムまたはＣＰＵファームウェアにより無効化可能なように、構成され得る。あるいは、レガシーＣＰＵ上に存在しないが新ＣＰＵ上に存在するハードウェアリソースは、ＢＣモード時にアプリケーションにより無視されるように構成され得る。
【００３９】
限定としてではなく例として、レガシーＣＰＵのレイテンシに合うまたは近似するように新ＣＰＵの命令実行のレイテンシを変更して（２４６）ＣＰＵを作動させるために、実行ユニット１５０のハードウェアは、ＢＣモード時に「非オペ」命令の均等物を加えてＢＣモード時に所望するレイテンシを得るように構成され得る。
【００４０】
限定としてではなく例として、新ＣＰＵの１つまたは複数のユニットの動作のアルゴリズム詳細を変更して（２４８）、新ＣＰＵが作動される。限定としてではなく例として、分岐予測ユニット１０２の動作のアルゴリズム詳細は、ＢＣモード時に変更され得る。例えば、前述のように、お互いに近い分岐命令のビヘイビアを追跡する能力がレガシーＣＰＵにおいて制限される場合、ＢＣモードにおいて分岐予測ユニット１０２は、ＢＣモード時にこのレガシーＣＰＵのビヘイビアに合うように構成され得る。あるいは、レガシーＣＰＵが実質的に異なる様式の分岐予測論理（例えば適用予測器ではなく飽和型カウンタ）を使用する場合、新ＣＰＵの分岐予測ユニット１０２は、レガシーＣＰＵの論理を含み、ＢＣモードにおいてこれを有効化可能である。別の実施態様において、新ＣＰＵの命令フェッチ及びデコードユニット１１０、ディスパッチ及びスケジューリングユニット１３０、または実行ユニット１５０の動作のアルゴリズム詳細は、レガシー論理と同様に構成され、ＢＣモードにおいて有効化可能である。
【００４１】
図３を参照すると、本開示の態様により作動するように構成されるシステム３００の説明的実施例が描かれる。本開示の態様によれば、システム３００は、組込みシステム、モバイルフォン、パーソナルコンピュータ、タブレットコンピュータ、ポータブルゲームデバイス、ワークステーション、及びゲーム機等であり得る。
【００４２】
システム３００は一般に、図１に描かれ前述された種類のＣＰＵコア及び他の機能を含み得る中央処理装置（ＣＰＵ）３２０を備える。限定としてではなく例として、ＣＰＵ３２０は、加速処理ユニット（ＡＰＵ）３１０の一部であり得、ＡＰＵ３１０は、ＣＰＵ３２０及びグラフィック処理ユニット（ＧＰＵ）３３０を単一チップ上に含む。代替実施態様において、ＣＰＵ３２０及びＧＰＵ３３０は、別個のチップ上に別個のハードウェアコンポーネントとして、実装され得る。
【００４３】
システム３００はまた、メモリ３４０を含み得る。メモリ３４０は任意で、ＣＰＵ３２０及びＧＰＵ３３０によりアクセス可能な主要メモリユニットを含み得る。ＣＰＵ３２０及びＧＰＵ３３０はそれぞれ、１つまたは複数のプロセッサコア、例えば１つのコア、２つのコア、４つのコア、８つのコア、または８つを超えるコアを、含み得る。ＣＰＵ３２０及びＧＰＵ３３０は、データバス３９０を使用して１つまたは複数のメモリユニットにアクセスするように構成され、いくつかの実施態様において、システム３００が２つ以上の異なるバスを備えると便利であり得る。
【００４４】
メモリ３４０は、例えばＲＡＭ、及びＤＲＡＭ等、アドレス指定可能なメモリを提供する集積回路の形態の１つまたは複数のメモリユニットを含み得る。メモリは、レガシーＣＰＵ上で実行されるように本来作成されたアプリケーションを稼働させている時に、ＣＰＵ３２０をＢＣモードで作動させる判定を実行する際、図２の方法を実施するように構成される実行可能命令を含む。加えて、メモリ３４０は、グラフィックリソース、グラフィックバッファ、またはグラフィックレンダリングパイプラインの他のグラフィックデータを一時的に格納する専用グラフィックメモリを含み得る。
【００４５】
ＣＰＵ３２０は、オペレーティングシステム（ＯＳ）３２１またはアプリケーション３２２（例えばテレビゲーム）を含み得るＣＰＵコードを実行するように構成され得る。ＯＳ３２１は、前述のように、ＣＰＵ３２０をＢＣモードで作動させる一定機能を実施するように構成され得る。ＣＰＵコードは、アプリケーション３２２のステートに基づいて、ＧＰＵ３３０が実施するプログラムに対し、描画コマンドまたは描画コールを発するグラフィックアプリケーションプログラミングインタフェース（ＡＰＩ）３２４を含み得る。ＣＰＵコードはまた、物理シミュレーション及び他の機能を実施し得る。ＯＳ３２１、アプリケーション３２２、またはＡＰＩ３２４のうちの１つまたは複数のためのコードの一部は、メモリ３４０、ＣＰＵ内部または外部のキャッシュ、またはＣＰＵ３２０によりアクセス可能な大容量記憶装置に、記憶され得る。
【００４６】
システム３００はまた、例えばバス３９０を介して、システムの他のコンポーネントと通信し得る周知の支援機能３５０を含み得る。このような支援機能は、入力／出力（Ｉ／Ｏ）要素３５２、ＣＰＵ及びＧＰＵにそれぞれ別個のクロックを含み得る１つまたは複数のクロック３５６、及びＣＰＵ３２０外に存在し得る１つまたは複数のレベルのキャッシュ３５８を、非限定的に含み得る。システム３００は任意で、プログラム及び／またはデータを記憶するために、ディスクドライブ、ＣＤ−ＲＯＭドライブ、フラッシュメモリ、テープドライブ、またはブルーレイドライブ等の大容量記憶装置３６０を含み得る。一実施例において、大容量記憶装置３６０は、レガシーＣＰＵを有するシステム上で稼働するように本来設計されたレガシーアプリケーションを含むコンピュータ可読媒体３６２を受信し得る。あるいは、レガシーアプリケーション３６２（またはその一部）は、メモリ３４０に記憶され得る、またはキャッシュ３５８に一部記憶され得る。
【００４７】
デバイス３００はまた、ＧＰＵ３３０が用意したレンダリング済みグラフィック３８２をユーザに提示するディスプレイユニット３８０を含み得る。デバイス３００はまた、システム１００とユーザとの間の対話を促進するユーザインタフェースユニット３７０を含み得る。ディスプレイユニット３８０は、フラットパネルディスプレイ、陰極線管（ＣＲＴ）スクリーン、タッチスクリーン、ヘッドマウントディスプレイ（ＨＭＤ）、またはテキスト、数字、図示記号、もしくは画像を表示可能な他のデバイスの形態であり得る。ディスプレイ３８０は、本明細書において説明される様々な技術により処理されたレンダリング済みグラフィック３８２を表示し得る。ユーザインタフェース３７０は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、タッチスクリーン、及び／またはグラフィカルユーザインタフェース（ＧＵＩ）と合わせて使用され得る他のデバイス等の１つまたは複数の周辺機器を含み得る。一定の実施態様において、例えばアプリケーション３２２がテレビゲームまたは他のグラフィック集約アプリケーションを含む場合、アプリケーション３２２のステート及びグラフィックの基礎コンテンツは、ユーザインタフェース３７０を通したユーザ入力により少なくとも部分的に特定され得る。
【００４８】
システム３００はまた、デバイスがネットワークを介して他のデバイスと通信することを可能にするネットワークインタフェース３７２を含み得る。ネットワークは、例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネット等の広域ネットワーク、ブルートゥース（登録商標）ネットワーク等のパーソナルエリアネットワーク、または他の種類のネットワークであり得る。図示及び説明されたコンポーネントのうちの様々なものは、ハードウェア、ソフトウェア、またはファームウェア、あるいはこれらのうちの２つ以上のある組み合わせで実施され得る。
【００４９】
本開示の態様によれば、ＣＰＵ３２０は、図２に関して前述されるように、レガシーＣＰＵのビヘイビアに合わせるまたは近似させるために、ＢＣモードにおいて、選択した利用可能リソースを制限して（２４２）、レガシーＣＰＵ上に存在しない選択された機能を無効化して（２４４）、命令実行のレイテンシを変更して（２４６）、またはアルゴリズム詳細を変更して（２４８）、あるいはこれらのうちの２つ以上を組み合わせて、作動可能な図１のＣＰＵコア１００のコンポーネント等、ハードウェアコンポーネントを含み得る。
【００５０】
本開示の態様は、レガシーシステムのために書かれたプログラムがより強力な新システム上で稼働する時に起こる後方互換性に関連する問題を克服する。新ＣＰＵをＢＣモードで、選択した利用可能リソースを制限して、レガシーＣＰＵ上に存在しない選択された機能を無効化して、命令実行のレイテンシを変更して、またはアルゴリズム詳細を変更して、あるいはこれらのうちの２つ以上を組み合わせて、稼働させることにより、新ＣＰＵは、レガシーＣＰＵのビヘイビアに整合または近似可能となる。
【００５１】
上記は、本発明の望ましい実施形態の完全な説明であるが、様々な代替物、変更物、及び均等物を使用することも可能である。従って、本発明の範囲は、前述の説明を参照して特定されるべきではなく、代わりに、添付の請求項とそれらの均等物の全範囲とを併せて参照して特定されるべきである。望ましいか否かに関わらず本明細書において説明される任意の特徴は、望ましいか否かに関わらず本明細書において説明される任意の他の特徴と組み合わせられ得る。下記の請求項において、不定冠詞「Ａ」、または「Ａｎ」は、特に明記されている場合を除いて、冠詞の後に続く１つまたは複数の名詞の数量を指す。本明細書において使用されているように、代替的要素の列挙において、用語「ｏｒ（または、もしくは、あるいは）」は、特に明記されている場合を除いて、包括的意味で使用され、例えば「ＸまたはＹ」は、Ｘのみ、Ｙのみ、またはＸとＹの両方共を対象とする。代替物として挙げられる２つ以上の要素は、一緒に組み合わせられ得る。表現「ｍｅａｎｓ  ｆｏｒ（〜ための手段）」を使用する所定の請求項においてミーンズプラスファンクション制限が明確に詳述されない限り、添付の請求項は、ミーンズプラスファンクション制限を含むように解釈されるべきではない。
【図１】
2018522335.tif 000003
【図２】
2018522335.tif 000004
【図３】
2018522335.tif 000005
【国際調査報告】
2018522335.tif 000006