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

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

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

特許7637685メモリシステム構成要素リソース制御パラメータの更新又は使用の制約
<>
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図1
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図2
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図3
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図4
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図5
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図6
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図7
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図8
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図9
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図10
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図11
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図12
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図13
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図14
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図15
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図16
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図17
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図18
  • 特許-メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-19
(45)【発行日】2025-02-28
(54)【発明の名称】メモリシステム構成要素リソース制御パラメータの更新又は使用の制約
(51)【国際特許分類】
   G06F 12/109 20160101AFI20250220BHJP
   G06F 12/02 20060101ALI20250220BHJP
   G06F 9/50 20060101ALI20250220BHJP
【FI】
G06F12/109 115
G06F12/02 510M
G06F12/109 100
G06F9/50 120A
【請求項の数】 20
(21)【出願番号】P 2022541017
(86)(22)【出願日】2020-12-11
(65)【公表番号】
(43)【公表日】2023-04-03
(86)【国際出願番号】 GB2020053195
(87)【国際公開番号】W WO2021136924
(87)【国際公開日】2021-07-08
【審査請求日】2023-12-04
(31)【優先権主張番号】16/732,654
(32)【優先日】2020-01-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】クルーガー、スティーブン ダグラス
【審査官】田名網 忠雄
(56)【参考文献】
【文献】国際公開第2018/130802(WO,A1)
【文献】特表2017-519308(JP,A)
【文献】特開2013-254357(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/109
G06F 12/02
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
複数のソフトウェア実行環境のうちの1つからの命令を処理するための処理回路と、
前記命令に応答して、前記処理回路によって発行されたメモリトランザクションを処理するためのメモリシステム構成要素と
を備える装置であって、
どのソフトウェア実行環境が前記メモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定する、前記処理回路によって発行されたメモリトランザクションに応答して、前記メモリシステム構成要素は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、前記メモリトランザクションを処理するためのリソースの割り当てを制御する又は前記リソースについての競合を管理するように構成されており、前記選択されたセットは、前記メモリトランザクションによって指定された前記パーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、
前記メモリシステム構成要素は、少なくとも1つのリソース制御パラメータ制約を記憶するためのプログラム可能制約記憶回路を含み、
前記プログラム可能制約記憶回路に記憶された前記少なくとも1つのリソース制御パラメータ制約に基づいて、前記メモリシステム構成要素は、
ターゲットメモリシステム構成要素リソース制御パラメータの更新と、
リソースの前記割り当てを制御するための又は前記リソースについての競合を管理するための、前記ターゲットメモリシステム構成要素リソース制御パラメータの使用と
のうちの少なくとも1つを制約するように構成されている、装置。
【請求項2】
前記処理回路は、動作状態の制限されたサブセットを含む複数の動作状態を有し、前記制限されたサブセットは、前記複数の動作状態のうちの少なくとも1つを含み、
前記プログラム可能制約記憶回路は、動作状態の前記制限されたサブセットのうちの1つにあるときの前記処理回路によって発行された制約更新要求に応答してプログラム可能であり、
前記プログラム可能制約記憶回路のプログラミングは、動作状態の前記制限されたサブセット以外の動作状態にあるときの前記処理回路によって発行された制約更新要求に応答して禁止されている、請求項1に記載の装置。
【請求項3】
前記処理回路は、セキュアドメイン及び低セキュアドメインのうちの1つにおいて動作するように構成されており、前記低セキュアドメインにおいて動作するときに、前記処理回路は、前記セキュアドメインによるアクセスのために確保されたアドレスへのアクセスを禁止するように構成されており、
動作状態の前記制限されたサブセットは、前記処理回路が前記セキュアドメインにおいて動作する少なくとも1つの動作状態を含む、請求項2に記載の装置。
【請求項4】
前記プログラム可能制約記憶回路が、前記少なくとも1つのリソース制御パラメータ制約を新しい値に更新するように再プログラムされており、所与のメモリシステム構成要素リソース制御パラメータの現在の値が、前記少なくとも1つのリソース制御パラメータ制約の前記新しい値によって示された制約に違反するときに、
前記メモリシステム構成要素は、前記少なくとも1つのリソース制御パラメータ制約の前記新しい値によって示された前記制約の前記違反にかかわらず、前記所与のメモリシステム構成要素リソース制御パラメータの前記現在の値を保持するように構成されている、請求項1~3のいずれか一項に記載の装置。
【請求項5】
前記ターゲットメモリシステム構成要素リソース制御パラメータの更新を要求するパラメータ更新要求に応答して、前記メモリシステム構成要素は、前記プログラム可能制約記憶回路に記憶された前記少なくとも1つのリソース制御パラメータ制約に基づいて、前記ターゲットメモリシステム構成要素リソース制御パラメータの前記更新を制約するように構成されている、請求項1~4のいずれか一項に記載の装置。
【請求項6】
前記ターゲットメモリシステム構成要素リソース制御パラメータが新しい値に更新されることを要求する前記パラメータ更新要求に応答して、及び前記新しい値が前記少なくとも1つのリソース制御パラメータ制約に違反するときに、前記メモリシステム構成要素は、前記ターゲットメモリシステム構成要素リソース制御パラメータを、前記少なくとも1つのリソース制御パラメータ制約を満たす値に設定するように構成されている、請求項5に記載の装置。
【請求項7】
前記ターゲットメモリシステム構成要素リソース制御パラメータが新しい値に更新されることを要求する前記パラメータ更新要求に応答して、及び前記新しい値が前記少なくとも1つのリソース制御パラメータ制約に違反するときに、前記メモリシステム構成要素は、エラー報告アクションを実行するように構成されており、
前記エラー報告アクションは、
エラー報告情報をエラー報告記憶要素に記録することと、
割り込みをシグナリングすることと
のうちの少なくとも1つを含む、
請求項5に記載の装置。
【請求項8】
前記ターゲットメモリシステム構成要素リソース制御パラメータが新しい値に更新されることを要求する前記パラメータ更新要求に応答して、及び前記新しい値が前記少なくとも1つのリソース制御パラメータ制約に違反するときに、前記メモリシステム構成要素は、構成記憶要素に記憶されたプログラム可能構成情報に依存して、前記エラー報告アクションを実行するかどうかを選択するように構成されている、請求項7に記載の装置。
【請求項9】
前記処理回路によって発行された前記メモリトランザクションに応答して、及び前記メモリトランザクションが、制約されたタイプのメモリトランザクションであるときに、前記メモリシステム構成要素は、
1つ以上のメモリシステム構成要素リソース制御パラメータの前記選択されたセットにおける所与のリソース制御パラメータが、対応するリソース制御パラメータ制約を満たすときに、前記所与のリソース制御パラメータに基づいて、リソースの前記割り当てを制御し又は前記リソースについての競合を管理し、
前記所与のリソース制御パラメータが、前記対応するリソース制御パラメータ制約に違反するときに、前記対応するリソース制御パラメータ制約に基づいて判定された制約されたリソース制御パラメータに基づいて、リソースの前記割り当てを制御する又は前記リソースについての競合を管理する
ように構成されている、請求項1~8のいずれか一項に記載の装置。
【請求項10】
前記メモリシステム構成要素は、前記メモリトランザクションによって指定された少なくとも1つの識別子に基づいて、前記メモリトランザクションが、前記制約されたタイプのメモリトランザクションであるかどうかを判定するように構成されている、請求項9に記載の装置。
【請求項11】
前記少なくとも1つの識別子は、
前記パーティション識別子と、
前記メモリトランザクションに関連付けられた特権のレベルを示す特権レベル識別子と、
前記メモリトランザクションに関連付けられたセキュリティドメインを示すセキュリティドメイン識別子と、
前記メモリトランザクションが、前記対応するリソース制御パラメータ制約に基づいて制約されることを免除されているかどうかを示す制約免除識別子と
のうちの少なくとも1つを含む、請求項10に記載の装置。
【請求項12】
前記装置が所定の状態にリセットされることを示すリセット信号に応答して、前記プログラム可能制約記憶回路は、前記少なくとも1つのリソース制御パラメータ制約を、1つ以上のメモリシステム構成要素リソース制御パラメータの前記複数のセットの更新又は使用が制約されていないことを示す値にリセットするように構成されている、請求項1~11のいずれか一項に記載の装置。
【請求項13】
所与のメモリシステム構成要素について、1つ以上のメモリシステム構成要素リソース制御パラメータのセットのそれぞれは、対応するパーティション識別子に関連付けられており、部分ベースのリソース割り当て制御パラメータを含み、前記部分ベースのリソース割り当て制御パラメータは、リソースの複数の部分のそれぞれについて、リソースの当該部分が、前記対応するパーティション識別子に関連付けられたソフトウェア実行環境による使用のために割り当てられることが可能にされているかどうかを指定し、
前記少なくとも1つのリソース制御パラメータ制約は、部分ベースの制約を含み、前記部分ベースの制約は、リソースの前記複数の部分のうちの部分のサブセットのそれぞれについて、
前記部分ベースのリソース割り当て制御パラメータが、リソースの当該部分が割り当られることが可能にされているとして示すように更新されることが可能にされているかどうかと、
制約されたタイプのメモリトランザクションのためのリソースの前記割り当てを制御するために前記部分ベースのリソース割り当て制御パラメータを使用するときに、前記部分ベースのリソース割り当て制御パラメータが、リソースの当該部分が割り当られることが可能にされているとして指定する場合でも、前記所与のメモリシステム構成要素が、リソースの当該部分が割り当てられることを防止するべきかどうかと
のうちの少なくとも1つを指定する、請求項1~12のいずれか一項に記載の装置。
【請求項14】
部分の前記サブセットは、リソースの前記複数の部分のうちの少なくとも1つを除外する、請求項13に記載の装置。
【請求項15】
前記部分ベースのリソース割り当て制御パラメータが、リソースの所与の部分が割り当てられることが可能にされていることを示すように更新されることを要求するパラメータ更新要求に応答して、及び前記部分ベースの制約が、前記部分ベースのリソース割り当て制御パラメータが、前記所与の部分が割り当てられることが可能にされているとして示すように更新されることを禁止されていることを、指定するときに、前記所与のメモリシステム構成要素は、リソースの前記所与の部分が割り当てられることを禁止されていることを示すように前記部分ベースのリソース割り当て制御パラメータを設定するように構成されている、請求項13又は14に記載の装置。
【請求項16】
所与のメモリシステム構成要素について、1つ以上のメモリシステム構成要素リソース制御パラメータのセットのそれぞれは、対応するパーティション識別子に関連付けられており、リソース割り当て閾値パラメータを含み、前記リソース割り当て閾値パラメータは、前記対応するパーティション識別子に関連付けられたソフトウェア実行環境について、リソースの割り当て又はリソースについての競合の管理を制御するための最大閾値又は最小閾値を示し、
前記少なくとも1つのリソース制御パラメータ制約は、閾値上限値を示す閾値上限制約を含み、
前記リソース割り当て閾値パラメータの更新を要求するパラメータ更新要求に応答して、前記所与のメモリシステム構成要素は、前記閾値上限制約によって示された前記閾値上限値よりも大きい閾値を、前記最大閾値又は前記最小閾値として示すように前記リソース割り当て閾値パラメータが更新されることを禁止するように構成されていることと、
前記処理回路によって発行された前記メモリトランザクションに応答して、及び前記メモリトランザクションが、制約されたタイプのメモリトランザクションであり、前記リソース割り当て閾値パラメータが、前記閾値上限制約に違反するときに、前記所与のメモリシステム構成要素は、前記閾値上限制約によって示された前記閾値上限値以下の制約された閾値に基づいて、リソースの割り当て又はリソースについての競合の管理を制御するように構成されていることと
のうちの1つ、請求項1~15のいずれか一項に記載の装置。
【請求項17】
前記リソース割り当て閾値パラメータの前記更新を要求する前記パラメータ更新要求に応答して、前記所与のメモリシステム構成要素は、
前記パラメータ更新要求によって指定された新しい閾値と、
前記閾値上限制約によって示された前記閾値上限値と
の最小値を示すように、前記リソース割り当て閾値パラメータを設定するように構成されている、請求項16に記載の装置。
【請求項18】
前記処理回路によって発行された前記メモリトランザクションに応答して、及び前記メモリトランザクションが、制約されたタイプのメモリトランザクションであるときに、前記所与のメモリシステム構成要素は、前記リソース割り当て閾値パラメータによって示された閾値と、前記閾値上限制約によって示された前記閾値上限値との最小値に基づいて、リソースの割り当て又はリソースについての競合の管理を制御するように構成されている、請求項16又は17に記載の装置。
【請求項19】
複数のソフトウェア実行環境のうちの1つからの命令を処理するための手段と、
前記命令に応答して、処理するための前記手段によって発行されたメモリトランザクションを処理するための手段と
を備える装置であって、
どのソフトウェア実行環境が前記メモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定する、処理するための前記手段によって発行されたメモリトランザクションに応答して、メモリトランザクションを処理するための前記手段は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、前記メモリトランザクションを処理するためのリソースの割り当てを制御する又は前記リソースについての競合を管理するように構成されており、前記選択されたセットは、前記メモリトランザクションによって指定された前記パーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、
メモリトランザクションを処理するための前記手段は、少なくとも1つのリソース制御パラメータ制約をプログラム可能に記憶するための手段を含み、
プログラム可能に記憶するための前記手段に記憶された前記少なくとも1つのリソース制御パラメータ制約に基づいて、メモリトランザクションを処理するための前記手段は、
ターゲットメモリシステム構成要素リソース制御パラメータの更新と、
リソースの前記割り当てを制御するための又は前記リソースについての競合を管理するための、前記ターゲットメモリシステム構成要素リソース制御パラメータの使用と
のうちの少なくとも1つを制約するように構成されている、装置。
【請求項20】
複数のソフトウェア実行環境のうちの1つからの命令を処理することと、
前記命令に応答して、発行されたメモリトランザクションを処理することと
を含む方法であって、
どのソフトウェア実行環境が前記メモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定するメモリトランザクションに応答して、メモリシステム構成要素は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、前記メモリトランザクションを処理するためのリソースの割り当てを制御し又は前記リソースについての競合を管理し、前記選択されたセットは、前記メモリトランザクションによって指定された前記パーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、
プログラム可能制約記憶回路に記憶された少なくとも1つのリソース制御パラメータ制約に基づき、
ターゲットメモリシステム構成要素リソース制御パラメータの更新と、
リソースの前記割り当てを制御するための又は前記リソースについての競合を管理するための、前記ターゲットメモリシステム構成要素リソース制御パラメータの使用と
のうちの少なくとも1つを制約する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
アプリケーション又は仮想マシンなどの2つ以上のソフトウェア実行環境は、ソフトウェア実行環境間で共有された共通のメモリシステムへのアクセスを有する同じデータ処理システムにおいて実行され得る。いくつかのシステムについては、1つのソフトウェア実行環境の性能が、共有されたメモリシステムにおいて多くのリソースを使用しすぎる別のソフトウェア実行環境に起因して抑止されないことが重要であり得る。この問題は、「ノイジーネイバー(noisy neighbour)」問題と称され得、例えば、企業ネットワーキング又はサーバシステムについて特に重要であり得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
少なくともいくつかの例は、複数のソフトウェア実行環境のうちの1つからの命令を処理するための処理回路と、命令に応答して、処理回路によって発行されたメモリトランザクションを処理するためのメモリシステム構成要素とを備える装置であって、どのソフトウェア実行環境がメモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定する、処理回路によって発行されたメモリトランザクションに応答して、メモリシステム構成要素は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、メモリトランザクションを処理するためのリソースの割り当て(allocation)を制御する又は該リソースについての競合を管理するように構成されており、該選択されたセットは、メモリトランザクションによって指定されたパーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、メモリシステム構成要素は、少なくとも1つのリソース制御パラメータ制約を記憶するためのプログラム可能制約記憶回路を含み、該プログラム可能制約記憶回路に記憶された該少なくとも1つのリソース制御パラメータ制約に基づいて、メモリシステム構成要素は、ターゲットメモリシステム構成要素リソース制御パラメータの更新と、リソースの該割り当てを制御するための又は該リソースについての競合を管理するための、ターゲットメモリシステム構成要素リソース制御パラメータの使用とのうちの少なくとも1つを制約するように構成されている、装置を提供する。
【0004】
少なくともいくつかの例は、複数のソフトウェア実行環境のうちの1つからの命令を処理するための手段と、命令に応答して、処理するための手段によって発行されたメモリトランザクションを処理するための手段とを備える装置であって、どのソフトウェア実行環境がメモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定する、処理するための手段によって発行されたメモリトランザクションに応答して、メモリトランザクションを処理するための手段は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、メモリトランザクションを処理するためのリソースの割り当てを制御する又は該リソースについての競合を管理するように構成されており、該選択されたセットは、メモリトランザクションによって指定されたパーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、メモリトランザクションを処理するための手段は、少なくとも1つのリソース制御パラメータ制約をプログラム可能に記憶するための手段を含み、プログラム可能に記憶するための該手段に記憶された該少なくとも1つのリソース制御パラメータ制約に基づいて、メモリトランザクションを処理するための手段は、ターゲットメモリシステム構成要素リソース制御パラメータの更新と、リソースの該割り当てを制御するための又は該リソースについての競合を管理するための、ターゲットメモリシステム構成要素リソース制御パラメータの使用とのうちの少なくとも1つを制約するように構成されている、装置を提供する。
【0005】
少なくともいくつかの例は、複数のソフトウェア実行環境のうちの1つからの命令を処理することと、命令に応答して、発行されたメモリトランザクションを処理することとを含む方法であって、どのソフトウェア実行環境がメモリトランザクションを発行させたかに依存して選択されたパーティション識別子を指定するメモリトランザクションに応答して、メモリシステム構成要素は、1つ以上のメモリシステム構成要素リソース制御パラメータの選択されたセットに依存して、メモリトランザクションを処理するためのリソースの割り当てを制御し又は該リソースについての競合を管理し、該選択されたセットは、メモリトランザクションによって指定されたパーティション識別子に依存して、1つ以上のメモリシステム構成要素リソース制御パラメータの複数のセットのうちから選択され、プログラム可能制約記憶回路に記憶された少なくとも1つのリソース制御パラメータ制約に基づき、ターゲットメモリシステム構成要素リソース制御パラメータの更新と、リソースの該割り当てを制御するための又は該リソースについての競合を管理するための、ターゲットメモリシステム構成要素リソース制御パラメータの使用とのうちの少なくとも1つを制約する、方法を提供する。
【0006】
本技法の更なる態様、特徴、及び利点は、添付の図面と共に読まれる以下の例の説明から明らかになる。
【図面の簡単な説明】
【0007】
図1図1は、メモリシステムを備えるデータ処理システムの一例を概略的に示す図である。
図2図2は、メモリトランザクションに関連付けられたソフトウェア実行環境に割り当てられたパーティション識別子に依存する、メモリシステムリソースのパーティショニング制御の一例を概略的に示す図である。
図3図3は、パーティション識別子を指定するメモリトランザクションを発行するための処理回路の一例を概略的に示す図である。
図4図4は、処理回路によって実行される異なるソフトウェア実行環境の一例を示す図である。
図5図5は、パーティション識別子を異なるソフトウェア実行環境に割り当てる一例を示す図である。
図6図6は、メモリアクセス要求で指定されたパーティション識別子に基づいて選択された少なくとも1つのメモリシステム構成要素リソース制御パラメータを使用してメモリシステムリソースを制御する一例を示す図である。
図7図7は、メモリシステム構成要素リソース制御パラメータを更新するためのプログラミングインタフェースを示す図である。
図8図8は、メモリシステム構成要素におけるメモリトランザクションに応答する方法を示すフロー図である。
図9図9は、パーティション識別子に依存してキャッシュリソースの割り当てを制御し、及び/又はパーティション識別子に基づいて選択された性能監視データを更新するキャッシュの一例を示す図である。
図10図10は、パーティション識別子に依存して選択された容量閾値に依存してキャッシュへの割り当てを制御する方法を示すフロー図である。
図11図11は、データが、パーティション識別子に依存してキャッシュのどの部分に割り当てられ得るかを制御する一例を示す図である。
図12図12は、少なくとも1つのリソース制御パラメータ制約を記憶するためのプログラム可能制約記憶回路を有するメモリシステム構成要素の一例を示す図である。
図13図13は、リソース制御パラメータ制約をプログラムする方法を示すフロー図である。
図14図14は、リソース制御パラメータ制約に基づいてメモリシステム構成要素リソース制御パラメータの更新を制御する方法を示すフロー図である。
図15図15は、部分ベースのリソース割り当て制御パラメータについてのリソース制御パラメータ更新制約の一例を示す図である。
図16図16は、メモリシステム構成要素リソース制御パラメータの一例として提供されているフラクションベースの容量閾値についてのリソース制御パラメータ更新制約セットの一例を示す。
図17図17は、最制約を最小帯域幅閾値及び最大帯域幅閾値に適用する一例を示す図である。
図18図18は、リソース制御パラメータ制約が、メモリトランザクションのためのリソース割り当て又は競合管理を制御するためにリソース制御パラメータを使用する時に適用される方法を示すフロー図である。
図19図19は、トランザクションがリソース制御パラメータの制約を受けるかどうかを判定するために使用され得るメモリトランザクションによって指定された識別子の一例を示す。
【発明を実施するための形態】
【0008】
装置は、いくつかのソフトウェア実行環境のうちの1つからの命令を処理するための処理回路と、命令に応答して、処理回路によって発行されたメモリトランザクションを処理するためのメモリシステム構成要素とを有してもよい。メモリトランザクションには、どのソフトウェア実行環境がメモリトランザクションを発行されたかに依存して選択されるパーティション識別子が割り当てられ得る(assign)。メモリシステム構成要素は、パーティション識別子に基づいて選択されたメモリシステム構成要素パラメータのセットに依存して、リソースの割り当て又はリソースについての競合の管理を制御するためにパーティション識別子を使用することができる。また、パーティション識別子は、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御するために使用され得る。
【0009】
したがって、処理回路は、どのソフトウェアがメモリトランザクションを発行したかに依存して、トランザクションについてのラベルとしてパーティション識別子を提示してもよい。これは、上記のノイジーネイバー問題に対処するために、メモリシステムにおけるリソースが、1つのソフトウェア実行環境が当該ソフトウェア実行環境の公正なリソース配分よりも多くを取ることを回避するために、ソフトウェア実行環境間でパーティショニングされ得ることを意味する。
【0010】
しかしながら、2つ以上のソフトウェア実行環境があり得ることが可能であり、2つ以上のソフトウェア実行環境は、メモリシステム構成要素パラメータのセットのそれぞれの設定を制御することが可能にされており、メモリシステム構成要素パラメータのセットのそれぞれは、対応するパーティション識別子について、リソースの割り当てを制御するために又はリソースについての競合を管理するためにメモリシステム構成要素によって使用される。したがって、1つのソフトウェア実行環境は、別のパーティション識別子に関連付けられたソフトウェア実行環境よりも大きいリソース配分を、1つのパーティション識別子に関連付けられたソフトウェア実行環境に認可するように、メモリシステム構成要素パラメータのセットのそれぞれを設定することができるが、これは、別の制御ソフトウェア実行環境が、その後、異なるリソース配分を提供するようにメモリシステム構成要素パラメータを更新することが可能である場合に、効果的でないことがある。これは、より大きいリソース配分が割り当てられると期待されたソフトウェア実行環境の実行を損ない得る。
【0011】
例えば、一ユースケースでは、第1の制御ソフトウェア実行環境は、他のプロセスによって使用されるべきではないリアルタイムプロセスによる使用のためのリソースの専用部分を割り当てるようにメモリシステム構成要素パラメータをプログラムすることができる。これは、リアルタイムプロセスによって実行されるある動作について期待された最大時間の保証を提供することを助長することができる。しかしながら、次いで、第2の制御ソフトウェア実行環境が、その後、他の非リアルタイムプロセスが専用リソースにアクセスすることを可能にするようにメモリシステム構成要素パラメータを変更する場合に、これは、リアルタイムソフトウェア実行環境によって期待された専用使用に違反し得、これは、リアルタイム処理がリアルタイム処理のリアルタイム保証を満たすことをより困難にし得る。同様の問題は、制御設定をプログラムするセキュアソフトウェアと非セキュアソフトウェアとの間で起こり得、この問題において、セキュアソフトウェアからのデータへのセキュアアクセスを実施するために使用されるリソースパーティショニングは、別のプロセスが、非セキュアソフトウェアがセキュアソフトウェアについて割り当てられると期待されたリソースにアクセスすることを可能にするために、メモリシステム構成要素パラメータを上書きすることが可能である場合にのみ、損なわれ得る。
【0012】
後述の技法では、メモリシステム構成要素(Memory System Component、MSC)には、少なくとも1つのリソース制御パラメータ制約を記憶するためのプログラム可能制約記憶回路が設けられており、少なくとも1つのリソース制御パラメータ制約は、ターゲットメモリシステム構成要素リソース制御パラメータの更新又は使用を制約するために使用され得る。したがって、リソース制御パラメータ制約は、(i)所与のMSCについて維持されたリソース制御パラメータに行われることが可能にされた更新、及び/又は(ii)リソースの割り当てを制御するために又はリソースについての競合を管理するために、メモリトランザクションの処理時に使用されるリソース制御パラメータの有効値のある限界(bound)を実施する方法を提供する。これは、前述の問題に対処することができ、リソース制御パラメータのあるセットが確立されると、別の制御ソフトウェア実行環境が、プログラム可能制約記憶回路において指定された限界外でこれらのパラメータを変更することが可能でなく(又は、パラメータが限界を超えて変更された場合に、当該これらの更新されたパラメータが、使用時に観察されず)、このため、以前に設定されたリソース制御パラメータが、尊重され得ることを確実にする(assurance)ことができる。
【0013】
このようなリソース制御パラメータ制約の使用についてより詳細に考察する前に、最初に、ソフトウェア実行環境についてパーティション識別子を設定するための、並びにメモリシステムにおけるリソース割り当て若しくは管理及び/又は性能監視を制御するためにこれらのパーティション識別子を使用するための全般的なアーキテクチャについて説明する。全般的なアーキテクチャの説明の後に、リソース制御パラメータ制約に基づいてメモリシステム構成要素リソース制御パラメータの更新又は使用を制御する特徴について、「リソース制御パラメータ制約」の項で考察する。
【0014】
メモリリソース及び性能監視パーティショニングのための全般的なアーキテクチャ
図1は、N個(Nは1以上である)の処理クラスタ4を含むデータ処理システム2の一例を概略的に示し、処理クラスタのそれぞれは、中央処理ユニット(Central Processing Unit、CPU)又はグラフィック処理ユニット(Graphics Processing Unit、GPU)などの1つ以上の処理ユニット6を含む。処理ユニット6のそれぞれは、少なくとも1つのキャッシュ、例えば、レベル1データキャッシュ8、レベル1命令キャッシュ10、及び共有レベル2キャッシュ12などを有してもよい。これは、単に、可能なキャッシュ階層の一例であり、他のキャッシュ配置が使用され得ることを理解されよう。同じクラスタ内の処理ユニット6は、クラスタ相互接続14によって結合されている。クラスタ相互接続は、処理ユニットのうちのいずれかにアクセス可能なデータをキャッシュするためのクラスタキャッシュ16を有することができる。
【0015】
システムオンチップ(System on Chip、SoC)相互接続18は、N個のクラスタと、(ディスプレイコントローラ又は直接メモリアクセス(Direct Memory Access、DMA)コントローラなどの)任意の他のマスタデバイス22とを結合する。SoC相互接続は、SoC相互接続に接続されたマスタのうちのいずれかにアクセス可能なデータをキャッシュするためのシステムキャッシュ20を有することができる。SoC相互接続18は、任意の既知のコヒーレンシプロトコルに従って、キャッシュ8、10、12、16、20のそれぞれ間のコヒーレンシを制御する。SoC相互接続はまた、1つ以上のメモリコントローラ24に結合されており、1つ以上のメモリコントローラ24のそれぞれは、DRAM又はSRAMなどの対応するメモリ25へのアクセスを制御する。SoC相互接続18はまた、トランザクションを、暗号化/解読機能を提供するための暗号ユニットなどの他のスレーブデバイスに導くことができる。
【0016】
したがって、データ処理システム2は、処理ユニット6及び他のマスタデバイス22によって発行されたトランザクションに応答してデータを記憶しデータへのアクセスを提供するためのメモリシステムを備える。キャッシュ8、10、12、16、20、相互接続14、18、メモリコントローラ24、及びメモリデバイス25はそれぞれ、メモリシステムの構成要素と見なされ得る。メモリシステム構成要素の他の例は、メモリ管理ユニット又は変換ルックアサイドバッファ(いずれかは、処理ユニット6自体内にある、又はシステム相互接続18内若しくはメモリシステムの別の部分内の更に下にある)を含んでもよく、メモリ管理ユニット又は変換ルックアサイドバッファは、メモリにアクセスするために使用されるメモリアドレスを変換するために使用され、このため、メモリシステムの一部分と見なされ得る。概して、メモリシステム構成要素は、メモリデータにアクセスするためにメモリトランザクションをサービス提供するために、又はこれらのメモリトランザクションの処理を制御するために使用されるデータ処理システムの任意の構成要素を含むことができる。
【0017】
メモリシステムは、メモリトランザクションを処理するために使用可能な様々なリソースを有することができる。例えば、キャッシュ8、10、12、16、20は、データ又は命令がメインメモリ25からフェッチされる必要がある場合よりもデータ又は命令へのより速いアクセスを提供するために、プロセッサ6のうちの1つにおいて実行する所与のソフトウェア実行環境によって必要とされるデータをキャッシュするために使用可能な記憶容量を有する。同様に、MMU/TLBは、アドレス変換データをキャッシュするために使用可能な容量を有することができる。また、相互接続14、18、メモリコントローラ24、及びメモリデバイス25はそれぞれ、メモリトランザクションを処理するために使用可能な帯域幅のある量を有することができる。
【0018】
処理要素6において実行する複数のソフトウェア実行環境がメモリシステムへのアクセスを共有するときに、他の実行環境が性能の損失を感知することを防止するために、1つのソフトウェア実行環境が当該ソフトウェア実行環境の公正なリソース配分よりも多くを使用することを防止することが望ましいことがある。これは、メモリ容量の所与の量と相互作用する独立したソフトウェアプロセスの数を増加させることによって設備投資を低減する要求の増加があるデータセンタ(サーバ)アプリケーションが、データセンタサーバの使用を増加させるために、特に重要であり得る。しかしながら、ウェブアプリケーションテール待ち時間目標を満たす要求が依然としてあり、このため、サーバにおいて実行する1つのプロセスが、他のプロセスが損なわれる程度にメモリシステムリソースを独占することができる場合に、これは望ましくない。同様に、ネットワーキングアプリケーションについては、以前に別個のSoCにあった複数の機能を単一のSoCに組み合わせることがますます一般的である。再び、これは、ソフトウェア実行環境間の性能相互作用を限ることへの希求、及びソフトウェア実行環境が、性能相互作用を限りつつ、これらの独立したプロセスが共有メモリにアクセスすることをどのように可能にする必要があるかを監視することへの希求につながる。
【0019】
図2は、対応するメモリトランザクションを発行するソフトウェア実行環境に依存してメモリシステムリソースの割り当ての制御をパーティショニングする一例を概略的に示す。この文脈において、ソフトウェア実行環境は、データ処理システム内の処理ユニットによって実行されるプロセス又はプロセスの一部分であり得る。例えば、ソフトウェア実行環境は、アプリケーション、ゲストオペレーティングシステム若しくは仮想マシン、ホストオペレーティングシステム若しくはハイパーバイザ、システムの異なるセキュリティ状態を管理するためのセキュリティモニタプログラム、又はこれらのタイプのプロセスのうちのいずれかのサブ部分を含んでもよい(例えば、単一の仮想マシンは、別個のソフトウェア実行環境として考えられる異なる部分を有してもよい)。図2に示すように、ソフトウェア実行環境のそれぞれには、所与のパーティション識別子30が割り当てられてもよく、所与のパーティション識別子30は、当該ソフトウェア実行環境に関連付けられたメモリトランザクションと共にメモリシステム構成要素に渡される。
【0020】
メモリシステム構成要素内では、リソース割り当て又は競合解決動作は、パーティション識別子に基づいて選択されたメモリシステム構成要素パラメータのいくつかのセットのうちの1つに基づいて制御され得る。例えば、図2に示すように、ソフトウェア実行環境のそれぞれには、割り当て閾値が割り当てられてもよく、割り当て閾値は、当該ソフトウェア実行環境に関連付けられたデータ/命令について割り当てられ得るキャッシュ容量の最大量を表し、所与のトランザクションをサービス提供するときの関連する割り当て閾値は、トランザクションに関連付けられたパーティション識別子に基づいて選択される。例えば、図2では、パーティション識別子0に関連付けられたトランザクションは、データを、キャッシュの記憶容量の50%まで割り当てることができ、他の目的に使用可能なキャッシュの少なくとも50%を残す。
【0021】
同様に、メモリトランザクションをサービス提供するために使用可能な帯域幅の有限量を有するメモリコントローラ24などのメモリシステム構成要素において、最小帯域幅閾値及び/又は最大帯域幅閾値は、パーティション識別子のそれぞれについて指定され得る。所与の期間内で、所与のパーティション識別子が帯域幅の最小量未満の量を使用したことを指定するメモリトランザクション場合に、当該パーティション識別子に関連付けられたメモリトランザクションは優先され得、最大帯域幅が、同じパーティション識別子を指定するトランザクションのために既に使用された又は超えられた場合に、低減された優先度(priority)はメモリトランザクションのために使用され得る。
【0022】
これらの制御スキームについて、以下でより詳細に考察する。これらは、単に、メモリシステムリソースの制御が、対応するトランザクションを発行したソフトウェア実行環境に基づいてパーティショニングされ得る方法の2つの例であることが理解されよう。概して、異なるプロセスが、メモリシステムによって提供されたリソースの異なるパーティショニングされた部分を「見る(see)」ことを可能にすることによって、これは、プロセス間の性能相互作用が、前述の問題に対処することを助長するために限られることを可能にする。
【0023】
同様に、メモリトランザクションに関連付けられたパーティション識別子は、メモリシステム内の性能監視をパーティショニングするために使用され得、このため、性能監視データの別個のセットは、所与のソフトウェア実行環境(又はソフトウェア実行環境のグループ)に特有の情報が識別されることを可能にするために、パーティション識別子のそれぞれについて追跡され得、このため、潜在的な性能相互作用のソースは、性能監視データが全てのソフトウェア実行環境にわたって全体として記録された場合よりも容易に識別され得る。これは、潜在的な性能相互作用影響を診断することを助長することができ、可能な解決策の識別を助長することができる。
【0024】
パーティション識別子の設定を制御し、対応するソフトウェア実行環境について設定されたパーティション識別子に基づいてメモリトランザクションのラベル付けをし、パーティション識別子をメモリシステムにルーティングし、メモリシステムにおけるメモリシステム構成要素におけるパーティションベースの制御を提供するためのアーキテクチャについて、以下で考察する。このアーキテクチャは、パーティション識別子のための広範囲な使用へスケーラブルである。パーティション識別子の使用は、メモリシステムの既存のアーキテクチャのセマンティクスを変更することなく、当該セマンティクス上の層であることが意図されており、このため、メモリシステムによって使用されている特定のメモリプロトコルによって課されるメモリトランザクションのアドレス指定、コヒーレンス、及び必要とされる順序付けは、リソース/性能監視パーティショニングによって影響されない。パーティション識別子を使用してリソース割り当てを制御するときに、これは、所与のソフトウェア実行環境についてメモリトランザクションをサービス提供するときに達成される性能に影響し得るが、これは、アーキテクチャに有効な計算の結果に影響しない。すなわち、パーティション識別子は、メモリトランザクションの成果又は結果(例えば、どのデータがアクセスされるか)を変更しないが、単に、当該メモリトランザクションについて達成されるタイミング又は性能に影響する。
【0025】
図3は、処理ユニット6の一例をより詳細に概略的に示す。プロセッサは、いくつかのパイプラインステージを含む処理パイプラインを含み、いくつかのパイプラインステージは、命令を命令キャッシュ10からフェッチするためのフェッチステージ40と、フェッチされた命令を復号するための復号ステージ42と、命令のオペランドが使用可能になるのを待機する間に命令の待ち行列を作成し(queueing)、オペランドが使用可能であるときに実行のための命令を発行するための発行キュー46を含む発行ステージ44と、対応する処理動作を実行するために異なるクラスの命令を実行するためのいくつかの実行ユニット50を含む実行ステージ48と、処理動作の結果をデータレジスタ54に書き込むための書き戻しステージ52とを含む。データ処理動作のためのソースオペランドは、実行ステージ48によってレジスタ54から読み取られてもよい。この例では、実行ステージ48は、算術演算又は論理演算を実行するための算術/論理ユニット(Arithmetic/Logic Unit、ALU)と、浮動小数点値を使用して演算を実行するための浮動小数点(Floating Point、FP)ユニットと、データをメモリシステムからレジスタ54にロードするためのロード動作、又はデータをレジスタ54からメモリシステムに記憶するためのストア動作を実行するためのロード/ストアユニットとを含む。これらは、単に、可能な実行ユニットのいくつかの例であり、他のタイプが設けられてもよいことが理解されよう。同様に、他の例は、パイプラインステージの異なる構成を有することができる。例えば、順不同のプロセッサ(out-of-order processor)において、命令によって指定されたアーキテクチャのレジスタ指定子を、ハードウェアに設けられた物理レジスタ指定子識別レジスタ54に再マッピングするための追加のレジスタリネーミングステージが設けられてもよく、命令がキャッシュ10からフェッチされた順序へ異なる順序で実行された命令の実行及びコミットを追跡するためのリオーダバッファ。同様に、図1に示されていない他の機構がまた、設けられてもよく、例えば、分岐予測機能は、分岐命令の予測された成果に基づいて、次のフェッチアドレス61の生成を制御するためにフェッチステージで設けられてもよい。
【0026】
プロセッサ6は、いくつかの制御レジスタ60を有し、いくつかの制御レジスタ60は、例えば、実行されているプログラムの現在の実行時点を示すプログラムカウンタを記憶するためのプログラムカウンタレジスタ62と、プロセッサが命令を実行している現在の例外レベルの指示を記憶するための例外レベルレジスタ64と、プロセッサが非セキュア状態又はセキュア状態にあるかの指示を記憶するためのセキュリティ状態レジスタ66と、メモリシステムリソース及び性能監視パーティショニングを制御するためのメモリパーティショニング及び監視(Memory Partitioning And Monitoring、MPAM)制御レジスタ68(MPAM制御レジスタについて、以下でより詳細に考察する)とを含む。他の制御レジスタがまた、設けられてもよいことが理解されよう。プログラムカウンタレジスタ62は、フェッチステージ40によって維持されているとして図3に示されているが、プログラムカウンタレジスタ62はまた、他のステージ、例えば、実行ステージ48にアクセス可能であり得る。
【0027】
プロセッサは、メモリトランザクションに応答してメモリシステムへのアクセスを制御するためのメモリ管理ユニット(Memory Management Unit、MMU)70を有する。例えば、ロード又はストア命令に遭遇したときに、ロード/ストアユニットは、仮想アドレスを指定する対応するメモリトランザクションを発行する。仮想アドレスは、メモリ管理ユニット(MMU)70に提供され、MMU 70は、1つ以上の変換ルックアサイドバッファ(Translation Lookaside Buffer、TLB)72、73、74に記憶されたアドレスマッピングデータを使用して、仮想アドレスを物理アドレスに変換する。TLBは、ロード/ストアユニット50によって開始されるデータアクセスのためのレベル-1 TLBとして作用するデータTLB 74と、フェッチステージ40によって開始される命令フェッチアクセスのためのレベル-1 TLBとして作用する命令TLB 73と、命令及びデータアクセスの両方のための共有レベル-2 TLBとして作用する主TLB 72とを含み得、主TLB 72は、レベル-1 TLB 73、74におけるミスにおいてアクセスされる。TLB 72~74のそれぞれは、いくつかのTLBエントリを記憶する。TLBエントリのそれぞれは、アドレスをどのように変換するかを識別するマッピングデータのみでなく、関連付けられたアクセス許可データも識別してもよく、関連付けられたアクセス許可データは、プロセッサが、アドレス空間の対応するページにおけるアドレスを読み取る又は当該アドレスに書き込むことが可能にされているかどうかを定義する。いくつかの例では、アドレス変換の複数のステージがあってもよく、このため、複数のTLB、例えば、ロード/ストアユニット50によって生成された仮想アドレスを中間物理アドレスにマッピングするための変換の第1のステージを提供するステージ1 TLB、及び中間物理アドレスを、アクセスされるデータを識別するためにメモリシステムによって使用される物理アドレスにマッピングするための変換の第2のステージを提供するステージ2 TLBがあってもよい。ステージ1 TLBについてのマッピングデータは、オペレーティングシステムの制御下で設定され得、ステージ2 TLBについてのマッピングデータは、例えば仮想化をサポートするために、ハイパーバイザの制御下で設定され得る。図3に示すTLBの配置は、単に一例であり、他の実装は、TLBの異なるセットを有することができることが理解されよう。
【0028】
TLB 72、73、74に加えて、MMUはまた、ページテーブルウォーク中にTLBにロードされるマッピングデータを識別するために使用されるデータをキャッシュするためのページウォークキャッシュ75などの他のタイプのキャッシュも含むことができる。メモリシステムは、仮想メモリアドレス空間のページのそれぞれについて、アドレスマッピングデータを指定するページテーブルを記憶することができる。TLB 72、73、74は、最近アクセスされたいくつかのページについて、これらのページテーブルエントリのサブセットをキャッシュすることができる。プロセッサが、メモリトランザクションを、TLB 72、73、74に記憶された対応するアドレスマッピングデータを有さないページに発行した場合に、ページテーブルウォークが、ページテーブルウォークユニット76によって開始される。必要とされるページについてアドレスマッピングエントリを識別するためにメモリをトラバースするためのページテーブルの複数のレベルがあり得るため、これは、比較的に遅いことがある。ページテーブルウォークをスピードアップするために、ページテーブルの最近アクセスされたページテーブルエントリは、ページウォークキャッシュ75に置かれ得る。これらは、典型的には、必要とされるページについてのマッピングを実際に指定する最終レベルページテーブルエントリ以外のページテーブルエントリである。これらのより高いレベルページテーブルエントリは、典型的には、アドレスの対応する範囲についての他のページテーブルエントリがメモリにおいてどこに見出され得るかを指定する。前のページテーブルウォークにおいてトラバースされたページテーブルの少なくともいくつかのレベルをページウォークキャッシュ75にキャッシュすることによって、ページテーブルウォークの同じ初期部分を共有する他のアドレスについてのページテーブルウォークは、より速くされ得る。代替として、ページテーブルエントリ自体をキャッシュするのではなく、ページウォークキャッシュ75は、これらのページテーブルエントリがメモリにおいて見出され得るアドレスをキャッシュすることができ、このため、再び、所与のページテーブルエントリは、これらのアドレスが、メモリにおける他のページテーブルエントリに最初にアクセスすることによって識別される必要がある場合よりも速くアクセスされ得る。
【0029】
図4は、プロセッサ6によって実行され得る異なるソフトウェア実行環境の一例を示す。この例では、アーキテクチャは、特権レベルが増加する4つの異なる例外レベルEL0からEL3をサポートする(このため、EL3は、最も高い特権例外レベルを有し、EL0は、最も低い特権例外レベルを有する)。概して、より高い特権レベルは、より低い特権レベルよりも大きい特権を有し、このため、少なくともあるデータにアクセスすることができ、及び/又はより低い特権レベルに使用可能でないいくつかの処理動作を実施することができる。アプリケーション80は、最も低い特権レベルEL0で実行される。いくつかのゲストオペレーティングシステム82は、特権レベルEL1で実行され、ゲストオペレーティングシステム82のそれぞれは、1つ以上のアプリケーション80をEL0で管理する。ハイパーバイザ又はホストオペレーティングシステムとしても知られている仮想マシンモニタ84は、例外レベルEL2で実行され、ゲストオペレーティングシステム82のそれぞれの仮想化を管理する。EL0でのいくつかのアプリケーションは、EL1での介在するオペレーティングシステムなしで、EL2でのホストオペレーティングシステムによって直接管理され得ることが可能である。
【0030】
より低い例外レベルからより高い例外レベルへの移行は、例外事象によって引き起こされ得(例えば、ハイパーバイザ又はホストオペレーティングシステムによって処理されることが必要とされる事象は、EL2への移行を引き起こし得る)、より低いレベルに戻る移行は、例外事象の処理からの復帰によって引き起こし得る。いくつかのタイプの例外事象は、当該例外事象が取られるレベルと同じ例外レベルでサービス提供され得、他のタイプの例外事象は、より高い例外状態への移行をトリガし得る。現在の例外レベルレジスタ64は、処理回路6が、例外レベルEL0~EL3のうちのどれで、コードを現在実行しているかを示す。
【0031】
この例では、システムはまた、セキュアドメイン90と通常(低セキュア)ドメイン92との間のパーティショニングをサポートする。機微なデータ又は命令は、当該データ又は命令を、セキュアドメイン90のみにアクセス可能であるとマーク付けされたメモリアドレスに割り当てることによって保護され得、プロセッサは、低セキュアドメイン92において実行するプロセスがデータ又は命令にアクセスすることができないことを確実にする(ensure)ためのハードウェア機構を有する。例えば、MMU 70において設定されたアクセス許可は、セキュアドメインと非セキュアドメインとの間のパーティショニングを制御することができ、又は代替として、完全に別個のセキュリティメモリ管理ユニットは、セキュリティ状態パーティショニングを制御するために使用され得、別個のセキュアMMU 70及び非セキュアMMU 70は、セキュリティ状態のそれぞれ内の副制御のために設けられている。セキュアドメイン90と通常ドメイン92との間の移行は、最も高い特権レベルEL3で実行するセキュアモニタプロセス94によって管理され得る。これは、非セキュアオペレーション80又はオペレーティングシステム82が、例えば、セキュアドメインからのデータにアクセスすることを防止するために、ドメイン間の移行が、堅固に制御されることを可能にする。他の例では、ハードウェア技法は、セキュリティ状態とポリス移行(police transitions)との間の分離を実施するために使用され得、このため、通常ドメイン92におけるコードは、別個のセキュアモニタプロセス94を介して移行することなく、セキュアドメイン90におけるコードに直接分岐することが可能である。しかしながら、説明を容易にするために、以下のその後の説明では、EL3でのセキュアモニタプロセス94を使用する一例に言及する。セキュアドメイン90内では、セキュアワールドオペレーティングシステム96は、例外レベルEL1で実行し、1つ以上の信頼されたアプリケーション98は、当該オペレーティングシステム96の制御下で、例外レベルEL0で実行し得る。この例では、所望の場合に、仮想化を提供することは依然として可能ではあるが、仮想化がセキュアドメインにおいてサポートされていないため、例外レベルEL2が、セキュアドメイン90においてない。このようなセキュアドメイン90をサポートするためのアーキテクチャの一例は、Cambridge、UKのArm(登録商標)Limitedによって提供されているTrustZone(登録商標)アーキテクチャであり得る。しかしながら、他の技法がまた、使用され得ることが理解されよう。いくつかの例は、3つ以上のセキュリティ状態を有することができ、3つ以上の状態には、当該状態に関連付けられたセキュリティの異なるレベルが提供されている。セキュリティ状態レジスタ66は、現在のドメインがセキュアドメイン90又は非セキュア92であるかを示し、これは、どのアクセス許可が、あるデータがアクセスされ得る又は動作が可能にされるかを支配するために使用されるかを、MMU 70又は他の制御ユニットに示す。
【0032】
したがって、図4は、システムにおいて実行され得るいくつかの異なるソフトウェア実行環境80、82、84、94、96、98を示す。これらのソフトウェア実行環境のそれぞれには、所与のパーティション識別子(パーティションID又はPARTID)が割り当てられ得、又は2つ以上のソフトウェア実行環境のグループには、共通のパーティションIDが割り当てられ得る。いくつかの場合に、単一プロセスの個々の部分(例えば、異なる機能又はサブルーチン)は、別個の実行環境として見なされ得、当該部分には、別個のパーティションIDが割り当てられ得る。例えば、図5は、仮想マシンVM(Virtual Machine)3、及びVM 3下で実行する2つのアプリケーション3741、3974には全て、PARTID 1が割り当てられており、第2の仮想マシンVM 7下で実行する特定のプロセス3974には、PARTID 2が割り当てられており、VM 7自体及びVM 7下で実行する別のプロセス1473には、PARTID 0が割り当てられている一例を示す。所定のパーティションID(bespoke partition ID)を全てのソフトウェア実行環境に割り当てる必要はない。デフォルトパーティションIDは、専用パーティションIDが割り当てられていないソフトウェア実行環境のために使用されるために指定され得る。パーティションID空間のどの部分がソフトウェア実行環境のそれぞれに割り当てられるかの制御は、より高い特権レベルでソフトウェアによって実施され、例えば、EL2で実行するハイパーバイザは、EL1で実行する仮想マシンオペレーティングシステムへのパーティションの割り当てを制御する。しかしながら、いくつかの場合に、ハイパーバイザは、より低い特権レベルでのオペレーティングシステムが、当該オペレーティングシステム自体のコードの部分について又は当該コード下で実行するアプリケーションについて、当該オペレーティングシステム自体のパーティションIDを設定することを許可し得る。また、いくつかの例では、セキュアワールド90は、セキュアワールドOS又はモニタプログラムEL3によって制御される、通常ワールド92とは完全に別個のパーティションID空間を有することができる。
【0033】
図3に示すように、CPUは、所与のメモリアクセストランザクションに関連付けられるMPAM関連情報を生成するためのMPAM生成論理77を含み得る。MPAM関連情報は、少なくともPARTIDを含み得るが、MPAM関連情報はまた、いくつかの例では、他の情報(例えば、メモリシステム構成要素が、所与のメモリアクセス要求に応答して、性能監視パラメータのどのセットを更新すべきかを選択するために使用される性能監視グループID)を含み得る。MPAM生成論理77は、どのレジスタがMPAM関連情報を生成するために使用されるべきかを判定するためにMPAM制御レジスタ68のパーティションIDレジスタ間で選択するためのMPAMレジスタ選択論理78と、MPAM制御レジスタ68における情報に基づく仮想パーティションIDを、リソース制御設定を選択するためにメモリシステム構成要素によって使用される物理パーティションIDにマッピングすることを制御するためのパーティションID仮想化論理79とを含むことができる。MPAM生成論理77は、いくつかの代替のMPAM関連情報を生成し、いくつかの代替のMPAM関連情報は、命令フェッチアクセスのために使用される命令MPAM関連情報(Instruction MPAM-related information、I-MPAM)と、データアクセスのために使用されるデータMPAM関連情報(Data MPAM-related information、D-MPAM)と、命令フェッチによってトリガされるページテーブルウォークアクセスのために使用される命令ページテーブルウォークMPAM関連情報(Instruction Page Table Walk MPAM-related information、I-PTW-MPAM)と、データページテーブルウォークMPAM関連情報のために使用されるデータページテーブルウォークMPAM関連情報(Data Page Table Walk MPAM-related information、D-PTW-MPAM)とを含む。ページテーブルウォークメモリアクセスのための別個のMPAM関連情報I-PTW-MPAM及びD-PTW-MPAMの提供は、有用であることができ、このため、ページテーブルウォークメモリアクセスは、現在実行されているプロセスについてではなく、ページテーブルを管理するプロセスについて定義されたメモリシステム構成要素パラメータに従って制御された、当該ページテーブルウォークメモリアクセスのリソース使用を有することができる。
【0034】
所与のメモリ要求に関連付けられたソフトウェア実行環境に依存して、どのパーティション識別子を当該要求に割り当てるかを判定するための精密な機構は、非常に変化し得、このような機構は、処理要素(CPU)6において使用され得ることが理解されよう。キャッシュ、相互接続、又はメモリコントローラなどのメモリシステム構成要素の観点から、所与のメモリ要求で指定されたパーティション識別子がCPUにおいてどのように選択されたかは重要でない。
【0035】
所与のメモリトランザクションに付加されたパーティションID及び性能監視グループID(並びに、いくつかの実施形態では、トランザクションが発行されたセキュリティ状態を指定するセキュリティ状態指示)は、メモリシステムにわたってメモリトランザクションと共に流れる。したがって、メモリトランザクションをメモリシステムの他の構成要素に渡すメモリシステムのノード(例えば、相互接続)は、このようなノードにおいて受信された対応する要求と同じパーティションID、性能監視グループ及びセキュリティ状態指示を有する発信(outgoing)メモリトランザクションを提供する。メモリシステム内のキャッシュについては、これらは、キャッシュヒットがある場合に、要求への応答を時には生成する挙動を有し、キャッシュミスがある場合に、要求をメモリシステムの更なる部分に他の時には渡す挙動を有する。メモリシステム内のキャッシュはまた、要求に基づいて、新しいエントリを時には割り当て得る。新しいエントリを割り当てるときに、キャッシュは、パーティションID、性能監視グループ、及び割り当てを引き起こした要求のセキュリティ指示を、キャッシュされたデータ自体と一緒に記憶することができる。データが更なるキャッシュ又はメモリに書き戻されたときに、書き戻しトランザクションが生成され、書き戻しトランザクションは、削除をトリガした要求に関連付けられたIDではなく、キャッシュにおける削除されたデータに関連付けられたパーティションID、性能監視グループ及びセキュリティ指示を指定する。これは、書き戻しについてのリソース割り当て又は性能監視が、対応するデータをキャッシュに割り当てたソフトウェア実行環境に特有のパラメータに従って制御/監視されることを可能にする。
【0036】
メモリシステム構成要素(例えば、キャッシュ、相互接続、メモリコントローラ、メモリデバイス、又はメモリ管理ユニット)のうちの全てが、パーティショニングをサポートすることができるわけではないことに留意されたい。パーティショニングをサポートしない構成要素は、全てのソフトウェア実行環境について共通の方法で、リソース割り当てを制御する又は性能を監視することができる。しかしながら、発信要求は、前述と同じ方法でパーティションIDを依然として付加され、このため、パーティショニングをサポートする下流のメモリシステム構成要素は、パラメータの適切なセットを選択するためにパーティションIDを使用することができる。したがって、システム設計者が、任意の所与のメモリシステム構成要素においてパーティションIDを使用することを実際に選択するかどうかにかかわらず、前述の処理要素アーキテクチャ及びパーティションIDルーティングスキームは、メモリシステムの異なる箇所(point)においてパーティショニングを実装する一連の実装をサポートするための柔軟性を提供する。しかしながら、パーティションID又は性能監視グループIDに応答するこのようなメモリシステム構成要素については、これらは、パーティションIDに基づいて、リソース割り当て若しくは競合管理、又は性能監視を制御することができる。
【0037】
性能モニタは、リソースパーティショニング制御とは異なって働く。性能モニタは、モニタにプログラムされたフィルタに基づいて、性能メトリックを測定、カウント、又は計算する。フィルタパラメータは、パーティションIDと、性能監視グループとを含み得る(又は、パーティションIDを含まずに、性能監視グループを含み得る)。例えば、メモリに転送されたバイトをカウントする性能モニタは、5のパーティションID及び2の性能監視グループでの読み取りのみをカウントするように、測定をフィルタリングしてもよい。したがって、性能測定は、同じパーティションID及び性能監視グループを共有する、異なるソフトウェア実行環境又はソフトウェア実行環境の異なるグループについて収集され得る。
【0038】
一方、リソースパーティショニングをサポートするシステム構成要素については、メモリシステム構成要素は、パーティションIDに基づいて、メモリシステム構成要素パラメータのセットを選択する。メモリシステム構成要素パラメータは、リソース制御パラメータであってもよく、リソース制御パラメータは、(帯域幅、キャッシュ容量などの)メモリシステムリソースの割り当て又はこれらのリソースについての競合を制御するために使用される(例えば、選択されたメモリシステム構成要素パラメータは、対応するパーティションIDに関連付けられたトランザクションについて設定された優先度を定義することができる)。
【0039】
図6は、パーティションID(PARTID)に基づいて選択されたメモリシステム構成要素パラメータを使用してリソースパーティショニングを制御する一例を示す。メモリシステム構成要素100は、制御されたリソース104(例えば、キャッシュ容量、帯域幅)へのアクセスを制御するためのレギュレータ102を含む。メモリシステム構成要素100は、いくつかのエントリを提供する設定テーブル106を有し、エントリのそれぞれは、所与のパーティションIDに対応する。設定テーブル106は、受信されたメモリアクセス要求で指定されたPARTIDに基づいてインデックス付けされている。図6は、1つの設定テーブルを示すが、2つ以上の形態のリソース制御を制御する他の例は、実装されたリソース制御あたりに設定テーブル106を有することができる。設定テーブルのエントリのそれぞれは、対応するPARTIDについて1つ以上のパーティショニング制御設定(メモリシステム構成要素リソース制御パラメータ)108を指定する。設定は、例えば、どのくらいのキャッシュ(又はどのくらいのメモリバス帯域幅)が、対応するPARTIDに関連付けられた要求のために使用され得るかを指定することができる。(例えば、所与のPARTIDについての最大キャッシュ占有に基づく)いくつかの形態の制御は、測定回路110によってなされたリソース使用測定(例えば、いくつのキャッシュエントリが、所与のPARTIDについて既に割り当てられているかのカウント)に依存し得る。他の形態の制御は、測定回路110を必要としなくてもよい(例えば、以下で更に記載の部分ベースのキャッシュ制御機構については、測定は必要とされない)。したがって、設定テーブル106で定義された所与のPARTIDについてのリソース使用の限度(limit)に基づいて、レギュレータ102は、所与のPARTIDが割り当てられた特定のソフトウェアプロセスが、当該ソフトウェアプロセスの制御されたリソース104の公正な配分よりも多くを取ることを回避するために、要求処理機能112が着信(incoming)要求をどのように処理するかを制御する。
【0040】
メモリシステム構成要素が、キャッシュ8、10、16、20である場合に、制御されたリソース104は、キャッシュ記憶容量であり得る。レギュレータ102は、関連するPARTIDについての設定テーブルにおけるメモリシステム構成要素リソース制御パラメータ108の選択されたセットに依存して、メモリトランザクションに応答してキャッシュへのデータの割り当てを制御することができる。メモリシステム構成要素が、相互接続14、18又はメモリコントローラ24である場合に、レギュレータ102は、関連するPARTIDについての設定テーブルにおけるメモリシステム構成要素リソース制御パラメータ108の選択されたセットに依存して、メモリトランザクションを処理するための帯域幅又はバッファ占有の割り当てを制御することができる。
【0041】
図7は、1つ以上の設定テーブル106における制御設定を更新するためのプログラミングインタフェース120を示す。この例では、それぞれのタイプの制御されたリソース104-A、104-Bへのアクセスを制御するためにレギュレータ102-A、102-Bのそれぞれを制御するための2つの別個の設定テーブル106-A及び106-Bがある。プログラミングインタフェース120は、PARTIDセレクタ130と、いくつかの設定インタフェースレジスタ132-A、132-Bとを含む。所与のPARTIDについての制御設定を設定又は読み取るために、最初に、PARTIDセレクタ130内のレジスタが、所与のPARTIDで書き込まれ、次いで、読み取り又は書き込み動作が、更新される制御設定に対応する1つ以上のインタフェースレジスタ132-A、132-Bに実行される(読み取り動作は、設定テーブルの対応するエントリからの値を返し、書き込み動作は、新しい値を設定テーブルの対応するエントリに書き込む)。PARTIDセレクタ130は、PARTIDのPARTID選択レジスタで指定されたPARTIDに基づいて、書き込み又は読み取りのために設定テーブル(単数又は複数)106の適切なエントリを選択する。
【0042】
プログラミングインタフェース120のレジスタは、メモリマップドレジスタであり、メモリマップドレジスタは、読み取り/書き込みされる対応するレジスタにマッピングされたメモリアドレスを、ロード/ストア動作のターゲットアドレスとして指定するロード/ストア動作を発行するCPU 6によってアクセスされる。したがって、PARTIDセレクタ130は、インタフェースレジスタ132の共通のセットを設定テーブル(単数又は複数)106の関連する行(単数又は複数)に接続して、別個のPARTIDのそれぞれについての別個のインタフェースレジスタの必要を回避する。PARTIDセレクタ130は、読み取りされる又は書き込みされるエントリを選択するために、設定テーブル106にアクセスするために使用される「鍵穴(keyhole)」をテーブルの上下に実際に移動させる。
【0043】
別個のセキュアアドレス空間及び低セキュアアドレス空間をサポートするシステムにおいて、別個の設定テーブル106及び別個のプログラミングインタフェース120は、低セキュアドメインをセキュアドメインから分離するために、セキュアアドレス空間及び低セキュアアドレス空間について、それぞれ提供され得る。
【0044】
図8は、パーティションIDに基づいてメモリシステム構成要素の動作を制御するための方法を示す。ステップ200で、メモリシステム構成要素は、前述のようにパーティションID、性能監視グループ(Performance Monitoring Group、PMG)及びセキュリティ状態指示を指定するメモリトランザクションを受信する。メモリシステム構成要素が、メモリシステムリソースパーティショニングをサポートする場合に(ステップ202)、次いで、ステップ204で、リソース制御パラメータのセットが、パーティションID及びセキュリティ状態に基づいて選択される。性能監視グループは、このステップで考えられない。ステップ206で、リソースの割り当ては、リソース制御パラメータの選択されたセットを使用して制御され、又はこれらのリソースについての競合は、リソースパラメータの選択されたセットを使用して管理される。メモリシステムリソースパーティショニングがサポートされていない場合に、次いで、ステップ204及び206は省略される。
【0045】
メモリシステム構成要素が、性能監視グループによる性能監視パーティショニングをサポートする場合に(ステップ208)、次いで、ステップ210で、構成要素に実装された性能モニタのそれぞれは、要求を、性能モニタのフィルタパラメータに対してテストする(テストは、PMG及びパーティションIDに適用されるテストを含み得る)。モニタのフィルタパラメータが満たされているモニタのそれぞれは、当該モニタが行うように設計されている測定、カウント、又は計算に従って、モニタの内部状態を更新する。性能監視パーティショニングをサポートしないメモリシステム構成要素については、ステップ210は省略される。いくつかの実施形態では、パーティションIDフィールド及びPMGフィールドの両方は、フィルタパラメータに含まれ得る(このため、PMGフィールドは、パーティションIDフィールドを更に限る)。代替として、PMGは、パーティションIDフィールドとは別個の独立したIDとして解釈され得、この場合に、フィルタパラメータは、パーティションIDを考えずに、PMGを考え得る。
【0046】
リソース監視パーティショニングをサポートするメモリシステム構成要素のそれぞれは、パラメータレジスタのセットを有することができ、パラメータレジスタのセットは、メモリシステム構成要素パラメータの異なるセットを記憶し、メモリシステム構成要素パラメータの異なるセットは、パーティションIDに基づいて選択される。パーティショニング制御のための制御パラメータは、論理的に、パーティションIDによってインデックス付けされた制御パラメータの配列である。制御パラメータを設定するためのインタフェースは、メモリマップドレジスタの配列として配置され得、又は1制御パラメータあたりにセレクタレジスタ及び唯一の単一の構成レジスタで配置され得る。後者の場合に、構成ソフトウェアは、最初に、構成するパーティションIDをセレクタレジスタに記憶し、次いで、所望の制御パラメータを1つ以上の制御パラメータ構成レジスタに記憶する。
【0047】
図9は、メモリシステム構成要素の一例であるキャッシュ300の一例を示す。キャッシュ300は、命令又はデータをキャッシュするためのキャッシュ、例えば、所与の処理要素6のレベル1データキャッシュ8、レベル1命令キャッシュ10若しくはレベル2キャッシュ12、クラスタキャッシュ16、又はシステムキャッシュ20などであり得る。キャッシュ300はまた、アドレス変換のためのキャッシュ、例えば、MMU 70におけるTLB 72又はページウォークキャッシュ74などであり得る。図3は、MMU 70が所与のプロセッサコア内に設けられている一例を示すが、システムMMUを、メモリシステムにおいて更に下に、例えば、SoC相互接続18内に設けることも可能である。
【0048】
キャッシュ300は、キャッシュされる情報を記憶するためのキャッシュストレージ(キャッシュRAM)302を有する。キャッシュRAM 302は、ある数のストレージエントリ304を有する。図9に示すように、エントリのそれぞれは、
キャッシュされたデータ306(キャッシュされたデータ306は、任意のキャッシュされた情報であり得、データ値のみでなく、キャッシュのタイプに依存して、命令又はアドレス変換データも包含する)、
エントリにおける対応するデータが有効であるかどうかを指定する有効ビット308、
キャッシュされたデータに関連付けられたアドレスの一部分を示すタグフィールド310、
データをキャッシュに割り当てたメモリトランザクションのパーティションID 314、
割り当てるメモリトランザクションの性能監視グループID 316、
割り当てるメモリトランザクションのセキュリティ状態指示318(セキュリティ状態指示318は、当該メモリトランザクションがどのセキュリティ状態から発行されたかを示す)、
システム設計がキャッシュラインのそれぞれについて保つ必要があり得る他の情報、例えば、コヒーレンス状態又はアドレス空間インジケータ(Address Space Indicator、ASI)
を記憶することができる。
キャッシュからのデータの削除の際に、IDフィールド314、316、318は、書き戻しトランザクションのためのパーティションID、性能監視グループID、及びセキュリティ状態指示を導出するために使用される。図9に示されていないが、キャッシュエントリのそれぞれはまた、キャッシュされたデータのコヒーレンシ状態を指定するコヒーレンシ情報(例えば、データが、書き戻しが必要とされるかどうかを判定するために、クリーン又はダーティであるか)、及び/又は削除が必要とされるときに犠牲キャッシュラインを選択するために犠牲選択データ(例えば、どのエントリがごく最近使用されたかを追跡するためのデータ)を記憶することができる。
【0049】
キャッシュへのデータの割り当ては、直接マップド、セットアソシエイティブ、又は完全アソシエイティブを含む任意の既知のキャッシュ編成に従って制御され得る。図9の例は、4つのウェイを有するセットアソシエイティブ編成スキームを示すが、これは、単に一例であることを理解されたい。キャッシュへのルックアップは、対応するメモリトランザクションに関連付けられたパーティションIDとは独立して、実行される。したがって、所与のパーティションIDを指定するメモリトランザクションが受信されたときに、トランザクションは、キャッシュエントリに記憶されたパーティションID 314、非セキュアIDインジケータ318、及び性能監視グループ316にかかわらず、インデックス付けされたキャッシュエントリにおけるデータに対してヒットすることができる。したがって、性能リソースのパーティショニング及び/又は性能監視は、異なるソフトウェアプロセスが、キャッシュされたデータへのアクセスを共有することを防止しない。
【0050】
一方、データをキャッシュに割り当てるときに、リソース制御パラメータのセットに依存して、割り当てを制御し、リソース制御パラメータのセットは、キャッシュコントローラ312は、対応するメモリトランザクションのセキュリティ状態及びパーティションIDに基づいて選択される。キャッシュは、リソース制御パラメータレジスタ320のセット(前述の設定テーブル106の一例)を有し、レジスタ320のそれぞれは、対応するソフトウェア実行環境についてリソース制御パラメータを記憶する。セレクタ322は、キャッシュへのデータの割り当てを必要とする着信メモリトランザクションのパーティションID及びセキュリティ状態とに基づいて、レジスタのうちの1つを選択する。選択されたレジスタに記憶されたパラメータは、データがキャッシュに割り当てられるかどうか、及びデータがキャッシュにどのように割り当てられるかを制御するために使用される。
【0051】
第1のキャッシュパーティショニング制御モードでは、割り当ては、パーティションIDを使用して選択された最大容量閾値を使用して制御され、最大容量閾値は、対応するパーティションIDに関連付けられたデータが割り当てられることが可能にされている、キャッシュ容量のエントリの最大数を識別する。セキュア状態及び非セキュア状態をサポートする実装では、閾値は、パーティションIDと非セキュアIDインジケータとの所与の組み合わせに関連付けられたデータが割り当てられることが可能にされた最大容量を定義することができる。例えば、最大容量閾値は、より高い特権プロセスによって設定され得、すなわち、所与のオペレーティングシステムについての閾値は、ハイパーバイザによって設定され得、所与のアプリケーションについての閾値は、オペレーティングシステムによって設定され得る。
【0052】
例えば、図2は、パーティションID 0、1、及び2には、50%、50%、及び40%の最大容量閾値がそれぞれ割り当てられている一例を示す。これは、保証された割り当てではなく、所与のパーティションIDについてデータを記憶することできるキャッシュの量についての最大限度のみがあるため、異なるソフトウェア実行環境について定義された最大容量閾値の合計は、100%を超え得ることに留意されたい。この場合に、対応するソフトウェア実行環境の全てが、同時に、当該ソフトウェア実行環境の最大割り当てを使用するわけではない。
【0053】
図9に戻ると、キャッシュ300は、キャッシュエントリ304のうちのいくつが、パーティションIDのそれぞれに関連付けられたデータについて割り当てられたかを追跡するための割り当てカウンタ326のセットを有する。セキュリティ状態がサポートされている場合に、カウンタは、セキュリティ状態に基づいて、更にパーティショニングされてもよい。所与のパーティションIDについてのデータ値が、キャッシュに割り当てられたときに、対応する割り当てカウンタ326は、インクリメントされる。データが、無効にされた、削除された、又は置き換えられたときに、対応するパーティションIDについての割り当てカウントは、デクリメントされる。キャッシュミスが、所与のメモリトランザクションに応答して発生するときに、キャッシュコントローラ312は、メモリトランザクションによって指定されたパーティションIDに対応する割り当てカウンタ326及びリソース制御パラメータレジスタ320を読み取り、割り当てカウントを最大容量閾値と比較し、比較の結果に基づいて割り当てを制御する。現在の割り当てが、まだ閾値を超えていない場合に、必要とされるデータは、キャッシュに割り当てられ得る。しかしながら、割り当てカウントが、閾値以上である場合に、キャッシュコントローラ312は、同じパーティションIDに関連付けられた閾値レベル超のエントリがキャッシュに割り当てられることを防止するために、新しい要求についてデータを割り当てないと判定することができ、又は新しいデータを割り当てる前に当該パーティションIDに関連付けられた他のデータをキャッシュから削除する若しくは置き換えることができる。削除又は置き換えが必要とされる場合に、キャッシュのエントリのそれぞれに記憶されたパーティションID 314(及び、提供されている場合に、犠牲選択情報)は、どのデータを削除するかを判定するために使用され得る。容量をカウントする上記の手段は、単に一例であり、他の技法がまた、キャッシュ容量を追跡するために使用され得ることが理解されよう。
【0054】
リソース制御パラメータレジスタ320は、最大容量閾値によって示されたエントリの最大数を、異なる方法で表すことができる。例えば、リソース制御パラメータレジスタ320は、対応するパーティションIDデータに割れ当てられ得るエントリの最大数を直接指定することができる。代替として、リソース制御パラメータレジスタ320は、当該パーティションIDについて割り当てられ得るキャッシュの総容量のフラクションで閾値を指定することができる。例えば、パラメータは、スケーリングされたパーセンテージを表すことができ、スケーリングされたパーセンテージにおいて、パラメータの幅及びスケール因子は、対応するメモリ構成要素についてのIDレジスタ362において指定される。例えば、構成要素は、256でスケーリングされた8ビット容量制御をサポートし得、この場合に、容量の30%を所与のパーティションに割り当てるために、パーティションの最大容量パラメータは、30256=76.8であり、割り当てが、所望のパーセンテージを超えることを防止するために、76に切り捨てられる。
【0055】
複数のセキュリティ状態がサポートされている実施形態では、セキュリティ状態指示はまた、パーティションIDと組み合わせて、適切なリソース制御パラメータレジスタ320及び割り当てカウント326を選択するために使用される。
【0056】
図10は、第1のパーティショニング制御モードで最大容量閾値に従ってキャッシュ割り当てを制御する方法を示す。ステップ330で、キャッシュミスが、所与のメモリトランザクションについて検出される。ステップ332で、リソース制御パラメータ320のセットは、対応するパーティションID及びセキュリティ状態に基づいて選択される。ステップ334で、対応するセキュリティ状態及びパーティションIDについてカウンタ326によって維持された割り当てカウントは、リソース制御パラメータ320の選択されたセットにおける最大容量閾値と比較され、ステップ336で、割り当てカウントが最大容量閾値よりも大きいかどうかが判定される。そうでない場合に、次いで、ステップ338で、当該要求についてのデータは、キャッシュミスに応答してキャッシュに割り当てられる。一方、割り当てが割り当て閾値以上である場合に、次いで、ステップ340で、キャッシュへのデータの割り当ては防止され、又は代替として、ステップ342で、現在の要求と同じパーティションIDに関連付けられたデータは、新たに割り当てられたデータのためのウェイを作るために置き換えられ得又は削除され得、ステップ338で、データは、通常とおりに割り当てられ得る(例えば、閾値が最近更新された場合に、ステップ340又は342によって提供された限度にもかかわらず、割り当てカウントは、閾値を時には超え得る)。方法がステップ340又は342に進むかどうかは、キャッシュの所与の実装についての実装選択である。
【0057】
代替として、図11に示すように、第2のキャッシュ制御モードが使用され得、第2のキャッシュ制御モードにおいて、パーティションIDに基づいて選択されたキャッシュ容量部分ビットマップ350は、キャッシュ割り当てを制御するために使用される。ビットマップ350は、複数のフィールド352を有し、複数のフィールド352はそれぞれ、キャッシュストレージ302の対応する部分が、対応するパーティションIDに関連付けられたデータを記憶するために割り当てられることが可能されるかどうかを指定する。例えば、図11の例の下部に示すビットマップ350は、32個のフィールド352を有し、32個のフィールド352はそれぞれ、キャッシュ容量の1/32に対応する。フィールドのそれぞれは、対応するパーティションIDを指定するトランザクションが、データをキャッシュの当該部分に割り当てることができないことを示すために、0に設定され得、又は当該パーティションIDについてのデータが、当該部分に割り当てられることが可能にされていることを示すために、1に設定され得る。
【0058】
図11の上部に示すように、異なるビットマップ350を異なるパーティションIDについて設定することによって、これは、キャッシュのいくつかの部分が、所与のパーティションIDについて確保されることを可能にし、他の部分は、パーティションID間で共有されてもよく、又は完全に割り当てされなくてもよい。例えば、図11に示す4つのキャッシュ部分のサブセット(これは、全キャッシュ容量でない)については、キャッシュの部分0は、パーティション1にのみ割り当てられ、部分1は、パーティション1及びパーティション2の両方に割り当てられ、このため、パーティション1及びパーティション2は、キャッシュのこの部分への割り当てについて競合し得、部分2は、パーティション2にのみ割り当てられ、部分3は、これらのパーティションのいずれにも割り当てられない。したがって、データをパーティション1についてキャッシュに割り当てるときに、キャッシュコントローラ312は、部分0又は1内の場所を選択することに制限されているが、部分2又は3に割り当てることができない。ビットマップによって定義された「部分(portion)」は、1つ以上のキャッシュエントリのグループであり得、1つ以上のキャッシュエントリのグループは、任意の所与のアドレスが、グループのうちの少なくとも1つのエントリ、例えば、セットアソシエイティブキャッシュにおけるウェイ全体(当該ウェイに属する全てのセットを含む)、又は完全アソシエイティブキャッシュにおけるエントリの更なる任意のサブセットに割り当てられ得るという特性を有する。
【0059】
したがって、第2の割り当て制御モードでは、キャッシュミスが検出されたときに、対応するパーティションID及びセキュリティ状態についての制御パラメータのセットが再び選択されるが、今回は、キャッシュビットマップが、読み取られ、データがキャッシュのどの部分に割り当てられ得るかを制御するために使用される。
【0060】
いくつかのキャッシュ実装は、上記の第1のキャッシュ割り当て制御モード及び第2のキャッシュ割り当て制御モードのうちの1つのみをサポートし得る(例えば、直接マッピングされたキャッシュは、第1のモードを実装することができるが、第2のモードを実装することができない)。他の実装は、両方のモードを使用するオプションをサポートし得る。例えば、使用されている特定のキャッシュ編成が、多くの部分を与えることをサポートしない場合に(例えば、比較的低い連想性のセットアソシエイティブキャッシュ)、最大容量限度をオーバーレイすることは、部分パーティショニングのみよりも多くの制御を与えるため、これは、有用であり得る。
【0061】
前述のように、キャッシュ300は、リソースパーティショニングがどのように実行されるかを制御するためのメモリマップド構成レジスタ360を有することができる。これは、上記のプログラミングインタフェース120の一例である。構成レジスタ360は、キャッシュ300のハードウェア能力を識別するためのIDレジスタ362と、更新するリソース制御パラメータのセットを選択するためのセレクタレジスタ364と、リソース制御パラメータの選択されたセットに書き込まれるパラメータを指定するための1つ以上の構成レジスタ366とを含む。
【0062】
例えば、IDレジスタ362は、第1/第2のキャッシュ割り当て制御モードのうちのどちらがサポートされているかを指定することができる(閾値又はビットマップベースのパーティショニング)。例えば、割り当てカウンタ326を有さないキャッシュは、第1のモードがサポートされていないことを示してもよい。この場合に、制御プロセッサは、第2のモードの使用に制限されてもよい。他のキャッシュは、両方のモードをサポートしてもよく、どちらが所与のプロセスのために使用されるかを選択するための柔軟性を有してもよい。この場合に、どのモードを使用するかは、対応するパーティションIDについてリソース制御パラメータレジスタ320内で指定されてもよく、構成レジスタ360を使用してプログラムされてもよい。
【0063】
所与のパーティションIDについてリソース制御パラメータのセットを設定するときに、ソフトウェアは、セレクタレジスタ364及び構成レジスタ366にマッピングされたメモリアドレスを指定するメモリトランザクションを発行することによって、当該パーティションIDをレジスタ364に書き込み、書き込まれるパラメータを対応するレジスタ366に書き込む。応答して、キャッシュ300は、パラメータを構成レジスタ366から読み取り、パラメータを、関連するパーティションIDによって識別された対応するリソース制御パラメータレジスタ320に書き込む。セキュリティ状態がサポートされているときに、セレクタレジスタ364及び構成レジスタ366は、バンクされ得、このため、異なるバージョンが、セキュア状態及びセキュアでない状態についてそれぞれ提供され、メモリトランザクションに関連付けられたセキュリティ指示は、レジスタのどのセットがアクセスされるかを選択する。
【0064】
リソース制御パラメータを設定するためのこのようなセレクタレジスタ364及び構成レジスタ366は、単に、リソース制御パラメータがどのように設定され得るかの一例であることに留意されたい。この手法の利点は、この手法が、メモリシステム構成要素におけるアドレス空間使用を節約することである。しかしながら、代替形態では、より広いインタフェースが使用され、より広いインタフェースにおいて、制御設定の配列は、N個の制御設定レジスタの配列として曝されており、Nは、サポートされているパーティションIDの最大数である。これは、制御構成が、パーティションについて単一の書き込みで更新され得、したがって、別のプロセッサが、メモリシステム構成要素を構成している間に、1つのプロセッサが、セレクタレジスタ364及び構成レジスタ366にアクセスすることを防止するために、相互排他を必要としないという点でより簡単である。例えば、パーティションIDの最大数が、216であり、典型的なメモリシステム構成要素が、2~4つの制御を有する場合に、この手法は、リソース制御パラメータの配列について256KBのアドレス空間を使用し得る。
【0065】
メモリマップド構成レジスタ360へのアクセスは、例えば、どの動作状態が、構成レジスタ360を更新するためのメモリトランザクションを発行することができるかを限るために、MMU 70によって制御されてもよい。例えば、EL0で実行される命令は、構成レジスタ360にアクセスすることが可能にされていないことがあるが、EL2でのハイパーバイザは、可能にされていることがある。パーティションIDの仮想化がサポートされているときに、キャッシュ300内で使用されるパーティションIDは、物理パーティションIDであり、対応するアプリケーションのパーティションIDのために使用されるリソース制御パラメータを設定することを試みるオペレーティングシステムは、仮想パーティションIDを指定する。したがって、オペレーティングシステムが、誤ったリソース制御パラメータを更新することを防止するために、構成レジスタ360にマッピングされたアドレスへのアクセスは、トラップされ得、処理をEL2でのハイパーバイザに切り替える例外をトリガすることができる。次いで、ハイパーバイザにおける例外ハンドラは、キャッシュ300におけるパラメータ320の関連するセットを更新するために、正しい物理パーティションIDを有する対応するメモリトランザクションを発行することができる。これを達成するために、2つのステージのMMU変換プロセスにおいて、メモリマップドレジスタ360に関連付けられたアドレスは、メモリシステム構成要素によって使用される他のアドレス空間とは異なるステージ2アドレスページに置かれてもよい。
【0066】
リソース制御パーティショニングと同様に、キャッシュ300における性能監視は、性能監視グループ(及び、PMGがパーティションIDのサブプロパティである実施形態では、パーティションID)及びセキュリティ状態に基づいて、パーティショニングされてもよい。いくつかの性能モニタ380が設けられてもよく、いくつかの性能モニタ380はそれぞれ、当該性能モニタ380に対応するフィルタパラメータ382のセットにおいてプログラムされたフィルタに基づいて、性能メトリックを測定、カウント、又は計算するように構成可能である。フィルタパラメータ382は、PARTID及びPMGを指定するためにフィールドを含むことができ、メモリトランザクションを受信した際に、フィルタパラメータ382が、PARTID/PMGフィールドについて特定の値を設定した場合に、性能モニタは、当該トランザクションに関連付けられたPARTID/PMG値が、フィルタパラメータ382において設定された値と一致するかどうかに依存して、当該トランザクションに基づいて、性能モニタのメトリックを更新するかどうかを判定することができる。第1のキャッシュ割り当てモードをサポートする実装では、割り当て閾値が超えられているかどうかを追跡するための割り当てカウンタ326が設けられている場合に、同じ割り当てカウンタ326がまた、性能監視のために使用され得ることに留意されたい。
【0067】
キャッシュ300が、TLB又はページウォークキャッシュなどのアドレス変換キャッシュである場合に、このようにキャッシュ割り当てリソースをパーティショニングすることは、1つのソフトウェア実行環境が、他のソフトウェア実行環境のための空間を残し「ノイジーネイバー」効果を低減するために、1つのソフトウェア実行環境の割り当てられたアドレス変換キャッシュ容量のパーセンテージ/部分よりも多く割り当てることができないことを確実にするために、有用であり得る。
【0068】
図9は、キャッシュ300の一例を示すが、他のメモリシステム構成要素は、所与のパーティションID/性能監視グループ/セキュリティ状態に関連付けられたメモリシステム構成要素パラメータを構成するためのメモリマップド構成レジスタ360と、対応するパーティションIDについて構成データのセットを指定するためのリソース制御パラメータレジスタ320との同様のセットを有し得る。
【0069】
特に、他のメモリシステム構成要素(例えば、メモリコントローラ24又は相互接続14、18など)については、以下の形態のリソースパーティショニングのうちのいずれかが実装されてもよい。
【0070】
メモリチャネル帯域幅パーティショニング
メインメモリチャネルの帯域幅は、パーティショニングされてもよい。2つの帯域幅制御スキームが、提供されてもよい。メモリチャネルは、任意選択で、
競合の存在下でも、パーティションが要求する最小帯域幅
競合の存在下でパーティションに使用可能な最大帯域幅限度
のうちの1つ又は両方を実装することができる。
これらの制御スキームの任意の組み合わせが、当該制御スキームをサポートするチャネルにおいて同時に使用され得る。制御スキームのそれぞれについて、以下の項で説明する。
【0071】
最小帯域幅制御スキーム
最小帯域幅制御スキームは、パーティションの現在の帯域幅が最小値を下回るときに、優先度(preference)をパーティションからの要求に与え、パーティションの現在の帯域幅がパーティションの最小帯域幅を超えるときに、パーティションの要求が他の普通の要求と競合することを可能にする。したがって、パーティションの最小帯域幅を下回るパーティションの要求は、チャネルにおいてスケジュールされる可能性が最も高い。最小帯域幅制御スキームは、アカウンティング期間中にメモリ帯域幅を追跡する。
アカウンティング期間中に追跡された際のパーティションによる帯域幅使用が、現在、パーティションの最小値未満である場合に、パーティションの要求は、チャネル帯域幅を使用するように優先的に選択される。
アカウンティング期間中に追跡された際のパーティションによる帯域幅使用が、現在、パーティションの最小値よりも大きい場合に、パーティションの要求は、チャネルにおける帯域幅の使用のために、他の普通の優先度の要求と競合する。
アカウンティングウィンドウ中にパーティションによって使用されない帯域幅は累積しない。メモリシステム構成要素内のレジスタは、所与のパーティションIDについての最小帯域幅限度を、1秒あたりのスケーリングされたメガバイトとして指定することができる。1秒あたりのメガバイトのスケール値は、1秒あたりの所望のメガバイトに、ハードウェアによって定義され得るスケール因子を掛けたものとして計算される。
【0072】
最大帯域幅限度制御スキーム
最大帯域幅限度制御スキームは、アカウンティング期間中のパーティションの最大帯域幅限度までについて、普通の優先度をパーティションに与える。アカウンティング期間中に追跡された際のパーティションによる帯域幅使用が、現在、パーティションの最大値未満である場合に、パーティションの要求は、メモリチャネルにおけるスケジューリングについて、普通の優先度と競合する。アカウンティング期間中に追跡された際のパーティションによる帯域幅使用が、現在、パーティションの最大帯域幅限度よりも大きい場合に、パーティションの要求は、チャネルにおける帯域幅の使用のために、他のより低い優先度の要求と競合する。
【0073】
最大帯域幅限度制御スキームは、帯域幅使用が最大帯域幅限度を下回るときに、普通の優先度をパーティションからの要求に与え、帯域幅使用が最大帯域幅限度を超えるときに、非優先度をパーティションからの要求に与える。したがって、チャネル帯域幅についての競合の非存在下で、パーティションは、最大帯域幅よりも多くを使用し得る。パーティションの帯域幅使用が、パーティションの最大限度を下回るときの帯域幅についての要求は、普通の優先度でスケジュールされ、このため、競合する要求に依存して、パーティションの最大限度を下回るパーティションの要求された帯域幅の全てが、チャネルスケジューラによって認可され得るわけではない。アカウンティングウィンドウ中にパーティションによって使用されない帯域幅は累積しない。
【0074】
再び、最大帯域幅限度についての制御パラメータは、1秒あたりのスケーリングされたメガバイトとして指定され得る。1秒あたりのメガバイトのスケール値は、1秒あたりの所望のメガバイトに、ハードウェアによって定義され得るスケール因子を掛けたものとして計算される。
【0075】
最小帯域幅制御スキーム及び最大帯域幅限度制御スキームの両方が実装される場合に、次の表は、要求の優先度を示す。
【0076】
【表1】
優先度は、概して、高優先度の要求が中優先度の要求又は低優先度の要求より先にサービス提供される可能性を増加させるために、高、中、又は低として定義され得るが、実装は、枯渇回避などの実装の他の目標を満たすために、要求にサービス提供する際に、優先度順序から依然として逸脱し得ることに留意されたい。
【0077】
前述のスキームの全てについて、帯域幅パーティショニングスキームについての制御パラメータは全て、所与の単位、例えば1秒あたりのメガバイトで表され得る。この値はまた、1マイクロ秒あたりに転送されるバイトに相当する。実装は、得られる値が、パーティションIDについてのメモリシステム構成要素の帯域幅制御レジスタのうちの1つにプログラムされる前に、帯域幅パーティショニング制御パラメータのそれぞれに一定のスケール因子を掛けることを必要とし得る。実装が、制御パラメータのスケーリング、及び必要とされる場合に、スケール因子のスケーリングを必要とするどうかは、スケール因子は、メモリシステム構成要素内のディスカバリレジスタ(上記のキャッシュのディスカバリレジスタ362と同様)において指定され得る。
【0078】
上記の全てのメモリ帯域幅パーティショニングスキームについて、メモリチャネル帯域幅調整は、アカウンティング期間にわたって発生し得る。アカウンティング期間は、固定ウィンドウ又は移動ウィンドウのいずれかであり得る。ウィンドウの幅は、メモリシステム構成要素におけるディスカバリレジスタから読み取られ得る発見可能な定数であり得る。例えば、アカウンティング期間は、少なくとも1マイクロ秒であり得、アカウンティング期間は、20マイクロ秒以上までであり得る。より長いアカウンティング期間は、特に移動ウィンドウ実装では、より多くのハードウェアを必要とし得、より短いアカウンティング期間は、特に固定ウィンドウ実装では、より多くの境界効果(boundary effect)を有し得る。
【0079】
固定ウィンドウアカウンティングにおいて、帯域幅は、要求に配分され、このため、パーティションのそれぞれは、当該パーティションについての最小値及び最大値に従って、帯域幅を得る。要求又はローカル優先度は、帯域幅について争う要求を解決するために使用され得る。アカウンティングウィンドウの期間が到達されたときに、新しいウィンドウが、以前にサービス提供されていない要求のキューを除いて、履歴なしで始まる。新しいウィンドウは、パーティションのそれぞれについてゼロから帯域幅を累積することを開始する。
【0080】
移動ウィンドウアカウンティングでは、移動ウィンドウは、過去のウィンドウ幅で発行された全てのコマンドからのパーティションによる帯域幅の履歴を保つ。1パーティションあたりの帯域幅のアカウンティングのリセットはなく、むしろ、帯域幅は、コマンドが処理されたときに追加され、当該コマンドがウィンドウの履歴外へ移動したときにアカウンティングから除去される。この連続的なアカウンティングは、境界効果が比較的ないが、固定ウィンドウによって必要とされる1パーティションIDあたりの帯域幅カウンタに加えて、ウィンドウ内のコマンドの履歴を追跡するためのより多くのハードウェアを必要とする。
【0081】
全てのパーティションの最小帯域幅割り当ては、合計して、使用可能な帯域幅よりも多くの帯域幅になり得る。未使用の割り当ては、使用する他のパーティションのために使用可能であるため、これは、いくつかのパーティションが当該パーティションの帯域幅割り当てを使用していないときに、問題でない。しかしながら、最小帯域幅が過剰に割り当てられたときに、パーティションについてプログラムされた最小帯域幅が、常に満たされ得るわけではない。ソフトウェアは、プログラムされた最小帯域幅割り当てがシステムによって信頼性をもって配送されることを確実にするために、最小帯域幅が過剰に割り当てられないことを確実にすることができる。
【0082】
使用可能な帯域幅は、例えばDDRクロックなどの多くのシステムにおいて、1つ以上のクロック周波数に依存し得るため、ソフトウェアは、使用可能な帯域幅に影響するクロックを変更するときに帯域幅を再割り当てすることを望み得る。割り当てを変更せずにクロックレートを低下させることは、帯域幅の過剰な割り当てをもたらし得る。DRAMチャネルにおける使用可能な帯域幅は、一定ではないが、クロックレートと、読み取り及び書き込みの組み合わせと、バンクヒットレートとで変化することに留意されたい。
【0083】
記載のタイプの帯域幅制御は、メモリチャネルコントローラにおいてのみ使用されることに限定されず、任意のメモリシステム構成要素において帯域幅を制御するために展開され得ることが、当業者には理解されよう。
【0084】
優先度パーティショニング
本書に記載の他のメモリシステムリソースとは異なり、優先度は、メモリシステムリソースの割り当てに直接影響せず、代わりに、リソースへのアクセスについて生じる争いへの効果を有する。適切に構成されたシステムは、優先度付けに起因する重要な性能効果をめったに有することがないべきであるが、優先度は、即時又は持続にかかわらずオーバーサブスクリプションの状況において重要な役割を果たす。したがって、「優先度パーティショニング」は、パーティション間のメモリシステム効果を分離するのを支援するためのツールとして使用され得る。
【0085】
パーティションには、(優先度パーティショニングをサポートする)メモリシステムにおける構成要素のそれぞれにおいて優先度が割り当てられ得る。このパーティショニング制御は、メモリシステムの異なる部分が、要求を異なる優先度で処理するようにセットアップされることを可能にする。例えば、プロセッサからシステムキャッシュへの要求は、システムキャッシュからメインメモリへの要求よりも高い転送優先度を使用するように設定されてもよい。
【0086】
2つのタイプの優先度が、パーティションIDのそれぞれについて識別され得る。
内部優先度は、このメモリシステム構成要素の内部動作において使用される優先度を制御する。内部優先度は、内部動作を優先するために、メモリシステム構成要素内で使用され得る。例えば、メモリコントローラは、帯域幅割り当てが明確な勝者を選ばないときに、待機する要求間で選択するために、内部優先度を使用し得る。
下流優先度は、別のメモリシステム構成要素に(例えば、相互接続又はメモリコントローラに)下流で通信される優先度を制御する。「下流」とは、要求についての通信方向を指す。「上流」応答は通常、転送優先度を生成した要求と同じ転送優先度を使用する。メモリシステム構成要素は、優先度パーティショニングを有さない下流構成要素よりも優先度を示すために、下流優先度を使用する。これは、下流にある相互接続構成要素について転送優先度を設定するために使用され得る。
一方、構成要素が優先度パーティショニングを実装しない場合に、又は構成要素が下流優先度を実装しない場合に、構成要素は、「スルー優先度(through priority)」を使用し得、下流優先度は、着信(上流)優先度又は要求と同じである。同様に、メモリシステム構成要素を(下流から上流へ)通過する応答の優先度は、(下流から)受信された応答と同じ優先度である。
【0087】
リソース制御パラメータ制約
上記の例では、MSCにおいてリソースの割り当て又はリソースについての競合の管理を制御するために使用され得る様々なメモリシステム構成要素(MSC)リソース制御パラメータが記載されている。例えば、リソース制御パラメータは、上記の図9図11のキャッシュ例に示す閾値容量ベースの制御又は部分ベースの制御のいずれかを含むことができ、又は図2の例に示すメモリ帯域幅割り当てについての最小帯域幅制御若しくは最大帯域幅制御を含むことができ、又は優先度ベースの制御を含むことができる。上記の図9の例に示すように、リソース制御パラメータは、MSCのあるメモリマップドレジスタへのメモリアクセスを使用して更新され得る。MMU 70によるメモリアクセスを制御するために使用されるページテーブルによって定義されたメモリマップは、どのソフトウェアプロセスが、所与のMSCのリソース制御パラメータを設定するために使用される構成レジスタにマッピングされたメモリアドレスにアクセスすることが可能にされているかを指定することができる。例えば、1つの手法は、処理回路の特定の動作状態でのソフトウェアプロセスについてのリソース制御パラメータが、当該動作状態に関連付けられた最高特権レベルのソフトウェアによってアクセス可能であってもよいことであり得る。例えば、セキュアパーティション識別子に関連付けられたリソース制御パラメータは、ハイパーバイザ又はオペレーティングシステムなどのセキュアドメインにおいて動作する最高特権レベルのコード(又は第2の最高特権)によって更新可能であり得る。非セキュアコードは、セキュア状態に関連付けられたリソース制御パラメータの更新を制御するメモリマップドレジスタに書き込むことが可能にされていないことがある。一方、非セキュアドメインにおいて動作する最高特権(又は第2の最高特権)コードは、非セキュアパーティションに関連付けられたリソース制御パラメータを設定することが可能にされ得る。
【0088】
したがって、セキュアドメインにおけるソフトウェアは、セキュアソフトウェア実行環境についてのパーティション識別子に関連付けられたリソース制御パラメータを設定することによって、(キャッシュ容量のフラクションなどの)リソースのいくつかの部分を、当該ソフトウェアの排他的使用のために確保することが可能である。例えば、セキュアソフトウェアは、当該セキュアプロセスについて割り当てられることが可能であるキャッシュの少なくとも一部分を残すように、図11に示すようにキャッシュパーティションビットマップを設定することができるが、これについては、他のプロセスについてのパーティションビットマップは、当該部分がこれらの他のプロセスに割り当てられないことを指定する。特に、セキュアソフトウェアは、これらの他のパーティションIDについて割れ当てされていないキャッシュの当該専用部分を残すように、非セキュアパーティションIDについてパーティションビットマップを設定することができる。
【0089】
しかしながら、非セキュアソフトウェアがまた、非セキュアパーティションIDについてリソース制御パラメータを設定することが可能である場合に、その後、当該非セキュアソフトウェアは、セキュアソフトウェアによって確保されたキャッシュの専用部分がまた、非セキュアソフトウェアについて割り当てられ得、セキュアソフトウェアによって期待された専用使用に実際に違反することを示すために、これらの非セキュアパーティションIDのうちの1つについてパーティションビットマップを更新することができる。
【0090】
同様の問題が存在し得、当該問題において、あるリアルタイムソフトウェアは、あるリソースへの排他的アクセスを認可されているが、次いでその後、他のプロセスに関連付けられたパーティション識別子は、これらの他のパーティションIDについてメモリシステム構成要素リソース制御パラメータを更新することによって、確保された部分へのアクセスを割り当てられ、これは、リアルタイムソフトウェアが、リアルタイムソフトウェアのサービス保証を満たすことを困難にし得る。
【0091】
以下の例では、メモリシステム構成要素(MSC)には、プログラム可能制約記憶回路が設けられており、プログラム可能制約記憶回路は、少なくとも1つのリソース制御パラメータ制約を記憶し、少なくとも1つのリソース制御パラメータ制約は、リソースについての割り当て若しくは競合を管理するために使用されるリソース制御パラメータに行われ得る更新を制約するために、又はメモリトランザクションの処理時にリソース制御パラメータの使用を制約するために使用され得る。プログラム可能制約記憶回路に記憶されたリソース制御パラメータ制約へのアクセスは、動作状態のあるサブセット、例えばセキュアドメインに制限されている。これは、動作状態のサブセットが、リソースの以前に設定されたパーティショニングがリソース制御パラメータへのその後の更新によって損なわれる機会を低減するために、どのリソース制御パラメータが他の状態で可能にされているかを制限することを可能にする。これは、あるセキュア又はリアルタイムソフトウェアについてのキャッシュ又は帯域幅リソースの専用使用を実施するために特に有用であり得る。
【0092】
図12は、上記の例のようにキャッシュ8、12、16、20又はメモリコントローラ24のうちの1つであり得るメモリシステム構成要素の一例を示す。キャッシュ例については、図12に示されていないが、図12のMSCはまた、キャッシュストレージ302、割り当てカウントレジスタ326、メモリマップド状態及び構成レジスタ360、並びに性能監視ストレージ380、382などの図9に示す構成要素のいくつかを含み得ることが理解されよう。
【0093】
MSCは、リソース制御パラメータ記憶回路400(例えば、レジスタ)のセットを有し、リソース制御パラメータ記憶回路400は、リソース制御パラメータのセットのそれぞれをパーティション識別子のそれぞれについて記憶する。マルチプレクサ402は、メモリシステムリソースの使用についての要求に関連付けられたパーティション識別子(及びセキュリティドメインインジケータ)に基づいて、制御パラメータのセット間で選択する。パーティション識別子及びセキュリティインジケータは、前述のように要求を発行する処理要素によって生成される。リソース制御パラメータの選択されたセットは、指定されたパーティション識別子に関連付けられたメモリトランザクションを処理するための又はリソースへの競合を管理するためのリソースの割り当てを制御するために、リソース制御回路404によって使用される。リソース制御回路によって実行される特定の制御は、メモリシステム構成要素のタイプに依存して変化し得、例えば、キャッシュについては、制御は、どのキャッシュエントリが、メモリトランザクションに関連付けられたデータを記憶するために割り当てられ得るかであり得、メモリコントローラについては、制御は、バスにおける帯域幅が、トランザクションに割り当てられ得るがどうかの制御であり得る。
【0094】
MSCは、処理要素から受信されたパラメータ更新要求412に応答してリソース制御パラメータ400の更新を制御するためのリソース制御パラメータ更新回路410を有する。例えば、パラメータ更新要求412は、リソース制御パラメータレジスタ400のうちの1つにマッピングされたメモリアドレスを、ストアメモリトランザクションのターゲットアドレスとして指定するストアメモリトランザクションであってもよい。代替として、図9に示す例のようにメモリマップド状態又は構成レジスタ360を使用する例では、パラメータ更新要求412は、構成レジスタ360のうちの1つにマッピングされたアドレスを指定することができ、これらの構成レジスタ360に行われた更新は、次いで、対応するリソース制御パラメータレジスタ400を更新するように、リソース制御パラメータ更新回路410を制御することができる。構成レジスタを使用するこの手法は、対応するリソース制御パラメータレジスタのそれぞれが、当該レジスタ自体のメモリマップドアドレスを有する場合と比較して、メモリマップに曝される必要があるアドレスの数を低減することを助長することができる。したがって、リソース制御パラメータがパラメータ更新要求に応答して更新され得るいくつかの方法があることが理解されよう。
【0095】
少なくとも1つのパーティション識別子に関連付けられた少なくとも1つのターゲットリソース制御パラメータに書き込まれる新しい値を指定するパラメータ更新要求が受信されたときに、いくつかの実施形態では、リソース制御パラメータ更新回路410は、プログラム可能制約記憶回路420に記憶された少なくとも1つのリソース制御パラメータ制約に基づいて、ターゲットリソース制御パラメータの当該更新が可能にされているかどうかを制御する。例えば、リソース制御パラメータ制約は、あるリソース制御パラメータについて設定されることが可能である最小値又は最大値を限ることができ、又はメモリシステムリソースのある部分が、リソースの当該部分が任意のパーティション識別子に割り当てられることが可能にされているとして示すように更新されている、当該部分の対応するリソース制御パラメータを、有することが可能にされているどうかを指定することができる。したがって、パラメータ更新要求412に応答してターゲットリソース制御パラメータを更新するときに、リソース制御パラメータ更新回路410は、当該要求された更新がプログラム可能制約記憶回路420において指定された制約を満たすかどうかを考え、パラメータ更新要求がこれらの制約に違反する場合に、リソース制御パラメータ更新回路410は、要求を拒否することができ、又はリソース制御パラメータ更新回路410は、制約によって可能にされている程度に、要求に応じることができる。例えば、制約に違反する値を設定する代わりに、リソース制御パラメータ更新回路410は、リソース制御パラメータを要求された値とは異なる値に設定することができ、異なる値は制約を満たす。
【0096】
したがって、このようにして、制約は、リソース制御パラメータのあるセットがMSCのレジスタ400内で確立されると、その後の更新が、プログラム可能制約記憶回路420において定義された制約の限界外でこれらのパラメータを更新することができないことを確実にするために使用され得る。これは、あるクリティカルソフトウェア、例えば、セキュアドメイン90において実行するセキュアソフトウェア、又は応答待ち時間のある限界を必要とするリアルタイムクリティカルソフトウェアなどについての期待されたリソースパーティショニングのより良好な保証を提供する。
【0097】
代替として、リソース制御パラメータを更新する時に制約を適用する代わりに、制約は、メモリトランザクションの処理を制御するためにリソース制御パラメータ400を使用する時に、リソース制御回路404によって適用され得る。これについて、図18を参照して以下で更に説明する。
【0098】
制約がリソース制御パラメータの更新時又は使用時に適用されるかどうかにかかわらず、プログラム可能制約記憶回路420は、所与の処理要素6の処理回路によって発行された制約更新要求422に応答してプログラム可能である。例えば、プログラム可能制約記憶回路420は、1つ以上のメモリマップドレジスタをMSC内に備えてもよく、1つ以上のメモリマップドレジスタは、これらのレジスタのうちの1つにマッピングされたメモリアドレスを、ストアメモリトランザクションのターゲットアドレスとして指定するストアメモリトランザクションを発行することによって更新され得る。当該制約更新要求422が、動作状態の制限されたサブセットのうちの(処理回路6の少なくとも1つの動作状態を除外する)1つにあるときの処理回路6によって発行されたときに、プログラム可能制約記憶回路は、制約更新要求に応答してプログラム可能であってもよい。したがって、制約更新要求42が、動作状態のこれらの制限されたサブセットのうちの1つ以外の動作状態にあるときの処理回路6によって発行された場合に、プログラム可能制約記憶回路のプログラミングは、制約更新要求422に応答して禁止され得る。これは、リソース制御パラメータ400を設定することが可能にされているが、動作状態の制限されたサブセットのうちの1つでないソフトウェア実行環境が、動作状態の制限されたサブセットのうちの1つD実行するソフトウェアによって設定された制約に従うように強いられていることを確実にし、これは、動作状態の制限されたサブセットによって実施されるリソース制御パラメータ制約のより強力な保証を提供する。
【0099】
例えば、処理回路は、前述のようにセキュアドメイン90及び低セキュアドメイン92のうちの1つにおいて動作することができ、動作状態の制限されたサブセットは、処理回路がセキュアドメインにおいて動作する少なくとも1つの動作状態を含むことができる。したがって、セキュアソフトウェアは、プログラム可能制約記憶回路420に記憶されたリソース制御パラメータ制約を設定することが可能であり得るが、低セキュアドメイン92における非セキュアソフトウェアは、制約を設定することが可能でないことがある。これは、非セキュアソフトウェアによって実行されるリソース制御パラメータ400への更新が、セキュアソフトウェアによって課される制約を受けることを意味する。これは、非セキュアソフトウェアに課されるリソース割り当ての上限(cap)又は限度のセキュアドメインからの中央制御を有効にし、非セキュアソフトウェアが、セキュアソフトウェアによって確立された以前に確立されたリソース制御パラメータ400を変化させることができる程度を限る。
【0100】
一例では、制約更新要求422が動作状態の制限されたサブセット(セキュアドメインなど)から発行された場合にのみ、制約更新要求422が成功することができるという実施は、メモリ管理ユニット70によって使用されるページテーブルにおいて定義されたメモリマップの制御によって行われ得る。例えば、プログラム可能制約記憶回路420に対応するレジスタにマッピングされたアドレスは、セキュアコードにのみアクセス可能であるとして任意のページテーブル構造において定義されてもよく、非セキュアコードにアクセス不可能であってもよい。また、これらのアドレスはまた、特権レベルに基づいて、アクセスにおいて制限された更にてもよく、このため、所与の特権レベル以上に関連付けられたセキュアコードのみが、リソース制御パラメータ制約を記憶するためにメモリマップドレジスタにアクセスすることができる。
【0101】
プログラム可能制約記憶回路420が、リソース制御パラメータ制約を新しい値に更新するように再プログラムされたときに、レジスタ400に記憶されたメモリシステム構成要素リソース制御パラメータのうちのいくつかの現在の値が、プログラム可能制約記憶回路420に設定された制約の新しい値に違反し得る可能性がある。この場合に、新しい制約に違反するにもかかわらず、レジスタ400におけるリソース制御パラメータの古い値を変更する必要はない。MSCは、制約の新しい値に違反する任意の所与のMSCリソース制御パラメータの現在の値が、今や、リソース制御パラメータ制約420によって示された限界外にあることにかかわらず、当該現在の値を保持することが好ましい。これは、制約を設定することが可能であるセキュアソフトウェア又は他のソフトウェアが、最初に、当該セキュアソフトウェア又は他のソフトウェア自体のリソース割り当てを支配する又は(リアルタイムソフトウェアなどの)ある好ましいソフトウェア実行環境についての割り当てを支配するリソース制御パラメータにおいて、リソースに富むある設定を設定し、次いで、リソース制御パラメータ制約420を、より少なくリソースに富む閾値に設定して、以前に設定されたリソースに富む制御を依然として保持しつつ、レジスタ400におけるリソース制御パラメータへの将来の更新を制約することが可能にされていることを確実にする。制約制御ソフトウェアが、次いでその後、リソースに富む新しい設定を、現在の制約値に違反するリソース制御パラメータ400に追加する必要がある場合に、制約制御ソフトウェアは、プログラム可能制約記憶回路420において定義された制約を(例えばセキュアパーティションなどのパーティションの少なくともサブセットについて)一時的に緩める又は除去することができ、次いで、リソースに富む新しいリソース制御パラメータをレジスタ400に追加することができ、次いで、プログラム可能制約記憶回路420における制約を復元して、他のソフトウェアが、制約に違反するリソース制御パラメータ設定をプログラミングすることを防止することができる。
【0102】
図13は、プログラム可能制約記憶回路420におけるリソース制御パラメータ制約の更新を要求する制約更新要求422に応答する方法を示すフロー図である。ステップ450で、制約更新要求が受信され、ステップ452で、制約更新要求がセキュアドメイン又は低セキュアドメインから発行されたかが判定される。プログラム可能制約記憶回路420へのアクセスが、MMU 70によって使用されるメモリマップにより制御される一例では、次いで、ステップ450及び452は、制約更新要求を受信するMSCによってではなく、MMU 70によって実際に実行されてもよい。代替形態では、制約更新要求は、要求がどのドメインから発行されたかのチェックにかかわらず、要求が発行されたドメイン90、92を示すインジケータを伴って、MSCに転送され得、次いで、MSCにおけるいくつかの回路は、制約更新要求がセキュアドメインから発行されたかどうかをチェックすることができる。この場合に、ステップ452は、MSC自体において実行される。
【0103】
したがって、制約更新要求が低セキュアドメイン92から発行されたと、ステップ452で判定された場合に、次いで、ステップ454で、制約更新要求42は拒否される。制約更新要求がセキュアドメインから発行された場合に、次いで、ステップ456で、制約更新要求は、MSCによって応じられ、MSCは、プログラム可能制約記憶回路420に記憶された少なくとも1つのリソース制御パラメータ制約を、制約更新要求で指定された1つ以上の新しい値に更新する。制約の更新に続いて、MSCリソース制御パラメータ400の古い値が、制約更新要求に応答してプログラム可能制約記憶回路420において設定された制約についての新しい値に違反する場合でも、ステップ458で、MSCリソース制御パラメータ400の古い値は保持される。これは、将来の更新が制限されている場合でも、以前に割り当てられたリソースに富む設定が保持されることを確実にする。
【0104】
図14は、リソース制御パラメータへの更新を要求する、MSCにおいて受信されたパラメータ更新要求412の処理を示すフロー図を示す。この実施形態では、リソース制御パラメータ制約は、パラメータ更新要求の処理を制約するリソース制御パラメータ更新制約として使用される。ステップ470で、リソース制御パラメータ更新回路410は、例えば前述のようにメモリマップドストアトランザクションであり得るパラメータ更新要求412を受信する。パラメータ更新要求は、所与のパーティション識別子に関連付けられた1つ以上のターゲットリソース制御パラメータに書き込まれる1つ以上の新しい値を指定する。ステップ472で、リソース制御パラメータ更新回路410は、指定された新しいパラメータ値が、プログラム可能制約記憶回路420において設定されたリソース制御パラメータ更新制約に違反するかどうかをチェックする。そうでない場合に、次いで、ステップ474で、新しいパラメータ値は、レジスタ400内のターゲットリソース制御パラメータに書き込まれ得、このため、新しいパーティション制御設定が提供される。
【0105】
一方、ステップ472で、新しいパラメータ値がプログラム可能制約記憶回路420において指定されたリソース制御パラメータ更新制約に違反する場合に、異なるオプションが、この事象に応答するために使用可能である。1つのオプションでは、ステップ476で、パラメータ更新要求412は、単に拒否され得、このため、ターゲットリソース制御パラメータの以前の値は保持され、パラメータ更新要求412によって要求された更新は行われない。
【0106】
代替として、ステップ478に示すように、パラメータ更新要求を単に拒否する代わりに、パラメータ更新要求は、リソース制御パラメータ更新制約によって許可された程度に応じられてもよい。したがって、パラメータ更新要求412に応答して、ターゲットメモリシステム構成要素リソース制御パラメータについての新しい値が、リソース制御パラメータ更新制約に違反するときに、MSCのリソース制御パラメータ更新回路410は、制約に違反した新しい値を使用する代わりに、ターゲットMSCリソース制御パラメータを、リソース制御パラメータ更新制約を満たす値に設定する。例えば、リソース制御パラメータ更新回路410は、制約によって許可された程度と同じ程度にメモリシステムリソースへのアクセスを認可するように、ターゲットMSCリソース制御パラメータを設定することを試みることができる。例えば、ターゲットMSCリソース制御パラメータは、パラメータ更新要求で指定された新しいパラメータ値に設定される代わりに、リソース制御パラメータ更新制約において定義された閾値と一致する値に設定され得る。したがって、この手法では、所与のソフトウェアプロセスが、パラメータが、多すぎるリソースを所与のパーティション識別子に認可するように更新されることを要求した場合に、代わりに、MSCは、プログラム可能制約記憶回路420において設定された制約の限界内で許可された程度と同じ程度に、リソースへのアクセスを認可する。この手法は、性能を改善することができる(セキュアコードなどのある制約制御ソフトウェアによって実施される制約を依然として尊重しつつ、より多くのリソースを認可され得るプロセスのための不必要にリソースに乏しい設定を回避する)。
【0107】
ステップ476及び478でのオプションのどれが取られるかにかかわらず、ステップ480で、リソース制御パラメータ更新回路410は、制約エラー報告がこの特定のMSCについてサポートされており有効にされているかどうかを判定し得る。制約エラーがサポートされており有効にされている場合に、次いで、ステップ482で、エラー報告アクションが実行される。このエラー報告アクションは、エラー報告情報をエラー報告記憶要素に記録すること、及び/又は割り込みをシグナリングすることのうちの少なくとも1つであり得る。一方、エラー報告がサポートされていない場合に、又はエラー報告をサポートしない実装では、エラー報告が現在有効にされていない場合に、次いで、ステップ484で、エラー報告アクションは実行されない。
【0108】
概して、パラメータ更新制約に違反した新しいパラメータ値を指定するパラメータ更新要求に起因して、パラメータ更新要求が完全に応じられていないかどうかを、ソフトウェアに認識させることが有用であり得る。これは、デバッグのために有用であり得、このため、例えば、ソフトウェアが、予期されているよりもメモリシステムリソースへの少ないアクセスを得ているために、ソフトウェアが期待とおりに挙動していない場合に、これの理由が認識され得る。これは、コード開発を助長することができる。
【0109】
いくつかのハードウェア実装は、エラー報告を全くサポートしないことがあり、この場合に、パラメータ更新要求についての新しいパラメータ値がパラメータ更新制約に違反するときに、エラー報告アクションは実行されないことがあり、このため、このような実装については、方法は、常にステップ484に進む。
【0110】
しかしながら、エラー報告をサポートする他の実装については、これは、デバッグ能力を改善するために有用であり得、このため、要求リソース制御パラメータ更新が、プログラム可能制約記憶回路において設定された制約に起因してダウングレードされた場合に、ソフトウェアは、通知を受信することができる。エラー報告をサポートするいくつかのこのような実装は、エラー報告を恒久的に有効にすることができ、このため、方法は、常にステップ482に進み、ステップ484は実行されることがない。
【0111】
しかしながら、エラー報告のためのハードウェアサポートを提供する他の実装では、エラー報告が有効又は無効にされているかは、構成記憶要素に記憶されたプログラム可能構成情報に依存し得る。例えば、構成記憶要素は、エラー報告を有効又は無効にするパラメータを記憶するMSCの別のメモリマップドレジスタであり得る。いくつかの場合に、構成は、単に、エラー報告が実行される又は全く実行されないかの構成であってもよい。他の例では、構成情報はまた、エラー報告のより詳細なプロパティを指定することができ、例えば、取られる特定のエラー報告アクションを定義する(例えば、構成情報は、エラー報告アクションが実行されるときに割り込みがシグナリングされるかどうか、又はエラーが、割り込みをシグナリングせずに、単に、エラー報告記憶要素に記録されるかどうかを構成可能であり得る)。別のエラー報告構成オプションは、いくつかのタイプのエラーの発生を報告し、他のタイプのエラーの発生を報告しないことであり得る。したがって、制約エラーは、報告される又は報告されないように構成可能であり得る。
【0112】
図12図14の例では、リソース制御パラメータ制約について、概括的に考察する。図15図17は、対応するタイプのMSCリソース制御パラメータに課され得るより具体的なタイプの制約の例を示す。
【0113】
図15は、前述の図11の例のように部分ビットマップを使用するリソース制御パラメータへの更新を制約する一例を示す。例えば、図15は、1つのパーティションIDについてのキャッシュ部分ビットマップ(Cache Portion Bitmap、CPBM)502を示し、CPBM 502は、当該パーティションIDに関連付けられた要求についてキャッシュへの割り当てを制御するために使用され得、ビットマップは、いくつかのビットを含み、いくつかのビットはそれぞれ、キャッシュ容量のある部分に対応する。所与のビットが0の値を有するときに、これは、対応するパーティションIDについてのソフトウェアが、データをキャッシュの対応する部分に割り当てることが可能にされていないことを示し、ビットが1の値を有するときに、対応するパーティションIDについてのソフトウェアは、データをキャッシュの対応する部分に割り当てることが可能にされている。図15は、このような部分ビットマップに基づいてキャッシュ割り当てを制御する一例を示すが、他のタイプのメモリシステム構成要素については、部分ベースのリソース割り当て制御パラメータを提供することも可能である。例えば、部分ベースの制御は、いくつかの独立したタイプのバスクレジットを提供することと、どのタイプのバスクレジットが特定のパーティション識別子によって使用されることが可能にされているかを示すために部分ベースのビットマップを使用することとによって、メモリ帯域幅割り当てに課せられ得る。したがって、概して、部分ベースのリソース割り当て制御パラメータが、提供され得、部分ベースのリソース割り当て制御パラメータは、リソースの2つ以上の部分のそれぞれについて、リソースの当該部分が、対応するパーティション識別子に関連付けられたソフトウェア実行環境による使用のために割り当てられることが可能にされているかどうかを指定する。
【0114】
図15に示すように、部分ベースのリソース割り当て制御パラメータが使用されるときに、リソース制御パラメータ更新制約はまた、マスクとして作用するビットマップ500として定義され得、部分ベースのリソース割り当て制御パラメータとして指定されたリソース制御ビットマップ502の少なくともサブセットへの更新をマスクする。マスクビットマップ(CPMBM)500は、部分ベースの制約として機能し、部分ベースの制約は、部分ビットマップ502における対応するビットを有するリソースの部分のうちの部分のサブセットのそれぞれについて、任意のパーティションIDについての部分ベースのリソース割り当て制御パラメータ502のうちのいずれかが、当該特定の部分が使用のために割り当てられることが可能にされているとして示すように更新されることが可能にされているかどうかを指定する。例えば、図15に示す符号化では、部分マスクビットマップ500の所与のビット504が0である場合に、部分ビットマップ502の対応するビットは、対応するパーティションIDが、キャッシュ又はメモリリソースの当該対応する部分を使用することが可能にされていることを示すために、1に設定されることが可能にされている。一方、部分マスクビットマップ500の所与のビット506が1の値を有するときに、これは、対応するビットを1に設定することが可能にされていないことを示し得る。マスクビットマップ500は、全てのパーティション識別子に関連付けられた全ての部分ビットマップ502の間で共有され(図15は、1つのパーティションIDについての部分ビットマップ502のみを示すが、他のパーティションIDはそれぞれ、当該他のパーティションID自体の部分ビットマップを有する)、このため、部分ビットマップのそれぞれは、部分マスクビットマップ500において定義された同じ更新制約を受けることに留意されたい。
【0115】
したがって、部分マスクビットマップ500は、部分ベースの制約として機能し、部分ベースの制約は、その後の要求で要求され得るリソースを限るために、どの更新が部分ベースのリソース割り当て制御パラメータ502に行われ得るかを制約する。これは、セキュアドメインソフトウェアが、セキュアドメインソフトウェア自体に又は特定の他のソフトウェア実行環境に、メモリシステム構成要素リソースのある部分の専用使用を割り当て、別のパーティションを、確保された専用リソースを使用することから除外するように、当該他のパーティションのパーティション識別子について制御パラメータを設定し、次いで、1に等しいビットを有する部分マスクビットマップ500における制約を、確保された部分に対応する場所に設定することによって、これは、任意の他の制御ソフトウェアが、任意のパーティションIDについてリソース制御ビットマップ502をその後更新して、確保された部分に対応するビットを0から1に変更することを防止することを意味する。
【0116】
例示的な一実装では、部分ビットマップ502の更新が試みられ、部分ビットマップ502の更新について、部分ビットマップ502の所与のビットが、1に設定されることが試みられるが、部分マスクビットマップ500の対応するビットが、これが禁止されていることを指定するときに、部分ビットマップ502の所与のビットは、当該ビットの以前の値を保持する(このため、0に以前に設定された場合に、新しい部分ビットマップ値508の対応するビットが1であるにもかかわらず、当該ビットは0に留まるが、部分ビットマップの所与のビットが、更新前に1であった場合に、当該ビットは、更新後に、1の当該ビットの値を保持することができる)。しかしながら、この挙動は必須でない。
【0117】
第2の手法は、部分ビットマップ502を更新する際に、部分ビットマップ502の「マスクアウトされた(masked out)」ビット(「マスクアウトされた」ビットは、部分マスクビットマップ502の「1」ビット506に対応し、「1」ビット506は、部分ビットマップ500の対応するビットを1に設定することが禁止されていることを示す)が、「マスクアウトされた」ビットの以前の状態にかかわらず、0にクリアされることであり得る。換言すれば、マスクビットマップ500は、更新が部分ビットマップ502に適用されるときに、適用され、マスクビットマップ500における「許可されていないビット」506は、(リソースの当該部分が、対応するパーティションIDを有する要求に割り当てられないことがあることを示すために)部分ビットマップ502における対応する「マスクアウトされた」ビットがクリアされることを強いる。したがって、この手法が取られる場合に、部分ビットマップ502の「マスクアウトされた」ビットの以前の値は重要でない。これは、対応するPARTIDが、新しいソフトウェア環境に再使用されたため、制御設定テーブルにおける関連するエントリが更新されていることであり得るため、これは有用であり得、このため、以前のソフトウェア環境についての以前に割り当てられた設定が、部分マスクビットマップ500において定義された制約に違反する場合に、当該設定がクリアされることを確実にすることが好ましいことがある。したがって、この実施形態では、部分マスクビットマップ502によって識別された「マスクアウトされた」ビットは、部分ビットマップ500についての新しい値508が、リソースの当該部分をパーティションIDに割り当てることを許可することができないことを示し、このため、パーティションIDについての部分ビットマップ500へのその後の書き込みの後に、新しく書き込まれた部分ビットマップ500の対応するビットは、リソースの当該部分の割り当てが可能にされていないことを示すべきである(例えば、この実施形態では、当該ビットは0でなければならない)。
【0118】
この第2の手法では、部分ビットマップ500の更新のこの制約は、パラメータ更新要求で指定された新しいビットマップ値508と、制約部分マスクビットマップ500とを組み合わせることによって実施され得、これにより、新しい値は、部分マスクビットマップ502の対応するビットの反転の結果とビットANDされる。換言すれば、CPBM’[PARTID=CPBMnew AND(NOT(CPMBM))、式中、CPBM’[PARTID)は、要求された更新の後のパーティションID iについての部分ビットマップ500のビットjについて設定された新しい値であり、CPBMnewは、パーティションID iについての部分ビットマップ500に書き込まれるように要求された新しい値508のビットjであり、CPMBMは、制約部分マスクビットマップ502のビットjの値である。この手法は、部分マスクビットマップ500における1のビットに対応する新しいビットマップ値508におけるビットが0にクリアされることを意味する。例えば、図15に示す特定の事例では、パラメータ更新要求で指定された新しい部分ビットマップ値508は、ビットマップ502が、リソース部分0及び1が対応するパーティション識別子に割れ当てられることが可能であることを示すように更新されることを要求したが、部分マスクビットマップ500におけるビット0及び1は、1に設定されているため、これは、代わりに、更新を制約し、対応するパーティションの部分ビットマップ502のビット0及び1を0にクリアする。
【0119】
部分マスクビットマップ500が部分ビットマップ502と同じビット数を有することは必須でないことに留意されたい。典型的には、キャッシュ又はメモリ構成要素におけるリソースの少なくともある部分が他のソフトウェア実行環境に割れ当てられる必要があるため、実際には、制約記憶回路420を制御するソフトウェアが、部分ビットマップ502全体が0から1に変更されることを防止するように制約を課す可能性は低い。実際には、プログラム可能制約記憶回路420内の部分マスクビットマップ500のためのストレージを実装するためのハードウェアコスト、及びまた、部分マスクビットマップ500のビットのそれぞれを部分ビットマップについての新しい値508と組み合わせるための論理を実装するためのハードウェアコストがある。このハードウェアコストを限るために、部分マスクビットマップによって制約され得る部分の数の限度があり得、このため、部分マスクビットマップ502によってカバーされた範囲外にわたる部分ビットマップ500のビットについて、これらの部分についての部分マスクビットは、0に等しいと暗黙的に想定され得、このため、メモリシステム構成要素リソースのこれらの部分についての更新は、制約されていない。すなわち、部分マスクビットマップ(部分ベースの制約)は、リソースの部分のあるサブセットへの更新のみを実際に制約し得、当該サブセットは、リソースの少なくとも1つの部分を除外することができ、これは、ハードウェアの点でより効率的であり得る。この場合に、制約を制御するセキュアソフトウェアが、当該セキュアソフトウェア自体の使用のために、又は指定された他のソフトウェア実行環境による使用のために、リソースのある部分を確保することを望む場合に、当該セキュアソフトウェアは、部分マスクビットマップ500における明示的に記憶されたビットに対応する部分のうちの1つを、リソースの確保された部分として選択することを強いられ得る。
【0120】
したがって、要約すると、メモリシステム構成要素リソース制御パラメータが、部分ベースのリソース割り当て制御パラメータを含み、部分ベースのリソース割り当て制御パラメータが、リソースの2つ以上の部分のそれぞれについて、当該部分が、対応するパーティション識別子に関連付けられたソフトウェア実行環境による使用のために割り当てられることが可能にされているかどうかを指定する場合に、制約は、部分ベースの制約を含むことができ、部分ベースの制約は、部分のサブセットのそれぞれについて、対応する部分ベースのリソース割り当て制御パラメータが、当該部分が割り当てられることが可能にされているとして示すように更新されることが可能にされているかどうかを指定する。パラメータ更新要求が、部分ベースのリソース割り当て制御パラメータが、リソースの所与の部分が割れ当てられることが可能にされていることを示すように更新されることを要求し、部分ベースの制約が、所与の部分が、所与の部分が割れ当てられることが可能にされているとして示すように更新されることを禁止されていることを、指定する場合に、代わりに、部分ベースのリソース割り当て制御パラメータは、リソースの所与の部分が割り当てられることを禁止されていることを示すように設定され得る。これの一例が、図15の下部に示されており、この一例では、部分マスクビットマップ502のビット0及び1は、部分ベースの制約の0から1への移行が、使用可能なリソースのこれらの部分0及び部分1について禁止されていることを示すように、1に設定されたため、部分ビットマップ500のビット0及び1を1に等しく設定するための要求された更新は拒否され、代わりに、これらのビットは、部分ビットマップ502に書き込まれた新しい値において0に等しく設定される。
【0121】
図15に示す特定の符号化は必須でないことが理解されよう。例えば、他の実装は、部分ビットマップ502及び部分マスクビットマップ500のうちの1つ又は両方における0及び1の意味を反転させることができる。
【0122】
図16に示すように、前述したように、他のMSCは、フラクションベースのリソース制御パラメータを定義し得、フラクションベースのリソース制御パラメータは、対応するパーティション識別子に関連付けられたソフトウェアに割り当てられることが可能にされているリソースの最大フラクションの限度を設定する。例えば、図16は、所与のパーティション識別子についてのキャッシュ割り当ての最大フラクションが、キャッシュ割り当て閾値520によって定義されており、キャッシュ割り当て閾値520が、この例では、キャッシュ容量の40%に設定されている一例を示す。容量フラクション限度がMSCリソース制御パラメータにおいて課されている場合に、対応するパラメータ更新制約は、更なるフラクション522であることができ、更なるフラクション522は、フラクション制御520において指定されることが可能にされている最大フラクションの限度を設定する。再び、制約522は、パーティションIDのそれぞれについてフラクション制御パラメータ520のそれぞれ間で共有され得る(図16は、簡潔にするために、単一のパーティションIDについてのフラクション制御パラメータ520のみを示す)。例えば、図16では、リソース制御パラメータ520において設定されることが可能である最大フラクションは、50%であるとして制約ストレージ522において設定されている。したがって、ストレージの50%を超えるパーティションを割り当てるためにリソース制御パラメータ520を更新する試みは、拒否され得、又はプログラム可能制約522において設定された上限内で許可された程度に、部分的にのみ応じられ得る。この手法では、新しい値524が、フラクションベースの制御520に書き込まれるパラメータ更新要求412によって指定されたときに、当該新しい値524は、値522、524の最小値を出力する最小値判定回路526によってパラメータ更新制約522において指定された限度と組み合わされ得、次いで、得られた最小値528は、対応するパーティション識別子についての容量閾値フラクション値520に書き込まれる。したがって、要求された新しい値524が、パラメータ更新制約522において指定された限度以下であった場合に、新しい値は、単に、関連するリソース制御パラメータ520に書き込まれるが、新しい値が限度を超える場合に、代わりに、限度値が、書き込まれ、このため、対応するパーティションには、制約によって許可されたリソースよりも多くのリソースが割り当てられない。
【0123】
図17に示すように、前述のように最小帯域幅閾値530及び最大帯域幅閾値532を課すメモリコントローラ又は他のメモリシステム構成要素を有する例では、対応する最小制約限度534及び最大制約限度536は、プログラム可能制約回路420内に提供され得、プログラム可能制約回路420は、最小帯域幅値530及び最大帯域幅値532のそれぞれにそれぞれ書き込まれることが可能である最大値を限る。再び、最小閾値限度534又は最大閾値限度536の単一の事例が、全てのパーティションIDについて帯域幅制御530、532間で共有され得る。図16と同様に、制約値534、536は、最小値判定回路542、544を使用して最小帯域幅限度530及び最大帯域幅限度532のうちの1つに書き込まれる新しい値538、540と組み合わされ、このため、最小帯域幅値及び最大帯域幅値についてリソース制御パラメータ530、532に書き込まれた値は、最小帯域幅及び最大帯域幅の両方について、対応する制約値534、536において指定されたレベルで上限される。したがって、最大帯域幅への更新をあるレベルに上限することによって、これは、所与のパーティションが、セキュアドメインコードなどの制約制御ソフトウェアによって許可されたメモリ帯域幅の配分よりも多く割り当てられることを防止する。また、最小帯域幅がある閾値レベルを超えて設定されることを防止することによって、これは、割り当てられた帯域幅が最小閾値未満であるときに、メモリトランザクションが、高められた優先度を有することができる程度に、限度があることを確実にする。
【0124】
したがって、図16及び図17の例は、メモリシステム構成要素リソース制御パラメータのセットが、リソース割り当て閾値パラメータを含む、リソース割り当て閾値パラメータが、対応するパーティション識別子に関連付けられたソフトウェア実行環境による使用のためのリソースの割り当てを制御するための最大閾値若しくは最小閾値、又はリソースについての競合の管理を制御するための最大閾値若しくは最小閾値のいずれかを示す例である。このリソース割り当て閾値パラメータは、最大閾値であることができ、(図16及び図17に示す例520、532のように)リソースの更なる割り当てが、最大閾値よりも大きいリソースの量が対応するソフトウェア実行環境に割れ当てられること生じさせる場合に、リソースの当該更なる割り当ては防止される。代替として、リソース割り当て閾値パラメータは、図17に示す例530のように、最小閾値を示すことができ、これにより、対応するソフトウェア実行環境に割り当てられたリソースの現在のフラクション又は量が、リソース割り当て閾値パラメータによって示された最小閾値未満であるときに、対応するソフトウェア実行環境によって発行された要求の優先度が、高められ得る。
【0125】
どちらかの方法、閾値が最小値又は最大値であるかにかかわらず、リソース制御パラメータ更新制約は、閾値上限値を指定する閾値上限制約(例えば、図16及び図17に示す例522、534、536)を指定することができる。パラメータ更新要求が、リソース割り当て閾値パラメータ520、530、532の更新を要求する場合に、メモリシステム構成要素は、閾値上限制約522、534、536によって示された閾値上限値よりも大きい閾値を最大閾値又は最小閾値のいずれかとして示すように、リソース割り当て閾値パラメータ520、530、532が更新されることを禁止することができる。特に、リソース割り当て閾値パラメータを更新するときに、メモリシステム構成要素は、パラメータ更新要求によって指定された新しい閾値524、538、540と、閾値上限制約によって示された閾値上限値522、534、536との最小値を示すように、リソース割り当て閾値パラメータを設定することができる。
【0126】
図15図17は、MSCリソース制御パラメータのタイプのいくつかの例と、これらのパラメータへの更新を含むように設定され得る制約の対応する例とを示すが、これらは、提供され得る唯一の例でないことが理解されよう。別の例では、比例ストライドリソースが定義され得る。比例ストライドリソース制御は、ストライドマイナス1パラメータ(STRIDEM 1)を有する。STRIDEM 1は、非負整数として表される。0のSTRIDEM 1値は、リソースへの最大アクセスを得る。1のSTRIDEM 1値は、リソースへの半分のアクセスを得、3のSTRIDEM 1値は、リソースへの4分の1のアクセスを得、以下同様である。比例ストライドリソース制御の制約はまた、非負整数である。STRIDEM 1の新しい値が、PARTIDについて書き込まれたときに、制御設定ストレージに記憶された値は、新しい値及び制約の最大値である。
【0127】
処理システムがリセットされたときに(例えば、電源投入の際に、又は装置がある既知の所定の状態にリセットされることを示すリセット信号が受信されたときに)、プログラム可能制約記憶回路420のコンテンツは、セットのそれぞれ及びメモリシステム構成要素リソース制御パラメータ400の更新が制約されていないことを示す値にリセットされ得る。したがって、これは、電源投入又はリセット直後に実行するシステムファームウェアが、リソース制御パラメータ400のセットのそれぞれを制限なく設定することを可能にし、このため、リソースのある部分への専用アクセスは、制約420を設定する前に実施され得、これは、次いで、これらのリソース制御設定を、他のソフトウェアによるその後の更新から保護する。
【0128】
代替として、いくつかの実装では、MSCリソース制御パラメータへの制約されていない更新を示す値への制約のリセットを実施するハードウェア回路がないことがある。この場合に、リセット後に、デバイスにおいて実行するファームウェア又は他のプラットフォームソフトウェアは、専用リソースの分配(carve out)が実施された時点までリソース制御パラメータへの制約されていない更新を許可するように制約レジスタ420を設定することと、次いでその後、その後の更新を抑制するように、制約をプログラム可能制約記憶回路420において設定することとによって、デバイスを適宜にセットアップすることを担う。
【0129】
したがって、プログラム可能制約記憶回路の1つの可能な使用において、デバイスをセットアップするリセットファームウェアの後に、制約レジスタ420を設定することができ、このため、制約レジスタ420は、リソース制御パラメータ400における制約制御設定を全く行わない。例えば、図15の部分ベースのビットマップについては、これは、部分マスクビットマップ500の全てのビットが0に設定され得ることであり得る。図16の例におけるフラクションベースの閾値制御については、これは、制約レジスタ522において指定された限度値が、制約レジスタ522の許可された最大値に設定されることであり得、同様に、図17の例については、最小帯域幅パラメータ及び最大帯域幅パラメータを限る制約レジスタ534、536は、許可された最大制約値に設定され得る。システムファームウェアが、次いで、ブートプロセスにおいて初期から、専用使用のためにいくつかのリソースを分配する必要がある場合に、システムファームウェアは、制御タイプに依存して、メモリシステムリソースのある部分への排他的アクセスを、当該システムファームウェア自体若しくはある他のパーティションに認可するように、又はリソースの比較的高いフラクションを、当該システムファームウェア自体若しくは他のプロセスに認可するように、適切なリソース制御パラメータ400を設定することができる。必要に応じてリソース制御パラメータをセットアップして、次いで、システムファームウェアは、例えば、図15の部分マスクビットマップ500においていくつかのビットを1に等しく設定すること、又は図16及び図17の例のようにパラメータ更新制約レジスタ522、534、536において定義された閾値を低減することによって、制御パラメータについてのその後の更新のための柔軟性を低減するように制約を設定することができる。
【0130】
システムが通常動作になると、制約へのその後の更新は、ある制御ソフトウェア、例えば、制約のコントローラとして作用するセキュアドメインにおいて実行する潜在的に小さいソフトウェアに限られ得る。制約コントローラは、制約更新要求をセキュアソフトウェア及び非セキュアソフトウェアから受信することができ、制約更新要求を認可する又は拒否するかを決定することができる。次いで、このソフトウェアは、制約を実施するために、特定のメモリシステム構成要素における制約レジスタ420のコンテンツを必要に応じて変えることができる。
【0131】
別の例では、複数の制約が、所与のリソースについて設定され得、制約のそれぞれは、異なるコントローラによって制御され、より低い特権環境からのアクセスにのみ適用される。例えば、セキュア/非セキュアドメインを有するシステムにおいて、セキュアコントローラの制約は、セキュアドメインにおいてより低い特権レベルに当てはまることができ、非セキュアドメインにおいて全ての特権レベルに当てはまることができる。非セキュアコントローラは、非セキュア環境においてより低い特権に当てはまるがセキュア環境に当てはまらない制約を指定することができる。
【0132】
異なるタイプのリソース制御パラメータに対応するいくつかの異なるタイプの制約が、以上で考察されているが、任意の1つのプラットフォーム実装は、含まれている特定のメモリシステム構成要素及びリソースパーティショニング制御に依存して、これらの例の全てを使用しなくてもよいことが理解されよう。また、いくつかの実装は、1つのタイプの制約を使用するいくつかのメモリシステム構成要素と、(メモリシステム構成要素のそれぞれにおいて実装されるリソースパーティショニング制御のタイプに依存して)別のタイプを使用する他のメモリシステム構成要素とを有することができる。
【0133】
上記の図14図17の例では、所与のパーティション識別子についてリソース制御パラメータを更新する時点で適用される制約が説明されている。図18に示すように、代替の手法は、リソース制御パラメータの制約されていない設定を可能にするが、メモリトランザクションを処理する時にリソース制御パラメータの使用を制約するために、プログラム可能制約記憶回路420において定義された制約を使用することである。例えば、メモリトランザクションが、所与のリソース制御パラメータに基づいて制御される場合に、及び制約が、限度を当該所与のリソース制御パラメータに課すように定義されている場合に、次いで、所与のリソース制御パラメータの記憶された値が、制約によって定義された限度に違反する場合でも、所与のリソース制御パラメータは、制約によって定義された限度内の制約された値を有するとして解釈されてもよく、当該制約された値は、所与のリソース制御パラメータについて実際に記憶された値の代わりに、リソースの割り当てを制御するために又はリソース間の競合を管理するために使用され得る。
【0134】
したがって、図18の例では、リソース制御パラメータ制約は、図14図17の例と同様の方法で(例えば、部分マスクビットマップ500又は閾値上限値522、534、536を使用して)定義され得るが、制約は、リソース制御パラメータ更新制約の代わりに、リソース制御パラメータ使用制約として解釈され得る。
【0135】
図18は、一実施形態において、図8のステップ206でリソースの割り当てを制御するために又はリソースについての競合を管理するためにリソース制御パラメータを使用するときに実行されるステップをより詳細に示す。ステップ600で、メモリシステム構成要素は、処理されているメモリトランザクションが、プログラム可能制約記憶回路において定義された制約を受ける制約されたタイプのメモリトランザクションであるかどうかを判定する。
【0136】
図19に示すように、パーティション識別子602に加えて、メモリトランザクションは、1つ以上の識別子、例えば、メモリトランザクションに関連付けられた特権のレベルを示す特権レベル識別子604、メモリトランザクションに関連付けられたセキュリティドメインを示すセキュリティドメイン識別子606、及び/又はメモリトランザクションが、対応するリソース制御パラメータ制約に基づいて制約されることを免除されているかどうかを示す制約免除識別子608を指定することができる。これらは、単に、いくつかの例であり、これらの識別子の全てを使用することは必須でないことが理解されよう。一例では、メモリシステム構成要素は、メモリトランザクションが、制約されたタイプのメモリトランザクションであるかどうかを、メモリトランザクションによって指定された識別子602、604、606、608の少なくとも1つに基づいて判定することができる。例えば、いくつかの具体的なPARTIDは、制約を免除されてもよく、他のPARTIDは、制約を受けてもよい。また、制約を適用するかどうかの判定は、メモリトランザクションがセキュアドメイン又は非セキュアドメインから発行されたか(例えば、セキュアトランザクションは、制約されないことがあるが、低セキュアトランザクションは、制約され得る)に基づくことができる。別の手法は、ある閾値を下回る特権レベルから発行されたメモリトランザクションが制約され得るが、より特権のあるプロセスのメモリトランザクションが制約されないことであり得る。また、制約免除識別子608は、いくつかのソフトウェアプロセスが、特定のトランザクションが制約を免除されているとして個々に識別することを可能にし得、同じソフトウェアプロセスからの他のトランザクションは、制約を受け得る。いくつかの例では、制約免除識別子608は、他の識別子602、604、606のうちの1つと組み合わせて使用されてもよく、このため、あるソフトウェアプロセス(例えば、セキュアプロセス、又は閾値よりも大きい特権を有するプロセス)のみが、当該ソフトウェアプロセスのトランザクションの制約を選択的に免除することが可能にされており、他のソフトウェアプロセスは、制約免除識別子608の値にかかわらず、当該他のソフトウェアプロセスの全てのトランザクションが制約されてもよい。
【0137】
実装され得る多数のオプションがある。いくつかの実装では、メモリトランザクションが制約される又は制約されないかの判定は、制御レジスタに記憶されたプログラム可能構成データに依存し得る。例えば、特権プロセスは、制約が適用されるべき若しくは適用されるべきでないPARTID、特権レベル若しくはセキュリティドメインを指定するように、構成データをプログラムすることができ、又は「モード」インジケータを設定することができ、「モード」インジケータは、メモリトランザクションが制約されるか否かを判定するための特定のモードを示す(例えば、1つのモードは、トランザクションが制約されるべきかどうかを、PARTIDに基づいて判定することができ、別のモードは、トランザクションが制約されるべきかどうかを、特権レベルに基づいて判定することができ、他のモードは、免除識別子608などの識別子の組み合わせを、特権レベル604と組み合わせて使用することができる)。
【0138】
したがって、制約された及び制約されていないタイプのメモリトランザクションを区別するために使用される精密な機構にかかわらず、ステップ600で、処理されている特定のメモリトランザクションが、制約されたタイプのメモリトランザクションであるかどうかの判定が行われる。いくつかのメモリトランザクションが制約を免除される機構を設けることによって、これは、(セキュアドメインプロセス又はリアルタイムクリティカルなプロセスなどの)いくつかの好ましいプロセスが、比較的リソースに富む設定を使用することを可能し、他のプロセスは、ある限界内の設定を使用するように制約されている。
【0139】
メモリトランザクションが、制約されたタイプのメモリトランザクションでない場合に、次いで、ステップ610で、トランザクションのためのリソースの割り当て又はリソースについての競合の管理は、設定テーブル106に記憶されたリソース制御パラメータの選択されたセットの制約されていない値に基づいて制御される。
【0140】
メモリトランザクションが、制約されたタイプのメモリトランザクションである場合に、次いで、ステップ612で、リソース制御パラメータの選択されたセットにおける所与のリソース制御パラメータが、プログラム可能制約記憶回路420に記憶されたリソース制御パラメータ制約に違反するかどうかが判定される。所与のリソース制御パラメータが制約に違反しない場合に、次いで、ステップ614で、所与のリソース制御パラメータは、リソースの割り当てを制御するために又はリソースについての競合を管理するために(修正されずに)使用され得る。所与のリソース制御パラメータが制約に違反する場合に、次いで、ステップ616で、リソース制御パラメータの制約された値が、リソース割り当てを制御するために又はリソースについての競合を管理するために使用され得、リソース制御パラメータの制約された値は、リソース制御パラメータ制約に基づいて判定され、リソース制御パラメータの記憶された値よりもリソースが割り当てられることを許可する点でより少ない許可を与える。例えば、閾値ベースのリソース制御パラメータについては、ステップ616で使用される制約されたリソース制御パラメータは、制約によって指定された閾値上限であることができる。部分ベースのリソース制御パラメータについては、ステップ616で使用される制約されたリソース制御パラメータは、修正されたビットマップであることができ、修正されたビットマップにおいて、対応する部分マスクビットマップによってマスクアウトされているとして示されたビットは、クリアであると想定され、このため、リソースの対応する部分は、メモリトランザクションに割り当てられないことがある。ステップ618で、エラーレポートが、ハードウェアによってサポートされており、かつ有効にされている場合に(エラー報告が有効又は無効にされているかの構成がサポートされている場合に、この決定は、構成設定に依存する)、エラー報告アクションは、図14のステップ482のように行われる(例えば、エラー報告情報を記録する、及び/又は割り込みをシグナリングする)。
【0141】
図18は、ステップ612、614、616での論理フローを示し、論理フローにおいて、最初に、リソース制御パラメータが制約に違反するかどうかが判定され、次いで、修正されていないリソース制御パラメータ又は制約されたリソース制御パラメータのいずれかが、リソース割り当てを制御するために又はリソースについての競合を管理するために使用される。エラー報告が必要とされない場合に、同等の手法は、所与のリソース制御パラメータが制約に違反するかどうかの判定を省略することができるが、代わりに単に、所与のリソース制御パラメータと制約とを組み合わせることができ、これにより、組み合わせの結果は、(パラメータが制約に違反しなかった場合に)元の所与のリソース制御パラメータである、又は(パラメータが制約に違反した場合に)制約によって示された限度に対応する。例えば、部分ベースの手法については、リソース割り当てを制御するために使用する部分ビットマップ502の有効値は、前述の例における部分ビットマップ502の更新を制御するための前述のビットAND関数と同様に、部分ビットマップ502を、制約を表すマスクビットマップ500の反転とビットANDすることによって生成され得る(代替として、部分ビットマップ502又はマスクビットマップ500の異なる符号化では、論理演算子の異なる関数が、リソース制御のために使用する有効値を生成するように、部分ビットマップ502及びビットマップ500の反転を組み合わせるために使用され得る)。閾値ベースの手法については、リソース割り当て又は競合管理を処理するために使用するキャッシュ容量又は最小/最大帯域幅割り当て閾値の有効値は、閾値の記憶された値と、制約によって表された閾値との最小値として判定され得る(図16及び図17の手法と同様)。したがって、エラー報告が必要とされない場合に、記憶されたリソース制御パラメータが制約に違反したかどうかの実際の判定は必須でないことが理解されよう。
【0142】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために変更される必要があることをなんら意味しない。
【0143】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの精密な実施形態に限定されず、様々な変更及び修正が、添付の特許請求の範囲によって定義された本発明の範囲及び精神から逸脱することなく、当業者によってこれらの実施形態においてなされ得ることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19