IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

<>
  • 特許-メモリ分割 図1
  • 特許-メモリ分割 図2
  • 特許-メモリ分割 図3
  • 特許-メモリ分割 図4
  • 特許-メモリ分割 図5
  • 特許-メモリ分割 図6
  • 特許-メモリ分割 図7
  • 特許-メモリ分割 図8
  • 特許-メモリ分割 図9
  • 特許-メモリ分割 図10
  • 特許-メモリ分割 図11
  • 特許-メモリ分割 図12
  • 特許-メモリ分割 図13
  • 特許-メモリ分割 図14
  • 特許-メモリ分割 図15
  • 特許-メモリ分割 図16
  • 特許-メモリ分割 図17
  • 特許-メモリ分割 図18
  • 特許-メモリ分割 図19
  • 特許-メモリ分割 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-18
(45)【発行日】2023-04-26
(54)【発明の名称】メモリ分割
(51)【国際特許分類】
   G06F 12/109 20160101AFI20230419BHJP
   G06F 12/02 20060101ALI20230419BHJP
   G06F 9/50 20060101ALI20230419BHJP
   G06F 9/455 20180101ALI20230419BHJP
【FI】
G06F12/109 115
G06F12/109 100
G06F12/02 510M
G06F9/50 120B
G06F9/455 150
【請求項の数】 18
(21)【出願番号】P 2019536834
(86)(22)【出願日】2017-12-07
(65)【公表番号】
(43)【公表日】2020-05-21
(86)【国際出願番号】 GB2017053680
(87)【国際公開番号】W WO2018130804
(87)【国際公開日】2018-07-19
【審査請求日】2020-11-30
(31)【優先権主張番号】15/405,625
(32)【優先日】2017-01-13
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】クルーガー、スティーブン
【審査官】酒井 恭信
(56)【参考文献】
【文献】国際公開第2010/095416(WO,A1)
【文献】米国特許出願公開第2012/0008674(US,A1)
【文献】特開2006-318477(JP,A)
【文献】国際公開第2006/121211(WO,A1)
【文献】米国特許出願公開第2006/0259733(US,A1)
【文献】特表2007-500886(JP,A)
【文献】米国特許出願公開第2005/0055510(US,A1)
【文献】特開2001-290704(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 - 12/06
G06F 12/08 - 12/0897
G06F 12/10 - 12/109
G06F 9/50
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行するための処理回路と、
データにアクセスするためのメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも1つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するように構成される、少なくとも1つのメモリシステム構成要素と、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と
を備える、装置であって、
前記メモリトランザクション進行パラメータのセットが、前記少なくとも1つのメモリシステム構成要素に関連する制限を含み、
前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするためのカウンタ、
をさらに備える、装置
【請求項2】
前記メモリトランザクション進行パラメータのセットが、前記メモリトランザクションが処理されるプライオリティを示すためのプライオリティ構成を含む、
請求項1に記載の装置。
【請求項3】
前記プライオリティ構成が内部プライオリティを含み、
前記少なくとも1つのメモリシステム構成要素が、前記内部プライオリティで前記メモリトランザクションを処理することになる、
請求項2に記載の装置。
【請求項4】
前記プライオリティ構成が、前記メモリトランザクションが処理される下流プライオリティを含む、
請求項2に記載の装置。
【請求項5】
前記少なくとも1つのメモリシステム構成要素が前記メモリトランザクションを少なくとも1つの他の下流のメモリシステム構成要素に渡すとき、前記メモリトランザクションは、メモリトランザクション進行パラメータの複数のセットのうちの前記1つを選択したメモリシステム構成要素が前記メモリトランザクションを処理したのと同じプライオリティで前記メモリトランザクションを処理するという指示と共に渡される、
請求項2に記載の装置。
【請求項6】
前記メモリトランザクション進行パラメータのセットが、各々が前記少なくとも1つのメモリシステム構成要素のうちの1つと関連付けられた複数のプライオリティ構成を含み、
前記少なくとも1つのメモリシステム構成要素のそれぞれは、その関連するプライオリティ構成に従って前記メモリトランザクションを処理することになる、
請求項2に記載の装置。
【請求項7】
前記制限が前記少なくとも1つのメモリシステム構成要素の帯域幅制限である、
請求項に記載の装置。
【請求項8】
前記帯域幅制限が最大帯域幅を含む、
請求項に記載の装置。
【請求項9】
前記パーティション識別子を指定するメモリトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最大帯域幅を超えると、前記メモリトランザクション進行制御回路は前記パーティション識別子を指定するメモリトランザクションの優先度を下げる、
請求項に記載の装置。
【請求項10】
前記帯域幅制限が最小帯域幅を含む、
請求項に記載の装置。
【請求項11】
前記パーティション識別子を指定するメモリトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最小帯域幅を下回ると、前記メモリトランザクション進行制御回路は前記パーティション識別子を指定するメモリトランザクションの優先度を上げる、
請求項10に記載の装置。
【請求項12】
前記帯域幅制限が下限および上限を含み、前記下限は前記上限よりも低く、
前記メモリトランザクション進行制御回路は、所与のパーティション識別子を指定するメモリトランザクションに応答するために、前記メモリシステム構成要素の現在の帯域幅使用量に基づいて前記所与のパーティション識別子を指定するメモリトランザクションの優先度を設定し、
前記現在の帯域幅使用量が前記下限を下回るとき、前記メモリトランザクション進行制御回路は、前記所与のパーティション識別子を指定する前記メモリトランザクションの優先度を第1のレベルに設定し、
前記現在の帯域幅使用量が前記下限と前記上限との間にあるとき、前記メモリトランザクション進行制御回路は、前記所与のパーティション識別子を指定する前記メモリトランザクションの優先度を前記第1のレベルよりも低い重要度の第2のレベルに設定し、
前記現在の帯域幅使用量が前記上限を超える場合、前記メモリトランザクション進行制御回路は、前記所与のパーティション識別子を指定する前記メモリトランザクションの優先度を、前記第2のレベルよりも低い重要度の第3のレベルに設定する、
請求項に記載の装置。
【請求項13】
前記制限が、前記少なくとも1つのメモリシステム構成要素の未処理のトランザクション制限であり、
前記少なくとも1つのメモリシステム構成要素は、他のメモリシステム構成要素に対する前記パーティション識別子に関連付けられた未処理のトランザクションの数を前記未処理のトランザクション制限に制限するように構成される、
請求項に記載の装置。
【請求項14】
前記少なくとも1つのメモリシステム構成要素が、発行されたトランザクション用のバッファを備え、
前記制限は前記バッファのバッファ深さである、
請求項に記載の装置。
【請求項15】
前記制限が、他のメモリトランザクションによってブロックされないように、マスク不可の状態で送信することができるメモリトランザクションの数である、
請求項に記載の装置。
【請求項16】
前記装置が、前記制限によって制限されたリソースの使用量をカウントするためのカウンタをさらに備え、
前記カウンタは所定の期間毎にリセットする、
請求項に記載の装置。
【請求項17】
複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行する方法であって、前記方法は、
データにアクセスするためのメモリトランザクションを少なくとも1つのメモリシステム構成要素によって処理するステップであって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、ステップと、
処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを前記少なくとも1つのメモリシステム構成要素によって選択するステップと、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行をメモリトランザクション進行制御回路によって制御するステップと
を含む、方法であって、
前記メモリトランザクション進行パラメータのセットが、前記少なくとも1つのメモリシステム構成要素に関連する制限を含み、
前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするステップと、
をさらに含む、方法
【請求項18】
複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行するための手段と、
データにアクセスするためのメモリトランザクションを処理するための手段であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、手段と、
処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するための手段と、
前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するための手段と
を備える、装置であって、
前記メモリトランザクション進行パラメータのセットが、少なくとも1つのメモリシステム構成要素に関連する制限を含み、
前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするための手段、
をさらに備える、装置
【発明の詳細な説明】
【技術分野】
【0001】
本技術はデータ処理の分野に関する。
【背景技術】
【0002】
アプリケーションまたは仮想マシンなどの2つ以上のソフトウェア実行環境は、ソフトウェア実行環境間で共有される共通のメモリシステムへのアクセスを用いて同じデータ処理システム上で実行され得る。
【0003】
システムによっては、共有メモリシステム内のリソースを多く使用している別のソフトウェア実行環境が原因で、1つのソフトウェア実行環境の性能が低下しないことが重要な場合がある。
【0004】
この問題は、「ノイジーネイバー(noisy neighbour)」問題と呼ばれることがあり、例えば、企業ネットワーキングまたはサーバシステムにとって特に重大となり得る。
【発明の概要】
【0005】
第1の例示的構成によれば、複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行するための処理回路と、データにアクセスするためのメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも1つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するように構成される、少なくとも1つのメモリシステム構成要素と、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と、を備える装置が提供される。
【0006】
第2の例示的構成によれば、複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行する方法が提供され、この方法は、データにアクセスするためのメモリトランザクションを処理するステップであって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、ステップと、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するステップと、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するステップと、を含む。
【0007】
第3の例示的構成によれば、複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行するための手段と、データにアクセスするためのメモリトランザクションを処理するための手段であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定する、手段と、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するための手段と、前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するための手段と、を備える装置が提供される。
【図面の簡単な説明】
【0008】
図1】メモリシステムを備えるデータ処理システムの一例を概略的に示す図である。
図2】メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子に応じたメモリシステムリソースの分割制御の一例を概略的に示す図である。
図3】パーティション識別子を指定するメモリトランザクションを発行するための処理回路の一例を概略的に示す図である。
図4】処理回路によって実行される異なるソフトウェア実行環境の一例を示す図である。
図5】異なるソフトウェア実行環境にパーティション識別子を割り当てる例を示す図である。
図6】所与のメモリトランザクションに対してどのパーティション識別子が指定されるかを制御するための制御レジスタの一例を示す図である。
図7】マスタデバイスからメモリトランザクションを発行する方法を示す流れ図である。
図8】処理回路の現在の動作状態に応じたパーティション識別子レジスタの選択を概略的に示す図である。
図9】仮想パーティション識別子を物理パーティション識別子に再マッピングする例を概略的に示す図である。
図10】仮想パーティション識別子を物理パーティション識別子にマッピングする方法を示す流れ図である。
図11】命令およびデータメモリトランザクションのために別々のパーティション識別子を生成する例を概略的に示す図である。
図12】メモリシステム構成要素におけるメモリトランザクションに応答する方法を示す流れ図である。
図13】パーティション識別子に応じてキャッシュリソースの割り当てを制御し、かつ/またはパーティション識別子に基づいて選択された性能監視データを更新するキャッシュの一例を示す図である。
図14】パーティション識別子に応じて選択された容量閾値に応じてキャッシュへの割り当てを制御する方法を示す流れ図である。
図15】パーティション識別子に応じてキャッシュのどの部分にデータを割り当てることができるかを制御する例を示す図である。
図16】パーティション識別子によって設定された制限に基づいてメモリトランザクションのための優先度を選択するためのプロセスをフローチャート形式で示す図である。
図17】トランザクションを通過させるメモリシステムを概略的に示す図である。
図18】制限に対して使用量を測定する際のカウンタ回路の使用を概略的に示す図である。
図19】メモリシステム構成要素によるメモリトランザクションのためのバッファの使用を示す図である。
図20】パーティション識別子に基づいてデータ処理を実行するためのプロセスをフローチャート形式で示す図である。
【発明を実施するための形態】
【0009】
図1は、N個(Nは1以上)の処理クラスタ4を含むデータ処理システム2の一例を概略的に示し、各処理クラスタは、CPU(中央処理ユニット)またはGPU(グラフィック処理ユニット)などの1つまたは複数の処理ユニット6を含む。各処理ユニット6は、例えばレベル1データキャッシュ8、レベル1命令キャッシュ10、および共有レベル2キャッシュ12など、少なくとも1つのキャッシュを有してもよい。これは可能なキャッシュ階層の一例にすぎず、他のキャッシュ構成を使用することもできることを理解されよう。同じクラスタ内の処理ユニット6は、クラスタ相互接続14によって結合されている。クラスタ相互接続は、任意の処理ユニットにアクセス可能なデータをキャッシュするためのクラスタキャッシュ16を有することができる。
【0010】
システムオンチップ(SoC)相互接続18は、N個のクラスタと他の任意のマスタデバイス22(ディスプレイコントローラまたは直接メモリアクセス(DMA)コントローラなど)とを結合する。SoC相互接続は、それに接続されたマスタのいずれにもアクセス可能なデータをキャッシュするためのシステムキャッシュ20を有することができる。SoC相互接続18は、任意の既知のコヒーレンシプロトコルに従って、それぞれのキャッシュ8,10,12,16,20間のコヒーレンシを制御する。SoC相互接続はまた、それぞれがDRAMまたはSRAMなどの対応するメモリ25へのアクセスを制御するための1つまたは複数のメモリコントローラ24に結合される。SoC相互接続18はまた、暗号化/復号化機能を提供するための暗号ユニットなどの他のスレーブデバイスにトランザクションを送ることができる。
【0011】
したがって、データ処理システム2は、処理ユニット6および他のマスタデバイス22によって発行されたトランザクションに応答してデータを格納し、データへのアクセスを提供するためのメモリシステムを備える。キャッシュ8,10,12,16,20、相互接続14,18、メモリコントローラ24、およびメモリデバイス25はそれぞれ、メモリシステムの構成要素と見なすことができる。メモリシステム構成要素の他の例は、メモリにアクセスするために使用されるメモリアドレスを変換するために使用されるメモリ管理ユニットまたは変換ルックアサイドバッファ(処理ユニット6自体内、あるいはさらに下のシステム相互接続18内またはメモリシステムの他の部分内)を含んでもよく、メモリシステムの一部と見なすことができる。一般に、メモリシステム構成要素は、メモリデータにアクセスするためにメモリトランザクションをサービスするため、またはそれらのメモリトランザクションの処理を制御するために使用されるデータ処理システムの任意の構成要素を含むことができる。
【0012】
メモリシステムは、メモリトランザクションを処理するために利用可能な様々なリソースを有することができる。例えば、キャッシュ8,10,12,16,20は、プロセッサ6のうちの1つで実行されている所与のソフトウェア実行環境によって必要とされるデータをキャッシュするために利用可能な記憶容量を有し、それらがメインメモリ25からフェッチされなければならなかった場合よりもデータまたは命令へのより速いアクセスを提供する。同様に、MMU/TLBはアドレス変換データをキャッシュするために利用可能な容量を有することができる。また、相互接続14,18、メモリコントローラ24、およびメモリデバイス25はそれぞれ、メモリトランザクションを処理するために利用可能な一定量の帯域幅を有することができる。
【0013】
処理要素6上で実行されている複数のソフトウェア実行環境がメモリシステムへのアクセスを共有するとき、他の実行環境が性能の損失を知覚するのを防ぐために、1つのソフトウェア実行環境がその公平な共有を超えるリソースを使用するのを防ぐことが望ましい場合がある。これは、データセンタサーバの使用率を高めるために、一定量のメモリ容量と相互作用する独立したソフトウェアプロセスの数を増やすことによって設備投資を削減する需要が高まっているデータセンタ(サーバ)アプリケーションにとって特に重要であり得る。それにもかかわらず、ウェブアプリケーションのテールレイテンシの目標を達成することが依然として求められているので、サーバ上で実行されている1つのプロセスが他のプロセスが被る程度にメモリシステムリソースを独占することができるならば、それは望ましくない。同様に、ネットワーキングアプリケーションでは、以前は別々のSoCにあったはずの複数の機能を単一のSoCに組み合わせることがますます一般的になっている。これもまた、ソフトウェア実行環境間の性能の相互作用を制限し、性能の相互作用を制限しながらこれらの独立したプロセスが共有メモリにアクセスすることを可能にする必要がある方法を監視したいという要望につながる。
【0014】
図2は、対応するメモリトランザクションを発行するソフトウェア実行環境に応じてメモリシステムリソースの割り当ての制御を分割する例を概略的に示している。これに関連して、ソフトウェア実行環境は、データ処理システム内の処理ユニットによって実行される任意のプロセス、またはプロセスの一部であり得る。例えば、ソフトウェア実行環境は、アプリケーション、ゲストオペレーティングシステムもしくは仮想マシン、ホストオペレーティングシステムもしくはハイパーバイザ、システムの異なるセキュリティ状態を管理するためのセキュリティモニタプログラム、またはこれらのタイププロセスのいずれかのより低い部分を含んでもよい(例えば、単一の仮想マシンが別々のソフトウェア実行環境と見なされる異なる部分を有する場合がある)。図2に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するメモリトランザクションと共にメモリシステム構成要素に渡される所与のパーティション識別子30が割り当てられてもよい。
【0015】
メモリシステム構成要素内では、パーティション識別子に基づいて選択されたメモリシステム構成要素パラメータの複数のセットのうちの1つに基づいて、リソース割り当てまたは競合解決動作を制御することができる。例えば、図2に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するデータ/命令に割り当てることができるキャッシュ容量の最大量を表す割り当て閾値がアサインされてもよく、所与のトランザクションをサービスするときの関連する割り当て閾値は、そのトランザクションに関連するパーティション識別子に基づいて選択される。例えば、図2では、パーティション識別子0に関連付けられているトランザクションが、キャッシュのストレージ容量の最大50%にデータを割り当て、キャッシュの少なくとも50%を他の目的に使用できるようにする。
【0016】
同様に、メモリトランザクションをサービスするために利用可能な有限量の帯域幅を有するメモリコントローラ24のようなメモリシステム構成要素では、最小および/または最大帯域幅閾値が各パーティション識別子に対して指定され得る。所与の期間内に、そのパーティション識別子を指定するメモリトランザクションが最小量の帯域幅よりも少ない量しか使用していない場合には、所与のパーティション識別子に関連するメモリトランザクションを優先させることができ、一方で、最大帯域幅が既に同じパーティション識別子を指定しているトランザクションに使用されているか超えている場合は、プライオリティを下げてメモリトランザクションに使用できる。
【0017】
これらの制御方式については以下でさらに詳しく説明する。当然のことながら、これらは、対応するトランザクションを発行したソフトウェア実行環境に基づいてメモリシステムリソースの制御を分割することができる方法の単なる2つの例である。一般に、異なるプロセスがメモリシステムによって提供されるリソースの異なる分割された部分を「見る」ことを可能にすることによって、プロセス間の性能の相互作用を制限して上述の問題に対処するのを助けることを可能にする。
【0018】
同様に、メモリトランザクションに関連するパーティション識別子を使用してメモリシステム内の性能監視を分割することができるので、所与のソフトウェア実行環境(またはソフトウェア実行環境のグループ)に固有の情報を識別させることを可能にするために各パーティション識別子について別々のセットの性能監視データを追跡でき、その結果、性能監視データがすべてのソフトウェア実行環境全体で記録されている場合よりも、潜在的な性能の相互作用の原因を簡単に特定できる。これは、潜在的な性能の相互作用の影響を診断し、考えられる解決策の識別にも役立つ。
【0019】
パーティション識別子の設定を制御し、対応するソフトウェア実行環境に対して設定されたパーティション識別子に基づいてメモリトランザクションをラベル付けし、メモリシステムを通してパーティション識別子をルーティングし、そしてメモリシステム内のメモリシステム構成要素においてパーティションベースの制御を提供するためのアーキテクチャを以下に説明する。このアーキテクチャは、パーティション識別子の幅広い用途に合わせて拡張できる。パーティション識別子の使用は、メモリシステムの既存のアーキテクチャ上のセマンティクスを変更せずに重ね合わせることを目的としているため、メモリシステムによって使用されている特定のメモリプロトコルによって課されるアドレス指定、コヒーレンス、および必要なメモリトランザクションの順序付けは、リソース/性能監視分割の影響を受けない。パーティション識別子を使用してリソース割り当てを制御するとき、これは所与のソフトウェア実行環境のためのメモリトランザクションをサービスするときに達成される性能に影響を及ぼし得るが、それはアーキテクチャ的に有効な計算の結果に影響を及ぼさない。すなわち、パーティション識別子は、メモリトランザクションの成果または結果(例えば、どのデータがアクセスされるか)を変更するのではなく、単にそのメモリトランザクションに対して達成されるタイミングまたは性能に影響を及ぼすだけである。
【0020】
図3は、処理ユニット6の一例をより詳細に概略的に示している。プロセッサは、命令キャッシュ10から命令をフェッチするためのフェッチステージ40、フェッチされた命令をデコードするためのデコードステージ42、オペランドが使用可能になるのを待っている間に命令を待ち行列に入れ、オペランドが使用可能になったときに実行のために命令を発行する発行キュー46を含む発行ステージ44、対応する処理動作を実行するために異なるクラスの命令を実行するための複数の実行ユニット50を含む実行ステージ48、および処理動作の結果をデータレジスタ54に書き込むためのライトバックステージ52を含む、いくつかのパイプラインステージを含む処理パイプラインを含む。データ処理動作のためのソースオペランドは、実行ステージ48によってレジスタ54から読み取られてもよい。この例では、実行ステージ48は、算術演算または論理演算を実行するためのALU(算術/論理ユニット)、浮動小数点値を使用して演算を実行するための浮動小数点(FP)ユニット、およびメモリシステムからレジスタ54にデータをロードするためのロードオペレーション、もしくはレジスタ54からメモリシステムにデータを格納するためのストアオペレーションを実行するためのロード/ストアユニットを含む。当然のことながら、これらは可能な実行ユニットのほんのいくつかの例であり、他のタイプを提供することができる。同様に、他の例は異なる構成のパイプラインステージを有することができる。例えば、故障したプロセッサでは、命令によって指定されたアーキテクチャ上のレジスタ指定子を、ハードウェアに設けられた物理レジスタ指定子識別レジスタ54に再マッピングするための追加のレジスタリネーミングステージ、ならびに命令がキャッシュ10からフェッチされた順序とは異なる順序で実行された命令の実行およびコミットメントを追跡するためのリオーダバッファを設けることができる。同様に、図1には示されていない他の機構、例えば分岐予測機能も依然として提供することができる。
【0021】
プロセッサ6は、例えば実行中のプログラムの現在の実行時点を示すプログラムカウンタを格納するためのプログラムカウンタレジスタ62、プロセッサが命令を実行している時点で現在の例外レベルの指示を格納するための例外レベルレジスタ64、プロセッサが非セキュア状態にあるかセキュア状態にあるかの指示を格納するためのセキュリティ状態レジスタ66、ならびにメモリシステムリソースおよび性能監視分割を制御するためのメモリ分割監視(MPAM)制御レジスタ68(MPAM制御レジスタについては以下でさらに詳細に説明する)、を含む複数の制御レジスタ60を有する。他の制御レジスタもまた提供され得ることが理解されよう。
【0022】
プロセッサは、メモリトランザクションに応答してメモリシステムへのアクセスを制御するためのメモリ管理ユニット(MMU)70を有する。例えば、ロードまたはストア命令に遭遇すると、ロード/ストアユニットは仮想アドレスを指定する対応するメモリトランザクションを発行する。仮想アドレスは、変換ルックアサイドバッファ(TLB)72に格納されたアドレスマッピングデータを使用して仮想アドレスを物理アドレスに変換するメモリ管理ユニット(MMU)70に提供される。各TLBエントリは、アドレスをどのように変換するかを識別するマッピングデータだけでなく、プロセッサがアドレス空間の対応するページ内のアドレスに対して読み取りまたは書き込みを許可されるかどうかを定義する関連アクセス許可データも識別し得る。いくつかの例では、複数ステージのアドレス変換があり得、したがって複数のTLB、例えばロード/ストアユニット50によって生成された仮想アドレスを中間物理アドレスにマッピングするための変換の第1ステージを提供するステージ1のTLB、およびアクセスされるデータを識別するために中間物理アドレスをメモリシステムによって使用される物理アドレスにマッピングするための変換の第2ステージを提供するステージ2のTLBがあり得る。ステージ1のTLBのマッピングデータはオペレーティングシステムの制御下で設定され得、ステージ2のTLBのマッピングデータはハイパーバイザの制御下で設定され得、例えば仮想化をサポートする。簡潔にするために図3はロード/ストアユニットによってトリガされるデータアクセスに応答してアクセスされているMMUを示しているが、フェッチステージ40がまだ命令キャッシュ10に格納されていない命令のフェッチを要求するとき、あるいは、命令キャッシュ10がフェッチステージ40によって実際に要求される前に命令をキャッシュにプリフェッチするために命令プリフェッチオペレーションを開始する場合に、MMUにもアクセスできる。したがって、実行される命令の仮想アドレスは、MMU70を使用して同様に物理アドレスに変換され得る。
【0023】
TLB72に加えて、MMUはまた、ページテーブルウォーク中にTLBにロードされるべきマッピングデータを識別するために使用されるデータをキャッシュするためのページウォークキャッシュ74などの他のタイプのキャッシュも含むことができる。メモリシステムは、仮想メモリアドレス空間の各ページについてアドレスマッピングデータを指定するページテーブルを格納することができる。TLB72は、最近アクセスされたいくつかのページについてそれらのページテーブルエントリのサブセットをキャッシュすることができる。プロセッサが、対応するアドレスマッピングデータがTLB72に格納されていないページにメモリトランザクションを発行すると、ページテーブルウォークが開始される。必要なページのアドレスマッピングエントリを識別するためにメモリ内をトラバースするページテーブルのレベルが複数ある場合があるため、これは比較的遅くなる可能性がある。ページテーブルウォークをスピードアップするために、ページテーブルの最近アクセスされたページテーブルエントリをページウォークキャッシュ74に入れることができる。これらは通常、必要なページのマッピングを実際に指定する最終レベルのページテーブルエントリ以外のページテーブルエントリである。これらのより高いレベルのページテーブルエントリは通常、対応するアドレス範囲に対する他のページテーブルエントリがメモリ内のどこにあり得るかを特定する。前のページテーブルウォークでトラバースしたページテーブルの少なくともいくつかのレベルをページウォークキャッシュ74にキャッシュすることによって、ページテーブルウォークの同じ初期部分を共有する他のアドレスに対するページテーブルウォークをより速くすることができる。あるいは、ページテーブルエントリ自体をキャッシュするのではなく、ページウォークキャッシュ74はそれらのページテーブルエントリがメモリ内で見つけられることができるアドレスをキャッシュすることができ、そのため再び所与のページテーブルエントリは、それらのアドレスがメモリ内の他のページテーブルエントリに最初にアクセスすることによって識別されなければならない場合よりも速くアクセスされ得る。
【0024】
図4は、プロセッサ6によって実行され得る異なるソフトウェア実行環境の例を示している。この例では、アーキテクチャは特権レベルが増加する4つの異なる例外レベルEL0からEL3をサポートする(したがって、EL3が最も高い特権例外レベルを有し、EL0が最も低い特権例外レベルを有する)。一般に、より高い特権レベルは、より低い特権レベルよりも高い特権を有し、したがって、少なくともいくつかのデータにアクセスする、および/またはより低い特権レベルには利用できないいくつかの処理動作を実行することができる。アプリケーション80は最も低い特権レベルEL0で実行される。いくつかのゲストオペレーティングシステム82が特権レベルEL1で実行され、各ゲストオペレーティングシステム82はEL0で1つまたは複数のアプリケーション80を管理する。ハイパーバイザまたはホストオペレーティングシステムとしても知られる仮想マシンモニタ84は、例外レベルEL2で実行され、それぞれのゲストオペレーティングシステム82の仮想化を管理する。より低い例外レベルからより高い例外レベルへの移行は、例外イベントによって引き起こされる可能性があり(例えば、ハイパーバイザによって処理される必要があるイベントは、EL2への遷移を引き起こす可能性がある)、一方で、より低いレベルに戻る移行は、例外イベント処理からの復帰によって引き起こされる可能性がある。例外イベントの中には、それらが取得されたレベルと同じ例外レベルでサービスされるものもあれば、より高い例外状態への移行をトリガするものもある。現在の例外レベルレジスタ64は、処理回路6が例外レベルEL0~EL3のどれで現在コードを実行しているかを示す。
【0025】
この例では、システムは、セキュアドメイン90と通常の(安全性の低い)ドメイン92との間の分割もサポートする。機密性の高いデータまたは命令を、それらをセキュアドメイン90にアクセス可能であるとマークされたメモリアドレスにのみ割り当てることによって保護することができ、安全性の低いドメイン92で実行されているプロセスがデータまたは命令にアクセスできないことを保証するためのハードウェア機構をプロセッサが有する。例えば、MMU70に設定されたアクセス許可は、セキュアドメインと非セキュアドメインとの間の分割を制御することができ、あるいは、完全に別のセキュリティメモリ管理ユニットを使用してセキュリティ状態分割を制御することができ、別々のセキュアおよび非セキュアMMU70はそれぞれのセキュリティ状態内の副制御のために提供されている。セキュアドメイン90と通常ドメイン92との間の移行を、最も高い特権レベルEL3で実行されているセキュア監視プロセス94によって管理することができる。これにより、ドメイン間の遷移を厳密に制御して、例えばセキュアドメインからのデータへのアクセスなどの非セキュアオペレーション80またはオペレーティングシステム82を防ぐことができる。他の例では、ハードウェア技術を使用してセキュリティ状態とポリス遷移との間の分離を強制することができ、その結果、通常ドメイン92内のコードは別のセキュア監視プロセス94を介して遷移することなくセキュアドメイン90内のコードに直接分岐することができる。しかしながら、説明を容易にするために、以下の説明では、EL3でセキュア監視プロセス94を使用する例を参照する。セキュアドメイン90内では、セキュアワールドオペレーティングシステム96が例外レベルEL1で実行され、1つまたは複数の信頼できるアプリケーション98がそのオペレーティングシステム96の制御下で、例外レベルEL0で実行され得る。この例では、必要に応じてこれを提供することは依然として可能ではあるが、仮想化がセキュアドメインではサポートされていないので、セキュアドメイン90に例外レベルEL2はない。そのようなセキュアドメイン90をサポートするためのアーキテクチャの例は、英国のLimited of CambridgeのARM(登録商標)によって提供されるトラストゾーン(Trustzone)アーキテクチャであり得る。ただし、他の技術もまた使用され得ることが理解されよう。いくつかの例は2つより多いセキュリティ状態を有することができ、3つ以上の状態にそれらに関連している異なったレベルのセキュリティを提供する。セキュリティ状態レジスタ66は、現在のドメインがセキュアドメイン90であるか非セキュア92であるかを示し、これはMMU70または他の制御ユニットに対して、特定のデータにアクセスできるか操作を許可するかを管理するために使用するアクセス許可を示す。
【0026】
次に、図4は、システム上で実行することができるいくつかの異なるソフトウェア実行環境80,82,84,94,96,98を示している。これらのソフトウェア実行環境のそれぞれには、所与のパーティション識別子(パーティションIDまたはPARTID)を割り当てることができ、または2つ以上のソフトウェア実行環境のグループに共通のパーティションIDを割り当てることができる。場合によっては、単一プロセスの個々の部分(例えば、異なる機能またはサブルーチン)を別々の実行環境と見なし、別々のパーティションIDを割り当てることができる。例えば、図5に示される例では、仮想マシンVM3およびその下で実行されている2つのアプリケーション3741,3974がすべてPARTID1に割り当てられ、第2の仮想マシンVM7の下で実行されている特定のプロセス3974がPARTID2に割り当てられ、VM7自体およびその下で実行されている別のプロセス1473には、PARTID0が割り当てられる。すべてのソフトウェア実行環境に個別のパーティションIDを割り当てる必要はない。専用パーティションIDが割り当てられていないソフトウェア実行環境に使用するためにデフォルトパーティションIDを指定することができる。パーティションID空間のどの部分が各ソフトウェア実行環境に割り当てられるかの制御は、より高い特権レベルでソフトウェアによって実行され、例えば、EL2で動作するハイパーバイザは、EL1で動作する仮想マシンオペレーティングシステムへのパーティションの割り当てを制御する。ただし、場合によっては、ハイパーバイザは、より低い特権レベルのオペレーティングシステムが、独自のコードの一部またはその下で実行されているアプリケーションに独自のパーティションIDを設定することを許可することがある。また、いくつかの例では、セキュアワールド90は、セキュアワールドOSまたはモニタプログラムEL3によって制御される、通常ワールド92とは完全に別のパーティションID空間を有することができる。
【0027】
図6は、MPAM制御レジスタ68の一例を示している。MPAM制御レジスタ68は、処理回路のそれぞれの動作状態にそれぞれ対応するいくつかのパーティションIDレジスタ100(MPAMシステムレジスタとしても知られる)を含む。この例では、パーティションIDレジスタ100は、非セキュアドメイン92内のそれぞれの例外レベルEL0~EL3に対応するレジスタMPAM0_EL1~MPAM3_EL3と、セキュアドメイン90内の例外レベルEL1に対応するオプションの追加パーティションIDレジスタMPAM1_EL1_Sとを含む。この例では、セキュアドメイン内の信頼できるアプリケーション98がそれらのアプリケーション98を実行するセキュアワールドオペレーティングシステム96に密接に結び付けられていると想定されるので、セキュアドメイン内のEL0にパーティションIDレジスタは提供されず、その結果、同じパーティションIDで識別され得る。しかしながら、他の実装形態では、個別のパーティションIDレジスタをセキュアワールドのEL0に提供することができる。各パーティションIDレジスタ100は、以下の表1に示すように最大3つのパーティションID用のフィールドを含む。
【表1】
【0028】
以下の表2は、各動作状態で実行されるメモリトランザクションにどのパーティションIDレジスタ100が使用され、各パーティションIDレジスタ100がどの動作状態から制御されるか(すなわち、どの動作状態がそのレジスタによって指定される情報を更新できるか)を要約している。
【表2】
【0029】
パーティションIDレジスタの命名規則MPAMx_Elyは、パーティションIDレジスタMPAMx_ELyに指定されたパーティションIDが、動作状態ELxにあるときに処理回路6によって発行されるメモリトランザクションに使用されること、および状態ELyが、そのパーティションIDレジスタMPAMx_ELyにアクセスできる最も低い例外レベルであることを示す。ただし、非セキュアドメインで現在の例外レベルがEL0の場合、MPAM0_EL1をオーバーライドすることができ、MPAM-EL1に設定されている設定値PLK_EL0が1に設定されている場合、MPAM1_EL1のパーティションIDはNS_EL0で実行するときに使用される。したがって、必要に応じて、EL1の制御はEL0の制御をオーバーライドできる。これは、同じ仮想マシン内のアプリケーション間でコンテキストが切り替わるたびにMPAM0_EL1を更新する必要がないように、特定の仮想マシンで実行されているすべてのアプリケーションが同じパーティションIDを使用するように制限するのに役立ち得る。この例では構成パラメータPLK_EL0がMPAM1_EL1に格納されるように説明されているが(その構成パラメータを設定するより高い例外レベルに対応するパーティションIDレジスタ)、それは他の制御レジスタに格納されることもできる。
【0030】
一般に、同じ状態で実行されている異なるプロセス(例えば、EL0の異なるアプリケーションやEL1の異なるゲストオペレーティングシステム)を切り替えると、例外イベントは、プロセスがその状態で実行されている高い例外状態への切り替えをトリガし(例えば、EL1のオペレーティングシステムまたはEL2のハイパーバイザ)、次に、処理をより低い例外状態に戻して新しいプロセスを続行できるようにする前に、関連するパーティションIDレジスタ100内のパーティションIDを更新する。したがって、所与のプロセスに関連付けられているパーティションIDは、そのプロセスに関連付けられているコンテキスト情報の一部と見なすことが効果的であり、このコンテキスト情報は、そのプロセスとの切り替え時にプロセッサのアーキテクチャ状態の一部として保存および復元される。
【0031】
しかし、システムの異なる動作状態に対応する複数のパーティションIDレジスタ100を提供することによって、コンテキストスイッチ以外のとき、例えば、同じOSに戻る前にハイパーバイザが何らかのアクションを実行するために、オペレーティングシステム(OS)が一時的にハイパーバイザにトラップする場合などに、動作状態に変化があるたびに単一のパーティションIDレジスタの内容を更新する必要はない。例えば、ハイパーバイザが、ハードウェアで実際に提供されているものとは異なる物理リソースのビューをOSに提供するために介入する必要がある場合、ハイパーバイザへのそのようなトラップは、仮想化システムではかなり一般的であり得る。したがって、複数のパーティションIDレジスタ100を提供することによって、パーティションIDを用いたメモリシステムトランザクションのラベリングは、例外レベルまたはセキュア/非セキュア状態の変化に自動的に追従するので、例外レベルまたはセキュリティ状態に変更があるたびにパーティションIDを更新する必要がないため、パフォーマンスが向上する。
【0032】
また、例えば、使用されるパーティションIDからセキュアドメインに関する情報を推論する安全性の低いプロセスを防止することによって、セキュアおよび非セキュアのパーティションIDレジスタを別々に提供することが、セキュリティ上の理由から好ましい場合がある。しかしながら、セキュリティ状態ごとの銀行用パーティションIDレジスタは任意であり、他の実施形態は、セキュアドメインと安全性の低いドメインとの間で共有される所与のパーティションIDレジスタの単一バージョンのみを提供し得る(例えばMPAM1_EL1_Sは省略され、MPAM1_EL1を使用できる)。この場合、EL3で実行されるモニタコードは、セキュアドメインと安全性の低いドメインとの間で切り替えるときにパーティションIDレジスタ内の情報をコンテキストスイッチすることができる。
【0033】
また、一般に、所与の動作状態に関連するパーティションIDレジスタ100内で指定されるパーティションIDおよび任意の関連構成情報などの制御情報は、そのパーティションIDレジスタ100に関連する例外レベルよりも高い例外レベルで実行される命令に応答して設定される。しかしながら、やはりこの一般的前提はいくつかのレジスタについてオーバーライドされることができ、そこではより高い例外レベルコードは所与の動作状態で実行されるコードがそれ自体のパーティションIDを対応するパーティションIDレジスタに設定できるかどうかを制御する構成パラメータEL1_WRINH、EL2_WRINHまたはEL1_S_WRINHを設定できる。つまり、WRINH設定値は、与えられた実行環境がそれ自体に割り当てられたパーティションIDを設定できるかどうかを指定する。以下の例は、その例外レベルのパーティションIDと共に、次に高い例外レベルに関連するパーティションIDレジスタ100に格納されている所与の例外レベルによってパーティションIDの設定を制御するためのWRINHフラグを示しているが、これらのフラグを別の制御レジスタに格納することもできることが理解されよう。
【0034】
より詳細には、表3は各パーティションIDレジスタ100に含まれる情報をリストし、表4は各パーティションIDレジスタ100がどの状態から読み書きできるかを要約している。示されるように、レジスタ100のいくつかはそのレジスタに特有の情報を含む。
【表3】

【表4】
【0035】
ここで、アスタリスクは以下を示す:
・MPAM2_EL2のEL1_WRINH=0のときはNS_EL1からMPAM1_EL1を書き込むことができるが、EL1_WRINH=1のときはNS_EL1からMPAM1_EL1への書き込みがEL2にトラップする;
・MPAM3_EL3のEL2_WRINH=0の場合、EL2からMPAM2_EL2を書き込むことができるが、EL2_WRINH=0の場合、EL2からMPAM2_EL2への書き込みがEL3にトラップする;
・MPAM3_EL3のEL1_S_WRINH=0の場合、S_EL1からMPAM1_EL1_Sを書き込むことができるが、EL1_S_WRINH=1の場合、S_EL1からMPAM1_EL1_Sへの書き込みがEL3にトラップする。
したがって、より高い例外状態によって許可されていないときに同じ例外状態内からパーティションIDレジスタ100を設定しようとすると、そのより高い例外状態への切り替えをトリガする例外イベントが引き起こされる。より高い例外状態にある例外ハンドラは、パーティションIDの設定方法を決定できる。
【0036】
MPAM_EL1_Sが省略される上述の代替実施形態では、MPAM1_EL1は、NS_EL1およびS_EL1の両方からアクセス可能なR(W)になり(EL1から書き込みアクセスが可能かどうかを制御するEL1_WRINHとともに)、EL1_S_WRINH構成パラメータはレジスタMPAM3_EL3から省略できる。
【0037】
一般に、メモリトランザクションが処理回路6によって生成されると、パーティションIDレジスタ100のうちの1つが、上で指定されたように現在の動作状態に基づいて選択される。メモリトランザクションが命令にアクセスするためのものである場合、そのトランザクションは選択されたパーティションIDレジスタのPARTID_Iフィールドから導出されたパーティションIDでタグ付けされる。命令アクセスのためのTLB72のミスによってトリガされたページテーブルウォークメモリトランザクションは、命令アクセスと同じパーティションIDを使用するであろう。メモリトランザクションがデータにアクセスするためのものである場合、トランザクションは、選択されたパーティションIDレジスタ100のPARTID_Dフィールドから導出されたパーティションIDでタグ付けされる(データアクセス後にMMUによって引き起こされるページテーブルウォークアクセスも、データアクセス自体と同じパーティションIDを使用することになる)。なお、ページテーブルウォークアクセスを発行するMMU自体がパーティションIDに基づいてリソース/性能監視分割をサポートするかどうかにかかわらず、メモリシステムの別の部分のメモリシステム構成要素がそのような分割を実行することを可能にするために、依然として関連するPARTID_DまたはPARTID_I識別子を対応するメモリトランザクションに付加してもよい。所与のパーティションIDレジスタのPARTID_DフィールドおよびPARTID_Iフィールドは、同じパーティションIDまたは異なるパーティションIDに設定され得る。
【0038】
同じソフトウェア実行環境のデータアクセスと命令アクセスに別々のパーティションIDを定義できるようにして、対応する命令アクセスとデータアクセスに異なるリソース制御パラメータを使用できるようにすると有効であり得る。代替のアプローチは、ソフトウェア実行環境全体に関連する単一のパーティションIDを有するが、アクセスが命令またはデータのためであるかどうかに応じて0または1の追加のビットを付加することであり、これによりメモリシステム構成要素は命令アクセスとデータアクセスにそれぞれ異なる制御パラメータを選択することが可能になる。しかしながら、パーティションIDに基づいて選択された制御パラメータの所与の数のセットに対して、このアプローチは、データと命令との間にパーティションID空間の五分五分の分割がなければならないことを意味するであろう。実際には、複数のソフトウェア実行環境が同じコードを使用しながら異なるデータ入力で実行することが比較的一般的である可能性があるため、多くの場合、命令パーティションよりも多くのデータパーティションを有することが望ましく、このため、単一の命令パーティションIDを複数のソフトウェア実行環境間で共有しながら、それぞれの環境で異なるデータパーティションを使用できるようにすると特に有効であり得る。データアクセスに関する命令を示すために0または1ビットを付加するというアプローチは、その状況において、共通コードの各別々のインスタンスに対してメモリシステム構成要素において定義されるべき同一の構成情報の複数のセットを必要とする。対照的に、パーティションIDレジスタ100において、命令およびデータパーティションIDが共通のID空間から選択される別々の命令およびデータパーティションフィールドを提供することによって、異なるソフトウェア実行環境間で同じパーティションIDを再利用し、これを五分五分の分割に制限することなく、必要に応じてデータと命令の間でパーティションID空間を分割することが可能である。各パーティションIDレジスタ100内の2つのパーティションIDフィールドにいくらかの追加の記憶容量が必要であるとしても、このアプローチは、複数の実行環境の命令アクセス間で1つのパーティションを共有することによって、メモリシステム構成要素において必要とされる制御パラメータのセットが少なくなり(したがって記憶容量が少なくなり)、メモリシステム構成要素でリソースを節約できる。
【0039】
トランザクションが命令アクセス用であるかデータアクセス用であるかにかかわらず、トランザクションはまた、選択されたパーティションIDレジスタ100のPMGフィールドから導出された性能監視パーティションIDでタグ付けされる。これにより、メモリシステム構成要素は、例えば、特定の性能モニタをメモリトランザクションに応答して更新する必要があるかどうかを判断するための基準の一部として、メモリトランザクションの性能監視IDを使用することによって、性能監視を分割することができる。一実施形態では、PMGフィールドは、PARTID_DフィールドおよびPARTID_Iフィールドから完全に独立しているものとして扱われ得る。この場合、性能監視を実施するメモリシステム構成要素は、同じメモリトランザクションに含まれるデータ/命令パーティションIDとは無関係に、メモリトランザクションが性能監視パーティションIDのみに依存して所与の性能モニタの更新を引き起こすかどうかを決定し得る。これは、それにもかかわらず、命令/データアクセスのための異なるパーティションが同じ性能監視IDを共有することができるという利点を提供し、それはメモリシステム構成要素で異なる命令/データアクセス構成を必要とする複数のプロセスに関する結合された性能統計の収集をサポートし得る。したがって、メモリシステム構成要素でリソース割り当てを制御するために使用されるパーティションIDとは別に性能監視グループIDを指定することによって、リソースが別々に割り当てられている場合でも、共通の性能カウンタセットを使用して複数の異なるソフトウェア実行環境を追跡することができる。
【0040】
あるいは、別のアプローチは、PMGフィールドを、PARTID_DフィールドまたはPARTID_Iフィールドから導出された対応するパーティションIDに付加されるべきサフィックスとして解釈することであり得る。このアプローチでは、トランザクションがメモリに発行されると、トランザクションに2つのIDが付加され、1つは選択されたPARTID_IまたはPARTID_Dフィールドに基づき、もう1つはPMGフィールドに基づいているが、PMGフィールドは、それ自体のIDではなく、命令/データパーティションIDの特性と見なされる。したがって、メモリシステム構成要素は、この場合、PARTID_IまたはPARTID_Dから導出された第1のパーティションIDに基づいてリソース分割を実行することができるが、第1のパーティションIDとPMGから導出された第2のパーティションIDの組み合わせに基づいて性能監視分割を実行する。このアプローチでは、異なる命令/データパーティションIDが同じ性能監視IDを共有することはできなくなるが、利点は、PMGフィールドがすべての可能な性能監視パーティションを区別する必要がなく、同じ命令/データパーティションIDを共有するパーティションのみがPMGフィールドによって区別されるため、短いPMGフィールドを使用してハードウェアコストを節約できることである。例えば、これは、より大きなフィールドではなく1または2ビットのPMGフィールドを使用することを可能にすることができ、それは制御レジスタ68だけでなくメモリシステムを通してメモリトランザクションを運ぶワイヤにおいてもコストを節約する。いくつかの実施形態では、PARTID_DフィールドおよびPARTID_Iフィールドにそれぞれ対応して別々のPMGサフィックスフィールドのPMG_DおよびPMG_Iを提供して、別々の性能監視グループプロパティをそれぞれデータアクセスおよび命令アクセスに対して定義できるようにすることができる。
【0041】
どちらの方法でも、データ/命令パーティションIDごとに複数の性能監視パーティションを定義する機能が役立ち得る。一方、他の例では別々の性能監視IDフィールドを完全に省略し、代わりに同じパーティションIDを使用してリソースの管理と性能監視の両方を制御することができることを理解されよう。
【0042】
図7は、CPU6、GPU、またはメモリトランザクションのソースとして機能する他のマスタなどの処理要素からのメモリトランザクションの発行を制御する方法、特にどのパーティションIDがメモリトランザクションで指定されるかを制御する方法を示す流れ図である。ステップ110で、処理要素は、メモリトランザクションを発行する必要があると判断する。例えば、これは、ロード/ストア命令が実行ステージ48で実行されるか、または命令を命令キャッシュにプリフェッチするための命令プリフェッチオペレーションによって引き起こされるためであり得る。
【0043】
ステップ112で、処理要素は、その現在の動作状態に応じてパーティションIDレジスタ100のうちの1つを選択する。図8は、少なくとも現在の例外レベル64およびパーティションIDレジスタMPAM1_EL1に格納されている構成パラメータ114のPLK_EL0に応じて、どのパーティションIDレジスタ100を使用して現在のメモリトランザクションのパーティションIDを生成すべきかを選択する例を概略的に示している。どのレジスタ100が選択されたレジスタであるかを選択するための基準は以下の通りである:
・現在の例外レベルがEL0で、PLK_EL0=0の場合、MPAM0_EL1が選択されたレジスタである;
・(i)現在の例外レベルがEL1であるか、(ii)現在の例外レベルがEL0で、PLK_EL0=1の場合、MPAM1_EL1が選択されたレジスタである;
・現在の例外状態がEL2の場合、選択されたレジスタはMPAM2_EL2である;
・現在の例外状態がEL3の場合、選択されたレジスタはMPAM3_EL3である。
【0044】
PLK_EL0構成パラメータの提供はオプションであり、この機能をサポートしないシステムでは、MPAM0_EL1が、MPAM1_EL1ではなく、非セキュア状態の現在の例外レベルがEL0の場合に選択される。
【0045】
また、別個のセキュアパーティションIDレジスタMPAM1_EL1_Sを有する上述の実施形態では、選択は現在のセキュリティ状態にも依存し、セキュアドメイン内のEL0またはEL1での処理時にレジスタMPAM1_EL1_Sが選択され、それ以外の場合、選択は上記の通りである。
【0046】
ステップ114において、処理要素は、メモリアクセスが命令アクセスかデータアクセスかを判断する。アクセスが命令アクセスであれば、ステップ116で、ステップ112で選択されたレジスタからPMGおよびPARTID_Iフィールドが読み出され、アクセスがデータアクセスであれば、ステップ118でPMGおよびPARTID_Dフィールドが読み出される。したがって、リソース分割に使用されるパーティションIDは、アクセスがデータに対するものか命令に対するものかによって異なる(ただし、場合によっては両方とも同じパーティションIDを指定することもある)。
【0047】
ステップ120で、処理要素は、現在の動作状態において、読み取りパーティションID(PMGおよびPARTID_IまたはPARTID_Dのいずれか)について仮想化が有効にされているかどうかを判定する。MPAM制御レジスタ68は、仮想化制御レジスタ116(MPAM_VCR_EL2)、再マッピング有効レジスタ124、性能リソース分割のためにパーティションIDを再マッピングするためのパーティションID再マッピングレジスタ126、および性能監視分割のためにパーティションIDを再マッピングするための性能監視ID再マッピングレジスタ128を含む。仮想化制御レジスタ116は、仮想化がEL1およびEL0に対して有効にされるかどうかを指定する仮想化有効化フラグを含む。仮想化がEL0に対して有効化され、動作状態がEL0である場合、または仮想化がEL1に対して有効化され、動作状態がEL1である場合、ステップ122において、ステップ116または118で読み出されたパーティションIDの少なくとも1つがメモリシステムに発行されるメモリトランザクションに付加された物理パーティションIDにマッピングされる。そうでなければ、ステップ122は省略される。
【0048】
パーティションIDの仮想化された再マッピングの例を図9に示す。グローバルパーティションID空間は、リソースパーティションIDと性能監視グループID用に別々のID空間を使用して、EL2のハイパーバイザによって制御され得る。仮想化を両方のタイプのパーティションIDに適用することができ、簡潔にするために、以降の説明では両方のタイプを指すために用語「パーティション識別子」を使用する。しかしながら、いくつかの実施形態は、リソースパーティションIDについての仮想化のみをサポートすることができ、例えば、性能監視グループの再マッピングをサポートすることはできない。
【0049】
ハイパーバイザは、EL1で実行するゲストオペレーティングシステムが(例えばゼロから始まる)狭い範囲のパーティションIDのみを使用するように制限することができ、再マッピングレジスタ126,128は、そのゲストオペレーティングシステムによって使用される仮想パーティションIDをグローバルID空間内の物理パーティションIDにマッピングするためのいくつかの再マッピングエントリを提供する再マッピングテーブルを定義する。各再マッピングレジスタは、(単一パーティションIDの幅と比較したレジスタの相対サイズに応じて)1つまたは複数の仮想IDの再マッピングエントリを格納することができる。再マッピングテーブルは、オペレーティングシステムによって使用される仮想パーティションIDに基づいて索引付けされ、対応する物理パーティションIDをグローバルID空間に戻す。これにより、各ゲストオペレーティングシステムは、それが仮想化されて類似のID値を使用している可能性がある他のゲストオペレーティングシステムと並行して実行されているという事実を認識せずに、独自のアプリケーションのIDを設定できる。各ゲストオペレーティングシステムは、ハイパーバイザによって再マッピングテーブルに設定されたマッピングによって、異なるグローバル物理パーティションIDにマッピングされたそれらの競合する仮想IDを有することができる。
【0050】
したがって、図9は、仮想化をサポートするために図8の選択回路をどのように拡張できるかを示している。マルチプレクサ101は、図8に示されるのと同じ方法でパーティションIDレジスタ100の間で選択する。レジスタMPAM2_EL2およびMPAM3_EL3からのパーティションIDは、図8と同様に直接マルチプレクサ101に直接与えられる。しかしながら、レジスタMPAM0_EL1およびMPAM1_EL1からのIDは、再マッピング回路130を介して渡される。MPAM0_EL1またはMPAM1_EL1で指定された仮想パーティションIDは、再マッピングレジスタ128から対応する再マッピングエントリを選択するために使用される。この例では、各再マッピングレジスタ128は4つの再マッピングエントリを含むので、仮想パーティションIDの2ビットは再マッピングレジスタ128内の特定の再マッピングエントリを選択し、残りのビットはどの再マッピングレジスタ128が選択されるかを選択する。しかしながら、他の例は、レジスタごとに異なる数のエントリを有し得る。物理パーティションIDは、選択された再マッピングエントリから読み取られ、仮想化がそれぞれEL0またはEL1に対して有効にされるかどうかを指定する仮想化制御レジスタ116内の構成パラメータEL0_RMENまたはEL1_RMENに応じて、MPAM0_EL1またはMPAM1_EL1から読み取られた元の仮想パーティションIDと対応する再マッピング物理パーティションIDとの間で選択するマルチプレクサ132に提供される。仮想化が有効にされていない場合、元の仮想パーティションIDがマルチプレクサ101に渡され、仮想化が有効にされている場合は物理パーティションIDが使用される。図9はEL0およびEL1に対して設けられた別々の再マッピング回路130を示しているが、他の場合には共通の再マッピング回路が使用され得る。
【0051】
各再マッピングエントリは、再マッピング有効レジスタ124内の対応する有効ビットに関連付けられている。所定の再マッピングエントリの有効ビットは、その仮想から物理へのパーティションIDマッピングが有効かどうかを指定する。処理要素が無効な仮想パーティションIDを指定するメモリトランザクションを発行するとき、これは例外条件をトリガしてより高い例外状態(EL2)への切り替えを引き起こし、その結果、ハイパーバイザは再マッピングエントリを更新してその仮想パーティションIDに使用される物理パーティションIDを定義することができる。代替として、EL1のオペレーティングシステムが、パーティションIDレジスタMPAM0_EL1,MPAM1_EL1のうちの1つを、メモリトランザクションを発行するときではなく、無効な再マッピングエントリに対応する仮想IDに設定しようと試みるときに、より高い例外状態へのトラップがトリガされ得る。いずれにしても、どの再マッピングエントリが有効であるかをシグナリングするための有効ビットを提供することによって、ハイパーバイザは仮想から物理へのパーティションIDマッピングを遅延方式で割り当てることができるので、所与のオペレーティングシステムに対するすべてのマッピングを一度に定義する必要はない。代わりに、ハイパーバイザは、対応するIDマッピングを定義する前に、オペレーティングシステムが特定の仮想パーティションIDを実際に使用しようと試みるまで待つことができる。理論的に利用可能なすべての仮想パーティションIDをオペレーティングシステムが使用しないことが多いので、そのような遅延割り当ては、使用されない仮想IDの再マッピングレジスタの設定に時間を費やすことを回避することによって、所与のオペレーティングシステムへのコンテキスト切り替え時の性能を改善できる。
【0052】
無効な仮想パーティションIDを指定する要求を処理するための別のアプローチは、再マッピング回路が無効な仮想パーティションIDをある所定の物理パーティションIDに再マッピングすることであり得る。したがって、例外メカニズムを使用して無効な仮想パーティションIDを処理する代わりに、再マッピング回路は、物理パーティションIDに対して単に「エラーの場合」の値を使用し、これは対応するメモリ要求と共にメモリシステムコンポーネントに渡され、有効なパーティションIDとして扱われる。所定の物理パーティションIDは、パーティションIDの特定の「デフォルト」値、例えば、特別なパーティションIDが割り当てられていないソフトウェア実行環境に使用されるものと同じデフォルトパーティションIDであり得る。例えば、所定の物理パーティションIDはゼロであり得る。代替として、制御レジスタ(PARTID_ON_ERROR)は、エラーの場合に所定の物理パーティションIDとして使用されるべき物理パーティションIDの特定の値を定義することができる。
【0053】
図6は有効ビットが再マッピングレジスタ126,128とは別のレジスタ124に格納される例を示しているが、他の実施形態では各再マッピングエントリはそれ自体有効ビットを含むことができ、このため、有効ビットは、対応する物理パーティションIDと共に再マッピングレジスタ126,128に格納される。この場合、再マッピング有効レジスタ124を省略することができる。したがって、一般に、各再マッピングエントリは有効ビットに関連付けられ得るが、有効ビットが格納される場所は実装の選択に応じて異なり得る。
【0054】
仮想化制御レジスタ116は、例外レベルEL0および例外レベルEL1に対する別々の有効化パラメータを含むことができ、それぞれ対応する例外状態で発行されたメモリトランザクションに対してパーティションIDレジスタの再マッピングが有効にされるかどうかを定義する。同様に、リソース分割のためのパーティションIDと監視分割を実行するための性能監視グループIDとをそれぞれ再マッピングするかどうかを制御するために、別々の有効化パラメータを提供することができる。したがって、場合によっては、仮想化制御レジスタ116は以下を指定することができる:
・EL0_PARTID_RMEN:MPAM0_EL1のPARTIDの再マッピングを有効にする
・EL1_PARTID_RMEN:MPAM1_EL1のPARTIDの再マッピングを有効にする。
【0055】
任意選択で、PMGフィールド内の性能監視IDの仮想化された再マッピングもサポートすることができ、その場合、それぞれEL0およびEL1で性能監視IDの再マッピングを可能にするために、さらなる仮想化制御パラメータEL0_PMG_RMENおよびEL1_PMG_RMENを指定することができる。しかし、PMGフィールドがPARTIDのサブプロパティとして扱われる実施形態では、性能監視IDの再マッピングを可能にするための追加の制御は必要ないかもしれない。
【0056】
したがって、簡潔にするために図7はステップ122でIDを再マッピングするかどうかを決定するための単一の決定ステップ120を示しているが、実際には同じメモリトランザクションに付加される異なるIDに対して別々の決定を行うことができ、例えば、性能監視ID(PMG)は、リソース分割ID(PARTID)が再マッピングされていない間に再マッピングされる可能性があり、その逆も可能である。また、理解を容易にするために図7は条件付きステップとしてステップ122を有する逐次プロセスを示しているが、実際には図9に示されるように物理パーティションIDは各メモリトランザクションに対して計算され得、パーティションIDの再マッピングされたバージョンと再マッピングされていないバージョンの両方が、関連する有効化パラメータに基づいてそれらの間で選択するマルチプレクサ132に提供されてもよい。これは、物理パーティションIDを調べる前に仮想化が有効になっているかどうかが判定されるまで待つよりも早くなり得る。
【0057】
当業者は、図9に示されるようなカスケード接続されたマルチプレクサが、より多くの入力を有する単一のマルチプレクサに組み合わせることを含む、同じ効果を達成するために異なる方法で接続され得ることを理解することができる。
【0058】
図10は、ステップ122をより詳細に示す流れ図である。ステップ140で、再マッピングされているパーティションIDが範囲外であるかどうかが判定される。例えば、仮想化制御レジスタ116または別のMPAM制御レジスタ68(例えば、ハードウェアにどのような機能が提供されているかをソフトウェアに識別させるためのディスカバリレジスタ142)は、現在のコンテキストで指定できる最大ID値を指定することができる。例えば、ハイパーバイザは、例えばハードウェアにいくつの再マッピングレジスタ128が設けられているかに基づいて、その下で実行されているオペレーティングシステムによって使用され得るパーティションIDの再マッピング可能範囲を定義することができる。再マッピングされているパーティションID(すなわち、図7のステップ112で選択されたレジスタから読み取られたID)が範囲外である場合、ステップ144で例外イベントがシグナリングされてより高い例外レベルへのトラップが引き起こされる。通常、より高い例外レベルはEL2になるため、ハイパーバイザの例外ハンドラが不適切なパーティションIDを処理するためのアクションを実行できる。例えば、ハイパーバイザは、エラーが発生したことをシグナリングしたり、オペレーティングシステムが使用を許可されているグローバルパーティションID空間内の別のパーティションIDに範囲外パーティションID(例えば、特定のIDが割り当てられていないプロセスに使用されるデフォルトのパーティションID)を再マッピングしたりできる。
【0059】
仮想パーティションIDが許容範囲内にある場合、ステップ146において、例えば、再マッピング有効レジスタ124内の対応する有効ビットに基づいて、対応する再マッピングエントリが有効であるかどうかが決定される。現在のIDが有効ではない場合、再びステップ144で、例外イベントがEL2にトラップするようにシグナリングされ、その結果、ハイパーバイザに関連付けられた例外ハンドラが無効なパーティションIDを処理することができる。例えば、ハイパーバイザは、オペレーティングシステムが新たに割り当てられたマッピングを続けることを可能にするために実行をEL1に戻す前に、物理パーティションIDをその仮想パーティションIDに割り当て、対応する有効ビットを更新してこのマッピングが現在有効であることを示すことによって応答し得る。
【0060】
一方、仮想IDが許容範囲内にあり有効である場合、ステップ148において、仮想IDは、仮想IDに対応する再マッピングエントリに指定された物理IDにマッピングされる。
【0061】
図11に示すように、PARTID_IおよびPARTID_DはパーティションIDレジスタ100内で別々に指定されているが、再マッピング回路130は両方のタイプのIDに対して共通の再マッピングテーブル126,128を使用することができる。したがって、命令およびデータアクセスのために別々のセットの再マッピングレジスタ126,128を設ける必要はない。
【0062】
要約すると、メモリシステム構成要素によって使用されるグローバルID空間内の物理ID上に仮想IDのより小さい空間を再マッピングするための再マッピングハードウェア(再マッピングレジスタ126,128および再マッピング回路130)を設けることによって、競合するパーティションIDを使用しながら複数のゲストオペレーティングシステムを共存させることができ、各メモリトランザクションがパーティションIDを再マッピングするためにハイパーバイザにトラップする必要がないため、パフォーマンスが向上する。
【0063】
図7のステップ150において、PMGおよびPARTID(選択されたパーティションIDレジスタから読み取られた元の形式で、またはステップ122で再マッピングした後のいずれか)を指定するメモリトランザクションが発行されるだけでなく、セキュア状態表示はトランザクションが発行されたセキュリティ状態であるかどうかを示す。セキュア状態表示は、セキュアドメインに割り当てられたパーティションIDが、安全性の低いドメインに割り当てられたパーティションIDとは完全に別のパーティションID空間を使用できるように含まれる(単一のID空間からセキュアプロセスにいくつかのパーティションIDを割り当てるのではなく、非セキュアプロセスが提供されたセキュアプロセスに関する情報を推測できる可能性がある)。セキュアワールドとそれほどセキュアでないワールドを完全に分離することで、セキュリティを向上させることができる。トランザクションと共に提供されるセキュリティ表示は、トランザクションがどのセキュリティ状態から発行されたかを示す。MPAM_EL1_Sレジスタが存在しない実施形態でも、セキュリティ状態表示をトランザクションと共に提供することができ、そのような実施形態は、依然として、セキュア/非セキュア状態に対して別々のパーティションIDをサポートすることができる(セキュリティ状態遷移におけるパーティションIDのコンテキスト切り替えは、個別のパーティションIDレジスタを提供するのではなく、状態ごとに異なるIDを強制するためのメカニズムである)ことに留意されたい。
【0064】
このセキュリティ表示は、トランザクションのターゲットアドレスがセキュアか非セキュアかを示すアドレスベースのセキュリティ表示とは別に提供されてもよい。すなわち、メモリアドレス空間の領域はセキュアまたは非セキュアとして指定され得、セキュア領域はセキュアドメインからのみアクセス可能であり、一方、非セキュア領域はセキュアおよび非セキュアドメインの両方でアクセス可能である。アドレスがセキュア領域にあるか非セキュア領域にあるかに応じてアクセスを制御するシステムMMUなどのさらなる制御構造をメモリシステムが含む場合、そのようなアドレスベースのセキュリティ表示をトランザクションに含めることができる。ただし、セキュアドメインはアドレス空間の非セキュア領域とセキュア領域の両方にアクセスできるため、このアドレスベースのセキュリティ表示では、トランザクションを発行したプロセスがセキュアか非セキュアかを識別するのに十分ではない。したがって、メモリトランザクションは、トランザクションが発行されたドメイン(MPAM_NS)とターゲットアドレスに関連付けられたセキュリティ状態(NS)の両方を別々に識別できる。
【表5】
【0065】
メモリトランザクションを受信すると、メモリシステム構成要素は、MPAM_NSセキュリティ表示を使用して、セキュアドメインと非セキュアドメインのそれぞれについて異なるパラメータセット間で選択することができ、これにより、非セキュアコードが性能制御パラメータを設定したり、セキュアコードの性能監視データにアクセスしたりする場合に、セキュリティ上のリスクが生じる可能性があるドメイン間での制御パラメータの共有を回避できる。
【0066】
図6に戻ると、ディスカバリレジスタ142は、対応する処理要素(PE)のハードウェア機能を識別する様々な機能パラメータを識別する。これにより、ソフトウェアは特定のハードウェア実装でどのMPAMリソースが提供されているかを問い合わせることができるため、同じコードを複数の異なるハードウェアプラットフォームで実行できる。例えば、ディスカバリレジスタ142は、特定のMPAM機能(例えば、仮想化、または別々のセキュア/非セキュアID空間)が提供されるかどうか、またはどのサイズのリソースが提供されるか(例えば、パーティションIDのビット数、またはマッピングレジスタ126,128の数)を指定し得る。例えば、ディスカバリレジスタ142は以下を指定することができる:
・PARTID_MAX:PEのハードウェア実装でサポートされている最大パーティションID;
・HAS_VCR:仮想化機能が提供されるかどうか(したがって、仮想化制御レジスタ116、再マッピング有効レジスタ124、再マッピングレジスタ126,128、および再マッピング回路130が提供されるかどうか);
・PARTID_REMAP_MAX:PEのハードウェア実装でサポートされている最大仮想パーティションID;
・PMG_MAX:PEのハードウェア実装でサポートされている最大PMG値;
・PMG_REMAP_MAX :(オプション)-PMGフィールドの再マッピングをサポートする実施形態では、PEのハードウェア実装によってサポートされている最大仮想性能監視パーティションID;
・HAS_MPAMF:PE内にMPAM分割制御機能が存在することを示す。例えば、PEに、内部キャッシュ、TLB、またはMPAM分割制御機能を有するその他の内部メモリシステム構成要素がある場合、これを設定できる。他のメモリシステム構成要素によって使用するためにパーティションIDをメモリトランザクションに付加することができるが、それ自体がメモリリソースまたは性能監視リソースを分割するためにパーティションIDを使用する分割制御機能を有していないPEは、HAS_MPAMFをクリアする。
・HAS_S:セキュア状態がサポートされているかどうかを指定する。
【0067】
セキュア状態がサポートされるとき、セキュア状態に対するMPAMのさらなる能力を識別するためにさらなるセキュアディスカバリレジスタMPAM_SIDR160が提供され得る:
・S_PARTID_MAX:セキュア状態のPARTIDの最大値
・S_PMG_MAX:セキュア状態のPMGの最大値。
【0068】
ディスカバリレジスタ142は、EL0以外の任意の例外状態から読み取り可能であり得るが、読み取り専用であり、ディスカバリレジスタ142は、特定のハードウェア実装に固有のパラメータを定義するので、書き込むことができない。例えば、ディスカバリレジスタ142は、装置の製造中に有線で接続されてもよい。セキュアディスカバリレジスタ160は、EL3から読み取られるが他の動作状態にはアクセスできない。
【0069】
仮想化がサポートされている場合、PARTID_MAXおよびPMG_MAXの実際の値はハイパーバイザがオペレーティングシステムに使用を許可したパーティションIDの範囲よりも大きい可能性があるので、EL1のオペレーティングシステムがディスカバリレジスタ142を直接読み取ることを防ぐことが望ましいかもしれない。したがって、ディスカバリレジスタ142にアクセスしようと試みるEL1で実行される命令(または少なくともメモリトランザクションに指定されることが許可される最大パーティションIDおよび性能監視グループを定義するPARTID_MAXまたはPMG_MAXフィールドにアクセスしようとする試み)は例外をトリガする可能性があり、これは、最大値の代わりに別の値(例えば、PARTID_REMAP_MAXまたはPMG_REMAP_MAX)を提供して、オペレーティングシステムに見えるパーティションIDの数をエミュレートできるハイパーバイザにトラップする。あるいは、パーティションIDが範囲外の場合、例外をトリガする代わりに、前述のように、無効な仮想パーティションIDの処理と同様の方法で、パーティションIDをID=0などの所定の「エラーの場合」値にマッピングすることによって処理できる。
【0070】
したがって、仮想化制御レジスタ116は、EL1からディスカバリレジスタ142へのそのようなアクセスがEL2にトラップされるかどうかを制御する構成パラメータTRAP_MPAM_IDR_EL1を定義する。この構成パラメータを設定することによって、EL2のハイパーバイザまたはEL3のセキュアモニタは、EL1のゲストOSがディスカバリレジスタ(IDR)142に直接アクセスできるかどうか、またはハイパーバイザがステップインしなければならないかどうかを制御できる。例えば、仮想化が無効になっているとき、IDRアクセスがEL2にトラップするかどうかを選択する柔軟性を提供することは、OSがEL2への不要なトラップを回避することによってIDRに直接アクセスすることが適切である場合、性能を改善するのに有用である。
【0071】
EL1またはEL0による使用のために仮想から物理IDへのマッピングを設定するEL2の文脈で仮想化が上述されているが、一般に、この技術は異なる特権レベルのソフトウェア実行環境の任意のペアに使用され得るため、より高い特権レベルの環境は、より低い特権のソフトウェア実行環境によって発行されたトランザクションについて、仮想パーティションIDの物理パーティションIDへの再マッピングを制御することができる。また、別段の指定がない限り、パーティションIDについて上述した技法は、いくつかの実施形態では性能監視グループにも使用することができるが、これは必須ではない。したがって、パーティション識別子という用語は、特に指定がない限り、性能監視グループ識別子を含むと解釈できる。
【0072】
所与のメモリトランザクションに付加されたパーティションIDおよび性能監視グループ、ならびにトランザクションが発行されたセキュリティ状態を指定するセキュリティ状態表示は、メモリシステム全体にわたってメモリトランザクションと共に流れる。したがって、メモリトランザクションをメモリシステムの他の構成要素に渡すメモリシステムのノード(例えば、相互接続)は、そのようなノードで受信された対応する要求と同じパーティションID、性能監視グループおよびセキュリティ状態表示を有する外部メモリトランザクションを提供する。メモリシステム内のキャッシュの場合、これらはキャッシュヒットがあると要求に対する応答を生成することがあり、キャッシュミスがあるとそれをメモリシステムの別の部分に渡すことがあるという挙動がある。また、要求に基づいて新しいエントリを割り当てることもある。新しいエントリを割り当てるとき、キャッシュは、キャッシュされたデータ自体と一緒に、パーティションID、性能監視グループ、および割り当てを引き起こした要求のセキュリティ表示を格納することができる。データがさらなるキャッシュまたはメモリに書き戻されるとき、追い出しをトリガした要求に関連付けられたIDではなく、キャッシュ内の追い出されたデータに関連付けられたパーティションID、性能監視グループおよびセキュリティ表示を指定してライトバックトランザクションが生成される。これにより、対応するデータをキャッシュに割り当てたソフトウェア実行環境に固有のパラメータに従って、ライトバックのためのリソース割り当てまたは性能監視を制御/監視することが可能になる。
【0073】
すべてのメモリシステム構成要素(例えば、キャッシュ、相互接続、メモリコントローラ、メモリデバイス、またはメモリ管理ユニット)が分割をサポートするわけではないことに留意されたい。分割をサポートしない構成要素は、すべてのソフトウェア実行環境に対して共通の方法でリソース割り当てを制御したり性能を監視したりしてもよい。それにもかかわらず、分割をサポートする下流のメモリシステム構成要素が適切なパラメータセットを選択するためにパーティションIDを使用することができるように、外部要求は上で論じられたのと同じ方法でパーティションIDを依然として付加される。したがって、システム設計者が実際に任意の所与のメモリシステム構成要素でパーティションIDを使用することを選択したかどうかにかかわらず、上述の処理要素アーキテクチャおよびパーティションIDルーティング方式は、メモリシステムの様々な場所でパーティション分割を実装する様々な実装範囲をサポートする柔軟性を提供する。しかしながら、パーティションIDまたは性能監視グループIDに応答するそのようなメモリシステム構成要素の場合、これらは、パーティションIDに基づいてリソース割り当てもしくは競合管理、または性能監視を制御することができる。
【0074】
性能モニタは、リソース分割制御とは異なる動作をする。性能モニタは、モニタにプログラムされているフィルタに基づいて性能メトリックを測定、カウント、または計算する。フィルタパラメータには、パーティションIDと性能監視グループ(またはパーティションIDは含まない性能監視グループ)を含めることができる。例えば、メモリに転送されたバイト数をカウントする性能モニタは、パーティションIDが5で性能監視グループが2の読み取りのみをカウントするように、測定値をフィルタリングしてもよい。したがって、性能測定値は、同じパーティションIDと性能監視グループを共有する、異なるソフトウェア実行環境、または異なるソフトウェア実行環境のグループごとに収集できる。
【0075】
一方、リソース分割をサポートするシステム構成要素の場合、メモリシステム構成要素は、パーティションIDに基づいてメモリシステム構成要素パラメータのセットを選択する。メモリシステム構成要素パラメータは、メモリシステムリソースの割り当て(帯域幅、キャッシュ容量など)またはそれらのリソースの競合を制御するために使用されるリソース制御パラメータであってもよい(例えば、選択されたメモリシステム構成要素パラメータは、対応するパーティションIDに関連するトランザクションに設定されたプライオリティを定義することができる)。
【0076】
図12は、パーティションIDに基づいてメモリシステム構成要素の動作を制御するための方法を示している。ステップ200において、メモリシステム構成要素は、上述したようにパーティションID、性能監視グループおよびセキュリティ状態表示を指定するメモリトランザクションを受信する。メモリシステム構成要素がメモリシステムリソース分割をサポートする場合(ステップ202)、ステップ204で、パーティションIDおよびセキュリティ状態に基づいてリソース制御パラメータのセットが選択される。性能監視グループはこのステップでは考慮されない。ステップ206において、リソースの割り当ては、選択されたリソース制御パラメータのセットを使用して制御されるか、またはそれらのリソースの競合は、選択されたリソースパラメータのセットを使用して管理される。メモリシステムリソース分割がサポートされていない場合、ステップ204および206は省略される。
【0077】
メモリシステム構成要素が性能監視グループによる性能監視分割をサポートする場合(ステップ208)、その後ステップ210で、構成要素に実装された各性能モニタはその要求をそのフィルタパラメータに対してテストする(PMGフィールドおよびパーティションIDフィールドに適用されるテストを含み得る)。フィルタパラメータを満たしている各モニタは、そのモニタが実行するように設計されている測定、カウント、または計算にしたがって、その内部状態を更新する。性能監視分割をサポートしないメモリシステム構成要素については、ステップ210は省略される。上記で説明したように、いくつかの実施形態では、パーティションIDフィールドとPMGフィールドの両方をフィルタパラメータに含めることができる(そのため、PMGフィールドはパーティションIDフィールドをさらに制限する)。あるいは、PMGは、パーティションIDフィールドとは別個の独立したIDとして解釈され得、その場合、フィルタパラメータは、PMGを考慮し得るがパーティションIDを考慮し得ない。
【0078】
リソース監視分割をサポートする各メモリシステム構成要素は、パーティションIDに基づいて選択される異なるセットのメモリシステム構成要素パラメータを格納するパラメータレジスタのセットを有することができる。分割制御のための制御パラメータは、論理的にはパーティションIDで索引付けされた制御パラメータのアレイである。制御パラメータを設定するためのインタフェースは、メモリマッピングされたレジスタのアレイとして構成することができ、あるいはセレクタレジスタと制御パラメータごとにただ1つの構成レジスタと共に構成することができる。後者の場合、構成ソフトウェアはまず構成するためのパーティションIDをセレクタレジスタに格納し、次に所望の制御パラメータを1つまたは複数の制御パラメータ構成レジスタに格納する。
【0079】
図13は、メモリシステム構成要素の一例であるキャッシュ300の一例を示している。キャッシュ300は、所与の処理要素6のレベル1データキャッシュ8、レベル1命令キャッシュ10もしくはレベル2キャッシュ12、クラスタキャッシュ16、またはシステムキャッシュ20などの命令またはデータをキャッシュするためのキャッシュであり得る。キャッシュ300は、MMU70内のTLB72またはページウォークキャッシュ74などのアドレス変換用のキャッシュでもあり得る。図3は、MMU70が所与のプロセッサコア内に設けられている例を示しているが、例えばSoC相互接続18内で、システムMMUをメモリシステムのさらに下方に設けることも可能である。
【0080】
キャッシュ300は、キャッシュされる情報を格納するためのキャッシュストレージ(キャッシュRAM)302を有する。キャッシュRAM302は、一定数のストレージエントリ304を有する。図13に示すように、各エントリは以下を格納することができる:
・キャッシュされたデータ306(これは、任意のキャッシュされた情報であり得る-データ値だけでなく、キャッシュのタイプに応じた命令またはアドレス変換データも包含する);
・エントリ内の対応するデータが有効かどうかを指定する有効ビット308;
・キャッシュされたデータに関連するアドレスの一部を示すタグフィールド310;
・データをキャッシュに割り当てたメモリトランザクションのパーティションID314;
・割り当てメモリトランザクションの性能監視グループID316;
・割り当てメモリトランザクションのセキュリティ状態表示318(そのメモリトランザクションがどのセキュリティ状態から発行されたかを示す);
・システム設計がキャッシュラインごとに保持する必要がある可能性があるその他の情報、例えば、コヒーレンス状態やアドレス空間インジケータ(ASI)。
【0081】
キャッシュからデータが追い出されると、IDフィールド314,316,318を使用して、ライトバックトランザクションのためのパーティションID、性能監視グループID、およびセキュリティ状態表示が導出される。図13には示されていないが、各キャッシュエントリはまた、キャッシュされたデータのコヒーレンシ状態を指定するコヒーレンシ情報(例えば、ライトバックが必要かどうかを判断するためにデータがクリーンかダーティか)、および/または追い出しが必要な場合の犠牲キャッシュラインを選択するために犠牲選択データ(例えば、どのエントリが直近に使用されたのかを追跡するためのデータ)であり得る。
【0082】
キャッシュへのデータの割り当ては、直接マッピング、セットアソシアティブ、またはフルアソシアティブを含む、任意の既知のキャッシュ編成に従って制御することができる。図13の例は、4通りのセットアソシアティブ編成方式を示しているが、これは一例にすぎないことを理解されたい。キャッシュへのルックアップは、対応するメモリトランザクションに関連付けられているパーティションIDとは無関係に実行される。したがって、所与のパーティションIDを指定するメモリトランザクションが受信されると、トランザクションは、キャッシュエントリに格納されたパーティションID314、非セキュアIDインジケータ318、および性能監視グループ316に関係なく、インデックス付きキャッシュエントリ内の任意のデータに対してヒットできる。したがって、性能リソースの分割および/または性能監視は、キャッシュされたデータへのアクセスを共有する様々なソフトウェアプロセスを妨げることはない。
【0083】
一方、キャッシュにデータを割り当てるとき、キャッシュコントローラ312は、セキュリティ状態および対応するメモリトランザクションのパーティションIDに基づいて選択されたリソース制御パラメータのセットに応じて割り当てを制御する。キャッシュは上述のようにリソース制御パラメータレジスタ320のセットを有し、各レジスタ320は対応するソフトウェア実行環境に対するリソース制御パラメータを格納する。セレクタ322は、パーティションIDと、キャッシュへのデータの割り当てを必要とする着信メモリトランザクションのセキュリティ状態とに基づいて、レジスタのうちの1つを選択する。選択されたレジスタに格納されたパラメータは、データがキャッシュに割り当てられるかどうか、そしてどのように割り当てられるかを制御するために使用される。
【0084】
第1のキャッシュ分割制御モードでは、パーティションIDを使用して選択された最大容量閾値を使用して割り当てが制御され、対応するパーティションIDに関連するデータを割り当てられることが許可されるキャッシュ容量の最大エントリ数を識別する。セキュア状態および非セキュア状態をサポートする実装形態では、閾値は、パーティションIDと非セキュアIDインジケータとの所与の組み合わせに関連付けられたデータを割り当てられることを許可された最大容量を定義することができる。例えば、最大容量閾値をより高い特権プロセスによって設定することができ、すなわち所与のオペレーティングシステムに対する閾値をハイパーバイザによって設定することができ、所与のアプリケーションに対する閾値をオペレーティングシステムによって設定することができる。
【0085】
例えば、図2は、パーティションID0,1,および2にそれぞれ50%、50%、および40%の最大容量閾値がアサインされている例を示している。これは、保証された割り当てではなく、特定のパーティションIDのデータを格納できるキャッシュ量の上限にすぎないため、異なるソフトウェア実行環境に対して定義されている最大容量閾値の合計が100%を超える可能性があることに留意されたい。この場合、対応するソフトウェア実行環境がすべて同時に最大割り当てを使用することはない。
【0086】
図13に戻ると、キャッシュ300は、各パーティションIDに関連するデータに対していくつのキャッシュエントリ304が割り当てられたかを追跡するための割り当てカウンタ326のセットを有する。セキュリティ状態がサポートされている場合、カウンタはセキュリティ状態に基づいてさらに分割されてもよい。所与のパーティションIDに対するデータ値がキャッシュに割り当てられると、対応する割り当てカウンタ326がインクリメントされる。データが無効化、削除、または置換されると、対応するパーティションIDの割り当てカウントがデクリメントする。所与のメモリトランザクションに応答してキャッシュミスが発生すると、キャッシュコントローラ312は、メモリトランザクションによって指定されたパーティションIDに対応する割り当てカウンタ326およびリソース制御パラメータレジスタ320を読み取り、割り当てカウントを最大容量閾値と比較し、比較結果に基づいて割り当てを制御する。現在の割り当てがまだ閾値を超えていない場合は、必要なデータをキャッシュに割り当てることができる。しかし、割り当てカウントが閾値以上である場合、キャッシュコントローラ312は、新しい要求にデータを割り当てないことを決定するか、または新たなデータを割り当てる前にキャッシュから同じパーティションIDに関連する他のデータを追い出すかもしくは置き換えることができ、そのパーティションIDに関連した閾値レベルを超えるエントリがキャッシュに割り当てられるのを防ぐ。追い出しまたは置き換えが必要な場合、キャッシュの各エントリに格納されているパーティションID314(および提供されている場合は犠牲選択情報)を使用して、どのデータが追い出されるかを判断することができる。容量をカウントする上記の手段は単なる一例であり、他の技術もキャッシュ容量を追跡するために使用され得ることが理解されよう。
【0087】
リソース制御パラメータレジスタ320は、最大容量閾値によって示される最大エントリ数を様々な方法で表すことができる。例えば、対応するパーティションIDデータに割り当てることができるエントリの最大数を直接指定できる。あるいは、そのパーティションIDに割り当てることができるキャッシュの全容量のうちの一部分に関して閾値を指定することができる。例えば、パラメータは、パラメータの幅およびスケールファクタが対応するメモリ構成要素のIDレジスタ362に指定されている場合のスケーリングされた割合を表すことができる。例えば、構成要素が256でスケーリングされた8ビットの容量制御をサポートしているとすると、この場合、容量の30%を特定のパーティションに割り当てるため、パーティションの最大容量パラメータは30*256=76.8となり、割り当てが望ましい割合を超えないように、76に切り捨てられる。
【0088】
複数のセキュリティ状態がサポートされる実施形態では、セキュリティ状態表示は、パーティションIDと組み合わせて、適切なリソース制御パラメータレジスタ320および割り当てカウント326を選択するためにも使用される。
【0089】
図14は、第1の分割制御モードにおいて最大容量閾値に応じてキャッシュ割り当てを制御する方法を示している。ステップ330で、所与のメモリトランザクションについてキャッシュミスが検出される。ステップ332において、リソース制御パラメータ320のセットが、対応するパーティションIDおよびセキュリティ状態に基づいて選択される。ステップ334で、対応するセキュリティ状態およびパーティションIDについてカウンタ326によって維持されている割り当てカウントが、選択されたリソース制御パラメータ320のセット内の最大容量閾値と比較され、次に、ステップ336で、割り当てカウントが最大容量閾値より大きいかどうかが判断される。もしそうでなければ、ステップ338でキャッシュミスに応答してその要求のデータがキャッシュに割り当てられる。一方、割り当てが割り当て閾値以上である場合、ステップ340においてキャッシュへのデータの割り当てが阻止されるか、あるいはステップ342において現在の要求と同じパーティションIDに関連するデータが置き換えられ得るか、または、新たに割り当てられたデータのために追い出され、ステップ338でデータを通常通りに割り当てることができる(例えば、閾値が最近更新された場合、ステップ340または342によって提供される制限にもかかわらず、割り当てカウントが閾値を超えることがある)。方法がステップ340または342に進むかどうかは、キャッシュの所与の実装形態に対する実装上の選択である。
【0090】
あるいは、図15に示すように、パーティションIDに基づいて選択されたキャッシュ容量部分ビットマップ350を使用してキャッシュ割り当てを制御する第2のキャッシュ制御モードを使用することができる。ビットマップ350は、キャッシュストレージ302の対応する部分が対応するパーティションIDに関連するデータを格納するために割り当てられることが許可されるかどうかをそれぞれ指定する複数のフィールド352を有する。例えば、図15の例の下部に示されているビットマップ350は、各々がキャッシュ容量の1/32に対応する32個のフィールド352を有する。対応するパーティションIDを指定するトランザクションがキャッシュのその部分にデータを割り当てることができないことを示すために各フィールドを0に設定し、その部分にそのパーティションID用のデータを割り当てることを許可することを示すために1に設定することができる。
【0091】
図15の上部に示すように、異なるパーティションIDに対して異なるビットマップ350を設定することによって、キャッシュのいくつかの部分を所与のパーティションIDのために予約することができるが、他の部分はパーティションID間で共有されるかまたは全く割り当てられない可能性がある。例えば、図15に示す4つのキャッシュ部分のサブセット(これは全体のキャッシュ容量ではない)では、キャッシュの部分0はパーティション1にのみ割り当てられ、部分1はパーティション1とパーティション2の両方に割り当てられ、このため、キャッシュのこの部分への割り当てを競合する可能性があり、部分2はパーティション2にのみ割り当てられ、部分3はこれらのパーティションのいずれにも割り当てられない。したがって、パーティション1のキャッシュにデータを割り当てるとき、キャッシュコントローラ312は、部分0または1内の位置を選択することに制限されるが、部分2または3に割り当てることはできない。ビットマップによって定義される「部分」は、任意の所与のアドレスをグループの少なくとも1つのエントリ、例えばセットアソシアティブキャッシュ内の全ウェイ(そのウェイに属するすべてのセットを含む)、またはフルアソシアティブキャッシュ内の任意のより多くのエントリのサブセットに割り当てることができるという特性を有する1つまたは複数のキャッシュエントリの任意のグループとすることができる。
【0092】
したがって、第2の割り当て制御モードでは、キャッシュミスが検出されたときに、対応するパーティションIDおよびセキュリティ状態に対する制御パラメータセットが再び選択されるが、今回はキャッシュビットマップが読み取られ、キャッシュのどの部分にデータを割り当てることができるかを制御するために使用される。
【0093】
いくつかのキャッシュ実装形態は、上で説明された第1および第2のキャッシュ割り当て制御モードのうちの1つのみをサポートし得る(例えば、直接マッピングされたキャッシュは第1のモードを実装できるが第2のモードを実装できない)。他の実装形態は両方のモードを使用するオプションをサポートし得る。例えば、これは、使用されている特定のキャッシュ編成が多くの部分を与えることをサポートしていない場合(例えば、比較的連想性の低いセットアソシアティブキャッシュ)、最大容量制限をオーバーレイすることで部分分割のみよりも多くの制御を与えるので有用であり得る。
【0094】
上述のように、キャッシュ300は、リソース分割がどのように実行されるかを制御するためのメモリマッピングされた構成レジスタ360を有することができる。構成レジスタ360は、キャッシュ300のハードウェア機能を識別するためのIDレジスタ362、更新するリソース制御パラメータのセットを選択するためのセレクタレジスタ364、および選択されたリソース制御パラメータセットに書き込まれるパラメータを指定するための1つまたは複数の構成レジスタ366を含む。
【0095】
例えば、IDレジスタ362は、どの第1/第2のキャッシュ割り当て制御モードがサポートされているかを指定することができる(閾値またはビットマップに基づく分割)。例えば、割り当てカウンタ326を全く有していないキャッシュは、第1のモードがサポートされていないことを示してもよい。この場合、制御プロセッサは第2のモードの使用に制限されてもよい。他のキャッシュは両方のモードをサポートし、与えられたプロセスにどちらが使用されるかを選択する柔軟性を有していてもよい。この場合、どのモードを使用するかは、対応するパーティションIDについてリソース制御パラメータレジスタ320内で指定され、構成レジスタ360を使用してプログラムされてもよい。
【0096】
所与のパーティションIDに対してリソース制御パラメータのセットを設定するとき、ソフトウェアは、それらのレジスタ364,366にマッピングされたメモリアドレスを指定するメモリトランザクションを発行することによって、そのパーティションIDおよび対応する構成レジスタ366に書き込まれるべきパラメータをセレクタレジスタ364に書き込む。それに応答して、キャッシュ300は、構成レジスタ366からパラメータを読み取り、それらを関連パーティションIDによって識別される対応するリソース制御パラメータレジスタ320に書き込む。セキュリティ状態がサポートされるとき、セレクタレジスタ364および構成レジスタ366は、どのセットのレジスタがアクセスされるかを選択するメモリトランザクションに関連するセキュリティ表示と共に、セキュア状態およびセキュアでない状態にそれぞれ異なるバージョンが提供されるようにバンクされ得る。
【0097】
リソース制御パラメータを設定するためのそのようなセレクタレジスタ364および構成レジスタ366は、リソース制御パラメータをどのように設定することができるかの一例にすぎないことに留意されたい。このアプローチの利点は、メモリシステム構成要素のアドレス空間の使用量が節約されることである。しかしながら、代替案は、制御設定のアレイがN個の制御設定レジスタのアレイとして公開されるより広いインタフェースを使用することであり、ここでNはサポートされるパーティションIDの最大数である。これは、制御構成が単一書き込みでパーティションに対して更新されることができ、したがって他のプロセッサがメモリシステム構成要素を構成している間に1つのプロセッサがセレクタレジスタ364および構成レジスタ366にアクセスするのを防ぐための相互排除を必要としないという点でより簡単である。例えば、パーティションIDの最大数が216で、一般的なメモリシステム構成要素に2~4個の制御がある場合、このアプローチではリソース制御パラメータのアレイに256KBのアドレス空間を使用してもよい。
【0098】
メモリマッピングされた構成レジスタ360へのアクセスは、例えば、どの動作状態が構成レジスタ360を更新するためのメモリトランザクションを発行できるかを制限するために、MMU70によって制御されてもよい。例えば、EL0で実行される命令は構成レジスタ360にアクセスすることを許可されないかもしれないが、EL2のハイパーバイザは許可されることがある。パーティションIDの仮想化がサポートされる場合、キャッシュ300内で使用されるパーティションIDは物理パーティションIDであり、一方、対応するアプリケーションのパーティションIDに使用されるリソース制御パラメータを設定しようと試みるオペレーティングシステムは仮想パーティションIDを指定し得る。したがって、オペレーティングシステムが誤ったリソース制御パラメータを更新するのを防ぐために、構成レジスタ360にマッピングされたアドレスへのアクセスがトラップされ得、EL2でハイパーバイザに処理を切り替える例外をトリガすることができる。次いで、ハイパーバイザ内の例外ハンドラは、キャッシュ300において関連するパラメータセット320を更新するために、正しい物理パーティションIDを有する対応するメモリトランザクションを発行することができる。これを達成するために、2ステージのMMU変換プロセスにおいて、メモリマッピングされたレジスタ360に関連するアドレスは、メモリシステム構成要素によって使用される他のアドレス空間とは異なるステージ2アドレスページに配置されてもよい。
【0099】
リソース制御分割と同様に、キャッシュ300内の性能監視は、性能監視グループ(およびPMGがパーティションIDのサブプロパティである実施形態ではパーティションID)およびセキュリティ状態に基づいて分割されてもよい。それぞれがその性能モニタ380に対応するフィルタパラメータ382のセットにプログラムされたフィルタに基づいて性能メトリクスを測定、カウント、または計算するように構成可能な、いくつかの性能モニタ380を設けることができる。フィルタパラメータ382は、PARTIDおよびPMGを指定するためにフィールドを含むことができ、メモリトランザクションを受信すると、フィルタパラメータ382がPARTID/PMGフィールドに特定の値を設定している場合、性能モニタは、そのトランザクションに関連するPARTID/PMG値がフィルタパラメータ382に設定された値と一致するかどうかに応じて、そのトランザクションに基づいてそのメトリックを更新するかどうかを決定することができる。割り当て閾値を超えているかどうかを追跡するために割り当てカウンタ326が提供される第1のキャッシュ割り当てモードをサポートする実装形態では、同じ割り当てカウンタ326を性能監視に使用することもできることに留意されたい。
【0100】
キャッシュ300がTLBまたはページウォークキャッシュなどのアドレス変換キャッシュである場合、このようにキャッシュ割り当てリソースを分割することは、1つのソフトウェア実行環境が、割り当てられたパーセンテージ/アドレス変換キャッシュ容量の一部を超えて割り当てられないようにするのに役立ち得、これにより、他のソフトウェア実行環境用の空間を確保し、「ノイジーネイバー(noisy neighbour)」効果を軽減する。
【0101】
図13はキャッシュ300の一例を示しているが、他のメモリシステム構成要素は、所与のパーティションID/性能監視グループ/セキュリティ状態に関連するメモリシステム構成要素パラメータを構成するためのメモリマッピングされた構成レジスタ360、および対応するパーティションIDに対する構成データのセットを指定するためのリソース制御パラメータレジスタ320の類似のセットを有し得る。
【0102】
特に、他のメモリシステム構成要素(例えば、メモリコントローラ24または相互接続14,18など)については、以下の形態のリソース分割のいずれかを実装することができる。
【0103】
メモリチャネル帯域幅分割
メインメモリチャネルの帯域幅は分割されてもよい。2つの帯域幅制御方式が提供されてもよい。メモリチャネルは、以下のうちの一方または両方をオプションで実装できる。
・競合がある場合でも、パーティションが要求する最小帯域幅
・競合がある場合にパーティションに使用可能な最大帯域幅制限
【0104】
これらをサポートするチャネルでは、これらの制御方式の任意の組み合わせを同時に使用できる。各制御方式については、以下のセクションで説明する。
【0105】
最小帯域幅制御方式
最小帯域幅制御方式は、現在の帯域幅が最小値を下回るとパーティション優先度からの要求を出し、最小帯域幅を超えるとその要求が他の通常の要求と競合できるようする。パーティションの最小帯域幅を下回る要求は、チャネルでスケジュールされる可能性が最も高い。最小帯域幅制御方式は、アカウンティング期間中にメモリ帯域幅を追跡する。
・アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を下回っている場合、その要求はチャネル帯域幅を使用するように優先的に選択される。
・アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を超えている場合、その要求は他の通常の優先度要求と競合してチャネルの帯域幅を使用する。
【0106】
アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。メモリシステム構成要素内のレジスタは、所与のパーティションIDに対する最小帯域幅制限を、スケーリングされた1秒あたりのメガバイトとして指定することができる。1秒あたりのメガバイト数のスケール値は、1秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
【0107】
最大帯域幅制限制御方式
最大帯域幅制限制御方式は、アカウンティング期間中にその最大帯域幅制限までパーティションの通常の優先度を与える。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大値を下回っている場合、その要求は通常の優先度でメモリチャネルでのスケジューリングを求めて競合する。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大帯域幅制限を超えている場合、その要求は他の優先度の低い要求と競合してチャネルで帯域幅を使用する。
【0108】
最大帯域幅制限制御方式は、帯域幅使用量が最大帯域幅制限を下回るときにはパーティションの通常の優先度からの要求、帯域幅使用量が最大帯域幅制限を超えるときには通常ではない優先度からの要求を与える。したがって、チャネル帯域幅の競合がない場合、パーティションは最大帯域幅より多くの帯域幅を使用してもよい。パーティションの帯域幅使用量がその上限を下回っているときの帯域幅の要求は通常のプライオリティでスケジュールされるため、競合する要求によっては、パーティションの最大制限を下回る要求帯域幅のすべてがチャネルスケジューラによって許可されるとは限らない。アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。
【0109】
この場合もやはり、最大帯域幅制限のための制御パラメータは、スケーリングされた1秒あたりのメガバイトとして指定され得る。1秒あたりのメガバイト数のスケール値は、1秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
【0110】
最小帯域幅制御方式と最大帯域幅制限制御方式の両方が実装されている場合、次の表は要求の優先度を示している:
【表6】
【0111】
上述したすべての方式について、帯域幅分割方式の制御パラメータはすべて、所与の単位、例えば1秒あたりのメガバイト数で表すことができる。この値は、マイクロ秒あたりに転送されたバイト数にも相当する。実装は、結果として得られる値がパーティションIDのためのメモリシステム構成要素の帯域幅制御レジスタのうちの1つにプログラムされる前に、各帯域幅分割制御パラメータが一定のスケーリングファクタによって乗算されることを必要とし得る。実装が制御パラメータのスケーリングを必要とするかどうか、および必要ならばスケーリングファクタは、メモリシステム構成要素内のディスカバリレジスタ内で指定され得る(上述のキャッシュのディスカバリレジスタ362と同様)。
【0112】
上述したすべてのメモリ帯域幅分割方式について、メモリチャネル帯域幅調整は、アカウンティング期間にわたって起こり得る。アカウンティング期間は固定ウィンドウでも移動ウィンドウでもよい。ウィンドウの幅は、メモリシステム構成要素内のディスカバリレジスタから読み取ることができる発見可能な定数であり得る。例えば、アカウンティング期間は少なくとも1マイクロ秒であり得、最大20マイクロ秒以上であり得る。アカウンティング期間が長いほど、特に移動ウィンドウの実装ではより多くのハードウェアが必要になるが、アカウンティング期間が短いほど、特に固定ウィンドウの実装では、境界効果が大きくなる可能性がある。
【0113】
固定ウィンドウアカウンティングでは、各パーティションがそのパーティションの最小値と最大値に従って帯域幅を取得するように、帯域幅が要求に割り当てられる。要求またはローカルのプライオリティを使用して、帯域幅に関する競合する要求を解決できる。アカウンティングウィンドウの期間に達すると、以前にサービスされたことがない要求のキューを除いて、新しいウィンドウは履歴なしで始まる。新しいウィンドウは、パーティションごとにゼロから帯域幅の累積を開始する。
【0114】
移動ウィンドウアカウンティングでは、移動ウィンドウは、過去のウィンドウ幅で発行されたすべてのコマンドからパーティションごとに帯域幅の履歴を保持する。パーティションごとの帯域幅のアカウンティングのリセットはなく、むしろ、コマンドが処理されたときに帯域幅が追加され、そのコマンドがウィンドウの履歴から移動したときにアカウンティングから削除される。この継続的なアカウンティングは境界効果から比較的自由であるが、固定ウィンドウによって必要とされるパーティションIDごとの帯域幅カウンタに加えてウィンドウ内のコマンドの履歴を追跡するためにより多くのハードウェアを必要とする。
【0115】
すべてのパーティションの最小帯域幅割り当ては、利用可能なものよりも多くの帯域幅になる可能性がある。未使用の割り当てが他のパーティションで使用できるようになっているため、一部のパーティションで帯域幅割り当てが使用されていない場合、これは問題にならない。ただし、最小帯域幅が過剰に割り当てられていると、パーティション用にプログラムされている最小帯域幅が常に満たされるとは限らない。プログラムされた最小帯域幅割り当てがシステムによって確実に配信され得ることを保証するために、ソフトウェアは最小帯域幅が過剰に割り当てられないことを保証することができる。
【0116】
利用可能な帯域幅は、DDRクロックなど、多くのシステムで1つまたは複数のクロック周波数に依存する可能性があるため、利用可能な帯域幅に影響を与えるクロックを変更するときにソフトウェアが帯域幅を再割り当てすることを望むことがある。割り当てを変更せずにクロックレートを下げると、帯域幅が過剰に割り当てられる可能性がある。注:DRAMチャネルで使用可能な帯域幅は一定ではないが、クロックレート、読み取りと書き込みの組み合わせ、およびバンクヒットレートによって異なる。
【0117】
当業者は、説明されたタイプの帯域幅制御がメモリチャネルコントローラにおいてのみ使用されることに限定されず、任意のメモリシステム構成要素において帯域幅を制御するために展開され得ることを理解されよう。
【0118】
プライオリティ分割
このドキュメントに記載されている他のメモリシステムリソースとは異なり、プライオリティはメモリシステムリソースの割り当てに直接影響するのではなく、リソースへのアクセスに関して発生する競合に影響する。適切に設定されたシステムがプライオリティを付けるために性能に大きな影響を与えることはめったにないが、プライオリティは、即時または持続を問わず、オーバーサブスクライブの状況で重要な役割を果たす。したがって、「プライオリティ分割」は、パーティション間のメモリシステムの影響を分離するのに役立つツールとして使用できる。
【0119】
パーティションは、メモリシステム内の各構成要素(プライオリティ分割をサポートする)でプライオリティをアサインされてもよい。この分割制御により、メモリシステムの異なる部分を異なるプライオリティで要求を処理するように設定することが可能になる。例えば、プロセッサからシステムキャッシュへの要求は、システムキャッシュからメインメモリへの要求よりも高い転送プライオリティを使用するように設定されてもよい。
【0120】
パーティションIDごとに2種類のプライオリティが識別され得る。
・内部プライオリティは、このメモリシステム構成要素の内部動作で使用されるプライオリティを制御する。それらを、内部動作を優先するためにメモリシステム構成要素内で使用することができる。例えば、メモリコントローラは、帯域幅の割り当てが明確な勝者を選ばない場合、内部のプライオリティを使用して待機中の要求を選択できる。
・下流プライオリティは、他のメモリシステム構成要素(例えば、相互接続またはメモリコントローラ)に下流で伝達されるプライオリティを制御する。「下流」とは、要求に対する通信方向を指す。「上流」応答は通常、それを生成した要求と同じ転送プライオリティを使用する。メモリシステム構成要素は、プライオリティ分割を有していない下流構成要素にプライオリティを示すために、下流プライオリティを使用する。これは、下流にある相互接続構成要素に転送プライオリティを設定するために使用できる。
【0121】
一方、構成要素がプライオリティの分割を実装していない場合、または下流のプライオリティを実装していない場合は、「スループライオリティ」を使用することが可能であり、下流のプライオリティは着信(上流)プライオリティまたは要求と同じである。同様に、(下流から上流へ)メモリシステム構成要素を通過する応答のプライオリティは、(下流から)受信された応答と同じプライオリティである。
【0122】
より一般的には、一例示的構成によれば、複数のソフトウェア実行環境のうちの1つの命令に応答してデータ処理を実行するための処理回路と;データにアクセスするためのメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素であって、各メモリトランザクションは、前記メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子を指定し、前記少なくとも1つのメモリシステム構成要素は、処理されるメモリトランザクションによって指定された前記パーティション識別子に関連するメモリトランザクション進行パラメータの複数のセットのうちの1つを選択するように構成される、少なくとも1つのメモリシステム構成要素と;前記選択されたセットのメモリトランザクション進行パラメータに依存して前記メモリトランザクションの進行を制御するためのメモリトランザクション進行制御回路と、を備える装置が提供される。
【0123】
上記の例では、いくつかのソフトウェア実行環境がある。これらには、アプリケーション、オペレーティングシステム、仮想マシンなどを含めてもよい。各環境は同じメモリシステムへのアクセスを有する。メモリシステムはメインメモリを含むことができ、また1つまたは複数のキャッシュを含むこともできる。キャッシュ(存在する場合)は、メインメモリ(存在する場合)にアクセスする前に、大きくて遅いキャッシュにアクセスする前に、小さくて速いキャッシュにアクセスするように階層的に配置することができる。いくつかの例では、メモリシステムの一部(または全部)を共有することができ、メモリシステムの一部は特定の構成要素にしか利用できない。メモリシステムからのデータにアクセスする各メモリトランザクションはパーティション識別子を指定する。提供されるパーティション識別子は、メモリトランザクションを発行した環境によって異なる。例えば、各環境はそれ自体のパーティション識別子(またはパーティション識別子)をアサインされてもよく、そのうちの1つは各メモリトランザクションに関して提供される。次に、メモリトランザクション進行制御回路は、トランザクション識別子に関連するメモリトランザクション進行パラメータ(「メモリシステム構成要素分割制御設定」とも呼ばれる)を選択することによって、パーティション識別子に基づいてメモリトランザクションの進行を制御する。このようにして、一連のリソースを直接制御することができる。そうすることで、認識しやすくなり、効果が明確になるように一連のリソースを制御することが可能になり、リソースをソフトウェア環境の測定可能な挙動に関連付けることが可能になる。メモリトランザクション進行制御回路は、別個の装置とすることができ、少なくとも1つのメモリシステム構成要素に接続することができ、あるいは少なくとも1つのメモリシステム構成要素自体とすることができることに留意されたい。
【0124】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、前記メモリトランザクションが処理されるプライオリティを示すためのプライオリティ構成を含む。プライオリティの高いトランザクションは、プライオリティの低いトランザクションよりも重要度が高いため、より迅速に送信される可能性がある。プライオリティはよく数字で表される。しかしながら、「より高い」および「より低い」という用語は、トランザクションの相対的な重要性を指すものであり、トランザクションに関連するいかなる数値も指すものではないことに留意されたい。したがって、プライオリティの高いトランザクションを数値「0」と関連付けることができ、プライオリティの低いトランザクションを数値「9」と関連付けることができる。トランザクションに関連したプライオリティを表現することによって、複数のトランザクションが他の方法でどちらが先に進むことを許可されるべきかに関して結び付けられているときにタイミング競合を解決することが可能である。任意選択で、プライオリティを使用して、トランザクションの解決にリソースを費やすべきかどうか、またはそのトランザクションを他のトランザクションよりも優先させるべき程度を表すこともできる。例えば、いくつかのパーティション識別子と関連したトランザクションを、他のパーティション識別子とのトランザクションよりも早く進行できるようにすることができる。このようにして、延期されるべきではないソフトウェア実行環境は、それらのメモリトランザクションを他のソフトウェア実行環境よりも速く進行させることができる。
【0125】
いくつかの実施形態では、前記プライオリティ構成は内部プライオリティを含み;前記少なくとも1つのメモリシステム構成要素は、前記内部プライオリティで前記メモリトランザクションを処理することになる。内部プライオリティは、少なくとも1つのメモリシステム構成要素自体がメモリトランザクションを処理するプライオリティに関する。いくつかの実施形態では、内部プライオリティは任意の着信プライオリティを置き換える(例えば、それはトランザクションのバスQoSプライオリティに基づいてもよい)。
【0126】
いくつかの実施形態では、前記プライオリティ構成は、前記メモリトランザクションが処理されることになる下流プライオリティを含む。メモリシステム構成要素は通常、例えば、要求されたデータへのアクセスを提供することによって、トランザクションを処理することができるメモリシステム構成要素にトランザクションが到達するまでトランザクションを下流に渡す。典型的なメモリ階層では、下流はメインメモリに向かうと見なすことができる。メモリトランザクションが処理される特定の下流プライオリティを提供することによって、トランザクションがメモリシステムのより多くの要素を通過するときにトランザクションのプライオリティを変更することが可能である。同様に、このようにして、選択を実行したもの以外のメモリシステム構成要素が所与のプライオリティでトランザクションを処理するように制御されることが可能である。下流プライオリティは、いくつかの実施形態では、任意の着信プライオリティをオーバーライドするかまたは置き換えることができる。下流プライオリティはまた、パラメータとしてサービス品質(QoS)のサポートを実施する古いメモリシステム構成要素とインタフェースするためのメカニズムとして使用することができる。
【0127】
あるいは、トランザクションが処理されるプライオリティレベルを特定するのではなく、プライオリティレベルが変更されないままであるべきであると単に述べることが可能である。また、そのような場合、それらの構成要素に能動的に選択を実行させることなくメモリシステム構成要素を制御することが可能である。特に、そのような実施形態では、前記少なくとも1つのメモリシステム構成要素が前記メモリトランザクションを少なくとも1つの他の下流のメモリシステム構成要素に渡すとき、前記トランザクションは、メモリトランザクション進行パラメータの複数のセットのうちの前記1つを選択したメモリシステム構成要素が前記メモリトランザクションを処理したのと同じプライオリティで前記メモリトランザクションを処理するという指示と共に渡される。
【0128】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、各々が前記少なくとも1つのメモリシステム構成要素のうちの1つと関連付けられた複数のプライオリティ構成を含み;前記少なくとも1つのメモリシステム構成要素のそれぞれは、その関連するプライオリティ構成に従って前記メモリトランザクションを処理することになる。このようにして、各メモリシステム構成要素に対して異なるプライオリティ構成を有することが可能であり、それによって、トランザクションがメモリシステムを通って進むにつれてどのように処理されるかについての柔軟性が増す。例えば、一部のアプリケーションでは、同じシステム上の他の競合アプリケーションを考慮すると、短い遅延が許容でき、適切でさえある場合がある。したがって、おそらく近く(上流のメモリシステム構成要素)のそのような実行環境に低いプライオリティをアサインすることが適切である。しかしながら、長い遅延を許容することが望ましくない場合には、他のシステム構成要素に対してより高いプライオリティをアサインすることができる。このようにして、他の実行環境からのメモリトランザクションを優先するために短い遅延が生じる可能性がある。ただし、他のメモリシステム構成要素のプライオリティが高いため、もっと長い遅延は推奨されない。
【0129】
いくつかの実施形態では、前記メモリトランザクション進行パラメータのセットは、前記少なくとも1つのメモリシステム構成要素に関連する制限を含む。制限は、例えば、その少なくとも1つのメモリシステム構成要素に関連するリソースに関して、メモリトランザクションの処理および/または受け渡し中に使い果たされる可能性がある。各パーティションに関連する制限は、実際に実装、プロビジョニング、または割り当てが可能なそのリソースの合計数になる必要はない。実際には、制限の合計が実際の制限を下回ってスラックが発生したり、実際の制限を超えたりする可能性があり、その場合、リソースは競合するパーティション間で共有され、時には、または競合する要求のある条件下では、割り当ての一部が満たされないことがある。そのような共有は等しくてもよいし、割り当てに有利になるように重み付けされてもよく、または最初の要求環境に全体的に割り当てられてもよく、残りは他の要求環境間で共有されてもよい。
【0130】
例えば、いくつかの実施形態では、前記制限は前記少なくとも1つのメモリシステム構成要素の帯域幅制限である。帯域幅は、ある期間にわたって少なくとも1つのメモリシステム構成要素の内外に転送されるデータの量として表すことができる。他の例では、帯域幅は、チャネルの理論上の最大帯域幅のパーセンテージ、または一定期間にわたって測定された転送バイト数、または実際の要求が実際の効率の悪い転送によって消費されたチャネルの理論上の最大帯域幅を消費する機会として表すことができる。現在の帯域幅は、ある期間(例えば、1または複数のマイクロ秒または数分)にわたる表現された帯域幅の測定値と見なすことができる。
【0131】
いくつかの実施形態では、帯域幅制限は最大帯域幅を含むことができる。例えば、いくつかの実施形態では、前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最大帯域幅を超えると、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの帯域幅へのアクセスの優先度を下げる。この(および他のいくつかの)例では、最大帯域幅は絶対的な制限である必要はなく、トランザクションが最大帯域幅を超えていないトランザクションに関連する他のトランザクションよりも帯域幅へのアクセスの優先度が低くなる点である。もちろん、最大帯域幅はパーティション間で異なる可能性があるため、一部のパーティションには他のパーティションよりも多くの帯域幅へのアクセスが与えられる。
【0132】
別の例では、帯域幅制限は最小帯域幅を含むことができる。例えば、いくつかの実施形態では、前記関連パーティション識別子を指定するトランザクションに応答するための前記メモリシステム構成要素の現在の帯域幅使用量が前記最小帯域幅を下回るとき、前記メモリトランザクション進行制御回路は前記関連パーティション識別子を指定するトランザクションの優先度を上げる。そのような例示的実施形態では、最小帯域幅制限は要件としてではなく、パーティションが高い優先度を受ける帯域幅として機能する。利用可能な帯域幅よりも多くのそのような要求がない限り、優先度の高い要求がサービスされることが期待できる。これを達成するために、パーティションが最小帯域幅を満たさなかった場合、そのパーティションを識別するトランザクションは、それらの最小帯域幅を満たしたパーティションを識別するトランザクションよりも高い優先度を与えられる。もちろん、最小帯域幅はパーティション間で異なる可能性があるため、一部のパーティションには他のパーティションよりも多くの帯域幅へのアクセスが与えられる。
【0133】
さらに別の例では、前記帯域幅制限は下限および上限を含み、前記下限は前記上限よりも低く;前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定するトランザクションに応答するために、前記メモリシステム構成要素の現在の帯域幅使用量に基づいて所与のパーティション識別子を指定するトランザクションの優先度を設定し、ここで、前記現在の帯域幅使用量が前記下限を下回るとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を第1のレベルに設定し;前記現在の帯域幅使用量が前記下限と前記上限との間にあるとき、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を前記第1のレベルよりも低い重要度の第2のレベルに設定し;前記現在の帯域幅使用量が前記上限を超える場合、前記メモリトランザクションルーティング制御回路は、前記所与のパーティション識別子を指定する前記トランザクションの優先度を、前記第2のレベルよりも低い重要度の第3のレベルに設定する。そのような実施形態では、少なくとも3つの異なる優先レベル、すなわち第1のレベル、第1のレベルより高い第2のレベル、および第2のレベルより高い第3のレベルが提供される。次に2つの帯域幅制限(最小帯域幅制限と最大帯域幅制限)が提供される。パーティションの最小帯域幅制限が満たされていない場合、そのパーティション識別子を指定するトランザクションには3番目の(より高い)優先度レベルが与えられ、したがって2番目または1番目の優先度を有するトランザクションよりも帯域幅が優先される。そうではなく、パーティションの最大帯域幅制限が満たされていない場合、そのパーティション識別子を指定しているトランザクションには2番目の優先度レベルが与えられ、したがって1番目の優先度を有するトランザクションよりも帯域幅が優先される。そうではなく、パーティションの最大帯域幅制限が満たされている場合、そのパーティション識別子を指定しているトランザクションに1番目の優先度レベルが与えられる。このようにして、パーティションは常にトランザクションを発行できる。ただし、下限(最小)帯域幅制限を満たしていないパーティションは優先され、(最大)帯域幅制限を超えているパーティションは優先されない。
【0134】
いくつかの実施形態において、前記制限は、前記少なくとも1つのメモリシステム構成要素の未処理のトランザクション制限であり;前記少なくとも1つのメモリシステム構成要素は、他のメモリシステム構成要素に対する前記パーティション識別子に関連付けられた未処理のトランザクションの数を前記未処理のトランザクション制限に制限するように構成される。未処理のトランザクションは、メモリシステム構成要素によって転送された(すなわち、下流側の)、結果がまだ返されていないトランザクションであると見なすことができる。このようなトランザクションはしばしば「インフライト」と呼ばれる。これらの実施形態では、各パーティションについて、一定数の「インフライト」トランザクションを許可することができる。制限を超える原因となるトランザクションは、インフライトのトランザクション数が制限を下回るまで「保留」され、その時点でトランザクションは下流に転送される(その結果、未処理/インフライトになる)。これは、後述するように、例えば、カウンタを使用して実施することができる。
【0135】
いくつかの実施形態では、前記少なくとも1つのメモリ構成要素は、発行されたトランザクション用のバッファを備え、前記制限は前記バッファのバッファ深さである。(トランザクションに応答することによって、またはトランザクションをさらに下流に転送することによって)そのメモリシステム構成要素によって処理される前に、メモリシステム構成要素はバッファを使用して(例えば、処理回路またはI/Oによって)複数の着信トランザクションを保持できる。例えば、メモリシステム構成要素の一例である相互接続において、1つまたは複数のバッファが存在し得る。各バッファは、トランザクションの数に関して測定されたそれ自体の深さ(サイズ)を有することができ、各パーティションはそのバッファ内の特定の数のエントリを割り当てられることができる。
【0136】
いくつかの実施形態では、前記制限は、他のトランザクションによってブロックされないように、マスク不可の状態で送信することができるトランザクションの数である。一部のトランザクションは、マスク不可としてマークされる可能性がある。例えば、そのようなトランザクションは、他のトランザクションによってブロックされることができないようなものであり得る。これを使用して「仮想チャネル」を作成できる。他のトランザクションが解決されるのを待つ必要がないため、マスク不可のトランザクションは迅速に解決されることが期待される(おそらく他のマスク不可のトランザクションを除く)。しかし、明らかにすべてのトランザクションがそのようなステータスを有することができるわけではないか、またはステータスが無意味になるかもしれない。したがって、そのようなトランザクションを送信する機能へのアクセスを制限することが望ましい場合がある。
【0137】
制限に対する使用量を決定できる方法はいくつかある。しかしながら、一実施形態では、装置は、前記制限によって制限されたリソースの使用量をカウントするためのカウンタをさらに備え;そして前記カウンタは所定の期間ごとにリセットする。このようなシステムは、「静的ウィンドウ」を提供し、これは、一定期間ごとにリセットされ、制限に対する使用量は各ウィンドウの間にカウントされる。
【0138】
他の実施形態では、前の所定期間にわたって前記制限によって制限されたリソースの使用量をカウントするためのカウンタが提供される。したがって、そのような「フローティングウィンドウ」は、最近の履歴を考慮に入れることによって現在の使用量をより正確に測定するために使用することができる。対照的に、静的ウィンドウは実装が簡単かもしれないが、所定の期間ごとにすべての履歴を失う。
【0139】
図16は、パーティション識別子によって設定された制限に基づいてメモリトランザクションのための優先度を選択するためのプロセスを説明するフローチャート354を示している。ステップ356において、選択された次のトランザクションが分析され、どのパーティション識別子がメモリトランザクションによって参照されているかが決定される。この識別子は、その後、メモリトランザクションパラメータを選択するために使用される。この実施形態では、メモリトランザクションパラメータは帯域幅制限を表す。ステップ358で、現在の帯域幅(すなわち、同じパーティション識別子を有するメモリトランザクションによって使用される帯域幅)が、関連するメモリトランザクションパラメータ内の最小帯域幅制限より小さいかどうかが判定される。もしそうであれば、ステップ360において、パーティションはまだその最小帯域幅割り当てを満たしていないので、優先度は1(高)に設定される。そうでなければ、ステップ362で、現在の帯域幅が関連するメモリトランザクションパラメータ内の最大帯域幅制限より大きいかどうかが判定される。もしそうであれば、ステップ364で、パーティションがそれに割り当てられた最大帯域幅を超えたので、メモリトランザクションの優先度は3(低)に設定される。なお、メモリトランザクションはまだ続行することが許可されているが、低い優先度で処理されるため、優先度の高い他のトランザクションを処理する必要がない場合にのみ続行できる可能性がある。そうでなければ、パーティションはその最小許容量を超えているがその最大許容量を超えていないので、ステップ366でトランザクションは2(中)の優先度を与えられる。このプロセスの結果として、関連付けられたトランザクションに帯域幅へのアクセスが割り当てられていないパーティションでは、現在の帯域幅使用量が減少する。したがって、トランザクションはブロックされないが、その代わりにそれらの帯域幅の消費は遅延する。
【0140】
図17は、トランザクションTを渡すメモリシステムを概略的に示している。トランザクションは、クラスタ相互接続14からシステムオンチップ(SoC)相互接続18に、そしてメモリコントローラ24に渡される。この実施形態では、SoC相互接続18は、トランザクションTによって提供されたパーティション識別子に基づいてメモリトランザクションパラメータの選択を実行する。この実施形態では、SoC相互接続18でのトランザクションの内部処理に対して第1の優先度(1)が提供される。したがって、トランザクションを処理することができるかどうかを判断する際に、SoC相互接続18自体がトランザクションに高い優先度を与える。しかし、SoC相互接続18が、トランザクションを下流に渡す必要があると判断した場合、トランザクションは、第2の優先度(3)と共に渡され、それによってメモリコントローラ24はトランザクションを処理することになる。このようにして、メモリトランザクションパラメータの選択を実行しないメモリシステム構成要素によってトランザクションが処理される優先度を制御することが可能である。
【0141】
図18は、制限に対して使用量を測定する際のカウンタ回路368の使用を概略的に示している。例えば、測定値は未処理のトランザクションに対するものであり得、これは(未処理のトランザクションの)制限と比較される。この実施形態では、選択回路370は、メモリシステム構成要素、すなわちレベル1データキャッシュ8とは別の構成要素として提供される。しかしながら、他の実施形態では、選択回路はメモリシステム構成要素それ自体であり得ることが理解されよう。またこの実施形態では、選択回路370は、各パーティション識別子に関して発行された未処理のトランザクションの数を追跡するためにカウンタ回路368を使用する。この実施形態では、構成要素がトランザクションを前方(すなわち下流)に転送したがそのトランザクションに対する応答をまだ受信していない場合、トランザクションは構成要素によって未処理であると見なされる。その結果、トランザクションが転送されるたびに、そのトランザクションによって指定されたパーティションに関連付けられたカウンタがインクリメントされ、応答が受信されるたびに、関連付けられたパーティション識別子に関するカウンタがデクリメントされる。パーティション識別子を指定する新しいトランザクションが下流に転送される場合、そのパーティション識別子のカウンタをそのパーティション識別子の未処理トランザクションの制限と比較することができる。制限を満たすか超えた場合、カウンタが制限を下回るまでトランザクションは転送されず、これは、未処理のトランザクションの1つがもはや未処理でなくなるように応答が受信されたときに発生する。したがって、トランザクションは転送されずに事実上「保留」になる。
【0142】
上記の例では、カウンタは単純に現在未処理のトランザクション数を追跡する。しかしながら、他の実施形態では、カウンタは期間に関連付けられる。例えば、カウンタおよび制限は、ある期間にわたって転送されたデータに向けられ得る。そのような例示的な実施形態では、カウンタは一定期間ごとにリセットされて「静的ウィンドウ」を提供するか、またはカウンタは前の期間にわたる制限に対して使用量を測定し、それによって「フローティングウィンドウ」を提供することができる。前者の場合、ウィンドウの長さに比べて非常に早く制限に達する可能性があり、これは「バースト性」の挙動を引き起こす可能性がある。後者の場合、前の期間にわたる使用量を測定することによって、少量の割り当てが継続的に解放され、それはより穏やかな/継続的な/予測可能な使用量につながることが予想され得る。
【0143】
図19は、メモリトランザクションのために1つまたは複数のバッファ374,376を使用する、この場合は相互接続であるメモリシステム構成要素372を示している。相互接続は、メモリトランザクションを発行する1つまたは複数のマスタ(M1,M2)が1つまたは複数のスレーブ(S1,S2,S3)にアクセスすることを可能にするために使用され、マスタ間で少なくとも1つのスレーブデバイスが共有される。相互接続は、各マスタにそれぞれ関連付けられた1つまたは複数のバッファ374,376を有し、これらのバッファは、関連するスレーブによって送信/受信/完了され得るまでトランザクションを待つ。バッファストレージの量を、パーティションで使用するための制限まで割り当てることができる。図19では、各トランザクションはそのトランザクションのターゲットスレーブデバイスによって表される。スレーブがビジーであるためにキューの先頭のトランザクションをスレーブに送信できない場合、キュー内のトランザクションは停止またはブロックされる(他のマスタからの別のトランザクションに従事している可能性がある)。例えば、マスタ1のバッファ374内の先頭トランザクションはスレーブS1に向けられる。しかしながら、S1がビジーであれば、トランザクションは進行できず、そのためそのバッファ374内の他のトランザクションはブロックされることになる。一方、第2のマスタM2に関連したバッファ376の先頭のトランザクションは進行することができる。この実施形態では、マスタはプロセッサであり、それぞれが複数の実行環境を提供する。各実行環境は1つのパーティションに関連付けられており、各パーティションには関連付けられたバッファ深度制限がある。またこの実施形態では、マスタ1はS1に向けられた非ブロッキングトランザクション378を実行するように示されている。この実施形態では、非ブロッキングトランザクションは、それが常にバッファの先頭に移動し、さらにブロッキングトランザクションがブロックされることなく直ちに進行できるようにブロッキングトランザクションをキャンセルさせるようなものである。各パーティションに関して発行することができる非ブロッキングトランザクションの数は、各パーティションに関連付けることができる制限の別の例である。
【0144】
相互接続において生じるブロッキング挙動は、本技術を使用して、特に1つまたは複数の仮想チャネルを実装することによって、異なる方法で処理することもできる。仮想チャネルは、まるでそれが別のチャネルであるかのように振舞うトランスポートを提供する。これは、例えば、他のトランザクションによってブロックされないように、一部のトランザクションをマスク不可の状態で送信することによって実装できる。例えば、1つの物理チャネルを2つの仮想チャネルとして扱って、ブロックされている物理チャネルを介さずにブロックされていない仮想チャネルを介してトランザクションを送信する場合は、マスク不可の状態を適用できる。
【0145】
図20は、パーティション識別子に基づいてデータ処理を実行するためのプロセスを説明するフローチャート380を示している。ステップ382において、データにアクセスするためのメモリトランザクションが受信される。ステップ384で、メモリトランザクション進行パラメータは、メモリトランザクションによって指定されたパーティション識別子に従って選択される。ステップ386において、メモリトランザクションの進行は、選択されたメモリトランザクション進行パラメータに応じて制御される。このようにして、各パーティションは、プライオリティまたは帯域幅などの事項を考慮して、そのパーティションによって発行されたトランザクションがメモリシステムを介して進行する方法を制御することができる。
【0146】
本発明の例示的な実施形態を添付の図面を参照しながら本明細書で詳細に説明してきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定されるような本発明の範囲および趣旨から逸脱することなく、当業者によって様々な変更および修正がなされ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20