(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024178432
(43)【公開日】2024-12-24
(54)【発明の名称】命令実行のレイテンシの変更による後方互換性
(51)【国際特許分類】
G06F 9/30 20180101AFI20241217BHJP
G06F 12/0895 20160101ALI20241217BHJP
G06F 12/1027 20160101ALI20241217BHJP
【FI】
G06F9/30 310C
G06F12/0895 106
G06F12/1027 115
【審査請求】有
【請求項の数】22
【出願形態】OL
(21)【出願番号】P 2024167648
(22)【出願日】2024-09-26
(62)【分割の表示】P 2023082094の分割
【原出願日】2016-07-11
(31)【優先権主張番号】14/810,334
(32)【優先日】2015-07-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】サーニー、マーク エヴァン
(72)【発明者】
【氏名】シンプソン、デイヴィッド
(57)【要約】 (修正有)
【課題】新CPUのレガシーCPUに対する後方互換を可能にする方法及びシステムを提供する。
【解決手段】新CPU上でアプリケーションを実行する新デバイスは、アプリケーションがレガシーCPUを有するレガシーデバイス用であるか否かを判定し、アプリケーションがレガシーデバイス用である場合、新CPUは、レガシーCPU上に存在しない新CPUの選択された機能を無効化するか、新CPUの命令実行のレイテンシをレガシーCPUのレイテンシに合うか或いは近似するように変更するか、新CPUの1つまたは複数のユニットの動作のアルゴリズム詳細をレガシーCPUの対応ユニットの動作のアルゴリズム詳細に合うか又は近似するように変更して、アプリケーションを実行する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
新CPU上でアプリケーションを実行する新デバイスにより、前記アプリケーションがレガシーCPUを有するレガシーデバイス用であるか否かを判定することと、
前記アプリケーションが前記レガシーデバイス用であると前記新デバイスが判定した場合、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することと
を含む方法。
【請求項2】
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のL1キャッシュの連想度を、前記レガシーCPU上のL1キャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することを含む、請求項1に記載の方法。
【請求項3】
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のマイクロオペキャッシュの連想度を、前記レガシーCPU上のマイクロオペキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することを含む、請求項1に記載の方法。
【請求項4】
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のITLBキャッシュ階層の連想度を、前記レガシーCPU上のITLBキャッシュ階層の連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することを含む、請求項1に記載の方法。
【請求項5】
前記新CPU上のITLBキャッシュ階層の連想度を、前記レガシーCPU上のITLBキャッシュ階層の連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のITLBキャッシュ階層のサイズを縮小することを含む、請求項4に記載の方法。
【請求項6】
前記新CPU上のITLBキャッシュ階層のサイズを縮小することは、前記新CPU上のITLBキャッシュ階層のレベルの数を削減することを含む、請求項5に記載の方法。
【請求項7】
前記新CPU上のITLBキャッシュ階層のサイズを縮小することは、前記新CPU上のITLBキャッシュ階層の1つまたは複数のレベルのサイズを変更することを含む、請求項5に記載の方法。
【請求項8】
前記新CPU上のITLBキャッシュ階層の1つまたは複数のレベルのサイズを変更することは、前記新CPU上のITLBキャッシュ階層のキャッシュサイズ、ブロックサイズ、セット内のブロック数を変更することを含む、請求項7に記載の方法。
【請求項9】
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のフルアソシアティブ型キャッシュを4ウェイキャッシュとして作動させることを含む、請求項1に記載の方法。
【請求項10】
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のフルアソシアティブ型キャッシュを2ウェイキャッシュとして作動させることを含む、請求項1に記載の方法。
【請求項11】
前記レガシーCPU上のキャッシュは前記新CPU上のキャッシュよりも大きく低連想度であり、
前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することは、前記新CPU上のキャッシュのキャッシュサイズを縮小し、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュのビヘイビアに合うまたは近似するように縮小することを含む、請求項1に記載の方法。
【請求項12】
アプリケーションの命令を実行するように構成される新中央処理装置(CPU)を備えるシステムであって、前記新CPUは論理ユニットを有し、
前記新CPUは、前記アプリケーションがレガシーCPUを有するレガシーデバイス用であるか否かを判定し、前記アプリケーションが前記レガシーデバイス用であると判定した場合に、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成され、
前記新CPUは、前記新CPUの命令デコードユニットの動作のアルゴリズム詳細を、前記レガシーCPUの命令デコードユニットの動作のアルゴリズム詳細に合うまたは近似するように変更することにより、前記新CPUの1つまたは複数のユニットの動作のアルゴリズム詳細を、前記レガシーCPUの対応ユニットの動作のアルゴリズム詳細に合うまたは近似するように変更して、前記アプリケーションを実行するように構成される、
システム。
【請求項13】
前記新CPUは、前記新CPU上のL1キャッシュの連想度を、前記レガシーCPU上のL1キャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【請求項14】
前記新CPUは、前記新CPU上のマイクロオペキャッシュの連想度を、前記レガシーCPU上のマイクロオペキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【請求項15】
前記新CPUは、前記新CPU上のITLBキャッシュ階層の連想度を、前記レガシーCPU上のITLBキャッシュ階層の連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行することにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【請求項16】
前記新CPUは、前記新CPU上のITLBキャッシュ階層のサイズを縮小することにより、前記新CPU上のITLBキャッシュ階層の連想度を、前記レガシーCPU上のITLBキャッシュ階層の連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項15に記載のシステム。
【請求項17】
前記新CPU上のITLBキャッシュ階層のサイズを縮小することは、前記新CPU上のITLBキャッシュ階層のレベルの数を削減することを含む、請求項16に記載のシステム。
【請求項18】
前記新CPU上のITLBキャッシュ階層のサイズを縮小することは、前記新CPU上のITLBキャッシュ階層の1つまたは複数のレベルのサイズを変更することを含む、請求項16に記載のシステム。
【請求項19】
前記新CPU上のITLBキャッシュ階層の1つまたは複数のレベルのサイズを変更することは、前記新CPU上のITLBキャッシュ階層のキャッシュサイズ、ブロックサイズ、セット内のブロック数を変更することを含む、請求項18に記載のシステム。
【請求項20】
前記新CPUは、前記新CPU上のフルアソシアティブ型キャッシュを4ウェイキャッシュとして作動させることにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【請求項21】
前記新CPUは、前記新CPU上のフルアソシアティブ型キャッシュを2ウェイキャッシュとして作動させることにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【請求項22】
前記レガシーCPU上のキャッシュは前記新CPU上のキャッシュよりも大きく低連想度であり、
前記新CPUは、前記新CPU上のキャッシュのキャッシュサイズを縮小し、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュのビヘイビアに合うまたは近似するように縮小することにより、前記新CPU上のキャッシュの連想度を、前記レガシーCPU上のキャッシュの連想度に合うまたは近似するように変更して、前記新CPU上で前記アプリケーションを実行するように構成される、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、同一出願人による2015年7月27日に出願された米国仮特許出願第14/810,334号に対する優先権を主張し、当仮出願の内容全体は、参照により本明細書に組み込まれるものとする。
【0002】
本開示の態様は、コンピュータシステム上のコンピュータアプリケーションの実行に関する。特に、本開示の態様は、コンピュータシステムのより古いバージョン用に設計されたアプリケーション/タイトルに対する後方互換性を提供するシステムまたは方法に関する。
【背景技術】
【0003】
最新のコンピュータシステムは多くの場合、様々なコンピューティングタスクに多数の異なるプロセッサを使用する。例えば、最新コンピュータは、多数の中央処理装置(CPU)に加えて、グラフィックスパイプラインにおける一定の計算タスク専用のグラフィック処理ユニット(GPU)、または音響デジタル信号処理専用ユニットを有し得、これらは全て、他のユニットも同様に含み得る加速処理ユニット(APU)の一部である可能性がある。これらのプロセッサは、APUの内部にあり得るまたはコンピュータのマザーボード上に外部的に配置され得るバスを使用して、様々な種類のメモリに接続される。
【0004】
ゲーム機またはスマートフォン等のコンピュータシステム(「レガシーデバイス」)のためにアプリケーションセットは作成されることが一般的であり、コンピュータシステムの変形版またはさらなる先進版がリリースされると(「新デバイス」)、レガシーデバイスのアプリケーションは、新デバイスのプロパティを考慮した再コンパイルまたは任意の変更なしに、新デバイス上で完璧に稼働することが好ましくある。そのハードウェアアーキテクチャ、ファームウェア、及びオペレーティングシステム内に含まれるような新デバイスの当態様はしばしば「後方互換性」と称される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
後方互換性は多くの場合、新デバイスがレガシーデバイス用に作られたプログラムを実行可能であるバイナリ互換性を通して達成される。しかしながら、ゲーム機またはスマートフォンの場合がそうであるように、デバイスのカテゴリのリアルタイムビヘイビアがデバイスの動作にとって重要である場合、新デバイスの動作速度における有意差により、新デバイスはレガシーデバイスに関して後方互換性を有することができなくなり得る。新デバイスがレガシーデバイスよりも低性能である場合に、後方互換性を妨げる問題が生じ、これはまた、レガシーデバイスと比べて、新デバイスが高性能である場合、または異なる性能特性を有する場合にも当てはまる。
【0006】
このような観点から、本開示の態様は生じる。
【課題を解決するための手段】
【0007】
本開示の教示は、添付図面と合わせて以下の詳細説明を考察することにより、容易に理解可能である。
【図面の簡単な説明】
【0008】
【
図1】本開示の態様による後方互換モードで作動するように構成され得る中央処理装置(CPU)コアの実施例を示すブロック図である。
【
図2】本開示の態様による後方互換モードでCPUを作動させる可能プロセスフローの実施例を示すフロー図である。
【
図3】本開示の態様による後方互換性モードで作動するように構成されるCPUを有するデバイスのブロック図である。
【発明を実施するための形態】
【0009】
以下の詳細説明は例示目的で多数の具体的詳細を含むが、当業者の誰もが以下の詳細に対する多数の変形及び改変が本発明の範囲内であることを理解するであろう。従って、後述の発明の例示的実施形態は、請求される発明に対する普遍性を損なうことなく、かつ請求される発明に制限を課すことなく、明記される。
導入
【0010】
[イントロダクション]
新デバイスのCPUがレガシーデバイスとのバイナリ互換性を有する(すなわちレガシーデバイス用に作成されたプログラムを実行可能である)としても、新デバイスのCPUとレガシーデバイスのCPUとの性能特性の違いにより、レガシーアプリケーションにおいてエラーが生じ、その結果、新デバイスは後方互換性を有さなくなる。
【0011】
新デバイスのCPUがレガシーデバイスのCPUよりも低性能である場合、表示タイミング、または音響ストリーム出力等により課されるリアルタイムデッドラインを満たすことが不可能なことから、レガシーアプリケーションにおいて多数のエラーが生じ得る。新デバイスのCPUがレガシーデバイスのCPUよりも大幅に高性能である場合、このような高速動作を試したことがない結果、レガシーアプリケーションにおいて多数のエラーが生じ得る。例えば、生産者-消費者モデルにおいて、データ消費者(例えばCPU)が本来予期される速度より高速で作動する場合、データ消費者は、データ生産者(例えばコンピュータのある他のコンポーネント)がデータアクセスを可能にする前に、データにアクセスすることを試み得る。あるいは、データ生産者(例えばCPU)が本来予期される速度より高速で作動する場合、データ生産者は、データ消費者(例えばコンピュータのある他のコンポーネント)がまだ使用しているデータを上書きし得る。
【0012】
加えて、CPUによるコード実行速度は実行される特定コードの特性によるため、レガシーデバイスに対する新デバイスのCPUの性能向上度は、実行される特定コードによる可能性がある。これは、前述の生産者-消費者モデルにおいて、生産者及び消費者は両者ともCPUでありながらレガシーハードウェア上で対応したことのない相対速度でレガシーアプリケーションのコードを実行するという問題を引き起こし得る。
【0013】
[実施例]
本開示の態様は、レガシーコンピュータシステムに関してより高度の後方互換性を可能にし得るコンピュータシステム及び方法を説明する。
【0014】
本開示の実施態様において、後方互換モード(「BCモード」)での実行時には、CPUに関する一定のリソースは制限され、CPUの動作の様々な態様は変更される。
【0015】
様々なリソースの制限により、BCモードのCPUの性能はレガシーCPUの性能に非常に近づき、その結果、CPUの予期しない性能特性によるレガシーアプリケーション内のエラーはより少なくなる。
【0016】
加えて、レガシーCPU上に存在しないCPUの一定の機能は、BCモードにおいて無効化され、CPUの命令実行のレイテンシは、レガシーCPUのレイテンシと等しくなるまたはそれに近づくようにBCモードにおいて変更され、CPUの様々なユニットの動作のアルゴリズム詳細は、レガシーCPUのこれらのユニットの動作のアルゴリズム詳細に一致するまたは近づくようにBCモードにおいて変更され得る。その結果、BCモード時に新CPUの性能はレガシーCPUの性能に非常に近づき、その結果、新CPUの予期しない性能特性によるレガシーアプリケーション内のエラーはより少なくなる。
【0017】
下記は、CPUの汎用アーキテクチャ、並びにBCモード時の特定リソースの制限、機能の無効化、レイテンシの変更、及び動作のアルゴリズム詳細の変更に関する本開示の様々な態様を説明する。
【0018】
図1は、CPUコア100の汎用アーキテクチャを描く。CPUコア100は通常、分岐が行われるか否かを予測することを試み、また(ブランチが行われるイベントにおいて)分岐の宛先アドレスの予測を試みる分岐予測ユニット102を含む。これらの予測が正しいほど、投機実行されるコードの効率は向上するため、高精度の分岐予測が非常に望ましくある。分岐予測ユニット102は、サブルーチンからリターンアドレスを追跡するリターンアドレススタック104と、間接分岐の宛先を追跡する間接目標アレイ106と、ブランチの結果アドレスをより正確に予測するために分岐の過去履歴を追跡する分岐目標バッファ108及びその関連予測論理といった、高度に専門化されたサブユニットを含み得る。
【0019】
本開示の一定態様によれば、BCモードにおいて新CPUの間接目標アレイ106のサイズ、リターンアドレススタック104のサイズ、または分岐目標バッファ108のサイズは、レガシーCPUにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。明瞭化すると、当削減は、例えばリターンアドレススタックの一部の利用を許可しないことにより追跡可能なコール及び関連リターンの数を削減する等、リソースの使用可能部分を縮小する形態を取り、全リソースはBCモードでなくなった時に利用可能となる。
【0020】
本開示の一定態様によれば、BCモードにおいて、新CPUの分岐目標バッファ108の動作のアルゴリズム詳細、及びその関連予測論理は、レガシーCPUのこれらと合うように変更され得る。限定としてではなく例として、お互いに近い分岐命令のビヘイビアを追跡する能力がレガシーCPUにおいて制限される場合、BCモードの新CPUは当レガシーCPUのビヘイビアに整合し得る。または、レガシーCPUが実質的に異なる様式の分岐予測論理(例えば適用予測器ではなく飽和型カウンタ)を使用する場合、新CPUはレガシーCPUの論理を含み、BCモードにおいてこれを有効化し得る。
【0021】
本開示の一定態様によれば、万一新CPUの分岐目標バッファ108及びその関連予測論理が専用ループ予測器を含んだとしても、レガシーCPU上に専用ループ予測器は存在しないため、BCモードにおいて新CPUの専用ループ予測器は無効化され得る。
【0022】
CPUコア100は、命令フェッチユニット112と命令バイトバッファ114と命令デコードユニット116とを含む命令フェッチ及びデコードユニット110を通常含む。CPUコア100はまた、多数の命令関連キャッシュ及び命令変換索引バッファ(ITLB)120を通常含む。これらは、仮想アドレスを、ページテーブルエントリ、及びページディレクトリエントリ等の物理アドレス変換情報にキャッシュするITLBキャッシュ階層124を含み得る。当情報は、命令の仮想アドレスを物理アドレスに変換するために使用され、これにより命令フェッチユニット112は、キャッシュ階層から命令をロード可能となる。限定としてではなく例として、プログラム命令は、コア内に存在するレベル1命令キャッシュ(L1I-キャッシュ)122、並びにCPUコア100外に存在する他のキャッシュレベル176を含むキャッシュ階層に従ってキャッシュされ得、これらのキャッシュは、命令の物理アドレスを用いて、プログラム命令のために最初に検索される。命令が見つからない場合には、命令はシステムメモリ101からロードされる。アーキテクチャによるが、後述のように、デコードされた命令を含むマイクロオペキャッシュ126も存在し得る。
【0023】
本開示の一定態様において、BCモード時にL1I-キャッシュ124、マイクロオペキャッシュ126、または様々なレベルのITLBキャッシュ階層122のサイズもしくは連想度は、レガシーCPUにおけるそれぞれのサイズ及び連想度に合うように、またはより近似するように、変更され得る。限定としてではなく例として、ITLBキャッシュ階層124のサイズの変更、例えば縮小は、(1)レベルの数を削減すること、または(2)1つまたは複数のレベルのサイズ(例えばキャッシュサイズ、ブロックサイズ、セット内のブロック数)を変更することを伴い得る。キャッシュの連想度を変更することは、例えばフルアソシアティブ型キャッシュを4ウェイまたは2ウェイキャッシュとして作動させることを伴い得る。本開示の態様は、命令関連キャッシュまたはITLBのサイズまたは連想度が縮小された実施態様を含むが、本開示はこのような実施態様に限定されない。例えば、レガシーCPUは、レガシーCPU内で低連想度(例えば4ウェイの代わりに2ウェイ)であるより大きなキャッシュを有することも可能である。このような事例において、新CPUはBCモードで、レガシーCPU上のキャッシュのビヘイビアに合うまたは近似するように拡張された対応キャッシュサイズ及び縮小された連想度で、稼働し得る。
【0024】
一旦プログラム命令がフェッチされると、これらは通常、命令バイトバッファ114に配置され、命令フェッチ及びデコードユニット110により処理されるのを待つ。デコードは非常に複雑なプロセスであり得、各サイクルで複数の命令をデコードすることは困難であるため、命令整列に対する制限、またはサイクル中にデコード可能な命令数を制限するような命令の種類が存在し得る。アーキテクチャによるが、デコードされた命令はマイクロオペキャッシュ126に配置され得るため(新CPU上に1つ存在するならば)、プログラム命令の後続利用の際、デコード段階は回避可能となる。
【0025】
本開示の一定態様において、BCモード時に新CPUの命令フェッチ及びデコードユニット110の動作のアルゴリズム詳細は、レガシーCPUのこれらと合うように変更され得る。限定としてではなく例として、レガシーCPUが、命令バイトバッファ114における特定領域内でオペコードによる命令のデコードを制限する場合、新CPUも同様にデコードを制限し得る。
【0026】
本開示の一定態様において、万一マイクロオペキャッシュ126が新CPU上に存在し、レガシーCPU上に存在しない場合には、BCモードにおいて新CPUのマイクロオペキャッシュ126は無効化され得る。
【0027】
デコードされた命令は通常、ディスパッチ及びスケジューリング130のために、他のユニットへ渡される。これらのユニットは、CPUパイプラインの余りを通して命令のステータスを追跡するために、リタイアメントキュー132を使用し得る。また、数多くのCPUアーキテクチャ上において限定数の汎用及びSIMDレジスタが利用可能であることから、レジスタリネーミングが行われ得る。論理レジスタ(アーキテクチャレジスタとも知られる)は実行される命令のストリーム内で起こるため、レジスタリネーミングにおいて、物理レジスタ140がこれらを表すように割り当てられる。物理レジスタ140は、特定のCPUアーキテクチャ上で利用可能な論理レジスタのサイズよりもはるかに大きなサイズであり得る単一命令多重データ(SIMD)レジスタバンク142及び汎用(GP)レジスタバンク144を含み、その結果、性能が大幅に向上され得る。レジスタリネーミング134が行われた後、命令は通常、多数の命令がサイクルごとに(依存関係に基づき)実行ユニット150により実行されるために選択され得るスケジューリングキュー136に配置される。
【0028】
本開示の一定態様において、BCモード時にCPUのリタイアメントキュー132のサイズ、スケジューリングキュー136のサイズ、またはSIMDレジスタバンク142もしくはGPレジスタバンク144のサイズは、レガシーCPUにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。明瞭化すると、当削減は、例えばBCモードにおいてアプリケーションにより利用可能な物理レジスタの数を制限する等、リソースの使用可能部分を縮小する形態を取り、全レジスタバンクはBCモードでなくなった時にアプリケーションにより使用可能となる。
【0029】
実行ユニット150は通常、SIMDレジスタバンク142に含まれる128ビット以上のSIMDレジスタに含まれる多重データフィールドに対し多数の並列動作を行うSIMDパイプ152と、GPレジスタバンク144に含まれるGPRに対し多数の論理、演算、及び雑多動作を行う論理演算ユニット(ALU)154と、メモリが記憶またはロードされるべきアドレスを計算するアドレス生成ユニット(AGU)156とを含む。各種類の実行ユニットの多重インスタンスが存在し得、インスタンスは異なる能力を有し得、例えば特定SIMDパイプ152は、浮動小数点乗算演算を行うことは可能であるが、浮動小数点加算演算を行うことは不可能であり得る。
【0030】
本開示の一定態様において、BCモード時にALU、AGU、またはSIMDパイプの使用可能な数は、レガシーCPU上に存在するこのようなユニットのそれぞれの数に一致するように、またはより近似するように、削減され得る。
【0031】
本開示の一定態様において、BCモード時に新CPUの命令実行のレイテンシは、レガシーCPUのレイテンシと等しくなるまたは近くなるように変更され得る。例えばBCモード時に新CPU上の除算演算のレイテンシは、レガシーCPU上の除算演算のレイテンシに合うように、またはより近似するように、延長され得る(例えばよりゆっくり結果を計算することにより、またはパイプラインの後続段階へ結果の転送を遅らせることにより)。
【0032】
ストア処理及びロード処理は通常、ストアキュー162及びロードキュー164にバッファされ、このため数多くのメモリ動作が並列で実行可能となる。メモリ動作を支援するために、CPUコア100は通常、多数のデータ関連キャッシュ及びデータ変換索引バッファ(DTLB)170を含む。DTLBキャッシュ階層172は、仮想アドレスを、ページテーブルエントリ、及びページディレクトリエントリ等の物理アドレス変換にキャッシュし、当情報は、メモリ動作の仮想アドレスを物理アドレスに変換するために使用されるため、システムメモリからデータを記憶またはロードすることが可能となる。データは通常、コア内に存在するレベル1データキャッシュ(L1D-キャッシュ)174、並びにコア100外に存在する他のキャッシュレベル176にキャッシュされる。
【0033】
本開示の一定態様において、BCモード時にL1D-キャッシュ174、または様々なレベルのDTLBキャッシュ階層172のサイズ及び連想度は、レガシーCPUにおけるそれぞれのサイズ及び連想度に合うように、またはより近似するように、縮小され得る。本開示の一定態様において、BCモード時にCPUのストアキュー162またはロードキュー164のサイズ(例えば許容可能な未対応ストア処理またはロード処理数)は、レガシーCPUにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。
【0034】
図2は、本開示の態様による方法の可能プロセスフローの実施例を示すフロー図である。方法は、例えば新CPUを有するシステムにアプリケーションをロードすることにより、201にて始まる。210に示されるように、ソフトウェアID、ソフトウェアチェックサム、ソフトウェアに対応付けられたメタデータ、メディアタイプ、または他の機構の検査を介して、アプリケーションが新CPU用に設計されたか、またはシステムの前のバージョン用に設計されたか、判定が行われる。このような判定は、システム上で稼働するソフトウェアにおいて、またはシステムのハードウェアにおいて、実施され得る。ロードされたアプリケーションが新CPUを対象とすることが判定されると、220に示されるように、システムは通常に稼働し得る。例えば、CPUは、レガシーCPUのビヘイビアに合わせるまたは近似させるための使用可能なリソースの制限、機能の無効化、命令実行のレイテンシの変更、またはアルゴリズム詳細の変更を行わずに、通常に稼働し得る。
【0035】
ロードされたアプリケーションがレガシーCPUを対象とすることが判定されると、CPUは、レガシーCPUのビヘイビアに合わせるまたは近似させるために、BCモードにおいて、選択した利用可能リソースを制限して(242)、レガシーCPU上に存在しない選択された機能を無効化して(244)、命令実行のレイテンシを変更して(246)、またはアルゴリズム詳細を変更して(248)、あるいはこれらのうちの2つ以上を組み合わせて、稼働する。これらの可能性の実施例は、前述されている。
【0036】
限定としてではなく例として、選択リソースを制限して(242)CPUを作動させるために、BCモードは、新CPUのハードウェアの好適な構成により、CPUを稼働させるオペレーティングシステムの好適な構成により、または両者のある組み合わせにより、実施され得る。例えば、前述のように、BCモードにおいてCPUの間接目標アレイ106のサイズ、リターンアドレススタック104のサイズ、または分岐目標バッファ108のサイズは、レガシーCPUにおけるそれぞれのサイズに合うように、またはより近似するように、縮小され得る。限定としてではなく例として、BCモードにおいてオペレーティングシステムまたはCPUファームウェアが、間接目標アレイ106のサイズを、レガシーCPUにおけるそれぞれのサイズに合うよう、またはより近似するよう、縮小できるように、関連ハードウェアは構成され得る。下記の擬似コードは、この実施方法の例を示す。
void function BC_mode_indirect_target_array_size
if BC_mode is true {
set indirect_target_array_size to reduced_indirect_target_array_size
}
【0037】
リターンアドレススタック104のサイズ、または分岐目標バッファ108のサイズ、または他の利用可能なリソースも、同様のやり方で縮小され得る。
【0038】
同じように、選択された機能を無効化して(244)CPUを作動させるために、レガシーCPU上に存在しないが新CPU上に存在する一定のハードウェアリソース(例えばマイクロオペキャッシュ126)は、BCモード時にオペレーティングシステムまたはCPUファームウェアにより無効化可能なように、構成され得る。あるいは、レガシーCPU上に存在しないが新CPU上に存在するハードウェアリソースは、BCモード時にアプリケーションにより無視されるように構成され得る。
【0039】
限定としてではなく例として、レガシーCPUのレイテンシに合うまたは近似するように新CPUの命令実行のレイテンシを変更して(246)CPUを作動させるために、実行ユニット150のハードウェアは、BCモード時に「非オペ」命令の均等物を加えてBCモード時に所望するレイテンシを得るように構成され得る。
【0040】
限定としてではなく例として、新CPUの1つまたは複数のユニットの動作のアルゴリズム詳細を変更して(248)、新CPUが作動される。限定としてではなく例として、分岐予測ユニット102の動作のアルゴリズム詳細は、BCモード時に変更され得る。例えば、前述のように、お互いに近い分岐命令のビヘイビアを追跡する能力がレガシーCPUにおいて制限される場合、BCモードにおいて分岐予測ユニット102は、BCモード時にこのレガシーCPUのビヘイビアに合うように構成され得る。あるいは、レガシーCPUが実質的に異なる様式の分岐予測論理(例えば適用予測器ではなく飽和型カウンタ)を使用する場合、新CPUの分岐予測ユニット102は、レガシーCPUの論理を含み、BCモードにおいてこれを有効化可能である。別の実施態様において、新CPUの命令フェッチ及びデコードユニット110、ディスパッチ及びスケジューリングユニット130、または実行ユニット150の動作のアルゴリズム詳細は、レガシー論理と同様に構成され、BCモードにおいて有効化可能である。
【0041】
図3を参照すると、本開示の態様により作動するように構成されるシステム300の説明的実施例が描かれる。本開示の態様によれば、システム300は、組込みシステム、モバイルフォン、パーソナルコンピュータ、タブレットコンピュータ、ポータブルゲームデバイス、ワークステーション、及びゲーム機等であり得る。
【0042】
システム300は一般に、
図1に描かれ前述された種類のCPUコア及び他の機能を含み得る中央処理装置(CPU)320を備える。限定としてではなく例として、CPU320は、加速処理ユニット(APU)310の一部であり得、APU310は、CPU320及びグラフィック処理ユニット(GPU)330を単一チップ上に含む。代替実施態様において、CPU320及びGPU330は、別個のチップ上に別個のハードウェアコンポーネントとして、実装され得る。
【0043】
システム300はまた、メモリ340を含み得る。メモリ340は任意で、CPU320及びGPU330によりアクセス可能な主要メモリユニットを含み得る。CPU320及びGPU330はそれぞれ、1つまたは複数のプロセッサコア、例えば1つのコア、2つのコア、4つのコア、8つのコア、または8つを超えるコアを、含み得る。CPU320及びGPU330は、データバス390を使用して1つまたは複数のメモリユニットにアクセスするように構成され、いくつかの実施態様において、システム300が2つ以上の異なるバスを備えると便利であり得る。
【0044】
メモリ340は、例えばRAM、及びDRAM等、アドレス指定可能なメモリを提供する集積回路の形態の1つまたは複数のメモリユニットを含み得る。メモリは、レガシーCPU上で実行されるように本来作成されたアプリケーションを稼働させている時に、CPU320をBCモードで作動させる判定を実行する際、
図2の方法を実施するように構成される実行可能命令を含む。加えて、メモリ340は、グラフィックリソース、グラフィックバッファ、またはグラフィックレンダリングパイプラインの他のグラフィックデータを一時的に格納する専用グラフィックメモリを含み得る。
【0045】
CPU320は、オペレーティングシステム(OS)321またはアプリケーション322(例えばテレビゲーム)を含み得るCPUコードを実行するように構成され得る。OS321は、前述のように、CPU320をBCモードで作動させる一定機能を実施するように構成され得る。CPUコードは、アプリケーション322のステートに基づいて、GPU330が実施するプログラムに対し、描画コマンドまたは描画コールを発するグラフィックアプリケーションプログラミングインタフェース(API)324を含み得る。CPUコードはまた、物理シミュレーション及び他の機能を実施し得る。OS321、アプリケーション322、またはAPI324のうちの1つまたは複数のためのコードの一部は、メモリ340、CPU内部または外部のキャッシュ、またはCPU320によりアクセス可能な大容量記憶装置に、記憶され得る。
【0046】
システム300はまた、例えばバス390を介して、システムの他のコンポーネントと通信し得る周知の支援機能350を含み得る。このような支援機能は、入力/出力(I/O)要素352、CPU及びGPUにそれぞれ別個のクロックを含み得る1つまたは複数のクロック356、及びCPU320外に存在し得る1つまたは複数のレベルのキャッシュ358を、非限定的に含み得る。システム300は任意で、プログラム及び/またはデータを記憶するために、ディスクドライブ、CD-ROMドライブ、フラッシュメモリ、テープドライブ、またはブルーレイドライブ等の大容量記憶装置360を含み得る。一実施例において、大容量記憶装置360は、レガシーCPUを有するシステム上で稼働するように本来設計されたレガシーアプリケーションを含むコンピュータ可読媒体362を受信し得る。あるいは、レガシーアプリケーション362(またはその一部)は、メモリ340に記憶され得る、またはキャッシュ358に一部記憶され得る。
【0047】
デバイス300はまた、GPU330が用意したレンダリング済みグラフィック382をユーザに提示するディスプレイユニット380を含み得る。デバイス300はまた、システム100とユーザとの間の対話を促進するユーザインタフェースユニット370を含み得る。ディスプレイユニット380は、フラットパネルディスプレイ、陰極線管(CRT)スクリーン、タッチスクリーン、ヘッドマウントディスプレイ(HMD)、またはテキスト、数字、図示記号、もしくは画像を表示可能な他のデバイスの形態であり得る。ディスプレイ380は、本明細書において説明される様々な技術により処理されたレンダリング済みグラフィック382を表示し得る。ユーザインタフェース370は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、タッチスクリーン、及び/またはグラフィカルユーザインタフェース(GUI)と合わせて使用され得る他のデバイス等の1つまたは複数の周辺機器を含み得る。一定の実施態様において、例えばアプリケーション322がテレビゲームまたは他のグラフィック集約アプリケーションを含む場合、アプリケーション322のステート及びグラフィックの基礎コンテンツは、ユーザインタフェース370を通したユーザ入力により少なくとも部分的に特定され得る。
【0048】
システム300はまた、デバイスがネットワークを介して他のデバイスと通信することを可能にするネットワークインタフェース372を含み得る。ネットワークは、例えば、ローカルエリアネットワーク(LAN)、インターネット等の広域ネットワーク、ブルートゥース(登録商標)ネットワーク等のパーソナルエリアネットワーク、または他の種類のネットワークであり得る。図示及び説明されたコンポーネントのうちの様々なものは、ハードウェア、ソフトウェア、またはファームウェア、あるいはこれらのうちの2つ以上のある組み合わせで実施され得る。
【0049】
本開示の態様によれば、CPU320は、
図2に関して前述されるように、レガシーCPUのビヘイビアに合わせるまたは近似させるために、BCモードにおいて、選択した利用可能リソースを制限して(242)、レガシーCPU上に存在しない選択された機能を無効化して(244)、命令実行のレイテンシを変更して(246)、またはアルゴリズム詳細を変更して(248)、あるいはこれらのうちの2つ以上を組み合わせて、作動可能な
図1のCPUコア100のコンポーネント等、ハードウェアコンポーネントを含み得る。
【0050】
本開示の態様は、レガシーシステムのために書かれたプログラムがより強力な新システム上で稼働する時に起こる後方互換性に関連する問題を克服する。新CPUをBCモードで、選択した利用可能リソースを制限して、レガシーCPU上に存在しない選択された機能を無効化して、命令実行のレイテンシを変更して、またはアルゴリズム詳細を変更して、あるいはこれらのうちの2つ以上を組み合わせて、稼働させることにより、新CPUは、レガシーCPUのビヘイビアに整合または近似可能となる。
【0051】
上記は、本発明の望ましい実施形態の完全な説明であるが、様々な代替物、変更物、及び均等物を使用することも可能である。従って、本発明の範囲は、前述の説明を参照して特定されるべきではなく、代わりに、添付の請求項とそれらの均等物の全範囲とを併せて参照して特定されるべきである。望ましいか否かに関わらず本明細書において説明される任意の特徴は、望ましいか否かに関わらず本明細書において説明される任意の他の特徴と組み合わせられ得る。下記の請求項において、不定冠詞「A」、または「An」は、特に明記されている場合を除いて、冠詞の後に続く1つまたは複数の名詞の数量を指す。本明細書において使用されているように、代替的要素の列挙において、用語「or(または、もしくは、あるいは)」は、特に明記されている場合を除いて、包括的意味で使用され、例えば「XまたはY」は、Xのみ、Yのみ、またはXとYの両方共を対象とする。代替物として挙げられる2つ以上の要素は、一緒に組み合わせられ得る。表現「means for(~ための手段)」を使用する所定の請求項においてミーンズプラスファンクション制限が明確に詳述されない限り、添付の請求項は、ミーンズプラスファンクション制限を含むように解釈されるべきではない。