(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-25
(54)【発明の名称】パーティション識別子空間選択
(51)【国際特許分類】
G06F 12/109 20160101AFI20240315BHJP
G06F 12/02 20060101ALI20240315BHJP
G06F 9/455 20180101ALI20240315BHJP
G06F 11/30 20060101ALI20240315BHJP
【FI】
G06F12/109 115
G06F12/02 510M
G06F9/455 150
G06F11/30 140N
G06F11/30 155
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023556783
(86)(22)【出願日】2022-02-14
(85)【翻訳文提出日】2023-10-11
(86)【国際出願番号】 GB2022050387
(87)【国際公開番号】W WO2022208044
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】クルーガー、スティーブン ダグラス
(72)【発明者】
【氏名】エラド、ユヴァル
【テーマコード(参考)】
5B042
5B160
5B205
【Fターム(参考)】
5B042GA33
5B042MC22
5B160AA12
5B205KK14
5B205MM01
5B205MM36
5B205MM51
5B205RR04
5B205UU45
5B205UU46
5B205UU47
5B205VV02
(57)【要約】
処理回路(310)は、対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理し、メモリシステムにメモリアクセス要求を発行し、このメモリアクセス要求は、パーティション識別子(メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティション識別子選択情報に基づいて選択される)と、選択パーティション識別子空間(処理回路の現在の領域に基づいて少なくとも3つのパーティション識別子空間の中から選択される)を示すマルチビットパーティション識別子空間インジケータとを含む。選択パーティション識別子空間及びパーティション識別子(332、334)は共に、メモリシステム構成要素において、メモリアクセス要求を処理するためのリソースの割り当てを制御するための、もしくはそのリソースの競合を管理するためのパラメータを選択するための情報、又はメモリアクセス要求に応答して性能監視データを更新するかどうかを選択するためのパラメータを選択するための情報を表す。
【選択図】
図3
【特許請求の範囲】
【請求項1】
装置であって、
対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理し、ターゲットメモリシステム位置を示すターゲットアドレスを指定するメモリアクセス要求をメモリシステムに発行する処理回路と、
前記メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティション識別子選択情報に基づいてパーティション識別子を選択するパーティション識別子選択回路と、
前記処理回路の現在の領域に基づいて、少なくとも3つのパーティション識別子空間の中から選択パーティション識別子空間を選択するパーティション識別子空間選択回路と、
を備え、
前記選択パーティション識別子空間及び前記パーティション識別子が共に、
前記メモリシステムのメモリシステム構成要素において、前記メモリアクセス要求を処理するためのリソースの割り当てを制御するための、もしくは前記リソースについての競合を管理するための、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択するための情報、又は前記メモリシステム構成要素において、前記メモリアクセス要求に応答して性能監視データを更新するかどうかを選択するための情報を表し、
前記処理回路が、前記メモリアクセス要求を前記メモリシステムに発行するように構成され、前記メモリアクセス要求が、前記パーティション識別子と、前記パーティション識別子空間選択回路によって選択された前記選択パーティション識別子空間を示す複数のビットを備えるパーティション識別子空間インジケータ、とを指定する、装置。
【請求項2】
前記パーティション識別子空間選択回路が、前記処理回路の前記現在の領域に基づいて、及びプログラマブル制御情報に基づいて、前記選択パーティション識別子空間を選択するように構成される、請求項1に記載の装置。
【請求項3】
前記パーティション識別子空間選択回路が、前記プログラマブル制御情報に基づいて、前記選択パーティション識別子空間が、前記現在の領域に関連付けられたプライマリパーティション識別子空間であるべきか、又は前記現在の領域に関連付けられた代替パーティション識別子空間であるべきかを選択するように構成され、ここで、前記少なくとも3つの領域のうちの少なくとも1つについて、前記代替パーティション識別子空間は、別の領域に関連付けられた前記プライマリパーティション識別子空間である、請求項2に記載の装置。
【請求項4】
所与の領域に関連付けられた前記プライマリパーティション識別子空間が、前記プログラマブル制御情報とは無関係に前記所与の領域に対して定義された固定パーティション識別子空間である、請求項3に記載の装置。
【請求項5】
少なくとも1つの領域について、その領域に関連付けられた前記代替パーティション識別子空間が、前記プログラマブル制御情報に応じて可変的に選択されるパーティション識別子空間である、請求項3に記載の装置。
【請求項6】
前記処理回路が、複数の特権レベルのうちの1つで命令を処理するように構成され、
少なくとも1つの特権レベルについて、前記少なくとも1つの特権レベルで発行されたメモリアクセス要求に対する前記選択パーティション識別子空間の選択を制御する前記プログラマブル制御情報の少なくとも一部が、前記少なくとも1つの特権レベルよりもより特権の高い特権レベルでプログラム可能である、請求項2~5のいずれか一項に記載の装置。
【請求項7】
前記少なくとも1つの特権レベルの少なくともサブセットについて、前記処理回路が、そのサブセットの特権レベルで実行される少なくとも1つの命令にとって、前記より特権の高い特権レベルでプログラム可能な前記プログラマブル制御情報に基づいて選択された前記選択パーティション識別子空間を示す情報を示す強制空間をアクセス可能にするように構成される、請求項6に記載の装置。
【請求項8】
前記処理回路が、複数の特権レベルのうちの1つで命令を処理するように構成され、前記プログラマブル制御情報が、
第1の特権レベルでプログラム可能な階層制御有効化情報と、
前記第1の特権レベルよりも特権が低い第2の特権レベルでプログラム可能な空間選択制御情報と、
を含み、
前記階層制御情報が、第1の値を有するとき、前記パーティション識別子選択回路が、前記第2の特権レベル又は前記第2の特権レベルよりも特権が低い第3の特権レベルで発行されたメモリアクセス要求に対して、前記第2の特権レベルでプログラム可能な前記空間選択制御情報に応じて、前記選択パーティション識別子空間を選択するように構成され、
前記階層制御情報が第2の値を有するとき、前記パーティション識別子選択回路が、前記第2の特権レベル又は前記第3の特権レベルで発行されたメモリアクセス要求に対して、前記第2の特権レベルでプログラム可能な前記空間選択制御情報とは無関係に、前記選択パーティション識別子空間を選択するように構成される、請求項2~7のいずれか一項に記載の装置。
【請求項9】
前記メモリアクセス要求を処理した機能的な結果が、前記パーティション識別子及び前記選択パーティション識別子空間とは無関係である、請求項1~8のいずれか一項に記載の装置。
【請求項10】
前記メモリアクセス要求に対して、前記現在の領域に基づいて選択物理アドレス空間を選択する物理アドレス空間選択回路を備え、
前記処理回路が、前記選択物理アドレス空間を示す物理アドレス空間インジケータを指定する前記メモリアクセス要求を発行するように構成される、請求項1~9のいずれか一項に記載の装置。
【請求項11】
前記物理アドレス空間選択回路が、前記現在の領域に基づいて、かつ前記メモリアクセス要求の前記ターゲットアドレスに対応するアドレス変換情報を提供するアドレス変換エントリに指定された物理アドレス空間選択情報に基づいて、前記選択物理アドレス空間を選択するように構成される、請求項10に記載の装置。
【請求項12】
前記パーティション識別子空間選択回路が、前記現在の領域に応じて、かつ前記ターゲットアドレスに対応する前記アドレス変換エントリに指定された前記物理アドレス空間選択情報とは無関係に、前記選択パーティション識別子空間を選択するように構成される、請求項11に記載の装置。
【請求項13】
同じメモリシステムリソースに対応する別々の物理アドレス空間からの複数の別名化物理アドレスを非別名化して、前記複数の別名化物理アドレスのいずれかを、少なくとも1つの下流のメモリシステム構成要素に提供される非別名化物理アドレスにマッピングするように構成された物理的別名化ポイント(PoPA)メモリシステム構成要素と、
前記PoPAメモリシステム構成要素の上流に設けられた少なくとも1つのPoPA前メモリシステム構成要素であって、前記少なくとも1つのPoPA前メモリシステム構成要素が、別々の物理アドレス空間からの前記別名化物理アドレスを、前記別名化物理アドレスが別々のメモリシステムリソースに対応しているかのように扱うように構成されている、PoPA前メモリシステム構成要素と、
を備える、請求項10~12のいずれか一項に記載の装置。
【請求項14】
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、前記1つ以上のメモリシステムリソース制御パラメータからなるセットを選択するリソース制御パラメータ選択回路、及び/又は、
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、前記メモリアクセス要求に応答して前記性能監視データを更新するかどうかを制御する性能監視制御回路を備える、メモリシステム構成要素を備える、請求項1~13のいずか一項に記載の装置。
【請求項15】
前記少なくとも3つのパーティション識別子空間の各々が、前記少なくとも3つの領域のうちの対応する1つに関連付けられ、
所与のパーティション識別子空間に対応するメモリシステムリソース制御パラメータの所与のセットが、前記所与のパーティション識別子空間に関連付けられた前記領域に対応する前記物理アドレス空間内のターゲットアドレスを指定して発行されたメモリアクセス要求に応答して、アクセス可能である、請求項14に記載の装置。
【請求項16】
前記少なくとも3つのパーティション識別子空間をサポートする1つ以上の構成要素を備える前記装置の第1の区域と、前記第1の区域内の前記1つ以上の構成要素よりも少数のパーティション識別子空間をサポートする1つ以上の構成要素を備える前記装置の第2の区域との間の境界にブリッジ回路を備え、
前記ブリッジ回路が、前記第1の区域と前記第2の区域との間を通過するメモリアクセス要求に対して前記パーティション識別子空間インジケータを再マッピングするように構成される、請求項1~15に記載の装置。
【請求項17】
前記ブリッジ回路が、
固定マッピング、及び
プログラマブルマッピングのうちの1つに従って、前記パーティション識別子空間インジケータを再マッピングするように構成される、請求項16に記載の装置。
【請求項18】
前記ブリッジ回路がまた、前記第1の区域と前記第2の区域との間を通過する前記メモリアクセス要求に関連付けられた前記選択物理アドレス空間を示す物理アドレス空間インジケータを再マッピングするようにも構成される、請求項16又は17に記載の装置。
【請求項19】
メモリシステム構成要素であって、
メモリアクセス要求を受信するメモリアクセス要求受信回路であって、前記メモリアクセス要求が、メモリシステム内のターゲットメモリシステム位置を示すターゲットアドレスと、少なくとも3つのパーティション識別子空間の中から選択された選択パーティション識別子空間を示す複数のビットを含むパーティション識別子空間インジケータと、前記メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたパーティション識別子と、を指定する、メモリアクセス要求受信回路と、
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択し、選択された前記メモリシステムリソース制御パラメータのセットに基づいて、前記メモリアクセス要求を処理するためのリソースの割り当てを制御するか又は前記リソースについての競合を管理するリソース制御回路、及び/又は、
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、前記メモリアクセス要求に応答して前記性能監視データを更新するかどうかを制御する性能監視制御回路と、を備える、メモリシステム構成要素。
【請求項20】
方法であって、
対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理することと、
メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティション識別子選択情報に基づいてパーティション識別子を選択することと、
処理回路の現在の領域に基づいて、少なくとも3つのパーティション識別子空間の中から選択パーティション識別子空間を選択することと、
ターゲットメモリシステム位置を示すターゲットアドレス、前記パーティション識別子、及び前記選択パーティション識別子空間を示す複数のビットを含むパーティション識別子空間インジケータを指定するメモリアクセス要求をメモリシステムに発行することと、
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択し、選択された前記メモリシステムリソース制御パラメータのセットに基づいて、前記メモリアクセス要求を処理するためのリソース割り当てを制御するか又は前記リソースについての競合を管理すること、及び/又は、
前記パーティション識別子空間インジケータ及び前記パーティション識別子に基づいて、前記メモリアクセス要求に応答して性能監視データを更新するかどうかを制御することと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【0002】
アプリケーション又は仮想マシンなどの2つ以上のソフトウェア実行環境は、ソフトウェア実行環境間で共有された共通のメモリシステムへのアクセスを有する同じデータ処理システムにおいて実行され得る。システムによっては、共有メモリシステム内のリソースを多く使用している別のソフトウェア実行環境が原因で、1つのソフトウェア実行環境の性能が低下しないことが重要な場合がある。この問題は、「ノイジーネイバー(noisy neighbour)」問題と称され得、例えば、企業ネットワーキング又はサーバシステムについて特に重要であり得る。
【0003】
少なくともいくつかの実施例は、装置であって、
対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理し、ターゲットメモリシステム位置を示すターゲットアドレスを指定するメモリアクセス要求をメモリシステムに発行する処理回路と、
メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティション識別子選択情報に基づいてパーティション識別子を選択するパーティション識別子選択回路と、
処理回路の現在の領域に基づいて、少なくとも3つのパーティション識別子空間の中から選択パーティション識別子空間を選択するパーティション識別子空間選択回路と、を備え、
選択パーティション識別子空間及びパーティション識別子が共に、メモリシステムのメモリシステム構成要素において、メモリアクセス要求を処理するためのリソースの割り当てを制御するための、もしくはリソースについての競合を管理するための、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択するための情報、又はメモリシステム構成要素において、メモリアクセス要求に応答して性能監視データを更新するかどうかを選択するための情報を表し、
処理回路が、メモリアクセス要求をメモリシステムに発行するように構成され、メモリアクセス要求が、パーティション識別子と、パーティション識別子空間選択回路によって選択された選択パーティション識別子空間を示す複数のビットを備えるパーティション識別子空間インジケータ、とを指定する、装置を提供する。
【0004】
少なくともいくつかの実施例は、メモリシステム構成要素であって、
メモリアクセス要求を受信するメモリアクセス要求受信回路であって、メモリアクセス要求が、メモリシステム内のターゲットメモリシステム位置を示すターゲットアドレスと、少なくとも3つのパーティション識別子空間の中から選択された選択パーティション識別子空間を示す複数のビットを含むパーティション識別子空間インジケータと、メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたパーティション識別子と、を指定する、メモリアクセス要求受信回路と、
少なくとも、
パーティション識別子空間インジケータ及びパーティション識別子に基づいて、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択し、選択されたメモリシステムリソース制御パラメータのセットに基づいて、メモリアクセス要求を処理するためのリソースの割り当てを制御するか又はリソースについての競合を管理するリソース制御回路、及び/又は
パーティション識別子空間インジケータ及びパーティション識別子に基づいて、メモリアクセス要求に応答して性能監視データを更新するかどうかを制御する性能監視制御回路
のうちの1つと、を備える、メモリシステム構成要素を提供する。
【0005】
少なくともいくつかの実施例は、方法であって、
対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理することと、
メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティション識別子選択情報に基づいてパーティション識別子を選択することと、
処理回路の現在の領域に基づいて、少なくとも3つのパーティション識別子空間の中から選択パーティション識別子空間を選択することと、
ターゲットメモリシステム位置を示すターゲットアドレス、パーティション識別子、及び選択パーティション識別子空間を示す複数のビットを含むパーティション識別子空間インジケータを指定するメモリアクセス要求をメモリシステムに発行することと、
少なくとも、
パーティション識別子空間インジケータ及びパーティション識別子に基づいて、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択し、選択されたメモリシステムリソース制御パラメータのセットに基づいて、メモリアクセス要求を処理するためのリソース割り当てを制御するか又はリソースについての競合を管理すること、及び/又は
パーティション識別子空間インジケータ及びパーティション識別子に基づいて、メモリアクセス要求に応答して性能監視データを更新するかどうかを制御することと、のうちの一方を含む、方法を提供する。
【図面の簡単な説明】
【0006】
本技術の更なる態様、特徴、及び利点は、添付の図面とともに読まれるべき以下の例の説明から明らかになる。
【
図1】メモリシステムを備えるデータ処理システムの一例を概略的に示す図である。
【
図2】メモリトランザクション及びパーティションID空間インジケータに関連付けられたソフトウェア実行環境に割り当てられたパーティションIDに依存する、メモリシステムリソースの分割制御の一例を概略的に示す図である。
【
図3】処理回路、パーティションID選択回路、及びパーティションID空間選択回路を有する装置の一例を概略的に示す図である。
【
図4】処理回路が動作することができるいくつかの領域を示す図である。
【
図5】いくつかの物理アドレス空間の、メモリシステム内の場所を識別するシステム物理アドレス空間上での別名化を概略的に示す図である。
【
図6】有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す図である。
【
図7】メモリアクセス要求の発行を制御する方法を示すフロー図である。
【
図8】所与のメモリアクセス要求に対して物理アドレス空間を選択することを示すフロー図である。
【
図9】アクセスされた物理アドレスに対応するグラニュール保護テーブルエントリに指定された情報に基づく物理アドレス空間フィルタチェックを示すフロー図である。
【
図10】メモリアクセス要求に対するパーティションID及びパーティションID空間の選択を制御するための制御レジスタの一例を示す図である。
【
図11】処理システムに実装された機能を示すディスカバリ情報を提供するためのディスカバリレジスタの一例を示す図である。
【
図12】
図10に示される制御レジスタのいくつかをより詳細に示す図である。
【
図13A】それぞれ、データアクセス及び命令フェッチアクセスのためのパーティションID選択を示す図である。
【
図13B】それぞれ、データアクセス及び命令フェッチアクセスのためのパーティションID選択を示す図である。
【
図14】パーティションID空間選択を示すフロー図である。
【
図15】プライマリパーティションID空間又は代替パーティションID空間のどちらを使用するかを選択するための、
図14のステップをより詳細に示すフロー図である。
【
図16】メモリシステム構成要素の一部を示す図である。
【
図17】メモリシステム構成要素におけるメモリアクセス要求の処理を示すフロー図である。
【
図18】装置の、異なる数のパーティションID空間をサポートする区域同士の間の境界にブリッジ回路を含む処理システムの一例を示す図である。
【発明を実施するための形態】
【0007】
装置は、命令を処理し、ターゲットメモリシステム位置を示すターゲットアドレスを指定するメモリアクセス要求をメモリシステムに発行するための処理回路を有することができる。メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティションID選択情報に基づいてパーティション識別子(ID)を選択するためのパーティションID選択回路を設けることができる。選択されたパーティションIDは、メモリシステムのメモリシステム構成要素によって使用され、メモリアクセス要求を処理するためのリソースの割り当てを制御するための、もしくはリソースについての競合を管理するための、1つ以上のメモリシステムリソース制御パラメータからなるセットを選択するか、又はメモリシステム構成要素において、アクセス要求に応答して性能監視データを更新するかどうかを選択することができる。したがって、パーティションIDは、メモリアクセス要求を発行した別々のソフトウェアを区別するために使用することができるメモリアクセス要求に対するラベルとして提示することができるため、メモリシステム内のリソースをソフトウェア実行環境同士の間で分割して、1つのソフトウェア実行環境がリソースの公平なシェアより多くを占有することを回避し、上述のノイジーネイバー問題に対処することができ、かつ/又は別々のパーティションIDに関連付けられた異なるソフトウェア又はソフトウェアのサブセットについての性能監視をメモリシステム構成要素において実行して、別々のソフトウェアによって認識される性能に関するより正確な情報を収集することができるようになる。どちらにしても、これは、ノイジーネイバー問題の対処に役立ち得る。
【0008】
処理回路は、対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理することができる。物理アドレスは、メモリシステム内の位置を指すためにデータ処理システムにおいて使用することができるが、処理システムは、仮想メモリの使用をサポートすることができ、この仮想メモリにおいて、アドレス変換回路を使用して、処理回路上で実行される命令によって指定される仮想アドレスを、アクセス対象の位置及びメモリシステムに関連付けられた対応する物理アドレスに変換することができる。仮想アドレスと物理アドレスとの間のマッピングは、1つ以上のページテーブル構造で定義され得る。ページテーブル構造内のページテーブルエントリはまた、処理回路上で実行される所与のソフトウェアプロセスが特定の仮想アドレスにアクセスできるかどうかを制御することができ得るいくつかのアクセス許可情報を定義することができる。
【0009】
いくつかの処理システムでは、すべての仮想アドレスは、アクセスされるメモリ内の位置を識別するためにメモリシステムによって使用される単一の物理アドレス空間上にアドレス変換回路によってマッピングされ得る。そのようなシステムでは、特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかの制御は、仮想対物理アドレス変換マッピングを提供するために使用されるページテーブル構造に基づいて提供される。しかしながら、そのようなページテーブル構造は、通常、オペレーティングシステム及び/又はハイパーバイザによって定義され得る。オペレーティングシステム又はハイパーバイザが不正アクセスされると、機微情報に攻撃者がアクセス可能となり得る機密漏洩を引き起こす可能性がある。
【0010】
したがって、特定のプロセスが、他のプロセスから隔離されてセキュアに実行される必要があるいくつかのシステムでは、システムはいくつかの領域内の動作をサポートでき、かつ、いくつかの別個の物理アドレス空間がサポートされ得、メモリシステムの少なくともいくつかの構成要素については、仮想アドレスが異なる物理アドレス空間内の物理アドレスに変換されるメモリアクセス要求は、例えそれぞれの物理アドレス空間内の物理アドレスが実際にはメモリ内の同じ場所に対応する場合であっても、あたかも、メモリ内の全く別のアドレスにアクセスしているかのように扱われる。いくつかのメモリシステム構成要素によって見られるように、処理回路の異なる動作領域からのそれぞれ別個の物理アドレス空間へのアクセスを隔離することにより、オペレーティングシステム又はハイパーバイザが設定したページテーブル許可情報に依存しない、より強いセキュリティ保証を提供することができる。
【0011】
このようにして別個の物理アドレス空間をサポートするいくつかのシステムは、対応する物理アドレス空間にそれぞれ関連付けられた2つの領域のみをサポートして、セキュア領域において動作するセキュアソフトウェアが、よりセキュアでない領域において動作するよりセキュアでないソフトウェアから隔離されることを可能にすることができる。しかしながら、ソフトウェアプロバイダに、同じハードウェアプラットフォーム上で実行されている他のソフトウェアに関連する他のソフトウェアプロバイダを信頼する必要性を限定する、セキュアなコンピューティング環境が提供されることがますます望まれている。ソフトウェアコードの提供者が、同じ物理プラットフォーム上で実行されるソフトウェアコードを提供する別の提供者を信頼することに否定的であり得る、例えば、モバイル支払い及びバンキング、不正又は著作権侵害防止メカニズムの実施、クラウドシステムにおけるセキュアな仮想マシンホスティングのためのセキュリティ拡張、機密コンピューティングなどの分野において、いくつかの用途があり得る。通常のアプリケーションレベルのコードに関連付けられたよりセキュアでない環境から隔離されたセキュアなコンピューティング環境が提供されることをそれぞれが望んでいるが、互いを信頼していない二者以上の別々の当事者間でも、このような状況がますます生じる可能性があり、したがって、対応する物理アドレス空間にそれぞれが関連付けられた3つ以上の別個の領域をサポートできることが有用になり得る。
【0012】
いくつかの例では、4つ以上の領域が存在してもよく、したがって、処理回路は、少なくとも4つの異なる物理アドレス空間の間の選択をサポートしてもよい。
【0013】
以下で説明する実施例では、パーティションID空間選択回路は、処理回路の現在の領域に基づいて、少なくとも3つのパーティションID空間の中から選択パーティションID空間を選択するために提供される。選択パーティションID空間は、メモリアクセス要求のパーティションIDと共に、上述したように、メモリシステムリソース制御パラメータのセットを選択するための情報として、又はメモリアクセス要求に応答して性能データを更新するかどうかを選択するための情報として使用され、メモリリソースの性能分割及び性能監視を可能にする。処理回路によってメモリアクセス要求がメモリシステムに発行されるとき、メモリアクセス要求は、パーティションIDと、パーティションID空間選択回路によって選択された選択パーティションID空間を示す複数のビットを含むパーティションID空間インジケータとの両方を指定する。
【0014】
処理回路の現在の領域に基づいて選択することができる少なくとも3つのパーティションID空間をサポートすることによって、同じパーティションIDを別々の領域において使用することができるが、そのパーティションIDを指定する要求同士は、別のメモリシステムリソース制御パラメータのセットに対応するものとして区別されることができるか、又はメモリシステム構成要素による性能監視の目的のために区別されることができる。代替例としては、処理回路によってサポートされる領域及び物理アドレス空間の数よりも少数のパーティションID空間をサポートすることが考えられ、これは有効な設計選択であるが、2つ以上の異なる領域内のソフトウェアが同じパーティションID空間を共有する必要がある場合、パーティションIDの使用を通じて所与の領域内のソフトウェアによって求められる性能保証に影響を及ぼすような、別の領域内で使用されるパーティションIDの別名化がないことを保証するために、別々の領域内のパーティションIDの割り当てを管理するソフトウェアが相互に連携されることを必要とする場合があるという欠点を有し得る。別々の領域のためのソフトウェアが連携して開発される必要があると、ソフトウェア開発コストが増加する可能性がある。
【0015】
以下の例では、処理回路によってサポートされる少なくとも3つの領域に対応する少なくとも3つのパーティションID空間をサポートし、現在の領域に基づいて少なくとも3つのパーティションID空間から選択し、2ビット以上を含むメモリアクセス要求内のパーティションID空間インジケータを使用して3つ以上のパーティションID空間を区別することを可能にすることによって、別々の領域内のソフトウェアを互いに連携する必要性を低減して、パーティションIDの不適切な別名化を回避する。非連携パーティションIDマネージャを維持することによって、ソフトウェア開発を簡略化する。各領域内のソフトウェアは、別の領域内のソフトウェアが競合するパーティションIDを使用している可能性があるかどうかを気にすることなく選択するので、任意のパーティションIDを選択する自由を有することができる。
【0016】
要約すると、以下で説明する実施例は、対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理し、メモリシステムにメモリアクセス要求を発行する処理回路を提供し、このメモリアクセス要求は、パーティションID(メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたプログラマブルパーティションID選択情報に基づいて選択される)と、選択パーティションID空間(処理回路の現在の領域に基づいて少なくとも3つのパーティションID空間の中から選択される)を示すマルチビットパーティションID空間インジケータとを含む。選択パーティションID空間及びパーティションIDは共に、メモリシステム構成要素において、メモリアクセス要求を処理するためのリソースの割り当てを制御するための、もしくはそのリソースの競合を管理するためのパラメータを選択するための情報、又は、メモリシステム構成要素において、メモリアクセス要求に応答して性能監視データを更新するかどうかを選択するための情報を表す。
【0017】
処理回路の現在の領域は、所与のメモリアクセス要求に使用する選択パーティションID空間を選択するために使用される唯一の情報でなくてもよい。いくつかの実施例では、選択パーティションID空間は、処理回路の現在の領域とプログラマブル制御情報との両方に基づいて選択され得る。例えば、1つ以上のレジスタ内の制御状態を使用して、選択パーティションID空間を選択することができる。プログラマブル制御情報は、ソフトウェアによってプログラム可能であってもよく、所与のメモリアクセス要求に対してどのパーティションID空間が選択されるかに影響を与える。ハードウェアにおいては、対応するパーティションID空間を有する各領域をサポートできることが有用であり得るが、すべてのソフトウェアが、領域ごとに別個のパーティションID空間を使用する必要があるわけではない場合もあり、場合によっては、別々の領域内のソフトウェアが共通のパーティションID空間を使用して動作することが望ましいこともあり、例えば、より少数のパーティションID空間を有する、システム用に設計されたレガシーソフトウェアを実行して、又は別々の領域で動作するサブコンパートメントを含む1つのプロバイダによって提供されたソフトウェアを実行して、別々の領域内のソフトウェアが共通のソフトウェアを信頼してそれらのサブコンパートメントに対するパーティションIDの割り当てを管理できるようにするときなどである。この場合、連携されたパーティションIDマネージャソフトウェア構成要素を使用することによってパーティションIDの管理を簡略化することが望ましい場合がある。したがって、プログラマブル制御情報に基づいて、どのパーティションID空間が所与の領域に対して選択されるかを様々に変更するためのサポートを提供することは、様々に異なるソフトウェア使用モデルをサポートするのに有用であり得る。
【0018】
プログラマブル制御情報は、様々に異なる方法で定義することができ、いくつかの実装形態では、所与の領域に対して使用されることになる選択パーティションID空間として、サポートされているパーティションID空間のいずれかを選択することが可能であり得る。したがって、システムによっては、所与のアクセスに対してどのパーティションID空間を使用するかについて自由な選択をサポートすることが望ましい場合があるため、プログラマブル制御情報はパーティションID空間選択情報を含むことができ、この情報は、サポートされているパーティションID空間のうちのいずれか1つを選択することができることを示すことができる。
【0019】
しかしながら、他の実施例では、利用可能なオプションが更に制限される場合もあるため、少なくともいくつかの領域に対して、ハードウェアにおいてサポートされるすべての利用可能なパーティションID空間を選択することは不可能であり、そのため、少なくともいくつかの領域においてパーティションID空間の選択肢がより制限される可能性がある。選択に利用可能なオプションを制限することは、いくつかの理由により有用となる場合もあり、例えば、よりセキュアでない状態を回避してよりセキュアな状態に関連付けられたパーティションID空間を選択する、及び/又はハードウェアの複雑さ及び必要な制御状態の量を低減して、その結果、プロセッサの回路面積及び電力コストが削減されるなどである。
【0020】
いくつかの例では、パーティションID空間選択回路は、プログラマブル制御情報に基づいて、選択パーティションID空間が、現在の領域に関連付けられたプライマリパーティションID空間であるべきか、又は現在の領域に関連付けられた代替パーティションID空間であるべきかを選択してもよい。少なくとも3つの領域のうちの少なくとも1つについて、代替パーティションID空間は、別の領域に関連付けられたプライマリパーティションID空間であってもよい。したがって、この手法では、各領域は、それ自体のプライマリパーティションID空間を有することができるが、ある領域で使用するために、別の領域に関連付けられたプライマリパーティションID空間と同じである代替パーティションID空間を選択するためのプログラマブルサポートが存在してもよいため、同じパーティションID空間を使用するように2つの領域をプログラムすることが可能である。どの特定のパーティションID空間が所与の領域に対する代替パーティションID空間であるかの定義は、その特定のアーキテクチャ実装形態に応じて様々であり得る。一般に、各領域に対してプライマリパーティションID空間及び代替パーティションID空間をサポートすることは、予想されるソフトウェアの使用モデルをサポートするのに十分であり得、より幅広いパーティションID空間の選択肢をサポートすることに比べて、実装が複雑でないオプションであり得る。
【0021】
所与の領域に対するプライマリパーティションID空間は、プログラマブル制御情報とは無関係に、その領域に対して固定されてもよい。いくつかの領域に対しては、代替パーティションID空間もまた固定することができるため、どのパーティションID空間がその領域に対する代替パーティションID空間であるかを変更することは不可能となり、プログラマブル制御情報は、単に、プライマリパーティションID空間を使用するか代替パーティションID空間を使用するかを選択するだけである。
【0022】
しかしながら、少なくとも1つの領域についてのいくつかの実施例では、その領域に関連付けられた代替パーティションID空間は、プログラマブル制御情報に応じて可変的に選択されるパーティションID空間であってもよい。これにより、代替パーティションID空間としてより幅広いパーティションID空間の選択肢を選択することが可能となり、これは、いくつかの領域にとって有用であり得、例えば、他の領域の監視ができ、より幅広い代替パーティションID空間の選択肢をサポートすることが有用となり得る、ルート領域(例えば、ルート領域は、他の領域同士間で処理回路を切り替えるためのコードを実行するためのものであり得る)にとって有用であり得る。
【0023】
処理回路は、いくつかの異なる特権レベルのうちの1つの命令の処理をサポートすることができ、少なくとも1つの特権レベルについて、その少なくとも1つの特権レベルで発行されたメモリアクセス要求に対する選択パーティションID空間の選択を制御するプログラマブル制御情報の少なくとも一部は、その少なくとも1つの特権レベルよりもより特権の高い特権レベルでプログラム可能である。したがって、より特権の高いソフトウェアは、より特権の低いソフトウェアに対してどのパーティションID空間を選択すべきかを制約するプログラマブル制御情報を設定することができる。
【0024】
いくつかのシナリオでは、より低い特権レベルのソフトウェアにとって、より特権の高い特権レベルでプログラム可能なプログラマブル制御情報に基づいて、その特権レベルに対してどのパーティションID空間が選択されているかを可視化することは有用である。したがって、いくつかの実装形態では、少なくとも1つの特権レベルの少なくともサブセットについて、処理回路が、そのサブセットの特権レベルで実行される少なくとも1つの命令にとって、より特権の高い特権レベルでプログラム可能なプログラマブル制御情報に基づいて、その現在の特権レベルについて選択されたパーティションID空間を示す情報を示す強制空間をアクセス可能にすることができる。例えば、所与の特権レベル(例えば、オペレーティングシステム特権レベル)のソフトウェアは、パーティションIDを割り当てることは許可され得るが、その所与の特権レベル又はより低い特権レベルで発行された要求に対して選択されたパーティションID空間を変更することはできない。しかし、パーティションID空間が現在の領域に対するパーティションID空間であるか又は代替パーティションID空間であるかをそのソフトウェアが判定することは有用であり得、それは、そのソフトウェアによってパーティションIDがどのように割り当てられるかに影響を与え得る(例えば、別のソフトウェア実行環境との連携が必要とされ得るかどうか)ためである。
【0025】
処理回路が2つ以上の異なる特権レベルのうちの1つで命令の処理をサポートするいくつかの例では、プログラマブル制御情報は、第1の特権レベルでプログラム可能な階層制御有効化情報と、第1の特権レベルよりも特権が低い第2の特権レベルでプログラム可能な空間選択制御情報とを含んでもよい。ここで、階層制御情報が第1の値を有する場合、パーティションID選択回路は、第2の特権レベル又は第2の特権レベルよりも特権が低い第3の特権レベルで発行されたメモリアクセス要求に対して、第2の特権レベルでプログラム可能な空間選択制御情報に応じて、選択パーティションID空間を選択するように構成され、階層制御情報が第2の値を有する場合、パーティションID選択回路は、第2の特権レベル又は第3の特権レベルで発行されたメモリアクセス要求に対して、第2の特権レベルでプログラム可能な空間選択制御情報とは無関係に、選択パーティションID空間を選択するように構成される。
【0026】
この手法では、(第1、第2、及び第3の特権レベルの中で最大の特権を有する)第1の特権レベルで動作するソフトウェアは、第2の特権レベルで動作するソフトウェアが、プログラマブル制御情報を使用して、第2又は第3の特権レベルで発行されたメモリアクセス要求に対して、選択パーティションID空間の選択に影響を与えることを許可されるかどうかを制御することができる。この階層制御方式は、様々に異なるソフトウェア使用モデルをサポートするのに有用であり得、第1の特権レベルのいくつかのソフトウェアは、どのパーティションID空間を選択するかを制御する責任を、第2特権レベルで動作するコードに委譲することを望む可能性がある一方、第1の特権レベルの他のソフトウェアは、第2の特権レベルで動作するコードが第2特権レベル又は第3の特権レベルで発行されたメモリアクセス要求に対するパーティションID空間の選択に影響を及ぼすことを許可することなく、パーティションID空間の選択自体を制御するための制御状態を設定する方を好む場合もある。
【0027】
パーティションID及びパーティションID空間は共に、メモリシステムリソース制御パラメータを選択するための、又は性能監視データを更新するかどうかを制御するための情報を表す。これは、特定のメモリアクセス要求に対して達成される性能のレベル、又は性能監視を使用して収集される性能のビューに影響を及ぼし得るが、メモリアクセス要求を処理した機能的な結果は、パーティションID及び選択パーティションID空間とは無関係であり得る。したがって、どの特定のメモリシステム位置がターゲットアドレスに対応してアクセスされるかは、パーティションID及び選択パーティションID空間に依存しない。同様に、メモリアクセス要求が許可されるか拒否されるかは、パーティションID及び選択パーティションID空間に依存しない。
【0028】
装置は、現在の領域に基づいて、メモリアクセス要求に対する選択物理アドレス空間を選択する物理アドレス空間選択回路を有することができ、処理回路が、選択物理アドレス空間を示す物理アドレス空間インジケータを指定するメモリアクセス要求を発行することができる。例えば、物理アドレス空間選択回路は、アドレス変換を実行するためのメモリ管理ユニットの一部であってもよいし、又は現在の領域で動作しているコードが選択物理アドレス空間内の物理アドレスにアクセスすることを許可されているかどうかを判定するためのチェックを実行するための物理アドレス空間フィルタの一部であってもよい。
【0029】
物理アドレス空間選択回路は、現在の領域に基づいて、かつメモリアクセス要求に対するアドレス変換情報を提供する、アドレス変換エントリに指定された物理アドレス空間選択情報に基づいて、選択物理アドレス空間を選択することができる。したがって、現在の領域としての所与の領域から行われるメモリアクセスについては、メモリアクセス要求は、アドレス変換エントリに指定された情報に基づいて、現在の領域とは異なる領域に関連付けられた物理アドレス空間を、選択物理アドレス空間として指定することができる。これは、例えば、別々の領域内のソフトウェアがメモリ内の共有変数へのアクセスを共有することを可能にするのに有用であり得る。どの領域が各物理アドレス空間へのアクセスを許可されるかについてはいくつかの制約があってもよく、セキュリティを維持するために、許可されない現在のドメインと物理アドレス空間との組み合わせがあってもよい(例えば、処理回路が非セキュア領域にある場合、選択物理アドレス空間をセキュア領域に関連付けられたセキュア物理アドレス空間とすることは禁止されない場合がある)。
【0030】
物理アドレス空間インジケータは、パーティションID空間インジケータとは別個であってもよい。現在の領域に応じた選択パーティションID空間の選択は、メモリアクセス要求のターゲットアドレスに対応するアドレス変換エントリに指定された物理アドレス空間選択情報とは無関係であってよい。したがって、物理アドレス空間選択情報が、選択物理アドレス空間が現在の領域に関連付けられた物理アドレス空間以外のアドレス空間であるべきであることを示す場合であっても、選択パーティションID空間はその現在の領域のパーティションID空間のままであってもよいし、又はプログラマブル制御情報に基づくパーティションID空間の選択がサポートされている場合、プログラマブル制御情報は、物理アドレス空間とは異なるパーティションID空間の選択を可能にすることもできる。これは、様々に異なるソフトウェア使用モデルに対する柔軟なサポートを提供する。
【0031】
したがって、物理アドレス空間インジケータは、所与の領域の物理アドレス空間を示すことができ、パーティションID空間インジケータは、物理アドレス空間インジケータによってアドレス空間が示された領域と同じ領域に関連付けられたパーティションID空間を指定することができるか、又は物理アドレス空間インジケータによって物理アドレス空間が示された領域とは異なる領域に関連付けられたパーティションID空間を示すことができる。したがって、物理アドレス空間の選択及びパーティションID空間の選択の両方が現在の領域に依存し得るが、別々の選択が行われてもよい(例えば、選択パーティションID空間は、上述のようにプログラマブル制御情報に応じて様々に変わってもよい)。
【0032】
装置は、同じメモリシステムリソースに対応する別々の物理アドレス空間からの複数の別名化物理アドレスを非別名化して、複数の別名化物理アドレスのいずれかを、少なくとも1つの下流のメモリシステム構成要素に提供される非別名化された物理アドレスにマッピングするように構成された物理的別名化ポイント(point of physical aliasing (PoPA))メモリシステム構成要素と、PoPAメモリシステム構成要素の上流に設けられた少なくとも1つのPoPA前メモリシステム構成要素であって、少なくとも1つのPoPA前メモリシステム構成要素は、別々の物理アドレス空間からの別名化物理アドレスを、別名化物理アドレスが別々のメモリシステムリソースに対応しているかのように扱うように構成される、少なくとも1つのPoPA前メモリシステム構成要素と、を備え得る。
【0033】
したがって、メモリシステムは、物理的別名化ポイント(PoPA)を含んでもよく、これは、同じメモリシステムリソースに対応する別々の物理アドレス空間からの別名化物理アドレスが、そのメモリシステムリソースを一意に識別する1つの物理アドレスにマッピングされるポイントである。メモリシステムは、PoPAの上流に設けられる少なくとも1つのPoPA前メモリシステム構成要素を含み得て、これは別名化物理アドレスをそれらが異なるメモリシステムリソースに対応するかのように扱う。
【0034】
例えば、少なくとも1つのPoPA前メモリシステム構成要素は、キャッシュ又は変換ルックアサイドバッファを含むことができ、これらは、別名化物理アドレスのためのデータ、プログラムコード、又はアドレス変換情報を別々のエントリでキャッシュすることができるため、同じメモリシステムリソースが異なる物理アドレス空間からアクセスされるように要求される場合、アクセスは、別のキャッシュ又はTLBエントリを配分させる。少なくとも1つのPoPA前メモリシステム構成要素は、例えば、データキャッシュ、命令キャッシュもしくは統一レベル2、レベル3、又はシステムキャッシュであり得る。
【0035】
また、PoPA前メモリシステム構成要素が、コヒーレントインターコネクト、スヌープフィルタ、又はそれぞれのマスタデバイスでキャッシュ情報間のコヒーレンシーを維持するための他のメカニズムなどのコヒーレンシー制御回路を含むことができる。コヒーレンシー制御回路は、異なる物理アドレス空間内のそれぞれの別名化物理アドレスに別々のコヒーレンシー状態を割り当てることができる。したがって、別名化物理アドレスは、実際に同じ基礎メモリシステムリソースに対応する場合でも、コヒーレンシーを維持する目的で別々のアドレスとして扱われる。一見すると、別名化物理アドレスに対して別々にコヒーレンシーを追跡することはコヒーレンシーの喪失の問題を引き起こす可能性があるように見えるが、実際には、異なる領域で動作するプロセスが特定のメモリシステムリソースへのアクセスを実際に共有することが意図される場合は、共通の物理アドレス(例えば、よりセキュアでない物理アドレス空間)を使用してそのリソースにアクセスできるため、これは問題ではない。PoPA前メモリシステム構成要素の別の例は、オフチップメモリに保存されたデータを機密性の喪失及び/又は改ざんから保護するために設けられるメモリ保護エンジンであり得る。そのようなメモリ保護エンジンは、例えば、特定のメモリシステムリソースと関連付けられたデータを、リソースがアクセスされた物理アドレス空間に応じた異なる暗号化鍵を用いて別々にデータを暗号化して、別名化物理アドレスを事実上異なるメモリシステムリソースに対応するかのように扱い得る(例えば、暗号化をアドレスに依存させる暗号化スキームを使用することができ、物理アドレス空間IDはこの目的上、アドレスの一部と見なされ得る)。
【0036】
PoPA前メモリシステム構成要素の形態に関係なく、このようなPoPAメモリシステム構成要素は、別名化物理アドレスをあたかも異なるメモリシステムリソースに対応するように扱うことが有用であり得る。なぜなら、これにより、異なる物理アドレス空間に発行されたアクセス間のハードウェアにより実施される隔離を提供し、その結果、キャッシュタイミングサイドチャネル又はサイドチャネルがコヒーレンシー制御回路によってトリガされコヒーレンシーの変化を伴うことなどの特徴により、1つの領域に関連付けられた情報が別の領域に漏洩されることがないからである。
【0037】
いくつかの実装態様では、異なる物理アドレス空間内の別名化物理アドレスが、それぞれの異なる物理アドレス空間について異なる数値物理アドレス値を使用して表されることが可能であり得る。この手法は、PoPAにおいて、どの異なる物理アドレス値が同じメモリシステムリソースに対応するかを判定するためにマッピングテーブルを必要とし得る。しかしながら、マッピングテーブルを維持するこのオーバーヘッドは不要と見なされてよく、いくつかの実装では、別名化物理アドレスが、異なる物理アドレス空間の各々において同じ数値物理アドレス値を使用して表される物理アドレスを含めば、より単純であり得る。この手法が取られる場合、物理的別名化ポイントで、単に、どの物理アドレス空間がメモリアクセスを使用してアクセスされるかを識別する物理アドレス空間IDを廃棄し、次いで、残りの物理アドレスビットを非別名化された物理アドレスとして下流に提供するだけで十分であり得る。
【0038】
したがって、PoPA前メモリシステム構成要素に加えて、メモリシステムはまた、複数の別名化物理アドレスを非別名化して、少なくとも1つの下流メモリシステム構成要素に提供される非別名化された物理アドレスを取得するように構成されたPoPAメモリシステム構成要素を含み得る。PoPAメモリシステム構成要素は、上述のように、特定のアドレス空間内で別名化アドレスに対応する非別名化アドレスを見つけるために、マッピングテーブルにアクセスするデバイスであり得る。しかしながら、PoPA構成要素は、単に、所与のメモリアクセスと関連付けられた物理アドレスタグが廃棄されるメモリシステム内の場所であってもよく、その結果、下流に提供される物理アドレスは、それがどの物理アドレス空間から提供されたかに関係なく、対応するメモリシステムリソースを一意に識別する。あるいは、いくつかの場合では、PoPAメモリシステム構成要素は、物理アドレス空間タグを少なくとも1つの下流メモリシステム構成要素に(例えば、下流のシステム構成要素における更なるフィルタチェックを可能にする目的で)依然として提供してもよい。しかし、PoPAはメモリシステム内のポイントをマークして、それより下流のメモリシステム構成要素が別名化物理アドレスをもはや異なるリソースとして扱わず、別名化物理アドレスの各々を考慮して同じメモリシステムリソースをマッピングし得る。例えば、PoPAの下流にあるメモリコントローラ又はハードウェアメモリ記憶デバイスが、所与のメモリアクセス要求の物理アドレスタグ及び物理アドレスを受信した場合、その物理アドレスが以前に見られたトランザクションと同じ物理アドレスに対応する場合には、たとえそれぞれのトランザクションが異なる物理アドレス空間タグを指定していたとしても、(同じアドレスへのアクセスをマージさせるなど)同じ物理アドレスにアクセスするそれぞれのトランザクションに対して実行される任意のハザードチェック又はパフォーマンス改善が適用され得る。対照的に、PoPAの上流のメモリシステム構成要素については、同じ物理アドレスにアクセスするトランザクションのために取られたそのようなハザードチェック又はパフォーマンス改善ステップは、これらのトランザクションが異なる物理アドレス空間内の同じ物理アドレスを指定する場合には発動されなくてもよい。
【0039】
いくつかの実施例では、上述の装置は、外部メモリシステム構成要素であり得るメモリシステム構成要素自体を含まなくてもよい。
【0040】
しかしながら、他の実施例では、メモリシステム構成要素は装置自体の一部であってもよく、メモリシステム構成要素は、パーティションID空間インジケータ及びパーティションIDに基づいて1つ以上のメモリシステムリソース制御パラメータからなるセットを選択するリソース制御パラメータ選択回路、及び/又はパーティションID空間インジケータ及びパーティションIDに基づいて、メモリアクセス要求に応答して性能監視データを更新するかどうかを制御する性能監視制御回路のうちの少なくとも1つを含んでもよい。
【0041】
リソース制御パラメータ選択回路がメモリシステム構成要素内に設けられる場合、メモリシステムリソース制御パラメータを物理アドレス空間の一部にマッピングすることができるため、それらのリソース制御パラメータは、処理回路上で実行されているソフトウェアによって更新されることができる。サポートされている物理アドレス空間が複数あるため、所与のパーティションID空間のメモリシステム制御パラメータにアクセスするためにどの物理アドレス空間を使用すべきかを選択するための複数のオプションが存在する。一例では、少なくとも3つのパーティションID空間の各々が少なくとも3つの領域のうちの対応する1つに関連付けられる場合、所与のパーティションID空間に対応する所与のメモリシステムリソース制御パラメータのセットが、所与のパーティションID空間に関連付けられた領域に対応する物理アドレス空間内のターゲットアドレスを指定して発行されたメモリアクセス要求に応答して、アクセス可能になり得る。所与の領域に関連付けられたパーティションID空間のメモリシステムリソース制御パラメータを、その同じ所与の領域に関連付けられた物理アドレス空間に定義することによって、メモリシステムリソース制御パラメータの管理を簡略化し、セキュリティ維持に役立ち得る。
【0042】
少なくとも3つのパーティションID空間の間で選択するために処理側でサポートを提供することは、上述した理由により有用であり得るが、実際には、上述の処理回路、パーティションID選択回路、及びパーティションID空間選択回路を備える処理素子は、その処理素子が通信することができる多くの様々に異なるメモリシステム構成要素を有し得るデータ処理システム(例えば、システムオンチップ)に統合されることができる。3つ以上の異なるパーティションID空間もサポートするようにシステム内のすべてのメモリシステム構成要素をアップグレードするには、多くの開発努力が必要となる場合があり、したがって、より少数のパーティションID空間をサポートするいくつかのレガシー構成要素が存在してもよい。したがって、少なくとも3つのパーティションID空間をサポートする1つ以上の構成要素を備える装置の第1の区域と、第1の区域内の1つ以上の構成要素よりも少数のパーティションID空間をサポートする1つ以上の構成要素を備える装置の第2の区域との間の境界にブリッジ回路を設けることが有用となり得、ブリッジ回路が、第1の区域と第2の区域との間を通過するメモリアクセス要求に対してパーティションID空間インジケータを再マッピングするように構成される。ブリッジ回路によって使用されるマッピングは、固定マッピングであってもよいし、又はプログラマブルパーティションID空間マッピング情報に応じて様々に変更可能なプログラマブルマッピングであってもよい。場合によっては、ブリッジ回路がPoPAより上流の本システムのあるポイントにある場合、ブリッジ回路は、所与のメモリアクセス要求によって指定された物理アドレス空間インジケータを再マッピングすることもできる(ブリッジ回路がPoPAより下流にある場合、物理アドレス空間インジケータ既に破棄されている可能性があり、したがって物理アドレス空間インジケータの再マッピングは必要ない可能性がある)。一般に、上述のブリッジ回路を設けることによって、様々に異なるタイプのメモリシステム構成要素を組み合わせるための柔軟性が増すため、すべてのメモリシステム構成要素が3つ以上のパーティションID空間をサポートしなくても、処理素子において複数のパーティションID空間をサポートするという利点を実現することができる。
【0043】
上述のように、いくつかの実装形態では、メモリシステム構成要素は、処理回路を備える処理素子の外部構成要素と見なされてもよく、したがって、メモリシステム構成要素は、スタンドアロン製品と見なされ得る。したがって、メモリシステム構成要素は、いくつかの例では、メモリアクセス要求を(例えば、システムオンチップの処理素子又は他の素子から)受信するメモリアクセス要求受信回路を含むことができ、このメモリアクセス要求は、上述のようにターゲットアドレス及びパーティションID空間インジケータを指定しており、パーティションID空間は、少なくとも3つのパーティションID空間の中から選択パーティションID空間を選択するための2ビット以上を含む。メモリアクセス要求はまた、選択パーティションID空間内で定義される、メモリアクセス要求を発行させた現在のソフトウェア実行環境に関連付けられたパーティションIDも指定する。メモリ構成要素システムは、パーティションID空間インジケータ及びパーティションIDを使用して、メモリシステムリソース制御パラメータを選択するか、又は性能監視データを更新するかどうかを制御するか、又はその両方を行うために、上述のようなリソース制御回路及び/又は性能監視制御回路を含む。
【0044】
メモリリソース及び性能監視分割
図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を有することができる。
【0045】
システムオンチップ(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はまた、トランザクションを、暗号化/解読機能を提供するための暗号ユニットなどの他のスレーブデバイスに導くことができる。
【0046】
したがって、データ処理システム2は、処理ユニット6及び他のマスタデバイス22によって発行されたトランザクションに応答してデータを記憶しデータへのアクセスを提供するためのメモリシステムを備える。キャッシュ8、10、12、16、20、相互接続14、18、メモリコントローラ24、及びメモリデバイス25はそれぞれ、メモリシステムの構成要素と見なされ得る。メモリシステム構成要素の他の例は、メモリ管理ユニット又は変換ルックアサイドバッファ(いずれかは、処理ユニット6自体内にある、又はシステム相互接続18内若しくはメモリシステムの別の部分内の更に下にある)を含んでもよく、メモリ管理ユニット又は変換ルックアサイドバッファは、メモリにアクセスするために使用されるメモリアドレスを変換するために使用され、このため、メモリシステムの一部分と見なされ得る。概して、メモリシステム構成要素は、メモリデータにアクセスするためにメモリトランザクションをサービス提供するために、又はこれらのメモリトランザクションの処理を制御するために使用されるデータ処理システムの任意の構成要素を含むことができる。
【0047】
メモリシステムは、メモリトランザクションを処理するために使用可能な様々なリソースを有することができる。例えば、キャッシュ8、10、12、16、20は、データ又は命令がメインメモリ25からフェッチされる必要がある場合よりもデータ又は命令へのより速いアクセスを提供するために、プロセッサ6のうちの1つにおいて実行する所与のソフトウェア実行環境によって必要とされるデータをキャッシュするために使用可能な記憶容量を有する。同様に、MMU/TLBは、アドレス変換データをキャッシュするために使用可能な容量を有することができる。また、相互接続14、18、メモリコントローラ24、及びメモリデバイス25はそれぞれ、メモリトランザクションを処理するために使用可能な帯域幅のある量を有することができる。
【0048】
処理要素6において実行する複数のソフトウェア実行環境がメモリシステムへのアクセスを共有するときに、他の実行環境が性能の損失を感知することを防止するために、1つのソフトウェア実行環境が当該ソフトウェア実行環境の公正なリソース配分よりも多くを使用することを防止することが望ましいことがある。これは、メモリ容量の所与の量と相互作用する独立したソフトウェアプロセスの数を増加させることによって設備投資を低減する要求の増加があるデータセンタ(サーバ)アプリケーションが、データセンタサーバの使用を増加させるために、特に重要であり得る。しかしながら、ウェブアプリケーションテール待ち時間目標を満たす要求が依然としてあり、このため、サーバにおいて実行する1つのプロセスが、他のプロセスが損なわれる程度にメモリシステムリソースを独占することができる場合に、これは望ましくない。同様に、ネットワーキングアプリケーションについては、以前に別個のSoCにあった複数の機能を単一のSoCに組み合わせることがますます一般的である。再び、これは、ソフトウェア実行環境間の性能相互作用を限ることへの希求、及びソフトウェア実行環境が、性能相互作用を限りつつ、これらの独立したプロセスが共有メモリにアクセスすることをどのように可能にする必要があるかを監視することへの希求につながる。
【0049】
図2は、対応するメモリトランザクションを発行するソフトウェア実行環境に依存してメモリシステムリソースの割り当ての制御を分割する一例を概略的に示す。この文脈において、ソフトウェア実行環境は、データ処理システム内の処理ユニットによって実行されるプロセス又はプロセスの一部分であり得る。例えば、ソフトウェア実行環境は、アプリケーション、ゲストオペレーティングシステム若しくは仮想マシン、ホストオペレーティングシステム若しくはハイパーバイザ、システムの異なるセキュリティ状態を管理するためのセキュリティモニタプログラム、又はこれらのタイプのプロセスのうちのいずれかのサブ部分を含んでもよい(例えば、単一の仮想マシンは、別個のソフトウェア実行環境として考えられる異なる部分を有してもよい)。
図2に示すように、ソフトウェア実行環境のそれぞれには、所与のパーティション識別子30が割り当てられてもよく、所与のパーティションID30は、当該ソフトウェア実行環境に関連付けられたメモリトランザクションと共にメモリシステム構成要素に渡される。
【0050】
メモリ構成要素に対して発行されるメモリアクセス要求は、アドレス、対応するソフトウェア実行環境に対して決定されたパーティションID(PartID)、及び選択パーティションID空間を示すパーティションID空間インジケータ(MPAM_SP)を指定する。
【0051】
メモリシステム構成要素内では、リソース割り当て又は競合解決動作は、パーティションID及びパーティションID空間インジケータに基づいて選択されたいくつかのメモリシステム構成要素パラメータのセットのうちの1つのセットに基づいて制御されることができる。例えば、
図2に示すように、ソフトウェア実行環境のそれぞれには、割り当て閾値が割り当てられてもよく、割り当て閾値は、当該ソフトウェア実行環境に関連付けられたデータ/命令について割り当てられ得るキャッシュ容量の最大量を表し、所与のトランザクションを処理するときの関連する割り当て閾値は、そのトランザクションに関連付けられたパーティションID及びパーティションID空間インジケータに基づいて選択される。例えば、
図2では、パーティションID0及びパーティションID空間インジケータ0に関連付けられたトランザクションは、データを、キャッシュの記憶容量の50%まで割り当てることができ、他の目的に使用可能なキャッシュの少なくとも50%を残す。一方、別のパーティションID空間内の同じパーティションID0(例えば、0の代わりにMPAM_SP=1を有する)は、別のリソース制御パラメータのセット(例えば、この例では、キャッシュ容量の40%という制限が定義されている)に対応し得る。
【0052】
同様に、メモリトランザクションを処理するために使用可能な帯域幅の有限量を有するメモリコントローラ24などのメモリシステム構成要素において、最小帯域幅閾値及び/又は最大帯域幅閾値は、パーティションID及びパーティションID空間インジケータのそれぞれの組み合わせについて指定され得る。所与の期間内に、所与のパーティションID及びパーティションID空間IDを指定するメモリトランザクションが最小量の帯域幅よりも少量しか使用していない場合には、その所与のパーティションID及びパーティションID空間IDに関連付けられたメモリトランザクションを優先させることができ、一方、同じパーティションID及びパーティションID空間インジケータを指定するトランザクションで最大帯域幅がすでに使用されているか、又はそれを超えている場合は、メモリトランザクションに使用する優先順位を下げることができる。
【0053】
これらは、単に、メモリシステムリソースの制御が、対応するトランザクションを発行したソフトウェア実行環境に基づいてパーティショニングされ得る方法の2つの例であることが理解されよう。概して、異なるプロセスが、メモリシステムによって提供されたリソースの異なるパーティショニングされた部分を「見る(see)」ことを可能にすることによって、これは、プロセス間の性能相互作用が、前述の問題に対処することを助長するために限られることを可能にする。
【0054】
同様に、メモリトランザクションに関連付けられたパーティションID及びパーティションID空間インジケータは、メモリシステム内の性能監視を分割するために使用され得、このため、別個の性能監視データのセットは、所与のソフトウェア実行環境(又はソフトウェア実行環境のグループ)に特有の情報が識別されることを可能にするために、パーティションIDのそれぞれについて追跡され得、このため、潜在的な性能相互作用のソースは、性能監視データがすべてのソフトウェア実行環境にわたって全体として記録された場合よりも容易に識別され得る。これは、潜在的な性能相互作用影響を診断することを助長することができ、可能な解決策の識別を助長することができる。
【0055】
パーティションIDの設定及びパーティションID空間インジケータの設定を制御し、対応するソフトウェア実行環境について設定されたパーティションIDに基づいてメモリトランザクションのラベル付けをし、パーティションIDをメモリシステムにルーティングし、メモリシステムにおけるメモリシステム構成要素におけるパーティションベースの制御を提供するためのアーキテクチャについて、以下で考察する。このアーキテクチャは、パーティションIDのための広範囲な使用へスケーラブルである。パーティションIDの使用は、メモリシステムの既存のアーキテクチャのセマンティクスを変更することなく、当該セマンティクス上の層であることが意図されており、このため、メモリシステムによって使用されている特定のメモリプロトコルによって課されるメモリトランザクションのアドレス指定、コヒーレンス、及び必要とされる順序付けは、リソース/性能監視分割によって影響されない。パーティションID及びパーティションID空間を使用してリソース割り当てを制御するときに、これは、所与のソフトウェア実行環境についてメモリトランザクションを処理するときに達成される性能に影響し得るが、アーキテクチャに有効な計算の結果には影響しない。すなわち、パーティションID及びパーティションID空間は、メモリトランザクションの成果又は結果(例えば、どのデータがアクセスされるか)を変更せず、そのメモリトランザクションについて達成されるタイミング又は性能に影響するだけである。
【0056】
物理アドレス空間選択及びメモリリソースの分割及び/又は性能監視をサポートする処理素子
図3は、
図1に示されるシステム2の所与の処理素子6内のいくつかの構成要素をより詳細に示し、例えば、処理素子は、
図1に示されるCPU6のうちの1つであってもよい。処理素子は、命令セットアーキテクチャに従って命令を実行することができる処理回路310を含む。処理回路310は、命令キャッシュから又はメモリから命令をフェッチする命令フェッチ回路300と、フェッチされた命令を復号化する命令デコーダ302と、命令デコーダ302によって復号化された命令に応答して処理動作を実行する1つ以上の実行ユニット304とを含む。レジスタ312は、処理回路310によって実行される命令のオペランド、実行された命令の結果、処理回路310によってどのように処理が実行されるかを構成するための制御データを格納するために提供される。
【0057】
以下で更に説明するように、処理回路は、いくつかの動作領域(セキュリティ状態)における命令の実行をサポートすることができ、レジスタ312は、どの動作領域が現在の領域であるかを識別するために使用される制御状態を含むことができる。
図3に示す例では、レジスタは、どの動作領域が現在の領域であるかを示す現在の領域指示314を提供する制御レジスタを含む。しかしながら、これは必須ではなく、他のアーキテクチャでは、現在の領域を識別する1つの領域指示を提供するのではなく、別々のレジスタに又は同じレジスタの別々の部分に記憶され得る制御状態の2つ以上の項目に基づいて現在の領域を判定することができる。例えば、どの領域が現在の領域であるかは、別々のシステムレジスタからアクセス可能な制御ビットのブール関数として判定することができる。
【0058】
また、処理回路は、いくつかの例外レベル(特権レベル)での命令の実行をサポートすることができ、これらの例外レベルは、より特権の高い例外レベルで実行される命令が、より特権が低い例外レベルで実行される命令よりも大きな権利を有する(例えば、より特権の低い例外レベルのコードでは許可されない操作を実行したり、より特権の低い例外レベルのコードではアクセスできないレジスタ又はメモリのデータにアクセスしたりすることができる)ように、様々に異なる特権レベルに関連付けられることができる。レジスタ312は、どの例外レベルが、処理回路310が動作している現在の例外レベルであるかを示す現在の例外レベル(特権レベル)指示315を指定することができる。例外レベルという用語と特権レベルという用語とは、本出願において互換可能である。
【0059】
処理回路310は、仮想アドレス(VA)と、現在の領域を識別する領域ID(領域ID又は「セキュリティ状態」)とを指定するメモリアクセス要求を発行することが可能である。アドレス変換回路316(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造317において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)318は、アドレス変換が必要な都度ページテーブル情報がメモリからフェッチされる必要がある場合よりもより速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路316はまた、物理アドレスと関連付けられたいくつかの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)IDを出力する。PASの選択については、以下でより詳細に論じる。
【0060】
PASフィルタ320は、変換された物理アドレス及びPASIDに基づいて、その物理アドレスがPASIDによって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタフィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル構造321に格納されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB318内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ322内にキャッシュされ得る。
図1の例では、グラニュール保護情報キャッシュ322は、TLB18とは別々の構造として示されているが、他の例では、これらのタイプのルックアップキャッシュを単一ルックアップキャッシュ構造として組み合わせることができ、その結果、組み合わされた構造のエントリの単一ルックアップは、ページテーブル情報及びグラニュール保護情報の両方を提供する。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ8、10、12、16、20及び/又はインターコネクト18に対して発行されることを進めることを可能とするかどうかをPASフィルタ320が判定する情報を定義する。メモリアクセス要求に対して指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ320は、フォールトを通知し、例えば、要求がメモリシステムに渡されることを防止することによって、メモリアクセス要求の効果をブロックしてもよい。
【0061】
図3は、所与の要求に対するPASの選択がアドレス変換回路316によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報をPAと共にアドレス変換回路316によってPASフィルタ320に対して出力することができ、PASフィルタ320は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
【0062】
PASフィルタ320の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつかの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシー実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的位置を指す場合でも、あたかも全く別々のメモリシステム位置を識別する別々のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
【0063】
上述したメモリシステムリソースの分割及び性能監視をサポートするために、処理素子6はまた、キャッシュ、インターコネクト、又は他のメモリシステム構成要素に送信されるメモリアクセス要求に対して指定するパーティションIDを選択するためのパーティションID選択回路332と、パーティションIDが内部に定義されるパーティションID空間を選択するためのパーティションID空間選択回路334とを含む。パーティションID選択回路332及びパーティションID空間選択回路334の両方は、現在の領域314、現在の例外レベル315、及び1つ以上のメモリ分割及び監視(MPAM)制御レジスタ330において指定された情報などの制御情報に基づいて、それらのパーティションIDの選択を行うことができる。これらについては、以下でより詳細に説明する。
【0064】
したがって、キャッシュ、インターコネクト、又は他のメモリシステム構成要素に送信されるメモリアクセス要求は、アドレス変換においてMMU316によって取得された物理アドレス、現在の領域314及びページテーブル317内の情報に基づいて物理アドレス空間選択回路(例えば、MMU316又はPASフィルタ320)によって選択された選択物理アドレス空間(PAS)、選択パーティションID空間を識別するパーティションID空間インジケータ(MPAM_SP)、及びメモリシステム構成要素におけるリソース制御パラメータ選択又は性能監視を制御するために選択パーティションID空間と組み合わせて使用され得る1つ以上のパーティションID(PARTID、PMG)を指定する。
【0065】
それぞれの物理アドレス空間に関連付けられた領域のサポート
図4は、処理回路310が動作することができる異なる動作状態及び領域の例、ならびに異なる例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
【0066】
処理回路310は、いくつかの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に最高特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に最高特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、後述するように、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
【0067】
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに対して受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況においては、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベル315を含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
【0068】
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、レスセキュア領域86、及びレルム領域88を含むいくつかの動作領域をサポートする。参照を容易にするために、レスセキュア領域は、「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路310が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ314に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
【0069】
起動時に、いくつかのブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高度の特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えば、ルート領域と関連付けられ得、OEMブートコードは、セキュア領域で動作し得る。しかしながら、システムがブートされると、実行中、処理回路310は、一度に領域82、84、86、及び88のうちの1つで動作すると見なされ得る。領域82~88の各々はそれ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
【0070】
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
【0071】
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードがセキュア領域84と関連付けられたリソースにアクセスできない一方で、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできるという意味では同等でない。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2はセキュア分割がサポートされる場合、2ページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
【0072】
システムをセキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理が別のハードウェアプロセッサ上で行われる必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、いまや、広範囲の異なるソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をセキュア領域内でサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供される集積回路を携帯電話などの電子デバイスに組み立てる相手先商標製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、多数の異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
【0073】
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機微性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュアな処理を必要としているそのようなユーザ提供アプリケーションのためにセキュア領域84を使用可能であるが、実際上、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダの両方に対して問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、それらのコードに対する潜在的な攻撃の攻撃対象領域が、セキュア領域内に恣意的なユーザ提供コードが追加されることにより増加する。これは望ましくないことであり得、したがってユーザがセキュア領域84にコードを追加可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明がユーザ提供コードが処理を実行する前提条件として必要とされる場合、セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードのすべてを監査し証明することは困難であり得、セキュア領域84で動作する異なるコードのプロバイダのすべてに、自らのデータ又はコードへのアクセスを任せることに否定的であり得る。これは、第三者がよりセキュアなサービスを提供する機会を制限し得る。
【0074】
したがって、
図4に示すように、レルム領域と呼ばれる追加の領域88が提供され、セキュア領域84で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供するために、ユーザが導入したそのようなコードによって使用され得る。レルム領域では、実行されるソフトウェアは、いくつかのレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する異なる構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
【0075】
レルム領域88は、セキュア領域84と同様に、それに割り当てられたそれ自体の物理アドレス空間を有するが、レルム領域及びセキュア領域88、84は、非セキュア領域86に関連付けられた非セキュアPASに各々アクセスすることができるが、レルム領域及びセキュア領域88、84は、互いの物理アドレス空間にアクセスすることができないという意味で、セキュア領域84と直交する。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼し、これは、証明と保証がより実行可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機微性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
【0076】
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86内で実行されていたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードは非セキュア領域86で動作する他のコードによってアクセスできないため、これらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、彼らのデバイス上でコードが実行されているとき、初めから本質的に信頼される必要があり得、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
【0077】
これは、例えば、様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネット・オブ・シングスのためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
【0078】
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又は実行中に、ファームウェアの画像と構成、例えば、モニタコードの画像と構成、又はRMMコードの画像と構成の測定が行われる。実行中にはレルムのコンテンツと構成が測定され、それによって、レルムオーナーが関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行うことができる。
【0079】
図4に示されるように、領域切り替えを管理する別個のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、リソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有しレルム領域88を有しないシステムであってもより堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって最終的なデバイスへの依存関係なしに開発し、保証し、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するオペレーティングシステム32によって制御され得、一方、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
【0080】
図5は、それぞれの物理アドレス空間を、ハードウェアに設けられた物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
【0081】
物理アドレスがアドレス変換回路316によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路316はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路316の代わりに、アドレス変換回路(例えば、MMU)は、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された物理アドレス及び情報を出力することができ、次いで、この情報は、PASフィルタ320によって使用されて、PASを選択することができる。
【0082】
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路310がメモリアクセス要求を発行するときに動作する現在の領域に応じて限定され得る。
【0083】
【0084】
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
【0085】
したがって、PASフィルタ320がシステムファブリックにメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
【0086】
物理的別名化ポイント(PoPA)60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲と見なされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PASIDは物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつかの別名化物理アドレス63の数にマッピングされ得るためである。これらの別名化物理アドレス63は、すべて実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシー管理を有する、異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシーサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
【0087】
システムは、2つ以上のPoPA60を含んでもよい(例えば、別々のPoPAが、別々のパス上に実装されてもよく、それによってメモリアクセス要求が受信側メモリシステム構成要素の別々サブセットにルーティングされ得る)。各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化されたアドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステム位置を実際に識別するシステム物理アドレス空間64は、再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズである。例えば、PoPA60では、PASIDはアドレスから剥離され得、下流の構成要素については、アドレスはPASを指定することなく、単に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望される場合、PASIDは、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、別々の物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステム位置を指すように解釈されるであろう。しかし、供給されたPASIDがそれでもコンプリータ側セキュリティチェックを実行するために使用され得る。
【0088】
図6は、システム物理アドレス空間64を、グラニュール保護テーブル321を使用して、特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができる方法を示す。グラニュール保護テーブル(GPT)321は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT321は、特定のサイズの物理アドレスのグラニュール(例えば4Kページ、又は別のサイズのグラニュール)に各々対応するいくつかのエントリを含み得、そのグラニュールの割り当てられたPASを定義し得、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールはルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、そのページテーブル317内に、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
【0089】
しかしながら、いくつかの実装では、GPT321によって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域(例えば、通常は、その領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)を別のアドレス空間と共有されたものとしてマークすることができる。これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、
図6では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からアクセス不可能である。非セキュア領域86はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のそのデータのいくつかを非セキュア領域と一時的に共有することを望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT321を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を
図6の左側に示される非セキュアPASからもアクセス可能とし得る。レルム領域がそのアドレス空間の区域を非セキュア領域と共有されるものとして指し示す場合、非セキュア領域から発行され、その区域をターゲットとするメモリアクセス要求は、当初は非セキュアPASを指定し得るが、PASフィルタ20は要求のPASIDが代わりにレルムPASを指定するように再マッピングすることができる。それにより、下流のメモリシステム構成要素は要求をあたかも初めからレルム領域から発行されたかのように扱う。この共有は、異なる領域を特定のメモリ区域に割り当てるための動作が、より高程度のキャッシュ/TLB無効化及び/又はメモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う、よりパフォーマンス集約的であり得るために、パフォーマンスを改善し得る。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
【0090】
メモリアクセス要求の発行
図7は、処理素子6からメモリアクセス要求を発行するときに実行されるステップを示すフロー図である。ステップ100では、処理回路310は、対応する物理アドレス空間にそれぞれ関連付けられた少なくとも3つの領域のうちの1つにおいて命令を処理する。ステップ101では、処理回路は、メモリアクセス要求を発行するかどうかを判定する。メモリアクセス要求は、ロード/ストア命令の実行によってトリガされるデータアクセス要求であってもよいし、又は命令フェッチアクセス要求であってもよく、この命令フェッチアクセス要求は、命令フェッチステージ300がメモリ又は命令キャッシュから命令をフェッチするためのフェッチ要求を発行することによって(もしくは、プリフェッチャが、命令フェッチステージ300によって命令が実際に必要とされる時間より前に、命令を命令キャッシュにプリフェッチするためのプリフェッチ要求を発行することによって)引き起こされる。現在発行するメモリアクセス要求がない場合、処理はステップ100において継続する。
【0091】
発行するメモリアクセス要求があると、ステップ102において、MMU316は、メモリアクセスに対して指定された仮想アドレスを物理アドレスに変換し、物理アドレス選択回路(例えば、MMU316又はPASフィルタ320)は、現在の領域314と、メモリアクセスの仮想アドレスに対応するページテーブル317からのページテーブルエントリに指定された情報とに基づいて、出力PASを選択する。
【0092】
図8は、
図7のステップ102をより詳細に示す。
図8のステップ130では、処理回路310が、所与の仮想アドレス(VA)をターゲットVAとして指定してメモリアクセス要求を発行する。ステップ132では、アドレス変換回路316が、そのTLB318内の任意のページテーブルエントリ(又はそのようなページテーブルエントリ(PTE)から導出されたキャッシュ情報)をルックアップする。いずれかの必要なページテーブル情報が利用できない場合、アドレス変換回路316は、必要なPTEをフェッチするためにメモリへのページテーブルウォークを開始する(VAから中間アドレス(IPA)へ、そしてIPAからPAへのマッピングを得るため、潜在的に、ページテーブル構造のそれぞれのレベル及び/又はアドレス変換の複数ステージをステップスルーするための一連のメモリアクセスを要する)。ページテーブルウォーク動作においてアドレス変換回路16によって発行される任意のメモリアクセス要求は、それ自体が、アドレス変換及びPASフィルタリングの対象となり得る。したがって、ステップ130で受信された要求は、メモリからページテーブルエントリを要求するために発行されたメモリアクセス要求であり得ることに留意されたい。関連性を有するページテーブル情報が識別されると、仮想アドレスは、物理アドレスに(おそらくIPAを介して2つのステージで)変換される。ステップ134では、アドレス変換回路316又はPASフィルタ320が、どの領域が現在の領域であるかを判定する(現在の例外レベル315がEL3である場合、現在の領域はルート領域であり、現在の例外レベル315がEL2、EL1、又はEL0である場合、現在の領域は、現在の領域表示314によって示されるように、非セキュア領域、セキュア領域、及びレルム領域のうちの1つである)。
【0093】
現在の領域が非セキュア領域である場合、ステップ136で、このメモリアクセス要求のために選択された出力PASは非セキュアPASである。
【0094】
現在の領域がセキュア領域である場合、ステップ138で、物理アドレスを提供したPTEに含まれたPAS選択情報に基づいて出力PASが選択され、出力PASはセキュアPAS又は非セキュアPASのいずれかとして選択されることになる。
【0095】
現在の領域がレルム領域である場合、ステップ140では、物理アドレスが導出されたPTEに含まれるPAS選択情報に基づいて出力PASが選択され、この場合、出力PASはレルムPAS又は非セキュアPASのいずれかとして選択される。
【0096】
ステップ134で現在の領域がルート領域であると判定された場合、ステップ142で、物理アドレスが導出されたPTE114内のPAS選択情報に基づいて、出力PASが選択される。この場合、出力PASは、ルート、レルム、セキュア、及び非セキュア領域に関連付けられた物理アドレス空間のいずれかとして選択される。
【0097】
図8は、ページテーブル317のPTEにおいて定義された情報に基づくPASの選択を説明しているが、別の手法では、ページテーブル317とは無関係に、各VAに使用するPASを指定する別個のデータ構造を提供してもよい。しかしながら、実際には、PAS選択情報を指定するためのいくらかの空間がPTE内で利用可能であり得、PAS選択情報をページテーブル情報と組み合わせることによって、TLB318又はページテーブル317に加えて第2の構造をルックアップする必要性を回避し、これは、電力を節約し、回路面積を低減するのに役立つ。
【0098】
図7に戻ると、出力PASが利用可能になると、ステップ103では、PASフィルタ320は、物理アドレス(PA)及びステップ102において選択された出力PASに基づいて、PASフィルタチェックを開始する。ステップ103が、
図9により詳細に示される。
図9のステップ160で、PASフィルタ320は、PA及び出力PASを指定するメモリアクセス要求を受信し、ステップ162で、PASフィルタ320は、メモリアクセスの物理アドレスに対応するグラニュール保護テーブルエントリをグラニュール保護テーブル321から取得する(GPTエントリは、PAがGPTキャッシュ322内でヒットする場合、GPTキャッシュ322から取得することができ、そうでなければ、メモリ内のGPT321へのアクセスを実行することによって取得することができる)。ステップ164では、ターゲットPAに対応するアドレス空間のグラニュールに、ステップ102で選択された出力PAS内でアクセスすることが許可されていることを、ターゲットPAに対応する取得されたグラニュール保護テーブルエントリGPT[PA]が示しているかどうかをPASフィルタ320が判定する。そうであれば、ステップ166においてメモリアクセスの続行が許可される。特定の物理アドレスに対応するGPTエントリが、物理アドレスに対応するグラニュールがステップ102で選択された出力PAS内でアクセスされることを許可されないことを示す場合、ステップ168で、メモリアクセス要求がブロックされ、キャッシュ、インターコネクト、もしくは他のメモリシステム構成要素に発行されることが防止されるか、又はPASフィルタによって行われるチェックが完了する前にメモリアクセス要求が投機的に発行されることを可能にするシステムでは、PASフィルタは、メモリアクセス要求の影響をキャンセルするためのアクションを取ることができる。例えば、PASフィルタは、メモリアクセス要求によって引き起こされるメモリ内の状態の変化が反転されるようにする制御信号、又はメモリアクセス要求に応答してメモリから返される状態が、レジスタの更新に使用されないように、そうでなければソフトウェアにとってアクセス可能になるようにする制御信号を発行することができる。
【0099】
所与のグラニュールが所与の出力PAS内でアクセスされることが許可され得るかどうかを指定するためにGPTエントリ内に含まれる情報のフォーマットは、実装形態ごとに異なってもよい。いくつかの実装形態では、GPTエントリが、所与のPAに対して1つの特定のPASを使用することだけを許可することをサポートする場合があり、その場合、チェックは、出力PASが、ステップ162でアクセスされたGPTエントリに指定された許可されたPASに一致するかどうかだけであり得る。他の実施例では、同じ物理アドレスに対して複数の許可された出力PASをサポートしてもよく、この場合、チェックは、出力PASが、PAに対してGPTエントリによって指定される1つ以上の許可されたPASのいずれかであるかどうかであってもよい。
【0100】
図7に戻ると、メモリアクセス要求101の発行に応答して、ステップ104では、パーティションID選択回路332が、現在の実行環境に関連付けられたプログラマブルパーティションID選択情報に基づいてパーティションID(例えば、後でより詳細に説明するように、PARTID及び/又はPMG)を選択する。例えば、パーティションID選択情報は、MPAM制御レジスタ330から取得することができる。各ソフトウェア実行環境は、MPAM制御レジスタ330に格納された特定のMPAM状態のセットに関連付けられてもよく、このMPAM状態は、実行環境間でコンテキストが切り替わるときに保存/復元されるそのソフトウェア実行環境のコンテキスト情報の一部であってもよい。したがって、あるソフトウェア実行環境から別のソフトウェア実行環境に切り替えると、着信ソフトウェア実行環境に関連付けられたコンテキストは、後任のソフトウェア実行環境に関連付けられたMPAM状態を指定するようにMPAM制御レジスタ330を更新することを含めて、レジスタに書き込まれることができる。パーティションIDの選択はまた、現在の例外レベル315及び/又は実行中のアクセスのタイプ(例えば、アクセスが命令フェッチアクセスであるかデータアクセスであるか)に基づいてもよい。パーティションIDの選択は、以下で説明する
図13A及び
図13Bにより詳細に示される。
【0101】
また、ステップ105では、パーティションID空間選択回路334は、現在の領域340に基づいて(及び任意選択で、MPAM制御レジスタ330内で指定され得るプログラマブル制御情報及び/又は現在の例外レベル350にも基づいて)パーティションID空間を選択する。パーティションID空間の選択は、以下で更に説明される
図14及び
図15により詳細に示される。
図7は、ステップ102及び103と並行して実行されるステップ104及び105を示しているが、他の例では、これらは連続して行うこともできる。また、ステップ105はステップ104の後に連続して実行されるものとして示されているが、他の実施例では、ステップ105はステップ104の前に行われてもよく、又はステップ104及び105は並行して行われてもよい。
【0102】
ステップ106では、メモリアクセス要求は、ステップ102でMMU316によって取得された物理アドレス、ステップ102で選択された出力PASを示すPASインジケータ、ステップ105で選択された選択パーティションID空間を示すパーティションID空間インジケータ(MPAM_SP)、及びステップ104で選択された1つ以上の選択パーティションIDを指定するメモリシステム(例えば、キャッシュ、インターコネクト、又は他のメモリシステム構成要素)に発行される。パーティションID空間インジケータMPAM_SPは、マルチビット値であり、処理回路が実行可能なそれぞれの領域に対応する少なくとも3つの異なるパーティション識別空間のうちの1つを示すことができる。4つの異なる領域(非セキュア、セキュア、レルム、及びルート)をサポートする、
図4に示されるような実施例では、MPAM_SPは、4つの異なるパーティションID空間を区別することができ、各パーティションID空間はそれらの領域のうちの1つに対応している。例えば、MPAM_SPは、以下のような2ビット符号化を有することができる(もちろん、他の符号化も可能である)。
・非セキュアパーティションID空間:0b01;
・セキュアパーティションID空間:0b00;
・レルムパーティションID空間0b11;
・ルートパーティションIDスペース0b10。
【0103】
パーティションID及びパーティションID空間の選択
図10は、
図3に示すMPAM制御レジスタ330の一例を示す。MPAM制御レジスタ330は、いくつかのパーティションIDレジスタMPAMi_ELj340、342、344、346を含み、iは、パーティションIDを提供するためにそのレジスタが使用される例外レベルを示し、jは、そのレジスタ内の情報を更新することができる最低特権例外レベルを示す。したがって、MPAM0_EL1 340は、例外レベルEL0で使用するためのパーティションIDを提供し、例外レベルEL1以上で動作するコードによって更新可能である。
【0104】
MPAM制御レジスタ330はまた、ディスカバリレジスタMPAMIDR_EL1 348を含み、これは、
図11により詳細に示され、プロセッサ実装についてのハードウェア能力に関する情報を提供するために使用されるため、ソフトウェアは、どの特徴がハードウェア上に実装されているかを発見することができる。
図11に示すように、ディスカバリレジスタ348は、パーティションIDレジスタ340、342、344、346のリソース制御パーティションID(PARTID)フィールド及び性能監視グループ(PMG)フィールドに許可される最大値を示すパーティションID最大値370、372を含み得る。これにより、別々のハードウェア実装形態が、これらのIDにおける異なるビット数をサポートすることが可能になり、ソフトウェアは、ディスカバリレジスタの最大フィールド370、372を読み取って、ハードウェアによってサポートされる最大パーティションID値を知ることができる。
【0105】
ディスカバリレジスタ348はまた、上記の
図4に示されるように、ハードウェア実装形態が、非セキュア、セキュア、レルム、及びルート状態に対応する4パーティションID空間をサポートするかどうかを示すためのフィールドSP4 374も含む。すべてのハードウェア実装形態が4パーティションID空間をサポートするわけではない場合もあるので、4空間サポートフィールド374は、ソフトウェアが追加のパーティションID空間を使用できるかどうかをソフトウェアが識別するのに有用であり得る。4パーティションID空間をサポートするパーティションID空間選択回路334を有する一実装形態では、SP4フィールド374は、1に設定されてもよい。SP4フィールド374は、ディスカバリレジスタ348のあるビットに存在してもよく、このフィールドは、4パーティションID空間をサポートしないレガシーデバイスにおいては、0に設定されることになる。
【0106】
また、ディスカバリレジスタは、以下で更に説明するように、ハードウェア実装形態が代替パーティションID空間の提供をサポートするかどうかを示す代替パーティションID空間サポート指示フィールド376を含む。代替パーティションID空間の提供をサポートしない実装形態では、各領域は、そのプライマリパーティションID空間フィールド376の使用に制限され、0に設定されることになろう(この場合も、フィールド376は、ディスカバリレジスタのあるビットに存在してもよく、このフィールドは、レガシーデバイスでは0に設定されることになる)。代替パーティションID空間の提供をサポートする実装形態では、HAS_ALTSPフィールド376が、1に設定される。
【0107】
図12は、パーティションIDレジスタ340、342、344、346をより詳細に示す。これらのレジスタは、メモリシステムに送信されるときにメモリアクセス要求に添付されるパーティションIDを選択するための情報と、メモリアクセス要求に対して示されるパーティションID空間を選択するための情報とを含む。パーティションIDレジスタ340、342、344、346内の状態は、処理回路上で実行される所与のソフトウェア実行環境に関連付けられたコンテキスト情報の一部とみなすことができる。コンテキストスイッチが発生すると、レジスタ340、342、344、346は、後任のソフトウェア実行環境に関連付けられたコンテキスト情報で更新される。
【0108】
各パーティションIDレジスタ340~346は、対応する例外レベルで実行されるソフトウェアに使用するパーティションIDを提供するためのいくつかのパーティションIDフィールド350、352、354、356を含む。この例では、データ(リソース分割)パーティションID(PARTID_D)フィールド350、命令(リソース分割)パーティションID(PARTID_I)フィールド352、データ性能監視グループID(PMG_D)フィールド354、及び命令性能監視グループID(PMG_I)フィールド356を含む4つのフィールドがある。
【0109】
フィールド350、354は、データメモリアクセスに使用され、フィールド352、356は、命令フェッチメモリアクセスに使用される。
【0110】
フィールド350、352は、それぞれデータアクセスと命令フェッチとに使用するための、リソース分割パーティションIDを提供する。メモリシステム構成要素は、リソース分割パーティションIDフィールド350、352のうちの1つの値に基づいて選択されたパーティションIDを使用して、キャッシュ容量又はメモリバス帯域幅などのリソースの割り当てを制御するか、又は(例えば、パーティションIDに基づいて要求優先度を選択することによって)異なる要求間の競合を管理することができる。
【0111】
性能監視グループフィールド354、356は、性能監視グループIDに基づいて性能監視データを更新するかどうかを制御するために使用されるIDを提供する。いくつかの実施例では、フィールド354、356内の性能監視グループIDは、リソース制御パーティションIDフィールド350、352とは別個のスタンドアロンIDとみなすことができる。しかしながら、他の実施例では、性能監視グループID354、356は、リソース制御パーティションID 350、352と併せて使用することができるいくつかの追加ビットであってもよいため、その場合、性能監視を制御するためにメモリシステム構成要素によって使用される性能監視グループID値は、フィールド354、356内の値を独立したIDとみなすのではなく、選択されたパーティションIDと選択された性能監視グループIDとを連結したものであってもよい。例えば、PMGフィールド354、356は、PARTIDフィールドのうちの対応する1つへのプレフィックス又はサフィックスと見なされ得る。PMGフィールド354、356がPARTID値とは独立して解釈されるか、又はPARTID値と組み合わせて読み取られるかにかかわらず、性能監視グループID354、356を定義することによって、性能監視の目的で、同じリソース分割パーティションIDを共有する要求同士の別々のサブセットを区別することが可能になる。
【0112】
リソース分割(フィールド350、352を使用)及び性能監視制御(フィールド354、356を使用)のために別個のパーティションIDを提供することは必須ではないことが理解されよう。他の実施例では、同じIDが両方の目的のために使用される場合もあり、又はいくつかの実装形態では、リソース割り当ての分割及び性能監視制御の分割のうちの一方のみをサポートするが、両方をサポートせず、したがって両方のタイプのフィールドを提供しない場合もある。
【0113】
また、命令及びデータパーティションIDが別々にサポートされることは必須ではなく、他の実施例では、両方の目的のために共通のIDを提供することができる。同じソフトウェア実行環境のデータアクセスと命令アクセスに別々のパーティションIDを定義できるようにして、対応する命令アクセスとデータアクセスに異なるリソース制御パラメータを使用できるようにすると有効であり得る。代替手法としては、全体としてソフトウェア実行環境に関連付けられた1つのパーティションIDを有するが、アクセスが命令用か又はデータ用かに応じて0又は1の追加ビットを付加することで、メモリシステム構成要素が、命令及びデータアクセスそれぞれに対して異なる制御パラメータを選択することができるようにすることがある。しかしながら、パーティションIDに基づいて選択された所与の数のセットの制御パラメータについては、この手法は、データと命令との間でパーティションID空間を五分五分に分割する必要があることを意味するであろう。実際には、命令パーティションよりも多くのデータパーティションを有することが望ましい場合が多く、これは、複数のソフトウェア実行環境が同じコードを使用しても、別々のデータ入力で実行することが比較的一般的であり得るからであり、したがって、複数のソフトウェア実行環境間で単一の命令パーティションIDを共有することができるようにし、それらの環境の各々が異なるデータパーティションを使用することを可能にすることが特に有用であり得る。命令アクセス又はデータアクセス示すために0又は1ビットを付加するという手法は、その状況において、共通コードの個別のインスタンスごとに、メモリシステム構成要素において複数セットの同一の構成情報を定義することを必要とする。これに対して、パーティションIDレジスタ340~346に命令パーティションフィールド及びデータパーティションフィールドを別々に設けることによって(命令パーティションID及びデータパーティションIDは共通のID空間から選択される)、異なるソフトウェア実行環境間で同じパーティションIDを再利用することができ、パーティションID空間を半々に制約することなく、必要に応じてデータと命令の間でパーティションID空間を分割することができる。各パーティションIDレジスタ340~346内の2倍のパーティションIDフィールドに対して追加の記憶容量が必要になるとしても、この手法は、複数の実行環境の命令アクセス間で1つのパーティションを共有することによって、メモリシステム構成要素において必要とされる制御パラメータの組が少なくなり(したがって記憶容量が少なくなり)、メモリシステム構成要素でリソースを節約できる。
【0114】
図13Aは、メモリアクセス要求に対して指定されるパーティションIDの選択を制御する方法を示す。
図13Aに示す手法は、データアクセスメモリトランザクションに使用することができる。ステップ110では、処理回路310が、例えば、実行ユニット304によって実行されるロード/ストア命令に応答して、データアクセス(ロード/ストア)メモリアクセス要求を発行する。ステップ112では、パーティションID選択回路332が、プロセッサの現在の動作状態に従って選択されたパーティションIDレジスタ340、342、344、346のうちの1つを読み出す。例えば、パーティションID選択回路332は、現在の例外レベル315に対応するパーティションIDレジスタ340、342、344、346のうちの1つを選択することができる(現在の例外レベルがEL0である場合はレジスタ340を、現在の例外レベルがEL1である場合はレジスタ342を、現在の例外レベルがEL2である場合はレジスタ344を、現在の例外レベルがEL3である場合はレジスタ346を選択する)。いくつかの実装形態では、現在の例外レベルに関連付けられたレジスタ340~346を使用するデフォルトから外れて、どのパーティションIDレジスタが特定の例外レベルに対して選択されるかを変更することができる、制御レジスタ内の更なる制御状態情報を定義することが可能であり得る。例えば、現在の例外レベルがEL0の場合に、レジスタMPAM1_EL1 342内のパーティションIDを強制的に使用するパラメータを設定することができ、これは、オペレーティングシステムが、MPAM1_EL1 342において定義されるように、管理しているアプリケーションがオペレーティングシステム自体と同じパーティションIDを使用するように望む場合に役立つため、これにより、オペレーティングシステムがMPAM0_EL1 340のパーティションID値を設定する必要を回避することができる。したがって、システムによっては、いくつかの制御状態が、現在の例外レベル以外のMPAMレジスタの選択に影響を及ぼすこともできるが、これは必須ではない。
【0115】
ステップ118では、現在のメモリアクセス要求がデータアクセス要求であるため、PMG_D及びPARTID_Dフィールド354、350が、ステップ112で選択されたレジスタ340、342、344、346のうちの1つから読み取られる。ステップ120では、パーティションID選択回路332が、現在の動作状態において選択されたレジスタから読み出されたパーティションIDについてパーティションIDの仮想化が実装され有効化されているかどうかを判定する。EL2又はEL3として実行されるプロセスの場合、仮想化を実行する必要はない。EL0又はEL1におけるソフトウェア実行環境について、仮想化がハードウェアによってサポートされている場合、仮想化が現在有効化されているかどうかは、(例えば、EL2において実行されるハイパーバイザによって制御される)制御レジスタ内で指定された情報に依存し得る。パーティションIDの仮想化がハードウェアに実装され、かつ現在の例外レベルに対して現在有効化されている場合、ステップ122では、パーティションID選択回路332は、仮想対物理パーティションIDマッピングを実行して、現在の実行環境に対して設定されたマッピング情報に基づいて、ステップ118で読み出された仮想パーティションID値を対応する物理パーティションID値にマッピングする。例えば、ハイパーバイザは、パーティションID再マッピングテーブルを維持することができ、このパーティションID再マッピングテーブルは、パーティションIDの再マッピングを実装するために使用することができる。これは、競合するパーティションID値を定義している可能性がある別々のゲストオペレーティングシステムが、競合せずに同じシステム上に共存することを可能にするのに有用であり得、そのため、競合する仮想パーティションID値を別々の物理パーティションID値に再マッピングすることができ、それぞれのオペレーティングシステムのアクセス要求をメモリシステム構成要素において区別して、個別のリソース割り当て制御又は性能監視を実行することができる。マッピングテーブルは、様々に異なる方法で実装することができ、例えば、パーティションID再マッピングレジスタのセットを提供して、レジスタ340、342、344、346から読み取られた仮想パーティションIDの様々に異なる値に対応する物理パーティションID値を指定することができ、あるいは、メモリに記憶された再マッピング構造を使用してマッピングテーブルを提供することができる。仮想化が実装され、有効化され、ステップ122でパーティションIDが物理パーティションIDに再マッピングされる場合、ステップ150では、再マッピングされたパーティションIDが、メモリアクセス要求と共に(その要求が何らかの必要なアドレス変換及びPASフィルタリングを受けた後に)キャッシュ、インターコネクト、又は他のメモリシステム構成要素に送信するために出力される。仮想対物理パーティションIDマッピングがハードウェアデバイスに実装されていない、又は現在有効化されていない場合、ステップ122は省略され、ステップ150において、選択されたレジスタ340~346から読み出されたパーティションIDが、再マッピングされることなく単にそれらの元の形式で出力される。
【0116】
図13Bは、命令フェッチアクセスメモリトランザクションのためのパーティションIDを選択する方法を示す。
図13Bのステップ111では、処理回路310は、命令フェッチメモリアクセス要求を発行し、所与のアドレスに対する命令のフェッチを要求する。命令フェッチ要求は、実行のために命令が実際にフェッチされる必要があるときに、フェッチ回路300によって行われ得るか、又はいくつかの実装形態は、命令が実際に実行のために必要とされる時間よりも前に命令を命令キャッシュにプリフェッチするプリフェッチ回路を有してもよく、そのため、プリフェッチ回路はまた、命令フェッチメモリアクセス要求を生成することもできる。命令フェッチメモリアクセス要求の発行に応答して、
図13bのステップ112~150は、
図13aのステップ118が、PMG_D及びPARTID_Dフィールド354、350の代わりに、選択されたパーティションIDレジスタからPMG_I及びPARTID_Iフィールド356、352が読み取られる
図13bのステップ116に置き換えられることを除いて、データアクセス要求に対する
図13aと同じである。ステップ120、122、150は、フィールド354、350からのデータパーティションID値の代わりにフィールド356、352からの命令パーティションID値を使用することを除いて、同じである。
【0117】
図12に戻ると、パーティションIDレジスタのうちのいくつかはまた、所与のメモリアクセス要求に使用されるパーティションID空間の選択を制御するための制御状態情報も含む。処理回路によってサポートされる領域の各々は、その領域に関連付けられた対応するプライマリパーティションID空間を有する。レジスタ344、346内の制御状態を使用して、プライマリパーティションID空間を使用するか又は代替パーティションID空間を使用するかを選択することができる。この制御状態情報は以下のものを含む。
【0118】
・MPAM3_EL3346内で:
・ルート領域のための代替パーティションID空間がセキュアパーティションID空間であるか非セキュアパーティションID空間であるかを選択するためにEL3におけるコードによって使用されるルート代替空間選択情報(RT_ALTSP_NS)360;
・EL3において発行されるメモリアクセスに対してプライマリパーティションID空間を使用すべきか代替パーティションID空間を使用すべきかを選択するために使用される、EL3パーティションID空間選択情報(ALTSP_EL3 362);
・階層制御がALTSP_HEN366を使用して無効にされる場合に、EL2、EL1、及びEL0から行われるアクセスに対してプライマリパーティションID空間を使用するか又は代替パーティションID空間を使用するかの選択を制御するために、EL3においてプログラム可能な空間選択制御情報を提供する、EL3制御階層強制空間選択情報(ALTSP_HFC)364;
・階層制御が有効化されるか無効化されるかを制御する、階層制御有効化情報(ALTSP_HEN)366。階層制御が有効化されると、EL2で実行される命令は、EL2、EL1、又はEL0から行われるアクセスに対するプライマリパーティションID空間と代替パーティションID空間との間の選択に影響を及ぼすことが可能になる。階層制御が無効化されると、EL2で実行される命令は、EL2、EL1、又はEL0から行われるアクセスに対するプライマリパーティションID空間と代替パーティションID空間との間の選択に影響を及ぼすことができず、EL2、EL1、又はEL0から行われるアクセスに対するプライマリパーティションID空間と代替パーティションID空間との間の選択は、レジスタMPAM3_EL3 346内のEL3で実行される命令によって設定されるALSTP_HFC364に依存する。
・MPAM2_EL2344内で:
・EL3で動作するコードがEL2で動作するコードの代替パーティションID空間の選択を強制したか否かを示すEL2階層強制空間指示情報(ALTSP_FRCD);
・EL2で動作するコードによって設定される情報であり、MPAM3_EL3.ALTSP_HEN366を用いて階層制御が有効化されている場合に、EL2で動作するコードがプライマリパーティションID空間と代替パーティションID空間のどちらを使用すべきかを制御する、EL2パーティションID空間選択情報(ALTSP_EL2)372;
・EL2において設定されるプログラマブルパーティションID空間選択情報であり、MPAM3_EL3.ALTSP_HEN366によって階層制御が有効化されている場合に、EL0又はEL1のどちらで動作するコードがプライマリパーティションID空間を使用するべきか又は代替パーティションID空間を使用するべきかを指定する、EL2制御階層強制空間選択情報(ALTSP_HFC)374;
・MPAM1_EL1 342内で、
・代替パーティションID空間の選択が、EL3又はEL2で動作するコードによってEL1で動作するコードに強制されたかどうかを、EL1で動作するコードに示す、EL1階層強制空間指示情報(ALTSP_FRCD)380。
【0119】
これらのパーティションID選択制御によってサポートされるオプションの概要を以下に示す。
【0120】
代替パーティションID空間機能(ALTSP)が、ディスカバリレジスタ内のフィールド376によって示されるようにハードウェアによってサポートされる場合、代替パーティションID空間は、非セキュア(レジスタ344、346内の制御がプライマリ/代替空間が選択されることを示すかどうかにかかわらず、非セキュアパーティションID空間が使用される)以外のセキュリティ状態(領域)ごとにサポートされる。同様に、非セキュアセキュリティ状態は、依然として代替パーティションID空間を有すると見なされることもできるが、その代替パーティションID空間は、プライマリパーティションID空間と同じである。したがって、領域ごとにサポートされるプライマリパーティションID空間及び代替パーティションID空間は、以下の通りである。
【0121】
【0122】
ルートに対する代替スペースの選択は、RT_ALTSP_NSフィールド360内のMPAM3_EL3 346内で行われる。このフィールドにおける0b1により、ルートセキュリティ状態の代替パーティションID空間として、非セキュアパーティションIDスペースが選択される。RT_ALTSP_NSが0b0の場合、ルートセキュリティ状態の代替パーティションID空間としてセキュアパーティションID空間が選択される。
【0123】
EL3での実行時、処理要素はルートセキュリティ状態にある。ルートセキュリティ状態で生成されたメモリシステム要求に対するプライマリパーティションID空間又は代替パーティションID空間の選択は、MPAM3_EL3 346内のビットによって制御される。
【0124】
RT_ALTSP_NS360は、ルートセキュリティ状態の代替パーティションID空間が非セキュアパーティションID空間であるか又はセキュアパーティションID空間であるかを設定する。
【0125】
ALTSP_EL3 362は、EL3から生成されたメモリシステム要求がプライマリパーティションID空間を使用するか又は代替パーティションID空間を使用するかを設定する。
【0126】
これら2ビットを組み合わせると、ルート状態のEL3からのアクセスに使用されるパーティションID空間の3つの組み合わせが得られる:
【0127】
【0128】
EL2、EL1、又はEL0において実行する場合、セキュリティ状態は、セキュア、非セキュア、又はレルムセキュリティ状態であり得る。EL3で実行されるルートソフトウェアは、EL2に対して、それ自体のパーティションID空間とEL1及びEL0によって使用されるパーティションID空間とを制御することを許可することができるか、又はEL2、EL1、及びEL0にプライマリ空間又は代替空間を強制的に選択させることができる。
【0129】
EL3がMPAM2_EL2 344で代替空間制御を有効化している(すなわち、階層制御が有効化されていることがMPAM3_EL3.ALTSP_HEN366によって示されている)場合、EL2は、EL2において生成されたパーティションIDがMPAM2_EL2.ALTSP_EL2 370を介して、プライマリパーティションID空間を使用するのか又は代替パーティションID空間を使用するのかを選択することができる。EL3がMPAM2_EL2 344で代替空間制御を有効化している場合、EL2はまた、プライマリパーティションID空間又は代替パーティションID空間がEL1及びEL0によって使用されるかどうかを選択することもできる。EL3は、MPAM3_EL3.ALTSP_HEN366をクリアし、MPAM3_EL3.ALTSP_HFC364を設定して代替パーティションID空間を強制するか、又はALTSP_HFC364をクリアしてすべての下位ELのプライマリパーティションID空間を強制することによって、すべての下位ELの選択を強制する。
【0130】
EL2についての組み合わせ並びにEL1及びEL0についての組み合わせの組を以下の表に示す。
【0131】
【0132】
MPAM2_EL2 344及びMPAM1_EL1 342の各々において、フィールドALTSP_FRCD370、380は、代替パーティションID空間が、MPAM2_EL2内のパーティションID並びにMPAM1_EL1及びMPAM0_EL1内のパーティションIDにそれぞれ強制されたことを示す。EL1及びEL0の選択は常に同一であり、EL1はMPAM0_EL1内のパーティションIDを制御するため、MPAM0_EL1 340内に別個の指示が存在する必要はない。
【0133】
図14は、パーティションID空間選択回路334によるパーティションID空間の選択を示すフロー図である。ステップ170では、パーティションID空間選択回路334は、レジスタ344、346内のプログラマブル制御情報が、プライマリパーティションID空間を使用することを指定しているか、又は代替パーティションID空間を使用することを指定しているかを判定する。プライマリパーティションID空間を使用することになっている場合、ステップ172では、発行されたメモリアクセス要求に対してパーティションID空間インジケータMPAM_SPによって示される選択パーティションID空間は、現在の領域に関連付けられたプライマリパーティションID空間である。代替パーティションID空間を使用することになっている場合、ステップ176では、MPAM_SPによって示される選択パーティションID空間は、現在の領域に関連付けられた代替パーティションID空間であり、この代替パーティションID空間は、現在の領域がレルム、セキュア、又は非セキュア領域である場合、非セキュアパーティションID空間として固定されてもよく、EL3で動作するコードによってMPAM3_EL3 346内に設定されるルート代替空間選択情報MPAM_EL3.RT_ALTSP_NS 360に応じて、ルート領域のためのセキュア又は非セキュアパーティションID空間のいずれかとしてプログラム可能であってもよい。
【0134】
図15は、
図14のステップ170においてプライマリパーティションID空間と代替パーティションID空間との間で選択するための基準をより詳細に示すフロー図である。ステップ180で、パーティションID空間選択回路334は、現在の特権レベルがEL3であるかどうかを判定し、そうである場合、ステップ182で、EL3で動作するコードによって設定されたEL3空間選択情報(MPAM3_EL3.ALTSP_EL3 362)を使用して、プライマリパーティションID空間と代替パーティションID空間との間で選択を行う。
【0135】
現在の特権レベルがEL2、EL1、又はEL0である場合、ステップ184で、パーティションID空間選択回路334は、パーティションID空間選択に対する階層制御がEL3によって有効化されているかどうかを判定する。例えば、回路334は、階層有効化値MPAM3_EL3.ALTSP_HEN366が第1の値を有するか又は第2の値を有するかを判定する。ALTSP_HEN366が第1の値(例えば、1)を有する場合、階層制御が有効化されており、ALTSP_HEN366が第2の値(例えば、0)を有する場合、階層制御が無効化されている。
【0136】
EL3で動作するコードによって階層制御が無効化されている場合、EL3で動作するコードは、EL2、El1、又はEL0で動作するコードのためにプライマリ/代替パーティションID空間を使用すべきかどうかを判定する。したがって、ステップ186では、EL2、EL1、又はEL0で使用されるプライマリパーティションID空間と代替パーティションID空間との間の選択は、EL3でコードによって設定された階層強制空間選択情報MPAM3_EL3.ALTSP_HFC 364を使用して行われる。よって、この場合、EL2で動作するコードは、そのコードか又はEL1もしくはEL0で動作するコードがプライマリパーティションID空間を使用すべきか又は代替パーティションID空間を使用すべきかに影響を及ぼさない。
【0137】
パーティションID空間選択に対する階層制御がEL3によって有効になっている場合(ALTSP_HEN366が第1の値を有する)、ステップ188において、パーティションID空間選択回路334は、現在の特権レベルがEL2であるか、又はEL1及びEL0のうちの1つであるかを判定する。現在の特権レベルがEL2である場合、ステップ190では、プライマリパーティションID空間と代替パーティションID空間との間の選択が、レジスタ344内のEL2におけるコードによって設定されるEL2空間選択情報MPAM2_EL2.ALTSP_EL2 372を使用して行われる。一方、現在の特権レベルがEL1又はEL0である場合、ステップ192では、EL2で動作するコードによってレジスタ344に設定された階層強制選択情報MPAM2_EL2.ALTSP_HFC 374を使用して、プライマリパーティションID空間と代替パーティションID空間との間の選択が行われる。
【0138】
上記で説明したフロー図は、特定の順序又はシーケンスで行われるステップを示しているが、他の実装形態では、それらのステップの順序を並べ替える、又はステップの一部を並列して実行することができることが理解されよう。
【0139】
要約すると、レジスタ内のプログラマブル制御情報を使用することによって、パーティションIDは、上述したように、それぞれの動作領域に対応する4つのパーティションID空間のうちの1つの内部で定義することができ、ソフトウェアは、サポートされるパーティションID空間の4つすべてを実際に使用する必要があるかどうか、又は、様々に異なるセキュリティ状態で動作するソフトウェア間で共通パーティションID空間の共有を可能にするためにいくつかのソフトウェアが代替パーティションID空間を使用することを好み得るかどうかに関して、柔軟性を有する。ソフトウェアが共通のパーティションID空間を共有することができれば、現在使用中のパーティションIDとパーティションID空間との組み合わせごとに、メモリシステム構成要素のために定義されるリソース制御パラメータのセットの数を減らすことができ、ソフトウェアの管理オーバーヘッドを削減することができる。
【0140】
パーティションID及びパーティションID空間のメモリシステム構成要素の使用
図16は、メモリシステム構成要素内の回路の一例を示し、この回路は、例えばキャッシュ8、10、12、16、20、インターコネクト14、18内の制御回路、又はメモリコントローラ24であり得る。メモリアクセス要求は、メモリシステム構成要素によって受信され、このメモリシステム構成要素は、上述したように、アクセスの物理アドレス(PA)、パーティションID空間インジケータMPAM_SP、及び1つ以上のパーティションID(例えば、リソース制御パーティションID(PARTID)及び性能監視グループID(PMG))を指定する。メモリシステム構成要素が、物理別名化ポイント(PoPA)60の上流に位置するPoPA前構成要素である場合、メモリアクセス要求はまた、アクセスの物理アドレス空間を識別する物理アドレス空間PASIDも指定する。メモリシステム構成要素がPoPA60の下流にある場合、PASIDは要求と共に提供されなくてもよく、これは、要求が既にPoPAを通過しており、別々の物理アドレス空間内の別名化された物理アドレスが(例えば、PASIDを除去することによって)別名化解除されているためである。
【0141】
メモリシステム構成要素は、リソース制御パラメータ選択回路400を含み、このリソース制御パラメータ選択回路400は、パーティションID空間インジケータMPAM_SPと、要求と共に供給されるリソース制御パーティションID値(PARTID)との組み合わせに基づいて、リソース制御設定構造402から1つ以上のメモリシステムリソース制御パラメータからなるセットを選択する。リソース制御設定構造402は、いくつかのエントリ404を含み、各エントリが、MPAM_SP、PARTID値の異なる組み合わせに対応する。したがって、別々のパーティションID空間内に発生する同じパーティションID値PARTIDは、別々のリソース制御パラメータ404のセットに対応し得る。リソース制御設定構造402は、メモリシステム構成要素内のハードウェアに実装されたレジスタのセットであり得、それらのレジスタは、それらのレジスタのうちの1つにマッピングされたアドレスをターゲットアドレスとして指定するメモリアクセス要求を処理回路310が発行することによって更新することができる(場合によっては、メモリマップに公開されるアドレスの数を減らすために、1つのレジスタが、リソース制御設定が更新されるときに書き込まれるメモリマップドアドレスを有するインターフェースとして機能してもよく、インターフェースレジスタをターゲットとするメモリアクセス要求によって指定される情報の一部が、どのリソース制御設定エントリ404が更新されるかを示すエントリIDであってもよいため、ハードウェアに設けられたリソース制御設定レジスタごとに別々のメモリマップドアドレスを有する必要がない)。あるいは、リソース制御設定構造402は、その構造のためにソフトウェアによって予約されたアドレスのセットでメモリ内に維持される構造であってもよく、その場合、メモリシステム構成要素のハードウェアは、メモリアドレス空間内のそのデータ構造のベースアドレスを識別するレジスタを単に有するだけでよい。任意選択で、メモリシステム構成要素は、そのメモリベースの構造からリソース制御設定エントリ404をキャッシュするためのリソース制御設定キャッシュを含んでもよい。
【0142】
一般に、リソース制御設定402がハードウェアシステム構成要素のレジスタを使用して実装されるか又はメモリ内のデータ構造を使用して実装されるかどうかにかかわらず、所与のパーティションID空間に対応するリソース制御パラメータ404は、所与のパーティションID空間に関連付けられた領域に対応する物理アドレス空間をPASIDにおいて指定するメモリアクセス要求を発行することによって、処理素子6上で実行されているソフトウェアにとってアクセス可能になり得る。したがって、非セキュア、セキュア、レルム、及びルートパーティションID空間内のパーティションIDのための設定を定義するためのリソース制御には、それぞれ、非セキュア、セキュア、レルム、及びルート物理アドレス空間内の物理アドレスを指定するメモリアクセス要求を使用してアクセスすることができる。
【0143】
選択されたリソース制御パラメータ404のセットに基づいて、リソース使用制御回路406は、選択されたリソース制御パラメータに基づくメモリアクセス要求の処理を制御する。リソース制御パラメータを使用して要求の処理に影響を及ぼす方法は、メモリシステム構成要素のタイプ及び実装される特徴に応じて様々であり得るが、一般に、パラメータは、要求の処理への性能リソースの割り当て、又は別々の要求間のそのようなリソースの競合の管理に影響を及ぼし得る。しかし、リソース制御設定は、要求が許可されるべきか拒否されるべきかの決定又は要求に応答してどの特定のメモリシステム位置がアクセスされるかの選択など、要求の処理の機能的帰結には影響を及ぼさない。
【0144】
例えば、メモリシステム構成要素がキャッシュである場合、リソース制御設定404を使用して、要求の物理アドレスPAに関連付けられたデータ又は命令に対するキャッシュ記憶容量の割り当てを制御してもよい。例えば、リソース制御設定404は、指定されたパーティションID及びパーティションID空間に関連付けられたデータ命令に割り当てることが可能な最大キャッシュ容量を定義することができ、キャッシュ容量制限で、例えば、パーティションIDとパーティションID空間インジケータとの当該組み合せに使用することが可能なキャッシュ容量の最大割合を定義する。別のオプションとしては、対応するパーティションID及びパーティションID空間に関連付けられたデータ又は命令に、キャッシュのどの個々の部分(例えば、どの方式のセットアソシアティブキャッシュ)を割り当てられることが可能かを、リソース制御設定が指定することであり得る。部分ベースの制御では、1つのソフトウェアプロセスは、当該キャッシュの方式の比較的小さいサブセットを使用するように制限され得るが、別のソフトウェア実行環境では、より多数の方式を使用することが許可され得るため、他のソフトウェア実行環境は、メモリにアクセスする際に性能がより向上する可能性が高くなる。いずれにしても、所与のソフトウェア実行環境によって使用されるキャッシュ容量を制限することができるいくつかのリソース制御設定を設けることによって、1つのソフトウェア実行環境がキャッシュ容量の大部分を使い果たすことを防止することにより、ノイジーネイバー問題を低減することができる。
【0145】
リソース使用制御の別の例として、インターコネクト又はメモリコントローラが、指定されたパーティションID及びパーティションID空間に基づいて、現在の要求に対して選択されたリソース制御設定404に基づいて、バスの帯域幅の割り当てを制御することがあり得る。例えば、最小及び/又は最大帯域幅は、リソース制御設定において定義することができ、このリソース制御設定を使用して、メモリアクセス要求で指定されたパーティションID、パーティションID空間によって示される特定のソフトウェア実行環境に関連付けられた要求に対して、何個のバス上のスロットを使用できるかを制御することができる。例えば、所与のプロセスによって最近使用された帯域幅が、パーティションIDとパーティションID空間との組み合せに対して選択された対応するリソース制御設定のセット内に示されたその最小帯域幅を下回った場合、パーティションIDとパーティションID空間とのその組み合せを指定する要求は、将来のバス調停において優先され得る。所与のプロセスによって使用される帯域幅が、定義された最大帯域幅を超えた場合、パーティションIDとパーティションID空間との対応する組み合わせを指定するメモリアクセス要求は、例えば、帯域幅利用が最大未満に低下するまで、更なるバススロットが割り当てられることを防止することによって、将来のバス調停決定における優先順位が下げられ得る。
【0146】
別のオプションとして、メモリコントローラ又はインターコネクトなどのメモリシステム構成要素が、リソース制御設定に基づいて所与のメモリアクセス要求の優先順位を設定することができ、その結果、あるソフトウェア実行環境に対する要求を、別のソフトウェア実行環境に対する要求よりも先に優先させることができ、優先順位を使用して要求間のリソースの競合を管理する。したがって、メモリへのアクセスの要求を処理する際に、リソース制御設定が、達成される性能に影響を与える可能性がある方式は、多種多様存在し得る。
【0147】
図16に示すように、メモリシステム構成要素は、性能監視選択及びフィルタリング回路410を含むこともでき、この性能監視選択及びフィルタリング回路410は、メモリシステム構成要素によるメモリアクセス要求プロセスに応答して性能監視カウンタ412の更新を制御し、性能モニタ412を更新するための基準はフィルタパラメータ414において定義される。リソース制御設定402と同様に、フィルタパラメータ414は、メモリシステム構成要素のレジスタ内で、又はメモリベースの構造(任意選択でキャッシュされることができる)内で、定義されることができる。性能モニタ412はまた、メモリマップドレジスタとして、又はメモリ内で、アクセスされてもよい。パーティションID空間インジケータ及び性能監視グループID PMG(及び、任意選択で、PMGがPARTIDと連結されるプレフィックス/サフィックスと見なされる実装形態では、リソース制御パーティションID値(PARTID))を使用して、MPAM_SPと、PMGと、任意選択でPARTIDとの組み合わせに対応するフィルタパラメータ414のセットの選択に基づいて、どの性能モニタ412を更新するか、及び/又は性能モニタを更新するかどうかを選択することができる。したがって、パーティションIDとパーティションID空間インジケータとの様々な組み合わせに対して様々な性能モニタ412を定義することができ、そのような組み合わせに対して様々なフィルタパラメータのセットを定義することもできる。これにより、あるソフトウェア実行環境を別のソフトウェア実行環境と比較して性能を別々に追跡することができ、また、別々のセキュリティ領域で実行されているソフトウェアは、それらに関連付けられた異なる性能モニタのセット、又は性能監視のための別々の基準を定義するための異なるフィルタパラメータのセットを有してもよい。例えば、性能モニタ412は、カウンタのセットとすることができ、これらのカウンタは、特定の基準を満たすメモリアクセス要求に応答してインクリメントされ、フィルタパラメータは、基準を定義することができ、例えば、性能モニタが更新されるメモリアドレスの範囲を定義すること、追跡されるメモリアクセスのタイプ(例えば、ロード又はストア)を定義すること、又はキャッシュミス、総要求、要求を処理する待ち時間など、性能モニタ412によってカウントされるイベントのタイプを定義することなど、を定義することができる。
【0148】
図16は、リソース制御設定選択回路400と性能監視選択及びフィルタリング回路410との両方を有するメモリシステム構成要素の例を示すが、すべてのメモリシステム構成要素がこれらの両方を有することは必須ではなく、いくつかのシステム構成要素はこれらのうちの1つのみを有してもよい。また、メモリシステムは、リソース分割を全くサポートしないいくつかの構成要素を含んでもよく、それらは、リソース制御設定選択回路400も性能監視選択及びフィルタリング回路410も有さない。それにもかかわらず、分割を全くサポートしないそのようなメモリシステム構成要素は、分割をサポートする他のメモリシステム構成要素と同じメモリシステム内に共存し得る。
【0149】
図17は、メモリシステム構成要素におけるメモリアクセス要求の処理を示すフロー図である。ステップ200で、メモリシステム構成要素は、物理アドレス(PA)、パーティションID(PARTID及び/又はPMG)、パーティションID空間インジケータ(MPAM_SP)、及び任意選択で、PASインジケータ(例えばメモリシステム構成要素がPoPA60の上流にある場合)を指定するメモリアクセス要求を受信する。ステップ202では、メモリシステム構成要素がリソース分割をサポートする場合、本方法はステップ204に進み、このステップ204では、リソース制御設定選択回路400は、リソース制御パーティションID(PARTID)及びパーティションID空間インジケータ(MPAM_SP)に基づいて1つ以上のリソース制御パラメータ404からなるセットを選択する。ステップ206では、リソース使用制御回路406は、選択されたリソース制御パラメータ204のセットに基づいて、メモリアクセス要求に対するリソース割り当て又は競合管理を制御する。メモリシステム構成要素がリソース分割をサポートしない場合、ステップ204及び206は省略される。
【0150】
ステップ208において、メモリシステム構成要素が性能監視分割をサポートする場合、ステップ210において、性能監視選択及びフィルタリング回路210は、パーティションID(少なくとも性能監視グループID(PMG)であるが、任意選択で、いくつかの実施形態ではリソース制御パーティションID(PARTID)にも基づく)及びパーティションID空間インジケータMPAM_SPに基づいて、性能監視データ412を更新するかどうかを選択する。例えば、パーティションID及びパーティションID空間インジケータの組み合わせに対応するフィルタパラメータ414のセットが選択され、メモリアクセス要求がこれらのフィルタパラメータを満たすかどうかが判定され、満たす場合、パーティションID及びパーティションID空間インジケータの組み合わせに対応する性能モニタ414が更新される。メモリシステム構成要素が性能監視分割をサポートしない場合、ステップ210は省略される。
【0151】
メモリシステム構成要素がリソース分割及び/又は性能監視分割をサポートするかどうかにかかわらず、ステップ212では、メモリアクセス要求が処理される。メモリシステム構成要素がPoPA60の上流に位置するPoPA前である場合、別々の物理アドレス空間内の別名化物理アドレスは、それらが別々のメモリシステムリソースを参照しているかのように扱われる。例えば、メモリシステム構成要素がキャッシュである場合、キャッシュ容量のルックアップは、所与のキャッシュ位置が要求されたデータ又は命令に対応するかどうかを判定するための情報の一部として、PASインジケータを使用することができ、これは、例えば、キャッシュのセットを選択するためのインデックス値、及び/又はルックアップされたキャッシュの位置が指定されたアドレスに対応するかどうかを判定するためのタグ値の一部としてPASインジケータを含めることによって行うことができる。事実上、PASインジケータは、キャッシュのルックアップにおけるいくつかの追加のアドレスビットとして扱われることができる。メモリシステム構成要素が、PoPA前メモリコントローラ又はインターコネクト又はバスに要求を出力する他の構成要素である場合、PASインジケータはPAと共に供給され、PAを修飾して、追加のアドレスビットとして機能することができる。
【0152】
ステップ214で、何らかのメモリアクセス要求を下流のメモリシステム構成要素に送信する必要がある場合(キャッシュミスの場合のキャッシュラインフィル要求、又はインターコネクトによってバス上に送信される要求もしくはメモリコントローラによってメモリストレージユニットに発行される要求など)、パーティションID及びパーティションID空間インジケータは、下流のメモリシステム構成要素もリソース分割又は性能監視分割を実装することができるように、下流に送信される要求に添付されるラベルとして含まれる。また、メモリシステム構成要素が、別々の物理アドレス空間から物理アドレスを非別名化するためにPASを取り除くPoPAメモリシステム構成要素でない限り(この場合、PASインジケータは、下流に送信される要求から省略され得る)、PA及びPASインジケータは下流に供給されてもよい。
【0153】
別々の数のパーティションID空間をサポートする区域間のブリッジング
システムオンチップなどのデータ処理システムを構築する場合、いくつかの構成要素が上述の実施例のように3つ以上のパーティションID空間及び3つ以上のセキュリティ領域をサポートすることが有用であり得るが、より少数の領域及びパーティションID空間をサポートし得る他のメモリシステム構成要素があってもよい。レガシーデバイスとの互換性のために、そのようなより少数のパーティションID空間及びセキュリティ領域をサポートするデバイスが、上述したような処理要素及びメモリシステム構成要素と共存することを可能にすることが望ましい場合がある。したがって、
図18に示すように、データ処理システムは、上述したような少なくとも3つのパーティションID空間及び少なくとも3つのセキュリティ領域をサポートする1つ以上の構成要素を含む第1の区域450と、第1の区域内の構成要素よりも少数のパーティションID空間及びセキュリティ領域をサポートする1つ以上の構成要素を含む、装置の第2の区域452とを含むことができる。第1の区域と第2の区域との間を通過するメモリアクセス要求に対して物理アドレス空間ID及びパーティションID空間インジケータを再マッピングするために、ブリッジ回路460を設けることができる。例えば、区域450と区域452との間の境界において、物理アドレス空間インジケータ(PASID)の4つの値を、区域452内でサポートされる2つの物理アドレス空間値のセットから選択された値にマッピングすることができる。同様に、パーティションID空間インジケータ(MPAM_SP)の4:2の再マッピングを実行することができる。第2の区域452から第1の区域450に発行された要求に対して、対応する2:4の領域/パーティションID空間再マッピングを実行することができる。ブリッジ回路460は、場合によっては、他の機能と組み合わされた再マッピング回路、例えばシステムメモリ管理ユニット(SMMU)462を含むことができ、このシステムメモリ管理ユニット(SMMU)462は、第2の区域450内のデバイスの代わりにアドレス変換を実行するものであり、区域450と区域452との間のブリッジにおいて再マッピングを実行することもできる。あるいは、専用ブリッジ回路464、466が、アドレス変換などの他の機能とは別に、区域間のインターフェースに設けられてもよい。第1の区域450から第2の区域452に渡される要求に対する4:2再マッピング、及び第2の区域452から第1の区域450に渡される要求に対する2:4再マッピングのために、別々のブリッジング構成要素を設けることができる。
【0154】
様々な設計目標の下でレガシー区域452をサポートするために、様々なブリッジング技法を使用することができる。4PAS/PARTID区域450に要求を行う2PAS及び2PARTID空間デバイス454の場合、システムMMU462は、ソフトウェア定義ページテーブルの制御下でマッピングを実行することができる。あるいは、比較的安価であるが柔軟性のないソリューションの場合、デバイス454は、非セキュアPASから非セキュアPASへ、及びセキュアPASからセキュアPASへの静的な変換、並びに非セキュアパーティションID空間から非セキュアパーティションID空間へ、及びセキュアパーティションID空間からセキュアパーティションID空間への対応する変換を用いて配線することができる。このようなレガシーデバイスは、0b1が非セキュアを示し、0b0がセキュアを示すように、1ビットのインジケータを用いて非セキュア/セキュアパーティションID空間を符号化することができるが、0b00、0b01、0b10、0b11がそれぞれセキュア、非セキュア、ルート、及びレルムパーティションID空間を表す上述のMPAM_SPの符号化は、区域452内のデバイス454から受信された非セキュア/セキュア要求の指示に上位ビットである0を単に追加することによって静的マッピングが実装できるため、有用であり得る。とはいえ、静的マッピングは、MPAM_SPの他の符号化ででも可能である。
【0155】
4PAS及び4PARTID空間区域450内のPE6及び他の要素が区域452内のデバイスに要求を行う場合、いくつかのオプションがある:
1.柔軟性のない静的マッピングが、ルートPAS及びセキュアPASをレガシーデバイスへのセキュアPAS要求に変え、レルムPAS及び非セキュアPAS要求をレガシー構成要素への非セキュア要求に変える。同様に、ルート/セキュアパーティションID空間が、セキュアパーティションID空間にマッピングされ、レルム/非セキュアPAS要求が、非セキュアパーティションID空間にマッピングされる。0b00、0b01、0b10、0b11が、セキュア、非セキュア、ルート、及びレルムパーティションIDを表すMPAM_SPの符号化は、ここでも、この静的マッピングを実行するための回路を簡略化するのに役立ち、それは、MPAM_SPの最上位ビットを単純に破棄して、このようなレガシーデバイス454によって使用され得る、非セキュアの場合は0b1、及びセキュアの場合は0b0を示す1ビットのインジケータを提供することができることを意味するためである。
2.レガシー構成要素454又はレガシー区域452の外部にある単純なプログラマブル空間マッパ。空間マッパは、ルートパーティションID空間をセキュアパーティションID空間にマッピングするか又は非セキュアパーティションID空間にマッピングするか、及びレルムパーティションID空間をセキュアパーティションID空間にマッピングするか又は非セキュアパーティションID空間にマッピングするかを制御する。
a)マッパはまた、ルートPASをセキュアPASにマッピングするか又は非セキュアPASにマッピングするか、及びレルムPASをセキュアPASにマッピングするか又は非セキュアPASにマッピングするかを選択することもできる。あるいは、ルートPASを常にセキュアとしてマッピングし、レルムPASを常に非セキュアとしてマッピングすることもでき、この場合、マッパのプログラマブルな態様は、パーティションIDマッピングに影響を及ぼすが、PASマッピングには影響を及ぼさない。
b)マッパはまた、ルートパーティションID空間からの要求を監視すべきでないかどうか、及びレルムパーティションID空間からの要求を監視すべきでないかどうかを、フラグ(例えば、NO_MON)を介して示すこともできる(これは、監視を無効にする必要があることをフラグが示すとき、監視の無効化を実装するためにレガシー構成要素454の小さな再設計を必要とする場合があるが、これは、4つのパーティションID空間すべてをサポートするよりも、再開発の労力が少なくて済む可能性がある)。
3.2のマッパの組み合わせのうちの1つは、レガシー構成要素454内に実装されることができ、構成要素の設計に対する変更について、2bによって必要とされる変更よりも大きい変更を必要とする。
【0156】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配設又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0157】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。
【国際調査報告】