(57)【要約】  複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための処理回路を備える装置が提供される。少なくとも１つのメモリシステム構成要素が、データにアクセスするためのメモリトランザクションを処理し、各メモリトランザクションは、メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する。少なくとも１つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定されたパーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するように構成される。メモリトランザクション進行制御回路は、メモリトランザクション進行パラメータの選択されたセットに依存してメモリトランザクションの進行を制御する。
2020514868.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための処理回路と、
データにアクセスするためのメモリトランザクションを処理するための少なくとも１つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも１つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するように構成される、少なくとも１つのメモリシステム構成要素と、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と
を備える、装置。
【請求項２】
前記メモリトランザクション進行パラメータのセットが、前記メモリトランザクションが処理されるプライオリティを示すためのプライオリティ構成を含む、
請求項１に記載の装置。
【請求項３】
前記プライオリティ構成が内部プライオリティを含み、
前記少なくとも１つのメモリシステム構成要素が、前記内部プライオリティで前記メモリトランザクションを処理することになる、
請求項２に記載の装置。
【請求項４】
前記プライオリティ構成が、前記メモリトランザクションが処理される下流プライオリティを含む、
請求項２に記載の装置。
【請求項５】
前記少なくとも１つのメモリシステム構成要素が前記メモリトランザクションを少なくとも１つの他の下流のメモリシステム構成要素に渡すとき、前記トランザクションは、メモリトランザクション進行パラメータの複数のセットのうちの前記１つを選択したメモリシステム構成要素が前記メモリトランザクションを処理したのと同じプライオリティで前記メモリトランザクションを処理するという指示と共に渡される、
請求項２に記載の装置。
【請求項６】
前記メモリトランザクション進行パラメータのセットが、各々が前記少なくとも１つのメモリシステム構成要素のうちの１つと関連付けられた複数のプライオリティ構成を含み、
前記少なくとも１つのメモリシステム構成要素のそれぞれは、その関連するプライオリティ構成に従って前記メモリトランザクションを処理することになる、
請求項２に記載の装置。
【請求項７】
前記メモリトランザクション進行パラメータのセットが、前記少なくとも１つのメモリシステム構成要素に関連する制限を含む、
請求項１に記載の装置。
【請求項８】
前記制限が前記少なくとも１つのメモリシステム構成要素の帯域幅制限である、
請求項７に記載の装置。
【請求項９】
前記帯域幅制限が最大帯域幅を含む、
請求項８に記載の装置。
【請求項１０】
前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最大帯域幅を超えると、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの優先度を下げる、
請求項９に記載の装置。
【請求項１１】
前記帯域幅制限が最小帯域幅を含む、
請求項８に記載の装置。
【請求項１２】
前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最小帯域幅を下回ると、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの優先度を上げる、
請求項１１に記載の装置。
【請求項１３】
前記帯域幅制限が下限および上限を含み、前記下限は前記上限よりも低く、
前記メモリトランザクションルーティング制御回路は、所与のパーティション識別子を指定するトランザクションに応答するために、前記メモリシステム構成要素の現在の帯域幅使用量に基づいて前記所与のパーティション識別子を指定するトランザクションの優先度を設定し、
前記現在の帯域幅使用量が前記下限を下回るとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を第１のレベルに設定し、
前記現在の帯域幅使用量が前記下限と前記上限との間にあるとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を前記第１のレベルよりも低い重要度の第２のレベルに設定し、
前記現在の帯域幅使用量が前記上限を超える場合、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を、前記第２のレベルよりも低い重要度の第３のレベルに設定する、
請求項８に記載の装置。
【請求項１４】
前記制限が、前記少なくとも１つのメモリシステム構成要素の未処理のトランザクション制限であり、
前記少なくとも１つのメモリシステム構成要素は、他のメモリシステム構成要素に対する前記パーティション識別子に関連付けられた未処理のトランザクションの数を前記未処理のトランザクション制限に制限するように構成される、
請求項７に記載の装置。
【請求項１５】
前記少なくとも１つのメモリ構成要素が、発行されたトランザクション用のバッファを備え、
前記制限は前記バッファのバッファ深さである、
請求項７に記載の装置。
【請求項１６】
前記制限が、他のトランザクションによってブロックされないように、マスク不可の状態で送信することができるトランザクションの数である、
請求項７に記載の装置。
【請求項１７】
前記装置が、前記制限によって制限されたリソースの使用量をカウントするためのカウンタをさらに備え、
前記カウンタは所定の期間毎にリセットする、
請求項７に記載の装置。
【請求項１８】
前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするためのカウンタ
をさらに備える、請求項７に記載の装置。
【請求項１９】
複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行する方法であって、前記方法は、
データにアクセスするためのメモリトランザクションを処理するステップであって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、ステップと、
処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するステップと、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するステップと
を含む、方法。
【請求項２０】
複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための手段と、
データにアクセスするためのメモリトランザクションを処理するための手段であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、手段と、
処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するための手段と、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するための手段と
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術はデータ処理の分野に関する。
【背景技術】
【０００２】
アプリケーションまたは仮想マシンなどの２つ以上のソフトウェア実行環境は、ソフトウェア実行環境間で共有される共通のメモリシステムへのアクセスを用いて同じデータ処理システム上で実行され得る。
【０００３】
システムによっては、共有メモリシステム内のリソースを多く使用している別のソフトウェア実行環境が原因で、１つのソフトウェア実行環境の性能が低下しないことが重要な場合がある。
【０００４】
この問題は、「ノイジーネイバー（ｎｏｉｓｙ  ｎｅｉｇｈｂｏｕｒ）」問題と呼ばれることがあり、例えば、企業ネットワーキングまたはサーバシステムにとって特に重大となり得る。
【発明の概要】
【０００５】
第１の例示的構成によれば、複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための処理回路と、データにアクセスするためのメモリトランザクションを処理するための少なくとも１つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも１つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するように構成される、少なくとも１つのメモリシステム構成要素と、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と、を備える装置が提供される。
【０００６】
第２の例示的構成によれば、複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行する方法が提供され、この方法は、データにアクセスするためのメモリトランザクションを処理するステップであって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、ステップと、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するステップと、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するステップと、を含む。
【０００７】
第３の例示的構成によれば、複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための手段と、データにアクセスするためのメモリトランザクションを処理するための手段であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、手段と、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するための手段と、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するための手段と、を備える装置が提供される。
【図面の簡単な説明】
【０００８】
【図１】メモリシステムを備えるデータ処理システムの一例を概略的に示す図である。
【図２】メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子に応じたメモリシステムリソースの分割制御の一例を概略的に示す図である。
【図３】パーティション識別子を指定するメモリトランザクションを発行するための処理回路の一例を概略的に示す図である。
【図４】処理回路によって実行される異なるソフトウェア実行環境の一例を示す図である。
【図５】異なるソフトウェア実行環境にパーティション識別子を割り当てる例を示す図である。
【図６】所与のメモリトランザクションに対してどのパーティション識別子が指定されるかを制御するための制御レジスタの一例を示す図である。
【図７】マスタデバイスからメモリトランザクションを発行する方法を示す流れ図である。
【図８】処理回路の現在の動作状態に応じたパーティション識別子レジスタの選択を概略的に示す図である。
【図９】仮想パーティション識別子を物理パーティション識別子に再マッピングする例を概略的に示す図である。
【図１０】仮想パーティション識別子を物理パーティション識別子にマッピングする方法を示す流れ図である。
【図１１】命令およびデータメモリトランザクションのために別々のパーティション識別子を生成する例を概略的に示す図である。
【図１２】メモリシステム構成要素におけるメモリトランザクションに応答する方法を示す流れ図である。
【図１３】パーティション識別子に応じてキャッシュリソースの割り当てを制御し、かつ／またはパーティション識別子に基づいて選択された性能監視データを更新するキャッシュの一例を示す図である。
【図１４】パーティション識別子に応じて選択された容量閾値に応じてキャッシュへの割り当てを制御する方法を示す流れ図である。
【図１５】パーティション識別子に応じてキャッシュのどの部分にデータを割り当てることができるかを制御する例を示す図である。
【図１６】パーティション識別子によって設定された制限に基づいてメモリトランザクションのための優先度を選択するためのプロセスをフローチャート形式で示す図である。
【図１７】トランザクションを通過させるメモリシステムを概略的に示す図である。
【図１８】制限に対して使用量を測定する際のカウンタ回路の使用を概略的に示す図である。
【図１９】メモリシステム構成要素によるメモリトランザクションのためのバッファの使用を示す図である。
【図２０】パーティション識別子に基づいてデータ処理を実行するためのプロセスをフローチャート形式で示す図である。
【発明を実施するための形態】
【０００９】
図１は、Ｎ個（Ｎは１以上）の処理クラスタ４を含むデータ処理システム２の一例を概略的に示し、各処理クラスタは、ＣＰＵ（中央処理ユニット）またはＧＰＵ（グラフィック処理ユニット）などの１つまたは複数の処理ユニット６を含む。各処理ユニット６は、例えばレベル１データキャッシュ８、レベル１命令キャッシュ１０、および共有レベル２キャッシュ１２など、少なくとも１つのキャッシュを有してもよい。これは可能なキャッシュ階層の一例にすぎず、他のキャッシュ構成を使用することもできることを理解されよう。同じクラスタ内の処理ユニット６は、クラスタ相互接続１４によって結合されている。クラスタ相互接続は、任意の処理ユニットにアクセス可能なデータをキャッシュするためのクラスタキャッシュ１６を有することができる。
【００１０】
システムオンチップ（ＳｏＣ）相互接続１８は、Ｎ個のクラスタと他の任意のマスタデバイス２２（ディスプレイコントローラまたは直接メモリアクセス（ＤＭＡ）コントローラなど）とを結合する。ＳｏＣ相互接続は、それに接続されたマスタのいずれにもアクセス可能なデータをキャッシュするためのシステムキャッシュ２０を有することができる。ＳｏＣ相互接続１８は、任意の既知のコヒーレンシプロトコルに従って、それぞれのキャッシュ８，１０，１２，１６，２０間のコヒーレンシを制御する。ＳｏＣ相互接続はまた、それぞれがＤＲＡＭまたはＳＲＡＭなどの対応するメモリ２５へのアクセスを制御するための１つまたは複数のメモリコントローラ２４に結合される。ＳｏＣ相互接続１８はまた、暗号化／復号化機能を提供するための暗号ユニットなどの他のスレーブデバイスにトランザクションを送ることができる。
【００１１】
したがって、データ処理システム２は、処理ユニット６および他のマスタデバイス２２によって発行されたトランザクションに応答してデータを格納し、データへのアクセスを提供するためのメモリシステムを備える。キャッシュ８，１０，１２，１６，２０、相互接続１４，１８、メモリコントローラ２４、およびメモリデバイス２５はそれぞれ、メモリシステムの構成要素と見なすことができる。メモリシステム構成要素の他の例は、メモリにアクセスするために使用されるメモリアドレスを変換するために使用されるメモリ管理ユニットまたは変換ルックアサイドバッファ（処理ユニット６自体内、あるいはさらに下のシステム相互接続１８内またはメモリシステムの他の部分内）を含んでもよく、メモリシステムの一部と見なすことができる。一般に、メモリシステム構成要素は、メモリデータにアクセスするためにメモリトランザクションをサービスするため、またはそれらのメモリトランザクションの処理を制御するために使用されるデータ処理システムの任意の構成要素を含むことができる。
【００１２】
メモリシステムは、メモリトランザクションを処理するために利用可能な様々なリソースを有することができる。例えば、キャッシュ８，１０，１２，１６，２０は、プロセッサ６のうちの１つで実行されている所与のソフトウェア実行環境によって必要とされるデータをキャッシュするために利用可能な記憶容量を有し、それらがメインメモリ２５からフェッチされなければならなかった場合よりもデータまたは命令へのより速いアクセスを提供する。同様に、ＭＭＵ／ＴＬＢはアドレス変換データをキャッシュするために利用可能な容量を有することができる。また、相互接続１４，１８、メモリコントローラ２４、およびメモリデバイス２５はそれぞれ、メモリトランザクションを処理するために利用可能な一定量の帯域幅を有することができる。
【００１３】
処理要素６上で実行されている複数のソフトウェア実行環境がメモリシステムへのアクセスを共有するとき、他の実行環境が性能の損失を知覚するのを防ぐために、１つのソフトウェア実行環境がその公平な共有を超えるリソースを使用するのを防ぐことが望ましい場合がある。これは、データセンタサーバの使用率を高めるために、一定量のメモリ容量と相互作用する独立したソフトウェアプロセスの数を増やすことによって設備投資を削減する需要が高まっているデータセンタ（サーバ）アプリケーションにとって特に重要であり得る。それにもかかわらず、ウェブアプリケーションのテールレイテンシの目標を達成することが依然として求められているので、サーバ上で実行されている１つのプロセスが他のプロセスが被る程度にメモリシステムリソースを独占することができるならば、それは望ましくない。同様に、ネットワーキングアプリケーションでは、以前は別々のＳｏＣにあったはずの複数の機能を単一のＳｏＣに組み合わせることがますます一般的になっている。これもまた、ソフトウェア実行環境間の性能の相互作用を制限し、性能の相互作用を制限しながらこれらの独立したプロセスが共有メモリにアクセスすることを可能にする必要がある方法を監視したいという要望につながる。
【００１４】
図２は、対応するメモリトランザクションを発行するソフトウェア実行環境に応じてメモリシステムリソースの割り当ての制御を分割する例を概略的に示している。これに関連して、ソフトウェア実行環境は、データ処理システム内の処理ユニットによって実行される任意のプロセス、またはプロセスの一部であり得る。例えば、ソフトウェア実行環境は、アプリケーション、ゲストオペレーティングシステムもしくは仮想マシン、ホストオペレーティングシステムもしくはハイパーバイザ、システムの異なるセキュリティ状態を管理するためのセキュリティモニタプログラム、またはこれらのタイププロセスのいずれかのより低い部分を含んでもよい（例えば、単一の仮想マシンが別々のソフトウェア実行環境と見なされる異なる部分を有する場合がある）。図２に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するメモリトランザクションと共にメモリシステム構成要素に渡される所与のパーティション識別子３０が割り当てられてもよい。
【００１５】
メモリシステム構成要素内では、パーティション識別子に基づいて選択されたメモリシステム構成要素パラメータの複数のセットのうちの１つに基づいて、リソース割り当てまたは競合解決動作を制御することができる。例えば、図２に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するデータ／命令に割り当てることができるキャッシュ容量の最大量を表す割り当て閾値がアサインされてもよく、所与のトランザクションをサービスするときの関連する割り当て閾値は、そのトランザクションに関連するパーティション識別子に基づいて選択される。例えば、図２では、パーティション識別子０に関連付けられているトランザクションが、キャッシュのストレージ容量の最大５０％にデータを割り当て、キャッシュの少なくとも５０％を他の目的に使用できるようにする。
【００１６】
同様に、メモリトランザクションをサービスするために利用可能な有限量の帯域幅を有するメモリコントローラ２４のようなメモリシステム構成要素では、最小および／または最大帯域幅閾値が各パーティション識別子に対して指定され得る。所与の期間内に、そのパーティション識別子を指定するメモリトランザクションが最小量の帯域幅よりも少ない量しか使用していない場合には、所与のパーティション識別子に関連するメモリトランザクションを優先させることができ、一方で、最大帯域幅が既に同じパーティション識別子を指定しているトランザクションに使用されているか超えている場合は、プライオリティを下げてメモリトランザクションに使用できる。
【００１７】
これらの制御方式については以下でさらに詳しく説明する。当然のことながら、これらは、対応するトランザクションを発行したソフトウェア実行環境に基づいてメモリシステムリソースの制御を分割することができる方法の単なる２つの例である。一般に、異なるプロセスがメモリシステムによって提供されるリソースの異なる分割された部分を「見る」ことを可能にすることによって、プロセス間の性能の相互作用を制限して上述の問題に対処するのを助けることを可能にする。
【００１８】
同様に、メモリトランザクションに関連するパーティション識別子を使用してメモリシステム内の性能監視を分割することができるので、所与のソフトウェア実行環境（またはソフトウェア実行環境のグループ）に固有の情報を識別させることを可能にするために各パーティション識別子について別々のセットの性能監視データを追跡でき、その結果、性能監視データがすべてのソフトウェア実行環境全体で記録されている場合よりも、潜在的な性能の相互作用の原因を簡単に特定できる。これは、潜在的な性能の相互作用の影響を診断し、考えられる解決策の識別にも役立つ。
【００１９】
パーティション識別子の設定を制御し、対応するソフトウェア実行環境に対して設定されたパーティション識別子に基づいてメモリトランザクションをラベル付けし、メモリシステムを通してパーティション識別子をルーティングし、そしてメモリシステム内のメモリシステム構成要素においてパーティションベースの制御を提供するためのアーキテクチャを以下に説明する。このアーキテクチャは、パーティション識別子の幅広い用途に合わせて拡張できる。パーティション識別子の使用は、メモリシステムの既存のアーキテクチャ上のセマンティクスを変更せずに重ね合わせることを目的としているため、メモリシステムによって使用されている特定のメモリプロトコルによって課されるアドレス指定、コヒーレンス、および必要なメモリトランザクションの順序付けは、リソース／性能監視分割の影響を受けない。パーティション識別子を使用してリソース割り当てを制御するとき、これは所与のソフトウェア実行環境のためのメモリトランザクションをサービスするときに達成される性能に影響を及ぼし得るが、それはアーキテクチャ的に有効な計算の結果に影響を及ぼさない。すなわち、パーティション識別子は、メモリトランザクションの成果または結果（例えば、どのデータがアクセスされるか）を変更するのではなく、単にそのメモリトランザクションに対して達成されるタイミングまたは性能に影響を及ぼすだけである。
【００２０】
図３は、処理ユニット６の一例をより詳細に概略的に示している。プロセッサは、命令キャッシュ１０から命令をフェッチするためのフェッチステージ４０、フェッチされた命令をデコードするためのデコードステージ４２、オペランドが使用可能になるのを待っている間に命令を待ち行列に入れ、オペランドが使用可能になったときに実行のために命令を発行する発行キュー４６を含む発行ステージ４４、対応する処理動作を実行するために異なるクラスの命令を実行するための複数の実行ユニット５０を含む実行ステージ４８、および処理動作の結果をデータレジスタ５４に書き込むためのライトバックステージ５２を含む、いくつかのパイプラインステージを含む処理パイプラインを含む。データ処理動作のためのソースオペランドは、実行ステージ４８によってレジスタ５４から読み取られてもよい。この例では、実行ステージ４８は、算術演算または論理演算を実行するためのＡＬＵ（算術／論理ユニット）、浮動小数点値を使用して演算を実行するための浮動小数点（ＦＰ）ユニット、およびメモリシステムからレジスタ５４にデータをロードするためのロードオペレーション、もしくはレジスタ５４からメモリシステムにデータを格納するためのストアオペレーションを実行するためのロード／ストアユニットを含む。当然のことながら、これらは可能な実行ユニットのほんのいくつかの例であり、他のタイプを提供することができる。同様に、他の例は異なる構成のパイプラインステージを有することができる。例えば、故障したプロセッサでは、命令によって指定されたアーキテクチャ上のレジスタ指定子を、ハードウェアに設けられた物理レジスタ指定子識別レジスタ５４に再マッピングするための追加のレジスタリネーミングステージ、ならびに命令がキャッシュ１０からフェッチされた順序とは異なる順序で実行された命令の実行およびコミットメントを追跡するためのリオーダバッファを設けることができる。同様に、図１には示されていない他の機構、例えば分岐予測機能も依然として提供することができる。
【００２１】
プロセッサ６は、例えば実行中のプログラムの現在の実行時点を示すプログラムカウンタを格納するためのプログラムカウンタレジスタ６２、プロセッサが命令を実行している時点で現在の例外レベルの指示を格納するための例外レベルレジスタ６４、プロセッサが非セキュア状態にあるかセキュア状態にあるかの指示を格納するためのセキュリティ状態レジスタ６６、ならびにメモリシステムリソースおよび性能監視分割を制御するためのメモリ分割監視（ＭＰＡＭ）制御レジスタ６８（ＭＰＡＭ制御レジスタについては以下でさらに詳細に説明する）、を含む複数の制御レジスタ６０を有する。他の制御レジスタもまた提供され得ることが理解されよう。
【００２２】
プロセッサは、メモリトランザクションに応答してメモリシステムへのアクセスを制御するためのメモリ管理ユニット（ＭＭＵ）７０を有する。例えば、ロードまたはストア命令に遭遇すると、ロード／ストアユニットは仮想アドレスを指定する対応するメモリトランザクションを発行する。仮想アドレスは、変換ルックアサイドバッファ（ＴＬＢ）７２に格納されたアドレスマッピングデータを使用して仮想アドレスを物理アドレスに変換するメモリ管理ユニット（ＭＭＵ）７０に提供される。各ＴＬＢエントリは、アドレスをどのように変換するかを識別するマッピングデータだけでなく、プロセッサがアドレス空間の対応するページ内のアドレスに対して読み取りまたは書き込みを許可されるかどうかを定義する関連アクセス許可データも識別し得る。いくつかの例では、複数ステージのアドレス変換があり得、したがって複数のＴＬＢ、例えばロード／ストアユニット５０によって生成された仮想アドレスを中間物理アドレスにマッピングするための変換の第１ステージを提供するステージ１のＴＬＢ、およびアクセスされるデータを識別するために中間物理アドレスをメモリシステムによって使用される物理アドレスにマッピングするための変換の第２ステージを提供するステージ２のＴＬＢがあり得る。ステージ１のＴＬＢのマッピングデータはオペレーティングシステムの制御下で設定され得、ステージ２のＴＬＢのマッピングデータはハイパーバイザの制御下で設定され得、例えば仮想化をサポートする。簡潔にするために図３はロード／ストアユニットによってトリガされるデータアクセスに応答してアクセスされているＭＭＵを示しているが、フェッチステージ４０がまだ命令キャッシュ１０に格納されていない命令のフェッチを要求するとき、あるいは、命令キャッシュ１０がフェッチステージ４０によって実際に要求される前に命令をキャッシュにプリフェッチするために命令プリフェッチオペレーションを開始する場合に、ＭＭＵにもアクセスできる。したがって、実行される命令の仮想アドレスは、ＭＭＵ７０を使用して同様に物理アドレスに変換され得る。
【００２３】
ＴＬＢ７２に加えて、ＭＭＵはまた、ページテーブルウォーク中にＴＬＢにロードされるべきマッピングデータを識別するために使用されるデータをキャッシュするためのページウォークキャッシュ７４などの他のタイプのキャッシュも含むことができる。メモリシステムは、仮想メモリアドレス空間の各ページについてアドレスマッピングデータを指定するページテーブルを格納することができる。ＴＬＢ７２は、最近アクセスされたいくつかのページについてそれらのページテーブルエントリのサブセットをキャッシュすることができる。プロセッサが、対応するアドレスマッピングデータがＴＬＢ７２に格納されていないページにメモリトランザクションを発行すると、ページテーブルウォークが開始される。必要なページのアドレスマッピングエントリを識別するためにメモリ内をトラバースするページテーブルのレベルが複数ある場合があるため、これは比較的遅くなる可能性がある。ページテーブルウォークをスピードアップするために、ページテーブルの最近アクセスされたページテーブルエントリをページウォークキャッシュ７４に入れることができる。これらは通常、必要なページのマッピングを実際に指定する最終レベルのページテーブルエントリ以外のページテーブルエントリである。これらのより高いレベルのページテーブルエントリは通常、対応するアドレス範囲に対する他のページテーブルエントリがメモリ内のどこにあり得るかを特定する。前のページテーブルウォークでトラバースしたページテーブルの少なくともいくつかのレベルをページウォークキャッシュ７４にキャッシュすることによって、ページテーブルウォークの同じ初期部分を共有する他のアドレスに対するページテーブルウォークをより速くすることができる。あるいは、ページテーブルエントリ自体をキャッシュするのではなく、ページウォークキャッシュ７４はそれらのページテーブルエントリがメモリ内で見つけられることができるアドレスをキャッシュすることができ、そのため再び所与のページテーブルエントリは、それらのアドレスがメモリ内の他のページテーブルエントリに最初にアクセスすることによって識別されなければならない場合よりも速くアクセスされ得る。
【００２４】
図４は、プロセッサ６によって実行され得る異なるソフトウェア実行環境の例を示している。この例では、アーキテクチャは特権レベルが増加する４つの異なる例外レベルＥＬ０からＥＬ３をサポートする（したがって、ＥＬ３が最も高い特権例外レベルを有し、ＥＬ０が最も低い特権例外レベルを有する）。一般に、より高い特権レベルは、より低い特権レベルよりも高い特権を有し、したがって、少なくともいくつかのデータにアクセスする、および／またはより低い特権レベルには利用できないいくつかの処理動作を実行することができる。アプリケーション８０は最も低い特権レベルＥＬ０で実行される。いくつかのゲストオペレーティングシステム８２が特権レベルＥＬ１で実行され、各ゲストオペレーティングシステム８２はＥＬ０で１つまたは複数のアプリケーション８０を管理する。ハイパーバイザまたはホストオペレーティングシステムとしても知られる仮想マシンモニタ８４は、例外レベルＥＬ２で実行され、それぞれのゲストオペレーティングシステム８２の仮想化を管理する。より低い例外レベルからより高い例外レベルへの移行は、例外イベントによって引き起こされる可能性があり（例えば、ハイパーバイザによって処理される必要があるイベントは、ＥＬ２への遷移を引き起こす可能性がある）、一方で、より低いレベルに戻る移行は、例外イベント処理からの復帰によって引き起こされる可能性がある。例外イベントの中には、それらが取得されたレベルと同じ例外レベルでサービスされるものもあれば、より高い例外状態への移行をトリガするものもある。現在の例外レベルレジスタ６４は、処理回路６が例外レベルＥＬ０〜ＥＬ３のどれで現在コードを実行しているかを示す。
【００２５】
この例では、システムは、セキュアドメイン９０と通常の（安全性の低い）ドメイン９２との間の分割もサポートする。機密性の高いデータまたは命令を、それらをセキュアドメイン９０にアクセス可能であるとマークされたメモリアドレスにのみ割り当てることによって保護することができ、安全性の低いドメイン９２で実行されているプロセスがデータまたは命令にアクセスできないことを保証するためのハードウェア機構をプロセッサが有する。例えば、ＭＭＵ７０に設定されたアクセス許可は、セキュアドメインと非セキュアドメインとの間の分割を制御することができ、あるいは、完全に別のセキュリティメモリ管理ユニットを使用してセキュリティ状態分割を制御することができ、別々のセキュアおよび非セキュアＭＭＵ７０はそれぞれのセキュリティ状態内の副制御のために提供されている。セキュアドメイン９０と通常ドメイン９２との間の移行を、最も高い特権レベルＥＬ３で実行されているセキュア監視プロセス９４によって管理することができる。これにより、ドメイン間の遷移を厳密に制御して、例えばセキュアドメインからのデータへのアクセスなどの非セキュアオペレーション８０またはオペレーティングシステム８２を防ぐことができる。他の例では、ハードウェア技術を使用してセキュリティ状態とポリス遷移との間の分離を強制することができ、その結果、通常ドメイン９２内のコードは別のセキュア監視プロセス９４を介して遷移することなくセキュアドメイン９０内のコードに直接分岐することができる。しかしながら、説明を容易にするために、以下の説明では、ＥＬ３でセキュア監視プロセス９４を使用する例を参照する。セキュアドメイン９０内では、セキュアワールドオペレーティングシステム９６が例外レベルＥＬ１で実行され、１つまたは複数の信頼できるアプリケーション９８がそのオペレーティングシステム９６の制御下で、例外レベルＥＬ０で実行され得る。この例では、必要に応じてこれを提供することは依然として可能ではあるが、仮想化がセキュアドメインではサポートされていないので、セキュアドメイン９０に例外レベルＥＬ２はない。そのようなセキュアドメイン９０をサポートするためのアーキテクチャの例は、英国のＬｉｍｉｔｅｄ  ｏｆ  ＣａｍｂｒｉｄｇｅのＡＲＭ（登録商標）によって提供されるトラストゾーン（Ｔｒｕｓｔｚｏｎｅ）アーキテクチャであり得る。ただし、他の技術もまた使用され得ることが理解されよう。いくつかの例は２つより多いセキュリティ状態を有することができ、３つ以上の状態にそれらに関連している異なったレベルのセキュリティを提供する。セキュリティ状態レジスタ６６は、現在のドメインがセキュアドメイン９０であるか非セキュア９２であるかを示し、これはＭＭＵ７０または他の制御ユニットに対して、特定のデータにアクセスできるか操作を許可するかを管理するために使用するアクセス許可を示す。
【００２６】
次に、図４は、システム上で実行することができるいくつかの異なるソフトウェア実行環境８０，８２，８４，９４，９６，９８を示している。これらのソフトウェア実行環境のそれぞれには、所与のパーティション識別子（パーティションＩＤまたはＰＡＲＴＩＤ）を割り当てることができ、または２つ以上のソフトウェア実行環境のグループに共通のパーティションＩＤを割り当てることができる。場合によっては、単一プロセスの個々の部分（例えば、異なる機能またはサブルーチン）を別々の実行環境と見なし、別々のパーティションＩＤを割り当てることができる。例えば、図５に示される例では、仮想マシンＶＭ３およびその下で実行されている２つのアプリケーション３７４１，３９７４がすべてＰＡＲＴＩＤ１に割り当てられ、第２の仮想マシンＶＭ７の下で実行されている特定のプロセス３９７４がＰＡＲＴＩＤ２に割り当てられ、ＶＭ７自体およびその下で実行されている別のプロセス１４７３には、ＰＡＲＴＩＤ０が割り当てられる。すべてのソフトウェア実行環境に個別のパーティションＩＤを割り当てる必要はない。専用パーティションＩＤが割り当てられていないソフトウェア実行環境に使用するためにデフォルトパーティションＩＤを指定することができる。パーティションＩＤ空間のどの部分が各ソフトウェア実行環境に割り当てられるかの制御は、より高い特権レベルでソフトウェアによって実行され、例えば、ＥＬ２で動作するハイパーバイザは、ＥＬ１で動作する仮想マシンオペレーティングシステムへのパーティションの割り当てを制御する。ただし、場合によっては、ハイパーバイザは、より低い特権レベルのオペレーティングシステムが、独自のコードの一部またはその下で実行されているアプリケーションに独自のパーティションＩＤを設定することを許可することがある。また、いくつかの例では、セキュアワールド９０は、セキュアワールドＯＳまたはモニタプログラムＥＬ３によって制御される、通常ワールド９２とは完全に別のパーティションＩＤ空間を有することができる。
【００２７】
図６は、ＭＰＡＭ制御レジスタ６８の一例を示している。ＭＰＡＭ制御レジスタ６８は、処理回路のそれぞれの動作状態にそれぞれ対応するいくつかのパーティションＩＤレジスタ１００（ＭＰＡＭシステムレジスタとしても知られる）を含む。この例では、パーティションＩＤレジスタ１００は、非セキュアドメイン９２内のそれぞれの例外レベルＥＬ０〜ＥＬ３に対応するレジスタＭＰＡＭ０＿ＥＬ１〜ＭＰＡＭ３＿ＥＬ３と、セキュアドメイン９０内の例外レベルＥＬ１に対応するオプションの追加パーティションＩＤレジスタＭＰＡＭ１＿ＥＬ１＿Ｓとを含む。この例では、セキュアドメイン内の信頼できるアプリケーション９８がそれらのアプリケーション９８を実行するセキュアワールドオペレーティングシステム９６に密接に結び付けられていると想定されるので、セキュアドメイン内のＥＬ０にパーティションＩＤレジスタは提供されず、その結果、同じパーティションＩＤで識別され得る。しかしながら、他の実装形態では、個別のパーティションＩＤレジスタをセキュアワールドのＥＬ０に提供することができる。各パーティションＩＤレジスタ１００は、以下の表１に示すように最大３つのパーティションＩＤ用のフィールドを含む。
【表１】
2020514868.tif 000003
【００２８】
以下の表２は、各動作状態で実行されるメモリトランザクションにどのパーティションＩＤレジスタ１００が使用され、各パーティションＩＤレジスタ１００がどの動作状態から制御されるか（すなわち、どの動作状態がそのレジスタによって指定される情報を更新できるか）を要約している。
【表２】
2020514868.tif 000004
【００２９】
パーティションＩＤレジスタの命名規則ＭＰＡＭｘ＿Ｅｌｙは、パーティションＩＤレジスタＭＰＡＭｘ＿ＥＬｙに指定されたパーティションＩＤが、動作状態ＥＬｘにあるときに処理回路６によって発行されるメモリトランザクションに使用されること、および状態ＥＬｙが、そのパーティションＩＤレジスタＭＰＡＭｘ＿ＥＬｙにアクセスできる最も低い例外レベルであることを示す。ただし、非セキュアドメインで現在の例外レベルがＥＬ０の場合、ＭＰＡＭ０＿ＥＬ１をオーバーライドすることができ、ＭＰＡＭ−ＥＬ１に設定されている設定値ＰＬＫ＿ＥＬ０が１に設定されている場合、ＭＰＡＭ１＿ＥＬ１のパーティションＩＤはＮＳ＿ＥＬ０で実行するときに使用される。したがって、必要に応じて、ＥＬ１の制御はＥＬ０の制御をオーバーライドできる。これは、同じ仮想マシン内のアプリケーション間でコンテキストが切り替わるたびにＭＰＡＭ０＿ＥＬ１を更新する必要がないように、特定の仮想マシンで実行されているすべてのアプリケーションが同じパーティションＩＤを使用するように制限するのに役立ち得る。この例では構成パラメータＰＬＫ＿ＥＬ０がＭＰＡＭ１＿ＥＬ１に格納されるように説明されているが（その構成パラメータを設定するより高い例外レベルに対応するパーティションＩＤレジスタ）、それは他の制御レジスタに格納されることもできる。
【００３０】
一般に、同じ状態で実行されている異なるプロセス（例えば、ＥＬ０の異なるアプリケーションやＥＬ１の異なるゲストオペレーティングシステム）を切り替えると、例外イベントは、プロセスがその状態で実行されている高い例外状態への切り替えをトリガし（例えば、ＥＬ１のオペレーティングシステムまたはＥＬ２のハイパーバイザ）、次に、処理をより低い例外状態に戻して新しいプロセスを続行できるようにする前に、関連するパーティションＩＤレジスタ１００内のパーティションＩＤを更新する。したがって、所与のプロセスに関連付けられているパーティションＩＤは、そのプロセスに関連付けられているコンテキスト情報の一部と見なすことが効果的であり、このコンテキスト情報は、そのプロセスとの切り替え時にプロセッサのアーキテクチャ状態の一部として保存および復元される。
【００３１】
しかし、システムの異なる動作状態に対応する複数のパーティションＩＤレジスタ１００を提供することによって、コンテキストスイッチ以外のとき、例えば、同じＯＳに戻る前にハイパーバイザが何らかのアクションを実行するために、オペレーティングシステム（ＯＳ）が一時的にハイパーバイザにトラップする場合などに、動作状態に変化があるたびに単一のパーティションＩＤレジスタの内容を更新する必要はない。例えば、ハイパーバイザが、ハードウェアで実際に提供されているものとは異なる物理リソースのビューをＯＳに提供するために介入する必要がある場合、ハイパーバイザへのそのようなトラップは、仮想化システムではかなり一般的であり得る。したがって、複数のパーティションＩＤレジスタ１００を提供することによって、パーティションＩＤを用いたメモリシステムトランザクションのラベリングは、例外レベルまたはセキュア／非セキュア状態の変化に自動的に追従するので、例外レベルまたはセキュリティ状態に変更があるたびにパーティションＩＤを更新する必要がないため、パフォーマンスが向上する。
【００３２】
また、例えば、使用されるパーティションＩＤからセキュアドメインに関する情報を推論する安全性の低いプロセスを防止することによって、セキュアおよび非セキュアのパーティションＩＤレジスタを別々に提供することが、セキュリティ上の理由から好ましい場合がある。しかしながら、セキュリティ状態ごとの銀行用パーティションＩＤレジスタは任意であり、他の実施形態は、セキュアドメインと安全性の低いドメインとの間で共有される所与のパーティションＩＤレジスタの単一バージョンのみを提供し得る（例えばＭＰＡＭ１＿ＥＬ１＿Ｓは省略され、ＭＰＡＭ１＿ＥＬ１を使用できる）。この場合、ＥＬ３で実行されるモニタコードは、セキュアドメインと安全性の低いドメインとの間で切り替えるときにパーティションＩＤレジスタ内の情報をコンテキストスイッチすることができる。
【００３３】
また、一般に、所与の動作状態に関連するパーティションＩＤレジスタ１００内で指定されるパーティションＩＤおよび任意の関連構成情報などの制御情報は、そのパーティションＩＤレジスタ１００に関連する例外レベルよりも高い例外レベルで実行される命令に応答して設定される。しかしながら、やはりこの一般的前提はいくつかのレジスタについてオーバーライドされることができ、そこではより高い例外レベルコードは所与の動作状態で実行されるコードがそれ自体のパーティションＩＤを対応するパーティションＩＤレジスタに設定できるかどうかを制御する構成パラメータＥＬ１＿ＷＲＩＮＨ、ＥＬ２＿ＷＲＩＮＨまたはＥＬ１＿Ｓ＿ＷＲＩＮＨを設定できる。つまり、ＷＲＩＮＨ設定値は、与えられた実行環境がそれ自体に割り当てられたパーティションＩＤを設定できるかどうかを指定する。以下の例は、その例外レベルのパーティションＩＤと共に、次に高い例外レベルに関連するパーティションＩＤレジスタ１００に格納されている所与の例外レベルによってパーティションＩＤの設定を制御するためのＷＲＩＮＨフラグを示しているが、これらのフラグを別の制御レジスタに格納することもできることが理解されよう。
【００３４】
より詳細には、表３は各パーティションＩＤレジスタ１００に含まれる情報をリストし、表４は各パーティションＩＤレジスタ１００がどの状態から読み書きできるかを要約している。示されるように、レジスタ１００のいくつかはそのレジスタに特有の情報を含む。
【表３】
2020514868.tif 000005
【表４】
2020514868.tif 000006
【００３５】
ここで、アスタリスクは以下を示す：
・ＭＰＡＭ２＿ＥＬ２のＥＬ１＿ＷＲＩＮＨ＝０のときはＮＳ＿ＥＬ１からＭＰＡＭ１＿ＥＬ１を書き込むことができるが、ＥＬ１＿ＷＲＩＮＨ＝１のときはＮＳ＿ＥＬ１からＭＰＡＭ１＿ＥＬ１への書き込みがＥＬ２にトラップする；
・ＭＰＡＭ３＿ＥＬ３のＥＬ２＿ＷＲＩＮＨ＝０の場合、ＥＬ２からＭＰＡＭ２＿ＥＬ２を書き込むことができるが、ＥＬ２＿ＷＲＩＮＨ＝０の場合、ＥＬ２からＭＰＡＭ２＿ＥＬ２への書き込みがＥＬ３にトラップする；
・ＭＰＡＭ３＿ＥＬ３のＥＬ１＿Ｓ＿ＷＲＩＮＨ＝０の場合、Ｓ＿ＥＬ１からＭＰＡＭ１＿ＥＬ１＿Ｓを書き込むことができるが、ＥＬ１＿Ｓ＿ＷＲＩＮＨ＝１の場合、Ｓ＿ＥＬ１からＭＰＡＭ１＿ＥＬ１＿Ｓへの書き込みがＥＬ３にトラップする。
したがって、より高い例外状態によって許可されていないときに同じ例外状態内からパーティションＩＤレジスタ１００を設定しようとすると、そのより高い例外状態への切り替えをトリガする例外イベントが引き起こされる。より高い例外状態にある例外ハンドラは、パーティションＩＤの設定方法を決定できる。
【００３６】
ＭＰＡＭ＿ＥＬ１＿Ｓが省略される上述の代替実施形態では、ＭＰＡＭ１＿ＥＬ１は、ＮＳ＿ＥＬ１およびＳ＿ＥＬ１の両方からアクセス可能なＲ（Ｗ＊）になり（ＥＬ１から書き込みアクセスが可能かどうかを制御するＥＬ１＿ＷＲＩＮＨとともに）、ＥＬ１＿Ｓ＿ＷＲＩＮＨ構成パラメータはレジスタＭＰＡＭ３＿ＥＬ３から省略できる。
【００３７】
一般に、メモリトランザクションが処理回路６によって生成されると、パーティションＩＤレジスタ１００のうちの１つが、上で指定されたように現在の動作状態に基づいて選択される。メモリトランザクションが命令にアクセスするためのものである場合、そのトランザクションは選択されたパーティションＩＤレジスタのＰＡＲＴＩＤ＿Ｉフィールドから導出されたパーティションＩＤでタグ付けされる。命令アクセスのためのＴＬＢ７２のミスによってトリガされたページテーブルウォークメモリトランザクションは、命令アクセスと同じパーティションＩＤを使用するであろう。メモリトランザクションがデータにアクセスするためのものである場合、トランザクションは、選択されたパーティションＩＤレジスタ１００のＰＡＲＴＩＤ＿Ｄフィールドから導出されたパーティションＩＤでタグ付けされる（データアクセス後にＭＭＵによって引き起こされるページテーブルウォークアクセスも、データアクセス自体と同じパーティションＩＤを使用することになる）。なお、ページテーブルウォークアクセスを発行するＭＭＵ自体がパーティションＩＤに基づいてリソース／性能監視分割をサポートするかどうかにかかわらず、メモリシステムの別の部分のメモリシステム構成要素がそのような分割を実行することを可能にするために、依然として関連するＰＡＲＴＩＤ＿ＤまたはＰＡＲＴＩＤ＿Ｉ識別子を対応するメモリトランザクションに付加してもよい。所与のパーティションＩＤレジスタのＰＡＲＴＩＤ＿ＤフィールドおよびＰＡＲＴＩＤ＿Ｉフィールドは、同じパーティションＩＤまたは異なるパーティションＩＤに設定され得る。
【００３８】
同じソフトウェア実行環境のデータアクセスと命令アクセスに別々のパーティションＩＤを定義できるようにして、対応する命令アクセスとデータアクセスに異なるリソース制御パラメータを使用できるようにすると有効であり得る。代替のアプローチは、ソフトウェア実行環境全体に関連する単一のパーティションＩＤを有するが、アクセスが命令またはデータのためであるかどうかに応じて０または１の追加のビットを付加することであり、これによりメモリシステム構成要素は命令アクセスとデータアクセスにそれぞれ異なる制御パラメータを選択することが可能になる。しかしながら、パーティションＩＤに基づいて選択された制御パラメータの所与の数のセットに対して、このアプローチは、データと命令との間にパーティションＩＤ空間の五分五分の分割がなければならないことを意味するであろう。実際には、複数のソフトウェア実行環境が同じコードを使用しながら異なるデータ入力で実行することが比較的一般的である可能性があるため、多くの場合、命令パーティションよりも多くのデータパーティションを有することが望ましく、このため、単一の命令パーティションＩＤを複数のソフトウェア実行環境間で共有しながら、それぞれの環境で異なるデータパーティションを使用できるようにすると特に有効であり得る。データアクセスに関する命令を示すために０または１ビットを付加するというアプローチは、その状況において、共通コードの各別々のインスタンスに対してメモリシステム構成要素において定義されるべき同一の構成情報の複数のセットを必要とする。対照的に、パーティションＩＤレジスタ１００において、命令およびデータパーティションＩＤが共通のＩＤ空間から選択される別々の命令およびデータパーティションフィールドを提供することによって、異なるソフトウェア実行環境間で同じパーティションＩＤを再利用し、これを五分五分の分割に制限することなく、必要に応じてデータと命令の間でパーティションＩＤ空間を分割することが可能である。各パーティションＩＤレジスタ１００内の２つのパーティションＩＤフィールドにいくらかの追加の記憶容量が必要であるとしても、このアプローチは、複数の実行環境の命令アクセス間で１つのパーティションを共有することによって、メモリシステム構成要素において必要とされる制御パラメータのセットが少なくなり（したがって記憶容量が少なくなり）、メモリシステム構成要素でリソースを節約できる。
【００３９】
トランザクションが命令アクセス用であるかデータアクセス用であるかにかかわらず、トランザクションはまた、選択されたパーティションＩＤレジスタ１００のＰＭＧフィールドから導出された性能監視パーティションＩＤでタグ付けされる。これにより、メモリシステム構成要素は、例えば、特定の性能モニタをメモリトランザクションに応答して更新する必要があるかどうかを判断するための基準の一部として、メモリトランザクションの性能監視ＩＤを使用することによって、性能監視を分割することができる。一実施形態では、ＰＭＧフィールドは、ＰＡＲＴＩＤ＿ＤフィールドおよびＰＡＲＴＩＤ＿Ｉフィールドから完全に独立しているものとして扱われ得る。この場合、性能監視を実施するメモリシステム構成要素は、同じメモリトランザクションに含まれるデータ／命令パーティションＩＤとは無関係に、メモリトランザクションが性能監視パーティションＩＤのみに依存して所与の性能モニタの更新を引き起こすかどうかを決定し得る。これは、それにもかかわらず、命令／データアクセスのための異なるパーティションが同じ性能監視ＩＤを共有することができるという利点を提供し、それはメモリシステム構成要素で異なる命令／データアクセス構成を必要とする複数のプロセスに関する結合された性能統計の収集をサポートし得る。したがって、メモリシステム構成要素でリソース割り当てを制御するために使用されるパーティションＩＤとは別に性能監視グループＩＤを指定することによって、リソースが別々に割り当てられている場合でも、共通の性能カウンタセットを使用して複数の異なるソフトウェア実行環境を追跡することができる。
【００４０】
あるいは、別のアプローチは、ＰＭＧフィールドを、ＰＡＲＴＩＤ＿ＤフィールドまたはＰＡＲＴＩＤ＿Ｉフィールドから導出された対応するパーティションＩＤに付加されるべきサフィックスとして解釈することであり得る。このアプローチでは、トランザクションがメモリに発行されると、トランザクションに２つのＩＤが付加され、１つは選択されたＰＡＲＴＩＤ＿ＩまたはＰＡＲＴＩＤ＿Ｄフィールドに基づき、もう１つはＰＭＧフィールドに基づいているが、ＰＭＧフィールドは、それ自体のＩＤではなく、命令／データパーティションＩＤの特性と見なされる。したがって、メモリシステム構成要素は、この場合、ＰＡＲＴＩＤ＿ＩまたはＰＡＲＴＩＤ＿Ｄから導出された第１のパーティションＩＤに基づいてリソース分割を実行することができるが、第１のパーティションＩＤとＰＭＧから導出された第２のパーティションＩＤの組み合わせに基づいて性能監視分割を実行する。このアプローチでは、異なる命令／データパーティションＩＤが同じ性能監視ＩＤを共有することはできなくなるが、利点は、ＰＭＧフィールドがすべての可能な性能監視パーティションを区別する必要がなく、同じ命令／データパーティションＩＤを共有するパーティションのみがＰＭＧフィールドによって区別されるため、短いＰＭＧフィールドを使用してハードウェアコストを節約できることである。例えば、これは、より大きなフィールドではなく１または２ビットのＰＭＧフィールドを使用することを可能にすることができ、それは制御レジスタ６８だけでなくメモリシステムを通してメモリトランザクションを運ぶワイヤにおいてもコストを節約する。いくつかの実施形態では、ＰＡＲＴＩＤ＿ＤフィールドおよびＰＡＲＴＩＤ＿Ｉフィールドにそれぞれ対応して別々のＰＭＧサフィックスフィールドのＰＭＧ＿ＤおよびＰＭＧ＿Ｉを提供して、別々の性能監視グループプロパティをそれぞれデータアクセスおよび命令アクセスに対して定義できるようにすることができる。
【００４１】
どちらの方法でも、データ／命令パーティションＩＤごとに複数の性能監視パーティションを定義する機能が役立ち得る。一方、他の例では別々の性能監視ＩＤフィールドを完全に省略し、代わりに同じパーティションＩＤを使用してリソースの管理と性能監視の両方を制御することができることを理解されよう。
【００４２】
図７は、ＣＰＵ６、ＧＰＵ、またはメモリトランザクションのソースとして機能する他のマスタなどの処理要素からのメモリトランザクションの発行を制御する方法、特にどのパーティションＩＤがメモリトランザクションで指定されるかを制御する方法を示す流れ図である。ステップ１１０で、処理要素は、メモリトランザクションを発行する必要があると判断する。例えば、これは、ロード／ストア命令が実行ステージ４８で実行されるか、または命令を命令キャッシュにプリフェッチするための命令プリフェッチオペレーションによって引き起こされるためであり得る。
【００４３】
ステップ１１２で、処理要素は、その現在の動作状態に応じてパーティションＩＤレジスタ１００のうちの１つを選択する。図８は、少なくとも現在の例外レベル６４およびパーティションＩＤレジスタＭＰＡＭ１＿ＥＬ１に格納されている構成パラメータ１１４のＰＬＫ＿ＥＬ０に応じて、どのパーティションＩＤレジスタ１００を使用して現在のメモリトランザクションのパーティションＩＤを生成すべきかを選択する例を概略的に示している。どのレジスタ１００が選択されたレジスタであるかを選択するための基準は以下の通りである：
・現在の例外レベルがＥＬ０で、ＰＬＫ＿ＥＬ０＝０の場合、ＭＰＡＭ０＿ＥＬ１が選択されたレジスタである；
・（ｉ）現在の例外レベルがＥＬ１であるか、（ｉｉ）現在の例外レベルがＥＬ０で、ＰＬＫ＿ＥＬ０＝１の場合、ＭＰＡＭ１＿ＥＬ１が選択されたレジスタである；
・現在の例外状態がＥＬ２の場合、選択されたレジスタはＭＰＡＭ２＿ＥＬ２である；
・現在の例外状態がＥＬ３の場合、選択されたレジスタはＭＰＡＭ３＿ＥＬ３である。
【００４４】
ＰＬＫ＿ＥＬ０構成パラメータの提供はオプションであり、この機能をサポートしないシステムでは、ＭＰＡＭ０＿ＥＬ１が、ＭＰＡＭ１＿ＥＬ１ではなく、非セキュア状態の現在の例外レベルがＥＬ０の場合に選択される。
【００４５】
また、別個のセキュアパーティションＩＤレジスタＭＰＡＭ１＿ＥＬ１＿Ｓを有する上述の実施形態では、選択は現在のセキュリティ状態にも依存し、セキュアドメイン内のＥＬ０またはＥＬ１での処理時にレジスタＭＰＡＭ１＿ＥＬ１＿Ｓが選択され、それ以外の場合、選択は上記の通りである。
【００４６】
ステップ１１４において、処理要素は、メモリアクセスが命令アクセスかデータアクセスかを判断する。アクセスが命令アクセスであれば、ステップ１１６で、ステップ１１２で選択されたレジスタからＰＭＧおよびＰＡＲＴＩＤ＿Ｉフィールドが読み出され、アクセスがデータアクセスであれば、ステップ１１８でＰＭＧおよびＰＡＲＴＩＤ＿Ｄフィールドが読み出される。したがって、リソース分割に使用されるパーティションＩＤは、アクセスがデータに対するものか命令に対するものかによって異なる（ただし、場合によっては両方とも同じパーティションＩＤを指定することもある）。
【００４７】
ステップ１２０で、処理要素は、現在の動作状態において、読み取りパーティションＩＤ（ＰＭＧおよびＰＡＲＴＩＤ＿ＩまたはＰＡＲＴＩＤ＿Ｄのいずれか）について仮想化が有効にされているかどうかを判定する。ＭＰＡＭ制御レジスタ６８は、仮想化制御レジスタ１１６（ＭＰＡＭ＿ＶＣＲ＿ＥＬ２）、再マッピング有効レジスタ１２４、性能リソース分割のためにパーティションＩＤを再マッピングするためのパーティションＩＤ再マッピングレジスタ１２６、および性能監視分割のためにパーティションＩＤを再マッピングするための性能監視ＩＤ再マッピングレジスタ１２８を含む。仮想化制御レジスタ１１６は、仮想化がＥＬ１およびＥＬ０に対して有効にされるかどうかを指定する仮想化有効化フラグを含む。仮想化がＥＬ０に対して有効化され、動作状態がＥＬ０である場合、または仮想化がＥＬ１に対して有効化され、動作状態がＥＬ１である場合、ステップ１２２において、ステップ１１６または１１８で読み出されたパーティションＩＤの少なくとも１つがメモリシステムに発行されるメモリトランザクションに付加された物理パーティションＩＤにマッピングされる。そうでなければ、ステップ１２２は省略される。
【００４８】
パーティションＩＤの仮想化された再マッピングの例を図９に示す。グローバルパーティションＩＤ空間は、リソースパーティションＩＤと性能監視グループＩＤ用に別々のＩＤ空間を使用して、ＥＬ２のハイパーバイザによって制御され得る。仮想化を両方のタイプのパーティションＩＤに適用することができ、簡潔にするために、以降の説明では両方のタイプを指すために用語「パーティション識別子」を使用する。しかしながら、いくつかの実施形態は、リソースパーティションＩＤについての仮想化のみをサポートすることができ、例えば、性能監視グループの再マッピングをサポートすることはできない。
【００４９】
ハイパーバイザは、ＥＬ１で実行するゲストオペレーティングシステムが（例えばゼロから始まる）狭い範囲のパーティションＩＤのみを使用するように制限することができ、再マッピングレジスタ１２６，１２８は、そのゲストオペレーティングシステムによって使用される仮想パーティションＩＤをグローバルＩＤ空間内の物理パーティションＩＤにマッピングするためのいくつかの再マッピングエントリを提供する再マッピングテーブルを定義する。各再マッピングレジスタは、（単一パーティションＩＤの幅と比較したレジスタの相対サイズに応じて）１つまたは複数の仮想ＩＤの再マッピングエントリを格納することができる。再マッピングテーブルは、オペレーティングシステムによって使用される仮想パーティションＩＤに基づいて索引付けされ、対応する物理パーティションＩＤをグローバルＩＤ空間に戻す。これにより、各ゲストオペレーティングシステムは、それが仮想化されて類似のＩＤ値を使用している可能性がある他のゲストオペレーティングシステムと並行して実行されているという事実を認識せずに、独自のアプリケーションのＩＤを設定できる。各ゲストオペレーティングシステムは、ハイパーバイザによって再マッピングテーブルに設定されたマッピングによって、異なるグローバル物理パーティションＩＤにマッピングされたそれらの競合する仮想ＩＤを有することができる。
【００５０】
したがって、図９は、仮想化をサポートするために図８の選択回路をどのように拡張できるかを示している。マルチプレクサ１０１は、図８に示されるのと同じ方法でパーティションＩＤレジスタ１００の間で選択する。レジスタＭＰＡＭ２＿ＥＬ２およびＭＰＡＭ３＿ＥＬ３からのパーティションＩＤは、図８と同様に直接マルチプレクサ１０１に直接与えられる。しかしながら、レジスタＭＰＡＭ０＿ＥＬ１およびＭＰＡＭ１＿ＥＬ１からのＩＤは、再マッピング回路１３０を介して渡される。ＭＰＡＭ０＿ＥＬ１またはＭＰＡＭ１＿ＥＬ１で指定された仮想パーティションＩＤは、再マッピングレジスタ１２８から対応する再マッピングエントリを選択するために使用される。この例では、各再マッピングレジスタ１２８は４つの再マッピングエントリを含むので、仮想パーティションＩＤの２ビットは再マッピングレジスタ１２８内の特定の再マッピングエントリを選択し、残りのビットはどの再マッピングレジスタ１２８が選択されるかを選択する。しかしながら、他の例は、レジスタごとに異なる数のエントリを有し得る。物理パーティションＩＤは、選択された再マッピングエントリから読み取られ、仮想化がそれぞれＥＬ０またはＥＬ１に対して有効にされるかどうかを指定する仮想化制御レジスタ１１６内の構成パラメータＥＬ０＿ＲＭＥＮまたはＥＬ１＿ＲＭＥＮに応じて、ＭＰＡＭ０＿ＥＬ１またはＭＰＡＭ１＿ＥＬ１から読み取られた元の仮想パーティションＩＤと対応する再マッピング物理パーティションＩＤとの間で選択するマルチプレクサ１３２に提供される。仮想化が有効にされていない場合、元の仮想パーティションＩＤがマルチプレクサ１０１に渡され、仮想化が有効にされている場合は物理パーティションＩＤが使用される。図９はＥＬ０およびＥＬ１に対して設けられた別々の再マッピング回路１３０を示しているが、他の場合には共通の再マッピング回路が使用され得る。
【００５１】
各再マッピングエントリは、再マッピング有効レジスタ１２４内の対応する有効ビットに関連付けられている。所定の再マッピングエントリの有効ビットは、その仮想から物理へのパーティションＩＤマッピングが有効かどうかを指定する。処理要素が無効な仮想パーティションＩＤを指定するメモリトランザクションを発行するとき、これは例外条件をトリガしてより高い例外状態（ＥＬ２）への切り替えを引き起こし、その結果、ハイパーバイザは再マッピングエントリを更新してその仮想パーティションＩＤに使用される物理パーティションＩＤを定義することができる。代替として、ＥＬ１のオペレーティングシステムが、パーティションＩＤレジスタＭＰＡＭ０＿ＥＬ１，ＭＰＡＭ１＿ＥＬ１のうちの１つを、メモリトランザクションを発行するときではなく、無効な再マッピングエントリに対応する仮想ＩＤに設定しようと試みるときに、より高い例外状態へのトラップがトリガされ得る。いずれにしても、どの再マッピングエントリが有効であるかをシグナリングするための有効ビットを提供することによって、ハイパーバイザは仮想から物理へのパーティションＩＤマッピングを遅延方式で割り当てることができるので、所与のオペレーティングシステムに対するすべてのマッピングを一度に定義する必要はない。代わりに、ハイパーバイザは、対応するＩＤマッピングを定義する前に、オペレーティングシステムが特定の仮想パーティションＩＤを実際に使用しようと試みるまで待つことができる。理論的に利用可能なすべての仮想パーティションＩＤをオペレーティングシステムが使用しないことが多いので、そのような遅延割り当ては、使用されない仮想ＩＤの再マッピングレジスタの設定に時間を費やすことを回避することによって、所与のオペレーティングシステムへのコンテキスト切り替え時の性能を改善できる。
【００５２】
無効な仮想パーティションＩＤを指定する要求を処理するための別のアプローチは、再マッピング回路が無効な仮想パーティションＩＤをある所定の物理パーティションＩＤに再マッピングすることであり得る。したがって、例外メカニズムを使用して無効な仮想パーティションＩＤを処理する代わりに、再マッピング回路は、物理パーティションＩＤに対して単に「エラーの場合」の値を使用し、これは対応するメモリ要求と共にメモリシステムコンポーネントに渡され、有効なパーティションＩＤとして扱われる。所定の物理パーティションＩＤは、パーティションＩＤの特定の「デフォルト」値、例えば、特別なパーティションＩＤが割り当てられていないソフトウェア実行環境に使用されるものと同じデフォルトパーティションＩＤであり得る。例えば、所定の物理パーティションＩＤはゼロであり得る。代替として、制御レジスタ（ＰＡＲＴＩＤ＿ＯＮ＿ＥＲＲＯＲ）は、エラーの場合に所定の物理パーティションＩＤとして使用されるべき物理パーティションＩＤの特定の値を定義することができる。
【００５３】
図６は有効ビットが再マッピングレジスタ１２６，１２８とは別のレジスタ１２４に格納される例を示しているが、他の実施形態では各再マッピングエントリはそれ自体有効ビットを含むことができ、このため、有効ビットは、対応する物理パーティションＩＤと共に再マッピングレジスタ１２６，１２８に格納される。この場合、再マッピング有効レジスタ１２４を省略することができる。したがって、一般に、各再マッピングエントリは有効ビットに関連付けられ得るが、有効ビットが格納される場所は実装の選択に応じて異なり得る。
【００５４】
仮想化制御レジスタ１１６は、例外レベルＥＬ０および例外レベルＥＬ１に対する別々の有効化パラメータを含むことができ、それぞれ対応する例外状態で発行されたメモリトランザクションに対してパーティションＩＤレジスタの再マッピングが有効にされるかどうかを定義する。同様に、リソース分割のためのパーティションＩＤと監視分割を実行するための性能監視グループＩＤとをそれぞれ再マッピングするかどうかを制御するために、別々の有効化パラメータを提供することができる。したがって、場合によっては、仮想化制御レジスタ１１６は以下を指定することができる：
・ＥＬ０＿ＰＡＲＴＩＤ＿ＲＭＥＮ：ＭＰＡＭ０＿ＥＬ１のＰＡＲＴＩＤの再マッピングを有効にする
・ＥＬ１＿ＰＡＲＴＩＤ＿ＲＭＥＮ：ＭＰＡＭ１＿ＥＬ１のＰＡＲＴＩＤの再マッピングを有効にする。
【００５５】
任意選択で、ＰＭＧフィールド内の性能監視ＩＤの仮想化された再マッピングもサポートすることができ、その場合、それぞれＥＬ０およびＥＬ１で性能監視ＩＤの再マッピングを可能にするために、さらなる仮想化制御パラメータＥＬ０＿ＰＭＧ＿ＲＭＥＮおよびＥＬ１＿ＰＭＧ＿ＲＭＥＮを指定することができる。しかし、ＰＭＧフィールドがＰＡＲＴＩＤのサブプロパティとして扱われる実施形態では、性能監視ＩＤの再マッピングを可能にするための追加の制御は必要ないかもしれない。
【００５６】
したがって、簡潔にするために図７はステップ１２２でＩＤを再マッピングするかどうかを決定するための単一の決定ステップ１２０を示しているが、実際には同じメモリトランザクションに付加される異なるＩＤに対して別々の決定を行うことができ、例えば、性能監視ＩＤ（ＰＭＧ）は、リソース分割ＩＤ（ＰＡＲＴＩＤ）が再マッピングされていない間に再マッピングされる可能性があり、その逆も可能である。また、理解を容易にするために図７は条件付きステップとしてステップ１２２を有する逐次プロセスを示しているが、実際には図９に示されるように物理パーティションＩＤは各メモリトランザクションに対して計算され得、パーティションＩＤの再マッピングされたバージョンと再マッピングされていないバージョンの両方が、関連する有効化パラメータに基づいてそれらの間で選択するマルチプレクサ１３２に提供されてもよい。これは、物理パーティションＩＤを調べる前に仮想化が有効になっているかどうかが判定されるまで待つよりも早くなり得る。
【００５７】
当業者は、図９に示されるようなカスケード接続されたマルチプレクサが、より多くの入力を有する単一のマルチプレクサに組み合わせることを含む、同じ効果を達成するために異なる方法で接続され得ることを理解することができる。
【００５８】
図１０は、ステップ１２２をより詳細に示す流れ図である。ステップ１４０で、再マッピングされているパーティションＩＤが範囲外であるかどうかが判定される。例えば、仮想化制御レジスタ１１６または別のＭＰＡＭ制御レジスタ６８（例えば、ハードウェアにどのような機能が提供されているかをソフトウェアに識別させるためのディスカバリレジスタ１４２）は、現在のコンテキストで指定できる最大ＩＤ値を指定することができる。例えば、ハイパーバイザは、例えばハードウェアにいくつの再マッピングレジスタ１２８が設けられているかに基づいて、その下で実行されているオペレーティングシステムによって使用され得るパーティションＩＤの再マッピング可能範囲を定義することができる。再マッピングされているパーティションＩＤ（すなわち、図７のステップ１１２で選択されたレジスタから読み取られたＩＤ）が範囲外である場合、ステップ１４４で例外イベントがシグナリングされてより高い例外レベルへのトラップが引き起こされる。通常、より高い例外レベルはＥＬ２になるため、ハイパーバイザの例外ハンドラが不適切なパーティションＩＤを処理するためのアクションを実行できる。例えば、ハイパーバイザは、エラーが発生したことをシグナリングしたり、オペレーティングシステムが使用を許可されているグローバルパーティションＩＤ空間内の別のパーティションＩＤに範囲外パーティションＩＤ（例えば、特定のＩＤが割り当てられていないプロセスに使用されるデフォルトのパーティションＩＤ）を再マッピングしたりできる。
【００５９】
仮想パーティションＩＤが許容範囲内にある場合、ステップ１４６において、例えば、再マッピング有効レジスタ１２４内の対応する有効ビットに基づいて、対応する再マッピングエントリが有効であるかどうかが決定される。現在のＩＤが有効ではない場合、再びステップ１４４で、例外イベントがＥＬ２にトラップするようにシグナリングされ、その結果、ハイパーバイザに関連付けられた例外ハンドラが無効なパーティションＩＤを処理することができる。例えば、ハイパーバイザは、オペレーティングシステムが新たに割り当てられたマッピングを続けることを可能にするために実行をＥＬ１に戻す前に、物理パーティションＩＤをその仮想パーティションＩＤに割り当て、対応する有効ビットを更新してこのマッピングが現在有効であることを示すことによって応答し得る。
【００６０】
一方、仮想ＩＤが許容範囲内にあり有効である場合、ステップ１４８において、仮想ＩＤは、仮想ＩＤに対応する再マッピングエントリに指定された物理ＩＤにマッピングされる。
【００６１】
図１１に示すように、ＰＡＲＴＩＤ＿ＩおよびＰＡＲＴＩＤ＿ＤはパーティションＩＤレジスタ１００内で別々に指定されているが、再マッピング回路１３０は両方のタイプのＩＤに対して共通の再マッピングテーブル１２６，１２８を使用することができる。したがって、命令およびデータアクセスのために別々のセットの再マッピングレジスタ１２６，１２８を設ける必要はない。
【００６２】
要約すると、メモリシステム構成要素によって使用されるグローバルＩＤ空間内の物理ＩＤ上に仮想ＩＤのより小さい空間を再マッピングするための再マッピングハードウェア（再マッピングレジスタ１２６，１２８および再マッピング回路１３０）を設けることによって、競合するパーティションＩＤを使用しながら複数のゲストオペレーティングシステムを共存させることができ、各メモリトランザクションがパーティションＩＤを再マッピングするためにハイパーバイザにトラップする必要がないため、パフォーマンスが向上する。
【００６３】
図７のステップ１５０において、ＰＭＧおよびＰＡＲＴＩＤ（選択されたパーティションＩＤレジスタから読み取られた元の形式で、またはステップ１２２で再マッピングした後のいずれか）を指定するメモリトランザクションが発行されるだけでなく、セキュア状態表示はトランザクションが発行されたセキュリティ状態であるかどうかを示す。セキュア状態表示は、セキュアドメインに割り当てられたパーティションＩＤが、安全性の低いドメインに割り当てられたパーティションＩＤとは完全に別のパーティションＩＤ空間を使用できるように含まれる（単一のＩＤ空間からセキュアプロセスにいくつかのパーティションＩＤを割り当てるのではなく、非セキュアプロセスが提供されたセキュアプロセスに関する情報を推測できる可能性がある）。セキュアワールドとそれほどセキュアでないワールドを完全に分離することで、セキュリティを向上させることができる。トランザクションと共に提供されるセキュリティ表示は、トランザクションがどのセキュリティ状態から発行されたかを示す。ＭＰＡＭ＿ＥＬ１＿Ｓレジスタが存在しない実施形態でも、セキュリティ状態表示をトランザクションと共に提供することができ、そのような実施形態は、依然として、セキュア／非セキュア状態に対して別々のパーティションＩＤをサポートすることができる（セキュリティ状態遷移におけるパーティションＩＤのコンテキスト切り替えは、個別のパーティションＩＤレジスタを提供するのではなく、状態ごとに異なるＩＤを強制するためのメカニズムである）ことに留意されたい。
【００６４】
このセキュリティ表示は、トランザクションのターゲットアドレスがセキュアか非セキュアかを示すアドレスベースのセキュリティ表示とは別に提供されてもよい。すなわち、メモリアドレス空間の領域はセキュアまたは非セキュアとして指定され得、セキュア領域はセキュアドメインからのみアクセス可能であり、一方、非セキュア領域はセキュアおよび非セキュアドメインの両方でアクセス可能である。アドレスがセキュア領域にあるか非セキュア領域にあるかに応じてアクセスを制御するシステムＭＭＵなどのさらなる制御構造をメモリシステムが含む場合、そのようなアドレスベースのセキュリティ表示をトランザクションに含めることができる。ただし、セキュアドメインはアドレス空間の非セキュア領域とセキュア領域の両方にアクセスできるため、このアドレスベースのセキュリティ表示では、トランザクションを発行したプロセスがセキュアか非セキュアかを識別するのに十分ではない。したがって、メモリトランザクションは、トランザクションが発行されたドメイン（ＭＰＡＭ＿ＮＳ）とターゲットアドレスに関連付けられたセキュリティ状態（ＮＳ）の両方を別々に識別できる。
【表５】
2020514868.tif 000007
【００６５】
メモリトランザクションを受信すると、メモリシステム構成要素は、ＭＰＡＭ＿ＮＳセキュリティ表示を使用して、セキュアドメインと非セキュアドメインのそれぞれについて異なるパラメータセット間で選択することができ、これにより、非セキュアコードが性能制御パラメータを設定したり、セキュアコードの性能監視データにアクセスしたりする場合に、セキュリティ上のリスクが生じる可能性があるドメイン間での制御パラメータの共有を回避できる。
【００６６】
図６に戻ると、ディスカバリレジスタ１４２は、対応する処理要素（ＰＥ）のハードウェア機能を識別する様々な機能パラメータを識別する。これにより、ソフトウェアは特定のハードウェア実装でどのＭＰＡＭリソースが提供されているかを問い合わせることができるため、同じコードを複数の異なるハードウェアプラットフォームで実行できる。例えば、ディスカバリレジスタ１４２は、特定のＭＰＡＭ機能（例えば、仮想化、または別々のセキュア／非セキュアＩＤ空間）が提供されるかどうか、またはどのサイズのリソースが提供されるか（例えば、パーティションＩＤのビット数、またはマッピングレジスタ１２６，１２８の数）を指定し得る。例えば、ディスカバリレジスタ１４２は以下を指定することができる：
・ＰＡＲＴＩＤ＿ＭＡＸ：ＰＥのハードウェア実装でサポートされている最大パーティションＩＤ；
・ＨＡＳ＿ＶＣＲ：仮想化機能が提供されるかどうか（したがって、仮想化制御レジスタ１１６、再マッピング有効レジスタ１２４、再マッピングレジスタ１２６，１２８、および再マッピング回路１３０が提供されるかどうか）；
・ＰＡＲＴＩＤ＿ＲＥＭＡＰ＿ＭＡＸ：ＰＥのハードウェア実装でサポートされている最大仮想パーティションＩＤ；
・ＰＭＧ＿ＭＡＸ：ＰＥのハードウェア実装でサポートされている最大ＰＭＧ値；
・ＰＭＧ＿ＲＥＭＡＰ＿ＭＡＸ  ：（オプション）−ＰＭＧフィールドの再マッピングをサポートする実施形態では、ＰＥのハードウェア実装によってサポートされている最大仮想性能監視パーティションＩＤ；
・ＨＡＳ＿ＭＰＡＭＦ：ＰＥ内にＭＰＡＭ分割制御機能が存在することを示す。例えば、ＰＥに、内部キャッシュ、ＴＬＢ、またはＭＰＡＭ分割制御機能を有するその他の内部メモリシステム構成要素がある場合、これを設定できる。他のメモリシステム構成要素によって使用するためにパーティションＩＤをメモリトランザクションに付加することができるが、それ自体がメモリリソースまたは性能監視リソースを分割するためにパーティションＩＤを使用する分割制御機能を有していないＰＥは、ＨＡＳ＿ＭＰＡＭＦをクリアする。
・ＨＡＳ＿Ｓ：セキュア状態がサポートされているかどうかを指定する。
【００６７】
セキュア状態がサポートされるとき、セキュア状態に対するＭＰＡＭのさらなる能力を識別するためにさらなるセキュアディスカバリレジスタＭＰＡＭ＿ＳＩＤＲ１６０が提供され得る：
・Ｓ＿ＰＡＲＴＩＤ＿ＭＡＸ：セキュア状態のＰＡＲＴＩＤの最大値
・Ｓ＿ＰＭＧ＿ＭＡＸ：セキュア状態のＰＭＧの最大値。
【００６８】
ディスカバリレジスタ１４２は、ＥＬ０以外の任意の例外状態から読み取り可能であり得るが、読み取り専用であり、ディスカバリレジスタ１４２は、特定のハードウェア実装に固有のパラメータを定義するので、書き込むことができない。例えば、ディスカバリレジスタ１４２は、装置の製造中に有線で接続されてもよい。セキュアディスカバリレジスタ１６０は、ＥＬ３から読み取られるが他の動作状態にはアクセスできない。
【００６９】
仮想化がサポートされている場合、ＰＡＲＴＩＤ＿ＭＡＸおよびＰＭＧ＿ＭＡＸの実際の値はハイパーバイザがオペレーティングシステムに使用を許可したパーティションＩＤの範囲よりも大きい可能性があるので、ＥＬ１のオペレーティングシステムがディスカバリレジスタ１４２を直接読み取ることを防ぐことが望ましいかもしれない。したがって、ディスカバリレジスタ１４２にアクセスしようと試みるＥＬ１で実行される命令（または少なくともメモリトランザクションに指定されることが許可される最大パーティションＩＤおよび性能監視グループを定義するＰＡＲＴＩＤ＿ＭＡＸまたはＰＭＧ＿ＭＡＸフィールドにアクセスしようとする試み）は例外をトリガする可能性があり、これは、最大値の代わりに別の値（例えば、ＰＡＲＴＩＤ＿ＲＥＭＡＰ＿ＭＡＸまたはＰＭＧ＿ＲＥＭＡＰ＿ＭＡＸ）を提供して、オペレーティングシステムに見えるパーティションＩＤの数をエミュレートできるハイパーバイザにトラップする。あるいは、パーティションＩＤが範囲外の場合、例外をトリガする代わりに、前述のように、無効な仮想パーティションＩＤの処理と同様の方法で、パーティションＩＤをＩＤ＝０などの所定の「エラーの場合」値にマッピングすることによって処理できる。
【００７０】
したがって、仮想化制御レジスタ１１６は、ＥＬ１からディスカバリレジスタ１４２へのそのようなアクセスがＥＬ２にトラップされるかどうかを制御する構成パラメータＴＲＡＰ＿ＭＰＡＭ＿ＩＤＲ＿ＥＬ１を定義する。この構成パラメータを設定することによって、ＥＬ２のハイパーバイザまたはＥＬ３のセキュアモニタは、ＥＬ１のゲストＯＳがディスカバリレジスタ（ＩＤＲ）１４２に直接アクセスできるかどうか、またはハイパーバイザがステップインしなければならないかどうかを制御できる。例えば、仮想化が無効になっているとき、ＩＤＲアクセスがＥＬ２にトラップするかどうかを選択する柔軟性を提供することは、ＯＳがＥＬ２への不要なトラップを回避することによってＩＤＲに直接アクセスすることが適切である場合、性能を改善するのに有用である。
【００７１】
ＥＬ１またはＥＬ０による使用のために仮想から物理ＩＤへのマッピングを設定するＥＬ２の文脈で仮想化が上述されているが、一般に、この技術は異なる特権レベルのソフトウェア実行環境の任意のペアに使用され得るため、より高い特権レベルの環境は、より低い特権のソフトウェア実行環境によって発行されたトランザクションについて、仮想パーティションＩＤの物理パーティションＩＤへの再マッピングを制御することができる。また、別段の指定がない限り、パーティションＩＤについて上述した技法は、いくつかの実施形態では性能監視グループにも使用することができるが、これは必須ではない。したがって、パーティション識別子という用語は、特に指定がない限り、性能監視グループ識別子を含むと解釈できる。
【００７２】
所与のメモリトランザクションに付加されたパーティションＩＤおよび性能監視グループ、ならびにトランザクションが発行されたセキュリティ状態を指定するセキュリティ状態表示は、メモリシステム全体にわたってメモリトランザクションと共に流れる。したがって、メモリトランザクションをメモリシステムの他の構成要素に渡すメモリシステムのノード（例えば、相互接続）は、そのようなノードで受信された対応する要求と同じパーティションＩＤ、性能監視グループおよびセキュリティ状態表示を有する外部メモリトランザクションを提供する。メモリシステム内のキャッシュの場合、これらはキャッシュヒットがあると要求に対する応答を生成することがあり、キャッシュミスがあるとそれをメモリシステムの別の部分に渡すことがあるという挙動がある。また、要求に基づいて新しいエントリを割り当てることもある。新しいエントリを割り当てるとき、キャッシュは、キャッシュされたデータ自体と一緒に、パーティションＩＤ、性能監視グループ、および割り当てを引き起こした要求のセキュリティ表示を格納することができる。データがさらなるキャッシュまたはメモリに書き戻されるとき、追い出しをトリガした要求に関連付けられたＩＤではなく、キャッシュ内の追い出されたデータに関連付けられたパーティションＩＤ、性能監視グループおよびセキュリティ表示を指定してライトバックトランザクションが生成される。これにより、対応するデータをキャッシュに割り当てたソフトウェア実行環境に固有のパラメータに従って、ライトバックのためのリソース割り当てまたは性能監視を制御／監視することが可能になる。
【００７３】
すべてのメモリシステム構成要素（例えば、キャッシュ、相互接続、メモリコントローラ、メモリデバイス、またはメモリ管理ユニット）が分割をサポートするわけではないことに留意されたい。分割をサポートしない構成要素は、すべてのソフトウェア実行環境に対して共通の方法でリソース割り当てを制御したり性能を監視したりしてもよい。それにもかかわらず、分割をサポートする下流のメモリシステム構成要素が適切なパラメータセットを選択するためにパーティションＩＤを使用することができるように、外部要求は上で論じられたのと同じ方法でパーティションＩＤを依然として付加される。したがって、システム設計者が実際に任意の所与のメモリシステム構成要素でパーティションＩＤを使用することを選択したかどうかにかかわらず、上述の処理要素アーキテクチャおよびパーティションＩＤルーティング方式は、メモリシステムの様々な場所でパーティション分割を実装する様々な実装範囲をサポートする柔軟性を提供する。しかしながら、パーティションＩＤまたは性能監視グループＩＤに応答するそのようなメモリシステム構成要素の場合、これらは、パーティションＩＤに基づいてリソース割り当てもしくは競合管理、または性能監視を制御することができる。
【００７４】
性能モニタは、リソース分割制御とは異なる動作をする。性能モニタは、モニタにプログラムされているフィルタに基づいて性能メトリックを測定、カウント、または計算する。フィルタパラメータには、パーティションＩＤと性能監視グループ（またはパーティションＩＤは含まない性能監視グループ）を含めることができる。例えば、メモリに転送されたバイト数をカウントする性能モニタは、パーティションＩＤが５で性能監視グループが２の読み取りのみをカウントするように、測定値をフィルタリングしてもよい。したがって、性能測定値は、同じパーティションＩＤと性能監視グループを共有する、異なるソフトウェア実行環境、または異なるソフトウェア実行環境のグループごとに収集できる。
【００７５】
一方、リソース分割をサポートするシステム構成要素の場合、メモリシステム構成要素は、パーティションＩＤに基づいてメモリシステム構成要素パラメータのセットを選択する。メモリシステム構成要素パラメータは、メモリシステムリソースの割り当て（帯域幅、キャッシュ容量など）またはそれらのリソースの競合を制御するために使用されるリソース制御パラメータであってもよい（例えば、選択されたメモリシステム構成要素パラメータは、対応するパーティションＩＤに関連するトランザクションに設定されたプライオリティを定義することができる）。
【００７６】
図１２は、パーティションＩＤに基づいてメモリシステム構成要素の動作を制御するための方法を示している。ステップ２００において、メモリシステム構成要素は、上述したようにパーティションＩＤ、性能監視グループおよびセキュリティ状態表示を指定するメモリトランザクションを受信する。メモリシステム構成要素がメモリシステムリソース分割をサポートする場合（ステップ２０２）、ステップ２０４で、パーティションＩＤおよびセキュリティ状態に基づいてリソース制御パラメータのセットが選択される。性能監視グループはこのステップでは考慮されない。ステップ２０６において、リソースの割り当ては、選択されたリソース制御パラメータのセットを使用して制御されるか、またはそれらのリソースの競合は、選択されたリソースパラメータのセットを使用して管理される。メモリシステムリソース分割がサポートされていない場合、ステップ２０４および２０６は省略される。
【００７７】
メモリシステム構成要素が性能監視グループによる性能監視分割をサポートする場合（ステップ２０８）、その後ステップ２１０で、構成要素に実装された各性能モニタはその要求をそのフィルタパラメータに対してテストする（ＰＭＧフィールドおよびパーティションＩＤフィールドに適用されるテストを含み得る）。フィルタパラメータを満たしている各モニタは、そのモニタが実行するように設計されている測定、カウント、または計算にしたがって、その内部状態を更新する。性能監視分割をサポートしないメモリシステム構成要素については、ステップ２１０は省略される。上記で説明したように、いくつかの実施形態では、パーティションＩＤフィールドとＰＭＧフィールドの両方をフィルタパラメータに含めることができる（そのため、ＰＭＧフィールドはパーティションＩＤフィールドをさらに制限する）。あるいは、ＰＭＧは、パーティションＩＤフィールドとは別個の独立したＩＤとして解釈され得、その場合、フィルタパラメータは、ＰＭＧを考慮し得るがパーティションＩＤを考慮し得ない。
【００７８】
リソース監視分割をサポートする各メモリシステム構成要素は、パーティションＩＤに基づいて選択される異なるセットのメモリシステム構成要素パラメータを格納するパラメータレジスタのセットを有することができる。分割制御のための制御パラメータは、論理的にはパーティションＩＤで索引付けされた制御パラメータのアレイである。制御パラメータを設定するためのインタフェースは、メモリマッピングされたレジスタのアレイとして構成することができ、あるいはセレクタレジスタと制御パラメータごとにただ１つの構成レジスタと共に構成することができる。後者の場合、構成ソフトウェアはまず構成するためのパーティションＩＤをセレクタレジスタに格納し、次に所望の制御パラメータを１つまたは複数の制御パラメータ構成レジスタに格納する。
【００７９】
図１３は、メモリシステム構成要素の一例であるキャッシュ３００の一例を示している。キャッシュ３００は、所与の処理要素６のレベル１データキャッシュ８、レベル１命令キャッシュ１０もしくはレベル２キャッシュ１２、クラスタキャッシュ１６、またはシステムキャッシュ２０などの命令またはデータをキャッシュするためのキャッシュであり得る。キャッシュ３００は、ＭＭＵ７０内のＴＬＢ７２またはページウォークキャッシュ７４などのアドレス変換用のキャッシュでもあり得る。図３は、ＭＭＵ７０が所与のプロセッサコア内に設けられている例を示しているが、例えばＳｏＣ相互接続１８内で、システムＭＭＵをメモリシステムのさらに下方に設けることも可能である。
【００８０】
キャッシュ３００は、キャッシュされる情報を格納するためのキャッシュストレージ（キャッシュＲＡＭ）３０２を有する。キャッシュＲＡＭ３０２は、一定数のストレージエントリ３０４を有する。図１３に示すように、各エントリは以下を格納することができる：
・キャッシュされたデータ３０６（これは、任意のキャッシュされた情報であり得る−データ値だけでなく、キャッシュのタイプに応じた命令またはアドレス変換データも包含する）；
・エントリ内の対応するデータが有効かどうかを指定する有効ビット３０８；
・キャッシュされたデータに関連するアドレスの一部を示すタグフィールド３１０；
・データをキャッシュに割り当てたメモリトランザクションのパーティションＩＤ３１４；
・割り当てメモリトランザクションの性能監視グループＩＤ３１６；
・割り当てメモリトランザクションのセキュリティ状態表示３１８（そのメモリトランザクションがどのセキュリティ状態から発行されたかを示す）；
・システム設計がキャッシュラインごとに保持する必要がある可能性があるその他の情報、例えば、コヒーレンス状態やアドレス空間インジケータ（ＡＳＩ）。
【００８１】
キャッシュからデータが追い出されると、ＩＤフィールド３１４，３１６，３１８を使用して、ライトバックトランザクションのためのパーティションＩＤ、性能監視グループＩＤ、およびセキュリティ状態表示が導出される。図１３には示されていないが、各キャッシュエントリはまた、キャッシュされたデータのコヒーレンシ状態を指定するコヒーレンシ情報（例えば、ライトバックが必要かどうかを判断するためにデータがクリーンかダーティか）、および／または追い出しが必要な場合の犠牲キャッシュラインを選択するために犠牲選択データ（例えば、どのエントリが直近に使用されたのかを追跡するためのデータ）であり得る。
【００８２】
キャッシュへのデータの割り当ては、直接マッピング、セットアソシアティブ、またはフルアソシアティブを含む、任意の既知のキャッシュ編成に従って制御することができる。図１３の例は、４通りのセットアソシアティブ編成方式を示しているが、これは一例にすぎないことを理解されたい。キャッシュへのルックアップは、対応するメモリトランザクションに関連付けられているパーティションＩＤとは無関係に実行される。したがって、所与のパーティションＩＤを指定するメモリトランザクションが受信されると、トランザクションは、キャッシュエントリに格納されたパーティションＩＤ３１４、非セキュアＩＤインジケータ３１８、および性能監視グループ３１６に関係なく、インデックス付きキャッシュエントリ内の任意のデータに対してヒットできる。したがって、性能リソースの分割および／または性能監視は、キャッシュされたデータへのアクセスを共有する様々なソフトウェアプロセスを妨げることはない。
【００８３】
一方、キャッシュにデータを割り当てるとき、キャッシュコントローラ３１２は、セキュリティ状態および対応するメモリトランザクションのパーティションＩＤに基づいて選択されたリソース制御パラメータのセットに応じて割り当てを制御する。キャッシュは上述のようにリソース制御パラメータレジスタ３２０のセットを有し、各レジスタ３２０は対応するソフトウェア実行環境に対するリソース制御パラメータを格納する。セレクタ３２２は、パーティションＩＤと、キャッシュへのデータの割り当てを必要とする着信メモリトランザクションのセキュリティ状態とに基づいて、レジスタのうちの１つを選択する。選択されたレジスタに格納されたパラメータは、データがキャッシュに割り当てられるかどうか、そしてどのように割り当てられるかを制御するために使用される。
【００８４】
第１のキャッシュ分割制御モードでは、パーティションＩＤを使用して選択された最大容量閾値を使用して割り当てが制御され、対応するパーティションＩＤに関連するデータを割り当てられることが許可されるキャッシュ容量の最大エントリ数を識別する。セキュア状態および非セキュア状態をサポートする実装形態では、閾値は、パーティションＩＤと非セキュアＩＤインジケータとの所与の組み合わせに関連付けられたデータを割り当てられることを許可された最大容量を定義することができる。例えば、最大容量閾値をより高い特権プロセスによって設定することができ、すなわち所与のオペレーティングシステムに対する閾値をハイパーバイザによって設定することができ、所与のアプリケーションに対する閾値をオペレーティングシステムによって設定することができる。
【００８５】
例えば、図２は、パーティションＩＤ０，１，および２にそれぞれ５０％、５０％、および４０％の最大容量閾値がアサインされている例を示している。これは、保証された割り当てではなく、特定のパーティションＩＤのデータを格納できるキャッシュ量の上限にすぎないため、異なるソフトウェア実行環境に対して定義されている最大容量閾値の合計が１００％を超える可能性があることに留意されたい。この場合、対応するソフトウェア実行環境がすべて同時に最大割り当てを使用することはない。
【００８６】
図１３に戻ると、キャッシュ３００は、各パーティションＩＤに関連するデータに対していくつのキャッシュエントリ３０４が割り当てられたかを追跡するための割り当てカウンタ３２６のセットを有する。セキュリティ状態がサポートされている場合、カウンタはセキュリティ状態に基づいてさらに分割されてもよい。所与のパーティションＩＤに対するデータ値がキャッシュに割り当てられると、対応する割り当てカウンタ３２６がインクリメントされる。データが無効化、削除、または置換されると、対応するパーティションＩＤの割り当てカウントがデクリメントする。所与のメモリトランザクションに応答してキャッシュミスが発生すると、キャッシュコントローラ３１２は、メモリトランザクションによって指定されたパーティションＩＤに対応する割り当てカウンタ３２６およびリソース制御パラメータレジスタ３２０を読み取り、割り当てカウントを最大容量閾値と比較し、比較結果に基づいて割り当てを制御する。現在の割り当てがまだ閾値を超えていない場合は、必要なデータをキャッシュに割り当てることができる。しかし、割り当てカウントが閾値以上である場合、キャッシュコントローラ３１２は、新しい要求にデータを割り当てないことを決定するか、または新たなデータを割り当てる前にキャッシュから同じパーティションＩＤに関連する他のデータを追い出すかもしくは置き換えることができ、そのパーティションＩＤに関連した閾値レベルを超えるエントリがキャッシュに割り当てられるのを防ぐ。追い出しまたは置き換えが必要な場合、キャッシュの各エントリに格納されているパーティションＩＤ３１４（および提供されている場合は犠牲選択情報）を使用して、どのデータが追い出されるかを判断することができる。容量をカウントする上記の手段は単なる一例であり、他の技術もキャッシュ容量を追跡するために使用され得ることが理解されよう。
【００８７】
リソース制御パラメータレジスタ３２０は、最大容量閾値によって示される最大エントリ数を様々な方法で表すことができる。例えば、対応するパーティションＩＤデータに割り当てることができるエントリの最大数を直接指定できる。あるいは、そのパーティションＩＤに割り当てることができるキャッシュの全容量のうちの一部分に関して閾値を指定することができる。例えば、パラメータは、パラメータの幅およびスケールファクタが対応するメモリ構成要素のＩＤレジスタ３６２に指定されている場合のスケーリングされた割合を表すことができる。例えば、構成要素が２５６でスケーリングされた８ビットの容量制御をサポートしているとすると、この場合、容量の３０％を特定のパーティションに割り当てるため、パーティションの最大容量パラメータは３０＊２５６＝７６．８となり、割り当てが望ましい割合を超えないように、７６に切り捨てられる。
【００８８】
複数のセキュリティ状態がサポートされる実施形態では、セキュリティ状態表示は、パーティションＩＤと組み合わせて、適切なリソース制御パラメータレジスタ３２０および割り当てカウント３２６を選択するためにも使用される。
【００８９】
図１４は、第１の分割制御モードにおいて最大容量閾値に応じてキャッシュ割り当てを制御する方法を示している。ステップ３３０で、所与のメモリトランザクションについてキャッシュミスが検出される。ステップ３３２において、リソース制御パラメータ３２０のセットが、対応するパーティションＩＤおよびセキュリティ状態に基づいて選択される。ステップ３３４で、対応するセキュリティ状態およびパーティションＩＤについてカウンタ３２６によって維持されている割り当てカウントが、選択されたリソース制御パラメータ３２０のセット内の最大容量閾値と比較され、次に、ステップ３３６で、割り当てカウントが最大容量閾値より大きいかどうかが判断される。もしそうでなければ、ステップ３３８でキャッシュミスに応答してその要求のデータがキャッシュに割り当てられる。一方、割り当てが割り当て閾値以上である場合、ステップ３４０においてキャッシュへのデータの割り当てが阻止されるか、あるいはステップ３４２において現在の要求と同じパーティションＩＤに関連するデータが置き換えられ得るか、または、新たに割り当てられたデータのために追い出され、ステップ３３８でデータを通常通りに割り当てることができる（例えば、閾値が最近更新された場合、ステップ３４０または３４２によって提供される制限にもかかわらず、割り当てカウントが閾値を超えることがある）。方法がステップ３４０または３４２に進むかどうかは、キャッシュの所与の実装形態に対する実装上の選択である。
【００９０】
あるいは、図１５に示すように、パーティションＩＤに基づいて選択されたキャッシュ容量部分ビットマップ３５０を使用してキャッシュ割り当てを制御する第２のキャッシュ制御モードを使用することができる。ビットマップ３５０は、キャッシュストレージ３０２の対応する部分が対応するパーティションＩＤに関連するデータを格納するために割り当てられることが許可されるかどうかをそれぞれ指定する複数のフィールド３５２を有する。例えば、図１５の例の下部に示されているビットマップ３５０は、各々がキャッシュ容量の１／３２に対応する３２個のフィールド３５２を有する。対応するパーティションＩＤを指定するトランザクションがキャッシュのその部分にデータを割り当てることができないことを示すために各フィールドを０に設定し、その部分にそのパーティションＩＤ用のデータを割り当てることを許可することを示すために１に設定することができる。
【００９１】
図１５の上部に示すように、異なるパーティションＩＤに対して異なるビットマップ３５０を設定することによって、キャッシュのいくつかの部分を所与のパーティションＩＤのために予約することができるが、他の部分はパーティションＩＤ間で共有されるかまたは全く割り当てられない可能性がある。例えば、図１５に示す４つのキャッシュ部分のサブセット（これは全体のキャッシュ容量ではない）では、キャッシュの部分０はパーティション１にのみ割り当てられ、部分１はパーティション１とパーティション２の両方に割り当てられ、このため、キャッシュのこの部分への割り当てを競合する可能性があり、部分２はパーティション２にのみ割り当てられ、部分３はこれらのパーティションのいずれにも割り当てられない。したがって、パーティション１のキャッシュにデータを割り当てるとき、キャッシュコントローラ３１２は、部分０または１内の位置を選択することに制限されるが、部分２または３に割り当てることはできない。ビットマップによって定義される「部分」は、任意の所与のアドレスをグループの少なくとも１つのエントリ、例えばセットアソシアティブキャッシュ内の全ウェイ（そのウェイに属するすべてのセットを含む）、またはフルアソシアティブキャッシュ内の任意のより多くのエントリのサブセットに割り当てることができるという特性を有する１つまたは複数のキャッシュエントリの任意のグループとすることができる。
【００９２】
したがって、第２の割り当て制御モードでは、キャッシュミスが検出されたときに、対応するパーティションＩＤおよびセキュリティ状態に対する制御パラメータセットが再び選択されるが、今回はキャッシュビットマップが読み取られ、キャッシュのどの部分にデータを割り当てることができるかを制御するために使用される。
【００９３】
いくつかのキャッシュ実装形態は、上で説明された第１および第２のキャッシュ割り当て制御モードのうちの１つのみをサポートし得る（例えば、直接マッピングされたキャッシュは第１のモードを実装できるが第２のモードを実装できない）。他の実装形態は両方のモードを使用するオプションをサポートし得る。例えば、これは、使用されている特定のキャッシュ編成が多くの部分を与えることをサポートしていない場合（例えば、比較的連想性の低いセットアソシアティブキャッシュ）、最大容量制限をオーバーレイすることで部分分割のみよりも多くの制御を与えるので有用であり得る。
【００９４】
上述のように、キャッシュ３００は、リソース分割がどのように実行されるかを制御するためのメモリマッピングされた構成レジスタ３６０を有することができる。構成レジスタ３６０は、キャッシュ３００のハードウェア機能を識別するためのＩＤレジスタ３６２、更新するリソース制御パラメータのセットを選択するためのセレクタレジスタ３６４、および選択されたリソース制御パラメータセットに書き込まれるパラメータを指定するための１つまたは複数の構成レジスタ３６６を含む。
【００９５】
例えば、ＩＤレジスタ３６２は、どの第１／第２のキャッシュ割り当て制御モードがサポートされているかを指定することができる（閾値またはビットマップに基づく分割）。例えば、割り当てカウンタ３２６を全く有していないキャッシュは、第１のモードがサポートされていないことを示してもよい。この場合、制御プロセッサは第２のモードの使用に制限されてもよい。他のキャッシュは両方のモードをサポートし、与えられたプロセスにどちらが使用されるかを選択する柔軟性を有していてもよい。この場合、どのモードを使用するかは、対応するパーティションＩＤについてリソース制御パラメータレジスタ３２０内で指定され、構成レジスタ３６０を使用してプログラムされてもよい。
【００９６】
所与のパーティションＩＤに対してリソース制御パラメータのセットを設定するとき、ソフトウェアは、それらのレジスタ３６４，３６６にマッピングされたメモリアドレスを指定するメモリトランザクションを発行することによって、そのパーティションＩＤおよび対応する構成レジスタ３６６に書き込まれるべきパラメータをセレクタレジスタ３６４に書き込む。それに応答して、キャッシュ３００は、構成レジスタ３６６からパラメータを読み取り、それらを関連パーティションＩＤによって識別される対応するリソース制御パラメータレジスタ３２０に書き込む。セキュリティ状態がサポートされるとき、セレクタレジスタ３６４および構成レジスタ３６６は、どのセットのレジスタがアクセスされるかを選択するメモリトランザクションに関連するセキュリティ表示と共に、セキュア状態およびセキュアでない状態にそれぞれ異なるバージョンが提供されるようにバンクされ得る。
【００９７】
リソース制御パラメータを設定するためのそのようなセレクタレジスタ３６４および構成レジスタ３６６は、リソース制御パラメータをどのように設定することができるかの一例にすぎないことに留意されたい。このアプローチの利点は、メモリシステム構成要素のアドレス空間の使用量が節約されることである。しかしながら、代替案は、制御設定のアレイがＮ個の制御設定レジスタのアレイとして公開されるより広いインタフェースを使用することであり、ここでＮはサポートされるパーティションＩＤの最大数である。これは、制御構成が単一書き込みでパーティションに対して更新されることができ、したがって他のプロセッサがメモリシステム構成要素を構成している間に１つのプロセッサがセレクタレジスタ３６４および構成レジスタ３６６にアクセスするのを防ぐための相互排除を必要としないという点でより簡単である。例えば、パーティションＩＤの最大数が２１６で、一般的なメモリシステム構成要素に２〜４個の制御がある場合、このアプローチではリソース制御パラメータのアレイに２５６ＫＢのアドレス空間を使用してもよい。
【００９８】
メモリマッピングされた構成レジスタ３６０へのアクセスは、例えば、どの動作状態が構成レジスタ３６０を更新するためのメモリトランザクションを発行できるかを制限するために、ＭＭＵ７０によって制御されてもよい。例えば、ＥＬ０で実行される命令は構成レジスタ３６０にアクセスすることを許可されないかもしれないが、ＥＬ２のハイパーバイザは許可されることがある。パーティションＩＤの仮想化がサポートされる場合、キャッシュ３００内で使用されるパーティションＩＤは物理パーティションＩＤであり、一方、対応するアプリケーションのパーティションＩＤに使用されるリソース制御パラメータを設定しようと試みるオペレーティングシステムは仮想パーティションＩＤを指定し得る。したがって、オペレーティングシステムが誤ったリソース制御パラメータを更新するのを防ぐために、構成レジスタ３６０にマッピングされたアドレスへのアクセスがトラップされ得、ＥＬ２でハイパーバイザに処理を切り替える例外をトリガすることができる。次いで、ハイパーバイザ内の例外ハンドラは、キャッシュ３００において関連するパラメータセット３２０を更新するために、正しい物理パーティションＩＤを有する対応するメモリトランザクションを発行することができる。これを達成するために、２ステージのＭＭＵ変換プロセスにおいて、メモリマッピングされたレジスタ３６０に関連するアドレスは、メモリシステム構成要素によって使用される他のアドレス空間とは異なるステージ２アドレスページに配置されてもよい。
【００９９】
リソース制御分割と同様に、キャッシュ３００内の性能監視は、性能監視グループ（およびＰＭＧがパーティションＩＤのサブプロパティである実施形態ではパーティションＩＤ）およびセキュリティ状態に基づいて分割されてもよい。それぞれがその性能モニタ３８０に対応するフィルタパラメータ３８２のセットにプログラムされたフィルタに基づいて性能メトリクスを測定、カウント、または計算するように構成可能な、いくつかの性能モニタ３８０を設けることができる。フィルタパラメータ３８２は、ＰＡＲＴＩＤおよびＰＭＧを指定するためにフィールドを含むことができ、メモリトランザクションを受信すると、フィルタパラメータ３８２がＰＡＲＴＩＤ／ＰＭＧフィールドに特定の値を設定している場合、性能モニタは、そのトランザクションに関連するＰＡＲＴＩＤ／ＰＭＧ値がフィルタパラメータ３８２に設定された値と一致するかどうかに応じて、そのトランザクションに基づいてそのメトリックを更新するかどうかを決定することができる。割り当て閾値を超えているかどうかを追跡するために割り当てカウンタ３２６が提供される第１のキャッシュ割り当てモードをサポートする実装形態では、同じ割り当てカウンタ３２６を性能監視に使用することもできることに留意されたい。
【０１００】
キャッシュ３００がＴＬＢまたはページウォークキャッシュなどのアドレス変換キャッシュである場合、このようにキャッシュ割り当てリソースを分割することは、１つのソフトウェア実行環境が、割り当てられたパーセンテージ／アドレス変換キャッシュ容量の一部を超えて割り当てられないようにするのに役立ち得、これにより、他のソフトウェア実行環境用の空間を確保し、「ノイジーネイバー（ｎｏｉｓｙ  ｎｅｉｇｈｂｏｕｒ）」効果を軽減する。
【０１０１】
図１３はキャッシュ３００の一例を示しているが、他のメモリシステム構成要素は、所与のパーティションＩＤ／性能監視グループ／セキュリティ状態に関連するメモリシステム構成要素パラメータを構成するためのメモリマッピングされた構成レジスタ３６０、および対応するパーティションＩＤに対する構成データのセットを指定するためのリソース制御パラメータレジスタ３２０の類似のセットを有し得る。
【０１０２】
特に、他のメモリシステム構成要素（例えば、メモリコントローラ２４または相互接続１４，１８など）については、以下の形態のリソース分割のいずれかを実装することができる。
【０１０３】
メモリチャネル帯域幅分割
メインメモリチャネルの帯域幅は分割されてもよい。２つの帯域幅制御方式が提供されてもよい。メモリチャネルは、以下のうちの一方または両方をオプションで実装できる。
・競合がある場合でも、パーティションが要求する最小帯域幅
・競合がある場合にパーティションに使用可能な最大帯域幅制限
【０１０４】
これらをサポートするチャネルでは、これらの制御方式の任意の組み合わせを同時に使用できる。各制御方式については、以下のセクションで説明する。
【０１０５】
最小帯域幅制御方式
最小帯域幅制御方式は、現在の帯域幅が最小値を下回るとパーティション優先度からの要求を出し、最小帯域幅を超えるとその要求が他の通常の要求と競合できるようする。パーティションの最小帯域幅を下回る要求は、チャネルでスケジュールされる可能性が最も高い。最小帯域幅制御方式は、アカウンティング期間中にメモリ帯域幅を追跡する。
・アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を下回っている場合、その要求はチャネル帯域幅を使用するように優先的に選択される。
・アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を超えている場合、その要求は他の通常の優先度要求と競合してチャネルの帯域幅を使用する。
【０１０６】
アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。メモリシステム構成要素内のレジスタは、所与のパーティションＩＤに対する最小帯域幅制限を、スケーリングされた１秒あたりのメガバイトとして指定することができる。１秒あたりのメガバイト数のスケール値は、１秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
【０１０７】
最大帯域幅制限制御方式
最大帯域幅制限制御方式は、アカウンティング期間中にその最大帯域幅制限までパーティションの通常の優先度を与える。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大値を下回っている場合、その要求は通常の優先度でメモリチャネルでのスケジューリングを求めて競合する。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大帯域幅制限を超えている場合、その要求は他の優先度の低い要求と競合してチャネルで帯域幅を使用する。
【０１０８】
最大帯域幅制限制御方式は、帯域幅使用量が最大帯域幅制限を下回るときにはパーティションの通常の優先度からの要求、帯域幅使用量が最大帯域幅制限を超えるときには通常ではない優先度からの要求を与える。したがって、チャネル帯域幅の競合がない場合、パーティションは最大帯域幅より多くの帯域幅を使用してもよい。パーティションの帯域幅使用量がその上限を下回っているときの帯域幅の要求は通常のプライオリティでスケジュールされるため、競合する要求によっては、パーティションの最大制限を下回る要求帯域幅のすべてがチャネルスケジューラによって許可されるとは限らない。アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。
【０１０９】
この場合もやはり、最大帯域幅制限のための制御パラメータは、スケーリングされた１秒あたりのメガバイトとして指定され得る。１秒あたりのメガバイト数のスケール値は、１秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
【０１１０】
最小帯域幅制御方式と最大帯域幅制限制御方式の両方が実装されている場合、次の表は要求の優先度を示している：
【表６】
2020514868.tif 000008
【０１１１】
上述したすべての方式について、帯域幅分割方式の制御パラメータはすべて、所与の単位、例えば１秒あたりのメガバイト数で表すことができる。この値は、マイクロ秒あたりに転送されたバイト数にも相当する。実装は、結果として得られる値がパーティションＩＤのためのメモリシステム構成要素の帯域幅制御レジスタのうちの１つにプログラムされる前に、各帯域幅分割制御パラメータが一定のスケーリングファクタによって乗算されることを必要とし得る。実装が制御パラメータのスケーリングを必要とするかどうか、および必要ならばスケーリングファクタは、メモリシステム構成要素内のディスカバリレジスタ内で指定され得る（上述のキャッシュのディスカバリレジスタ３６２と同様）。
【０１１２】
上述したすべてのメモリ帯域幅分割方式について、メモリチャネル帯域幅調整は、アカウンティング期間にわたって起こり得る。アカウンティング期間は固定ウィンドウでも移動ウィンドウでもよい。ウィンドウの幅は、メモリシステム構成要素内のディスカバリレジスタから読み取ることができる発見可能な定数であり得る。例えば、アカウンティング期間は少なくとも１マイクロ秒であり得、最大２０マイクロ秒以上であり得る。アカウンティング期間が長いほど、特に移動ウィンドウの実装ではより多くのハードウェアが必要になるが、アカウンティング期間が短いほど、特に固定ウィンドウの実装では、境界効果が大きくなる可能性がある。
【０１１３】
固定ウィンドウアカウンティングでは、各パーティションがそのパーティションの最小値と最大値に従って帯域幅を取得するように、帯域幅が要求に割り当てられる。要求またはローカルのプライオリティを使用して、帯域幅に関する競合する要求を解決できる。アカウンティングウィンドウの期間に達すると、以前にサービスされたことがない要求のキューを除いて、新しいウィンドウは履歴なしで始まる。新しいウィンドウは、パーティションごとにゼロから帯域幅の累積を開始する。
【０１１４】
移動ウィンドウアカウンティングでは、移動ウィンドウは、過去のウィンドウ幅で発行されたすべてのコマンドからパーティションごとに帯域幅の履歴を保持する。パーティションごとの帯域幅のアカウンティングのリセットはなく、むしろ、コマンドが処理されたときに帯域幅が追加され、そのコマンドがウィンドウの履歴から移動したときにアカウンティングから削除される。この継続的なアカウンティングは境界効果から比較的自由であるが、固定ウィンドウによって必要とされるパーティションＩＤごとの帯域幅カウンタに加えてウィンドウ内のコマンドの履歴を追跡するためにより多くのハードウェアを必要とする。
【０１１５】
すべてのパーティションの最小帯域幅割り当ては、利用可能なものよりも多くの帯域幅になる可能性がある。未使用の割り当てが他のパーティションで使用できるようになっているため、一部のパーティションで帯域幅割り当てが使用されていない場合、これは問題にならない。ただし、最小帯域幅が過剰に割り当てられていると、パーティション用にプログラムされている最小帯域幅が常に満たされるとは限らない。プログラムされた最小帯域幅割り当てがシステムによって確実に配信され得ることを保証するために、ソフトウェアは最小帯域幅が過剰に割り当てられないことを保証することができる。
【０１１６】
利用可能な帯域幅は、ＤＤＲクロックなど、多くのシステムで１つまたは複数のクロック周波数に依存する可能性があるため、利用可能な帯域幅に影響を与えるクロックを変更するときにソフトウェアが帯域幅を再割り当てすることを望むことがある。割り当てを変更せずにクロックレートを下げると、帯域幅が過剰に割り当てられる可能性がある。注：ＤＲＡＭチャネルで使用可能な帯域幅は一定ではないが、クロックレート、読み取りと書き込みの組み合わせ、およびバンクヒットレートによって異なる。
【０１１７】
当業者は、説明されたタイプの帯域幅制御がメモリチャネルコントローラにおいてのみ使用されることに限定されず、任意のメモリシステム構成要素において帯域幅を制御するために展開され得ることを理解されよう。
【０１１８】
プライオリティ分割
このドキュメントに記載されている他のメモリシステムリソースとは異なり、プライオリティはメモリシステムリソースの割り当てに直接影響するのではなく、リソースへのアクセスに関して発生する競合に影響する。適切に設定されたシステムがプライオリティを付けるために性能に大きな影響を与えることはめったにないが、プライオリティは、即時または持続を問わず、オーバーサブスクライブの状況で重要な役割を果たす。したがって、「プライオリティ分割」は、パーティション間のメモリシステムの影響を分離するのに役立つツールとして使用できる。
【０１１９】
パーティションは、メモリシステム内の各構成要素（プライオリティ分割をサポートする）でプライオリティをアサインされてもよい。この分割制御により、メモリシステムの異なる部分を異なるプライオリティで要求を処理するように設定することが可能になる。例えば、プロセッサからシステムキャッシュへの要求は、システムキャッシュからメインメモリへの要求よりも高い転送プライオリティを使用するように設定されてもよい。
【０１２０】
パーティションＩＤごとに２種類のプライオリティが識別され得る。
・内部プライオリティは、このメモリシステム構成要素の内部動作で使用されるプライオリティを制御する。それらを、内部動作を優先するためにメモリシステム構成要素内で使用することができる。例えば、メモリコントローラは、帯域幅の割り当てが明確な勝者を選ばない場合、内部のプライオリティを使用して待機中の要求を選択できる。
・下流プライオリティは、他のメモリシステム構成要素（例えば、相互接続またはメモリコントローラ）に下流で伝達されるプライオリティを制御する。「下流」とは、要求に対する通信方向を指す。「上流」応答は通常、それを生成した要求と同じ転送プライオリティを使用する。メモリシステム構成要素は、プライオリティ分割を有していない下流構成要素にプライオリティを示すために、下流プライオリティを使用する。これは、下流にある相互接続構成要素に転送プライオリティを設定するために使用できる。
【０１２１】
一方、構成要素がプライオリティの分割を実装していない場合、または下流のプライオリティを実装していない場合は、「スループライオリティ」を使用することが可能であり、下流のプライオリティは着信（上流）プライオリティまたは要求と同じである。同様に、（下流から上流へ）メモリシステム構成要素を通過する応答のプライオリティは、（下流から）受信された応答と同じプライオリティである。
【０１２２】
より一般的には、一例示的構成によれば、複数のソフトウェア実行環境のうちの１つの命令に応答してデータ処理を実行するための処理回路と；データにアクセスするためのメモリトランザクションを処理するための少なくとも１つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも１つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの１つを選択するように構成される、少なくとも１つのメモリシステム構成要素と；前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と、を備える装置が提供される。
【０１２３】
上記の例では、いくつかのソフトウェア実行環境がある。これらには、アプリケーション、オペレーティングシステム、仮想マシンなどを含めてもよい。各環境は同じメモリシステムへのアクセスを有する。メモリシステムはメインメモリを含むことができ、また１つまたは複数のキャッシュを含むこともできる。キャッシュ（存在する場合）は、メインメモリ（存在する場合）にアクセスする前に、大きくて遅いキャッシュにアクセスする前に、小さくて速いキャッシュにアクセスするように階層的に配置することができる。いくつかの例では、メモリシステムの一部（または全部）を共有することができ、メモリシステムの一部は特定の構成要素にしか利用できない。メモリシステムからのデータにアクセスする各メモリトランザクションはパーティション識別子を指定する。提供されるパーティション識別子は、メモリトランザクションを発行した環境によって異なる。例えば、各環境はそれ自体のパーティション識別子（またはパーティション識別子）をアサインされてもよく、そのうちの１つは各メモリトランザクションに関して提供される。次に、メモリトランザクション進行制御回路は、トランザクション識別子に関連するメモリトランザクション進行パラメータ（「メモリシステム構成要素分割制御設定」とも呼ばれる）を選択することによって、パーティション識別子に基づいてメモリトランザクションの進行を制御する。このようにして、一連のリソースを直接制御することができる。そうすることで、認識しやすくなり、効果が明確になるように一連のリソースを制御することが可能になり、リソースをソフトウェア環境の測定可能な挙動に関連付けることが可能になる。メモリトランザクション進行制御回路は、別個の装置とすることができ、少なくとも１つのメモリシステム構成要素に接続することができ、あるいは少なくとも１つのメモリシステム構成要素自体とすることができることに留意されたい。
【０１２４】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、前記メモリトランザクションが処理されるプライオリティを示すためのプライオリティ構成を含む。プライオリティの高いトランザクションは、プライオリティの低いトランザクションよりも重要度が高いため、より迅速に送信される可能性がある。プライオリティはよく数字で表される。しかしながら、「より高い」および「より低い」という用語は、トランザクションの相対的な重要性を指すものであり、トランザクションに関連するいかなる数値も指すものではないことに留意されたい。したがって、プライオリティの高いトランザクションを数値「０」と関連付けることができ、プライオリティの低いトランザクションを数値「９」と関連付けることができる。トランザクションに関連したプライオリティを表現することによって、複数のトランザクションが他の方法でどちらが先に進むことを許可されるべきかに関して結び付けられているときにタイミング競合を解決することが可能である。任意選択で、プライオリティを使用して、トランザクションの解決にリソースを費やすべきかどうか、またはそのトランザクションを他のトランザクションよりも優先させるべき程度を表すこともできる。例えば、いくつかのパーティション識別子と関連したトランザクションを、他のパーティション識別子とのトランザクションよりも早く進行できるようにすることができる。このようにして、延期されるべきではないソフトウェア実行環境は、それらのメモリトランザクションを他のソフトウェア実行環境よりも速く進行させることができる。
【０１２５】
いくつかの実施形態では、前記プライオリティ構成は内部プライオリティを含み；前記少なくとも１つのメモリシステム構成要素は、前記内部プライオリティで前記メモリトランザクションを処理することになる。内部プライオリティは、少なくとも１つのメモリシステム構成要素自体がメモリトランザクションを処理するプライオリティに関する。いくつかの実施形態では、内部プライオリティは任意の着信プライオリティを置き換える（例えば、それはトランザクションのバスＱｏＳプライオリティに基づいてもよい）。
【０１２６】
いくつかの実施形態では、前記プライオリティ構成は、前記メモリトランザクションが処理されることになる下流プライオリティを含む。メモリシステム構成要素は通常、例えば、要求されたデータへのアクセスを提供することによって、トランザクションを処理することができるメモリシステム構成要素にトランザクションが到達するまでトランザクションを下流に渡す。典型的なメモリ階層では、下流はメインメモリに向かうと見なすことができる。メモリトランザクションが処理される特定の下流プライオリティを提供することによって、トランザクションがメモリシステムのより多くの要素を通過するときにトランザクションのプライオリティを変更することが可能である。同様に、このようにして、選択を実行したもの以外のメモリシステム構成要素が所与のプライオリティでトランザクションを処理するように制御されることが可能である。下流プライオリティは、いくつかの実施形態では、任意の着信プライオリティをオーバーライドするかまたは置き換えることができる。下流プライオリティはまた、パラメータとしてサービス品質（ＱｏＳ）のサポートを実施する古いメモリシステム構成要素とインタフェースするためのメカニズムとして使用することができる。
【０１２７】
あるいは、トランザクションが処理されるプライオリティレベルを特定するのではなく、プライオリティレベルが変更されないままであるべきであると単に述べることが可能である。また、そのような場合、それらの構成要素に能動的に選択を実行させることなくメモリシステム構成要素を制御することが可能である。特に、そのような実施形態では、前記少なくとも１つのメモリシステム構成要素が前記メモリトランザクションを少なくとも１つの他の下流のメモリシステム構成要素に渡すとき、前記トランザクションは、メモリトランザクション進行パラメータの複数のセットのうちの前記１つを選択したメモリシステム構成要素が前記メモリトランザクションを処理したのと同じプライオリティで前記メモリトランザクションを処理するという指示と共に渡される。
【０１２８】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、各々が前記少なくとも１つのメモリシステム構成要素のうちの１つと関連付けられた複数のプライオリティ構成を含み；前記少なくとも１つのメモリシステム構成要素のそれぞれは、その関連するプライオリティ構成に従って前記メモリトランザクションを処理することになる。このようにして、各メモリシステム構成要素に対して異なるプライオリティ構成を有することが可能であり、それによって、トランザクションがメモリシステムを通って進むにつれてどのように処理されるかについての柔軟性が増す。例えば、一部のアプリケーションでは、同じシステム上の他の競合アプリケーションを考慮すると、短い遅延が許容でき、適切でさえある場合がある。したがって、おそらく近く（上流のメモリシステム構成要素）のそのような実行環境に低いプライオリティをアサインすることが適切である。しかしながら、長い遅延を許容することが望ましくない場合には、他のシステム構成要素に対してより高いプライオリティをアサインすることができる。このようにして、他の実行環境からのメモリトランザクションを優先するために短い遅延が生じる可能性がある。ただし、他のメモリシステム構成要素のプライオリティが高いため、もっと長い遅延は推奨されない。
【０１２９】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、前記少なくとも１つのメモリシステム構成要素に関連する制限を含む。制限は、例えば、その少なくとも１つのメモリシステム構成要素に関連するリソースに関して、メモリトランザクションの処理および／または受け渡し中に使い果たされる可能性がある。各パーティションに関連する制限は、実際に実装、プロビジョニング、または割り当てが可能なそのリソースの合計数になる必要はない。実際には、制限の合計が実際の制限を下回ってスラックが発生したり、実際の制限を超えたりする可能性があり、その場合、リソースは競合するパーティション間で共有され、時には、または競合する要求のある条件下では、割り当ての一部が満たされないことがある。そのような共有は等しくてもよいし、割り当てに有利になるように重み付けされてもよく、または最初の要求環境に全体的に割り当てられてもよく、残りは他の要求環境間で共有されてもよい。
【０１３０】
例えば、いくつかの実施形態では、前記制限は前記少なくとも１つのメモリシステム構成要素の帯域幅制限である。帯域幅は、ある期間にわたって少なくとも１つのメモリシステム構成要素の内外に転送されるデータの量として表すことができる。他の例では、帯域幅は、チャネルの理論上の最大帯域幅のパーセンテージ、または一定期間にわたって測定された転送バイト数、または実際の要求が実際の効率の悪い転送によって消費されたチャネルの理論上の最大帯域幅を消費する機会として表すことができる。現在の帯域幅は、ある期間（例えば、１または複数のマイクロ秒または数分）にわたる表現された帯域幅の測定値と見なすことができる。
【０１３１】
いくつかの実施形態では、帯域幅制限は最大帯域幅を含むことができる。例えば、いくつかの実施形態では、前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最大帯域幅を超えると、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの帯域幅へのアクセスの優先度を下げる。この（および他のいくつかの）例では、最大帯域幅は絶対的な制限である必要はなく、トランザクションが最大帯域幅を超えていないトランザクションに関連する他のトランザクションよりも帯域幅へのアクセスの優先度が低くなる点である。もちろん、最大帯域幅はパーティション間で異なる可能性があるため、一部のパーティションには他のパーティションよりも多くの帯域幅へのアクセスが与えられる。
【０１３２】
別の例では、帯域幅制限は最小帯域幅を含むことができる。例えば、いくつかの実施形態では、前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最小帯域幅を下回るとき、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの優先度を上げる。そのような例示的実施形態では、最小帯域幅制限は要件としてではなく、パーティションが高い優先度を受ける帯域幅として機能する。利用可能な帯域幅よりも多くのそのような要求がない限り、優先度の高い要求がサービスされることが期待できる。これを達成するために、パーティションが最小帯域幅を満たさなかった場合、そのパーティションを識別するトランザクションは、それらの最小帯域幅を満たしたパーティションを識別するトランザクションよりも高い優先度を与えられる。もちろん、最小帯域幅はパーティション間で異なる可能性があるため、一部のパーティションには他のパーティションよりも多くの帯域幅へのアクセスが与えられる。
【０１３３】
さらに別の例では、前記帯域幅制限は下限および上限を含み、前記下限は前記上限よりも低く；前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定するトランザクションに応答するために、前記メモリシステム構成要素の現在の帯域幅使用量に基づいて所与のパーティション識別子を指定するトランザクションの優先度を設定し、ここで、前記現在の帯域幅使用量が前記下限を下回るとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を第１のレベルに設定し；前記現在の帯域幅使用量が前記下限と前記上限との間にあるとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を前記第１のレベルよりも低い重要度の第２のレベルに設定し；前記現在の帯域幅使用量が前記上限を超える場合、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を、前記第２のレベルよりも低い重要度の第３のレベルに設定する。そのような実施形態では、少なくとも３つの異なる優先レベル、すなわち第１のレベル、第１のレベルより高い第２のレベル、および第２のレベルより高い第３のレベルが提供される。次に２つの帯域幅制限（最小帯域幅制限と最大帯域幅制限）が提供される。パーティションの最小帯域幅制限が満たされていない場合、そのパーティション識別子を指定するトランザクションには３番目の（より高い）優先度レベルが与えられ、したがって２番目または１番目の優先度を有するトランザクションよりも帯域幅が優先される。そうではなく、パーティションの最大帯域幅制限が満たされていない場合、そのパーティション識別子を指定しているトランザクションには２番目の優先度レベルが与えられ、したがって１番目の優先度を有するトランザクションよりも帯域幅が優先される。そうではなく、パーティションの最大帯域幅制限が満たされている場合、そのパーティション識別子を指定しているトランザクションに１番目の優先度レベルが与えられる。このようにして、パーティションは常にトランザクションを発行できる。ただし、下限（最小）帯域幅制限を満たしていないパーティションは優先され、（最大）帯域幅制限を超えているパーティションは優先されない。
【０１３４】
いくつかの実施形態において、前記制限は、前記少なくとも１つのメモリシステム構成要素の未処理のトランザクション制限であり；前記少なくとも１つのメモリシステム構成要素は、他のメモリシステム構成要素に対する前記パーティション識別子に関連付けられた未処理のトランザクションの数を前記未処理のトランザクション制限に制限するように構成される。未処理のトランザクションは、メモリシステム構成要素によって転送された（すなわち、下流側の）、結果がまだ返されていないトランザクションであると見なすことができる。このようなトランザクションはしばしば「インフライト」と呼ばれる。これらの実施形態では、各パーティションについて、一定数の「インフライト」トランザクションを許可することができる。制限を超える原因となるトランザクションは、インフライトのトランザクション数が制限を下回るまで「保留」され、その時点でトランザクションは下流に転送される（その結果、未処理／インフライトになる）。これは、後述するように、例えば、カウンタを使用して実施することができる。
【０１３５】
いくつかの実施形態では、前記少なくとも１つのメモリ構成要素は、発行されたトランザクション用のバッファを備え、前記制限は前記バッファのバッファ深さである。（トランザクションに応答することによって、またはトランザクションをさらに下流に転送することによって）そのメモリシステム構成要素によって処理される前に、メモリシステム構成要素はバッファを使用して（例えば、処理回路またはＩ／Ｏによって）複数の着信トランザクションを保持できる。例えば、メモリシステム構成要素の一例である相互接続において、１つまたは複数のバッファが存在し得る。各バッファは、トランザクションの数に関して測定されたそれ自体の深さ（サイズ）を有することができ、各パーティションはそのバッファ内の特定の数のエントリを割り当てられることができる。
【０１３６】
いくつかの実施形態では、前記制限は、他のトランザクションによってブロックされないように、マスク不可の状態で送信することができるトランザクションの数である。一部のトランザクションは、マスク不可としてマークされる可能性がある。例えば、そのようなトランザクションは、他のトランザクションによってブロックされることができないようなものであり得る。これを使用して「仮想チャネル」を作成できる。他のトランザクションが解決されるのを待つ必要がないため、マスク不可のトランザクションは迅速に解決されることが期待される（おそらく他のマスク不可のトランザクションを除く）。しかし、明らかにすべてのトランザクションがそのようなステータスを有することができるわけではないか、またはステータスが無意味になるかもしれない。したがって、そのようなトランザクションを送信する機能へのアクセスを制限することが望ましい場合がある。
【０１３７】
制限に対する使用量を決定できる方法はいくつかある。しかしながら、一実施形態では、装置は、前記制限によって制限されたリソースの使用量をカウントするためのカウンタをさらに備え；そして前記カウンタは所定の期間ごとにリセットする。このようなシステムは、「静的ウィンドウ」を提供し、これは、一定期間ごとにリセットされ、制限に対する使用量は各ウィンドウの間にカウントされる。
【０１３８】
他の実施形態では、前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするためのカウンタが提供される。したがって、そのような「フローティングウィンドウ」は、最近の履歴を考慮に入れることによって現在の使用量をより正確に測定するために使用することができる。対照的に、静的ウィンドウは実装が簡単かもしれないが、所定の期間ごとにすべての履歴を失う。
【０１３９】
図１６は、パーティション識別子によって設定された制限に基づいてメモリトランザクションのための優先度を選択するためのプロセスを説明するフローチャート３５４を示している。ステップ３５６において、選択された次のトランザクションが分析され、どのパーティション識別子がメモリトランザクションによって参照されているかが決定される。この識別子は、その後、メモリトランザクションパラメータを選択するために使用される。この実施形態では、メモリトランザクションパラメータは帯域幅制限を表す。ステップ３５８で、現在の帯域幅（すなわち、同じパーティション識別子を有するメモリトランザクションによって使用される帯域幅）が、関連するメモリトランザクションパラメータ内の最小帯域幅制限より小さいかどうかが判定される。もしそうであれば、ステップ３６０において、パーティションはまだその最小帯域幅割り当てを満たしていないので、優先度は１（高）に設定される。そうでなければ、ステップ３６２で、現在の帯域幅が関連するメモリトランザクションパラメータ内の最大帯域幅制限より大きいかどうかが判定される。もしそうであれば、ステップ３６４で、パーティションがそれに割り当てられた最大帯域幅を超えたので、メモリトランザクションの優先度は３（低）に設定される。なお、メモリトランザクションはまだ続行することが許可されているが、低い優先度で処理されるため、優先度の高い他のトランザクションを処理する必要がない場合にのみ続行できる可能性がある。そうでなければ、パーティションはその最小許容量を超えているがその最大許容量を超えていないので、ステップ３６６でトランザクションは２（中）の優先度を与えられる。このプロセスの結果として、関連付けられたトランザクションに帯域幅へのアクセスが割り当てられていないパーティションでは、現在の帯域幅使用量が減少する。したがって、トランザクションはブロックされないが、その代わりにそれらの帯域幅の消費は遅延する。
【０１４０】
図１７は、トランザクションＴを渡すメモリシステムを概略的に示している。トランザクションは、クラスタ相互接続１４からシステムオンチップ（ＳｏＣ）相互接続１８に、そしてメモリコントローラ２４に渡される。この実施形態では、ＳｏＣ相互接続１８は、トランザクションＴによって提供されたパーティション識別子に基づいてメモリトランザクションパラメータの選択を実行する。この実施形態では、ＳｏＣ相互接続１８でのトランザクションの内部処理に対して第１の優先度（１）が提供される。したがって、トランザクションを処理することができるかどうかを判断する際に、ＳｏＣ相互接続１８自体がトランザクションに高い優先度を与える。しかし、ＳｏＣ相互接続１８が、トランザクションを下流に渡す必要があると判断した場合、トランザクションは、第２の優先度（３）と共に渡され、それによってメモリコントローラ２４はトランザクションを処理することになる。このようにして、メモリトランザクションパラメータの選択を実行しないメモリシステム構成要素によってトランザクションが処理される優先度を制御することが可能である。
【０１４１】
図１８は、制限に対して使用量を測定する際のカウンタ回路３６８の使用を概略的に示している。例えば、測定値は未処理のトランザクションに対するものであり得、これは（未処理のトランザクションの）制限と比較される。この実施形態では、選択回路３７０は、メモリシステム構成要素、すなわちレベル１データキャッシュ８とは別の構成要素として提供される。しかしながら、他の実施形態では、選択回路はメモリシステム構成要素それ自体であり得ることが理解されよう。またこの実施形態では、選択回路３７０は、各パーティション識別子に関して発行された未処理のトランザクションの数を追跡するためにカウンタ回路３６８を使用する。この実施形態では、構成要素がトランザクションを前方（すなわち下流）に転送したがそのトランザクションに対する応答をまだ受信していない場合、トランザクションは構成要素によって未処理であると見なされる。その結果、トランザクションが転送されるたびに、そのトランザクションによって指定されたパーティションに関連付けられたカウンタがインクリメントされ、応答が受信されるたびに、関連付けられたパーティション識別子に関するカウンタがデクリメントされる。パーティション識別子を指定する新しいトランザクションが下流に転送される場合、そのパーティション識別子のカウンタをそのパーティション識別子の未処理トランザクションの制限と比較することができる。制限を満たすか超えた場合、カウンタが制限を下回るまでトランザクションは転送されず、これは、未処理のトランザクションの１つがもはや未処理でなくなるように応答が受信されたときに発生する。したがって、トランザクションは転送されずに事実上「保留」になる。
【０１４２】
上記の例では、カウンタは単純に現在未処理のトランザクション数を追跡する。しかしながら、他の実施形態では、カウンタは期間に関連付けられる。例えば、カウンタおよび制限は、ある期間にわたって転送されたデータに向けられ得る。そのような例示的な実施形態では、カウンタは一定期間ごとにリセットされて「静的ウィンドウ」を提供するか、またはカウンタは前の期間にわたる制限に対して使用量を測定し、それによって「フローティングウィンドウ」を提供することができる。前者の場合、ウィンドウの長さに比べて非常に早く制限に達する可能性があり、これは「バースト性」の挙動を引き起こす可能性がある。後者の場合、前の期間にわたる使用量を測定することによって、少量の割り当てが継続的に解放され、それはより穏やかな／継続的な／予測可能な使用量につながることが予想され得る。
【０１４３】
図１９は、メモリトランザクションのために１つまたは複数のバッファ３７４，３７６を使用する、この場合は相互接続であるメモリシステム構成要素３７２を示している。相互接続は、メモリトランザクションを発行する１つまたは複数のマスタ（Ｍ１，Ｍ２）が１つまたは複数のスレーブ（Ｓ１，Ｓ２，Ｓ３）にアクセスすることを可能にするために使用され、マスタ間で少なくとも１つのスレーブデバイスが共有される。相互接続は、各マスタにそれぞれ関連付けられた１つまたは複数のバッファ３７４，３７６を有し、これらのバッファは、関連するスレーブによって送信／受信／完了され得るまでトランザクションを待つ。バッファストレージの量を、パーティションで使用するための制限まで割り当てることができる。図１９では、各トランザクションはそのトランザクションのターゲットスレーブデバイスによって表される。スレーブがビジーであるためにキューの先頭のトランザクションをスレーブに送信できない場合、キュー内のトランザクションは停止またはブロックされる（他のマスタからの別のトランザクションに従事している可能性がある）。例えば、マスタ１のバッファ３７４内の先頭トランザクションはスレーブＳ１に向けられる。しかしながら、Ｓ１がビジーであれば、トランザクションは進行できず、そのためそのバッファ３７４内の他のトランザクションはブロックされることになる。一方、第２のマスタＭ２に関連したバッファ３７６の先頭のトランザクションは進行することができる。この実施形態では、マスタはプロセッサであり、それぞれが複数の実行環境を提供する。各実行環境は１つのパーティションに関連付けられており、各パーティションには関連付けられたバッファ深度制限がある。またこの実施形態では、マスタ１はＳ１に向けられた非ブロッキングトランザクション３７８を実行するように示されている。この実施形態では、非ブロッキングトランザクションは、それが常にバッファの先頭に移動し、さらにブロッキングトランザクションがブロックされることなく直ちに進行できるようにブロッキングトランザクションをキャンセルさせるようなものである。各パーティションに関して発行することができる非ブロッキングトランザクションの数は、各パーティションに関連付けることができる制限の別の例である。
【０１４４】
相互接続において生じるブロッキング挙動は、本技術を使用して、特に１つまたは複数の仮想チャネルを実装することによって、異なる方法で処理することもできる。仮想チャネルは、まるでそれが別のチャネルであるかのように振舞うトランスポートを提供する。これは、例えば、他のトランザクションによってブロックされないように、一部のトランザクションをマスク不可の状態で送信することによって実装できる。例えば、１つの物理チャネルを２つの仮想チャネルとして扱って、ブロックされている物理チャネルを介さずにブロックされていない仮想チャネルを介してトランザクションを送信する場合は、マスク不可の状態を適用できる。
【０１４５】
図２０は、パーティション識別子に基づいてデータ処理を実行するためのプロセスを説明するフローチャート３８０を示している。ステップ３８２において、データにアクセスするためのメモリトランザクションが受信される。ステップ３８４で、メモリトランザクション進行パラメータは、メモリトランザクションによって指定されたパーティション識別子に従って選択される。ステップ３８６において、メモリトランザクションの進行は、選択されたメモリトランザクション進行パラメータに応じて制御される。このようにして、各パーティションは、プライオリティまたは帯域幅などの事項を考慮して、そのパーティションによって発行されたトランザクションがメモリシステムを介して進行する方法を制御することができる。
【０１４６】
本発明の例示的な実施形態を添付の図面を参照しながら本明細書で詳細に説明してきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定されるような本発明の範囲および趣旨から逸脱することなく、当業者によって様々な変更および修正がなされ得る。
【図１】
2020514868.tif 000009
【図２】
2020514868.tif 000010
【図３】
2020514868.tif 000011
【図４】
2020514868.tif 000012
【図５】
2020514868.tif 000013
【図６】
2020514868.tif 000014
【図７】
2020514868.tif 000015
【図８】
2020514868.tif 000016
【図９】
2020514868.tif 000017
【図１０】
2020514868.tif 000018
【図１１】
2020514868.tif 000019
【図１２】
2020514868.tif 000020
【図１３】
2020514868.tif 000021
【図１４】
2020514868.tif 000022
【図１５】
2020514868.tif 000023
【図１６】
2020514868.tif 000024
【図１７】
2020514868.tif 000025
【図１８】
2020514868.tif 000026
【図１９】
2020514868.tif 000027
【図２０】
2020514868.tif 000028
【国際調査報告】
2020514868.tif 000029
2020514868.tif 000030
2020514868.tif 000031