(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-20
(54)【発明の名称】変換テーブルアドレス記憶回路
(51)【国際特許分類】
G06F 12/14 20060101AFI20230613BHJP
G06F 12/1009 20160101ALI20230613BHJP
G06F 12/1027 20160101ALI20230613BHJP
G06F 12/02 20060101ALI20230613BHJP
G06F 12/1036 20160101ALI20230613BHJP
【FI】
G06F12/14 510E
G06F12/1009
G06F12/1027 120
G06F12/1027 100
G06F12/02 570A
G06F12/1036 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022568376
(86)(22)【出願日】2021-05-14
(85)【翻訳文提出日】2022-11-09
(86)【国際出願番号】 GB2021051174
(87)【国際公開番号】W WO2021234351
(87)【国際公開日】2021-11-25
(32)【優先日】2020-05-19
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】グリゼンスウェイト、リチャード ロイ
(72)【発明者】
【氏名】パーカー、ジェイソン
(72)【発明者】
【氏名】ラトランド、マーク サリング
(72)【発明者】
【氏名】エラド、ユヴァル
【テーマコード(参考)】
5B017
5B160
5B205
【Fターム(参考)】
5B017AA08
5B017BA01
5B017CA01
5B160AB26
5B205MM51
5B205PP21
5B205RR05
5B205SS13
(57)【要約】
装置は、メモリアクセス要求によって指定されたターゲット仮想アドレス(VA)をターゲット物理アドレスに変換するアドレス変換回路(16)と、第1/第2の変換テーブルアドレスをそれぞれ格納する第1/第2の変換テーブルアドレス記憶回路(132、142、134、144)と、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路(130)と、を有する。メモリアクセス要求に応答して、ターゲットVAが保護領域(複数可)内にあるとき、アドレス変換回路(16)は、第1の変換テーブルアドレスによって識別された第1の変換テーブル構造からのアドレス変換データに基づいて、ターゲットVAを変換する。ターゲットVAが保護領域(複数可)外にあるとき、ターゲットVAは、第2の変換テーブルアドレスによって識別された第2の変換テーブル構造からのアドレス変換データに基づいて変換される。
【選択図】
図10
【特許請求の範囲】
【請求項1】
装置であって、
メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、
第1の変換テーブルアドレスを格納する第1の変換テーブルアドレス記憶回路と、
第2の変換テーブルアドレスを格納するための第2の変換テーブルアドレス記憶回路と、
仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、
を備え、
前記メモリアクセス要求に応答して、前記アドレス変換回路は、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるとき、前記第1の変換テーブルアドレス記憶回路に格納された前記第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換し、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、前記第2の変換テーブルアドレス記憶回路に格納された前記第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換する、ように構成されている、装置。
【請求項2】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするための少なくとも1つの変換ルックアサイドバッファ、
を備え、
前記少なくとも1つの変換ルックアサイドバッファ内でミスするメモリアクセス要求に応答して、前記アドレス変換回路は、
前記メモリアクセス要求の前記ターゲット仮想アドレスが、前記領域定義データによって指定された仮想アドレス空間の前記少なくとも1つの保護領域内にあるかどうか判定し、
ページテーブルウォーク動作を、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるときに前記第1の変換テーブルアドレス記憶回路に格納された前記第1の変換テーブルアドレスと、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるときに前記第2の変換テーブルアドレス記憶回路に格納された前記第2の変換テーブルアドレスと、を使用して実行するように構成されている、請求項1に記載の装置。
【請求項3】
複数の動作ドメインのうちの1つにおいてデータ処理を実行するための処理回路を備え、
前記処理回路が第1のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるかどうかに応じて、前記第1の変換テーブル構造及び前記第2の変換テーブル構造のうちの1つからのアドレス変換データを使用して、前記ターゲット仮想アドレスを変換するように構成されている、請求項1又は2に記載の装置。
【請求項4】
前記処理回路が第2のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、前記ターゲット仮想アドレスを変換するように構成されている、請求項3に記載の装置。
【請求項5】
前記処理回路が前記第2のドメインにあるとき、前記アドレス変換回路は、前記第2の変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項4に記載の装置。
【請求項6】
更なる変換テーブルアドレスを格納するための更なる変換テーブルアドレス記憶回路、
を備え、
前記処理回路が前記第2のドメインにあるとき、前記アドレス変換回路は、前記更なる変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項4に記載の装置。
【請求項7】
例外の処理を制御するための例外処理回路、
を備え、
前記第1のドメインでの処理のために発生する少なくとも1つのタイプの例外について、所与の仮想アドレスに関連付けられた前記少なくとも1つのタイプの例外に応答して、前記例外処理回路は、
前記所与の仮想アドレスが前記少なくとも1つの保護領域内にある場合に、第1の例外処理アクションを実行し、
前記所与の仮想アドレスが前記少なくとも1つの保護領域外にある場合に、前記第1の例外処理アクションとは異なる第2の例外処理アクションを実行する、ように構成されている、請求項3から6のいずれか一項に記載の装置。
【請求項8】
前記第1の例外処理アクションは、前記例外が前記少なくとも1つの保護領域内の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含み、
前記第2の例外処理アクションは、前記例外が前記少なくとも1つの保護領域外の仮想アドレスに関連付けられていることを示す前記シンドローム情報を設定することを含む、請求項7に記載の装置。
【請求項9】
前記第1の例外処理アクションは、前記第1のドメインで前記例外の処理をトリガすることを含み、
前記第2の例外処理アクションは、第2のドメインで前記例外の処理をトリガすることを含む、請求項7に記載の装置。
【請求項10】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするためのバッファエントリを含む少なくとも1つの変換ルックアサイドバッファを備え、各バッファエントリは、前記複数のドメインのうちの対応する1つを識別するドメイン識別子に関連付けられ、
前記処理回路が第2のドメインにあるときに発行された変換無効化コマンドに応答して、前記少なくとも1つの変換ルックアサイドバッファは、
前記変換無効化コマンドによって指定された少なくとも1つの無効化基準が満たされ、前記ドメイン識別子が前記第1のドメインを識別するバッファエントリを無効化し、
前記少なくとも1つの無効化基準が満たされ、前記ドメイン識別子が前記第2のドメインを識別するバッファエントリを無効化する、ように構成されている、請求項3から9のいずれか一項に記載の装置。
【請求項11】
前記アドレス変換回路は、少なくとも前記処理回路の現在のドメインに基づいて選択された複数の物理アドレス空間のうちの1つにおいて前記ターゲット仮想アドレスを前記ターゲット物理アドレスに変換するように構成されている、請求項3から10のいずれか一項に記載の装置。
【請求項12】
前記複数の物理アドレス空間は、前記第1のドメインに関連付けられた第1の物理アドレス空間と、第2のドメインに関連付けられた第2の物理アドレス空間と、を少なくとも含み、
前記第1の物理アドレス空間は、前記第1のドメインからアクセス可能であり、前記第2のドメインからアクセス不可能であり、
前記第2の物理アドレス空間は、前記第1のドメインと前記第2のドメインの両方からアクセス可能である、請求項11に記載の装置。
【請求項13】
前記複数の物理アドレス空間はまた、第3のドメインに関連付けられた第3の物理アドレス空間を含み、
前記第3の物理アドレス空間は、前記第3のドメインからアクセス可能であり、前記第1のドメイン及び前記第2のドメインからアクセス不可能である、請求項12に記載の装置。
【請求項14】
前記処理回路が前記第3のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、前記ターゲット仮想アドレスを変換するように構成されている、請求項12に記載の装置。
【請求項15】
第3の変換テーブルアドレスを格納するための第3の変換テーブルアドレス記憶回路を備え、
前記処理回路が前記第3のドメインにあるとき、前記アドレス変換回路は、前記第3の変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項14に記載の装置。
【請求項16】
前記少なくとも1つの保護領域の各保護領域について、前記領域定義データは、前記保護アドレス領域のベースアドレスと、前記保護アドレス領域のサイズとを指定する、請求項1から15のいずれか一項に記載の装置。
【請求項17】
前記アドレス変換回路は、前記ターゲット仮想アドレスからターゲット中間アドレスへのマッピングを指定する第1ステージ変換テーブル構造と、前記ターゲット中間アドレスから前記ターゲット物理アドレスへのマッピングを指定する第2ステージ変換テーブル構造とに基づいて、2ステージアドレス変換を実行するように構成されており、
前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される前記第1の変換テーブルアドレス記憶回路及び前記第2の変換テーブルアドレス記憶回路のうちの1つから、前記第1ステージ変換テーブル構造を識別する第1ステージ変換テーブルアドレスを取得するように構成されており、
前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の第2ステージ変換テーブルアドレス記憶回路及び第2の第2ステージ変換テーブルアドレス記憶回路のうちの1つから、前記第2ステージ変換テーブル構造を識別する第2ステージ変換テーブルアドレスを取得するように構成されている、請求項1から16のいずれか一項に記載の装置。
【請求項18】
方法であって、
ターゲット仮想アドレスを指定するメモリアクセス要求に応答して、
前記ターゲット仮想アドレスが、保護領域定義データ記憶回路に格納された領域定義データによって指定された少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換することと、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換することと、
を含む、方法。
【請求項19】
ターゲットコードを実行するための命令実行環境を提供するために、ホストデータ処理装置を制御するコンピュータプログラムであって、
コンピュータプログラムは、
メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換プログラムロジックと、
前記ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持するための状態エミュレートロジックであって、前記状態情報は、
第1の変換テーブルアドレスと、
第2の変換テーブルアドレスと、
シミュレートされた仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データと、を指定する、前記状態エミュレートロジックと、を備え、
前記ターゲットコードのメモリアクセス命令に応答して、前記アドレス変換プログラムロジックは、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるとき、前記第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換し、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、前記第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換する、ように構成されている、コンピュータプログラム。
【請求項20】
請求項19に記載の前記コンピュータプログラムを格納する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。より詳細には、アドレス変換に関する。
【0002】
データ処理装置は、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路を有してもよい。アドレス変換は、仮想アドレスから物理アドレスに直接1つのステージで、又は仮想アドレスを中間アドレスにマッピングするために使用されるステージ1変換テーブル構造と、中間アドレスを物理アドレスにマッピングするために使用されるステージ2変換テーブル構造とに基づく2ステージのアドレス変換として実行することができる。変換テーブルアドレス記憶回路は、アドレスマッピングに使用する変換テーブル構造を識別する変換テーブルアドレスを格納することができる。
【0003】
少なくともいくつかの例は、装置であって、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、第1の変換テーブルアドレスを格納する第1の変換テーブルアドレス記憶回路と、第2の変換テーブルアドレスを格納するための第2の変換テーブルアドレス記憶回路と、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、を備え、メモリアクセス要求に応答して、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換し、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換する、ように構成されている、装置を提供する。
【0004】
少なくともいくつかの例は、方法であって、ターゲット仮想アドレスを指定するメモリアクセス要求に応答して、ターゲット仮想アドレスが、保護領域定義データ記憶回路に格納された領域定義データによって指定された少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換することと、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換することと、を含む、方法を提供する。
【0005】
少なくともいくつかの実施例は、ターゲットコードを実行するための命令実行環境を提供するホストデータ処理装置を制御するコンピュータプログラムであって、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換プログラムロジックと、ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持するための状態エミュレートロジックであって、状態情報は、第1の変換テーブルアドレスと、第2の変換テーブルアドレスと、シミュレートされた仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データと、を指定する、状態エミュレートロジックと、を備え、ターゲットコードのメモリアクセス命令に応答して、アドレス変換プログラムロジックは、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換し、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換する、ように構成されている、コンピュータプログラム、を提供する。
【0006】
コンピュータ可読記憶媒体は、上述のコンピュータプログラムを格納することができる。記憶媒体は、非一時的記憶媒体であってもよい。
【図面の簡単な説明】
【0007】
本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
【
図2】処理回路が動作することができるいくつかの領域を示す。
【
図3】グラニュール保護ルックアップをサポートする処理システムの例を示す。
【
図4】いくつかの物理アドレス空間の、メモリシステム内の場所を識別するシステム物理アドレス空間上での別名化を概略的に示す。
【
図5】有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す。
【
図7】マルチレベル変換テーブル構造の一例を示す図である。
【
図8】レルムドメインにおけるアドレス変換を制御する方法を示す図である。
【
図9】ルートドメイン、セキュアドメイン、及び低セキュアドメインのうちの1つにおけるアドレス変換を制御する方法を示す図である。
【
図10】変換される仮想アドレスが仮想アドレス空間の保護領域内にあるかどうかに応じた第1/第2の変換テーブルアドレス間の選択を示す図である。
【
図11】レルムドメインにおける例外処理を示す図である。
【
図12】低セキュアドメインから発行されたTLB無効化コマンドの処理を示す図である。
【
図13】アドレス変換及びグラニュール保護情報フィルタリングのいくつかのステージを示す図である。
【
図14】使用される可能性のあるシミュレータの例を示す。
【発明を実施するための形態】
【0008】
装置は、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、第1及び第2の変換テーブルアドレスをそれぞれ格納する第1及び第2の変換テーブルアドレス記憶回路(例えば、第1及び第2の変換テーブルアドレスレジスタ)と、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、を有する。メモリアクセス要求に応答して、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、ターゲット仮想アドレスは、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて変換される。ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、ターゲット仮想アドレスは、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて変換される。
【0009】
本発明者らは、第1及び第2の変換テーブルアドレス記憶装置を提供することが有用であり得ることを認識し、アドレス変換回路は、ターゲット仮想アドレスと、保護領域定義データ記憶回路に格納された領域定義データとの比較に基づいて、変換テーブル構造のアドレスを取得するために使用するものを選択する。これは、保護領域内及び保護領域外のアドレスに対してそれぞれ異なる変換テーブル構造が参照されることを意味する。保護領域の定義は、保護領域定義データ記憶回路に格納された領域定義データに基づいて可変である。これは、例えば、より大きなアプリケーション内のサンドボックス化された構成要素に関連する安全に隔離されたコンピューティング環境のより効率的な開発をサポートするのに役立ち得る。そのような構成要素の場合、保護領域内で実行するコードに、その保護領域外に位置する同じアプリケーションのコードに対する異なる変換テーブルデータを提供することが望ましい場合があり、例えば、保護領域内のコードに対して参照される変換テーブル構造は、保護領域外のコードにアクセスできないアドレス空間のいくつかの領域へのアクセスを許可することができる。しかしながら、サンドボックス化された構成要素は、保護領域外のアドレスに格納された低セキュアコードと共有され得る、保護領域外のデータを参照する必要もあり得る。
【0010】
1つの手法は、保護領域内のアドレスに関連付けられたサンドボックス化構成要素による使用専用の、仮想アドレス空間全体をカバーするアドレステーブル構造を定義することであり得るが、この手法は、保護領域及び仮想アドレス空間の他の領域に関連付けられた変換テーブルを、コードのセキュア部分と低セキュア部分との間で共有されるアドレス空間の部分に対して同期させたままにすることにおいて、追加のオーバーヘッドを招く可能性がある。例えば、これは、低セキュアコードによって使用される変換テーブル構造のエントリが保護領域内のコードによって使用される変換テーブル構造にコピーされることを必要とし得るか、又は両方のテーブルが一部のレベルのページテーブルについて同じ位置を指すようにテーブル構造を定義する際に協働が存在することを必要とし得る。仮想アドレス空間の保護領域に関連付けられたセキュアな構成要素を提供することが望ましいユースケースでは、セキュアな構成要素及び他のコードによって使用される変換テーブル構造の管理は異なる当事者によって処理され得、それらの当事者間の協働を必要とすることは、実用性が低く、よりコストがかかり、又はセキュリティの損失のリスクが高いと考えられ得るので、複数のテーブル構造のこの同期は、実際には(特にマルチプロセッサシステムでは)管理することが困難であり得る。
【0011】
上述の手法では、アドレス変換回路は、仮想アドレスが仮想アドレス空間の保護アドレス領域の内にあるか外にあるかに基づいて、第1又は第2の変換テーブルアドレス記憶回路から変換テーブルアドレスを取得するかどうかを選択する。これは、保護領域内のアドレスに使用される変換データを管理する側が、保護領域外のアドレスにも変換データを定義する必要がないことを意味する。保護領域外のアドレスの場合、異なる変換テーブルが参照され、これは、例えば、保護領域外のデータにアクセスするものに対して保護領域外に位置するコードによって使用される同じ変換構造であり得る。これにより、変換エントリをコピーする必要性を低減し、メモリ容量を節約し、また、上述したように当事者間の協働の時間/開発コストを回避することができる。したがって、上述のような第1及び第2の変換テーブルアドレス記憶回路、保護領域定義データ記憶回路、及びアドレス変換回路をサポートするプロセッサアーキテクチャは、安全なサンドボックス化された構成要素のソフトウェア開発をより効率的にすることができる。
【0012】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするために、少なくとも1つの変換ルックアサイドバッファ(TLB)が提供されてもよい。少なくとも1つの変換ルックアサイドバッファ内でミスするメモリアクセス要求に応答して、アドレス変換回路は、メモリアクセス要求のターゲット仮想アドレスが、領域定義データによって指定された仮想アドレス空間の少なくとも1つの保護領域内にあるかどうか判定し、ページテーブルウォーク動作を、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるときに第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスと、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるときに第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスと、を使用して実行してもよい。
【0013】
したがって、第1/第2の変換テーブルアドレス記憶装置間の選択は、メモリから変換データを取得するためにページテーブルウォーク動作が必要なときに、TLBにおけるミスに対処するときに行われ得る。TLB内のヒットでは、対応するTLBミスを処理するときに選択された第1/第2の変換テーブル構造のうちの1つに基づいて、ヒットがTLBに以前に割り当てられたデータを返すことができるので、仮想アドレスが保護領域内にあるか否かをチェックする必要がない場合がある。
【0014】
処理回路は、異なるアクセス権又は能力に関連付けられ得る異なる動作ドメインを有し得る。例えば、あるドメインでは、処理回路は、別のドメインでは許可されていないいくつかの動作を実行すること、又は別のドメインにアクセスできないメモリの特定の領域にアクセスすることを許可され得る。
【0015】
すべてのドメインが領域定義データを使用して、どの変換テーブルアドレス記憶回路にアクセスするかを決定するわけではない。いくつかの実装形態では、ターゲット仮想アドレスが少なくとも1つの保護領域ケース内にあるかどうかに基づく変換テーブルアドレスの選択は、ドメインのサブセットに対してのみ行われてもよく、サブセット内にない他のドメインに対しては行われなくてもよい。したがって、処理回路が第1のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるかどうかに応じて、第1の変換テーブル構造及び第2の変換テーブル構造のうちの1つからのアドレス変換データを使用して、ターゲット仮想アドレスを変換してもよい。一方、処理回路が第2のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域中にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、ターゲット仮想アドレスを変換してもよい。
【0016】
場合によっては、処理回路が第2のドメインにあるとき、アドレス変換回路は、第2の変換テーブルアドレス記憶回路、すなわち、保護領域外の仮想アドレスを変換するために変換テーブルアドレスが第1のドメインで取得されるのと同じ記憶装置、から変換テーブルアドレスを取得してもよい。この手法では、第1のドメインから保護領域外のアドレスへのアクセスは、定義上、第2のドメインで使用されるものと同じ変換テーブルを使用し、これにより、第1のドメインコードが保護領域外のアドレスに関連付けられた第2のドメインの変換テーブル構造の部分を単に再利用できるため、第1のドメインのコードによって維持される必要がある変換テーブルデータの量が低減される。
【0017】
しかしながら、別の手法は、処理回路が第2のドメインにあるときに、アドレス変換回路が、少なくとも1つの保護領域外へのアクセスのために第1のドメイン内で使用される第2の変換テーブルアドレス記憶回路とは異なり得る、更なる変換テーブルアドレス記憶回路から変換テーブルアドレスを取得することができるように、更なる変換テーブルアドレスを格納するために更なる変換テーブルアドレス記憶回路を設けることができることであり得る。この手法は、保護領域内のアクセスのために第2のドメイン内のコードと同じ変換テーブル構造にアクセスする第1のドメイン内のコードを依然としてサポートすることができるが、これは、第2の変換テーブルアドレス記憶回路内のアドレスが更なる変換テーブルアドレス記憶回路内のアドレスと等しく設定されることを必要とする。これは、アドレスを設定するために記憶回路ならびにハードウェア及びソフトウェア命令に関していくつかの追加のオーバーヘッドを必要とし得るが、この手法は、第1のドメイン内のコードが、保護領域外へのそのアクセスが第2のドメイン内のコードと同じ変換テーブル構造を再利用すべきかどうか、又はその代わりにそのアドレス変換データのための完全に異なる構造にアクセスすべきかどうかを選択することができる追加の柔軟性を提供する。
【0018】
例外処理回路は、例外の処理を制御するために設けられてもよく、例外は様々な原因によって発生する可能性があり、例えば、所与の仮想アドレスへのメモリアクセスが要求され、そのアドレスに対して定義された有効な変換テーブルデータがない場合、又はそのアドレスの変換テーブルデータがアクセスが許可されないことを指定する場合、アドレス障害が発生する可能性がある。例外は、外部割り込み、未定義命令などの他の原因によっても発生する可能性がある。例外が発生すると、一部の形態の例外は、例えば、その仮想アドレスにアクセスして命令をフェッチするとき、又はメモリからデータにアクセスするときにアドレス障害が発生したため、又はその仮想アドレスに関連付けられた命令を処理するときに例外が発生したため、特定の仮想アドレスに起因する可能性がある。
【0019】
所与の仮想アドレスに関連付けられた少なくとも1つのタイプの例外について、例外処理回路は、例外が少なくとも1つの保護領域内又は外の仮想アドレスに関連付けられているかどうかに応じて、第1の例外処理アクションを実行するか第2の例外処理アクション(第1の例外処理アクションとは異なる)を実行するかを選択することができる。すべてのタイプの例外に対してこの判定を行う必要はないが、少なくともいくつかのタイプでは、所与の仮想アドレスが少なくとも1つの保護領域内にある場合、所与の仮想アドレスが少なくとも1つの保護領域外にある場合と比較して、例外の異なる処理をトリガすることが有用であり得る。これにより、例外を処理するための例外ハンドラは、例外が保護されたコード領域内の保護されたコードに関連付けられたか、保護領域外の保護されていないコードに関連付けられたかに応じて異なる応答を取ることができる。
【0020】
一例では、例外処理回路は、所与の仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかに基づいて、例外を第1のドメインで処理すべきか第2のドメインで処理すべきかを判定することができる。第1/第2の例外処理アクションは、それぞれ第1/第2のドメインで処理される例外のトリガであり得る。
【0021】
別の選択肢は、第1の例外処理アクションは、例外が少なくとも1つの保護領域内の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含み、第2の例外処理アクションは、例外が少なくとも1つの保護領域外の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含むことであり得る。シンドローム情報は、例外の原因に関する情報を示す例外ハンドラによってアクセス可能な情報であってもよい。シンドローム情報は、例外をどのように処理するかを決定するために例外ハンドラによって参照され得る。この手法では、第1のドメインでの処理中に少なくとも1つのタイプの例外が発生した場合、例外が少なくとも1つの保護領域内又は外の仮想アドレスに関連付けられているかどうかにかかわらず、第1のドメインで例外を取得することができるが、第1のドメインで実行する例外ハンドラは、シンドローム情報を使用して、例外自体の原因に対処するか、又は第2のドメインで処理するために例外を転送するかを決定することができる。
【0022】
いずれの方法でも、これらの機能により、例外処理回路は、例外が少なくとも1つの保護領域内又は外のアドレスに関連付けられているかどうかに応じて、異なるドメインで例外を直接的又は間接的に処理することができる。これは、所与の仮想アドレスへのアクセスが、そのアクセスについてルックアップされた変換テーブル構造で定義された有効な変換テーブルデータがないこと、又は有効な変換テーブルデータがある間に、変換テーブルデータがその特定の要求に対するアクセスを拒否するアクセス許可を指定することを発見した場合に生成されるアドレス障害例外に特に有用であり得る(例えば、それはメモリの読み出し専用領域への書き込みアクセスであるため、又は要求を発行するときの処理回路のドメイン若しくは他の動作状態がその仮想アドレスへのアクセスを許可されていないと示されるためである)。上述したように、第1のドメインにあるときに保護領域内及び外で使用するための別々の変換テーブルアドレス記憶装置を提供する1つのユースケースは、これにより、第2のドメインに関連付けられた変換テーブル構造が保護領域外のアクセスに再利用されることを可能にすることができることであり得る。したがって、アドレス障害の場合、保護領域外へのアクセスを行うときに発生する例外は、(例えば、第2のドメインのコードによって使用される変換テーブル構造を定義する第2のドメインで実行されるオペレーティングシステム又はハイパーバイザに関連付けられる)第2のドメインで処理される例外ハンドラに(例外処理回路によって直接的に、又は第1のドメインで実行される例外ハンドラを介して間接的に)向けられることが好ましい場合があるが、保護領域内の領域にアクセスするときに第1のドメインで発生するアドレス障害は、代わりに、第1の変換テーブルアドレスレジスタ内のアドレスによって識別される別個の変換テーブル構造を管理し得る第1のドメインによって処理され得る。
【0023】
一方、少なくとも1つのタイプの例外について、それが第2のドメインでの処理中に発生した場合、仮想アドレスが保護領域内にあるか外にあるかにかかわらず、例外は第2のドメインで処理され得、シンドローム情報は、仮想アドレスが保護領域内にあるか外にあるかを区別し得ない。したがって、例外をどのように処理するかの決定は、所与の仮想アドレスと、第2のドメインではなく第1のドメインの保護領域定義データとの比較に依存し得る。アドレス障害の一例が上記に与えられているが、例外が第1のドメイン又は第2のドメインで処理されるかどうかを制御するこの技術は、特定の仮想アドレスに起因する他のタイプの例外に対しても実行することができる。
【0024】
一例では、上述の第1の/第2の/更なる変換テーブルアドレス記憶回路は、対応する変換テーブルアドレスを格納するための第1の/第2の/更なるレジスタであってもよい。
【0025】
これらのレジスタのいずれか1つに格納された変換テーブルアドレスは、変換テーブルのベースアドレスであってもよく、ターゲット仮想アドレスを変換するために使用されるその変換テーブルのエントリのアドレスは、ベースアドレスとターゲット仮想アドレスの一部から導出されたオフセットとを加算することによって取得されてもよい。
【0026】
変換テーブル構造は、変換テーブルアドレス記憶回路に格納されたアドレスを使用して識別されたアドレスにあるメモリに格納されたデータを含む。例えば、変換テーブル構造は、変換テーブルアドレス記憶装置内のアドレスが第1レベルの変換テーブルのアドレスを識別するマルチレベル変換テーブル構造であり得る。ターゲット仮想アドレスの一部は、第1レベルの変換テーブル内の特定のエントリのアドレスを選択するために使用されるオフセットを提供し、そのエントリは、ツリーの次のレベルの更なる変換テーブルのアドレスを識別するために使用することができ、そこからターゲット仮想アドレスの別の部分に基づいて更なるエントリを選択することができ、最終的にターゲット仮想アドレスに対応するマッピングされた中間アドレス又は物理アドレスを提供するリーフ変換エントリが変換テーブルの最終レベル内で取得されるまで同様である。
【0027】
変換テーブルウォークを実行してそれらのレベルの変換テーブル構造のすべてをステップスルーすることは低速であり得るので、いくつかのシステムは、1つ又は変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするためのバッファエントリを含む少なくとも1つの変換ルックアサイドバッファ(TLB)を提供することができる。例えば、バッファエントリは、以前の変換テーブルウォークで識別された変換テーブルエントリをキャッシュすることができ、あるいは、それらの変換テーブルエントリから導出された情報をキャッシュすることができる(例えば、エントリは、マルチレベルページテーブルウォークが実行されるときにそのマッピングを識別するために使用される個別の変換テーブルエントリの各々を格納する代わりに、ルックアップされた仮想アドレスを中間アドレス又は物理アドレスに直接マッピングすることができる)。
【0028】
場合によっては、TLBはドメイン間で共有することができるため、各バッファエントリを処理回路のドメインのうちの対応する1つを識別するドメイン識別子と関連付けることが有用であり得、その結果、仮想アドレスに基づくTLBへのルックアップは、TLBが仮想アドレス及び処理の現在のドメインと一致するエントリを含むときにTLB内でヒットし、現在のドメインとは異なるドメインに関連付けられたエントリにヒットしない。
【0029】
処理回路は、コマンドによって指定された少なくとも1つの無効化基準が満たされる特定のバッファエントリをTLBが無効化することを要求するために使用できる変換無効化コマンドを発行する必要がある場合がある。これらのコマンドは、例えば、処理回路が変換テーブル構造の1つ内のページテーブルデータを変更したときに発行されて、TLBが古い情報をキャッシュし続けないようにすることができる。特定のドメインから発行された変換無効化コマンドは、そのドメインのドメイン識別子を指定するキャッシュされた変換テーブルエントリの無効化のみをトリガすべきであると期待することができる。しかしながら、上述したように、上述した技術(第1のドメインは、第2の変換テーブルアドレス記憶回路を使用して参照される変換テーブル構造にオーバーレイされた保護領域のための独自の変換テーブル構造を有することができる)は、第1のドメインに関連付けられたコードが第2のドメインのコードによって管理される変換構造で定義された変換データを再利用することを可能にするのに有用であり得る。これは、第2のドメインから変換無効化コマンドが発行されたときに、第2のドメインコードによって変更された変換データも第1のドメインによって使用され、第1のドメインを識別するドメイン識別子に関連付けられたTLBにキャッシュされる可能性があることを意味する。したがって、第2のドメインにあるときに発行された変換無効化コマンドに応答して、TLBは、それらが第1のドメイン又は第2のドメインを識別するドメイン識別子に関連付けられているかどうかにかかわらず、指定された無効化基準を満たすバッファエントリを無効化することができる。
【0030】
上述の技法は、少なくとも処理回路の現在のドメインに基づいて、アドレス変換回路が、現在のドメインに基づいて選択された2つ以上の異なる物理アドレス空間のうちの1つにおいて、ターゲット仮想アドレスをターゲット物理アドレスに変換する実装に特に有用であり得る。
【0031】
いくつかの処理システムでは、すべての仮想アドレスは、アクセスされるメモリ内の位置を識別するためにメモリシステムによって使用される単一の物理アドレス空間上にアドレス変換回路によってマッピングされ得る。そのようなシステムでは、特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかの制御は、アドレス変換マッピングを提供するために使用される変換テーブル構造にのみ基づいて提供され得る。しかしながら、そのようなページテーブル構造は、通常、オペレーティングシステム及び/又はハイパーバイザによって定義され得る。オペレーティングシステム又はハイパーバイザが不正アクセスされると、機微データ又はコードに攻撃者がアクセス可能となり得る機密漏洩を引き起こす可能性がある。
【0032】
したがって、他のプロセスからの分離で安全に実行するための特定のプロセスに対する要望をサポートするために、システムは、いくつかのドメイン内の動作をサポートすることができ、いくつかの別個の物理アドレス空間がサポートされ得る。メモリシステムの少なくともいくつかの構成要素については、仮想アドレスが異なる物理アドレス空間内の物理アドレスに変換されるメモリアクセス要求は、例えそれぞれの物理アドレス空間内の物理アドレスが実際にはメモリシステム位置に対応する場合であっても、あたかも、メモリ内の全く別のアドレスにアクセスしているかのように扱われる。いくつかのメモリシステム構成要素によって見られるように、処理回路の異なる動作ドメインからのそれぞれ別個の物理アドレス空間へのアクセスを隔離することにより、オペレーティングシステム又はハイパーバイザが設定したページテーブル許可情報に依存しない、より強いセキュリティ保証を提供することができる。
【0033】
通常、異なるドメインにアクセス可能な別個の物理アドレス空間をサポートするシステムでは、各ドメインが変換テーブルデータの完全に別個のセット(ページテーブル構造)に関連付けられるべきであると期待する。しかしながら、一般的に1つのドメインで実行されるアプリケーションに対して、追加のセキュリティを提供するために異なる物理アドレス空間を使用して別のドメインで動作するそのアプリケーションの特定の部分を提供することがますます望まれている。そのようなユースケースでは、第1/第2の変換テーブルアドレス記憶回路を使用して上述した技術は、異なる物理アドレス空間内の物理アドレスに格納され得る変換テーブル構造間の同期の必要性を低減するので、異なるドメインの別個の物理アドレス空間で動作するサンドボックス化された構成要素の開発を簡略化するのに特に有用であり得る。
【0034】
より詳細には、上述の第1及び第2のドメインは、それぞれ第1及び第2の物理アドレス空間に関連付けられる。第1の物理アドレス空間は、第1のドメインからアクセス可能であり、第2のドメインからアクセス不可能であり得る。第2の物理アドレス空間は、第1及び第2のドメインの両方からアクセス可能であり得る。したがって、第1のドメインは、両方のドメインの物理アドレス空間にアクセスできるよりセキュアなドメインであり、第2のドメインは、第1のドメインの物理アドレス空間にアクセスできない。したがって、ページテーブルウォークで使用するために第1/第2の変換テーブルアドレス間で選択することができるのは、それぞれの物理アドレス空間に対するより大きなアクセス権を有する第1のドメインである。これは、第1のドメインが第2のドメインに関連付けられた変換テーブルを再利用することが適切であり得るが、第2のドメインによる第1のドメインの変換テーブルの再利用は適切ではない可能性があることを認識する。
【0035】
いくつかのシステムは、追加のドメインならびに上述の第1及び第2のドメインをサポートすることができ、例えば、それに関連付けられた第3の物理アドレス空間を有する第3のドメインが存在することができる。第3の物理アドレス空間は、第3のドメインからアクセス可能であるが、第1のドメイン及び第2のドメインからアクセス不可能であり得る。例えば、第3のドメインは、第1のドメインと第2のドメインとの間の切り替えを管理する役割を担うルートドメインであり得る。あるいは、第3のドメインは、第1のドメインと同様に、第2のドメインにアクセスできない第3の物理アドレス空間を有するが、第1の物理アドレス空間は第3のドメインにアクセスできず、第3の物理アドレス空間は第1のドメインにアクセスできない、第1のドメインに直交する追加のドメインであってもよく、その結果、両方とも第2のドメインよりも安全であるが、互いのコードを信頼する必要がない2つの別個の処理環境を提供する。
【0036】
第3のドメインの特定の形態にかかわらず、処理回路が第3のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、ターゲット仮想アドレスを変換してもよい。例えば、第3の変換テーブルアドレスを格納するために第3の変換テーブルアドレス記憶回路が設けられてもよく、処理回路が第3のドメインにあるとき、処理回路は、その第3の変換テーブルアドレス記憶回路からその変換テーブルアドレスを取得してもよい。
【0037】
あるいは、第3のドメインにある場合、第1及び第2の変換テーブルアドレス記憶回路のうちの1つを使用して変換テーブルアドレスを提供することができる(ただし、その記憶装置に格納されたアドレスは、第3のドメインが依然として異なる変換テーブル構造を参照することができるように、ドメインの切り替えで変更することができる)。
【0038】
したがって、ターゲット仮想アドレスが保護領域内にあるかどうかに基づいて、どの変換テーブルアドレスを使用するかを選択する上記のメカニズムをすべてのドメインが使用することは必須ではない。
【0039】
いくつかの実施態様では、保護領域定義データ記憶回路は、単一の保護領域を定義する領域定義データを格納するように構成され得る。他の手法は、2つ以上の不連続な保護領域を示すことが可能なフォーマットを有する領域定義データをサポートし得る。各保護領域について、領域定義データは、例えば、保護アドレス領域のベースアドレスと、保護アドレス領域のサイズとを指定し得る。サイズは、ベースアドレスに対する保護アドレス領域の終端アドレスのオフセットを表すサイズ値を指定することによって、又は終端アドレスを明示的に絶対アドレスとして指定することによって識別することができる。
【0040】
上述したように、いくつかのシステムは、ターゲット仮想アドレスからターゲット中間アドレスへのマッピングを指定する第1ステージ変換テーブル構造と、ターゲット中間アドレスからターゲット物理アドレスへのマッピングを指定する第2ステージ変換テーブル構造とに基づいて、2ステージアドレス変換を実行することが可能である。第1ステージ変換テーブル構造にどの変換テーブルアドレスを使用するかを選択するために(少なくとも上記のように第1のドメインにある場合)、アドレス変換回路は、ターゲット仮想アドレスが保護領域内にあるかどうかに基づいて第1/第2の変換テーブル構造を選択することができる。したがって、第1/第2の変換テーブルアドレス記憶回路は、第1ステージ変換テーブル構造として選択可能な変換テーブル構造を識別するために使用される第1ステージのテーブルアドレスを格納することができる。アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の変換テーブルアドレス記憶回路及び第2の変換テーブルアドレス記憶回路のうちの1つから、第1ステージ変換テーブル構造を識別する第1ステージ変換テーブルアドレスを取得してもよい。
【0041】
同様に、第2ステージ変換テーブル構造の選択は、(少なくとも上述したように第1のドメインでの処理時に)ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかに依存し得る。したがって、第2ステージ変換テーブル構造を識別する第2ステージ変換テーブルアドレスは、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の2ステージ変換テーブルアドレス記憶回路及び第2の2ステージ変換テーブルアドレス記憶回路のうちの1つから取得され得る。第1/第2の第2ステージ変換テーブルアドレス記憶回路は、例えば、上述のように第1/第2の(第1ステージの)変換テーブルアドレス記憶回路に使用されるレジスタに加えて設けられる更なるレジスタを備えてもよい。
【0042】
上述の技術は、上述のように第1/第2のアドレス記憶回路(そして、提供される場合、第3の/更なるアドレス記憶回路)、領域定義データ記憶回路、及びアドレス変換回路を提供するハードウェア回路を有するデータ処理装置内で実施することができる。
【0043】
しかしながら、同じ技術はまた、ターゲットコードの実行のための命令実行環境を提供するためにホストデータ処理装置上で実行されるコンピュータプログラム内で実施することができる。そのようなコンピュータプログラムは、ホストデータ処理装置自体がそのアーキテクチャをサポートしていなくても、特定の命令セットアーキテクチャに従ってターゲットコードを実際にサポートするハードウェア装置上に提供されるアーキテクチャ環境をシミュレートするようにホストデータ処理装置を制御することができる。したがって、コンピュータプログラムは、上述したアドレス変換回路の動作をエミュレートする、ターゲット仮想アドレスからターゲット物理アドレスへのアドレス変換をサポートするアドレス変換プログラムロジックを備えることができる。また、第1及び第2の変換テーブルアドレス及び領域定義データを格納するためのハードウェア記憶装置を提供する代わりに、コンピュータプログラムは、ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持する状態エミュレートロジックを有することができ、その状態情報は、第1及び第2の変換テーブルアドレス及び領域定義データを指定する。ターゲットコード内のメモリアクセス命令に応答して、アドレス変換プログラムロジックは、ターゲット仮想アドレスが保護領域内にあるかどうかに応じて、前述したアドレス変換回路の機能と同様に、第1又は第2の変換テーブルアドレスによって識別される第1又は第2の変換テーブル構造のいずれかに基づいてターゲット仮想アドレスを変換することができる。
【0044】
シミュレーションコンピュータプログラムの場合、アドレス変換プログラムロジックは、(ターゲット命令セットアーキテクチャに従って定義された変換テーブル構造の観点から)メモリ内の物理位置を参照すると予想されるシミュレートされたターゲット物理アドレスにターゲット仮想アドレスを変換することができるが、ターゲットコードがシミュレーションプログラムによって提供される命令実行環境によって実行されている場合、変換されたアドレスは、実際には、シミュレータプログラムを実行するホストプロセッサのホスト仮想アドレス空間内の仮想アドレス空間の部分にシミュレーションによってマッピングされたシミュレートされた物理アドレスを表す。
【0045】
そのようなシミュレーションプログラムは、例えば、1つの命令セットアーキテクチャに対して書き込まれたレガシーコードが、異なる命令セットアーキテクチャをサポートするホストプロセス上で実行されている場合に有用である。また、シミュレーション実行環境上でソフトウェアを実行することにより、新しいアーキテクチャをサポートするハードウェアの進行中の開発と並行してソフトウェアのテストを可能にすることができるため、シミュレーションは、新しいアーキテクチャバージョンをサポートするハードウェアを処理する前に、命令セットアーキテクチャの新しいバージョンのソフトウェア開発を開始することを可能にすることができる。
【0046】
シミュレーションプログラムは、非一時的な記憶媒体であってもよい記憶媒体に格納されてもよい。
【0047】
実施例の説明
図1は、少なくとも1つのリクエスタデバイス4及び少なくとも1つのコンプリータデバイス6を有するデータ処理システム2の例を概略的に示す。インターコネクト8は、リクエスタデバイス4とコンプリータデバイス6との間の通信を提供する。リクエスタデバイスは、特定のアドレス指定可能なメモリシステム位置へのメモリアクセスを要求するメモリアクセス要求を発行することができる。コンプリータデバイス6は、それに向けられたメモリアクセス要求を処理する責任を有するデバイスである。
図1には示されていないが、いくつかのデバイスは、リクエスタデバイスとコンプリータデバイスとしての両方として機能できる場合がある。リクエスタデバイス4は、例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)又はバスマスターデバイス、ネットワークインターフェースコントローラ、ディスプレイコントローラなどの他のマスターデバイスなどの処理要素を含み得る。コンプリータデバイスは、対応するメモリ記憶ユニットへのアクセス制御を担うメモリコントローラ、周辺デバイスへのアクセスを制御するための周辺コントローラなどを含む。
図1は、リクエスタデバイス4の1つの構成例をより詳細に示すが、他のリクエスタデバイス4も同様の構成を有し得ることを理解されたい。あるいは、他のリクエスタデバイスは、
図1の左側に示されるリクエスタデバイス4と異なる構成を有し得る。
【0048】
リクエスタデバイス4は、レジスタ12に記憶されたデータを参照して、命令に応答するデータ処理を実行するための処理回路10を有する。レジスタ12は、オペランド及び処理された命令の結果を記憶するための汎用レジスタだけでなく、処理回路によって処理がどのように実行されるかを構成するための制御データを記憶するための制御レジスタを含み得る。例えば、制御データは、どの動作領域が現在の領域であるかを選択するために使用される現在の領域指示14と、どの例外レベルが処理回路10が動作している現在の例外レベルであるかを示す現在の例外レベル指示15とを含み得る。
【0049】
処理回路10は、アクセスされるべきアドレス可能な位置を識別する仮想アドレス(VA)と、現在の領域を識別するドメイン識別子(領域ID又は「セキュリティ状態」)とを指定するメモリアクセス要求を発行することが可能であり得る。アドレス変換回路16(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)18は、アドレス変換が必要な都度ページテーブル情報がメモリからフェッチされる必要がある場合よりもより速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路16はまた、物理アドレスと関連付けられたいくつかの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)識別子を出力する。PASの選択については、以下でより詳細に論じる。
【0050】
PASフィルタ20は、変換された物理アドレス及びPAS識別子に基づいて、その物理アドレスがPAS識別子によって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタフィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル構造に格納されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB18内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ22内にキャッシュされ得る。
図1の例では、グラニュール保護情報キャッシュ22は、TLB18とは別々の構造として示されているが、他の例では、これらのタイプのルックアップキャッシュを単一ルックアップキャッシュ構造として組み合わせることができ、その結果、組み合わされた構造のエントリの単一ルックアップは、ページテーブル情報及びグラニュール保護情報の両方を提供する。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ24及び/又はインターコネクト8に対して発行されることを進めることを可能とするかどうかをPASフィルタ20が判定する情報を定義する。メモリアクセス要求に対する指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ20は、トランザクションをブロックし、フォールトをシグナリングすることができる。
【0051】
図1は、システムが複数のリクエスタデバイス4を有する状態の例を示しているが、
図1の左側の1つの要求デバイスに示される特徴は、シングルコアプロセッサなど1つのリクエスタデバイスのみが存在するシステムにも含まれ得る。
【0052】
図1は、所与の要求に対するPASの選択がアドレス変換回路16によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報をPAと共にアドレス変換回路16によってPASフィルタ20に対して出力することができ、PASフィルタ20は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
【0053】
PASフィルタ20の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつかの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシー実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的位置を指す場合でも、あたかも全く別のメモリシステム位置を識別する別のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
【0054】
図2は、処理回路10が動作することができる異なる動作状態及び領域の例、ならびに異なる例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
【0055】
処理回路10は、いくつかの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に最高特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に最高特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、後述するように、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
【0056】
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに対して受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況においては、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベルを含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
【0057】
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、レスセキュア領域86、及びレルム領域88を含むいくつかの動作領域をサポートする。参照を容易にするために、レスセキュア領域は、「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路10が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ14に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
【0058】
起動時に、いくつかのブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高度の特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えば、ルート領域と関連付けられ得、OEMブートコードは、セキュア領域で動作し得る。しかしながら、システムがブートされると、実行中、処理回路10は、一度に領域82、84、86、及び88のうちの1つで動作すると見なされ得る。領域82~88の各々はそれ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
【0059】
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
【0060】
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードがセキュア領域84と関連付けられたリソースにアクセスできない一方で、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできるという意味では同等でない。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2はセキュア分割がサポートされる場合、2ページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
【0061】
システムをセキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理が別のハードウェアプロセッサ上で行われる必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、いまや、広範囲の異なるソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をセキュア領域内でサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供される集積回路を携帯電話などの電子デバイスに組み立てる相手先商標製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、多数の異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
【0062】
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機微性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュアな処理を必要としているそのようなユーザ提供アプリケーションのためにセキュア領域84を使用可能であるが、実際上、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダの両方に対して問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、それらのコードに対する潜在的な攻撃の攻撃対象領域が、セキュア領域内に恣意的なユーザ提供コードが追加されることにより増加する。これは望ましくないことであり得、したがってユーザがセキュア領域84にコードを追加可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明がユーザ提供コードが処理を実行する前提条件として必要とされる場合、セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードのすべてを監査し証明することは困難であり得、セキュア領域84で動作する異なるコードのプロバイダのすべてに、自らのデータ又はコードへのアクセスを任せることに否定的であり得る。これは、第三者がよりセキュアなサービスを提供する機会を制限し得る。
【0063】
したがって、
図2に示すように、レルム領域と呼ばれる追加の領域88が提供され、セキュア領域24で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供するために、ユーザが導入したそのようなコードによって使用され得る。レルム領域では、実行されるソフトウェアは、いくつかのレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する異なる構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
【0064】
レルム領域88は、それに割り当てられた独自の物理アドレス空間をセキュア領域84と同様に有するが、レルム領域及びセキュア領域88、84が非セキュア領域86に関連付けられた非セキュアPASに各々アクセスできる一方で、レルム領域88とセキュア領域84とは相互の物理アドレス空間にアクセスできないという意味でレルム領域はセキュア領域84に直交している。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼すればよく、これは、証明と保証がより実行可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機微性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
【0065】
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86内で実行されていたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードは非セキュア領域86で動作する他のコードによってアクセスできないため、これらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、彼らのデバイス上でコードが実行されているとき、初めから本質的に信頼される必要があり得、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
【0066】
これは、例えば、様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネット・オブ・シングスのためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
【0067】
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又は実行中に、ファームウェアの画像と構成、例えば、モニタコードの画像と構成、又はRMMコードの画像と構成の測定が行われる。実行中にはレルムのコンテンツと構成が測定され、それによって、レルムオーナーが関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行うことができる。
【0068】
図2に示すように、領域の切り替えを管理する別のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、リソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有しレルム領域88を有しないシステムであってもより堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって最終的なデバイスへの依存関係なしに開発し、保証し、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するオペレーティングシステム32によって制御され得、一方、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
【0069】
図3は、これらの技術をサポートするための処理システム2の別の例を概略的に示す。
図1と同じである要素は、同じ参照番号で示されている。
図3は、アドレス変換回路16のより詳細を示し、ステージ1メモリ管理ユニット50、及びステージ2メモリ管理ユニット52を含む。ステージ1MMU50は、仮想アドレスから物理アドレスへ(変換がEL2又はEL3コードによってトリガされる場合)又は中間アドレスへ(ステージ2MMU52による更なるステージ2変換が必要である動作状態で、変換がEL0又はEL1コードによってトリガされる場合)のいずれかの変換に関与し得る。ステージ2MMUは、中間アドレスを物理アドレスに変換することができる。ステージ1MMUは、EL0又はEL1から開始される変換についてはオペレーティングシステムによって制御されるページテーブルに、EL2からの変換についてはハイパーバイザによって制御されるページテーブルに、又はEL3からの転換についてはモニタコード29によって制御されるページテーブルに基づくことができる。一方、ステージ2MMU52は、どの領域が使用されているかに応じてハイパーバイザ34、RMM46又はセキュア分割マネージャ14によって定義されるページテーブル構造に基づくことができる。変換をこのように2つの段階に分離することにより、オペレーティングシステムは、それらがシステム上で動作する唯一のオペレーティングシステムであるという仮定の下で、それら自体のための及びアプリケーションのためのアドレス変換を管理することが可能となり、一方、RMM46、ハイパーバイザ34、又はSPM40は、同じ領域内で実行される異なるオペレーティングシステム間の隔離を管理することができる。
【0070】
図3に示すように、アドレス変換回路16を使用するアドレス変換プロセスは、現在の例外レベル15及び現在の領域14(又はセキュリティ状態)と組み合わせて、特定の物理アドレス空間(PAS識別子又は「PAS TAG」によって識別される)のセクションが所与のメモリアクセス要求に応答してアクセスされることを可能にするセキュリティ属性54を返すことができる。物理アドレス及びPAS識別子は、前述のグラニュール保護情報を提供するグラニュール保護テーブル56内でルックアップすることができる。この例では、PASフィルタ20は、選択されたPASが要求された物理アドレスにアクセスできるかどうかを検証し、できる場合、トランザクションがメモリシステムのシステムファブリックの一部である任意のキャッシュ24又はインターコネクト8に渡されることができる、粒状(granular)メモリ保護ユニット(GMPU)として示されている。
【0071】
GMPU20は、別のアドレス空間にメモリを割り当てることを可能にしつつ、同時に、ハードウェアベースの強力な隔離保証を提供し、物理メモリをこれらのアドレス空間に割り当てる方法における空間的及び時間的柔軟性だけでなく、効率的な共有スキームを提供する。前述のように、システム内の実行ユニットは、「ルートワールド」と呼ばれ最高例外レベル(EL3)に位置する1実行状態(ルートワールド)が存在する仮想実行状態(領域又は「ワールド」)に論理的に分割され、ルートワールドはこれらのワールドへの物理メモリ割り当てを管理する。
【0072】
単一のシステム物理アドレス空間は、複数の「論理」又は「アーキテクチャ上の」物理アドレス空間(PAS)に仮想化され、そのような各PASは、独立したコヒーレンシー属性を有する直交アドレス空間である。システム物理アドレスは、PASタグでそれを拡張することによって、単一の「論理」物理アドレス空間にマッピングされる。
【0073】
所与のワールドは、論理物理アドレス空間のサブセットへのアクセスを許可される。これは、メモリ管理ユニット16の出力に取り付けることができるハードウェアフィルタ20によって実施される。
【0074】
ワールドは、アドレス変換に使用されるページテーブルの変換表記述子のフィールドを使用してアクセスのセキュリティ属性(PASタグ)を定義する。ハードウェアフィルタ20は、システム物理アドレス空間内の各ページに対してグラニュール保護情報(GPI)を定義するテーブル(グラニュール保護テーブル56、又はGPT)へのアクセスを有し、グラニュール保護情報は、それが関連付けられているPASTAG、及び(任意選択で)他のグラニュール保護属性を示す。
【0075】
ハードウェアフィルタ20は、グラニュールのGPIに対するワールドID及びセキュリティ属性をチェックして、アクセスが許可され得るか否かを決定し、このようにして、粒状メモリ保護ユニット(GMPU)を形成する。
【0076】
GPT56は、例えば、オンチップSRAM又はオフチップDRAMに存在することができる。オフチップに記憶された場合、GPT56は、GPT56のセキュリティを維持するために暗号化、完全性、及び鮮度のメカニズムを使用し得るオンチップメモリ保護エンジンによって完全性保護され得る。
【0077】
GMPU20を、コンプリータ側ではなく、システムのリクエスタ側(例えば、MMU出力上)に位置させることにより、インターコネクト8が、複数のDRAMポートにわたって継続してページをハッシング/ストライピングすることを許可しながら、ページ粒度でアクセス許可を割り当てることを可能にする。
【0078】
トランザクションは、物理的別名化ポイント60の点として定義される場所に到達するまで、システムファブリック24、8全体を通して伝播するため、PASTAGがタグ付けされたままである。これにより、スレーブ側フィルタリングと比較してセキュリティ保証を弱めることなく、フィルタをマスター側に配置することができる。トランザクションがシステム全体を通して伝播するにつれて、PAS TAGは、アドレス隔離のための詳細なセキュリティメカニズムとして使用することができる。例えば、キャッシュは、キャッシュ内のアドレスタグにPAS TAGを追加して、同じPAに対して誤ったPAS TAGを使用して行われるアクセスがキャッシュにヒットすることを防止し、それによってサイドチャネル抵抗を改善することができる。PAS TAGはまた、外部DRAMに書き込まれる前にデータを暗号化するメモリコントローラに取り付けられた保護エンジンのコンテキストセレクタとして使用することができる。
【0079】
物理的別名化ポイント(PoPA)は、PAS TAGが剥離され、アドレスが論理物理アドレスからシステム物理アドレスに戻るシステム内の位置である。PoPAは、物理DRAMへのアクセスが(PAS TAGを介して解決された暗号化コンテキストを使用して)行われる、システムのコンプリータ側でキャッシュの下方に位置することができる。あるいは、セキュリティの弱化という犠牲においてシステムの実装を簡素化するために、キャッシュの上方に位置してもよい。
【0080】
任意の時点で、ワールドは、1つのPASから別のPASにページを遷移させることを要求できる。要求は、モニタコード29に対してEL3で行われ、GPIの現在の状態を検査する。EL3は、特定の遷移のセットのみ(例えば、レルムPASからセキュアなPASでなく、非セキュアPASからセキュアなPAS)が発生することを可能にし得る。クリーンな遷移を提供するために、新しい命令「データを削除し物理的別名化ポイントまで無効化」がシステムによりサポートされ、EL3はページを新しいPASに遷移させる前にこれを提出できる。これにより、前のPASに関連付けられた任意の残留状態がPoPA60(よりもリクエスタ側に近い)の上流の任意のキャッシュからフラッシュされることが保証される。
【0081】
GMPU20をマスター側に取り付けることによって達成することができる別の特性は、ワールド間のメモリの効率的な共有である。物理的グラニュールへの共有アクセスを、他のワールドがそれにアクセスすることを防止しながら、Nワールドのサブセットに許可することが望ましい場合がある。これは、「限定的共有」語義(semantic)をグラニュール保護情報に追加すると共に、それが特定のPAS TAGを使用することを強制することによって達成することができる。一例として、GPIは、物理的グラニュールに、セキュアPAS84のPAS TAGがタグ付けされている間、「レルムワールド」88及び「セキュアワールド」84によってのみアクセスされ得ることを示すことができる。
【0082】
上記の特性の例は、特定の物理的グラニュールの可視性特性の急速な変化をもたらす。各ワールドに、そのワールドにのみアクセス可能な私的PASが割り当てられている場合を考える。特定のグラニュールに対し、ワールドは、それらのGPIを「排他的」から「非セキュアワールドと限定的共有」に変更することによって、PASの関連付けを変更することなく、任意の時点で非セキュアワールドに見えるように要求することができる。このようにして、コストのかかるキャッシュメンテナンス又はデータコピー操作を必要とせずに、そのグラニュールの可視性を高めることができる。
【0083】
図4は、それぞれの物理アドレス空間をハードウェアに設けられる物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
【0084】
物理アドレスがアドレス変換回路16によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路16はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路16の代わりに、アドレス変換回路(例えば、MMU)は、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された物理アドレス及び情報を出力することができ、次いで、この情報は、PASフィルタ又はGMPU20によって使用されて、PASを選択することができる。
【0085】
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路10がメモリアクセス要求を発行するときに動作する現在の領域に応じて限定され得る。
【0086】
【表1】
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
【0087】
したがって、PASフィルタ20がシステムファブリック24、8にメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
【0088】
物理的別名化(PoPA)ポイント60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲と見なされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PAS識別子は物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつかの別名化物理アドレス63の数にマッピングされ得るためである。これらの別名化物理アドレス63は、すべて実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシー管理を有する、異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシーサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
【0089】
システムは、(例えば、以下に論じられる
図14に示されるように)2つ以上のPoPA60を含み得る。各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化されたアドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステム位置を実際に識別するシステム物理アドレス空間64は、再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズである。例えば、PoPA60では、PAS識別子はアドレスから剥離され得、下流の構成要素については、アドレスはPASを指定することなく、単に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望される場合、PAS識別子は、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、異なる物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステム位置を指すように解釈されるであろう。しかし、供給されたPAS識別子がそれでもコンプリータ側セキュリティチェックを実行するために使用され得る。
【0090】
図5は、システム物理アドレス空間64を、グラニュール保護テーブル56を使用して、特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができる方法を示す。グラニュール保護テーブル(GPT)56は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT56は、特定のサイズの物理アドレスのグラニュール(例えば4Kページ)に各々対応するいくつかのエントリを含み得、そのグラニュールの割り当てられたPASを定義し得、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールはルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、そのページテーブル内に、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
【0091】
しかしながら、いくつかの実装では、GPTによって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域(例えば、通常は、その領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)を別のアドレス空間と共有されたものとしてマークすることができる。これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、
図5では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からアクセス不可能である。非セキュア領域26はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のそのデータのいくつかを非セキュア領域と一時的に共有することを望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT56を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を
図5の左側に示される非セキュアPASからもアクセス可能とし得る。レルム領域がそのアドレス空間の区域を非セキュア領域と共有されるものとして指し示す場合、非セキュア領域から発行され、その区域をターゲットとするメモリアクセス要求は、当初は非セキュアPASを指定し得るが、PASフィルタ20は要求のPAS識別子が代わりにレルムPASを指定するように再マッピングすることができる。それにより、下流のメモリシステム構成要素は、要求をあたかも初めからレルム領域から発行されたかのように扱う。この共有は、異なる領域を特定のメモリ区域に割り当てるための動作が、より高程度のキャッシュ/TLB無効化及び/又はメモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う、よりパフォーマンス集約的であり得るために、パフォーマンスを改善し得る。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
【0092】
図6は、アドレス変換回路16をより詳細に示す。アドレス変換回路16は、変換要求処理回路100、TLB制御回路102、及びページテーブルウォーク制御回路104を含む。アドレス変換回路16はまた、アドレス変換回路16内に設けられているものとして
図6に示されているが、他の実施形態では、汎用オペランドのために処理回路10によってアクセスされるレジスタバンク12内に設けることができるいくつかの変換制御レジスタ106にアクセスすることもできる。
【0093】
要求処理回路100は、変換されるターゲット仮想アドレス及び現在の動作ドメインを識別するドメインIDを指定する変換要求を処理回路10から受信する。変換要求に応答して、要求処理回路100は、TLB制御回路を制御してTLB18内でルックアップを実行し、TLBがターゲット仮想アドレス及び現在のドメインに対応するバッファエントリを含むかどうかを判定する。TLB内のバッファエントリは、TLBエントリがTLB18に割り当てられた時点で現在のドメインであったドメインを示す対応するドメイン識別子でタグ付けされてもよく、TLB内のルックアップは、あるドメインからのアクセスが、別のドメインに関連付けられた要求に応答してTLBに割り当てられた変換データにヒットするのを防ぐために、現在のドメインによって修飾されてもよい。要求がTLBでヒットすると、一致するTLBエントリは、ターゲット仮想アドレスを変換されたアドレスにマッピングするためのアドレスマッピングを返すことができる(同様に、前述したアクセス許可及び/又はPAS選択情報を返す)。要求処理回路100は、返された情報を使用して、メモリアクセスが許可されているかどうかを判定することができる。(アクセス許可に基づいて)メモリアクセスが許可されない場合、アドレス障害が発生し、メモリアクセスが実行されることが防止される。メモリアクセスが許可された場合、要求処理回路100は、変換されたアドレスを返す(
図1に示すシステムでは、変換されたアドレス(物理アドレス)をPASフィルタ20に転送して、グラニュール保護ルックアップ/PASフィルタリングステップを実行する)。
【0094】
TLBでのルックアップが失敗し、その結果、要求されたターゲット仮想アドレス及びドメイン識別子に対して対応するバッファエントリが見つからない場合、TLB制御回路102は、ページテーブルウォーク制御回路104を制御して、メモリに格納された変換テーブル構造(ページテーブル構造としても知られる)からの1つ以上のページテーブルエントリを要求するための1つ以上のページテーブルウォーク要求を発行する。
【0095】
図7に示すように、ページテーブル構造は、特定のターゲットアドレスのアドレスマッピングを識別するためにページテーブルウォーク動作でトラバースされ得る複数レベルのページテーブル120、122、124、126を使用して実装され得る。
図7に示すように、インデックスビットL0Iの所与のセットを使用して、メモリ内の位置がレベル0(L0)ベースアドレス121によって識別されるレベル0ページテーブル120にインデックスを付けることができる。以下でより詳細に説明するように、L0ベースアドレス121は、変換制御レジスタ106内の情報に基づいて選択される。L0テーブル120のインデックス付きエントリは、L1ページテーブル122のメモリ内の位置を識別するL1ベースアドレスを識別する。ターゲットアドレスからのインデックスビットL1Iの異なるサブセットは、L1ページテーブル122のエントリのうちの1つを選択し、次にL2ページテーブル124のメモリ位置を識別するL2ベースアドレスを識別する。L3ページテーブル124の位置を識別するL3ベースアドレスを識別するために、ターゲットアドレステーブルからのインデックスビットL2Iの別のサブセットがL2ページテーブル26にインデックス付けされる。次に、ターゲットアドレスのビットL3Iの更に別のサブセットは、ターゲットアドレスを物理アドレスなどの変換アドレスにマッピングするための実際のアドレスマッピングを提供する(ならびに任意の関連するアクセス許可及び/又はPAS選択情報を提供する)L3ページテーブル126の特定のエントリを選択する。したがって、L3ページテーブル126は、実際のアドレスマッピング情報を提供するリーフページテーブルエントリを提供する最終ページテーブルであり、上位レベルのページテーブル120、122、124は、次のレベルのページテーブルのベースアドレスを識別する中間エントリを提供する。
【0096】
4つのレベルのページテーブルを提供することは単なる一例であり、他のものは異なる数のレベルのページテーブルを使用することができることが理解されよう。また、アドレス空間のより大きなブロックが同じ変換マッピング及び他の情報を共有する場合、上位レベルのページテーブル120、122、124内のエントリのうちの1つは、それがアドレスマッピングを直接提供するリーフエントリであることを指定できるため、後続のレベルを更にステップスルーする必要はない(一方、同じ上位レベルのページテーブル120、122、124内の他のエントリは、下位レベルのページテーブルを指すベースアドレスを含む分岐エントリとして依然として機能することができる)。
【0097】
このようにページテーブルを異なるレベルに分割することにより、ページテーブル構造全体を格納するために必要なメモリストレージの総量を削減することができ、これは、マッピングされているアドレスサイズと同等のサイズを有するメモリの領域内の所与の量のアドレス空間を変換するためのアドレスマッピングを配置する必要がなく、アドレス空間の多くの場合、大きなチャンクが、オペレーティングシステム又はアドレス変換データを設定する他のプロセスによってまだ定義されたマッピングを有していないという事実を利用するためである。
図7は、インデックスビットL0I、L1Iなどが対応するページテーブルエントリを選択するためのインデックスとして直接使用される例を示しているが、インデックスはまた、インデックスビットに適用されたハッシュ関数の結果であってもよい。
【0098】
いくつかのシステムでは、TLB18は、ページテーブルの異なるレベルから変換エントリをキャッシュするための別個のキャッシュ構造を含むことができる。例えば、TLB18は、最終レベルのページテーブル126からのリーフエントリをキャッシュするためのメインTLB構造、ならびにページテーブル120、122、124からの上位レベルのページテーブルエントリをキャッシュするためのウォークキャッシュ構造を含むことができる。一方、他の実施形態は、共有キャッシュ構造を使用してページテーブルの複数のレベルからアドレス変換データをキャッシュするTLBを提供することができる。他の実施形態は、所与のVAに対応するアドレスマッピングを提供するためにルックアップされ得るリーフエントリのみをキャッシュすることができるが、上位レベルのページテーブル120、122、124からの分岐エントリを搬送しなくてもよい。これらの手法のいずれも使用することができる。
図6は単一のTLB18を示しているが、いくつかの実装形態は、容量をアクセス待ち時間とトレードオフするために、キャッシュ階層に複数レベルのTLBキャッシュ構造を含むことができる(例えば、高速アクセスのためにレベル0TLBに格納されるエントリの数がより少なく、レベル0TLBのミスの場合に、低速アクセスのためにレベル1TLBに格納されるエントリの数がより多い)。
【0099】
プロセッサ10のいくつかの動作状態では、アドレス変換プロセスはまた、複数段階のアドレス変換を含み得る(アドレス変換の1段階又は2段階が必要かどうかは、現在の例外レベル15及び/又はレジスタ12に設定された構成情報に依存し得る)。例えば、CPU4上で実行されるアプリケーション又はオペレーティングシステムによって実行される命令によってメモリ位置を識別するために使用されるVAは、ステージ1変換で中間物理アドレス(IPA)に変換され得る。ステージ1アドレス変換を制御するためのステージ1アドレス変換構造は、例えば、EL1で動作するオペレーティングシステム又は別のプロセスによって設定され得る。オペレーティングシステムの観点から、ステージ1のアドレス変換で生成されたIPAは、アクセスされている実際のメモリ位置の物理アドレスであると仮定することができる。しかしながら、仮想化をサポートし、同じデバイス上に共存する異なるオペレーティングシステムによって使用される同一のIPAが競合するのを防ぐために、EL2で動作するハイパーバイザ又は他のプロセスは、IPAとPAとの間の更なる第2ステージアドレス変換をメモリシステムに提供することができる。
図4及び
図5を参照して上述したように、これらのPAは、選択された物理アドレス空間内のPAであってもよく、いくつかの事前PoPAメモリシステム構成要素は、異なる物理アドレス空間内の同一のPA値を、それらが異なる物理位置を指すかのように扱うことができる。したがって、ステージ2アドレス変換を制御するために、EL2で動作するコードによって定義される第2ステージ変換テーブル構造が存在し得る。
【0100】
2つのステージのアドレス変換の各々は、
図7に示すように複数レベルのページテーブルを使用することができることに留意されたい。したがって、ターゲットVAによって識別されたアドレスの所与のブロックのアドレスマッピングを識別するためのフルページテーブルウォークは、ステージ1アドレス変換で使用されるページテーブルの各ベースアドレスが、ステージ1ページテーブルの対応するレベルにアクセスする前にステージ2アドレス変換を通過することを必要とする場合がある。すなわち、
図7に示すようにステージ1及びステージ2の両方のテーブルが4レベルのページテーブルを含む例では、フルページテーブルウォークプロセスは、以下の順序で複数レベルのページテーブルにアクセスすることを含むことができる。
・ステージ1レベル0ページテーブルのベースアドレス121のPAへのステージ2変換(ステージ1変換構造はEL1で動作するコードによって構成されるため、ステージ1レベル0ベースアドレスはIPAアドレスであり得る)。ステージ2変換は、4回のルックアップ(ステージ2、レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3)を含む。
・ステージ1レベル1ベースアドレス(IPA)を識別するためのターゲットVAのレベル0インデックス部分L0Iに基づくステージ1レベル0ルックアップ。
・ステージ1レベル1ベースアドレスのPA(再び、4回のルックアップを含む)へのステージ2変換。
・ステージ1レベル2ベースアドレス(IPA)を識別するためのターゲットVAのレベル1インデックス部分L1Iに基づくステージ1レベル1ルックアップ
・ステージ1レベル2ベースアドレスのPAへのステージ2変換(これも4回のルックアップを含む)
・ステージ1レベル3ベースアドレス(IPA)を識別するためのターゲットVAのレベル2インデックス部分L2Iに基づくステージ1レベル2ルックアップ。
・ステージ1レベル3ベースアドレスのPAへのステージ2変換(ここでも4回のルックアップを含む)。
・ターゲットVAに対応するターゲットIPAを識別するためのターゲット仮想アドレスのレベル3インデックス部分L3Iに基づくステージ1レベル3ルックアップ。
・元のターゲットVAに対応する変換アドレスとして返すことができるターゲットPAへのターゲットIPAのステージ2変換(再び、4回のルックアップを含む)。
【0101】
したがって、キャッシュなしでは、変換は合計24回のルックアップを含む。上記のシーケンスから分かるように、ページテーブルウォークプロセス全体の実行は、アドレス変換の各ステージのページテーブルの各レベルをステップスルーするためにメモリへの多数のアクセスを必要とする可能性があるため、非常に遅くなり得る。これが、最終レベルのアドレスマッピングだけでなく、TLB18内のステージ1及びステージ2のテーブルの上位レベルのページテーブルからのエントリからの情報もキャッシュすることがしばしば望ましい理由である。これにより、所与のターゲットアドレスの最終レベルのアドレスマッピングが現在アドレス変換キャッシュ内にない場合でも、フルページテーブルウォークの少なくともいくつかのステップをバイパスすることができる。
【0102】
2つのステージのアドレス変換をサポートするシステムでは、いくつかのTLB18は分割TLBとして実装されてもよく、ステージ1及びステージ2のページテーブル構造からの情報をそれぞれキャッシュするために別々のキャッシュ構造が提供される。この場合、VAを指定する変換要求を処理するために2つの別々のTLBルックアップが必要になる場合があり、ステージ1のTLBで対応するIPAを識別するための1回のルックアップと、ステージ2のTLBでそのIPAに対応するPAを識別するための1回のルックアップが必要になる。あるいは、2つのステージのアドレス変換を受けるアドレス要求のためのページテーブルウォーク動作は、最初にVAのIPAへのマッピングを識別し、次にIPAのPAへのマッピングを識別するためにステージ1及びステージ2のページテーブル構造の別々のルックアップを必要とするが、これが行われると、ステージ1及びステージ2の組み合わされたTLBは、VAをPAに直接マッピングするエントリで割り当てることができ、その結果、同じVAへの将来のアクセスで、2つの別々のルックアップを実行する必要なくPAをTLB18から読み出すことができる。
【0103】
変換制御レジスタ106は、ステージ1又はステージ2のページテーブル構造に対するレベル0ベースアドレス121の選択を制御するために使用される。変換制御レジスタ106は、保護アドレス領域(PAR)レジスタ130及びいくつかの変換テーブルベースレジスタ(TTBR)132、134、136、138、142、144、146、148を含む。
図6には示されていないが、変換制御レジスタ106はまた、例外レベルごとにバンク化され得る制御パラメータを提供するための他の制御レジスタを含むことができる。例えば、これらの他の制御パラメータは、変換又はページテーブルウォークがどのように実行されるかに影響する情報を定義することができ、例えば、アドレスサイズ又はページグラニュールサイズを定義することができる。
【0104】
PARレジスタ(保護領域定義データ記憶回路)130は、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する。例えば、領域定義データは、(絶対終端アドレスを指定することによって、又はベースアドレスに対する終端アドレスの相対オフセットとしてサイズを指定することによって)保護領域のベースアドレス及び保護領域のサイズを指定することができる。いくつかのシステムは、複数の保護アドレス領域を示すために複数のPARレジスタ130をサポートすることができるが、簡潔にするために、以下の例は、1つの保護アドレス領域を参照してPARレジスタ130の使用を説明する。複数の保護アドレス領域が実施される場合、複数の保護アドレス領域に関連付けられた領域定義データのセットの各々に対して比較が実行される。
【0105】
TTBR132、134、136、138、142、144、146、148の各々は、対応するページテーブル構造にレベル0ページテーブルのベースアドレスを格納する。TTBR132、134、136、138、142、144、146、148は、ページテーブルウォークが必要なときにどのページテーブル構造が参照されるかを変更するためにソフトウェアによって更新することができる。
【0106】
現在のドメインが非セキュアドメインである場合、ステージ1アドレス変換に使用されるレベル0ベースアドレス121を格納するために、非セキュアステージ1 TTBR、S1_TTBR_N、132が提供される。同様に、非セキュアステージ2 TTBR、S2_TTBR_N、142は、現在のドメインが非セキュアドメインである場合にステージ2アドレス変換に使用されるレベル0ベースアドレス121を格納する。後述するように、TLB18内でミスしたアドレス要求のVAがPARレジスタ130によって定義された保護アドレス領域外にある場合、S1_TTBR_N132及びS2_TTBR_N142はレルムドメインによって参照することもできる。S1_TTBR_N132及びS2_TTBR_N142は両方とも、上記のような第2の変換テーブルアドレス記憶回路の例であり、又はS1_TTBR_R2 138若しくはS2_TTBR_R2 148が更なる変換テーブルアドレス記憶回路の例として提供される実施態様では)。S1_TTBR_N132は、ドメインのいずれかにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。S2_TTBR_N142は、ドメインのいずれかにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0107】
現在のドメインがレルムドメインであり、ターゲットVAがPARレジスタ130によって定義された保護アドレス領域内にある場合、ステージ1アドレス変換に使用されるレベル0ベースアドレス121を格納するために、レルムステージ1 TTBR、S1_TTBR_R、134(第1の変換テーブルアドレス記憶回路の一例)が提供される。S1_TTBR_R134は、レルムドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。同様に、現在のドメインがレルムドメインであり、ターゲットVAがPARレジスタ130によって定義された保護アドレス領域内にある場合、ステージ2アドレス変換に使用されるレベル0ベースアドレス121を格納するために、レルムステージ2 TTBR、S2_TTBR_R、144(第1の変換テーブルアドレス記憶回路、又は第1の第2ステージ変換テーブルアドレス記憶回路の一例でもある)が提供される。S2_TTBR_R144は、レルムドメイン又はルートドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0108】
任意選択的に、
図6では単一のレジスタに結合されて簡潔に示されているが、2つの別個のレジスタに分割することもできる追加のステージ1 TTBR136を、ルート及び/又はセキュアドメインに関連付けて提供することができる。S1_TTBR_Root及び/又はS1_TTBR_S136は、上述の第3の変換テーブルアドレス記憶回路の例である。S1_TTBR_Root及びS1_TTBR_S136のうちの関連するものは、ルートドメイン及びセキュアドメインのうちの対応する1つで動作するときに、ステージ1アドレス変換によってトリガされるページテーブルウォークを参照することができる。S1_TTBR_Rootは、ルートドメインからのみ読み書き可能である。S1_TTBR_S136は、セキュアドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。同様に、S2_TTBR_Sとラベル付けされた、オプションの追加のステージ2 TTBR146を、セキュアドメインに関連付けて提供することができる(ルートドメインは1ステージのアドレス変換しか必要としないため、ルートドメインはステージ2 TTBRを必要としない)。したがって、S2_TTBR_S146は、セキュアドメインで動作するときに、ステージ2アドレス変換によってトリガされるページテーブルウォークのために参照することができる。S2_TTBR_S146は、セキュアドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0109】
あるいは、S1_TTBR_Root及び/又はS1_TTBR_S136は省略されてもよく、その場合、ルート及び/又はセキュアドメインのステージ1アドレス変換に使用されるTTBRは、代わりに、非セキュアドメインと共有されるS1_TTBR_N132レジスタとすることができる。同様に、S2_TTBR_S146は省略することができ、その場合、セキュアドメインのステージ2アドレス変換に使用されるTTBRは、代わりにS2_TTBR_N142とすることができる。この場合、ドメインを切り替える際に、ルートドメインコードは、S1_TTBR_N132又はS2_TTBR_N142の内容を更新して、入力されているドメインに応じてどのアドレス変換構造が参照されるかを変更することができる。
【0110】
また、場合によっては、いくつかの実装形態では、第2の変換テーブルアドレス記憶回路の代替例として、第2のレルムステージ1 TTBR138(S1_TTBR_R2)を提供することができ、及び/又は第2のレルムステージ2 TTBR148(S2_TTBR_R2)を提供することができる。これらのレジスタは、PAR130によって定義された保護アドレス領域外のアドレスへのレルムドメインアクセスのためのステージ1又はステージ2変換に使用する代替ベースアドレスを提供することができる。S1_TTBR_R2 138が提供される場合、それは、レルムドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であり得る。S2_TTBR_R2 148が提供される場合、それは、レルムドメイン又はルートドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であり得る。
【0111】
図8は、レルムドメインから発行された要求のアドレス変換を処理する方法を示す。ステップ150において、要求処理回路100は、メモリアクセス要求のターゲットVAに基づいて(及び現在のドメイン識別子に基づいて)TLB18内でルックアップを実行するようにTLB制御回路102を制御する。ステップ152において、TLB制御回路102は、TLBヒットが識別されたかどうかを判定する。ヒットは、TLB18が指定されたメモリアクセス要求及び現在のドメイン識別子に対応する有効なエントリを含む場合に識別される(レルムドメインは非セキュアドメインに関連付けられた変換テーブル構造を再利用することを許可され得るが、レルムドメインからのアクセスは、非セキュアドメイン識別子でタグ付けされたTLBエントリにヒットすると見なされ得る)。指定されたメモリアクセス要求に対応する有効なエントリがない場合、TLBミスが発生する。
【0112】
TLBミスが発生した場合、ステップ156において、ページテーブルウォーク制御回路104は、ターゲットVAと、PARレジスタ130に格納された領域定義データとを比較して、ターゲットVAが保護アドレス領域(PAR)内にあるかどうかを判定する。
【0113】
ターゲットVAがPARの外側にある場合、ステップ158において、ページテーブルウォーク制御回路104は、非セキュアドメインと共有される、S1_TTBR_N132から取得されたステージ1ページテーブル構造のレベル0ベースアドレス121を用いて、ページテーブルウォーク動作を開始する。ステージ2変換に必要な場合、ステージ2ページテーブル構造のレベル0ベースアドレス121は、S2_TTBR_N142から取得される。したがって、PAR外のVAの場合、非セキュアドメインから行われた要求によるそれらのVAへのアクセスに使用されるのと同じステージ1又はステージ2変換データが使用される。これは、非セキュアドメイン86内で実行されているアプリケーション30からの切り出しを表す、
図2に示すようなR0レルム42に特に有用である。切り出されたレルムエンクレーブ42は、そのコード及びセキュアデータをPAR内のVAに割り当てることができ、PARの外部のデータへのアクセスは、RMM46がOS32によって維持される非セキュアページテーブルとのレルムページテーブルの同期を管理しなければならないことを回避するために、非セキュアドメイン86によって使用されるのと同じアドレス変換データを共有することができる。
【0114】
一方、ステップ156で、ターゲットVAがPAR内にあると判定された場合、ステップ162で、ページテーブルウォーク制御回路104は、ページテーブルウォーク動作を開始し、ステージ1ページテーブル構造のレベル0ベースアドレス121は、S1_TTBR_R134から取得される。ステージ2変換が必要な場合、ステージ2レベル0ベースアドレスはS2_TTBR_R144から取得される。したがって、PAR内のアクセスは、非セキュアドメインによって使用されるものとは異なるページテーブル構造にアクセスし、その結果、特別なアクセス許可が、レルムドメイン88内のR0レルム42によって表されるセキュアエンクレーブに対して定義され得る。
【0115】
したがって、ステップ158及び162において、VA/IPAのオフセットビットと組み合わせてS1_TTBR_R134、S1_TTBR_N132、S2_TTBR_R144、又はS2_TTBR_N142から導出されたアドレスを指定するメモリ、又は以前のページテーブルウォークメモリアクセスによって識別されたページテーブルエントリに格納された更なるアドレスポインタから導出されたアドレスに対して、いくつかのページテーブルウォーク要求が発行される。なお、ページテーブルウォークメモリアクセス自体は、上述したようにPASフィルタによって実行されるPASフィルタリングチェックの対象となる。また、TLBがページテーブル構造の上位レベルエントリをキャッシュするための少なくとも1つのウォークキャッシュTLB構造を含むシステムでは、関連する上位レベルエントリがウォークキャッシュ構造にキャッシュされている場合、いくつかのステップがスキップされる可能性があるため、ステップ158及び162において、上記で概説したフルページテーブルウォーク動作を実行する必要はない場合がある。
【0116】
VAからPAへのマッピングを識別するために必要なステージ1及び/又はステージ2のエントリがメモリから取得されると、VAがPAR内にあったか否かにかかわらず、ステップ160において、取得された変換データをキャッシュするために1つ以上の新しいTLBエントリをTLB18に割り当てることができる。上述したように、TLBはいくつかの方法で実装することができるので、キャッシュされたデータの正確な形式は大幅に変化し得る。TLBエントリがレルムドメインアクセスに続いて割り当てられる場合、新しいTLBエントリは、それがS1/S2_TTBR_N(132又は142)又はS1/S2_TTBR_R(134又は144)を使用して識別された非セキュア又はレルムページテーブルから取得された情報を含むかどうかにかかわらず、レルムドメインを示すドメイン識別子タグを指定することができる。レルムドメインは、PARの外部のアドレスにアクセスするために同じ非セキュアドメインページテーブルを共有するが、そうでなければ非セキュアドメイン86内のコードがアクセスタイミング測定に基づいてTLBサイドチャネルを使用して、レルムドメインによってTLBに割り当てられたアドレスをプローブできるため、非セキュアドメインがR0レルム42内で動作するコードによってTLBに割り当てられたエントリにヒットすることは望ましくない場合があり、これにより、R0レルム42のセキュアアクティビティに関する情報が漏洩する可能性がある。
【0117】
また、ステップ160において、VAは、取得された変換データを使用してPAに変換され、変換応答で返される(又はPASフィルタ20へのPAS選択と共に提供される)。
【0118】
ステップ152でTLBヒットが識別された場合、ステップ164で、ターゲットVAは、TLBに以前に割り当てられたキャッシュアドレス変換データに基づいてPAに変換される。したがって、ターゲットVAは、ターゲットVAがPAR内にあるか否かに基づいて(ステージ1の場合)選択されたS1_TTBR_R134及びS1_TTBR_N132のうちの1つによって、又はターゲットVAがPAR内にあるか否かに基づいて(ステージ2の場合)選択されたS2_TTBR_R144及びS2_TTBR_N142のうちの1つによって識別された第1/第2の変換テーブル構造のうちの1つから以前に取得された変換データに基づいて変換される。しかしながら、ターゲットVA及びPARのこの比較は、TLBミスを処理するときにステップ156で行われたはずであるため、ステップ164で再び行う必要はない。なぜなら、アドレス変換マッピングを提供するエントリに対するTLBヒットでは、以前に取得された変換データをTLB18から単に読み出すことができ、PARレジスタ130又はTTBR132~148をチェックする必要がない可能性があるからである(ただし、分割ステージ1/ステージ2 TLB手法では、ステージ1 TLB及びステージ2 TLBにヒットがあるかどうかについてそれぞれ別々の判定が必要になる場合がある)。
【0119】
図9は、ルート、セキュアドメイン、又は非セキュアドメインからのアクセスのためのアドレス変換を制御する方法を示す。ステップ150及びステップ152は、TLB内のルックアップが、ルート、セキュアドメイン、又は非セキュアドメインのうちの関連するドメインを指定する現在のドメイン識別子に基づくことを除いて、
図8と同じである。TLBミスが検出された場合、ステップ170において、ステージ1又はステージ2のレベル0ページテーブルを識別するために使用するTTBRが現在のドメインに基づいて選択される。非セキュアドメイン内のステージ1変換には、S1_TTBR_N132が使用される。ルートドメイン又はセキュアドメインにおけるステージ1変換の場合、そのドメインの専用S1_TTBR136が実装されている場合、そのS1_TTBR136はレベル0ベースアドレスを提供するために使用されるが、別個のS1_TTBR136が実装されていない場合、S1_TTBR_Nが使用される。ステージ2変換のためのL0ベースアドレスは、現在のドメインが非セキュアドメインである場合にはS2_TTBR_N142から、現在のドメインがセキュアドメインである場合にはS2_TTBR_S146から取得される(又は、セキュアドメイン専用のS2_TTBR_S146が実装されていない場合、セキュアアクセスは、ステージ2変換のレベル0ベースアドレスを取得するためにS2_TTBR_N142レジスタを使用することができる。)。ルートドメインは、ステージ2変換を必要としない。
【0120】
ステップ172において、ステージ1アドレス変換データを取得するために、選択されたS1_TTBRから取得されたレベル0ベースアドレスに基づいてページテーブルウォーク動作が実行される。ステージ2変換が必要な場合、ステージ2アドレス変換データは、S2_TTBR_N142及びS2_TTBR_S146の一方から取得されたステージ2 L0ベースアドレスを介して導出されたアドレスへのアクセスに基づいて取得される。
【0121】
ステップ174において、
図8のステップ160と同様に、取得された変換データは現在のドメイン識別子によってタグ付けされたTLBにキャッシュされ、VAは取得された変換データを使用してPAに変換される。
【0122】
一方、ステップ152でTLBヒットが識別された場合、ステップ176で、
図8のステップ162と同様に、TLB18から読み出されたキャッシュアドレス変換データに基づいてVAが変換されるが、このとき、キャッシュアドレス変換データは、PARレジスタ130によって定義されたVAとPARとの間の比較とは無関係に選択された変換テーブル構造から以前に取得されたものである。
【0123】
図10は、通常の(非セキュア)ドメイン86及びレルムドメイン88から変換がどのように処理されるかを示している。非セキュアドメインアクセスの場合、レベル0ページテーブルを指すために使用されるTTBRは、ステージ1の場合はS1_TTBR_N132であり、ステージ2の場合はS2_TTBR_N142である(簡潔にするために、
図10は、ステージ1又はステージ2のいずれかであり得る単一の変換ステージのみを示す)。
【0124】
レルムドメインアクセスの場合、VAがPAR180内にある場合、S1_TTBR_R134はステージ1のレベル0ページテーブルベースアドレスを提供し、S2_TTBR_R144はステージ2のレベル0ページテーブルベースアドレスを提供する。VAがPAR180の外側にある場合、S1_TTBR_N132はステージ1のL0ベースアドレスを提供するために使用され、S2_TTBR_N142はステージ2のレベル0ページテーブルベースアドレスを提供し、これは正常ワールド86によって使用される同じL0ステージ1又はステージ2ページテーブル182を指す。これは、
図2に示すEL0レルム42を実装するのに役立ち、EL0領域(R0)42が非セキュアドメイン内のエンクロージングアプリケーション30の非セキュアアドレス空間をソフトウェア入力を減らして透過的に共有することを可能にする。
【0125】
すなわち、通常のEL0アプリケーション30は、そのオペレーティングシステム32によって提供される仮想アドレス空間、例えば、アドレス0で始まる1GBのサイズを有することができる。EL0レルム42は、アプリケーションの仮想アドレス空間のサブセットである保護アドレス範囲(PAR)180、例えば、選択されたオフセットアドレスで始まるサイズが128MB、例えば512MBを有するものとして定義され得る。レルムPAR180内のメモリは、EL0アプリケーション30の他の部分(又は他のエージェント)からアクセスできないようにする必要がある。R0レルム42の場合、そのプライベートメモリは、保護アドレス領域180内に存在し、PAR180の外部の非PARアプリケーション仮想メモリへの直接読み取り/書き込みアクセスを有することによってアプリケーション30の残りの部分とデータを共有する。
【0126】
例えば、レルムが非セキュアドメインのページテーブル構造をコピーする別個のページテーブル構造を維持するシャドウページテーブルを使用して、既存の仮想メモリ技術及びMMUを使用してPAR切り出しを実装することが可能である。しかしながら、これには、制御当事者間の良好な調整が必要である(例えば、ページテーブル更新及びTLB無効化を同期させることであり、これらの動作のトラッピング又は準仮想化を必要とする可能性がある)。これらの手段は、無関係なコードに性能上の影響を及ぼす可能性がある。また、ページテーブル構造をコピーすると、メモリ記憶容量が浪費される。また、敵対的環境(上記のようにエンティティ間に信頼がない場合)では、エンティティ間のこの協働に依存することはできない。レルムセキュリティ保証(機密性及び完全性)は、他の当事者の善意に依存することはできない。
【0127】
これらの問題は、PAR領域180外へのアクセスのために既存のページテーブル構造を再利用しながら、別個のアドレス変換データを用いてPAR領域180を実装するためのメカニズムを提供する、
図10に示す「PARオーバーレイ」技術を使用して対処することができる。したがって、非セキュアページテーブルは、レルムドメインと共有され、レルムドメインは、(少なくとも)2つのTTBR、すなわち、レルム「オーバーレイ」ページテーブル構造を指すTTBR_R134、144と、非セキュアドメインと共有され、「アンダーレイ」ページテーブル構造を指すTTBR_N132、142とへのアクセスを有する。この手法は、非セキュアページテーブルによってPAR領域180に対応する範囲内の仮想アドレスにマッピングされた物理アドレスにレルムコードがアクセスできないが、非セキュアコードはこれらの物理アドレスにアクセスできることを意味する。セキュリティを維持するために、非セキュアコードによって渡されたパラメータに応じて仮想アドレスにアクセスする場合、PAR領域外のアドレスを条件とするメモリアクセスをトリガする前に、PAR領域180内にあるかどうかをチェックするためにアドレスをチェックすることが、レルムコードにとって望ましい場合がある。そうでなければ、レルムコードは、セキュリティリスクとなり得る非セキュアコードから渡されたパラメータの制御下で、レルムページテーブルによってPAR領域180にマッピングされた物理アドレス内のそれ自体の内部データにアクセスするように錯覚される可能性がある。例えば、レルムコードは、非セキュアページテーブルによってPAR領域のアンダーレイ範囲にマッピングされたデータ構造をウォークするように要求され得るが、それらの仮想アドレスがレルムドメイン内でアクセスされると、レルムコードは、非セキュアドメインによるアクセスから保護されるべき機密情報を記憶する物理アドレスにアクセスすることになり、これは、最初にアドレスをサニタイズすることによって防止され得る。このサニタイズアドレスチェックは、プロセッサのいかなるアーキテクチャ機能(セキュリティのためにソフトウェアによって実行することが推奨されるチェックであるが、プロセッサのハードウェア機能として実装される機能ではない)によっても実施されない場合がある。
【0128】
あるいは、同じ物理レジスタTTBR_N132を再利用してPAR180の外部のレルムドメイン「アンダーレイ」アクセス用のベースアドレスを提供する代わりに、第2のレルムドメインTTBR138、148(S1_TTBR_R2又はS2_TTBR_R2)を提供し、VAがPAR180の外部にあるときにレルムドメインによって使用することができる。この場合、S1/S2_TTBR_R2 138、148に格納されたアドレスは、S1/S2_TTBR_N132、142に格納されたアドレスと一致するように、又は異なるページテーブル構造がEL0レルム(R0)42によってアクセスされる場合に異なるアドレスを指定するように更新することができるので、より柔軟性がある。
【0129】
図11は、レルムドメイン86で発生する例外を処理する方法を示す。ステップ200において、例外がレルムドメインから取得される。例外は、所与のVAに関連する。例えば、例外は、命令フェッチ、データアクセス、又はページテーブルウォークアクセスのためにアドレス変換を実行しようとしたときに、そのVAのページテーブル構造にアドレス変換マッピングが定義されていないこと、又はアクセス許可が要求されたメモリアクセスを禁止していることが判明したときに通知されるアドレス障害であり得る。また、例外は、PASフィルタ20がメモリアクセスを拒否することによって引き起こされる可能性もある。
【0130】
ステップ202において、所与のVAがPARレジスタ130によって定義されたPAR180にあるかどうかが判定される。そうである場合、ステップ204において、第1の例外処理アクションが実行され、例えば、例外はレルムドメイン88で処理され、シンドローム情報はVAがPAR180内にあったことを示すように設定される。所与のVAがPAR180外にある場合、ステップ206で、第2の例外処理アクションが実行され、例えば、例外はレルムドメインで処理され、シンドローム情報は、VAがPAR180外にあったことを示すように設定される。例外に応答してレルムドメインで実行される例外ハンドラは、次に、例外をどのように処理するかを判定するためにシンドローム情報を使用することができる。VAがPAR180内にあった場合、例外ハンドラ自体が障害の原因に対処することができる。VAがPAR180の外部にあった場合、例外ハンドラは例外を非セキュアドメインに転送することができ、非セキュア例外ハンドラは障害の原因に対処することができる。これは、非セキュアドメインのページテーブル構造を共有するレルムドメインに起因して、障害が非セキュアドメイン内のコードによって定義された変換データに関連付けられている場合に有用であり、その場合、その例外は、非セキュアドメイン内のOS32又はハイパーバイザ34に関連付けられた例外ハンドラによってより良好に処理され得る。
【0131】
代替的な手法は、ステップ204における第1の例外処理アクションがレルムドメインにおける例外処理を含むことができる一方で、ステップ206における第2の例外処理アクションが非セキュアドメインにおける例外処理を含むことができることであり得る。この場合、例外処理回路は、VAがPAR内にあったか否かに応じて、例外をレルムドメイン又は非セキュアドメインで直接とらせることができる。
【0132】
しかしながら、例外処理を行う時点で、機密である可能性があり、非セキュアドメインによるアクセスから保護されるべきである状態がレジスタ12に格納されている場合、
図11に示す手法を使用することが好ましい場合があり、その場合、レルムソフトウェア例外ハンドラが必要に応じてそれを非セキュアドメインに転送することを選択できる前に、レルムドメインで発生する任意の例外が最初にレルムドメインに取り込まれる。これにより、レルムソフトウェア例外ハンドラは、非セキュアドメインに例外を転送する前に、非セキュアアクセスから保護されるべきレジスタ状態12のサブセットをメモリに保存し、それらのレジスタ12の内容を上書きするための状態保存動作を開始することができる。
【0133】
図12は、処理回路が非セキュアドメイン86内にあるときに発行されるTLB無効化コマンドを処理する方法を示す。ステップ210において、TLB無効化コマンドが発行される。TLB無効化コマンドは、TLB18に、TLB無効化コマンドによって指定された無効化基準を満たす有効なエントリがあるかどうかを検索させる(例えば、これらの基準は、無効化が実行されるべきVA又はVA範囲を指定することができる)。TLB無効化コマンドが非セキュアドメインから発行されると、ステップ212において、TLBは、無効化基準(複数可)を満たし、非セキュアドメイン又はレルムドメインのいずれかを示すドメイン識別子タグを指定するキャッシュエントリを無効化する。対照的に、ルートドメイン、セキュアドメイン、又はレルムドメインのうちの1つから発行されたTLB無効化の場合、TLB無効化コマンドは、そのドメイン識別子タグがその特定のドメインを指定するが、他のドメインを指定しないTLBエントリを引き起こすことができる。レルムドメインは、非セキュアドメインのページテーブルから導出された情報を提供するエントリをTLB18にキャッシュさせている可能性があるため、それらの非セキュアページテーブルが更新されると、そのようなページテーブルからの古いデータは、たとえそれがレルムドメインによって割り当てられたとしても、TLB18からフラッシュされるべきであり、そのため、TLB無効化が、非セキュアドメインTLBエントリだけでなく、レルムドメインTLBエントリの無効化を引き起こすために有用である。
【0134】
上述したように、2つの別個のTTBR132、134の使用は、非セキュアドメイン86で実行されているEL0アプリケーション30内のセキュアエンクレーブを表すEL0レルム42に有用であり得る。しかしながら、
図2に示すように、レルムドメイン88はまた、レルムドメイン内のEL0でアプリケーションレベルコードとEL1で対応するオペレーティングシステムの両方を実行する、カプセル化されたEL0/EL1レルム44(例えば、
図2に示すレルムR1)をサポートすることもできる。そのようなEL0/EL1レルム44の場合、単一のL0ベースアドレスがEL0/EL1領域によってアクセスされる仮想アドレス空間全体に使用され得るので、PARレジスタ130及びTTBR_Nレジスタ132を使用する必要はない。したがって、そのような組み合わされたEL0/EL1レルム44の場合、ページテーブルウォークにどのTTBRを使用するかを決定するためにVAをPAR定義データと比較する必要はない。
【0135】
したがって、すべてのレルムドメインアクセスが、上に示された領域「オーバーレイ」技術を使用することは必須ではない。場合によっては、制御レジスタで指定されたいくつかの構成情報は、VAがPAR内にあるか否かにかかわらず、又はVAとPARとの比較に基づいてTTBRを選択するか否かにかかわらず、レルムドメインアクセスがステージ1ページテーブルウォークのL0ベースアドレスを取得するために単一のTTBRを使用するべきか否かを指定することができる。
【0136】
図13は、アドレス変換回路16及びPASフィルタの動作を要約する。PASフィルタリング20は、アドレス変換回路によって実行される、ステージ1(及び任意選択でステージ2)のアドレス変換後に実行される追加のステージ3のチェックとみなすことができる。ステージ1変換は、(上述したようにTTBRに基づいて選択されたステージ1ページテーブル構造でアクセスされたリーフエントリに基づいて)PAS選択情報「NS」を提供し、これは、レルム又はセキュアドメインからのアクセスが、そのドメイン又は非セキュアPASに関連付けられたPASにアクセスするかどうかを制御する。PASの選択に関係なく、非セキュアドメインからのアクセスは非セキュアPASにアクセスする。EL3内のルートドメインからのアクセスの場合、ステージ1のページテーブルエントリは、
図4に示す4つのPASのうちのどれが所与のルートドメインメモリアクセスのために選択されるべきかを一緒に符号化する2ビットのアドレスベースの選択情報(NS、NSEとラベル付けられた)を提供する。PASフィルタ20は、選択されたPASと、現在の「セキュリティ状態」(すなわち、現在のドメインを識別するドメインID)と、上述のグラニュール保護テーブル(GPT)内の情報とに基づいてグラニュール保護チェックを実行して、アクセスを続行すべきかどうかを判定する。
【0137】
図14は、使用され得るシミュレータ実装を示す。上記の実施形態は、技術をサポートする特有の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、シミュレータプログラム410をサポートするホストオペレーティングシステム420を任意選択で実行して、ホストプロセッサ430で実行し得る。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数の層のシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供された複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行するシミュレータ実装を提供するために必要とされてきたが、そのような手法は、ある状況において、例えば、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるときに、正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬USENIX Conference、53~63頁に記載されている。
【0138】
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成又は機能によって同等の機能を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態でソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ430)に存在する構成では、いくつかのシミュレーションされた実施形態は、適する場合、ホストハードウェアを使用してもよい。
【0139】
シミュレータプログラム410は、(非一時的媒体であってもよい)コンピュータ可読記憶媒体に記憶されてもよく、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード400に対するプログラムインタフェース(命令実行環境)を提供し、シミュレータプログラム410によってモデル化されたハードウェアアーキテクチャのインタフェースと同じである。したがって、ターゲットコード400のプログラム命令は、シミュレータプログラム410を使用して命令実行環境内から実行されてもよく、このため、前述の装置2のハードウェア特徴を実際には有しないホストコンピュータ430は、これらの特徴をエミュレートすることができる。これは、例えば、ターゲットコードが、新しいバージョンのプロセッサアーキテクチャをサポートしないホストデバイス上で実行されるシミュレータ内で実行されることによって試験され得るので、新しいバージョンのプロセッサアーキテクチャのために開発されているターゲットコード400の試験を、実際にそのアーキテクチャをサポートするハードウェアデバイスが利用可能となる前に、可能にするために有用であり得る。
【0140】
シミュレータコードは、例えば、ターゲットコード400の命令をデコードする命令復号プログラムロジックを含む、処理回路10の挙動をエミュレートし、命令を、ホストハードウェア430によってサポートされたネイティブ命令セット内の対応する命令のシーケンスにマッピングして、復号化された命令に相当する機能を実行する処理プログラムロジック412を含む。処理プログラムロジック412はまた、上述のように、異なる例外レベル及び領域におけるコードの処理をシミュレートする。レジスタエミュレートプログラムロジック413(状態エミュレートロジックの例)は、ターゲットコード400に関連付けられたターゲット命令セットアーキテクチャに従って定義されたアーキテクチャ上のレジスタ状態をエミュレートする、ホストプロセッサのホストアドレス空間内のデータ構造を維持する。したがって、そのようなアーキテクチャ上の状態が
図1の実施例のようにハードウェアレジスタ12に記憶されるのでなく、代わりに、ホストプロセッサ430のメモリに記憶され、レジスタエミュレートプログラムロジック413は、ターゲットコード400の命令のレジスタ参照を、ホストメモリからシミュレートされたアーキテクチャ上の状態データを取得するための対応するアドレスにマッピングする。このアーキテクチャ状態は、前述した現在のドメイン指示14及び現在の例外レベル指示15、ならびに前述したようにTTBR132~148に対応する様々な変換テーブルアドレス及びPARレジスタ130に対応する領域定義データを含み得る。
【0141】
シミュレーションコードは、前述のように同じページテーブル構造及びGPT56を参照して、アドレス変換回路16及びPASフィルタ20の機能をそれぞれエミュレートするアドレス変換プログラムロジック414及びフィルタリングプログラムロジック416を含む。したがって、アドレス変換プログラムロジック414は、ターゲットコード400によって指定された仮想アドレスをPASのうちの1つの中の(ターゲットコードの観点からメモリ内の物理位置を指す)シミュレートされた物理アドレスに変換するが、実際にこれらのシミュレートされた物理アドレスは、アドレス空間マッピングプログラムロジック415によってホストプロセッサの(仮想)アドレス空間上にマッピングされる。フィルタリングプログラムロジック416は、上述のPASフィルタと同様に、ターゲットコードによってトリガされたメモリアクセスを進めることを可能とするかどうかを判定するために、グラニュール保護情報のルックアップを実行する。アドレス変換プログラムロジック414は、前述したように、変換されるターゲットVAがPAR内にあるかどうかに基づいて、レルムドメインアクセスに使用するTTBR132、134、142、144を選択する。
【0142】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0143】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。
【手続補正書】
【提出日】2022-11-21
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。より詳細には、アドレス変換に関する。
【0002】
データ処理装置は、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路を有してもよい。アドレス変換は、仮想アドレスから物理アドレスに直接1つのステージで、又は仮想アドレスを中間アドレスにマッピングするために使用されるステージ1変換テーブル構造と、中間アドレスを物理アドレスにマッピングするために使用されるステージ2変換テーブル構造とに基づく2ステージのアドレス変換として実行することができる。変換テーブルアドレス記憶回路は、アドレスマッピングに使用する変換テーブル構造を識別する変換テーブルアドレスを格納することができる。
【0003】
少なくともいくつかの例は、装置であって、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、第1の変換テーブルアドレスを格納する第1の変換テーブルアドレス記憶回路と、第2の変換テーブルアドレスを格納するための第2の変換テーブルアドレス記憶回路と、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、を備え、メモリアクセス要求に応答して、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換し、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換する、ように構成されている、装置を提供する。
【0004】
少なくともいくつかの例は、方法であって、ターゲット仮想アドレスを指定するメモリアクセス要求に応答して、ターゲット仮想アドレスが、保護領域定義データ記憶回路に格納された領域定義データによって指定された少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換することと、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換することと、を含む、方法を提供する。
【0005】
少なくともいくつかの実施例は、ターゲットコードを実行するための命令実行環境を提供するホストデータ処理装置を制御するコンピュータプログラムであって、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換プログラムロジックと、ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持するための状態エミュレートロジックであって、状態情報は、第1の変換テーブルアドレスと、第2の変換テーブルアドレスと、シミュレートされた仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データと、を指定する、状態エミュレートロジックと、を備え、ターゲットコードのメモリアクセス命令に応答して、アドレス変換プログラムロジックは、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換し、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいてターゲット仮想アドレスを変換する、ように構成されている、コンピュータプログラム、を提供する。
【0006】
コンピュータ可読記憶媒体は、上述のコンピュータプログラムを格納することができる。記憶媒体は、非一時的記憶媒体であってもよい。
【図面の簡単な説明】
【0007】
本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
【
図2】処理回路が動作することができるいくつかの領域を示す。
【
図3】グラニュール保護ルックアップをサポートする処理システムの例を示す。
【
図4】いくつかの物理アドレス空間の、メモリシステム内の場所を識別するシステム物理アドレス空間上での別名化を概略的に示す。
【
図5】有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す。
【
図7】マルチレベル変換テーブル構造の一例を示す図である。
【
図8】レルムドメインにおけるアドレス変換を制御する方法を示す図である。
【
図9】ルートドメイン、セキュアドメイン、及び低セキュアドメインのうちの1つにおけるアドレス変換を制御する方法を示す図である。
【
図10】変換される仮想アドレスが仮想アドレス空間の保護領域内にあるかどうかに応じた第1/第2の変換テーブルアドレス間の選択を示す図である。
【
図11】レルムドメインにおける例外処理を示す図である。
【
図12】低セキュアドメインから発行されたTLB無効化コマンドの処理を示す図である。
【
図13】アドレス変換及びグラニュール保護情報フィルタリングのいくつかのステージを示す図である。
【
図14】使用される可能性のあるシミュレータの例を示す。
【発明を実施するための形態】
【0008】
装置は、メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、第1及び第2の変換テーブルアドレスをそれぞれ格納する第1及び第2の変換テーブルアドレス記憶回路(例えば、第1及び第2の変換テーブルアドレスレジスタ)と、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、を有する。メモリアクセス要求に応答して、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるとき、ターゲット仮想アドレスは、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて変換される。ターゲット仮想アドレスが少なくとも1つの保護領域外にあるとき、ターゲット仮想アドレスは、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて変換される。
【0009】
本発明者らは、第1及び第2の変換テーブルアドレス記憶装置を提供することが有用であり得ることを認識し、アドレス変換回路は、ターゲット仮想アドレスと、保護領域定義データ記憶回路に格納された領域定義データとの比較に基づいて、変換テーブル構造のアドレスを取得するために使用するものを選択する。これは、保護領域内及び保護領域外のアドレスに対してそれぞれ異なる変換テーブル構造が参照されることを意味する。保護領域の定義は、保護領域定義データ記憶回路に格納された領域定義データに基づいて可変である。これは、例えば、より大きなアプリケーション内のサンドボックス化された構成要素に関連する安全に隔離されたコンピューティング環境のより効率的な開発をサポートするのに役立ち得る。そのような構成要素の場合、保護領域内で実行するコードに、その保護領域外に位置する同じアプリケーションのコードに対する異なる変換テーブルデータを提供することが望ましい場合があり、例えば、保護領域内のコードに対して参照される変換テーブル構造は、保護領域外のコードにアクセスできないアドレス空間のいくつかの領域へのアクセスを許可することができる。しかしながら、サンドボックス化された構成要素は、保護領域外のアドレスに格納された低セキュアコードと共有され得る、保護領域外のデータを参照する必要もあり得る。
【0010】
1つの手法は、保護領域内のアドレスに関連付けられたサンドボックス化構成要素による使用専用の、仮想アドレス空間全体をカバーするアドレステーブル構造を定義することであり得るが、この手法は、保護領域及び仮想アドレス空間の他の領域に関連付けられた変換テーブルを、コードのセキュア部分と低セキュア部分との間で共有されるアドレス空間の部分に対して同期させたままにすることにおいて、追加のオーバーヘッドを招く可能性がある。例えば、これは、低セキュアコードによって使用される変換テーブル構造のエントリが保護領域内のコードによって使用される変換テーブル構造にコピーされることを必要とし得るか、又は両方のテーブルが一部のレベルのページテーブルについて同じ位置を指すようにテーブル構造を定義する際に協働が存在することを必要とし得る。仮想アドレス空間の保護領域に関連付けられたセキュアな構成要素を提供することが望ましいユースケースでは、セキュアな構成要素及び他のコードによって使用される変換テーブル構造の管理は異なる当事者によって処理され得、それらの当事者間の協働を必要とすることは、実用性が低く、よりコストがかかり、又はセキュリティの損失のリスクが高いと考えられ得るので、複数のテーブル構造のこの同期は、実際には(特にマルチプロセッサシステムでは)管理することが困難であり得る。
【0011】
上述の手法では、アドレス変換回路は、仮想アドレスが仮想アドレス空間の保護アドレス領域の内にあるか外にあるかに基づいて、第1又は第2の変換テーブルアドレス記憶回路から変換テーブルアドレスを取得するかどうかを選択する。これは、保護領域内のアドレスに使用される変換データを管理する側が、保護領域外のアドレスにも変換データを定義する必要がないことを意味する。保護領域外のアドレスの場合、異なる変換テーブルが参照され、これは、例えば、保護領域外のデータにアクセスするものに対して保護領域外に位置するコードによって使用される同じ変換構造であり得る。これにより、変換エントリをコピーする必要性を低減し、メモリ容量を節約し、また、上述したように当事者間の協働の時間/開発コストを回避することができる。したがって、上述のような第1及び第2の変換テーブルアドレス記憶回路、保護領域定義データ記憶回路、及びアドレス変換回路をサポートするプロセッサアーキテクチャは、安全なサンドボックス化された構成要素のソフトウェア開発をより効率的にすることができる。
【0012】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするために、少なくとも1つの変換ルックアサイドバッファ(TLB)が提供されてもよい。少なくとも1つの変換ルックアサイドバッファ内でミスするメモリアクセス要求に応答して、アドレス変換回路は、メモリアクセス要求のターゲット仮想アドレスが、領域定義データによって指定された仮想アドレス空間の少なくとも1つの保護領域内にあるかどうか判定し、ページテーブルウォーク動作を、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるときに第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスと、ターゲット仮想アドレスが少なくとも1つの保護領域外にあるときに第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスと、を使用して実行してもよい。
【0013】
したがって、第1/第2の変換テーブルアドレス記憶装置間の選択は、メモリから変換データを取得するためにページテーブルウォーク動作が必要なときに、TLBにおけるミスに対処するときに行われ得る。TLB内のヒットでは、対応するTLBミスを処理するときに選択された第1/第2の変換テーブル構造のうちの1つに基づいて、ヒットがTLBに以前に割り当てられたデータを返すことができるので、仮想アドレスが保護領域内にあるか否かをチェックする必要がない場合がある。
【0014】
処理回路は、異なるアクセス権又は能力に関連付けられ得る異なる動作ドメインを有し得る。例えば、あるドメインでは、処理回路は、別のドメインでは許可されていないいくつかの動作を実行すること、又は別のドメインにアクセスできないメモリの特定の領域にアクセスすることを許可され得る。
【0015】
すべてのドメインが領域定義データを使用して、どの変換テーブルアドレス記憶回路にアクセスするかを決定するわけではない。いくつかの実装形態では、ターゲット仮想アドレスが少なくとも1つの保護領域ケース内にあるかどうかに基づく変換テーブルアドレスの選択は、ドメインのサブセットに対してのみ行われてもよく、サブセット内にない他のドメインに対しては行われなくてもよい。したがって、処理回路が第1のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるかどうかに応じて、第1の変換テーブル構造及び第2の変換テーブル構造のうちの1つからのアドレス変換データを使用して、ターゲット仮想アドレスを変換してもよい。一方、処理回路が第2のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域中にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、ターゲット仮想アドレスを変換してもよい。
【0016】
場合によっては、処理回路が第2のドメインにあるとき、アドレス変換回路は、第2の変換テーブルアドレス記憶回路、すなわち、保護領域外の仮想アドレスを変換するために変換テーブルアドレスが第1のドメインで取得されるのと同じ記憶装置、から変換テーブルアドレスを取得してもよい。この手法では、第1のドメインから保護領域外のアドレスへのアクセスは、定義上、第2のドメインで使用されるものと同じ変換テーブルを使用し、これにより、第1のドメインコードが保護領域外のアドレスに関連付けられた第2のドメインの変換テーブル構造の部分を単に再利用できるため、第1のドメインのコードによって維持される必要がある変換テーブルデータの量が低減される。
【0017】
しかしながら、別の手法は、処理回路が第2のドメインにあるときに、アドレス変換回路が、少なくとも1つの保護領域外へのアクセスのために第1のドメイン内で使用される第2の変換テーブルアドレス記憶回路とは異なり得る、更なる変換テーブルアドレス記憶回路から変換テーブルアドレスを取得することができるように、更なる変換テーブルアドレスを格納するために更なる変換テーブルアドレス記憶回路を設けることができることであり得る。この手法は、保護領域内のアクセスのために第2のドメイン内のコードと同じ変換テーブル構造にアクセスする第1のドメイン内のコードを依然としてサポートすることができるが、これは、第2の変換テーブルアドレス記憶回路内のアドレスが更なる変換テーブルアドレス記憶回路内のアドレスと等しく設定されることを必要とする。これは、アドレスを設定するために記憶回路ならびにハードウェア及びソフトウェア命令に関していくつかの追加のオーバーヘッドを必要とし得るが、この手法は、第1のドメイン内のコードが、保護領域外へのそのアクセスが第2のドメイン内のコードと同じ変換テーブル構造を再利用すべきかどうか、又はその代わりにそのアドレス変換データのための完全に異なる構造にアクセスすべきかどうかを選択することができる追加の柔軟性を提供する。
【0018】
例外処理回路は、例外の処理を制御するために設けられてもよく、例外は様々な原因によって発生する可能性があり、例えば、所与の仮想アドレスへのメモリアクセスが要求され、そのアドレスに対して定義された有効な変換テーブルデータがない場合、又はそのアドレスの変換テーブルデータがアクセスが許可されないことを指定する場合、アドレス障害が発生する可能性がある。例外は、外部割り込み、未定義命令などの他の原因によっても発生する可能性がある。例外が発生すると、一部の形態の例外は、例えば、その仮想アドレスにアクセスして命令をフェッチするとき、又はメモリからデータにアクセスするときにアドレス障害が発生したため、又はその仮想アドレスに関連付けられた命令を処理するときに例外が発生したため、特定の仮想アドレスに起因する可能性がある。
【0019】
所与の仮想アドレスに関連付けられた少なくとも1つのタイプの例外について、例外処理回路は、例外が少なくとも1つの保護領域内又は外の仮想アドレスに関連付けられているかどうかに応じて、第1の例外処理アクションを実行するか第2の例外処理アクション(第1の例外処理アクションとは異なる)を実行するかを選択することができる。すべてのタイプの例外に対してこの判定を行う必要はないが、少なくともいくつかのタイプでは、所与の仮想アドレスが少なくとも1つの保護領域内にある場合、所与の仮想アドレスが少なくとも1つの保護領域外にある場合と比較して、例外の異なる処理をトリガすることが有用であり得る。これにより、例外を処理するための例外ハンドラは、例外が保護されたコード領域内の保護されたコードに関連付けられたか、保護領域外の保護されていないコードに関連付けられたかに応じて異なる応答を取ることができる。
【0020】
一例では、例外処理回路は、所与の仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかに基づいて、例外を第1のドメインで処理すべきか第2のドメインで処理すべきかを判定することができる。第1/第2の例外処理アクションは、それぞれ第1/第2のドメインで処理される例外のトリガであり得る。
【0021】
別の選択肢は、第1の例外処理アクションは、例外が少なくとも1つの保護領域内の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含み、第2の例外処理アクションは、例外が少なくとも1つの保護領域外の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含むことであり得る。シンドローム情報は、例外の原因に関する情報を示す例外ハンドラによってアクセス可能な情報であってもよい。シンドローム情報は、例外をどのように処理するかを決定するために例外ハンドラによって参照され得る。この手法では、第1のドメインでの処理中に少なくとも1つのタイプの例外が発生した場合、例外が少なくとも1つの保護領域内又は外の仮想アドレスに関連付けられているかどうかにかかわらず、第1のドメインで例外を取得することができるが、第1のドメインで実行する例外ハンドラは、シンドローム情報を使用して、例外自体の原因に対処するか、又は第2のドメインで処理するために例外を転送するかを決定することができる。
【0022】
いずれの方法でも、これらの機能により、例外処理回路は、例外が少なくとも1つの保護領域内又は外のアドレスに関連付けられているかどうかに応じて、異なるドメインで例外を直接的又は間接的に処理することができる。これは、所与の仮想アドレスへのアクセスが、そのアクセスについてルックアップされた変換テーブル構造で定義された有効な変換テーブルデータがないこと、又は有効な変換テーブルデータがある間に、変換テーブルデータがその特定の要求に対するアクセスを拒否するアクセス許可を指定することを発見した場合に生成されるアドレス障害例外に特に有用であり得る(例えば、それはメモリの読み出し専用領域への書き込みアクセスであるため、又は要求を発行するときの処理回路のドメイン若しくは他の動作状態がその仮想アドレスへのアクセスを許可されていないと示されるためである)。上述したように、第1のドメインにあるときに保護領域内及び外で使用するための別々の変換テーブルアドレス記憶装置を提供する1つのユースケースは、これにより、第2のドメインに関連付けられた変換テーブル構造が保護領域外のアクセスに再利用されることを可能にすることができることであり得る。したがって、アドレス障害の場合、保護領域外へのアクセスを行うときに発生する例外は、(例えば、第2のドメインのコードによって使用される変換テーブル構造を定義する第2のドメインで実行されるオペレーティングシステム又はハイパーバイザに関連付けられる)第2のドメインで処理される例外ハンドラに(例外処理回路によって直接的に、又は第1のドメインで実行される例外ハンドラを介して間接的に)向けられることが好ましい場合があるが、保護領域内の領域にアクセスするときに第1のドメインで発生するアドレス障害は、代わりに、第1の変換テーブルアドレスレジスタ内のアドレスによって識別される別個の変換テーブル構造を管理し得る第1のドメインによって処理され得る。
【0023】
一方、少なくとも1つのタイプの例外について、それが第2のドメインでの処理中に発生した場合、仮想アドレスが保護領域内にあるか外にあるかにかかわらず、例外は第2のドメインで処理され得、シンドローム情報は、仮想アドレスが保護領域内にあるか外にあるかを区別し得ない。したがって、例外をどのように処理するかの決定は、所与の仮想アドレスと、第2のドメインではなく第1のドメインの保護領域定義データとの比較に依存し得る。アドレス障害の一例が上記に与えられているが、例外が第1のドメイン又は第2のドメインで処理されるかどうかを制御するこの技術は、特定の仮想アドレスに起因する他のタイプの例外に対しても実行することができる。
【0024】
一例では、上述の第1の/第2の/更なる変換テーブルアドレス記憶回路は、対応する変換テーブルアドレスを格納するための第1の/第2の/更なるレジスタであってもよい。
【0025】
これらのレジスタのいずれか1つに格納された変換テーブルアドレスは、変換テーブルのベースアドレスであってもよく、ターゲット仮想アドレスを変換するために使用されるその変換テーブルのエントリのアドレスは、ベースアドレスとターゲット仮想アドレスの一部から導出されたオフセットとを加算することによって取得されてもよい。
【0026】
変換テーブル構造は、変換テーブルアドレス記憶回路に格納されたアドレスを使用して識別されたアドレスにあるメモリに格納されたデータを含む。例えば、変換テーブル構造は、変換テーブルアドレス記憶装置内のアドレスが第1レベルの変換テーブルのアドレスを識別するマルチレベル変換テーブル構造であり得る。ターゲット仮想アドレスの一部は、第1レベルの変換テーブル内の特定のエントリのアドレスを選択するために使用されるオフセットを提供し、そのエントリは、ツリーの次のレベルの更なる変換テーブルのアドレスを識別するために使用することができ、そこからターゲット仮想アドレスの別の部分に基づいて更なるエントリを選択することができ、最終的にターゲット仮想アドレスに対応するマッピングされた中間アドレス又は物理アドレスを提供するリーフ変換エントリが変換テーブルの最終レベル内で取得されるまで同様である。
【0027】
変換テーブルウォークを実行してそれらのレベルの変換テーブル構造のすべてをステップスルーすることは低速であり得るので、いくつかのシステムは、1つ又は変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするためのバッファエントリを含む少なくとも1つの変換ルックアサイドバッファ(TLB)を提供することができる。例えば、バッファエントリは、以前の変換テーブルウォークで識別された変換テーブルエントリをキャッシュすることができ、あるいは、それらの変換テーブルエントリから導出された情報をキャッシュすることができる(例えば、エントリは、マルチレベルページテーブルウォークが実行されるときにそのマッピングを識別するために使用される個別の変換テーブルエントリの各々を格納する代わりに、ルックアップされた仮想アドレスを中間アドレス又は物理アドレスに直接マッピングすることができる)。
【0028】
場合によっては、TLBはドメイン間で共有することができるため、各バッファエントリを処理回路のドメインのうちの対応する1つを識別するドメイン識別子と関連付けることが有用であり得、その結果、仮想アドレスに基づくTLBへのルックアップは、TLBが仮想アドレス及び処理の現在のドメインと一致するエントリを含むときにTLB内でヒットし、現在のドメインとは異なるドメインに関連付けられたエントリにヒットしない。
【0029】
処理回路は、コマンドによって指定された少なくとも1つの無効化基準が満たされる特定のバッファエントリをTLBが無効化することを要求するために使用できる変換無効化コマンドを発行する必要がある場合がある。これらのコマンドは、例えば、処理回路が変換テーブル構造の1つ内のページテーブルデータを変更したときに発行されて、TLBが古い情報をキャッシュし続けないようにすることができる。特定のドメインから発行された変換無効化コマンドは、そのドメインのドメイン識別子を指定するキャッシュされた変換テーブルエントリの無効化のみをトリガすべきであると期待することができる。しかしながら、上述したように、上述した技術(第1のドメインは、第2の変換テーブルアドレス記憶回路を使用して参照される変換テーブル構造にオーバーレイされた保護領域のための独自の変換テーブル構造を有することができる)は、第1のドメインに関連付けられたコードが第2のドメインのコードによって管理される変換構造で定義された変換データを再利用することを可能にするのに有用であり得る。これは、第2のドメインから変換無効化コマンドが発行されたときに、第2のドメインコードによって変更された変換データも第1のドメインによって使用され、第1のドメインを識別するドメイン識別子に関連付けられたTLBにキャッシュされる可能性があることを意味する。したがって、第2のドメインにあるときに発行された変換無効化コマンドに応答して、TLBは、それらが第1のドメイン又は第2のドメインを識別するドメイン識別子に関連付けられているかどうかにかかわらず、指定された無効化基準を満たすバッファエントリを無効化することができる。
【0030】
上述の技法は、少なくとも処理回路の現在のドメインに基づいて、アドレス変換回路が、現在のドメインに基づいて選択された2つ以上の異なる物理アドレス空間のうちの1つにおいて、ターゲット仮想アドレスをターゲット物理アドレスに変換する実装に特に有用であり得る。
【0031】
いくつかの処理システムでは、すべての仮想アドレスは、アクセスされるメモリ内の位置を識別するためにメモリシステムによって使用される単一の物理アドレス空間上にアドレス変換回路によってマッピングされ得る。そのようなシステムでは、特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかの制御は、アドレス変換マッピングを提供するために使用される変換テーブル構造にのみ基づいて提供され得る。しかしながら、そのようなページテーブル構造は、通常、オペレーティングシステム及び/又はハイパーバイザによって定義され得る。オペレーティングシステム又はハイパーバイザが不正アクセスされると、機微データ又はコードに攻撃者がアクセス可能となり得る機密漏洩を引き起こす可能性がある。
【0032】
したがって、他のプロセスからの分離で安全に実行するための特定のプロセスに対する要望をサポートするために、システムは、いくつかのドメイン内の動作をサポートすることができ、いくつかの別個の物理アドレス空間がサポートされ得る。メモリシステムの少なくともいくつかの構成要素については、仮想アドレスが異なる物理アドレス空間内の物理アドレスに変換されるメモリアクセス要求は、例えそれぞれの物理アドレス空間内の物理アドレスが実際にはメモリシステム位置に対応する場合であっても、あたかも、メモリ内の全く別のアドレスにアクセスしているかのように扱われる。いくつかのメモリシステム構成要素によって見られるように、処理回路の異なる動作ドメインからのそれぞれ別個の物理アドレス空間へのアクセスを隔離することにより、オペレーティングシステム又はハイパーバイザが設定したページテーブル許可情報に依存しない、より強いセキュリティ保証を提供することができる。
【0033】
通常、異なるドメインにアクセス可能な別個の物理アドレス空間をサポートするシステムでは、各ドメインが変換テーブルデータの完全に別個のセット(ページテーブル構造)に関連付けられるべきであると期待する。しかしながら、一般的に1つのドメインで実行されるアプリケーションに対して、追加のセキュリティを提供するために異なる物理アドレス空間を使用して別のドメインで動作するそのアプリケーションの特定の部分を提供することがますます望まれている。そのようなユースケースでは、第1/第2の変換テーブルアドレス記憶回路を使用して上述した技術は、異なる物理アドレス空間内の物理アドレスに格納され得る変換テーブル構造間の同期の必要性を低減するので、異なるドメインの別個の物理アドレス空間で動作するサンドボックス化された構成要素の開発を簡略化するのに特に有用であり得る。
【0034】
より詳細には、上述の第1及び第2のドメインは、それぞれ第1及び第2の物理アドレス空間に関連付けられる。第1の物理アドレス空間は、第1のドメインからアクセス可能であり、第2のドメインからアクセス不可能であり得る。第2の物理アドレス空間は、第1及び第2のドメインの両方からアクセス可能であり得る。したがって、第1のドメインは、両方のドメインの物理アドレス空間にアクセスできるよりセキュアなドメインであり、第2のドメインは、第1のドメインの物理アドレス空間にアクセスできない。したがって、ページテーブルウォークで使用するために第1/第2の変換テーブルアドレス間で選択することができるのは、それぞれの物理アドレス空間に対するより大きなアクセス権を有する第1のドメインである。これは、第1のドメインが第2のドメインに関連付けられた変換テーブルを再利用することが適切であり得るが、第2のドメインによる第1のドメインの変換テーブルの再利用は適切ではない可能性があることを認識する。
【0035】
いくつかのシステムは、追加のドメインならびに上述の第1及び第2のドメインをサポートすることができ、例えば、それに関連付けられた第3の物理アドレス空間を有する第3のドメインが存在することができる。第3の物理アドレス空間は、第3のドメインからアクセス可能であるが、第1のドメイン及び第2のドメインからアクセス不可能であり得る。例えば、第3のドメインは、第1のドメインと第2のドメインとの間の切り替えを管理する役割を担うルートドメインであり得る。あるいは、第3のドメインは、第1のドメインと同様に、第2のドメインにアクセスできない第3の物理アドレス空間を有するが、第1の物理アドレス空間は第3のドメインにアクセスできず、第3の物理アドレス空間は第1のドメインにアクセスできない、第1のドメインに直交する追加のドメインであってもよく、その結果、両方とも第2のドメインよりも安全であるが、互いのコードを信頼する必要がない2つの別個の処理環境を提供する。
【0036】
第3のドメインの特定の形態にかかわらず、処理回路が第3のドメインにあるとき、アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、ターゲット仮想アドレスを変換してもよい。例えば、第3の変換テーブルアドレスを格納するために第3の変換テーブルアドレス記憶回路が設けられてもよく、処理回路が第3のドメインにあるとき、処理回路は、その第3の変換テーブルアドレス記憶回路からその変換テーブルアドレスを取得してもよい。
【0037】
あるいは、第3のドメインにある場合、第1及び第2の変換テーブルアドレス記憶回路のうちの1つを使用して変換テーブルアドレスを提供することができる(ただし、その記憶装置に格納されたアドレスは、第3のドメインが依然として異なる変換テーブル構造を参照することができるように、ドメインの切り替えで変更することができる)。
【0038】
したがって、ターゲット仮想アドレスが保護領域内にあるかどうかに基づいて、どの変換テーブルアドレスを使用するかを選択する上記のメカニズムをすべてのドメインが使用することは必須ではない。
【0039】
いくつかの実施態様では、保護領域定義データ記憶回路は、単一の保護領域を定義する領域定義データを格納するように構成され得る。他の手法は、2つ以上の不連続な保護領域を示すことが可能なフォーマットを有する領域定義データをサポートし得る。各保護領域について、領域定義データは、例えば、保護アドレス領域のベースアドレスと、保護アドレス領域のサイズとを指定し得る。サイズは、ベースアドレスに対する保護アドレス領域の終端アドレスのオフセットを表すサイズ値を指定することによって、又は終端アドレスを明示的に絶対アドレスとして指定することによって識別することができる。
【0040】
上述したように、いくつかのシステムは、ターゲット仮想アドレスからターゲット中間アドレスへのマッピングを指定する第1ステージ変換テーブル構造と、ターゲット中間アドレスからターゲット物理アドレスへのマッピングを指定する第2ステージ変換テーブル構造とに基づいて、2ステージアドレス変換を実行することが可能である。第1ステージ変換テーブル構造にどの変換テーブルアドレスを使用するかを選択するために(少なくとも上記のように第1のドメインにある場合)、アドレス変換回路は、ターゲット仮想アドレスが保護領域内にあるかどうかに基づいて第1/第2の変換テーブル構造を選択することができる。したがって、第1/第2の変換テーブルアドレス記憶回路は、第1ステージ変換テーブル構造として選択可能な変換テーブル構造を識別するために使用される第1ステージのテーブルアドレスを格納することができる。アドレス変換回路は、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の変換テーブルアドレス記憶回路及び第2の変換テーブルアドレス記憶回路のうちの1つから、第1ステージ変換テーブル構造を識別する第1ステージ変換テーブルアドレスを取得してもよい。
【0041】
同様に、第2ステージ変換テーブル構造の選択は、(少なくとも上述したように第1のドメインでの処理時に)ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかに依存し得る。したがって、第2ステージ変換テーブル構造を識別する第2ステージ変換テーブルアドレスは、ターゲット仮想アドレスが少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の2ステージ変換テーブルアドレス記憶回路及び第2の2ステージ変換テーブルアドレス記憶回路のうちの1つから取得され得る。第1/第2の第2ステージ変換テーブルアドレス記憶回路は、例えば、上述のように第1/第2の(第1ステージの)変換テーブルアドレス記憶回路に使用されるレジスタに加えて設けられる更なるレジスタを備えてもよい。
【0042】
上述の技術は、上述のように第1/第2のアドレス記憶回路(そして、提供される場合、第3の/更なるアドレス記憶回路)、領域定義データ記憶回路、及びアドレス変換回路を提供するハードウェア回路を有するデータ処理装置内で実施することができる。
【0043】
しかしながら、同じ技術はまた、ターゲットコードの実行のための命令実行環境を提供するためにホストデータ処理装置上で実行されるコンピュータプログラム内で実施することができる。そのようなコンピュータプログラムは、ホストデータ処理装置自体がそのアーキテクチャをサポートしていなくても、特定の命令セットアーキテクチャに従ってターゲットコードを実際にサポートするハードウェア装置上に提供されるアーキテクチャ環境をシミュレートするようにホストデータ処理装置を制御することができる。したがって、コンピュータプログラムは、上述したアドレス変換回路の動作をエミュレートする、ターゲット仮想アドレスからターゲット物理アドレスへのアドレス変換をサポートするアドレス変換プログラムロジックを備えることができる。また、第1及び第2の変換テーブルアドレス及び領域定義データを格納するためのハードウェア記憶装置を提供する代わりに、コンピュータプログラムは、ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持する状態エミュレートロジックを有することができ、その状態情報は、第1及び第2の変換テーブルアドレス及び領域定義データを指定する。ターゲットコード内のメモリアクセス命令に応答して、アドレス変換プログラムロジックは、ターゲット仮想アドレスが保護領域内にあるかどうかに応じて、前述したアドレス変換回路の機能と同様に、第1又は第2の変換テーブルアドレスによって識別される第1又は第2の変換テーブル構造のいずれかに基づいてターゲット仮想アドレスを変換することができる。
【0044】
シミュレーションコンピュータプログラムの場合、アドレス変換プログラムロジックは、(ターゲット命令セットアーキテクチャに従って定義された変換テーブル構造の観点から)メモリ内の物理位置を参照すると予想されるシミュレートされたターゲット物理アドレスにターゲット仮想アドレスを変換することができるが、ターゲットコードがシミュレーションプログラムによって提供される命令実行環境によって実行されている場合、変換されたアドレスは、実際には、シミュレータプログラムを実行するホストプロセッサのホスト仮想アドレス空間内の仮想アドレス空間の部分にシミュレーションによってマッピングされたシミュレートされた物理アドレスを表す。
【0045】
そのようなシミュレーションプログラムは、例えば、1つの命令セットアーキテクチャに対して書き込まれたレガシーコードが、異なる命令セットアーキテクチャをサポートするホストプロセス上で実行されている場合に有用である。また、シミュレーション実行環境上でソフトウェアを実行することにより、新しいアーキテクチャをサポートするハードウェアの進行中の開発と並行してソフトウェアのテストを可能にすることができるため、シミュレーションは、新しいアーキテクチャバージョンをサポートするハードウェアを処理する前に、命令セットアーキテクチャの新しいバージョンのソフトウェア開発を開始することを可能にすることができる。
【0046】
シミュレーションプログラムは、非一時的な記憶媒体であってもよい記憶媒体に格納されてもよい。
【0047】
実施例の説明
図1は、少なくとも1つのリクエスタデバイス4及び少なくとも1つのコンプリータデバイス6を有するデータ処理システム2の例を概略的に示す。インターコネクト8は、リクエスタデバイス4とコンプリータデバイス6との間の通信を提供する。リクエスタデバイスは、特定のアドレス指定可能なメモリシステム位置へのメモリアクセスを要求するメモリアクセス要求を発行することができる。コンプリータデバイス6は、それに向けられたメモリアクセス要求を処理する責任を有するデバイスである。
図1には示されていないが、いくつかのデバイスは、リクエスタデバイスとコンプリータデバイスとしての両方として機能できる場合がある。リクエスタデバイス4は、例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)又はバスマスターデバイス、ネットワークインターフェースコントローラ、ディスプレイコントローラなどの他のマスターデバイスなどの処理要素を含み得る。コンプリータデバイスは、対応するメモリ記憶ユニットへのアクセス制御を担うメモリコントローラ、周辺デバイスへのアクセスを制御するための周辺コントローラなどを含む。
図1は、リクエスタデバイス4の1つの構成例をより詳細に示すが、他のリクエスタデバイス4も同様の構成を有し得ることを理解されたい。あるいは、他のリクエスタデバイスは、
図1の左側に示されるリクエスタデバイス4と異なる構成を有し得る。
【0048】
リクエスタデバイス4は、レジスタ12に記憶されたデータを参照して、命令に応答するデータ処理を実行するための処理回路10を有する。レジスタ12は、オペランド及び処理された命令の結果を記憶するための汎用レジスタだけでなく、処理回路によって処理がどのように実行されるかを構成するための制御データを記憶するための制御レジスタを含み得る。例えば、制御データは、どの動作領域が現在の領域であるかを選択するために使用される現在の領域指示14と、どの例外レベルが処理回路10が動作している現在の例外レベルであるかを示す現在の例外レベル指示15とを含み得る。
【0049】
処理回路10は、アクセスされるべきアドレス可能な位置を識別する仮想アドレス(VA)と、現在の領域を識別するドメイン識別子(領域ID又は「セキュリティ状態」)とを指定するメモリアクセス要求を発行することが可能であり得る。アドレス変換回路16(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)18は、アドレス変換が必要な都度ページテーブル情報がメモリからフェッチされる必要がある場合よりもより速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路16はまた、物理アドレスと関連付けられたいくつかの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)識別子を出力する。PASの選択については、以下でより詳細に論じる。
【0050】
PASフィルタ20は、変換された物理アドレス及びPAS識別子に基づいて、その物理アドレスがPAS識別子によって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタフィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル構造に格納されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB18内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ22内にキャッシュされ得る。
図1の例では、グラニュール保護情報キャッシュ22は、TLB18とは別々の構造として示されているが、他の例では、これらのタイプのルックアップキャッシュを単一ルックアップキャッシュ構造として組み合わせることができ、その結果、組み合わされた構造のエントリの単一ルックアップは、ページテーブル情報及びグラニュール保護情報の両方を提供する。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ24及び/又はインターコネクト8に対して発行されることを進めることを可能とするかどうかをPASフィルタ20が判定する情報を定義する。メモリアクセス要求に対する指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ20は、トランザクションをブロックし、フォールトをシグナリングすることができる。
【0051】
図1は、システムが複数のリクエスタデバイス4を有する状態の例を示しているが、
図1の左側の1つの要求デバイスに示される特徴は、シングルコアプロセッサなど1つのリクエスタデバイスのみが存在するシステムにも含まれ得る。
【0052】
図1は、所与の要求に対するPASの選択がアドレス変換回路16によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報をPAと共にアドレス変換回路16によってPASフィルタ20に対して出力することができ、PASフィルタ20は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
【0053】
PASフィルタ20の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつかの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシー実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的位置を指す場合でも、あたかも全く別のメモリシステム位置を識別する別のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
【0054】
図2は、処理回路10が動作することができる異なる動作状態及び領域の例、ならびに異なる例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
【0055】
処理回路10は、いくつかの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に最高特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に最高特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、後述するように、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
【0056】
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに対して受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況においては、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベルを含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
【0057】
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、レスセキュア領域86、及びレルム領域88を含むいくつかの動作領域をサポートする。参照を容易にするために、レスセキュア領域は、「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路10が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ14に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
【0058】
起動時に、いくつかのブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高度の特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えば、ルート領域と関連付けられ得、OEMブートコードは、セキュア領域で動作し得る。しかしながら、システムがブートされると、実行中、処理回路10は、一度に領域82、84、86、及び88のうちの1つで動作すると見なされ得る。領域82~88の各々はそれ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
【0059】
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
【0060】
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードがセキュア領域84と関連付けられたリソースにアクセスできない一方で、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできるという意味では同等でない。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2はセキュア分割がサポートされる場合、2ページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
【0061】
システムをセキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理が別のハードウェアプロセッサ上で行われる必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、いまや、広範囲の異なるソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をセキュア領域内でサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供される集積回路を携帯電話などの電子デバイスに組み立てる相手先商標製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、多数の異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
【0062】
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機微性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュアな処理を必要としているそのようなユーザ提供アプリケーションのためにセキュア領域84を使用可能であるが、実際上、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダの両方に対して問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、それらのコードに対する潜在的な攻撃の攻撃対象領域が、セキュア領域内に恣意的なユーザ提供コードが追加されることにより増加する。これは望ましくないことであり得、したがってユーザがセキュア領域84にコードを追加可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明がユーザ提供コードが処理を実行する前提条件として必要とされる場合、セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードのすべてを監査し証明することは困難であり得、セキュア領域84で動作する異なるコードのプロバイダのすべてに、自らのデータ又はコードへのアクセスを任せることに否定的であり得る。これは、第三者がよりセキュアなサービスを提供する機会を制限し得る。
【0063】
したがって、
図2に示すように、レルム領域と呼ばれる追加の領域88が提供され、セキュア領域24で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供するために、ユーザが導入したそのようなコードによって使用され得る。レルム領域では、実行されるソフトウェアは、いくつかのレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する異なる構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
【0064】
レルム領域88は、それに割り当てられた独自の物理アドレス空間をセキュア領域84と同様に有するが、レルム領域及びセキュア領域88、84が非セキュア領域86に関連付けられた非セキュアPASに各々アクセスできる一方で、レルム領域88とセキュア領域84とは相互の物理アドレス空間にアクセスできないという意味でレルム領域はセキュア領域84に直交している。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼すればよく、これは、証明と保証がより実行可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機微性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
【0065】
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86内で実行されていたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードは非セキュア領域86で動作する他のコードによってアクセスできないため、これらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、彼らのデバイス上でコードが実行されているとき、初めから本質的に信頼される必要があり得、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
【0066】
これは、例えば、様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネット・オブ・シングスのためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
【0067】
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又は実行中に、ファームウェアの画像と構成、例えば、モニタコードの画像と構成、又はRMMコードの画像と構成の測定が行われる。実行中にはレルムのコンテンツと構成が測定され、それによって、レルムオーナーが関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行うことができる。
【0068】
図2に示すように、領域の切り替えを管理する別のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、リソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有しレルム領域88を有しないシステムであってもより堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって最終的なデバイスへの依存関係なしに開発し、保証し、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するオペレーティングシステム32によって制御され得、一方、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
【0069】
図3は、これらの技術をサポートするための処理システム2の別の例を概略的に示す。
図1と同じである要素は、同じ参照番号で示されている。
図3は、アドレス変換回路16のより詳細を示し、ステージ1メモリ管理ユニット50、及びステージ2メモリ管理ユニット52を含む。ステージ1MMU50は、仮想アドレスから物理アドレスへ(変換がEL2又はEL3コードによってトリガされる場合)又は中間アドレスへ(ステージ2MMU52による更なるステージ2変換が必要である動作状態で、変換がEL0又はEL1コードによってトリガされる場合)のいずれかの変換に関与し得る。ステージ2MMUは、中間アドレスを物理アドレスに変換することができる。ステージ1MMUは、EL0又はEL1から開始される変換についてはオペレーティングシステムによって制御されるページテーブルに、EL2からの変換についてはハイパーバイザによって制御されるページテーブルに、又はEL3からの転換についてはモニタコード29によって制御されるページテーブルに基づくことができる。一方、ステージ2MMU52は、どの領域が使用されているかに応じてハイパーバイザ34、RMM46又はセキュア分割マネージャ14によって定義されるページテーブル構造に基づくことができる。変換をこのように2つの段階に分離することにより、オペレーティングシステムは、それらがシステム上で動作する唯一のオペレーティングシステムであるという仮定の下で、それら自体のための及びアプリケーションのためのアドレス変換を管理することが可能となり、一方、RMM46、ハイパーバイザ34、又はSPM40は、同じ領域内で実行される異なるオペレーティングシステム間の隔離を管理することができる。
【0070】
図3に示すように、アドレス変換回路16を使用するアドレス変換プロセスは、現在の例外レベル15及び現在の領域14(又はセキュリティ状態)と組み合わせて、特定の物理アドレス空間(PAS識別子又は「PAS TAG」によって識別される)のセクションが所与のメモリアクセス要求に応答してアクセスされることを可能にするセキュリティ属性54を返すことができる。物理アドレス及びPAS識別子は、前述のグラニュール保護情報を提供するグラニュール保護テーブル56内でルックアップすることができる。この例では、PASフィルタ20は、選択されたPASが要求された物理アドレスにアクセスできるかどうかを検証し、できる場合、トランザクションがメモリシステムのシステムファブリックの一部である任意のキャッシュ24又はインターコネクト8に渡されることができる、粒状(granular)メモリ保護ユニット(GMPU)として示されている。
【0071】
GMPU20は、別のアドレス空間にメモリを割り当てることを可能にしつつ、同時に、ハードウェアベースの強力な隔離保証を提供し、物理メモリをこれらのアドレス空間に割り当てる方法における空間的及び時間的柔軟性だけでなく、効率的な共有スキームを提供する。前述のように、システム内の実行ユニットは、「ルートワールド」と呼ばれ最高例外レベル(EL3)に位置する1実行状態(ルートワールド)が存在する仮想実行状態(領域又は「ワールド」)に論理的に分割され、ルートワールドはこれらのワールドへの物理メモリ割り当てを管理する。
【0072】
単一のシステム物理アドレス空間は、複数の「論理」又は「アーキテクチャ上の」物理アドレス空間(PAS)に仮想化され、そのような各PASは、独立したコヒーレンシー属性を有する直交アドレス空間である。システム物理アドレスは、PASタグでそれを拡張することによって、単一の「論理」物理アドレス空間にマッピングされる。
【0073】
所与のワールドは、論理物理アドレス空間のサブセットへのアクセスを許可される。これは、メモリ管理ユニット16の出力に取り付けることができるハードウェアフィルタ20によって実施される。
【0074】
ワールドは、アドレス変換に使用されるページテーブルの変換表記述子のフィールドを使用してアクセスのセキュリティ属性(PASタグ)を定義する。ハードウェアフィルタ20は、システム物理アドレス空間内の各ページに対してグラニュール保護情報(GPI)を定義するテーブル(グラニュール保護テーブル56、又はGPT)へのアクセスを有し、グラニュール保護情報は、それが関連付けられているPASTAG、及び(任意選択で)他のグラニュール保護属性を示す。
【0075】
ハードウェアフィルタ20は、グラニュールのGPIに対するワールドID及びセキュリティ属性をチェックして、アクセスが許可され得るか否かを決定し、このようにして、粒状メモリ保護ユニット(GMPU)を形成する。
【0076】
GPT56は、例えば、オンチップSRAM又はオフチップDRAMに存在することができる。オフチップに記憶された場合、GPT56は、GPT56のセキュリティを維持するために暗号化、完全性、及び鮮度のメカニズムを使用し得るオンチップメモリ保護エンジンによって完全性保護され得る。
【0077】
GMPU20を、コンプリータ側ではなく、システムのリクエスタ側(例えば、MMU出力上)に位置させることにより、インターコネクト8が、複数のDRAMポートにわたって継続してページをハッシング/ストライピングすることを許可しながら、ページ粒度でアクセス許可を割り当てることを可能にする。
【0078】
トランザクションは、物理的別名化ポイント60の点として定義される場所に到達するまで、システムファブリック24、8全体を通して伝播するため、PASTAGがタグ付けされたままである。これにより、スレーブ側フィルタリングと比較してセキュリティ保証を弱めることなく、フィルタをマスター側に配置することができる。トランザクションがシステム全体を通して伝播するにつれて、PAS TAGは、アドレス隔離のための詳細なセキュリティメカニズムとして使用することができる。例えば、キャッシュは、キャッシュ内のアドレスタグにPAS TAGを追加して、同じPAに対して誤ったPAS TAGを使用して行われるアクセスがキャッシュにヒットすることを防止し、それによってサイドチャネル抵抗を改善することができる。PAS TAGはまた、外部DRAMに書き込まれる前にデータを暗号化するメモリコントローラに取り付けられた保護エンジンのコンテキストセレクタとして使用することができる。
【0079】
物理的別名化ポイント(PoPA)は、PAS TAGが剥離され、アドレスが論理物理アドレスからシステム物理アドレスに戻るシステム内の位置である。PoPAは、物理DRAMへのアクセスが(PAS TAGを介して解決された暗号化コンテキストを使用して)行われる、システムのコンプリータ側でキャッシュの下方に位置することができる。あるいは、セキュリティの弱化という犠牲においてシステムの実装を簡素化するために、キャッシュの上方に位置してもよい。
【0080】
任意の時点で、ワールドは、1つのPASから別のPASにページを遷移させることを要求できる。要求は、モニタコード29に対してEL3で行われ、GPIの現在の状態を検査する。EL3は、特定の遷移のセットのみ(例えば、レルムPASからセキュアなPASでなく、非セキュアPASからセキュアなPAS)が発生することを可能にし得る。クリーンな遷移を提供するために、新しい命令「データを削除し物理的別名化ポイントまで無効化」がシステムによりサポートされ、EL3はページを新しいPASに遷移させる前にこれを提出できる。これにより、前のPASに関連付けられた任意の残留状態がPoPA60(よりもリクエスタ側に近い)の上流の任意のキャッシュからフラッシュされることが保証される。
【0081】
GMPU20をマスター側に取り付けることによって達成することができる別の特性は、ワールド間のメモリの効率的な共有である。物理的グラニュールへの共有アクセスを、他のワールドがそれにアクセスすることを防止しながら、Nワールドのサブセットに許可することが望ましい場合がある。これは、「限定的共有」語義(semantic)をグラニュール保護情報に追加すると共に、それが特定のPAS TAGを使用することを強制することによって達成することができる。一例として、GPIは、物理的グラニュールに、セキュアPAS84のPAS TAGがタグ付けされている間、「レルムワールド」88及び「セキュアワールド」84によってのみアクセスされ得ることを示すことができる。
【0082】
上記の特性の例は、特定の物理的グラニュールの可視性特性の急速な変化をもたらす。各ワールドに、そのワールドにのみアクセス可能な私的PASが割り当てられている場合を考える。特定のグラニュールに対し、ワールドは、それらのGPIを「排他的」から「非セキュアワールドと限定的共有」に変更することによって、PASの関連付けを変更することなく、任意の時点で非セキュアワールドに見えるように要求することができる。このようにして、コストのかかるキャッシュメンテナンス又はデータコピー操作を必要とせずに、そのグラニュールの可視性を高めることができる。
【0083】
図4は、それぞれの物理アドレス空間をハードウェアに設けられる物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
【0084】
物理アドレスがアドレス変換回路16によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路16はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路16の代わりに、アドレス変換回路(例えば、MMU)は、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された物理アドレス及び情報を出力することができ、次いで、この情報は、PASフィルタ又はGMPU20によって使用されて、PASを選択することができる。
【0085】
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路10がメモリアクセス要求を発行するときに動作する現在の領域に応じて限定され得る。
【0086】
【表1】
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
【0087】
したがって、PASフィルタ20がシステムファブリック24、8にメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
【0088】
物理的別名化(PoPA)ポイント60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲と見なされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PAS識別子は物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつかの別名化物理アドレス63の数にマッピングされ得るためである。これらの別名化物理アドレス63は、すべて実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシー管理を有する、異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシーサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
【0089】
システムは、(例えば、以下に論じられる
図14に示されるように)2つ以上のPoPA60を含み得る。各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化されたアドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステム位置を実際に識別するシステム物理アドレス空間64は、再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズである。例えば、PoPA60では、PAS識別子はアドレスから剥離され得、下流の構成要素については、アドレスはPASを指定することなく、単に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望される場合、PAS識別子は、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、異なる物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステム位置を指すように解釈されるであろう。しかし、供給されたPAS識別子がそれでもコンプリータ側セキュリティチェックを実行するために使用され得る。
【0090】
図5は、システム物理アドレス空間64を、グラニュール保護テーブル56を使用して、特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができる方法を示す。グラニュール保護テーブル(GPT)56は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT56は、特定のサイズの物理アドレスのグラニュール(例えば4Kページ)に各々対応するいくつかのエントリを含み得、そのグラニュールの割り当てられたPASを定義し得、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールはルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、そのページテーブル内に、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
【0091】
しかしながら、いくつかの実装では、GPTによって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域(例えば、通常は、その領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)を別のアドレス空間と共有されたものとしてマークすることができる。これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、
図5では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からアクセス不可能である。非セキュア領域26はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のそのデータのいくつかを非セキュア領域と一時的に共有することを望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT56を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を
図5の左側に示される非セキュアPASからもアクセス可能とし得る。レルム領域がそのアドレス空間の区域を非セキュア領域と共有されるものとして指し示す場合、非セキュア領域から発行され、その区域をターゲットとするメモリアクセス要求は、当初は非セキュアPASを指定し得るが、PASフィルタ20は要求のPAS識別子が代わりにレルムPASを指定するように再マッピングすることができる。それにより、下流のメモリシステム構成要素は、要求をあたかも初めからレルム領域から発行されたかのように扱う。この共有は、異なる領域を特定のメモリ区域に割り当てるための動作が、より高程度のキャッシュ/TLB無効化及び/又はメモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う、よりパフォーマンス集約的であり得るために、パフォーマンスを改善し得る。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
【0092】
図6は、アドレス変換回路16をより詳細に示す。アドレス変換回路16は、変換要求処理回路100、TLB制御回路102、及びページテーブルウォーク制御回路104を含む。アドレス変換回路16はまた、アドレス変換回路16内に設けられているものとして
図6に示されているが、他の実施形態では、汎用オペランドのために処理回路10によってアクセスされるレジスタバンク12内に設けることができるいくつかの変換制御レジスタ106にアクセスすることもできる。
【0093】
要求処理回路100は、変換されるターゲット仮想アドレス及び現在の動作ドメインを識別するドメインIDを指定する変換要求を処理回路10から受信する。変換要求に応答して、要求処理回路100は、TLB制御回路を制御してTLB18内でルックアップを実行し、TLBがターゲット仮想アドレス及び現在のドメインに対応するバッファエントリを含むかどうかを判定する。TLB内のバッファエントリは、TLBエントリがTLB18に割り当てられた時点で現在のドメインであったドメインを示す対応するドメイン識別子でタグ付けされてもよく、TLB内のルックアップは、あるドメインからのアクセスが、別のドメインに関連付けられた要求に応答してTLBに割り当てられた変換データにヒットするのを防ぐために、現在のドメインによって修飾されてもよい。要求がTLBでヒットすると、一致するTLBエントリは、ターゲット仮想アドレスを変換されたアドレスにマッピングするためのアドレスマッピングを返すことができる(同様に、前述したアクセス許可及び/又はPAS選択情報を返す)。要求処理回路100は、返された情報を使用して、メモリアクセスが許可されているかどうかを判定することができる。(アクセス許可に基づいて)メモリアクセスが許可されない場合、アドレス障害が発生し、メモリアクセスが実行されることが防止される。メモリアクセスが許可された場合、要求処理回路100は、変換されたアドレスを返す(
図1に示すシステムでは、変換されたアドレス(物理アドレス)をPASフィルタ20に転送して、グラニュール保護ルックアップ/PASフィルタリングステップを実行する)。
【0094】
TLBでのルックアップが失敗し、その結果、要求されたターゲット仮想アドレス及びドメイン識別子に対して対応するバッファエントリが見つからない場合、TLB制御回路102は、ページテーブルウォーク制御回路104を制御して、メモリに格納された変換テーブル構造(ページテーブル構造としても知られる)からの1つ以上のページテーブルエントリを要求するための1つ以上のページテーブルウォーク要求を発行する。
【0095】
図7に示すように、ページテーブル構造は、特定のターゲットアドレスのアドレスマッピングを識別するためにページテーブルウォーク動作でトラバースされ得る複数レベルのページテーブル120、122、124、126を使用して実装され得る。
図7に示すように、インデックスビットL0Iの所与のセットを使用して、メモリ内の位置がレベル0(L0)ベースアドレス121によって識別されるレベル0ページテーブル120にインデックスを付けることができる。以下でより詳細に説明するように、L0ベースアドレス121は、変換制御レジスタ106内の情報に基づいて選択される。L0テーブル120のインデックス付きエントリは、L1ページテーブル122のメモリ内の位置を識別するL1ベースアドレスを識別する。ターゲットアドレスからのインデックスビットL1Iの異なるサブセットは、L1ページテーブル122のエントリのうちの1つを選択し、次にL2ページテーブル124のメモリ位置を識別するL2ベースアドレスを識別する。L3ページテーブル124の位置を識別するL3ベースアドレスを識別するために、ターゲットアドレステーブルからのインデックスビットL2Iの別のサブセットがL2ページテーブル26にインデックス付けされる。次に、ターゲットアドレスのビットL3Iの更に別のサブセットは、ターゲットアドレスを物理アドレスなどの変換アドレスにマッピングするための実際のアドレスマッピングを提供する(ならびに任意の関連するアクセス許可及び/又はPAS選択情報を提供する)L3ページテーブル126の特定のエントリを選択する。したがって、L3ページテーブル126は、実際のアドレスマッピング情報を提供するリーフページテーブルエントリを提供する最終ページテーブルであり、上位レベルのページテーブル120、122、124は、次のレベルのページテーブルのベースアドレスを識別する中間エントリを提供する。
【0096】
4つのレベルのページテーブルを提供することは単なる一例であり、他のものは異なる数のレベルのページテーブルを使用することができることが理解されよう。また、アドレス空間のより大きなブロックが同じ変換マッピング及び他の情報を共有する場合、上位レベルのページテーブル120、122、124内のエントリのうちの1つは、それがアドレスマッピングを直接提供するリーフエントリであることを指定できるため、後続のレベルを更にステップスルーする必要はない(一方、同じ上位レベルのページテーブル120、122、124内の他のエントリは、下位レベルのページテーブルを指すベースアドレスを含む分岐エントリとして依然として機能することができる)。
【0097】
このようにページテーブルを異なるレベルに分割することにより、ページテーブル構造全体を格納するために必要なメモリストレージの総量を削減することができ、これは、マッピングされているアドレスサイズと同等のサイズを有するメモリの領域内の所与の量のアドレス空間を変換するためのアドレスマッピングを配置する必要がなく、アドレス空間の多くの場合、大きなチャンクが、オペレーティングシステム又はアドレス変換データを設定する他のプロセスによってまだ定義されたマッピングを有していないという事実を利用するためである。
図7は、インデックスビットL0I、L1Iなどが対応するページテーブルエントリを選択するためのインデックスとして直接使用される例を示しているが、インデックスはまた、インデックスビットに適用されたハッシュ関数の結果であってもよい。
【0098】
いくつかのシステムでは、TLB18は、ページテーブルの異なるレベルから変換エントリをキャッシュするための別個のキャッシュ構造を含むことができる。例えば、TLB18は、最終レベルのページテーブル126からのリーフエントリをキャッシュするためのメインTLB構造、ならびにページテーブル120、122、124からの上位レベルのページテーブルエントリをキャッシュするためのウォークキャッシュ構造を含むことができる。一方、他の実施形態は、共有キャッシュ構造を使用してページテーブルの複数のレベルからアドレス変換データをキャッシュするTLBを提供することができる。他の実施形態は、所与のVAに対応するアドレスマッピングを提供するためにルックアップされ得るリーフエントリのみをキャッシュすることができるが、上位レベルのページテーブル120、122、124からの分岐エントリを搬送しなくてもよい。これらの手法のいずれも使用することができる。
図6は単一のTLB18を示しているが、いくつかの実装形態は、容量をアクセス待ち時間とトレードオフするために、キャッシュ階層に複数レベルのTLBキャッシュ構造を含むことができる(例えば、高速アクセスのためにレベル0TLBに格納されるエントリの数がより少なく、レベル0TLBのミスの場合に、低速アクセスのためにレベル1TLBに格納されるエントリの数がより多い)。
【0099】
プロセッサ10のいくつかの動作状態では、アドレス変換プロセスはまた、複数段階のアドレス変換を含み得る(アドレス変換の1段階又は2段階が必要かどうかは、現在の例外レベル15及び/又はレジスタ12に設定された構成情報に依存し得る)。例えば、CPU4上で実行されるアプリケーション又はオペレーティングシステムによって実行される命令によってメモリ位置を識別するために使用されるVAは、ステージ1変換で中間物理アドレス(IPA)に変換され得る。ステージ1アドレス変換を制御するためのステージ1アドレス変換構造は、例えば、EL1で動作するオペレーティングシステム又は別のプロセスによって設定され得る。オペレーティングシステムの観点から、ステージ1のアドレス変換で生成されたIPAは、アクセスされている実際のメモリ位置の物理アドレスであると仮定することができる。しかしながら、仮想化をサポートし、同じデバイス上に共存する異なるオペレーティングシステムによって使用される同一のIPAが競合するのを防ぐために、EL2で動作するハイパーバイザ又は他のプロセスは、IPAとPAとの間の更なる第2ステージアドレス変換をメモリシステムに提供することができる。
図4及び
図5を参照して上述したように、これらのPAは、選択された物理アドレス空間内のPAであってもよく、いくつかの事前PoPAメモリシステム構成要素は、異なる物理アドレス空間内の同一のPA値を、それらが異なる物理位置を指すかのように扱うことができる。したがって、ステージ2アドレス変換を制御するために、EL2で動作するコードによって定義される第2ステージ変換テーブル構造が存在し得る。
【0100】
2つのステージのアドレス変換の各々は、
図7に示すように複数レベルのページテーブルを使用することができることに留意されたい。したがって、ターゲットVAによって識別されたアドレスの所与のブロックのアドレスマッピングを識別するためのフルページテーブルウォークは、ステージ1アドレス変換で使用されるページテーブルの各ベースアドレスが、ステージ1ページテーブルの対応するレベルにアクセスする前にステージ2アドレス変換を通過することを必要とする場合がある。すなわち、
図7に示すようにステージ1及びステージ2の両方のテーブルが4レベルのページテーブルを含む例では、フルページテーブルウォークプロセスは、以下の順序で複数レベルのページテーブルにアクセスすることを含むことができる。
・ステージ1レベル0ページテーブルのベースアドレス121のPAへのステージ2変換(ステージ1変換構造はEL1で動作するコードによって構成されるため、ステージ1レベル0ベースアドレスはIPAアドレスであり得る)。ステージ2変換は、4回のルックアップ(ステージ2、レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3)を含む。
・ステージ1レベル1ベースアドレス(IPA)を識別するためのターゲットVAのレベル0インデックス部分L0Iに基づくステージ1レベル0ルックアップ。
・ステージ1レベル1ベースアドレスのPA(再び、4回のルックアップを含む)へのステージ2変換。
・ステージ1レベル2ベースアドレス(IPA)を識別するためのターゲットVAのレベル1インデックス部分L1Iに基づくステージ1レベル1ルックアップ
・ステージ1レベル2ベースアドレスのPAへのステージ2変換(これも4回のルックアップを含む)
・ステージ1レベル3ベースアドレス(IPA)を識別するためのターゲットVAのレベル2インデックス部分L2Iに基づくステージ1レベル2ルックアップ。
・ステージ1レベル3ベースアドレスのPAへのステージ2変換(ここでも4回のルックアップを含む)。
・ターゲットVAに対応するターゲットIPAを識別するためのターゲット仮想アドレスのレベル3インデックス部分L3Iに基づくステージ1レベル3ルックアップ。
・元のターゲットVAに対応する変換アドレスとして返すことができるターゲットPAへのターゲットIPAのステージ2変換(再び、4回のルックアップを含む)。
【0101】
したがって、キャッシュなしでは、変換は合計24回のルックアップを含む。上記のシーケンスから分かるように、ページテーブルウォークプロセス全体の実行は、アドレス変換の各ステージのページテーブルの各レベルをステップスルーするためにメモリへの多数のアクセスを必要とする可能性があるため、非常に遅くなり得る。これが、最終レベルのアドレスマッピングだけでなく、TLB18内のステージ1及びステージ2のテーブルの上位レベルのページテーブルからのエントリからの情報もキャッシュすることがしばしば望ましい理由である。これにより、所与のターゲットアドレスの最終レベルのアドレスマッピングが現在アドレス変換キャッシュ内にない場合でも、フルページテーブルウォークの少なくともいくつかのステップをバイパスすることができる。
【0102】
2つのステージのアドレス変換をサポートするシステムでは、いくつかのTLB18は分割TLBとして実装されてもよく、ステージ1及びステージ2のページテーブル構造からの情報をそれぞれキャッシュするために別々のキャッシュ構造が提供される。この場合、VAを指定する変換要求を処理するために2つの別々のTLBルックアップが必要になる場合があり、ステージ1のTLBで対応するIPAを識別するための1回のルックアップと、ステージ2のTLBでそのIPAに対応するPAを識別するための1回のルックアップが必要になる。あるいは、2つのステージのアドレス変換を受けるアドレス要求のためのページテーブルウォーク動作は、最初にVAのIPAへのマッピングを識別し、次にIPAのPAへのマッピングを識別するためにステージ1及びステージ2のページテーブル構造の別々のルックアップを必要とするが、これが行われると、ステージ1及びステージ2の組み合わされたTLBは、VAをPAに直接マッピングするエントリで割り当てることができ、その結果、同じVAへの将来のアクセスで、2つの別々のルックアップを実行する必要なくPAをTLB18から読み出すことができる。
【0103】
変換制御レジスタ106は、ステージ1又はステージ2のページテーブル構造に対するレベル0ベースアドレス121の選択を制御するために使用される。変換制御レジスタ106は、保護アドレス領域(PAR)レジスタ130及びいくつかの変換テーブルベースレジスタ(TTBR)132、134、136、138、142、144、146、148を含む。
図6には示されていないが、変換制御レジスタ106はまた、例外レベルごとにバンク化され得る制御パラメータを提供するための他の制御レジスタを含むことができる。例えば、これらの他の制御パラメータは、変換又はページテーブルウォークがどのように実行されるかに影響する情報を定義することができ、例えば、アドレスサイズ又はページグラニュールサイズを定義することができる。
【0104】
PARレジスタ(保護領域定義データ記憶回路)130は、仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する。例えば、領域定義データは、(絶対終端アドレスを指定することによって、又はベースアドレスに対する終端アドレスの相対オフセットとしてサイズを指定することによって)保護領域のベースアドレス及び保護領域のサイズを指定することができる。いくつかのシステムは、複数の保護アドレス領域を示すために複数のPARレジスタ130をサポートすることができるが、簡潔にするために、以下の例は、1つの保護アドレス領域を参照してPARレジスタ130の使用を説明する。複数の保護アドレス領域が実施される場合、複数の保護アドレス領域に関連付けられた領域定義データのセットの各々に対して比較が実行される。
【0105】
TTBR132、134、136、138、142、144、146、148の各々は、対応するページテーブル構造にレベル0ページテーブルのベースアドレスを格納する。TTBR132、134、136、138、142、144、146、148は、ページテーブルウォークが必要なときにどのページテーブル構造が参照されるかを変更するためにソフトウェアによって更新することができる。
【0106】
現在のドメインが非セキュアドメインである場合、ステージ1アドレス変換に使用されるレベル0ベースアドレス121を格納するために、非セキュアステージ1 TTBR、S1_TTBR_N、132が提供される。同様に、非セキュアステージ2 TTBR、S2_TTBR_N、142は、現在のドメインが非セキュアドメインである場合にステージ2アドレス変換に使用されるレベル0ベースアドレス121を格納する。後述するように、TLB18内でミスしたアドレス要求のVAがPARレジスタ130によって定義された保護アドレス領域外にある場合、S1_TTBR_N132及びS2_TTBR_N142はレルムドメインによって参照することもできる。S1_TTBR_N132及びS2_TTBR_N142は両方とも、上記のような第2の変換テーブルアドレス記憶回路の例であり、又はS1_TTBR_R2 138若しくはS2_TTBR_R2 148が更なる変換テーブルアドレス記憶回路の例として提供される実施態様では)。S1_TTBR_N132は、ドメインのいずれかにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。S2_TTBR_N142は、ドメインのいずれかにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0107】
現在のドメインがレルムドメインであり、ターゲットVAがPARレジスタ130によって定義された保護アドレス領域内にある場合、ステージ1アドレス変換に使用されるレベル0ベースアドレス121を格納するために、レルムステージ1 TTBR、S1_TTBR_R、134(第1の変換テーブルアドレス記憶回路の一例)が提供される。S1_TTBR_R134は、レルムドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。同様に、現在のドメインがレルムドメインであり、ターゲットVAがPARレジスタ130によって定義された保護アドレス領域内にある場合、ステージ2アドレス変換に使用されるレベル0ベースアドレス121を格納するために、レルムステージ2 TTBR、S2_TTBR_R、144(第1の変換テーブルアドレス記憶回路、又は第1の第2ステージ変換テーブルアドレス記憶回路の一例でもある)が提供される。S2_TTBR_R144は、レルムドメイン又はルートドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0108】
任意選択的に、
図6では単一のレジスタに結合されて簡潔に示されているが、2つの別個のレジスタに分割することもできる追加のステージ1 TTBR136を、ルート及び/又はセキュアドメインに関連付けて提供することができる。S1_TTBR_Root及び/又はS1_TTBR_S136は、上述の第3の変換テーブルアドレス記憶回路の例である。S1_TTBR_Root及びS1_TTBR_S136のうちの関連するものは、ルートドメイン及びセキュアドメインのうちの対応する1つで動作するときに、ステージ1アドレス変換によってトリガされるページテーブルウォークを参照することができる。S1_TTBR_Rootは、ルートドメインからのみ読み書き可能である。S1_TTBR_S136は、セキュアドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であってもよい。同様に、S2_TTBR_Sとラベル付けされた、オプションの追加のステージ2 TTBR146を、セキュアドメインに関連付けて提供することができる(ルートドメインは1ステージのアドレス変換しか必要としないため、ルートドメインはステージ2 TTBRを必要としない)。したがって、S2_TTBR_S146は、セキュアドメインで動作するときに、ステージ2アドレス変換によってトリガされるページテーブルウォークのために参照することができる。S2_TTBR_S146は、セキュアドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であってもよい。
【0109】
あるいは、S1_TTBR_Root及び/又はS1_TTBR_S136は省略されてもよく、その場合、ルート及び/又はセキュアドメインのステージ1アドレス変換に使用されるTTBRは、代わりに、非セキュアドメインと共有されるS1_TTBR_N132レジスタとすることができる。同様に、S2_TTBR_S146は省略することができ、その場合、セキュアドメインのステージ2アドレス変換に使用されるTTBRは、代わりにS2_TTBR_N142とすることができる。この場合、ドメインを切り替える際に、ルートドメインコードは、S1_TTBR_N132又はS2_TTBR_N142の内容を更新して、入力されているドメインに応じてどのアドレス変換構造が参照されるかを変更することができる。
【0110】
また、場合によっては、いくつかの実装形態では、第2の変換テーブルアドレス記憶回路の代替例として、第2のレルムステージ1 TTBR138(S1_TTBR_R2)を提供することができ、及び/又は第2のレルムステージ2 TTBR148(S2_TTBR_R2)を提供することができる。これらのレジスタは、PAR130によって定義された保護アドレス領域外のアドレスへのレルムドメインアクセスのためのステージ1又はステージ2変換に使用する代替ベースアドレスを提供することができる。S1_TTBR_R2 138が提供される場合、それは、レルムドメイン又はルートドメインにおいてEL1以上で動作するソフトウェアによって読み書き可能であり得る。S2_TTBR_R2 148が提供される場合、それは、レルムドメイン又はルートドメインにおいてEL2以上で動作するソフトウェアによって読み書き可能であり得る。
【0111】
図8は、レルムドメインから発行された要求のアドレス変換を処理する方法を示す。ステップ150において、要求処理回路100は、メモリアクセス要求のターゲットVAに基づいて(及び現在のドメイン識別子に基づいて)TLB18内でルックアップを実行するようにTLB制御回路102を制御する。ステップ152において、TLB制御回路102は、TLBヒットが識別されたかどうかを判定する。ヒットは、TLB18が指定されたメモリアクセス要求及び現在のドメイン識別子に対応する有効なエントリを含む場合に識別される(レルムドメインは非セキュアドメインに関連付けられた変換テーブル構造を再利用することを許可され得るが、レルムドメインからのアクセスは、非セキュアドメイン識別子でタグ付けされたTLBエントリにヒットすると見なされ得る)。指定されたメモリアクセス要求に対応する有効なエントリがない場合、TLBミスが発生する。
【0112】
TLBミスが発生した場合、ステップ156において、ページテーブルウォーク制御回路104は、ターゲットVAと、PARレジスタ130に格納された領域定義データとを比較して、ターゲットVAが保護アドレス領域(PAR)内にあるかどうかを判定する。
【0113】
ターゲットVAがPARの外側にある場合、ステップ158において、ページテーブルウォーク制御回路104は、非セキュアドメインと共有される、S1_TTBR_N132から取得されたステージ1ページテーブル構造のレベル0ベースアドレス121を用いて、ページテーブルウォーク動作を開始する。ステージ2変換に必要な場合、ステージ2ページテーブル構造のレベル0ベースアドレス121は、S2_TTBR_N142から取得される。したがって、PAR外のVAの場合、非セキュアドメインから行われた要求によるそれらのVAへのアクセスに使用されるのと同じステージ1又はステージ2変換データが使用される。これは、非セキュアドメイン86内で実行されているアプリケーション30からの切り出しを表す、
図2に示すようなR0レルム42に特に有用である。切り出されたレルムエンクレーブ42は、そのコード及びセキュアデータをPAR内のVAに割り当てることができ、PARの外部のデータへのアクセスは、RMM46がOS32によって維持される非セキュアページテーブルとのレルムページテーブルの同期を管理しなければならないことを回避するために、非セキュアドメイン86によって使用されるのと同じアドレス変換データを共有することができる。
【0114】
一方、ステップ156で、ターゲットVAがPAR内にあると判定された場合、ステップ162で、ページテーブルウォーク制御回路104は、ページテーブルウォーク動作を開始し、ステージ1ページテーブル構造のレベル0ベースアドレス121は、S1_TTBR_R134から取得される。ステージ2変換が必要な場合、ステージ2レベル0ベースアドレスはS2_TTBR_R144から取得される。したがって、PAR内のアクセスは、非セキュアドメインによって使用されるものとは異なるページテーブル構造にアクセスし、その結果、特別なアクセス許可が、レルムドメイン88内のR0レルム42によって表されるセキュアエンクレーブに対して定義され得る。
【0115】
したがって、ステップ158及び162において、VA/IPAのオフセットビットと組み合わせてS1_TTBR_R134、S1_TTBR_N132、S2_TTBR_R144、又はS2_TTBR_N142から導出されたアドレスを指定するメモリ、又は以前のページテーブルウォークメモリアクセスによって識別されたページテーブルエントリに格納された更なるアドレスポインタから導出されたアドレスに対して、いくつかのページテーブルウォーク要求が発行される。なお、ページテーブルウォークメモリアクセス自体は、上述したようにPASフィルタによって実行されるPASフィルタリングチェックの対象となる。また、TLBがページテーブル構造の上位レベルエントリをキャッシュするための少なくとも1つのウォークキャッシュTLB構造を含むシステムでは、関連する上位レベルエントリがウォークキャッシュ構造にキャッシュされている場合、いくつかのステップがスキップされる可能性があるため、ステップ158及び162において、上記で概説したフルページテーブルウォーク動作を実行する必要はない場合がある。
【0116】
VAからPAへのマッピングを識別するために必要なステージ1及び/又はステージ2のエントリがメモリから取得されると、VAがPAR内にあったか否かにかかわらず、ステップ160において、取得された変換データをキャッシュするために1つ以上の新しいTLBエントリをTLB18に割り当てることができる。上述したように、TLBはいくつかの方法で実装することができるので、キャッシュされたデータの正確な形式は大幅に変化し得る。TLBエントリがレルムドメインアクセスに続いて割り当てられる場合、新しいTLBエントリは、それがS1/S2_TTBR_N(132又は142)又はS1/S2_TTBR_R(134又は144)を使用して識別された非セキュア又はレルムページテーブルから取得された情報を含むかどうかにかかわらず、レルムドメインを示すドメイン識別子タグを指定することができる。レルムドメインは、PARの外部のアドレスにアクセスするために同じ非セキュアドメインページテーブルを共有するが、そうでなければ非セキュアドメイン86内のコードがアクセスタイミング測定に基づいてTLBサイドチャネルを使用して、レルムドメインによってTLBに割り当てられたアドレスをプローブできるため、非セキュアドメインがR0レルム42内で動作するコードによってTLBに割り当てられたエントリにヒットすることは望ましくない場合があり、これにより、R0レルム42のセキュアアクティビティに関する情報が漏洩する可能性がある。
【0117】
また、ステップ160において、VAは、取得された変換データを使用してPAに変換され、変換応答で返される(又はPASフィルタ20へのPAS選択と共に提供される)。
【0118】
ステップ152でTLBヒットが識別された場合、ステップ164で、ターゲットVAは、TLBに以前に割り当てられたキャッシュアドレス変換データに基づいてPAに変換される。したがって、ターゲットVAは、ターゲットVAがPAR内にあるか否かに基づいて(ステージ1の場合)選択されたS1_TTBR_R134及びS1_TTBR_N132のうちの1つによって、又はターゲットVAがPAR内にあるか否かに基づいて(ステージ2の場合)選択されたS2_TTBR_R144及びS2_TTBR_N142のうちの1つによって識別された第1/第2の変換テーブル構造のうちの1つから以前に取得された変換データに基づいて変換される。しかしながら、ターゲットVA及びPARのこの比較は、TLBミスを処理するときにステップ156で行われたはずであるため、ステップ164で再び行う必要はない。なぜなら、アドレス変換マッピングを提供するエントリに対するTLBヒットでは、以前に取得された変換データをTLB18から単に読み出すことができ、PARレジスタ130又はTTBR132~148をチェックする必要がない可能性があるからである(ただし、分割ステージ1/ステージ2 TLB手法では、ステージ1 TLB及びステージ2 TLBにヒットがあるかどうかについてそれぞれ別々の判定が必要になる場合がある)。
【0119】
図9は、ルート、セキュアドメイン、又は非セキュアドメインからのアクセスのためのアドレス変換を制御する方法を示す。ステップ150及びステップ152は、TLB内のルックアップが、ルート、セキュアドメイン、又は非セキュアドメインのうちの関連するドメインを指定する現在のドメイン識別子に基づくことを除いて、
図8と同じである。TLBミスが検出された場合、ステップ170において、ステージ1又はステージ2のレベル0ページテーブルを識別するために使用するTTBRが現在のドメインに基づいて選択される。非セキュアドメイン内のステージ1変換には、S1_TTBR_N132が使用される。ルートドメイン又はセキュアドメインにおけるステージ1変換の場合、そのドメインの専用S1_TTBR136が実装されている場合、そのS1_TTBR136はレベル0ベースアドレスを提供するために使用されるが、別個のS1_TTBR136が実装されていない場合、S1_TTBR_Nが使用される。ステージ2変換のためのL0ベースアドレスは、現在のドメインが非セキュアドメインである場合にはS2_TTBR_N142から、現在のドメインがセキュアドメインである場合にはS2_TTBR_S146から取得される(又は、セキュアドメイン専用のS2_TTBR_S146が実装されていない場合、セキュアアクセスは、ステージ2変換のレベル0ベースアドレスを取得するためにS2_TTBR_N142レジスタを使用することができる。)。ルートドメインは、ステージ2変換を必要としない。
【0120】
ステップ172において、ステージ1アドレス変換データを取得するために、選択されたS1_TTBRから取得されたレベル0ベースアドレスに基づいてページテーブルウォーク動作が実行される。ステージ2変換が必要な場合、ステージ2アドレス変換データは、S2_TTBR_N142及びS2_TTBR_S146の一方から取得されたステージ2 L0ベースアドレスを介して導出されたアドレスへのアクセスに基づいて取得される。
【0121】
ステップ174において、
図8のステップ160と同様に、取得された変換データは現在のドメイン識別子によってタグ付けされたTLBにキャッシュされ、VAは取得された変換データを使用してPAに変換される。
【0122】
一方、ステップ152でTLBヒットが識別された場合、ステップ176で、
図8のステップ162と同様に、TLB18から読み出されたキャッシュアドレス変換データに基づいてVAが変換されるが、このとき、キャッシュアドレス変換データは、PARレジスタ130によって定義されたVAとPARとの間の比較とは無関係に選択された変換テーブル構造から以前に取得されたものである。
【0123】
図10は、通常の(非セキュア)ドメイン86及びレルムドメイン88から変換がどのように処理されるかを示している。非セキュアドメインアクセスの場合、レベル0ページテーブルを指すために使用されるTTBRは、ステージ1の場合はS1_TTBR_N132であり、ステージ2の場合はS2_TTBR_N142である(簡潔にするために、
図10は、ステージ1又はステージ2のいずれかであり得る単一の変換ステージのみを示す)。
【0124】
レルムドメインアクセスの場合、VAがPAR180内にある場合、S1_TTBR_R134はステージ1のレベル0ページテーブルベースアドレスを提供し、S2_TTBR_R144はステージ2のレベル0ページテーブルベースアドレスを提供する。VAがPAR180の外側にある場合、S1_TTBR_N132はステージ1のL0ベースアドレスを提供するために使用され、S2_TTBR_N142はステージ2のレベル0ページテーブルベースアドレスを提供し、これは正常ワールド86によって使用される同じL0ステージ1又はステージ2ページテーブル182を指す。これは、
図2に示すEL0レルム42を実装するのに役立ち、EL0領域(R0)42が非セキュアドメイン内のエンクロージングアプリケーション30の非セキュアアドレス空間をソフトウェア入力を減らして透過的に共有することを可能にする。
【0125】
すなわち、通常のEL0アプリケーション30は、そのオペレーティングシステム32によって提供される仮想アドレス空間、例えば、アドレス0で始まる1GBのサイズを有することができる。EL0レルム42は、アプリケーションの仮想アドレス空間のサブセットである保護アドレス範囲(PAR)180、例えば、選択されたオフセットアドレスで始まるサイズが128MB、例えば512MBを有するものとして定義され得る。レルムPAR180内のメモリは、EL0アプリケーション30の他の部分(又は他のエージェント)からアクセスできないようにする必要がある。R0レルム42の場合、そのプライベートメモリは、保護アドレス領域180内に存在し、PAR180の外部の非PARアプリケーション仮想メモリへの直接読み取り/書き込みアクセスを有することによってアプリケーション30の残りの部分とデータを共有する。
【0126】
例えば、レルムが非セキュアドメインのページテーブル構造をコピーする別個のページテーブル構造を維持するシャドウページテーブルを使用して、既存の仮想メモリ技術及びMMUを使用してPAR切り出しを実装することが可能である。しかしながら、これには、制御当事者間の良好な調整が必要である(例えば、ページテーブル更新及びTLB無効化を同期させることであり、これらの動作のトラッピング又は準仮想化を必要とする可能性がある)。これらの手段は、無関係なコードに性能上の影響を及ぼす可能性がある。また、ページテーブル構造をコピーすると、メモリ記憶容量が浪費される。また、敵対的環境(上記のようにエンティティ間に信頼がない場合)では、エンティティ間のこの協働に依存することはできない。レルムセキュリティ保証(機密性及び完全性)は、他の当事者の善意に依存することはできない。
【0127】
これらの問題は、PAR領域180外へのアクセスのために既存のページテーブル構造を再利用しながら、別個のアドレス変換データを用いてPAR領域180を実装するためのメカニズムを提供する、
図10に示す「PARオーバーレイ」技術を使用して対処することができる。したがって、非セキュアページテーブルは、レルムドメインと共有され、レルムドメインは、(少なくとも)2つのTTBR、すなわち、レルム「オーバーレイ」ページテーブル構造を指すTTBR_R134、144と、非セキュアドメインと共有され、「アンダーレイ」ページテーブル構造を指すTTBR_N132、142とへのアクセスを有する。この手法は、非セキュアページテーブルによってPAR領域180に対応する範囲内の仮想アドレスにマッピングされた物理アドレスにレルムコードがアクセスできないが、非セキュアコードはこれらの物理アドレスにアクセスできることを意味する。セキュリティを維持するために、非セキュアコードによって渡されたパラメータに応じて仮想アドレスにアクセスする場合、PAR領域外のアドレスを条件とするメモリアクセスをトリガする前に、PAR領域180内にあるかどうかをチェックするためにアドレスをチェックすることが、レルムコードにとって望ましい場合がある。そうでなければ、レルムコードは、セキュリティリスクとなり得る非セキュアコードから渡されたパラメータの制御下で、レルムページテーブルによってPAR領域180にマッピングされた物理アドレス内のそれ自体の内部データにアクセスするように錯覚される可能性がある。例えば、レルムコードは、非セキュアページテーブルによってPAR領域のアンダーレイ範囲にマッピングされたデータ構造をウォークするように要求され得るが、それらの仮想アドレスがレルムドメイン内でアクセスされると、レルムコードは、非セキュアドメインによるアクセスから保護されるべき機密情報を記憶する物理アドレスにアクセスすることになり、これは、最初にアドレスをサニタイズすることによって防止され得る。このサニタイズアドレスチェックは、プロセッサのいかなるアーキテクチャ機能(セキュリティのためにソフトウェアによって実行することが推奨されるチェックであるが、プロセッサのハードウェア機能として実装される機能ではない)によっても実施されない場合がある。
【0128】
あるいは、同じ物理レジスタTTBR_N132を再利用してPAR180の外部のレルムドメイン「アンダーレイ」アクセス用のベースアドレスを提供する代わりに、第2のレルムドメインTTBR138、148(S1_TTBR_R2又はS2_TTBR_R2)を提供し、VAがPAR180の外部にあるときにレルムドメインによって使用することができる。この場合、S1/S2_TTBR_R2 138、148に格納されたアドレスは、S1/S2_TTBR_N132、142に格納されたアドレスと一致するように、又は異なるページテーブル構造がEL0レルム(R0)42によってアクセスされる場合に異なるアドレスを指定するように更新することができるので、より柔軟性がある。
【0129】
図11は、レルムドメイン86で発生する例外を処理する方法を示す。ステップ200において、例外がレルムドメインから取得される。例外は、所与のVAに関連する。例えば、例外は、命令フェッチ、データアクセス、又はページテーブルウォークアクセスのためにアドレス変換を実行しようとしたときに、そのVAのページテーブル構造にアドレス変換マッピングが定義されていないこと、又はアクセス許可が要求されたメモリアクセスを禁止していることが判明したときに通知されるアドレス障害であり得る。また、例外は、PASフィルタ20がメモリアクセスを拒否することによって引き起こされる可能性もある。
【0130】
ステップ202において、所与のVAがPARレジスタ130によって定義されたPAR180にあるかどうかが判定される。そうである場合、ステップ204において、第1の例外処理アクションが実行され、例えば、例外はレルムドメイン88で処理され、シンドローム情報はVAがPAR180内にあったことを示すように設定される。所与のVAがPAR180外にある場合、ステップ206で、第2の例外処理アクションが実行され、例えば、例外はレルムドメインで処理され、シンドローム情報は、VAがPAR180外にあったことを示すように設定される。例外に応答してレルムドメインで実行される例外ハンドラは、次に、例外をどのように処理するかを判定するためにシンドローム情報を使用することができる。VAがPAR180内にあった場合、例外ハンドラ自体が障害の原因に対処することができる。VAがPAR180の外部にあった場合、例外ハンドラは例外を非セキュアドメインに転送することができ、非セキュア例外ハンドラは障害の原因に対処することができる。これは、非セキュアドメインのページテーブル構造を共有するレルムドメインに起因して、障害が非セキュアドメイン内のコードによって定義された変換データに関連付けられている場合に有用であり、その場合、その例外は、非セキュアドメイン内のOS32又はハイパーバイザ34に関連付けられた例外ハンドラによってより良好に処理され得る。
【0131】
代替的な手法は、ステップ204における第1の例外処理アクションがレルムドメインにおける例外処理を含むことができる一方で、ステップ206における第2の例外処理アクションが非セキュアドメインにおける例外処理を含むことができることであり得る。この場合、例外処理回路は、VAがPAR内にあったか否かに応じて、例外をレルムドメイン又は非セキュアドメインで直接とらせることができる。
【0132】
しかしながら、例外処理を行う時点で、機密である可能性があり、非セキュアドメインによるアクセスから保護されるべきである状態がレジスタ12に格納されている場合、
図11に示す手法を使用することが好ましい場合があり、その場合、レルムソフトウェア例外ハンドラが必要に応じてそれを非セキュアドメインに転送することを選択できる前に、レルムドメインで発生する任意の例外が最初にレルムドメインに取り込まれる。これにより、レルムソフトウェア例外ハンドラは、非セキュアドメインに例外を転送する前に、非セキュアアクセスから保護されるべきレジスタ状態12のサブセットをメモリに保存し、それらのレジスタ12の内容を上書きするための状態保存動作を開始することができる。
【0133】
図12は、処理回路が非セキュアドメイン86内にあるときに発行されるTLB無効化コマンドを処理する方法を示す。ステップ210において、TLB無効化コマンドが発行される。TLB無効化コマンドは、TLB18に、TLB無効化コマンドによって指定された無効化基準を満たす有効なエントリがあるかどうかを検索させる(例えば、これらの基準は、無効化が実行されるべきVA又はVA範囲を指定することができる)。TLB無効化コマンドが非セキュアドメインから発行されると、ステップ212において、TLBは、無効化基準(複数可)を満たし、非セキュアドメイン又はレルムドメインのいずれかを示すドメイン識別子タグを指定するキャッシュエントリを無効化する。対照的に、ルートドメイン、セキュアドメイン、又はレルムドメインのうちの1つから発行されたTLB無効化の場合、TLB無効化コマンドは、そのドメイン識別子タグがその特定のドメインを指定するが、他のドメインを指定しないTLBエントリを引き起こすことができる。レルムドメインは、非セキュアドメインのページテーブルから導出された情報を提供するエントリをTLB18にキャッシュさせている可能性があるため、それらの非セキュアページテーブルが更新されると、そのようなページテーブルからの古いデータは、たとえそれがレルムドメインによって割り当てられたとしても、TLB18からフラッシュされるべきであり、そのため、TLB無効化が、非セキュアドメインTLBエントリだけでなく、レルムドメインTLBエントリの無効化を引き起こすために有用である。
【0134】
上述したように、2つの別個のTTBR132、134の使用は、非セキュアドメイン86で実行されているEL0アプリケーション30内のセキュアエンクレーブを表すEL0レルム42に有用であり得る。しかしながら、
図2に示すように、レルムドメイン88はまた、レルムドメイン内のEL0でアプリケーションレベルコードとEL1で対応するオペレーティングシステムの両方を実行する、カプセル化されたEL0/EL1レルム44(例えば、
図2に示すレルムR1)をサポートすることもできる。そのようなEL0/EL1レルム44の場合、単一のL0ベースアドレスがEL0/EL1領域によってアクセスされる仮想アドレス空間全体に使用され得るので、PARレジスタ130及びTTBR_Nレジスタ132を使用する必要はない。したがって、そのような組み合わされたEL0/EL1レルム44の場合、ページテーブルウォークにどのTTBRを使用するかを決定するためにVAをPAR定義データと比較する必要はない。
【0135】
したがって、すべてのレルムドメインアクセスが、上に示された領域「オーバーレイ」技術を使用することは必須ではない。場合によっては、制御レジスタで指定されたいくつかの構成情報は、VAがPAR内にあるか否かにかかわらず、又はVAとPARとの比較に基づいてTTBRを選択するか否かにかかわらず、レルムドメインアクセスがステージ1ページテーブルウォークのL0ベースアドレスを取得するために単一のTTBRを使用するべきか否かを指定することができる。
【0136】
図13は、アドレス変換回路16及びPASフィルタの動作を要約する。PASフィルタリング20は、アドレス変換回路によって実行される、ステージ1(及び任意選択でステージ2)のアドレス変換後に実行される追加のステージ3のチェックとみなすことができる。ステージ1変換は、(上述したようにTTBRに基づいて選択されたステージ1ページテーブル構造でアクセスされたリーフエントリに基づいて)PAS選択情報「NS」を提供し、これは、レルム又はセキュアドメインからのアクセスが、そのドメイン又は非セキュアPASに関連付けられたPASにアクセスするかどうかを制御する。PASの選択に関係なく、非セキュアドメインからのアクセスは非セキュアPASにアクセスする。EL3内のルートドメインからのアクセスの場合、ステージ1のページテーブルエントリは、
図4に示す4つのPASのうちのどれが所与のルートドメインメモリアクセスのために選択されるべきかを一緒に符号化する2ビットのアドレスベースの選択情報(NS、NSEとラベル付けられた)を提供する。PASフィルタ20は、選択されたPASと、現在の「セキュリティ状態」(すなわち、現在のドメインを識別するドメインID)と、上述のグラニュール保護テーブル(GPT)内の情報とに基づいてグラニュール保護チェックを実行して、アクセスを続行すべきかどうかを判定する。
【0137】
図14は、使用され得るシミュレータ実装を示す。上記の実施形態は、技術をサポートする特有の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、シミュレータプログラム410をサポートするホストオペレーティングシステム420を任意選択で実行して、ホストプロセッサ430で実行し得る。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数の層のシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供された複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行するシミュレータ実装を提供するために必要とされてきたが、そのような手法は、ある状況において、例えば、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるときに、正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬USENIX Conference、53~63頁に記載されている。
【0138】
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成又は機能によって同等の機能を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態でソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ430)に存在する構成では、いくつかのシミュレーションされた実施形態は、適する場合、ホストハードウェアを使用してもよい。
【0139】
シミュレータプログラム410は、(非一時的媒体であってもよい)コンピュータ可読記憶媒体に記憶されてもよく、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード400に対するプログラムインタフェース(命令実行環境)を提供し、シミュレータプログラム410によってモデル化されたハードウェアアーキテクチャのインタフェースと同じである。したがって、ターゲットコード400のプログラム命令は、シミュレータプログラム410を使用して命令実行環境内から実行されてもよく、このため、前述の装置2のハードウェア特徴を実際には有しないホストコンピュータ430は、これらの特徴をエミュレートすることができる。これは、例えば、ターゲットコードが、新しいバージョンのプロセッサアーキテクチャをサポートしないホストデバイス上で実行されるシミュレータ内で実行されることによって試験され得るので、新しいバージョンのプロセッサアーキテクチャのために開発されているターゲットコード400の試験を、実際にそのアーキテクチャをサポートするハードウェアデバイスが利用可能となる前に、可能にするために有用であり得る。
【0140】
シミュレータコードは、例えば、ターゲットコード400の命令をデコードする命令復号プログラムロジックを含む、処理回路10の挙動をエミュレートし、命令を、ホストハードウェア430によってサポートされたネイティブ命令セット内の対応する命令のシーケンスにマッピングして、復号化された命令に相当する機能を実行する処理プログラムロジック412を含む。処理プログラムロジック412はまた、上述のように、異なる例外レベル及び領域におけるコードの処理をシミュレートする。レジスタエミュレートプログラムロジック413(状態エミュレートロジックの例)は、ターゲットコード400に関連付けられたターゲット命令セットアーキテクチャに従って定義されたアーキテクチャ上のレジスタ状態をエミュレートする、ホストプロセッサのホストアドレス空間内のデータ構造を維持する。したがって、そのようなアーキテクチャ上の状態が
図1の実施例のようにハードウェアレジスタ12に記憶されるのでなく、代わりに、ホストプロセッサ430のメモリに記憶され、レジスタエミュレートプログラムロジック413は、ターゲットコード400の命令のレジスタ参照を、ホストメモリからシミュレートされたアーキテクチャ上の状態データを取得するための対応するアドレスにマッピングする。このアーキテクチャ状態は、前述した現在のドメイン指示14及び現在の例外レベル指示15、ならびに前述したようにTTBR132~148に対応する様々な変換テーブルアドレス及びPARレジスタ130に対応する領域定義データを含み得る。
【0141】
シミュレーションコードは、前述のように同じページテーブル構造及びGPT56を参照して、アドレス変換回路16及びPASフィルタ20の機能をそれぞれエミュレートするアドレス変換プログラムロジック414及びフィルタリングプログラムロジック416を含む。したがって、アドレス変換プログラムロジック414は、ターゲットコード400によって指定された仮想アドレスをPASのうちの1つの中の(ターゲットコードの観点からメモリ内の物理位置を指す)シミュレートされた物理アドレスに変換するが、実際にこれらのシミュレートされた物理アドレスは、アドレス空間マッピングプログラムロジック415によってホストプロセッサの(仮想)アドレス空間上にマッピングされる。フィルタリングプログラムロジック416は、上述のPASフィルタと同様に、ターゲットコードによってトリガされたメモリアクセスを進めることを可能とするかどうかを判定するために、グラニュール保護情報のルックアップを実行する。アドレス変換プログラムロジック414は、前述したように、変換されるターゲットVAがPAR内にあるかどうかに基づいて、レルムドメインアクセスに使用するTTBR132、134、142、144を選択する。
【0142】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0143】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
装置であって、
メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換回路と、
第1の変換テーブルアドレスを格納する第1の変換テーブルアドレス記憶回路と、
第2の変換テーブルアドレスを格納するための第2の変換テーブルアドレス記憶回路と、
仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データを格納する保護領域定義データ記憶回路と、
を備え、
前記メモリアクセス要求に応答して、前記アドレス変換回路は、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるとき、前記第1の変換テーブルアドレス記憶回路に格納された前記第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換し、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、前記第2の変換テーブルアドレス記憶回路に格納された前記第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換する、ように構成されている、装置。
【請求項2】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするための少なくとも1つの変換ルックアサイドバッファ、
を備え、
前記少なくとも1つの変換ルックアサイドバッファ内でミスするメモリアクセス要求に応答して、前記アドレス変換回路は、
前記メモリアクセス要求の前記ターゲット仮想アドレスが、前記領域定義データによって指定された仮想アドレス空間の前記少なくとも1つの保護領域内にあるかどうか判定し、
ページテーブルウォーク動作を、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるときに前記第1の変換テーブルアドレス記憶回路に格納された前記第1の変換テーブルアドレスと、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるときに前記第2の変換テーブルアドレス記憶回路に格納された前記第2の変換テーブルアドレスと、を使用して実行するように構成されている、請求項1に記載の装置。
【請求項3】
複数の動作ドメインのうちの1つにおいてデータ処理を実行するための処理回路を備え、
前記処理回路が第1のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるかどうかに応じて、前記第1の変換テーブル構造及び前記第2の変換テーブル構造のうちの1つからのアドレス変換データを使用して、前記ターゲット仮想アドレスを変換するように構成されている、請求項1又は2に記載の装置。
【請求項4】
前記処理回路が第2のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、前記ターゲット仮想アドレスを変換するように構成されている、請求項3に記載の装置。
【請求項5】
前記処理回路が前記第2のドメインにあるとき、前記アドレス変換回路は、前記第2の変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項4に記載の装置。
【請求項6】
更なる変換テーブルアドレスを格納するための更なる変換テーブルアドレス記憶回路、
を備え、
前記処理回路が前記第2のドメインにあるとき、前記アドレス変換回路は、前記更なる変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項4に記載の装置。
【請求項7】
例外の処理を制御するための例外処理回路、
を備え、
前記第1のドメインでの処理のために発生する少なくとも1つのタイプの例外について、所与の仮想アドレスに関連付けられた前記少なくとも1つのタイプの例外に応答して、前記例外処理回路は、
前記所与の仮想アドレスが前記少なくとも1つの保護領域内にある場合に、第1の例外処理アクションを実行し、
前記所与の仮想アドレスが前記少なくとも1つの保護領域外にある場合に、前記第1の例外処理アクションとは異なる第2の例外処理アクションを実行する、ように構成されている、請求項3から6のいずれか一項に記載の装置。
【請求項8】
前記第1の例外処理アクションは、前記例外が前記少なくとも1つの保護領域内の仮想アドレスに関連付けられていることを示すシンドローム情報を設定することを含み、
前記第2の例外処理アクションは、前記例外が前記少なくとも1つの保護領域外の仮想アドレスに関連付けられていることを示す前記シンドローム情報を設定することを含む、請求項7に記載の装置。
【請求項9】
前記第1の例外処理アクションは、前記第1のドメインで前記例外の処理をトリガすることを含み、
前記第2の例外処理アクションは、第2のドメインで前記例外の処理をトリガすることを含む、請求項7に記載の装置。
【請求項10】
1つ以上の変換テーブル構造からのアドレス変換データから導出された情報をキャッシュするためのバッファエントリを含む少なくとも1つの変換ルックアサイドバッファを備え、各バッファエントリは、前記複数のドメインのうちの対応する1つを識別するドメイン識別子に関連付けられ、
前記処理回路が第2のドメインにあるときに発行された変換無効化コマンドに応答して、前記少なくとも1つの変換ルックアサイドバッファは、
前記変換無効化コマンドによって指定された少なくとも1つの無効化基準が満たされ、前記ドメイン識別子が前記第1のドメインを識別するバッファエントリを無効化し、
前記少なくとも1つの無効化基準が満たされ、前記ドメイン識別子が前記第2のドメインを識別するバッファエントリを無効化する、ように構成されている、請求項3から9のいずれか一項に記載の装置。
【請求項11】
前記アドレス変換回路は、少なくとも前記処理回路の現在のドメインに基づいて選択された複数の物理アドレス空間のうちの1つにおいて前記ターゲット仮想アドレスを前記ターゲット物理アドレスに変換するように構成されている、請求項3から10のいずれか一項に記載の装置。
【請求項12】
前記複数の物理アドレス空間は、前記第1のドメインに関連付けられた第1の物理アドレス空間と、第2のドメインに関連付けられた第2の物理アドレス空間と、を少なくとも含み、
前記第1の物理アドレス空間は、前記第1のドメインからアクセス可能であり、前記第2のドメインからアクセス不可能であり、
前記第2の物理アドレス空間は、前記第1のドメインと前記第2のドメインの両方からアクセス可能である、請求項11に記載の装置。
【請求項13】
前記複数の物理アドレス空間はまた、第3のドメインに関連付けられた第3の物理アドレス空間を含み、
前記第3の物理アドレス空間は、前記第3のドメインからアクセス可能であり、前記第1のドメイン及び前記第2のドメインからアクセス不可能である、請求項12に記載の装置。
【請求項14】
前記処理回路が前記第3のドメインにあるとき、前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定とは無関係に選択された記憶位置から取得された変換テーブルアドレスによって識別される変換テーブル構造からのアドレス変換データに基づいて、前記ターゲット仮想アドレスを変換するように構成されている、請求項12に記載の装置。
【請求項15】
第3の変換テーブルアドレスを格納するための第3の変換テーブルアドレス記憶回路を備え、
前記処理回路が前記第3のドメインにあるとき、前記アドレス変換回路は、前記第3の変換テーブルアドレス記憶回路から前記変換テーブルアドレスを取得するように構成されている、請求項14に記載の装置。
【請求項16】
前記少なくとも1つの保護領域の各保護領域について、前記領域定義データは、前記保護アドレス領域のベースアドレスと、前記保護アドレス領域のサイズとを指定する、請求項1から15のいずれか一項に記載の装置。
【請求項17】
前記アドレス変換回路は、前記ターゲット仮想アドレスからターゲット中間アドレスへのマッピングを指定する第1ステージ変換テーブル構造と、前記ターゲット中間アドレスから前記ターゲット物理アドレスへのマッピングを指定する第2ステージ変換テーブル構造とに基づいて、2ステージアドレス変換を実行するように構成されており、
前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される前記第1の変換テーブルアドレス記憶回路及び前記第2の変換テーブルアドレス記憶回路のうちの1つから、前記第1ステージ変換テーブル構造を識別する第1ステージ変換テーブルアドレスを取得するように構成されており、
前記アドレス変換回路は、前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるか外にあるかの判定に基づいて選択される第1の第2ステージ変換テーブルアドレス記憶回路及び第2の第2ステージ変換テーブルアドレス記憶回路のうちの1つから、前記第2ステージ変換テーブル構造を識別する第2ステージ変換テーブルアドレスを取得するように構成されている、請求項1から16のいずれか一項に記載の装置。
【請求項18】
方法であって、
ターゲット仮想アドレスを指定するメモリアクセス要求に応答して、
前記ターゲット仮想アドレスが、保護領域定義データ記憶回路に格納された領域定義データによって指定された少なくとも1つの保護領域内にあるとき、第1の変換テーブルアドレス記憶回路に格納された第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換することと、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、第2の変換テーブルアドレス記憶回路に格納された第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換することと、
を含む、方法。
【請求項19】
ターゲットコードを実行するための命令実行環境を提供するために、ホストデータ処理装置を制御するコンピュータプログラムであって、
コンピュータプログラムは、
メモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するアドレス変換プログラムロジックと、
前記ターゲットコードに関連付けられたターゲット命令セットアーキテクチャのアーキテクチャ状態をエミュレートする状態情報を維持するための状態エミュレートロジックであって、前記状態情報は、
第1の変換テーブルアドレスと、
第2の変換テーブルアドレスと、
シミュレートされた仮想アドレス空間の少なくとも1つの保護領域を指定する領域定義データと、を指定する、前記状態エミュレートロジックと、を備え、
前記ターゲットコードのメモリアクセス命令に応答して、前記アドレス変換プログラムロジックは、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域内にあるとき、前記第1の変換テーブルアドレスによって識別される第1の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換し、
前記ターゲット仮想アドレスが前記少なくとも1つの保護領域外にあるとき、前記第2の変換テーブルアドレスによって識別される第2の変換テーブル構造からのアドレス変換データに基づいて前記ターゲット仮想アドレスを変換する、ように構成されている、コンピュータプログラム。
【請求項20】
請求項19に記載の前記コンピュータプログラムを格納する、コンピュータ可読記憶媒体。
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【国際調査報告】