(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-06
(54)【発明の名称】2ステージアドレス変換
(51)【国際特許分類】
G06F 12/14 20060101AFI20241129BHJP
【FI】
G06F12/14 510D
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024529452
(86)(22)【出願日】2022-04-28
(85)【翻訳文提出日】2024-06-21
(86)【国際出願番号】 GB2022051073
(87)【国際公開番号】W WO2023099860
(87)【国際公開日】2023-06-08
(32)【優先日】2021-11-30
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
【テーマコード(参考)】
5B017
【Fターム(参考)】
5B017AA02
5B017BA04
5B017BB06
5B017CA01
(57)【要約】
メモリ管理回路(28)は、ステージ1及びステージ2変換テーブル構造に基づいて2ステージアドレス変換をサポートする。ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報は、処理回路(4)が所定の実行状態にあるときに発行される、ターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセット(変換テーブルエントリ内のアクセス追跡メタデータを更新するためのメタデータ更新書込み要求を含む)に対して許可されるが、他の書込み要求タイプに対して禁止されることを示す部分読取り専用許可を、対応するメモリ領域が有するかどうかを指定する符号化を有する。メモリ管理回路(28)は、対応ステージ2変換テーブルエントリのステージ2アクセス許可情報が部分読取り専用許可を指定し、メモリアクセス要求が、所定の実行状態で発行された、書込み要求タイプの制限されたサブセット以外の書込み要求であるときに、メモリアクセス要求を拒否する。
【特許請求の範囲】
【請求項1】
装置であって、
異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおいて命令を処理する処理回路と、
メモリアクセス要求に応答して、前記メモリアクセス要求によって指定されたターゲット仮想アドレスを、アクセスされるメモリシステムロケーションを示すターゲット物理アドレスに変換するメモリ管理回路と、を備え、
前記メモリ管理回路は、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造と、ステージ2変換テーブルエントリを含むステージ2変換テーブル構造と、に基づいて2ステージアドレス変換をサポートするように構成され、前記ターゲット仮想アドレスから前記ターゲット物理アドレスへのマッピングが、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、前記ステージ1アドレスマッピングが、前記ターゲット仮想アドレスから、前記ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、前記ステージ2アドレスマッピングが、前記ターゲット中間アドレスから、前記ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定される前記ターゲット物理アドレスへのマッピングを含み、
前記メモリ管理回路は、前記対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、前記メモリアクセス要求に対する許可チェックを実行するように構成され、前記ステージ2アクセス許可情報は、前記処理回路が前記複数の実行状態のうちの所定の実行状態にあるときに発行される前記ターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、前記制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可を前記ターゲット中間アドレスに対応する前記メモリ領域が有するかどうかを指定する符号化を有し、前記書込み要求タイプの制限されたサブセットが、変換テーブルエントリ内のアクセス追跡メタデータを更新するために前記メモリ管理回路によって生成されるメタデータ更新書込み要求を含み、
前記メモリ管理回路は、前記メモリアクセス要求が前記所定の実行状態において発行された書込み要求であり、前記ステージ2アクセス許可情報が、前記ターゲット中間アドレスに対応する前記メモリ領域が前記部分読取り専用許可を有することを指定し、前記メモリアクセス要求が前記書込み要求タイプの制限されたサブセット以外の書込み要求タイプであると決定したことに応答して、前記メモリアクセス要求を拒否するように構成されている、装置。
【請求項2】
前記書込み要求タイプの制限されたサブセットが、前記所定の実行状態における前記処理回路によって実行される少なくとも1つの所定のタイプの変換テーブルエントリ更新命令に応答して発行される書込み要求も含む、請求項1に記載の装置。
【請求項3】
前記書込み要求タイプの制限されたサブセットが、前記所定の実行状態における前記処理回路によって実行される少なくとも1つのタイプの記憶命令に応答して発行される書込み要求を除外する、請求項1又は2に記載の装置。
【請求項4】
各ステージ1変換テーブルエントリは、そのステージ1変換テーブルエントリが、保護エントリとして符号化されていないステージ1変換テーブルエントリと比較して更新が制限される保護エントリであるかどうかを指定する符号化を有する、請求項1~3のいずれか一項に記載の装置。
【請求項5】
所与のステージ1変換テーブルエントリが保護エントリとしてマークされているかどうかに基づいて、前記所与のステージ1変換テーブルエントリによって指定されたアクセス許可又はアドレスマッピングへの更新を制限するかどうかをチェックするための保護エントリチェック回路を備える、請求項4に記載の装置。
【請求項6】
前記処理回路が、所与のメモリシステムロケーションへの更新を要求するための保護エントリチェックタイプの読取りチェック書込み命令を実行することに応答して、
前記所与のメモリシステムロケーションからデータを読取り、
前記所与のメモリシステムロケーションから読取られた前記データが、保護エントリとして指定されたステージ1変換テーブルエントリと一致する値を有するかどうかをチェックし、
前記所与のメモリシステムロケーションから読取られた前記データが、保護エントリとして指定されたステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、前記ステージ1変換テーブルエントリの更新制限されたビットのサブセットが、前記読取りチェック書込み命令に応答して更新されることを防止するための、保護エントリチェック回路を、備える、請求項4又は5に記載の装置。
【請求項7】
前記所与のメモリシステムロケーションへの前記更新が前記保護エントリチェックタイプの読取りチェック書込み命令に応答して実行されるときに、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションからの前記データの前記読取り、前記データが保護エントリとして指定されたステージ1変換テーブルエントリと一致する値を有するかどうかの前記チェック、及びアトミック動作として実行される前記所与のメモリシステムロケーションの前記更新を制御するように構成されている、請求項6に記載の装置。
【請求項8】
前記所与のメモリシステムロケーションへの前記更新が、前記処理回路が前記所定の実行状態にあるときに実行される前記保護エントリチェックタイプの読取りチェック書込み命令に応答して実行されるときに、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションに記憶されたステージ1変換テーブルエントリが保護エントリとして指定されるかどうかを、前記所与のメモリシステムロケーションへの前記更新が変更することを禁止するように構成されている、請求項6又は7に記載の装置。
【請求項9】
前記保護エントリチェックタイプの読取りチェック書込み命令に応答して発行される書込み要求は、前記書込み要求タイプの制限されたサブセットのうちの1つである、請求項6~8のいずれか一項に記載の装置。
【請求項10】
前記更新制限されたビットのサブセットが、
前記ステージ1変換テーブルエントリの全てのビットと、
前記ステージ1変換テーブルエントリが保護エントリとして指定されているかどうかを符号化するために使用される1つ以上のビットを含む、前記ステージ1変換テーブルエントリの適切なビットのサブセットであって、どのビットが前記適切なビットのサブセットにあるという選択は、
非プログラマブル、及び
制御レジスタに記憶されたソフトウェアプログラマブルな選択値に依存するプログラマブル、のうちの1つのである、適切なビットのサブセットと、のうちの1つを含む、請求項6~9のいずれか一項に記載の装置。
【請求項11】
各有効なステージ1変換テーブルエントリが、そのステージ1変換テーブルエントリが保護エントリであるかどうかを指定する前記符号化を有し、
前記所与のメモリシステムロケーションから読取られた前記データが無効なステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションにおける前記データを保護エントリとして指定された有効なステージ1変換テーブルエントリにさせる更新以外の前記無効なステージ1変換テーブルエントリの更新を許可するように構成されている、請求項6~10のいずれか一項に記載の装置。
【請求項12】
有効なステージ1変換テーブルエントリ及び無効なステージ1変換テーブルエントリの両方が、そのステージ1変換テーブルエントリが保護エントリであるかどうかを指定する符号化を有し、
所与のメモリシステムから読取られた前記データが、保護エントリとして指定された無効なステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションの無効なエントリ更新制限されたビットのサブセットが前記読取りチェック書込み命令に応答して更新されることを防止するように構成され、
前記所与のメモリシステムから読取られた前記データが、保護エントリとして指定された有効なステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションの有効なエントリ更新制限されたビットのサブセットが、前記読取りチェック書込み命令に応答して更新されることを防止するように構成されている、請求項6~10のいずれか一項に記載の装置。
【請求項13】
有効なステージ1変換テーブルエントリが、その有効なステージ1変換テーブルエントリが保護エントリであるかどうかを示す第1のビットフィールドを含み、
無効なステージ1変換テーブルエントリが、その無効なステージ1変換テーブルエントリが保護エントリであるかどうかを示す第2のビットフィールドを含み、
前記第1のビットフィールド及び前記第2のビットフィールドが、ステージ1変換テーブルエントリ符号化内の異なるビット位置にある、請求項12に記載の装置。
【請求項14】
前記保護エントリチェック回路が、
前記要求された更新が前記更新制限されたビットのサブセットのうちの少なくとも1つに対する更新を引き起こすときに、前記所与のメモリシステムロケーションの前記更新を拒否すること、
前記更新制限されたビットのサブセットが前記所与のメモリシステムロケーションの適切なビットのサブセットであるときに、前記読取りチェック書込み命令に応答して前記所与のメモリシステムロケーションの少なくとも1つの他のビットの更新を可能にしながら、前記更新制限されたビットのサブセットの前記更新を抑制すること、のうちの1つによって前記更新制限されたビットのサブセットの前記更新を抑制するように構成されている、請求項6~13のいずれか一項に記載の装置。
【請求項15】
前記保護エントリチェックタイプの読取りチェック書込み命令に応答して、前記処理回路が、前記所与のメモリシステムから読取られた前記データが保護エントリとして指定されたステージ1変換テーブルエントリであるかどうかの前記チェックに基づいて、前記保護エントリチェックタイプの読取りチェック書込み命令によって要求された前記更新の少なくとも一部が抑制されるかどうかを示す少なくとも1つの条件ステータス値を設定するように構成されている、請求項6~14のいずれか一項に記載の装置。
【請求項16】
前記保護エントリチェックタイプの読取りチェック書込み命令が、
前記保護エントリチェックタイプの読取りチェック書込み命令のスワップバリアントであって、前記スワップバリアンに応答して、前記処理回路が、後続の命令によってオペランドとして使用するために、前記所与のメモリシステムロケーションから読取られた前記データを宛先レジスタに書込むように構成されている、スワップバリアントと、
前記保護エントリチェックタイプの読取りチェック書込み命令の記憶バリアントであって、前記記憶バリアントについて、前記処理回路は前記所与のメモリシステムロケーションから読取られた前記データを宛先レジスタに書込むことなく記憶バリアントを処理するように構成されている、記憶バリアントと、
比較オペランドを指定する前記保護エントリチェックタイプの読取りチェック書込み命令の比較及びスワップバリアントであって、前記比較及びスワップバリアントについて、前記保護エントリチェック回路は、前記所与のメモリシステムロケーションから読取られた前記データと前記比較オペランドとの比較が比較条件を満たすかどうかを決定し、前記比較条件が満たされないときに前記所与のメモリシステムロケーションへの前記更新を抑制し、後続の命令によってオペランドとして使用するために前記所与のメモリシステムロケーションから読取られた前記データを宛先レジスタに書込むように構成されている、比較及びスワップバリアントと、
ビット設定/クリア命令であって、前記ビット設定/クリア命令について、前記所与のメモリシステムロケーションの前記更新が、前記所与のメモリシステムロケーションにおける前記データの少なくとも1つの選択されたビットを設定又はクリアすることを含む、ビット設定/クリア命令と、のうちの1つである、請求項6~15のいずれか一項に記載の装置。
【請求項17】
所与の中間アドレスに対応する所与のステージ2アクセス変換テーブルエントリが、前記所与の中間アドレスに対応する前記メモリ領域へのアクセスが許可されるために、所与の仮想アドレスから前記所与の中間アドレスへの前記ステージ1アドレスマッピングを指定する前記対応ステージ1変換テーブルエントリを見つけるために前記ステージ1変換構造の変換テーブルウォークにおいてアクセスされる1つ以上のウォークされたステージ1変換テーブルエントリの各々がアンチエイリアシング条件を満たす必要があるという要件を示すアンチエイリアシング特性を前記所与の中間アドレスに対応する前記メモリ領域が有するかどうかを指定する符号化を有し、
所与のウォークされたステージ1変換テーブルエントリに対する前記アンチエイリアシング条件が、
前記所与のウォークされたステージ1変換テーブルエントリが、保護エントリとして指定され、前記部分読取り専用許可が、前記所与のウォークされたステージ1変換テーブルエントリを記憶する前記メモリシステムロケーションの物理アドレスを導出するために使用される前記ステージ2アドレスマッピングを提供する関連するステージ2変換テーブルエントリに対する前記ステージ2アクセス許可情報によって指定されるか、又は
読取り専用許可が、前記関連するステージ2変換テーブルエントリに対する前記ステージ2アクセス許可情報によって指定される、いずれかのときに満たされ、
前記メモリ管理回路が、前記対応ステージ2変換テーブルエントリが、前記ターゲット中間アドレスに対応する前記メモリ領域が前記アンチエイリアシング特性を有することを指定し、前記1つ以上のウォークされたステージ1変換テーブルエントリのうちのいずれかが前記アンチエイリアシング条件を満たすのを失敗したと決定したことに応答して、前記メモリアクセス要求を拒否するように構成されている、請求項5~16のいずれか一項に記載の装置。
【請求項18】
前記メモリ管理回路が、ステージ1変換テーブルベースアドレスレジスタ内の値に基づいて、前記ステージ1変換テーブル構造のステージ1トップレベル変換テーブルのステージ1トップレベルベースアドレスを決定するように構成されている、請求項1~17のいずれか一項に記載の装置。
【請求項19】
ステージ1トップレベルテーブル部分読取り専用チェックがイネーブルであるときに、前記メモリ管理回路は、前記ステージ1トップレベルベースアドレスが、関連するステージ2変換テーブルエントリが前記部分読取り専用許可を指定しない中間アドレスに対応すると決定したことに応答して、失敗をシグナリングするように構成されている、請求項18に記載の装置。
【請求項20】
前記メモリ管理回路が、制御レジスタに記憶されたステージ1トップレベル部分読取り専用チェックイネーブル制御値に基づいて、前記ステージ1トップレベルテーブル部分読取り専用チェックがイネーブルであるかどうかを決定するように構成されている、請求項19に記載の装置。
【請求項21】
ステージ1トップレベルテーブル存在許可チェックがイネーブルであるときに、前記メモリ管理回路が、前記ステージ1トップレベルベースアドレスに対応する所与のメモリ領域が、前記所与のメモリ領域が前記ステージ1変換テーブル構造の前記ステージ1トップレベルテーブルを記憶するために割り振られることを許可されることを示すステージ1トップレベルテーブル存在許可に関連付けられるかどうかを決定し、前記ステージ1トップレベルベースアドレスに対応する前記所与のメモリ領域が前記ステージ1トップレベルテーブル存在許可を有しないときに、失敗をトリガするように構成されている、請求項18~20のいずれか一項に記載の装置。
【請求項22】
前記メモリ管理回路が、前記ステージ1トップレベルベースアドレスに対応する関連するステージ2変換テーブルエントリの符号化に基づいて、前記所与のメモリ領域が前記ステージ1トップレベルテーブル存在許可に関連付けられているかどうかを決定するように構成されている、請求項21に記載の装置。
【請求項23】
前記メモリ管理回路が、制御レジスタに記憶されたステージ1トップレベルテーブル存在許可チェックイネーブル制御値に基づいて、前記ステージ1トップレベルテーブル存在許可チェックがイネーブルであるかどうかを決定するように構成されている、請求項21又は22に記載の装置。
【請求項24】
方法であって、
異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおいて命令を処理することと、
メモリアクセス要求に応答して、前記メモリアクセス要求によって指定されたターゲット仮想アドレスの、アクセスされるメモリシステムロケーションを示すターゲット物理アドレスへの2ステージアドレス変換を実行することであって、前記2ステージアドレス変換が、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造と、ステージ2変換テーブルエントリを含むステージ2変換テーブル構造とに基づき、前記ターゲット仮想アドレスから前記ターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、前記ステージ1アドレスマッピングは、前記ターゲット仮想アドレスから、前記ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、前記ステージ2アドレスマッピングは、前記ターゲット中間アドレスから、前記ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定される前記ターゲット物理アドレスへのマッピングを含む、実行することと、
前記対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、前記メモリアクセス要求に対する許可チェックを実行することであって、前記ステージ2アクセス許可情報が、前記処理回路が前記複数の実行状態のうちの所定の実行状態にあるときに発行される前記ターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、前記制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可を前記ターゲット中間アドレスに対応する前記メモリ領域が有するかどうかを指定する符号化を有し、前記書込み要求タイプの制限されたサブセットが、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにメモリ管理回路によって生成されるメタデータ更新書込み要求を含む、実行することと、
前記メモリアクセス要求が前記所定の実行状態において発行された書込み要求であると決定したことに応答して、前記メモリアクセス要求を拒否することであって、前記ステージ2アクセス許可情報は、前記ターゲット中間アドレスに対応する前記メモリ領域が前記部分読取り専用許可を有することを指定し、前記メモリアクセス要求は、前記書込み要求タイプの制限されたサブセット以外の書込み要求タイプである、拒否することと、を含む、方法。
【請求項25】
ターゲットコードを実行するための命令実行環境を提供するために、ホストデータ処理装置を制御するための命令を含むコンピュータプログラムであって、前記コンピュータプログラムが、
異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおける前記ターゲットコードの命令の処理をシミュレートするための処理プログラムロジックと、
前記ターゲットコードによってトリガされるシミュレートされたメモリアクセス要求に応答して、前記メモリアクセス要求によって指定されるターゲット仮想アドレスを、アクセスされるシミュレートされたメモリシステムロケーションを示すターゲット物理アドレスに変換するためのメモリ管理プログラムロジックと、を備え、
前記メモリ管理プログラムロジックは、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造及びステージ2変換テーブルエントリを含むステージ2変換テーブル構造に基づいて2ステージアドレス変換をサポートするように構成され、前記ターゲット仮想アドレスから前記ターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、前記ステージ1アドレスマッピングは、前記ターゲット仮想アドレスから、前記ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、前記ステージ2アドレスマッピングは、前記ターゲット中間アドレスから、前記ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定される前記ターゲット物理アドレスへのマッピングを含み、
前記メモリ管理プログラムロジックは、前記対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、前記シミュレートされたメモリアクセス要求に対する許可チェックを実行するように構成され、前記ステージ2アクセス許可情報は、前記処理プログラムロジックが前記複数の実行状態のうちの所定の実行状態にあるときに発行される、前記ターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、前記制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可を前記ターゲット中間アドレスに対応する前記メモリ領域が有するかどうかを指定する符号化を有し、前記書込み要求タイプの制限されたサブセットは、変換テーブルエントリ内のアクセス追跡メタデータを更新するために前記メモリ管理プログラムロジックによって生成されるメタデータ更新書込み要求を含み、
前記メモリ管理プログラムロジックは、前記シミュレートされたメモリアクセス要求が前記所定の実行状態において発行された書込み要求であり、前記ステージ2アクセス許可情報は、前記ターゲット中間アドレスに対応する前記メモリ領域が前記部分読取り専用許可を有することを指定し、前記シミュレートされたメモリアクセス要求は、前記書込み要求タイプの制限されたサブセット以外の書込み要求タイプであると決定したことに応答して、前記シミュレートされたメモリアクセス要求を拒否するように構成されている、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、データ処理の分野に関する。より詳細には、メモリ管理に関する。
【背景技術】
【0002】
データ処理装置は、メモリ管理回路を有することができ、変換テーブルに定義されたアドレスマッピング及びアクセス許可情報に基づいて、アドレス変換を実行し、特定のアドレスへのアクセスが許可されるかどうかを制御する。メモリ管理回路は、2ステージアドレス変換をサポートすることができ、そこでは仮想アドレスから物理アドレスへの変換が、仮想アドレスから中間アドレスへのステージ1マッピング、及び中間アドレスから物理アドレスへのステージ2マッピングに依存する。これは、複数のゲストオペレーティングシステムが同じハードウェアプラットフォーム上に共存することができる仮想化をサポートするのに有用であり、ステージ1マッピングは主にゲストオペレーティングシステムによって制御され、ステージ2マッピングは主にハイパーバイザによって制御され、その結果、中間アドレス(ゲストオペレーティングシステムの観点からは物理メモリを指すように見える)を異なる物理アドレスに再マッピングすることができる。2ステージアドレス変換は、異なるゲストオペレーティングシステムによって設定される競合する中間アドレス間の衝突を回避し、ゲストオペレーティングシステムによって見られるハードウェアリソースの仮想化されたビューと、処理装置内に提供される実際のハードウェアリソースとの間をマッピングするのに有用であり得る。
【発明の概要】
【0003】
少なくともいくつかの例は、異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおいて命令を処理する処理回路と、メモリアクセス要求に応答して、メモリアクセス要求によって指定されたターゲット仮想アドレスを、アクセスされるメモリシステムロケーションを示すターゲット物理アドレスに変換するメモリ管理回路と、を備える装置を提供し、装置において、メモリ管理回路は、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造と、ステージ2変換テーブルエントリを含むステージ2変換テーブル構造とに基づく2ステージアドレス変換をサポートするように構成され、ターゲット仮想アドレスからターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、ステージ1アドレスマッピングは、ターゲット仮想アドレスから、ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、ステージ2アドレスマッピングは、ターゲット中間アドレスから、ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定されるターゲット物理アドレスへのマッピングを含み、メモリ管理回路は、対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、メモリアクセス要求に対する許可チェックを実行するように構成され、ステージ2アクセス許可情報は、処理回路が複数の実行状態のうちの所定の実行状態にあるときに発行されるターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可をターゲット中間アドレスに対応するメモリ領域が有するかどうかを指定する符号化を有し、書込み要求タイプの制限されたサブセットが、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにメモリ管理回路によって生成されるメタデータ更新書込み要求を含み、メモリ管理回路は、メモリアクセス要求が所定の実行状態において発行された書込み要求であり、ステージ2アクセス許可情報が、ターゲット中間アドレスに対応するメモリ領域が部分読取り専用許可を有することを指定し、メモリアクセス要求が書込み要求タイプの制限されたサブセット以外の書込み要求タイプであると決定したことに応答して、メモリアクセス要求を拒否するように構成されている。
【0004】
少なくともいくつかの例は、方法を提供し、方法は、異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおいて命令を処理することと、メモリアクセス要求に応答して、メモリアクセス要求によって指定されたターゲット仮想アドレスの、アクセスされるメモリシステムロケーションを示すターゲット物理アドレスへの2ステージアドレス変換を実行することであって、2ステージアドレス変換が、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造と、ステージ2変換テーブルエントリを含むステージ2変換テーブル構造とに基づき、ターゲット仮想アドレスからターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、ステージ1アドレスマッピングは、ターゲット仮想アドレスから、ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、ステージ2アドレスマッピングは、ターゲット中間アドレスから、ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定されるターゲット物理アドレスへのマッピングを含む、実行することと、対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、メモリアクセス要求に対する許可チェックを実行することであって、ステージ2アクセス許可情報が、処理回路が複数の実行状態のうちの所定の実行状態にあるときに発行されるターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可をターゲット中間アドレスに対応するメモリ領域が有するかどうかを指定する符号化を有し、書込み要求タイプの制限されたサブセットが、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにメモリ管理回路によって生成されるメタデータ更新書込み要求を含む、実行することと、メモリアクセス要求が所定の実行状態において発行された書込み要求であると決定したことに応答して、メモリアクセス要求を拒否することであって、ステージ2アクセス許可情報は、ターゲット中間アドレスに対応するメモリ領域が部分読取り専用許可を有することを指定し、メモリアクセス要求は、書込み要求タイプの制限されたサブセット以外の書込み要求タイプである、拒否することと、を含む。
【0005】
少なくともいくつかの例は、ターゲットコードを実行するための命令実行環境を提供するようにホストデータ処理装置を制御するための命令を含むコンピュータプログラムを提供し、コンピュータプログラムは、異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおけるターゲットコードの命令の処理をシミュレートするための処理プログラムロジックと、ターゲットコードによってトリガされるシミュレートされたメモリアクセス要求に応答して、メモリアクセス要求によって指定されるターゲット仮想アドレスを、アクセスされるシミュレートされたメモリシステムロケーションを示すターゲット物理アドレスに変換するためのメモリ管理プログラムロジックと、コンピュータプログラムにおいて、メモリ管理プログラムロジックは、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造及びステージ2変換テーブルエントリを含むステージ2変換テーブル構造に基づいて2ステージアドレス変換をサポートするように構成され、ターゲット仮想アドレスからターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存し、ステージ1アドレスマッピングは、ターゲット仮想アドレスから、ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含み、ステージ2アドレスマッピングは、ターゲット中間アドレスから、ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定されるターゲット物理アドレスへのマッピングを含み、メモリ管理プログラムロジックは、対応ステージ2変換テーブルエントリによって指定されるステージ2アクセス許可情報に少なくとも基づいて、シミュレートされたメモリアクセス要求に対する許可チェックを実行するように構成され、ステージ2アクセス許可情報は、処理プログラムロジックが複数の実行状態のうちの所定の実行状態にあるときに発行される、ターゲット中間アドレスに対応するメモリ領域への書込み要求が、書込み要求タイプの制限されたサブセットに対して許可されるが、制限されたサブセット以外の書込み要求タイプに対して禁止されることを示す部分読取り専用許可をターゲット中間アドレスに対応するメモリ領域が有するかどうかを指定する符号化を有し、書込み要求タイプの制限されたサブセットは、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにメモリ管理プログラムロジックによって生成されるメタデータ更新書込み要求を含み、メモリ管理プログラムロジックは、シミュレートされたメモリアクセス要求が所定の実行状態において発行された書込み要求であり、ステージ2アクセス許可情報は、ターゲット中間アドレスに対応するメモリ領域が部分読取り専用許可を有することを指定し、シミュレートされたメモリアクセス要求は、書込み要求タイプの制限されたサブセット以外の書込み要求タイプであると決定したことに応答して、シミュレートされたメモリアクセス要求を拒否するように構成されている。
【0006】
コンピュータプログラムは、コンピュータ可読記憶媒体に記憶されることができる。記録媒体は、非一時的記憶媒体であってもよい。
【図面の簡単な説明】
【0007】
本技法の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
【
図1】処理回路及びメモリ管理回路を有するデータ処理装置の一例を示す。
【
図4】それぞれステージ1及びステージ2アドレス変換のための変換テーブルウォークの一例を示す。
【
図5】それぞれステージ1及びステージ2アドレス変換のための変換テーブルウォークの一例を示す。
【
図6】ステージ1で決定された各テーブルベースアドレス及び最終中間アドレスが、それぞれのステージ2変換を使用して物理アドレスに変換されることを考慮するときの、ステージ1変換及びステージ2変換の両方の完全変換テーブルウォークのために実行されるテーブルルックアップを示す。
【
図7】メモリ管理を制御するためのメモリ管理回路及び制御レジスタの一例を示す。
【
図8】ステージ1及びステージ2アドレス変換のための変換テーブルエントリの一例を示す。
【
図9】ステージ2変換テーブルエントリによって定義された部分読取り専用メモリ領域への書込みを許可された書込み要求及び禁止された書込み要求のタイプを示す。
【
図10】アドレス変換及び許可チェックを実行する方法を示す。
【
図11】部分読取り専用許可に基づくチェックを示すフロー図である。
【
図12】保護エントリチェックタイプの読取りチェック書込み命令の異なるバリアントの処理を示す。
【
図13-1】保護エントリチェックタイプの読取りチェック書込み命令の異なるバリアントの処理を示す。
【
図13-2】保護エントリチェックタイプの読取りチェック書込み命令の異なるバリアントの処理を示す。
【
図14-1】保護エントリチェックタイプの読取りチェック書込み命令の異なるバリアントの処理を示す。
【
図14-2】保護エントリチェックタイプの読取りチェック書込み命令の異なるバリアントの処理を示す。
【
図15】同じ中間アドレス上への仮想アドレスのエイリアシングを示す。
【
図17】ステージ1トップレベルテーブル存在チェック及びステージ1トップレベル部分読取り専用チェックを示す。
【
図18】使用され得るシミュレータ実装形態を示す。
【発明を実施するための形態】
【0008】
部分読取り専用ステージ2アクセス許可
装置は、異なる特権レベルに関連付けられた複数の実行状態のうちの1つにおいて命令を処理するための処理回路と、メモリアクセス要求に応答して、メモリアクセス要求によって指定されたターゲット仮想アドレスを、アクセスされるメモリシステムロケーションを示すターゲット物理アドレスに変換するためのメモリ管理回路とを有する。メモリ管理回路は、ステージ1変換テーブルエントリを含むステージ1変換テーブル構造と、ステージ2変換テーブルエントリを含むステージ2変換テーブル構造とに基づく2ステージのアドレス変換をサポートし、ターゲット仮想アドレスからターゲット物理アドレスへのマッピングは、ステージ1アドレスマッピング及びステージ2アドレスマッピングに依存する。ステージ1アドレスマッピングは、ターゲット仮想アドレスから、ターゲット仮想アドレスに対応する対応ステージ1変換テーブルエントリによって指定されるターゲット中間アドレスへのマッピングを含む。ステージ2アドレスマッピングは、ターゲット中間アドレスから、ターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定されるターゲット物理アドレスへのマッピングを含む。
【0009】
2ステージのアドレス変換をサポートするシステムでは、ステージ1アドレスマッピングは、通常、オペレーティングシステムによって制御されるが、ステージ2アドレスマッピングは、通常、ハイパーバイザによって制御される。したがって、ステージ1アドレスマッピングを記憶するために使用されるメモリシステムロケーションは、通常、オペレーティングシステムによって書込み可能であり、その結果、オペレーティングシステムは、ステージ1変換テーブルエントリによって表されるアドレスマッピング及び許可を維持することができる。現代のオペレーティングシステムソフトウェアは、比較的大きい場合があり、したがって、メモリへの書込みを伴う多くのコード行を有する場合があり、これは、記憶命令のアドレスオペランドが、ステージ1変換テーブルエントリを保持するために使用されるメモリ領域に対応するように設定される場合、ステージ1変換テーブルエントリに対する更新を引き起こすことが可能であり得る。したがって、オペレーティングシステムは、アクセス許可又はアドレスマッピングを変更し、ステージ1変換テーブルエントリを使用して実行されることが意図されたメモリ管理制御を回避するために、オペレーティングシステムコードにステージ1変換テーブルエントリのいくつかを破損させることによって、攻撃者が機密データ又はコードへのアクセスを得ようとすること、又は、装置上で実行するソフトウェアの機能を破損させることを試みるために、使用される大きな攻撃面を提示し得る。したがって、いくつかのステージ1変換テーブルエントリの破損から保護するための対策を提供することが望ましい場合がある(いくつかのステージ1変換テーブルエントリは、非機密情報を保持するために使用されるメモリ領域に対応する場合があるので、この対策を全てのステージ1変換テーブルエントリに適用する必要はない場合がある)。
【0010】
ステージ1変換テーブルを攻撃に対して強化するために提案されている1つのアプローチは、通常のステージ1変換テーブルを指し示すために使用されるベースアドレスとは別の代替ベースアドレスを提供することである。代替ベースアドレスは、ステージ1変換テーブルの代替セットを指し示す。代替変換テーブルベースアドレス及びステージ1変換テーブルの代替セットは、オペレーティングシステムではなくハイパーバイザによって制御されてもよく、アドレス空間の機密領域のあるサブセットへのアクセスを制御するために使用されてもよい。代替変換テーブル構造の各レベルにおける変換テーブルエントリは、ステージ1変換テーブルの代替セットの変換テーブルウォークが停止され、代わりに通常のステージ1変換テーブルを使用して再開されるべきかどうかを示す再開インジケータを指定し得る。代替変換テーブル構造のウォーク中に変換テーブルウォークを再開する指示に遭遇しない場合、最終的にアドレスマッピング(代替変換テーブルの一部としてハイパーバイザによって制御される)に到達し、そしてこれは、機密情報を保持するメモリ領域の中間アドレスを識別するために使用されることができる。しかしながら、変換テーブルウォークが変換テーブル構造の所与のレベルで停止され、再始動されるべきであることを再始動インジケータが指定する場合、オペレーティングシステムによって制御される通常のステージ1変換テーブルのために使用されるベースアドレスから開始して、更なる変換テーブルウォークが始まる。このアプローチは、特定の機密メモリ領域へのアクセスが、オペレーティングシステムによって改ざんされ得ない代替変換テーブル構造に基づいて制御されることを可能にする一方で、攻撃に対して保護される必要がない他のメモリ領域は、オペレーティングシステムによって設定されるステージ1変換テーブルの通常のセットに基づいて制御されるアクセスを有することができる。しかしながら、このアプローチに伴う問題は、非機密メモリ領域へのアクセスに対して、2つの別個の変換テーブルウォーク動作、すなわち、代替変換テーブル構造をウォークするための第1の動作と、代替構造のウォークを停止した後に通常変換テーブル構造をウォークするための第2の動作とを実行するために、すでに低速な変換テーブルウォーク動作が更に低速になる(2倍の長さまで)ことである。これは、特にアドレス空間の大部分が機密であるように意図されておらず、したがって通常のステージ1変換テーブルを使用する場合、性能に著しい影響を及ぼす可能性がある。
【0011】
別のアプローチは、ステージ1変換テーブルエントリを記憶するために使用されるメモリ領域に対応するステージ2変換テーブルエントリに対して設定されたステージ2アクセス許可を使用して、そのメモリ領域を読取り専用としてマークすることであり、これは、オペレーティングシステムがステージ1変換テーブルエントリを更新することができるのを防止する。しかしながら、このアプローチに伴う問題は、オペレーティングシステムが、ステージ1変換テーブルエントリ内のアクセス追跡メタデータを更新して、所与のメモリ領域がどの程度頻繁にアクセス又は書込まれるかに関する情報を記録できることが有用であることが多いことである。例えば、メタデータは、アクセスフラグが以前にクリアされて以来、対応するメモリ領域が少なくとも1回アクセスされたことを追跡するように設定されるアクセスフラグ、及び/又はダーティフラグがクリアされて以来、対応するメモリ領域への少なくとも1回の書込みが発生したことを示すように設定されるダーティフラグを含むことができる。アクセス追跡メタデータの別の例は、対応する所与のメモリ領域へのアクセスの数をカウントするアクセスカウンタであり得る。そのようなアクセス追跡メタデータは、オペレーティングシステムが外部ストレージへのメモリ領域のページングをより効率的に管理することを可能にする(例えば、オペレーティングシステムが、外部ストレージへのページングアウトの最良の候補であるアクセス頻度が最も低いページを識別することを可能にする)のに有用であり得る。したがって、ステージ1変換テーブルエントリを記憶するために使用されるメモリ領域が、ステージ2アクセス許可情報を使用して読取り専用としてマークされた場合、これは、アクセス追跡メタデータへの更新を防止し、したがって、オペレーティングシステムによって管理されるページング及び他の動作の管理の効率を低下させる可能性があり、アクセス頻度に関する情報の損失に起因して、頻繁にアクセスされるデータが外部ストレージにページアウトされることに起因して、性能の損失のリスクがある。
【0012】
以下で説明する例では、メモリ管理回路は、メモリアクセスのターゲット中間アドレスに対応する対応ステージ2変換テーブルエントリによって指定されたステージ2アクセス許可情報に少なくとも基づいて、メモリアクセス要求に対する許可チェックを実行する。ステージ2アクセス許可情報は、ターゲット中間アドレスに対応するメモリ領域が部分読取り専用の許可を有するか否かを指定する符号化を有する。部分読取り専用許可は、読取り専用、読取り/書込み、実行、読取り/実行などの他のタイプの許可の代替として、所与のメモリ領域に対する選択について使用可能な別の許可オプションであり得る。読取り専用許可は、対応するメモリ領域への全ての書込みを禁止してもよいが、対照的に、部分読取り専用許可は、処理回路が複数の実行状態のうちの所定の実行状態にあるときに発行される、ターゲット中間アドレスに対応するメモリ領域への書込み要求のうち、書込み要求タイプの制限されたサブセットに対して書込み要求が許可されるが、制限されたサブセット以外の書込み要求タイプに対して書込み要求が禁止されることを指定する。書込み要求タイプの制限されたサブセットは、少なくとも、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにメモリ管理回路によって生成されるメタデータ更新書込み要求を含む。メモリ管理回路は、メモリアクセス要求が所定の実行状態において発行された書込み要求であり、ステージ2アクセス許可情報が、ターゲット中間アドレスに対応するメモリ領域が部分読取り専用許可を有することを指定し、メモリアクセス要求が書込み要求タイプの制限されたサブセット以外の書込み要求タイプであると決定したことに応答して、メモリアクセス要求を拒否する。
【0013】
したがって、このアプローチを用いて、ステージ2アクセス許可を制御するハイパーバイザは、ステージ1変換テーブルエントリを記憶するために使用されるメモリ領域を、部分読取り専用許可を有するものとして設定することができ、これは、依然として、追跡メタデータにアクセスするための更新が行われることを可能にする(外部ストレージへのページングなどの動作の制御の効率を高めることによって性能を向上させるのに役立つ傾向がある)が、少なくともいくつかの他の要求タイプが対応するメモリ領域に書込むことを防止する。部分読取り専用許可に関連付けられた領域に書込む能力を書込み要求タイプの限られたサブセットに制限することによって、これは、攻撃者が利用するために利用可能な攻撃面を低減し、そのような攻撃に対する保護を増加させる。
【0014】
いくつかの例では、メタデータ更新書込み要求は、制限されたサブセット内の書込み要求の唯一のタイプであり得る。この場合、オペレーティングシステムが、ステージ2アクセス許可情報によって部分読取り専用としてマークされたメモリ領域に記憶されたステージ1変換テーブルエントリを更新する必要がある場合、更新は失敗し、ハイパーバイザにトラップされる可能性があり、ハイパーバイザは、オペレーティングシステムによって要求された更新が適切であるかどうかを決定することができ、制御をオペレーティングシステムに戻す前に更新をエミュレートすることができる。
【0015】
しかしながら、実際には、ステージ1変換テーブルエントリへの更新は比較的頻繁である可能性があり、したがって、各更新時のハイパーバイザへのトラッピングは、性能に影響を及ぼす可能性がある。したがって、書込み要求タイプの制限されたサブセットが、所定の実行状態にある処理回路によって実行される少なくとも1つの所定のタイプの変換テーブルエントリ更新命令に応答して発行される書込み要求も含むことが有用であり得る。一方、所定の実行状態にある処理回路によって実行される少なくとも1つのタイプの記憶命令に応答して発行される書込み要求は、書込み要求タイプの制限されたサブセットから除外され得る。したがって、部分読取り専用領域への書込みを許可される書込み要求のタイプを制限することによって、これは、攻撃者が記憶命令の挙動を修正してステージ1アドレス変換テーブルエントリの破損を引き起こす機会を低減する。部分読取り専用領域に書込む能力は、変換テーブルエントリを更新することを意図した専用命令タイプの限られたサブセットに制限されるので、これは、オペレーティングシステムコードの一部で使用される他のタイプの汎用記憶命令(コード作成者が変換テーブルエントリを更新することを意図していない)をハッキングして、メモリの部分読取り専用領域に記憶された変換テーブルエントリを破損させることができないことを意味する。変換テーブルエントリ更新命令は、セキュリティを高めるために、メモリへの書込みをトリガするために使用される他のタイプの記憶命令に応答して実行されない少なくとも1つの追加のチェックを処理回路に実行させることができる。
【0016】
所定の実行状態は、オペレーティングシステムの特権レベルに関連付けられた実行状態であってもよい。例えば、以下の例では、所定の実行状態は、例外レベルEL1であってもよい。いくつかの例では、所定の実行状態によって課される書込み制限は、処理回路がその所定の実行状態又はより特権の低い実行状態にあるときにのみ適用され得る。代替的に、部分読取り専用としてマークされた領域に対する書込み制限は、現在の実行状態にかかわらず適用することができ、したがって、所定の実行状態を含む全ての実行状態において適用される。それにもかかわらず、少なくとも所定の実行状態で発行されたメモリアクセス要求に対して、その所定の実行状態で発行されたいくつかの書込み要求タイプが許可され、他の書込み要求タイプが許可されないように、部分読取り専用許可に基づいて書込み能力に対する制限が課されるので、これは、変換テーブルエントリ内のアクセス追跡メタデータを更新するために書込みを発行するメモリ管理回路の能力を損なうことなく、ステージ1変換テーブルエントリを記憶するために使用されるいくつかのメモリ領域内のデータを更新するオペレーティングシステムの能力に対する更なる制限を可能にする、同じく実装されている任意の特権ベースの制御に直交する追加の制御を提供する。
【0017】
いくつかの実装形態では、メモリ管理回路は、部分読取り専用許可を有するメモリ領域に書込むために、所定の実行状態よりも特権が与えられた実行状態で処理回路によって実行される少なくとも1つのタイプの記憶命令に応答して発行される書込み要求を許可するように構成されている。しかしながら、実際には、これは必須ではなく、典型的には、より特権のある実行状態で動作するハイパーバイザは、いずれの場合も、所定の実行状態でオペレーティングシステムによって使用されるステージ2変換テーブルとは異なる変換テーブルのセットを使用することができ、したがって、ステージ1変換テーブルエントリを記憶するために使用されるメモリ領域が、オペレーティングシステムによって使用されるステージ2変換テーブルにおいて部分読取り専用としてマークされている場合でも、これは、同じメモリ領域が、ハイパーバイザによって使用される変換テーブルにおいて部分読取り専用としてマークされなければならないことを意味しない。そのメモリ領域は、ハイパーバイザによって使用される変換テーブル内で書込み可能として定義することができ、したがって、オペレーティングシステムによって使用されるステージ2変換テーブルがその領域を部分読取り専用としてマークする場合でも、ハイパーバイザは、依然として、対応するステージ1変換テーブルエントリ(以下の例で更に説明するように、ステージ1アドレスマッピング自体及び/又は保護エントリを定義するビットフィールドなど)内に情報を設定することができる。
【0018】
ステージ2アクセス許可情報は、対応ステージ2変換テーブルエントリによって直接又は間接に(又は両方の組み合わせで)指定することができる。直接指定では、ステージ2変換テーブルエントリの符号化自体がステージ2アクセス許可情報を指定する。間接指定では、ステージ2変換テーブルエントリの符号化は、ステージ2変換テーブルエントリとは別の構造に記憶されたステージ2アクセス許可情報の複数のセットのうちの1つを参照する値を指定し得る。例えば、対応許可タイプを示す符号化に各々設定することができるいくつかの許可フィールドを含む許可間接レジスタを提供することができる。ステージ2変換テーブルエントリの一部は、許可間接レジスタの許可フィールドのうちのどれが、そのステージ2変換テーブルエントリに対するステージ2アクセス許可情報を提供するかを選択するために使用されるインデックス値として解釈され得る。したがって、いくつかの例では、部分読取り専用許可を指定する情報は、ステージ2変換テーブルエントリ内で直接指定され得る。他の例では、部分読取り専用許可を指定する情報は、部分読取り専用許可を示すように符号化されるステージ2許可間接レジスタ(又は他のデータ構造)のフィールドへのインデックスを指定するステージ2変換テーブルエントリによって間接的に指定され得る。アクセス許可の間接指定を使用することは、ソフトウェアが、各変換テーブルエントリを個別に更新する必要なく、間接参照レジスタのそのフィールドへの単一の書込みによって間接参照レジスタの同じフィールドを各々参照するいくつかの異なる変換テーブルエントリの許可を更新することを可能にするので、有用であり得る。いくつかの実装形態では、間接レジスタを使用することはまた、変換エントリ自体において符号化され得るよりも多数の許可タイプのオプションをサポートするのを助けることができる。
【0019】
保護ステージ1変換テーブルエントリ
いくつかの実装形態は、ステージ2アクセス許可によって部分読取り専用としてマークされたメモリ領域内に記憶された全ての変換テーブルエントリが、所定の実行状態において発行される、要求タイプの制限されたサブセットのうちの1つではない書込み要求に対して読取り専用と見なされるべきであると仮定することができる。しかしながら、実際には、ステージ2変換エントリに対応する所与のメモリ領域は、異なるメモリ領域に対応する多数の異なるステージ1変換テーブルエントリを含む変換テーブルを記憶することができ、それらのメモリ領域の全てが、オペレーティングシステムからの不適切な書込みアクセス要求による破損から保護される対応ステージ1変換テーブルエントリを必要とするわけではない。例えば、異なるステージ1変換テーブルエントリによって表されるメモリ領域は、機密情報及び非機密情報の混合に対応し得る。対応メモリ領域が部分読取り専用許可を有するようにステージ2アクセス許可において設定されているにもかかわらず、オペレーティングシステムが非機密情報に関連付けられたステージ1変換テーブルエントリを更新することを可能にすることが依然として望ましい場合、1つのアプローチは、更新が許可されるかどうかを決定することができるハイパーバイザに各更新をトラップすることであり得る。しかしながら、そのような更新要求は比較的頻繁であり得、したがって、これは、性能の損失を引き起こし得る。
【0020】
したがって、以下で説明する例では、各ステージ1変換テーブルエントリは、そのエントリが、保護エントリとして符号化されていないステージ1変換テーブルエントリと比較して更新が制限される保護エントリであるかどうかを指定する符号化を有し得る。これにより、機密情報及び非機密情報に対応するエントリを互いに区別することがイネーブルになり、非保護エントリと比較して、それらの保護エントリの更新に対するより厳格なチェックが可能になる。例えば、部分読取り専用メモリ領域への書込みが許可される、上記で説明した所定のタイプの変換テーブルエントリ更新命令は、書込み要求によってターゲットにされたメモリ領域に記憶されたデータが保護エントリとして符号化されているかどうかのチェックを含み、メモリ領域の内容が保護エントリとして符号化されていることがわかったとき、メモリ領域の少なくともいくつかのビットへの書込みを抑制することができる。他方、非保護エントリについては、変換テーブルエントリ更新命令に応答して書込みを許可することができる(任意の他のアクセス許可チェックが満たされていると仮定する)。したがって、他の非保護エントリと区別して、ステージ1変換テーブルエントリを保護エントリとして符号化するためのサポートを提供することによって、これは、ハイパーバイザの介入なしに非保護エントリが更新されることを可能にすることができ、これは、性能を改善するのに役立つことができる。
【0021】
装置は、所与のステージ1変換テーブルエントリが保護エントリとしてマークされているかどうかに基づいて、所与のステージ1変換テーブルエントリによって指定されたアクセス許可又はアドレスマッピングへの更新を制限するかどうかをチェックするための保護エントリチェック回路を有することができる。変換テーブルエントリがアクセス追跡メタデータを指定する場合、アクセス追跡メタデータへの更新は、エントリが保護されているかどうかに基づいて制限されなくてもよく、したがって、更新されているステージ1変換テーブルエントリが保護エントリである場合であっても、(例えば、ページテーブルウォーク動作中に)ハードウェア内のメモリ管理回路によって生成されたメタデータ更新書込み要求が許可され得る。
【0022】
ステージ2アクセス許可情報で定義された部分読取り専用許可と、ステージ1変換テーブルエントリに対して使用される保護エントリ符号化との組み合わせは、いずれかの特徴を単独で使用する場合と比較すると、特に効果的であり得る。保護ステージ1変換テーブルエントリの符号化をサポートすることなく、ステージ2において部分読取り専用許可をサポートすることは可能であるが、上述のように、これは、ハイパーバイザへのより頻繁なトラップを必要とする傾向がある。したがって、これらの特徴の組み合わせは、特に効果的であり得る。
【0023】
いくつかの例では、エントリが保護エントリであるかどうかを符号化するステージ1変換テーブルエントリの情報は、処理回路の全てのモード又は動作状態においてエントリが保護エントリであるかどうかを示すものとして扱われる専用ビット又はフィールドであり得る。しかしながら、エントリが保護エントリであるかどうかを符号化するために使用されるステージ1変換テーブルエントリの情報が、処理回路の動作モード又は制御レジスタに記憶されたコントロール状態に応じて異なる方法で解釈されることも可能である。例えば、制御レジスタ内の制御値は、ステージ1変換テーブルエントリの特定のビット又はビットフィールドが、エントリが保護エントリであるかどうかを示すものとして解釈されるべきか、又は別の方法で(例えば、保護エントリ符号化をサポートしないシステムで使用されるレガシー符号化に従って)解釈されるべきかを示し得る。したがって、装置は、少なくとも1つの動作状態においてステージ1変換テーブルエントリを保護エントリとして符号化することをサポートすることができるが、ステージ1変換テーブルエントリが処理回路の全ての動作状態において保護されるかどうかを符号化することは必須ではない。いくつかの例では、ステージ1変換テーブルエントリが保護されるかどうかは、エントリ自体の符号化に部分的に依存し得、制御レジスタに記憶された制御値に部分的に依存し得る。
【0024】
保護エントリチェックタイプの読取りチェック書込み命令
処理回路は、所与のメモリシステムロケーションへの更新を要求するための保護エントリチェックタイプの読取りチェック書込み(read-check-write、RCW)命令をサポートし得る。保護エントリチェック回路は、処理回路が保護エントリチェックタイプのRCW命令を実行することに応答して、所与のメモリシステムロケーションからデータを読取り、所与のメモリシステムロケーションから読取られたデータが、保護エントリとして指定されたステージ1変換テーブルエントリと一致する値を有するかどうかをチェックし、所与のメモリシステムロケーションから読取られたデータが、保護エントリとして指定されたステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、ステージ1変換テーブルエントリのビットの更新制限されたサブセットが、読取りチェック書込み命令に応答して更新されることを防止することができる。したがって、処理回路によってサポートされる命令セットアーキテクチャにおいて、更新されるデータが保護ステージ1変換テーブルエントリの符号化と一致する値を有するかどうかのチェックをトリガする命令をサポートすることによって、これは、ハイパーバイザへの各更新をトラップする必要性を回避し、したがって、オペレーティングシステムがハイパーバイザの介入なしに非保護ステージ1変換テーブルエントリを更新して性能を改善するための機構を提供する。
【0025】
読取られたデータのチェックは、データが実際にステージ1変換テーブルエントリであることが意図されているのか、又は他の目的のために設定された値を有する単なる何らかのデータであるのかを確実に区別することができない場合があることに留意されたい。チェックは、データの値が、保護エントリとして指定されたステージ1変換テーブルエントリの符号化と一致するかどうかを決定してもよい(例えば、データのあるビットが、保護ステージ1変換テーブルエントリが所与のメモリシステムロケーションに記憶された場合にそれらのビットが有する値と一致するかどうかをチェックする)。
【0026】
RCW命令の保護エントリチェックタイプは、メモリの部分読取り専用領域への書込みを許可された書込み要求タイプの制限されたサブセットのうちの1つであり得、したがって、それは、メモリの領域が部分読取り専用としてマークされるとき、ステージ2アクセス許可チェックをパスし得る。
【0027】
所与のステージ1変換テーブルエントリが保護エントリであるかどうかを指定する情報の設定は、所定の実行状態よりも高い特権レベルで実行するハイパーバイザなどのソフトウェアによって制御することができる。例えば、ハイパーバイザは、対応オペレーティングシステムを初期化するときにステージ1変換テーブルエントリのセットをメモリに最初に書込むときに、特定の保護ステージ1変換テーブルエントリを指定することができる。これが可能なのは、ハイパーバイザによって使用される変換テーブル構造のステージ2変換テーブルエントリが、対応するメモリ構造への書込みがハイパーバイザによって書込まれることを制限しない場合があるからである。オペレーティングシステムは、その後、非保護ステージ1変換テーブルエントリを更新することを許可され得るが、保護エントリは、オペレーティングシステムによって実行される命令に応答して不変である少なくともいくつかのビットを有し得る。
【0028】
保護エントリチェックタイプのRCW命令の読取り、チェック、及び書込みは、保護エントリチェック回路によってアトミック動作として実行され得る。したがって、読取り、チェック、及び書込みは、その結果が完全に観察されるか、又は全く観察されない不可分な演算のセットとして扱うことができるので、RCW命令の保護エントリチェックタイプを実行する部分的な結果を確認するため、又はRCW命令に対して実行される読取りと書込みとの間の期間に、RCW命令によって読取り/書込みされるメモリロケーションに書込むためのデータ処理装置上で実行される他のソフトウェアプロセスにとっては不可能である。これは、RCW命令の保護エントリチェックタイプに応答して実行される読取りと書込みとの間の期間に所与のメモリシステムロケーションに書込むための別のソフトウェアプロセスにとって可能であった場合に起こる可能性がある競合状態の発生を保護する。
【0029】
メモリシステムロケーションへの更新が、保護エントリ符号化のチェックに続いて許可され、したがって、所与のメモリシステムロケーションの少なくとも1つのビットが、保護エントリチェックタイプのRCW命令に応答して更新される場合、保護エントリチェック回路は、所与のメモリシステムロケーションへの更新が、所与のメモリシステムロケーションに記憶されたステージ1変換テーブルエントリの保護仕様を変更することを禁止することができる。したがって、非保護エントリについては、オペレーティングシステムはそのエントリの一部を更新することが許されるが、オペレーティングシステムは、RCW命令を使用してそのエントリを保護エントリにすることはできない。また、保護エントリチェックタイプのRCW命令を実行することによって、保護エントリを非保護エントリに変換することはできない。これは、ハイパーバイザによって特定のステージ1変換テーブルエントリに対して導入された保護が、RCW命令を実行するオペレーティングシステムによって回避され得ないこと、及び攻撃者が、攻撃者によって作成された任意の変換テーブルエントリを、保護エントリがハイパーバイザによって許可されるという仮定に依存する他のセキュリティチェックを回避させ得る保護されたものとしてマーク付けさせることができないことを保証する。
【0030】
異なる実装形態は、保護ステージ1変換テーブルエントリへの更新が制限される程度を制御するための異なる機構を有し得る。
【0031】
いくつかの例では、更新制限されたビットのサブセットは、ステージ1変換テーブルエントリの全てのビットを含むことができる。したがって、保護エントリチェックタイプのRCW命令が実行され、所与のメモリシステムロケーションから読取られたデータが保護ステージ1変換テーブルエントリと一致する値を有することが判明した場合、所与のメモリシステムロケーションにおけるデータへの要求された更新は、その全体が抑制され得る。それにもかかわらず、これは、ステージ1変換テーブルエントリ内のアクセス追跡メタデータが、変換テーブルウォーク中にメモリ管理回路によってハードウェア内で生成されたメタデータ更新書込み要求に応答して更新されることを防止しない(RCW命令に応答して更新を制限するために使用される保護エントリチェックは、メタデータ更新書込み要求に適用されない)。
【0032】
他の例では、更新制限されたビットのサブセットは、ステージ1変換テーブルエントリの適切なビットのサブセットを含むことができ、その結果、保護エントリの場合であっても、いくつかのビットは保護エントリチェックタイプのRCW命令によって依然として更新され得るが、他のビットは更新されることが禁止される。更新制限されたビットのサブセットは、上述したように、オペレーティングシステムが保護エントリを非保護エントリに、又はその逆に変換することができることから保護するために、ステージ1変換テーブルエントリが保護エントリであるかどうかを符号化するために使用される少なくとも任意の1つ以上のビットを含むことができる。しかしながら、ハイパーバイザによって意図される保護を回避するリスクなしにオペレーティングシステムによって更新され得るステージ1変換テーブルエントリの他のビットが存在し得ることが認識され、したがって、エントリが保護エントリである場合であっても、いくつかのビットが更新されることを可能にすることが有用であり得る。
【0033】
更新制限されたビットのサブセットが適切なビットのサブセットを含む(少なくとも1つの他のビットが、保護エントリチェックタイプのRCW命令に応答して制限された更新を有しない)例では、いくつかの実装形態は、どのビットのサブセットが更新制限されたビットのサブセットであるかの選択を固定し得る。したがって、どのビットが適切なビットのサブセットにあるかの選択は、非プログラマブルでもよい。例えば、更新制限されたビットの選択は、処理回路によってサポートされる命令セットアーキテクチャによって規定されるハードワイヤードアーキテクチャ選択であり得る。
【0034】
代替的に、どのビットが更新制限されたビットのサブセット内にあるかの選択は、制御レジスタ内に記憶されたソフトウェアプログラマブル選択値に応じてプログラマブルであり得る。これは、特定のソフトウェアが、そのソフトウェアの必要性に応じて、どの特定のビットがその更新を制限されるべきかをプログラムすることを可能にすることができる。例えば、制御レジスタに格納されたソフトウェアプログラマブル選択値を更新する能力は、少なくともある閾値レベルの特権を有する実行状態で実行されるソフトウェアに制限されてもよく、これは例えばハイパーバイザレベルの特権であってもよい。上述した所定の実行状態で実行するソフトウェアは、ソフトウェアプログラマブル選択値に書込むことを許可されなくてもよい。
【0035】
いくつかの実装形態では、各有効なステージ1変換テーブルエントリは、そのエントリが保護エントリであるかどうかを指定する符号化を有し得る。しかしながら、無効なステージ1変換テーブルエントリは、保護又は非保護として符号化することができない場合があり、デフォルトで非保護エントリであると仮定することができる。この場合、無効なエントリは、RCW命令によって更新されることが許可されてもよく、更新によってエントリが有効かつ保護されない限り、エントリの任意の部分が更新されることが許可される。したがって、所与のメモリシステムロケーションから読取られたデータが無効なステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、保護エントリチェック回路は、所与のメモリシステムロケーションにおけるデータを保護エントリとして指定された有効なステージ1変換テーブルエントリにする更新以外の無効なステージ1変換テーブルエントリの更新を許可することができる。
【0036】
しかしながら、他の実装形態では、有効なステージ1変換テーブルエントリ及び無効なステージ1変換テーブルエントリの両方が、そのエントリが保護エントリであるかどうかを指定する符号化を有し得る。この場合、所与のメモリシステムから読取られたデータが、保護エントリとして指定された無効なステージ1変換テーブルエントリと一致する値を有すると決定することに応答して、保護エントリチェック回路は、所与のメモリシステムロケーションの無効なエントリ更新制限されたビットのサブセットが、読取りチェック書込み命令に応答して更新されることを防止することができ、所与のメモリシステムから読取られたデータが、保護エントリとして指定された有効なステージ1変換テーブルエントリと一致する値を有すると判定することに応答して、保護エントリチェック回路は、所与のメモリシステムロケーションの有効なエントリ更新制限されたビットのサブセットが、読取りチェック書込み命令に応答して更新されることを防止することができる。このアプローチは、現在はメモリへのアクセスを許可するために使用することができないが、後で有効にすることができるいくつかの無効なエントリを含む、いくつかのエントリが保護されているステージ1変換テーブルエントリのセットをハイパーバイザが初期化することを可能にし、その一方で、変換テーブルエントリがまだ有効でない期間における無許可の更新に対して依然として保護されるので、有用であり得る。
【0037】
いくつかの実装形態では、有効エントリ更新制限されたビットのサブセットは、無効エントリ更新制限されたビットのサブセットと同じビット位置にあり得る。代替的に、有効エントリ更新制限されたビットのサブセットは、無効エントリ更新制限されたビットのサブセットと比較して、変換テーブルエントリ符号化の異なるビットのサブセットであり得る。有効エントリ更新制限されたビットのサブセットは、ステージ1変換テーブルエントリの全てのビット、ステージ1変換テーブルエントリの非プログラマブルに選択された適切なビットのサブセット、又は制御レジスタに記憶されたソフトウェアプログラマブルな有効エントリ更新制限されたビット選択値に応じてステージ1変換テーブルエントリのプログラマブルに選択された適切なビットのサブセットのいずれかであり得る。同様に、無効エントリ更新制限されたビットのサブセットは、ステージ1変換テーブルエントリの全てのビット、ステージ1変換テーブルエントリの非プログラマブルに選択された適切なビットのサブセット、又は制御レジスタに記憶されたソフトウェアプログラマブル無効エントリ更新制限されたビット選択値に応じてステージ1変換テーブルエントリのプログラマブルに選択された適切なビットのサブセットのいずれかであり得る。どのビットが有効エントリ更新制限されたビットのサブセットであるかを選択するためにとられるアプローチは、どのビットが無効エントリ更新制限されたビットのサブセットであるかを選択するためにとられるアプローチと同じであっても又は異なっていてもよい。例えば、有効な保護エントリの全てのビットは、制限された更新を有することができ、無効な保護エントリのビットのサブセットのみが、制限された更新を有することができる。代替的に、更新制限されたビットは、無効/有効エントリの一方に対してプログラマブルに選択され得るが、他方に対してはプログラマブルに選択され得ない。例えば、1つの例示的な実装形態は、どのビットが有効エントリ更新制限されたビットのサブセットであるかを選択するためのマスクレジスタを提供することができるが、どのビットが無効エントリ更新制限されたビットのサブセットであるかの選択は、命令セットアーキテクチャによって規定された固定選択であり得る。したがって、有効ステージ1変換テーブルエントリ及び無効ステージ1変換テーブルエントリの両方においてどのビットが更新制限されるかを選択するための多種多様なオプションが存在することが理解されよう。
【0038】
いくつかの例では、有効なステージ1変換テーブルエントリは、その有効なステージ1変換テーブルエントリが保護エントリであるかどうかを示す第1のビットフィールドを含み得、無効なステージ1変換テーブルエントリは、その無効なステージ1変換テーブルエントリが保護エントリであるかどうかを示す第2のビットフィールドを含み得る。第1のビットフィールド及び第2のビットフィールドは、ステージ1変換テーブルエントリ符号化内の同じビット位置にあってもよいし、あるいはステージ1変換テーブルエントリ符号化内の異なるビット位置にあってもよい。いくつかの場合では、第1のビットフィールド及び第2のビットフィールドを異なるビット位置に配置することは、ソフトウェアがそのデータをどのようにレイアウトするかにおいて、ソフトウェアにより多くの柔軟性を提供し得る。無効な変換テーブルエントリ符号化は、任意の非変換テーブルデータに対してソフトウェアによって使用される。有効な変換テーブルエントリ符号化では、「保護状態」を符号化するために利用可能な限られたビットのみが存在し得る。したがって、保護ステータスを符号化するために使用されるビットフィールドが、有効エントリ及び無効エントリの両方において同じビット位置にあった場合、これは、ソフトウェアが、変換テーブルエントリとして使用するように意図されていないメモリロケーションにおいてそのデータをどのように使用することができるかを制約する可能性がある。第1のビットフィールド及び第2のビットフィールドのビットフィールド位置が異なることを可能にすることによって、無効なステージ1変換テーブルエントリ符号化内の第2のビットフィールドは、その位置が、有効なステージ1変換テーブルエントリ内の他の情報のためにすでに割り当てられたビット位置に起因して有効なステージ1変換テーブルエントリに適していない場合であっても、ソフトウェアによる通常データの使用に対して不都合を引き起こす可能性が低い位置に配置され得る。
【0039】
(有効又は無効な)保護ステージ1変換テーブルエントリの更新制限されたビットのサブセットへの更新の抑制は、異なる方法で許可され得る。いくつかの例では、更新制限されたビットのサブセットのうちの少なくとも1つが更新されるように要求されており、所与のメモリシステムロケーションから読取られたデータが、保護エントリを表すデータと一致する符号化を有すると決定された場合、保護エントリチェック回路は、更新制限されたビットのサブセット以外のビットに対する任意の更新を含む、所与のメモリシステムロケーションの更新をその全体において単に抑制することができる。この場合、書込みは、任意の更新制限されたビットに書込みを試みる場合に失敗する。
【0040】
他の例では、更新制限されたビットのサブセットの更新のみが抑制され得る一方で、所与のメモリシステムロケーションの少なくとも1つの他の(更新制限されていない)ビットの更新は依然として許可され得る。この場合、保護エントリについて、書込みは、書込みが更新することを許可されるビットへの更新について成功するが、RCW命令のオペランドに基づいて更新制限されたビットを変更するように要求されたとしても、更新制限されたビットを変更しない。
【0041】
保護エントリチェックタイプの読取りチェック書込み命令に応答して、処理回路は、所与のメモリシステムから読取られたデータが保護エントリとして指定されたステージ1変換テーブルエントリであるかどうかのチェックに基づいて、保護エントリチェックタイプの読取りチェック書込み命令によって要求された更新の少なくとも一部が抑制されるかどうかを示す少なくとも1つの条件ステータス値を設定し得る。少なくとも1つの条件ステータス値は、後続の条件付き命令(条件付き比較命令又は条件付き分岐命令など)によってテストされて、RCW命令によって要求された更新が成功したか否かに応じて後続の動作を条件付きにすることができる。RCW命令が成功したか失敗したかを知ることが有用である場合、これは、書込みが成功したかどうかを決定するために命令の更なるセットを実行する必要がないことを意味するので、性能を改善するのに役立つことができる。
【0042】
保護エントリチェックタイプのRCW命令は、様々な方法で実装することができる。例えば、処理回路は、RCW命令の保護エントリチェックタイプの以下のバリアントのうちの任意の1つ以上をサポートすることができる。
●保護エントリチェックタイプの読取りチェック書込み命令のスワップバリアント。このスワップバリアントに応答して、処理回路が後続の命令によってオペランドとして使用するために、所与のメモリシステムロケーションから読取られたデータを宛先レジスタに書込むように構成されている。このバリアントは、後続の命令が、更新前の変換テーブルエントリの前の状態を条件とする動作を実行できるようにするのに有用であり得る。
●保護エントリチェックタイプの読取りチェック書込み命令の記憶バリアント。記憶バリアントについて、処理回路が所与のメモリシステムロケーションから読取ったデータを宛先レジスタに書込むことなく、記憶バリアントを処理するように構成されている。このバリアントは、後続の動作が所与のメモリシステムロケーションの古い内容に依存する必要がない場合に、宛先レジスタを不必要に消費することを回避するために有用であり得る。いくつかの例では、スワップバリアント及び記憶バリアントは、共通の符号化を有することができ、スワップバリアントの宛先レジスタ指定子が所定の値を指定するとき、これは、命令を、所与のメモリシステムロケーションから読取られたデータを返す必要がない記憶バリアントとして扱わせることができる。他のアーキテクチャは、スワップバリアントとは別個のスタンドアロン命令として記憶バリアントを提供することができる。
●比較オペランドを指定する保護エントリチェックタイプの読取りチェック書込み命令の比較及びスワップバリアント。比較及びスワップバリアントについて、保護エントリチェック回路が所与のメモリシステムロケーションから読取られたデータと比較オペランドとの比較が比較条件を満たすかどうかを決定し、比較条件が満たされないときに所与のメモリシステムロケーションへの更新を抑制し、後続の命令によってオペランドとして使用するために所与のメモリシステムロケーションから読取られたデータを宛先レジスタに書込むように構成されている。また、比較及びスワップバリアントは、比較条件が満たされたかどうかを示すためにステータス情報を設定させてもよい(例えば、後続の条件付き命令によってテストすることができる1つ以上の条件フラグを設定する)。比較及びスワップバリアントに応答して、書込みが更新制限されたビットへの更新が要求されたときに、読取りデータが保護ステージ1変換テーブルエントリとして符号化されることによって、要求された書込み動作の少なくとも一部が抑制されているが、比較条件が満たされるときと比較して比較条件が満たされないときに状態情報が異なる状態に設定され得る。
●ビット設定/クリア命令。ビット設定/クリア命令について、所与のメモリシステムロケーションの更新が所与のメモリシステムロケーションにおけるデータの少なくとも1つの選択されたビットを設定又はクリアすることを含む。例えば、ビット設定/クリア命令のオペランドは、所与のメモリシステムロケーションにおけるデータ中の設定又はクリアされるべきビットの位置を示すビットマスクを指定し得る。任意選択で、ビット設定/クリア命令は、スワップバリアント並びに比較及びスワップバリアントと同様に、所与のメモリシステムロケーションから読取られたデータを後続の命令によってオペランドとして使用するために宛先レジスタに戻すこともできる。
【0043】
これらのバリアントの全てが、データ処理装置の任意の所与の実装形態においてサポートされる必要はないことが理解されるであろう。
【0044】
アンチエイリアシング
上記で説明した技法は、ステージ1変換テーブルエントリの特定のセットが、悪意のある当事者による攻撃を受けているオペレーティングシステムによる破損から保護されることを可能にするのに有用であり得る。これにより、特定の仮想アドレスを特定の中間アドレスにマッピングするエントリを破損から保護することができる。しかしながら、異なる仮想アドレスを同じ中間アドレスにマッピングする2つ以上の異なるステージ1変換テーブルエントリを提供することが可能である。したがって、特定のステージ1変換テーブルエントリが破損に対して保護されている場合であっても(部分読取り専用許可及び任意選択で保護エントリ符号化を使用することによって)、攻撃者が、別の仮想アドレスを保護ステージ1変換テーブルエントリによって指定された同じ中間アドレスにマッピングする別のステージ1変換テーブルエントリを設定して、その保護エントリに適用された保護を回避しようと試みる可能性があるというリスクがあり得る。この問題に対処するための1つのアプローチは、ステージ1変換テーブルエントリを設定又は使用するときにチェックを導入して、それらが、保護ステージ1変換テーブルエントリを使用してすでにマッピングされた中間アドレスにマッピングしないことをチェックすることであり得るが、これは、性能に関して非常にコストがかかり、実際に実装するのが困難である。
【0045】
以下で説明する例では、所与の中間アドレスに対応する所与のステージ2アクセス変換テーブルエントリは、所与の中間アドレスに対応するメモリ領域へのアクセスが許可されるために、所与の仮想アドレスから所与の中間アドレスへのステージ1アドレスマッピングを指定する対応するステージ1変換テーブルエントリを見つけるためにステージ1変換構造の変換テーブルウォークにおいてアクセスされる1つ以上のウォークされたステージ1変換テーブルエントリの各々がアンチエイリアシング条件を満たす必要があるという要件を示すアンチエイリアシング特性を所与の中間アドレスに対応するメモリ領域が有するかどうかを指定する符号化を有する。所与のウォークされたステージ1変換テーブルエントリに対するアンチエイリアシング条件は、(a)所与のウォークされたステージ1変換テーブルエントリが保護エントリとして指定され、更に部分読取り専用許可が所与のウォークされたステージ1変換テーブルエントリを記憶するメモリシステムロケーションの物理アドレスを導出するために使用されるステージ2アドレスマッピングを提供する関連するステージ2変換テーブルエントリに対するステージ2アクセス許可情報によって指定されるか、又は(b)読取り専用許可が関連するステージ2変換テーブルエントリに対するステージ2アクセス許可情報によって指定される、いずれかのときに、満たされると見なされる。メモリ管理回路は、対応ステージ2変換テーブルエントリが、ターゲット中間アドレスに対応するメモリ領域がアンチエイリアシング特性を有することを指定し、1つ以上のウォークされたステージ1変換テーブルエントリのいずれかがアンチエイリアシング条件を満たすのに失敗したと決定したことに応答して、メモリアクセス要求を拒否する。
【0046】
このアプローチは、ステージ1変換テーブルエントリのエイリアシングに基づいて上述した攻撃から保護する。攻撃に対して保護される必要がある機密情報に対応する所与の中間アドレスがあり、仮想アドレスをその中間アドレスにマッピングすることを識別するために使用されるステージ1変換テーブルエントリが、そのエントリを部分読取り専用メモリに記憶し、そのステージ1変換テーブルエントリを保護エントリとして符号化することによって保護される場合、ステージ2変換テーブルエントリを制御するハイパーバイザは、所与の中間アドレスに対応する所与のステージ2変換テーブルエントリをアンチエイリアシング特性を有するものとしてマークすることもできる。これは、攻撃者がオペレーティングシステムコードに、同じ中間アドレスにマッピングする新しいステージ1変換テーブルエントリを作成させるか、又は、異なる仮想アドレスが同じ中間アドレスにマッピングされるように変換テーブルウォークによるトラバーサルの経路上の既存のステージ1変換テーブルエントリを変更させても、攻撃者は、新しい/変更されたステージ1変換テーブルエントリをメモリの部分読取り専用領域に記憶させ(攻撃者はステージ2アクセス許可を制御できないので)、新しいエントリを保護エントリとして符号化させることができないことを意味する(攻撃者によって書込まれた領域がすでに部分読取り専用領域として示されている場合、攻撃者は、例えば上述のRCW命令を使用して書込みを実行するために書込み要求の制限されたサブセットを使用する必要があり、そのような書込み要求タイプは、書込まれている値を保護ステージ1変換テーブルエントリにさせることができないという制限を課すことができる)。また、攻撃者は、読取り専用領域に新しいエイリアシングエントリを書込むことができない。したがって、アンチエイリアシング特性が対応ステージ2変換テーブルエントリにおいて定義されているメモリ領域へのアクセス時に、ウォークされたステージ1変換テーブルエントリ(所与の仮想アドレスから所与の中間アドレスへのステージ1アドレスマッピングに到達するためにステージ1変換テーブル構造のトラバースにおいてウォークされることになる)の各々がアンチエイリアシング条件(ステージ2において設定されているPRO又は読取り専用許可のいずれかに基づき、ステージ1エントリも保護エントリであるとPROが指定されている場合)を満たすかどうかをチェックすることによって、これは、攻撃者が、部分読取り専用許可及び保護ステージ1エントリ機能を使用して上述の保護を回避する手段としてエイリアシングを使用することができることを防止する。
【0047】
上述した部分読取り専用許可及び保護エントリ符号化と同様に、アンチエイリアシング特性は、ステージ2アクセス変換エントリによって直接又は間接的に指定することができ、専用ビット若しくはビットフィールドによって、又はその解釈が処理回路の動作状態若しくは制御レジスタ内で指定された制御情報に依存する再利用ビット若しくはビットフィールドによって示すことができる。
【0048】
ステージ1トップレベルベースアドレス保護チェック
メモリ管理回路は、ステージ1変換テーブルベースアドレスレジスタ内の値に基づいて、ステージ1変換テーブル構造のステージ1トップレベル変換テーブルのステージ1トップレベルベースアドレスを決定することができる。上述した特徴は、特定のステージ1変換テーブルエントリの破損に対して保護することができるが、攻撃者がこれらの保護を回避しようと試みる別の方法は、ステージ1変換テーブルの保護セットを、攻撃者によって定義されたステージ1変換テーブルの代替セットと置換するように、ステージ1トップレベルベースアドレスを、認可された使用のために意図されたアドレスとは異なるアドレスを指すように修正することであり得る。
【0049】
そのような攻撃に対する監視のための1つのアプローチは、オペレーティングシステムによって要求されたステージ1変換テーブルベースアドレスレジスタに対する任意の更新をトラップして、オペレーティングシステムによって要求された更新が適切であるかどうかをハイパーバイザにチェックさせることであり得る。したがって、ステージ1変換テーブルベースアドレスレジスタへの更新に対してハードウェアによって実施されるチェックを提供することは必須ではなくてもよい。
【0050】
しかしながら、実際には、オペレーティングシステムによるステージ1変換テーブルベースアドレスレジスタへの更新は、比較的頻繁であり得(例えば、オペレーティングシステムは、各コンテキストスイッチに対してこれを行い得る)、したがって、ハイパーバイザへの各更新をトラップすることは、性能コストを招き得る。したがって、いくつかの追加のチェックは、性能を改善するのに有用であり得る。
【0051】
そのような追加のチェックの一例は、ステージ1トップレベルテーブル部分読取り専用チェックであり得、これは、ステージ1トップレベルベースアドレスが、関連するステージ2変換テーブルエントリが上記で説明した部分読取り専用許可を指定するメモリ領域に対応すべきであるという要件を実施する。したがって、ステージ1トップレベルテーブル部分読取り専用チェックが有効にされるときに、メモリ管理回路は、ステージ1トップレベルベースアドレスが、関連するステージ2変換テーブルエントリが部分読取り専用許可を指定しない中間アドレスに対応すると決定したこと応答して、失敗をシグナリングする。例えば、このチェックは、ステージ1トップレベルベースアドレスレジスタに記憶されたステージ1トップレベルベースアドレスに基づいて変換テーブルウォークを実行するときに実行されてもよい。このチェックは、ハイパーバイザが、オペレーティングシステムによって使用されることが許可されたステージ1トップレベル変換テーブルを保持するメモリの領域(すでにハイパーバイザによって安全であると検証されている可能性がある)を部分読取り専用として定義することができることを意味する。攻撃者は、メモリのいくつかの他の領域において任意のステージ1トップレベル変換テーブルを定義することができず、その任意のステージ1トップレベル変換テーブルをページテーブルウォークのために使用させることができず、したがって、対応ステージ2変換テーブルエントリにおいてハイパーバイザによって定義された部分読取り専用領域への正しいベースアドレスマッピングを介してアクセス可能な正しいステージ1変換テーブルのために定義された保護マッピング及び部分読取り専用保護をバイパスする手段としてベースアドレスの再プログラミングを使用することができない。
【0052】
いくつかの実装形態では、ステージ1トップレベル部分読取り専用チェックは、永続的にイネーブルにされていると見なされてよく、したがって、このチェックがイネーブルにされているかディセーブルにされているかのプログラマブルな制御は存在しなくてよい。
【0053】
しかしながら、他の実装形態では、メモリ管理回路は、制御レジスタに記憶されたステージ1トップレベル部分読取り専用チェックイネーブル制御値に基づいて、ステージ1トップレベルテーブル部分読取り専用チェックがイネーブルにされるかどうかを決定し得る。制御レジスタ内のステージ1トップレベル部分読取り専用チェックイネーブル制御値に書込む能力は、特権の閾値レベル以上で実行するソフトウェアに制限され得る(例えば、特権の閾値レベルは、前述の所定の実行状態に関連付けられた特権よりも特権が与えられたハイパーバイザレベルの特権であり得る)。ステージ1トップレベルテーブル部分読取り専用チェックをイネーブル又はディセーブルにする能力を提供することによって、これは、部分読取り専用許可を使用するように設計されていないレガシーソフトウェアとの後方互換性を可能にする。
【0054】
ステージ1変換テーブルベースレジスタへの不適切な更新に対して監視するためのチェックの別の例は、ステージ1変換テーブル構造又はステージ2変換テーブル構造のいずれかを使用するメモリ領域のためのステージ1トップレベルテーブル存在許可セットに基づくステージ1トップレベルテーブル存在許可チェックであり得る。ステージ1トップレベルテーブル存在許可は、対応メモリ領域が、ステージ1トップレベルベースアドレスレジスタ内のアドレスに基づくステージ1変換テーブルウォークにおいてアクセスされるトップレベルの変換テーブルとして有効に使用され得るステージ1トップレベル変換テーブルを記憶するために割り当てられることが許可されることを意味する。したがって、ステージ1トップレベルテーブル存在許可チェックがイネーブルにされるときに、メモリ管理回路は、ステージ1トップレベルベースアドレスに対応する所与のメモリ領域が、所与のメモリ領域がステージ1変換テーブル構造のステージ1トップレベルテーブルを記憶するために割り振られることを許可されることを示すステージ1トップレベルテーブル存在許可に関連付けられるかどうかを決定し、ステージ1トップレベルベースアドレスに対応する所与のメモリ領域がステージ1トップレベルテーブル存在許可を有しないときに、失敗をトリガする。
【0055】
ステージ1トップレベルテーブル存在許可チェックは、攻撃者がステージ1トップレベルベースアドレスレジスタ内のアドレスを更新して、トップレベル以外のステージ1変換テーブル構造の更なるレベルで使用されることに意図された更なるレベルのステージ1変換テーブルエントリのうちの1つを記憶するために使用されるメモリ領域を指し示すことができる更なるタイプの攻撃に対して監視するのに役立つ。言い換えれば、攻撃者は、全く新しい変換テーブルエントリを作成しようとするのではなく、変換テーブル構造の後のレベルのエントリを変換テーブル構造の前のレベルのエントリとして処理させ、その結果、その変換テーブルエントリから選択するために使用されるターゲットアドレスのビットが、意図されたビットのサブセットではなく(変換テーブルウォークへの入力アドレスのビットの異なるサブセットによってインデックス付けされた異なるレベルのテーブル)、変換テーブル構造の後のレベルで不適切にアクセスされたエントリによって指定されたアドレスマッピング又はアクセス許可が、変換テーブル構造を確立した当事者によって意図されたものとは異なる仮想アドレスに適用されるようにすることによって、メモリへの不適切なアクセスを引き起こす可能性もある。トップレベル変換テーブルエントリ以外のステージ1変換テーブルエントリを保持するために使用されるメモリ領域は、ステージ1トップレベルテーブル存在許可を有さないように定義することができるので、そのような攻撃は、ステージ1トップレベルテーブル存在許可を使用することから保護することができ、したがって、攻撃者がそのようなエントリを指すようにステージ1トップレベルベースアドレスを更新する場合、トップレベルエントリを記憶する許可の欠如が検出され、次いで、これが失敗をシグナリングさせ得る。
【0056】
少なくとも2つのステージ1トップレベルベースアドレスレジスタが、異なるメモリアクセスシナリオで使用するためのステージ1トップレベルベースアドレスを記憶するために提供されるいくつかの実装形態では、ステージ1トップレベルテーブル存在許可の少なくとも2つのバリアントがサポートされ得、各バリアントは、複数のステージ1トップレベルベースアドレスレジスタのそれぞれのサブセットに対応する。ステージ1トップレベルテーブル存在許可の所与のバリアントが所与のメモリ領域に対して指定されるときに、対応するメモリ領域は、所与のバリアントに対するステージ1トップレベルベースアドレスレジスタの対応するサブセットのうちの1つを使用してアクセスされるステージ1トップレベル変換テーブルを記憶するために割り振られることが許可されるが、所与のバリアントに対する対応サブセットのメンバではないステージ1トップレベルベースアドレスレジスタを使用してアクセスされるステージ1トップレベル変換テーブルを記憶するために割り振られることは許可されないものとして示される。したがって、ステージ1トップレベルベースアドレスレジスタの対応サブセットが特定のステージ1トップレベルベースアドレスレジスタを含まないステージ1トップレベルテーブル存在許可を割り当てられたメモリ領域中のアドレスを指定する特定のステージ1トップレベルベースアドレスレジスタを使用してページテーブルウォークを実行する試みがある場合、失敗がトリガされ得る。ベースアドレスレジスタのそれぞれの特定のサブセットについてステージ1トップレベル変換テーブルのための対応メモリ領域を使用する許可を示す異なるステージ1トップレベルテーブル存在許可をサポートすることによって、これは、より正確な制御を可能にし、例えば、ベースアドレスレジスタのうちの1つにおいて使用されるように意図されたベースアドレスが別のベースアドレスレジスタのために使用されることを防止することができる。
【0057】
例えば、第1のステージ1トップレベルベースアドレスレジスタ及び第2のステージ1トップレベルベースアドレスレジスタをサポートする実装形態では、ステージ1トップレベルテーブル存在許可のバリアントは、
●対応サブセットが第1のステージ1トップレベルベースアドレスレジスタを含むが、第2のステージ1トップレベルベースアドレスレジスタを含まない第1のバリアント、
●対応サブセットが第2のステージ1トップレベルベースアドレスレジスタを含むが、第1のステージ1トップレベルベースアドレスレジスタを含まない第2のバリアント、
●対応するサブセットが第1のステージ1トップレベルベースアドレスレジスタ及び第2のステージ1トップレベルベースアドレスレジスタの両方を含む第3のバリアント、のうちの少なくとも2つを含み得る。
【0058】
一例では、所与の仮想アドレスに対してステージ1ページテーブルウォークを実行するときに、メモリ管理回路は、所与の仮想アドレスの最上位ビットの一部が全て0であるか否かに基づいて、トップレベル変換テーブルにアクセスするために第1のステージ1トップレベルベースアドレスレジスタ及び第2のステージ1トップレベルベースアドレスレジスタのいずれを使用するかを選択することができる。この選択のために考慮される最上位ビットの数は、固定されるか、又はソフトウェアによって構成された制御値を使用してプログラマブルであるかのいずれかであり得る。このアプローチは、例えば、変換テーブルの異なるセットを使用して仮想アドレス空間の上位及び下位範囲が変換されることを可能にするために有用であり得る。例えば、アドレスの最上位ビットが全て0に設定された下位アドレス範囲をユーザアドレス空間に使用することができ、アドレスの最上位部分に少なくとも1つの非0ビットを有する上位アドレス範囲をカーネルアドレス空間に使用することができる。
【0059】
所与のメモリ領域に対するステージ1トップレベルテーブル存在許可が、その所与のメモリ領域に対応するステージ1変換テーブルエントリのステージ1アクセス許可内で符号化されることが可能であり得るが、その場合、ステージ1トップレベルテーブル存在許可を符号化するために使用されるビットが、特権のオペレーティングシステムレベルを有する実行状態において実行する命令によって修正されることを防止するために、少なくとも1つの更なる保護機構を実装することが望ましい場合がある。
【0060】
代わりに、メモリ管理回路が、ステージ1トップレベルベースアドレスに対応する関連付けられたステージ2変換テーブルエントリの符号化に基づいて、所与のメモリ領域がステージ1トップレベルテーブル存在許可に関連付けられているかどうかを決定することがより便利であり得る。関連付けられたステージ2変換テーブルエントリを使用して、所与のメモリ領域がステージ1トップレベル変換テーブルを保持することを許可されるかどうかを示すことによって、これは、一般にステージ2変換テーブルエントリを更新することができないオペレーティングシステムコードによってトリガされるステージ1変換テーブルエントリへの更新に対する制御を簡略化する。
【0061】
この場合も、いくつかの実装形態では、ステージ1トップレベルテーブル存在許可チェックは、永続的に有効化されていると見なされ得る。
【0062】
代替的に、メモリ管理回路は、制御レジスタに記憶されたステージ1トップレベルテーブル存在許可チェックイネーブル制御値に基づいて、ステージ1トップレベルテーブル存在許可チェックがイネーブルにされるかどうかを決定し得る。ステージ1トップレベルテーブルに制御レジスタ内の存在許可チェックイネーブル制御値を書込む能力は、特権の閾値レベル以上で実行するソフトウェアに制限され得る(例えば、特権の閾値レベルは、特権のハイパーバイザレベルであり得る)。ステージ1トップレベルテーブル部分読取り専用チェックをイネーブル又はディセーブルにする能力を提供することによって、これは、ステージ1トップレベルテーブル存在許可を使用しないレガシーソフトウェアとの後方互換性を提供する。
【0063】
また、上述したようにベースアドレスレジスタの異なるサブセットに対応してサポートされるステージ1トップレベルテーブル存在許可の2つ以上のバリアントが存在する実装形態では、制御レジスタに記憶された少なくとも1つの制御値によって定義される少なくとも1つの更なる制御が存在する可能性があり、この制御値は、ステージ1トップレベルテーブル存在許可の異なるバリアントが、ステージ1トップレベルベースアドレスレジスタの対応するサブセットのための対応するメモリ領域の使用のみをイネーブルにするものとして扱われるべきかどうか、又は各バリアントが、対応するメモリ領域がステージ1トップレベルベースアドレスレジスタのいずれかのために使用されることをイネーブルにするために使用され得るかどうかを示す。したがって、ステージ1トップレベルベースアドレスを提供するために使用されるベースアドレスレジスタが、ステージ1トップレベルベースアドレスを含むメモリ領域に対して指定されたステージ1トップレベルテーブル存在許可のバリアントによってイネーブルにされたベースアドレスレジスタのサブセットのうちの1つでないときにトリガされる上述の失敗は、少なくとも1つの更なる制御に基づいてイネーブル又はディセーブルにされ得る。いくつかの例では、使用されるステージ1トップレベルベースアドレスレジスタとステージ1トップレベルテーブル存在許可のバリアントとの特定の組み合わせに対して失敗が生成されるかどうかを構成するために別個の制御が提供され得る。例えば、1つの制御値は、ベースアドレスを含むメモリ領域が上述したステージ1トップレベルテーブル存在許可の第1のバリアントを有するときに、第2のステージ1トップレベルベースアドレスレジスタ内のベースアドレスを使用するページテーブルウォーク上で失敗が生成されるかどうかを制御するために提供され得、第2の制御値は、ベースアドレスを含むメモリ領域がステージ1トップレベルテーブル存在許可の第2のバリアントを有するときに、第1のステージ1トップレベルベースアドレスレジスタ内のベースアドレスを使用するページテーブルウォーク上で失敗が生成されるかどうかを制御するために提供され得る。
【0064】
ステージ1トップレベルテーブル部分読取り専用チェック及びステージ1トップレベルテーブル存在許可チェックの両方をサポートするいくつかの例では、別個のイネーブル制御値を使用して、これらのチェックを個々に別個にイネーブル又はディセーブルにすることが可能であり得る。代替的に、単一の制御値は、両方のチェックを一緒にイネーブル/ディセーブルにすることができ、その結果、サポートされるオプションは、両方のチェックがイネーブルにされるか、又は両方のチェックがディセーブルにされるかのいずれかであり得るが、一方のチェックをイネーブルにして、他方のチェックをしないことはできない場合がある。
【0065】
他の実装形態は、両方のタイプのチェックをサポートしない場合がある。例えば、いくつかの実装形態では、これらのチェックの一方又は他方が十分であると見なされ得る。
【0066】
部分読取り専用許可に関して、ステージ1トップレベルテーブル存在許可は、例えば、変換テーブルエントリの符号化において直接指定された情報及び/又は許可レジスタを参照して変換テーブルエントリによって間接的に指定された情報を使用して、変換テーブルエントリによって直接又は間接的に(又は両方の組み合わせで)指定することができる。
【0067】
アーキテクチャシミュレーション
上述の技法は、上述の命令デコーダ及び処理回路を実装するために設けられたハードウェア回路を有するデータ処理装置内で実装されてもよい。
【0068】
しかしながら、同じ技法はまた、ホストデータ処理装置上で実行されてターゲットコードの実行のための命令実行環境を提供するコンピュータプログラムで実装されてもよい。そのようなコンピュータプログラムは、ホストデータ処理装置自体がそのアーキテクチャをサポートしていなくても、特定の命令セットアーキテクチャに従ってターゲットコードを実際にサポートするハードウェア装置上に提供されるアーキテクチャ環境をシミュレートするようにホストデータ処理装置を制御することができる。コンピュータプログラムは、上述した処理回路及びメモリ管理回路の機能をエミュレートする処理プログラムロジック及びメモリ管理プログラムロジックを有してもよく、部分読取り専用許可及び上述した様々なチェックのサポートを含む。そのようなシミュレーションプログラムは、例えば、ある命令セットアーキテクチャに対して書込まれたレガシーコードが、異なる命令セットアーキテクチャをサポートするホストプロセッサ上で実行されている場合に有用であり得る。また、シミュレーション実行環境上でソフトウェアを実行することにより、新しいアーキテクチャをサポートするハードウェアデバイスの進行中の開発と並行してソフトウェアのテストを可能にすることができるため、シミュレーションは、新しいアーキテクチャバージョンをサポートするハードウェアを処理する前に、命令セットアーキテクチャの新しいバージョンのソフトウェア開発を開始することを可能にすることができる。シミュレーションプログラムは記憶媒体に記憶されてもよく、この記憶媒体は、非一時的記憶媒体であってもよい。
【0069】
データ処理装置の具体例
図1は、データ処理装置2の例を概略的に示す。データ処理装置は、いくつかのパイプラインステージを含む処理パイプライン4を有する。この例では、パイプラインステージは、命令キャッシュ8から命令をフェッチするためのフェッチステージ6と、パイプラインの残りのステージによって処理されるマイクロオペレーション(復号命令)を生成するために、フェッチされたプログラム命令を復号するための復号ステージ10と、マイクロオペレーションに必要なオペランドがレジスタファイル14内で利用可能であるかどうかをチェックし、所与のマイクロオペレーションに必要なオペランドが利用可能になると、実行するためのマイクロオペレーションを発行する発行ステージ12と、結果値を生成するためにレジスタファイル14から読取られたオペランドを処理することによって、マイクロオペレーションに対応するデータ処理動作を実行するための実行ステージ16と、処理の結果をレジスタファイル14に書戻すためのライトバックステージ18と、を含む。これは、可能なパイプラインアーキテクチャの単なる一例にすぎず、他のシステムは追加のステージ又は異なる構成のステージを有してもよいことが理解されるであろう。例えば、アウトオブオーダプロセッサでは、プログラム命令又はマイクロオペレーションによって指定されたアーキテクチャレジスタを、レジスタファイル14内の物理レジスタを識別する物理レジスタ指定子にマッピングするためのレジスタリネームステージが含まれ得る。いくつかの例では、復号ステージ10によって復号されるプログラム命令と、実行ステージによって処理される対応するマイクロオペレーションとの間に1対1の関係が存在し得る。また、プログラム命令とマイクロオペレーションとの間に1対多又は多対1の関係があってもよく、例えば、1つのプログラム命令を2つ以上のマイクロオペレーションに分割してもよいし、2つ以上のプログラム命令を融合して1つのマイクロオペレーションとして処理してもよい。
【0070】
実行ステージ16は、異なるクラスの処理動作を実行するためのいくつかの処理ユニットを含む。例えば、実行ユニットは、レジスタ14から読取られたスカラオペランドに対して算術演算又は論理演算を実行するためのスカラ算術/論理ユニット(arithmetic/logic unit、ALU)20と、浮動小数点値に対して演算を実行するための浮動小数点ユニット22と、分岐動作の結果を評価し、それに応じて現在の実行点を表すプログラムカウンタを調節するための分岐ユニット24と、メモリシステム8、30、32、34内のデータにアクセスするロード/記憶動作を実行するためのロード/記憶ユニット26と、を含み得る。データアクセス命令のオペランドに基づいてロード/記憶ユニット26によって指定される仮想アドレスと、メモリシステム内のデータのストレージロケーションを識別する物理アドレスとの間のアドレス変換を実行するための、メモリ管理回路の一例である、メモリ管理ユニット(memory management unit、MMU)28が提供される。MMUは、メモリシステムに記憶されたページテーブルからのアドレス変換データをキャッシュするための変換ルックアサイドバッファ(translation lookaside buffer、TLB)29を有し、ページテーブルのページテーブルエントリはアドレス変換マッピングを定義し、また、例えば、パイプライン上で実行している所与のプロセスが所与のメモリ領域から命令を読取り、書込み、又は実行することを可能にするかどうかを支配するアクセスパーミッションを指定し得る。
【0071】
この例では、メモリシステムは、レベル1データキャッシュ30と、レベル1命令キャッシュ8と、共有のレベル2キャッシュ32と、メインシステムメモリ34と、を含む。これは可能なメモリ階層の一例にすぎず、キャッシュの他の配置を提供することができることが理解されるであろう。実行ステージ16に示される特定のタイプの処理ユニット20~26は単なる一例であり、他の実装形態は、処理ユニットの異なるセットを有してもよく、あるいは、同じタイプの複数のマイクロオペレーションを並行して処理できるように同じタイプの処理ユニットの複数のインスタンスを含んでもよい。
図1は、可能なプロセッサパイプライン実装形態のいくつかの構成要素の簡素化された表現にすぎず、プロセッサは、簡潔にするために図示していない多くの他の要素を含むことができることが理解されるであろう。
図1は、メモリ34へのアクセスを有する単一のプロセッサコアを示しているが、装置2は、各コアがそれぞれのキャッシュ8、30、32を有する、メモリ34へのアクセスを共有する1つ以上の更なるプロセッサコアを有することもできる。
【0072】
図2は、命令を実行するときに処理回路4が動作することができる異なる実行状態(例外レベルとも呼ばれる)を示す図である。この例では、4つの例外レベルEL0、EL1、EL2、EL3が存在し、例外レベルEL0は最低特権例外レベルであり、例外レベルEL3は最高特権例外レベルである。一般に、より特権のある例外レベルで実行するときに、処理回路は、より低い特権の低い例外レベルにアクセスできないいくつかのメモリロケーション又はレジスタ14にアクセスすることができる。
【0073】
この例では、例外レベルEL0は、例外レベルEL1で実行される対応するオペレーティングシステム又は仮想マシンによって管理されるアプリケーションを実行するためのものである。複数の仮想マシンが同じ物理プラットフォーム上に共存する場合、それぞれの仮想マシンを管理するために、EL2で動作するハイパーバイザが提供され得る。
図2は、ハイパーバイザが仮想マシンを管理し、仮想マシンがアプリケーションを管理する例を示すが、ハイパーバイザがEL0においてアプリケーションを直接管理することも可能である。
【0074】
必須ではないが、いくつかの実装形態は、処理回路のための別個のハードウェア区分されたセキュアな動作ドメイン及び非セキュアな動作ドメインを実装し得る。データ処理システム2は、セキュアドメインで動作するソフトウェアプロセスに関連付けられたデータ及びコードが、非セキュアドメインで動作するプロセスによるアクセスから隔離されることを保証するために、プロセッサ及びメモリシステム内に実装されたハードウェア機能を有してもよい。例えば、英国ケンブリッジのArm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャなどのハードウェアアーキテクチャを使用することができる。代替的に、他のハードウェア実施セキュリティ分割アーキテクチャを使用することもできる。セキュアアプリケーション(信頼できるサービス)は、セキュアドメイン内の例外レベルEL0で動作することができ、セキュア(信頼できる)オペレーティングシステム又は仮想マシンは、セキュアドメイン内の例外レベルEL1で動作することができる。いくつかの実装形態では、セキュア状態においてEL2に対するサポートはなく、ハイパーバイザは、非セキュアEL2においてのみ実行することができる。他の実装形態では、
図2のアスタリスクによって示されるように、セキュアEL2において実行されるセキュアハイパーバイザに対するサポートが存在し得る。いくつかの例では、非セキュアドメインとセキュアドメインとの間の遷移を管理するためのセキュアモニタプログラムが、例外レベルEL3において実行して提供され得る。他の実装形態は、セキュアモニタプログラムが必要とされない場合があるように、ハードウェア内のセキュリティドメイン間の遷移を監視することができる。
【0075】
アドレス変換
MMU 28によって実行される1つのタスクは、仮想アドレス(virtual address、VA)と物理アドレス(physical address、PA)との間のアドレス変換である。処理回路4上で実行されるソフトウェアは、仮想アドレスを使用してメモリロケーションを指定するが、これらの仮想アドレスは、MMU 28によって、アクセスすべきメモリシステムロケーションを識別する物理アドレスに変換され得る。仮想アドレスを使用する利点は、オペレーティングシステム(Operating System、OS)などの管理ソフトウェアが、ソフトウェアに提示されるメモリのビューを制御することを可能にすることである。OSは、どのメモリが可視であるか、そのメモリが可視である仮想アドレス、及びそのメモリにどのアクセスが許可されるかを制御することができる。これは、OSがアプリケーションをサンドボックス化し(1つのアプリケーションのリソースを別のアプリケーションから隠す)、基礎となるハードウェアからの抽象化を提供することを可能にする。仮想アドレスを使用する別の利点は、OSが、メモリの複数の断片化された物理領域を単一の連続仮想アドレス空間としてアプリケーションに提示することができることである。仮想アドレスは、アプリケーションを書くときにシステムの正確なメモリアドレスを知らないソフトウェア開発者にも利益をもたらす。仮想アドレスを用いると、ソフトウェア開発者は、物理メモリに関心を持つ必要がない。アプリケーションは、アドレス変換を実行するために協働するのがOS及びハードウェア次第であることを知っている。
【0076】
実際には、各アプリケーションは、物理システム内の異なるロケーションにマッピングされる、それ自体の仮想アドレスのセットを使用することができる。オペレーティングシステムは、異なるアプリケーション間で切り替えると、マップを再プログラムする。これは、現在のアプリケーションの仮想アドレスがメモリ内の正しい物理ロケーションにマッピングされることを意味する。
【0077】
仮想アドレスはマッピングを介して物理アドレスに変換される。仮想アドレスと物理アドレスとの間のマッピングは、変換テーブル(ページテーブルと呼ばれることもある)に記憶される。変換テーブルはメモリに格納され、ソフトウェア、典型的にはOS又はハイパーバイザによって管理される。変換テーブルは静的ではなく、ソフトウェア変更の必要に応じてテーブルを更新することができる。これは、仮想アドレスと物理アドレスとの間のマッピングを変更する。
【0078】
処理回路4が実行状態の特定のサブセットにあるとき(特に、処理回路4が非セキュアEL0又は非セキュアEL1にあるとき)に実行されるメモリアクセスについては、
図3に示されるように2ステージアドレス変換が使用される(他の実行状態については、ステージ1ページテーブルを使用する1つのステージのアドレス変換で十分である)。したがって、非セキュアEL0及び非セキュアEL1からの仮想アドレスは、二組のテーブルを使用して変換される。これらのテーブルは、仮想化をサポートし、ハイパーバイザが、所与の仮想マシン(virtual machine、VM)(ゲストオペレーティングシステム及びそのゲストオペレーティングシステムによって制御されるアプリケーションに対応する仮想マシン)によって見られる物理メモリのビューを仮想化することを可能にする。OSによって制御される変換のセットをステージ1と呼ぶ。ステージ1テーブルは、仮想アドレスを中間物理アドレス(IPA-前述の中間アドレスの一例)に変換する。ステージ1において、OSは、IPAが物理アドレス空間であると考える。しかしながら、ハイパーバイザは、ステージ2と呼ばれる変換の第2のセットを制御する。この第2の変換セットは、IPAを物理アドレスに変換する。
【0079】
ステージ1変換テーブル及びステージ2変換テーブルは、ステージ1及びステージ2についてそれぞれ
図4及び
図5に示されるような変換テーブルのいくつかのレベルを含む階層テーブル構造として実装される。この例では、ステージ1テーブル及びステージ2テーブルの両方が、最大4レベルのページテーブル、すなわち、レベル0(level 0、L0)、レベル1(level 1、L1)、レベル2(level 2、L2)、及びレベル3(level 3、L3)を有することができる。
【0080】
所与のアドレスに対する物理アドレスマッピングを見つけるために、1つ以上の変換テーブルルックアップを含む変換テーブルウォークが実行される。変換テーブルウォークは、仮想アドレスを物理アドレスに変換するのに必要なルックアップのセットである。非セキュアEL1&0変換レジームの場合、このセットは、ステージ1変換及びステージ2変換の両方のルックアップを含む(以下に示す
図6を参照)。ステージ1及びステージ2ルックアップを使用して成功した変換テーブルウォークによって返される情報は、以下の通りである。
●必要な物理アドレス(中間アドレスへのステージ1マッピング及び物理アドレスへのステージ2マッピングに基づいて変換された)。
●そのメモリ領域へのアクセスをどのように制御するかについての情報を提供する、ターゲットメモリ領域のアクセス許可及び/又はメモリ属性。これらは、ステージ1テーブル構造において定義されたステージ1アクセス許可及び/又は属性と、ステージ2テーブル構造において定義されたステージ2アクセス許可及び/又は属性とを含み得る。
【0081】
ステージ1構造及びステージ2構造のうちの所与の1つをトラバースするために、ウォークは、変換テーブルベースアドレスレジスタ(ステージ1についてはTTBR、ステージ2についてはVTTBR_EL2)において指定されたアドレスに基づいて、初期ルックアップのためのトップレベル(L0)変換テーブルの読取りから開始する。各変換テーブルルックアップは、以下のうちの1つを示す記述子を返す。
●エントリは、ステージ1構造又はステージ2構造のトラバーサルの最終エントリであり、探索されているアドレスマッピングを提供する。エントリが最後のL3にある場合、このエントリはページ記述子(Page descriptor、D_Page)と呼ばれ、一方、ウォークの最後のエントリを提供するエントリがより高いレベルのうちの1つにある場合、ブロック記述子(Block descriptor、D_Block)と呼ばれる。トラバーサルの最終エントリは、出力アドレス(OA、すなわちステージ1のIPA又はステージ2のPA)と、アクセスの許可及び属性とを含む。ブロック記述子が変換テーブル構造のより高いレベルで見つかる場合、これは、ブロック記述子が、L3における単一エントリによって表される4kBメモリページよりも大きいサイズのメモリ領域を表すことを意味する(L1及びL2におけるブロック記述子によって表される特定のサイズは、L1又はL2テーブルにインデックスを付けるために使用されるインデックスビットの数に依存し、この例では、L1及びL2ブロック記述子は、それぞれ1GB及び2MB領域を表す)。
●追加レベルのルックアップが必要とされる。この場合、エントリは、テーブル記述子(Table descriptor、D_Table)と呼ばれるが、これは、更なるレベルのテーブルにおけるそのルックアップのための変換テーブルベースアドレスを提供するためである。テーブル記述子は、任意選択で、最終変換に適用することができる他の階層属性を提供することもできる。レベル1及びレベル2での変換テーブルエントリの符号化は、ブロック記述子をテーブル記述子から区別する。
●記述子は無効である。この場合、メモリアクセスは、変換失敗を生成する。
【0082】
図4は、テーブルルックアップのための入力アドレスとして提供される仮想アドレスのそれぞれのビットを使用したステージ1変換テーブルのインデックス付けを示す。トップレベルテーブルL0のベースアドレスはTTBRから読取られ、L1、L2、L3テーブルのベースアドレスは、それぞれL0、L1、L2テーブル内のインデックス付きテーブル記述子に格納されたアドレスによって示される(L1テーブル又はL2テーブル内でブロック記述子が識別されない場合、L1又はL2のインデックス付きエントリ内でブロック記述子が見つかった場合、出力アドレスマッピングがすでに見つかっているので、そのレベルでトラバーサルが停止される)。ステージ1変換テーブルの所与のレベル内で選択すべき特定のエントリは、ルックアップのための入力アドレスとして提供される仮想アドレスのビットのあるサブセットに対応するインデックス値a、b、c、dに基づいて決定される。
図4は、1つの特定の例において、各インデックス値a、b、c、dに対して入力アドレスのどのビットが使用されるかを示す。所与のテーブル内の関連エントリのアドレスは、インデックスビットa、b、c、又はdの倍数を、TTBRに基づいて決定されるその所与のテーブルのベースアドレス、又は前のレベルのテーブル記述子内で指定されたアドレスに加算することによって得られる(乗数は、1つの変換テーブルエントリのサイズに対応するインデックス値に適用される)。
【0083】
同様に、
図5は、ステージ2テーブルルックアップのための入力アドレスとして提供される中間アドレスのそれぞれのビットを使用したステージ2変換テーブルのインデックス付けを示す。インデックス付けは、ステージ1について
図4に示されるものと同様であるが、L0テーブルのベースアドレスを提供するために異なるベースアドレスレジスタVTTBR_EL2を使用する。
図5の例に示されるように、ステージ2ルックアップの場合、ルックアップがL0又はL1のいずれかから開始すべきであることを指定することができる制御レジスタVTCR_EL2.SL0に記憶された値に基づいて、ステージ2変換テーブルのウォークが開始する開始レベルを変更することが可能である。ステージ2ルックアップがL0から開始する場合、レベル0、1、2、3に対するインデックス付けは、ステージ1に対する
図4と同様に、それぞれインデックス値a、b1、c、dを使用する。ステージ2ルックアップがL1から開始する場合、インデックス付けは同様の方法で実行されるが、ここでは、
図5に示されるように、ルックアップのトップレベル(L1)でより多くのインデックスビットb2が使用される。可変開始レベルを提供することは本質的な特徴ではなく、所望であれば省略することができる。
図4には示されていないが、ステージ1でのルックアップのための可変開始レベルを提供することも可能である。
【0084】
図6に示すように、実際には、ステージ1変換及びステージ2変換の両方を含む完全な変換テーブルウォークが実行されるとき、TTBRから取得された各ステージ1テーブルベースアドレス、及びステージ1 L0、L1、L2変換テーブルにおいてアクセスされたテーブル記述子は、それ自体がステージ2変換テーブルを使用して変換する必要がある中間アドレスになる。したがって、変換テーブルウォークがブロック記述子に遭遇せず、ページ記述子が見つかるL3までずっと進む場合、完全なページテーブルウォークプロセスは、以下のシーケンスで複数レベルのページテーブルにアクセスすることを含むことができる。
【0085】
●物理アドレスの中のステージ1 L0ページテーブルのベースアドレスのステージ2変換である(ステージ1 L0ベースアドレスは、ステージ1変換がオペレーティングシステムによって構成されるので、典型的には中間物理アドレスである)。ステージ2変換は、4回のルックアップ(ステージ2 L0;ステージ2 L1;ステージ2 L2;ステージ2 L3)である。
●ステージ1 L1ベースアドレス(中間物理アドレス)を取得するための、ターゲット仮想アドレスのL0インデックス部分「a」及び変換されたステージ1 L0ベースアドレスに基づいて取得されたアドレスにおけるエントリのステージ1 L0ルックアップである。
●物理アドレスの中のステージ1 L1ベースアドレスのステージ2変換である(ここでも4回のルックアップを含む)。
●ステージ1 L2ベースアドレス(中間物理アドレス)を取得するための、ターゲット仮想アドレスのL1インデックス部分「b」及び変換されたステージ1 L1ベースアドレスに基づいて取得されたアドレスにおけるエントリのステージ1 L1ルックアップである。
●物理アドレスの中のステージ1 L2ベースアドレスのステージ-2変換である(ここでも4回のルックアップを含む)。
●ステージ1 L3ベースアドレス(中間物理アドレス)を取得するための、ターゲット仮想アドレスのL2インデックス部分「c」及び変換されたステージ1 L2ベースアドレスに基づいて取得されたアドレスにおけるエントリのステージ1 L2ルックアップである。
●物理アドレスの中のステージ1 L3ベースアドレスのステージ2変換である(ここでも4回のルックアップを含む)。
●ターゲット仮想アドレスに対応するターゲット中間物理アドレスを識別するための、ターゲット仮想アドレスのL3インデックス部分「d」及び変換されたステージ1 L3ベースアドレスに基づいて取得されたアドレスにおけるエントリのステージ1 L3ルックアップである。
●オリジナルのターゲット仮想アドレスに対応してアクセスするための、メモリ内のロケーションを表すターゲット物理アドレスの中のターゲット中間物理アドレスのステージ2変換である(この場合も、4回のルックアップを含む)。
【0086】
したがって、キャッシングがなく、ステージ2開始レベルがL0であると仮定すると、変換は合計24回のルックアップを含むことになる。ステージ2のための開始レベルがL1である場合、これは、ルックアップの数を19に低減することができる(実行される5つのステージ2変換の各々について1回少ないルックアップ)。それにもかかわらず、上記のシーケンスから分かるように、ページテーブルウォークプロセス全体の実行は、アドレス変換のステージの各々のページテーブルのレベルの各々をステップスルーするための、メモリへの多数のアクセスを必要とする可能性があるため、非常に遅くなり得る。これが、変換テーブルウォークから導出された情報をMMU 28のTLB 29にキャッシュすることがしばしば望ましい理由である。キャッシュされた情報は、VAからIPAへの最終ステージ1アドレスマッピング、IPAからPAへの最終ステージ2マッピング、又はVAから直接PAへの組み合わされたステージ1及びステージ2マッピング(ステージ1構造及びステージ2構造の以前のルックアップから導出される)を含むことができるだけでなく、ステージ1テーブル及びステージ2テーブルのより高いレベルのページテーブルからのエントリも、MMU 28のTLB 29内にキャッシュすることができる。これにより、所与のターゲットアドレスの最終レベルのアドレスマッピングが現在アドレス変換キャッシュ内にない場合でも、フルページテーブルウォークの少なくともいくつかのステップをバイパスすることができる。
【0087】
図6は、2ステージアドレス変換に含まれる変換テーブルエントリのいくつかについて定義することができる特定の許可又は特性を指定する情報で注釈を付けられている。これらの許可及び特性が以下で説明されるが、後でより詳細に説明されるであろう。
【0088】
メモリ管理ユニットの例
図7は、メモリ管理ユニット28をより詳細に示す。
図1及び
図7は、簡潔にするために単一のMMU 28を示しているが、フェッチステージ6によって開始される命令フェッチアクセス及びロード/記憶ユニット26によって開始されるデータアクセスのためのメモリ管理動作をそれぞれ処理するために、別個の命令側MMU及びデータ側MMUを設けることも可能であり、この場合、命令側MMU及びデータ側MMUの両方が、
図7に示す構成要素を有することができる。TLB 29と同様に、MMU 28は、ルックアップされた変換テーブルエントリにおいて指定されたアクセス許可をチェックし、それらのアクセス許可に従ってメモリアクセス要求の処理を制御するためのアクセス制御回路50を含む。例えば、アクセス制御回路50は、特定のタイプのメモリアクセス要求(例えば、要求が読取り要求、書込み要求、又は命令フェッチ要求であるかどうかに基づいて、又は要求を発行させた実行された命令のタイプに基づいて)が、アクセスされているメモリの所与の領域に対する対応変換テーブルエントリにおいて指定された許可を満たすかどうかを決定するためのチェックを実装することができる。MMUはまた、変換テーブルウォーク制御回路52を含み、変換テーブルウォーク制御回路52は、変換テーブルからの必要な情報がTLB 29内ですでに利用可能でない場合に、メモリアクセス要求をメモリに発行して、
図4~
図6に上で示した変換テーブルウォークプロセス中に変換テーブルエントリの読取りを要求する。変換テーブルウォーク制御回路52は、ステージ1又はステージ2変換テーブル構造内の関連する変換テーブルエントリを取得するために読取られるメモリシステムロケーションのアドレスを生成する役割を果たすことができる。更に、変換テーブルウォークを実行している間、変換テーブルウォーク制御回路52は、変換テーブルウォークにおいてトラバースされている特定の変換テーブルエントリ内の追跡メタデータにアクセスするための更新を要求するメタデータ更新書込み要求を生成することができる。これらのメタデータ更新書込み要求は、特定のメモリ領域がアクセスされたことを反映するようにアクセス追跡メタデータを更新することができ、これは、ページングなどの動作を管理するのに有用であり得る。メタデータ更新書込み要求のアドレスは、アクセスされているデータ又は命令のアドレスではなく、変換テーブルウォークにおいてアクセスされる変換テーブルエントリのアドレスであるので、メタデータ更新書込み要求は、命令フェッチアドレスとして直接指定されないアドレス、又は処理回路4によって実行されるロード/記憶命令のオペランドから導出されるロード/記憶ターゲットアドレスを指定するために、ハードウェアにおいて生成される。
【0089】
MMU 28は、変換テーブルウォーク及びメモリ管理動作の他の態様を制御するための様々な制御レジスタへのアクセスを有する。例えば、制御レジスタは、
図4及び
図5に関して前述したように、ステージ1ベースアドレスレジスタTTBR_EL1及びステージ2ベースアドレスレジスタVTTBR_EL2を含んでもよい。レジスタTTBR_EL1内のステージ1ベースアドレスは、例外レベルEL1、EL2又はEL3で実行される命令に応答して書込み可能である。レジスタTTBR_EL2内のステージ2ベースアドレスは、例外レベルEL2又はEL3で実行される命令に応答して書込み可能である。場合によっては、EL1で実行される命令によってトリガされるTTBR_EL1への書込みがEL2にトラップされるべきであることを示すように制御値を設定して、EL2で動作するハイパーバイザが、オペレーティングシステムによって要求されている更新をチェックし、必要であれば更新を防止することができるようにすることが可能である。制御レジスタはまた、レジスタTCR_EL1、VTCR_EL2を含み、これらは、ステージ1及びステージ2変換及びアクセス許可チェックが実行される方法に影響を及ぼす様々な制御ステータス値を指定するために使用される。例えば、ステージ2ウォークのための開始レベルを指定する制御値は、VTCR_EL2において指定され得る。また、TCR_EL1又はVTCR_EL2制御レジスタは、どのタイプのセキュリティチェックがイネーブル/ディセーブルにされるかを指定する制御値を指定することができる。以下でより詳細に説明するように、制御レジスタはまた、有効エントリ及び無効エントリそれぞれについて、保護ステージ1変換テーブルエントリにおいて更新が制限される、更新制限されたビットのサブセットを指定するためのマスクレジスタ(RCWMask_Valid_EL2及びRCWMask_Invalid_EL2とラベル付けされている)を含むことができる。更なる制御レジスタを設けることもでき、制御レジスタに使用されるラベルを変更することができることが理解されよう。例えば、所与の変換テーブルエントリに対するアクセス許可情報を指定するために所与の変換テーブルエントリによって参照することができる間接アクセス許可情報を指定するために、1つ以上の許可間接レジスタを設けることができる。また、同じ情報を異なるフォーマットで制御レジスタ内に配置することも可能であり、したがって、1つの制御レジスタ又は別の制御レジスタへの情報の特定の割り当ては、本質的な特徴ではない。
【0090】
図7に示すように、装置は、保護エントリとして符号化されたステージ1変換テーブルエントリに対して更新が要求されたときに保護エントリチェックを実行するための保護エントリチェック回路54を有することができる(これについては以下でより詳細に説明する)。
図7の点線で示すように、処理システム内の異なるロケーションに保護エントリチェック回路54を実装することが可能である。例えば、保護エントリチェック回路54は、MMU 28のアクセス制御回路50の一部であってもよい。代替的に、保護エントリチェック回路は、保護エントリチェック回路54を使用してチェックされるべき所与のメモリアクセス要求によってアクセスされている物理メモリシステムロケーションにより近いメモリシステム構成要素56内に実装され得る。例えば、メモリシステム構成要素56は、キャッシュ30、32、複数のプロセッサコアによる共有メモリへのアクセスを管理するために使用される相互接続、又は特定のメモリストレージユニットに関連付けられたメモリコントローラであり得る。また、保護エントリチェック回路54は、システム内の複数のロケーション(例えば、MMU 28、ロード/記憶ユニット26、及び/又はメモリシステム構成要素56)に分散ロジックを含むことができる。
【0091】
変換テーブルアクセス許可及び属性
図8は、ステージ1変換テーブル構造及びステージ2変換テーブル構造における変換テーブルエントリの例示的なフォーマットを示す。同じ情報を異なる配置で表すことができ、したがって、記述子内のフィールドの特定の順序付け及びレイアウトは、
図8に示されているものとは異なる可能性があることが理解されよう。
【0092】
この例では、有効な変換テーブル記述子は、1に設定された最下位ビットを有し、無効な変換テーブル記述子は、0に設定された最下位ビットを有する。変換テーブル構造のレベル0、1、2のうちの1つで読取られた有効な記述子について、第2の最下位ビットは、記述子がテーブル記述子(第2の最下位ビットが1に設定される)であるか、又はブロック記述子(第2の最下位ビットが0に設定される)であるかを区別する。ステージ1構造又はステージ2構造のL3におけるページ記述子は、ページ記述子がブロック記述子から区別されることを可能にするために、1に設定された第2の最下位ビットを有し得る。もちろん、有効/無効エントリ、及びテーブル/ブロック/ページ記述子は、他の符号化方法によって区別することもできる。
【0093】
ステージ1エントリ及びステージ2エントリの両方に対して、有効なテーブル記述子は、ステージ1変換テーブル構造又はステージ2変換テーブル構造の次のレベルにおける変換テーブルのベースアドレスを示すネクストレベルテーブルアドレス60を提供する。有効なステージ1ブロック又はページ記述子は、ステージ1変換テーブル構造をインデックスするために使用される仮想アドレスに対応する中間アドレスマッピング62を提供する。有効なステージ2ブロック又はページ記述子は、ステージ2変換テーブル構造をインデックスするために使用される中間アドレスに対応する物理アドレスマッピング64を提供する。
【0094】
ステージ1ブロック及びページ記述子はまた、対応メモリ領域へのアクセスを制御するために使用されるステージ1アクセス許可66を提供する。例えば、ステージ1アクセス許可66(通常、EL1においてOSによって設定される)は、領域が実行可能命令の命令フェッチのために読取り、書込み、及び/又は使用されることを許可されるかどうかを指定することができる。
【0095】
同様に、ステージ2ブロック及びページ記述子は、対応メモリ領域へのアクセスを制御するために使用されるステージ2アクセス許可68を提供する。この場合も、ステージ2アクセス許可68(通常、EL2においてハイパーバイザによって設定される)は、領域が実行可能命令の命令フェッチのために読取り、書込み、及び/又は使用されることを許可されるかどうかを指定することができる。ステージ1アクセス許可66とステージ2アクセス許可68との間に競合が存在する場合、より制限的な属性のセットが優先され得る。
【0096】
ステージ1ブロック/ページ記述子又はステージ2ブロック/ページ記述子は、
図8に示されていないメモリ領域に関連付けられた他の属性を指定することもできる。例えば、これらの属性は、対応メモリ領域からのデータをキャッシュすることが許可されるかどうか、デバイスメモリへの異なるメモリアクセスの並べ替え又はマージが許可されないように領域がデバイスメモリとして定義されるかどうかなどの特性を指定することができる。
【0097】
ステージ1ブロック/ページ記述子はまた、所与のメモリ領域へのアクセス頻度を追跡するためにオペレーティングシステムによって使用され得るアクセス追跡メタデータを指定することができる。例えば、メタデータは、アクセスフラグ(access flag、AF)70及びダーティビット修飾子(dirty bit modifier、DBM)72を含んでもよい。
【0098】
周期的に、オペレーティングシステムは、監視されるメモリ領域のセットに対応するエントリ内のアクセスフラグをクリアすることができる。読取りアクセスがこれらのメモリ領域のうちの1つに対して行われるとき、アクセスフラグ70は、対応ステージ1ブロック又はページ記述子において設定され得る(以前のアクセスに続いてすでに設定されていない場合)(アクセスフラグ70を設定させるメモリアクセス要求は、前述の変換テーブルウォーク制御回路52によって生成されるメタデータ更新書込み要求のうちの1つであり得る)。監視期間の後、オペレーティングシステムは、アクセスフラグ70をチェックして、特定のページがアクセスされる頻度に関する情報から利益を得ることができる動作を支援することができる。例えば、オペレーティングシステムは、メモリ領域が何回アクセスされたかを追跡するメモリ領域ごとのエントリを有する更なる追跡データ構造をメモリ内に維持することができ、したがって、各監視期間の終了時に、アクセスフラグ70セットを有するメモリ領域に対応するその更なる追跡構造のエントリをインクリメントすることができる。したがって、いくつかの監視期間の後、その更なる追跡構造は、対応するメモリ領域へのアクセスの相対頻度の指示を提供する。これは、ページングなどの動作を制御するための有用な情報を提供することができ、対応データが、他のより頻繁にアクセスされるページと比較して外部ストレージにページングアウトするために優先順位付けされ得るメモリの最も頻繁にアクセスされないページを知ることが有用であり得る。
【0099】
同様に、DBM 72は、どのページが書込みを受けたかを追跡することを支援する。オペレーティングシステムが、所与のページが書込まれたかどうかを追跡したい場合、ページがマッピングされるときに、又は監視期間の開始のときに、オペレーティングシステムは、そのページに対するアクセス許可を「読取り専用」として設定し(ページが書込まれることを許可されるように意図されている場合であっても)、DBMビット72を設定することができる。DBMビット72が設定されているときに読取り専用ページへの書込みによってアクセス許可失敗が引き起こされると、オペレーティングシステムは、DBMビット72が設定されていることから、これが読取り専用許可の「真の」違反ではないと決定することができ、その代わりに、オペレーティングシステムに、書込み要求を受けるページを追跡するメモリに記憶されたデータ構造を更新させ、ページに対する書込みアクセス許可を更新させて、失敗をトリガすることなくページに現在書込むことができることを示すこともできる。監視期間の後、メモリ内の追跡データ構造をソフトウェアによって使用して、特定の領域をページングアウトする際に、その領域から修正されたデータを外部ストレージに書き戻す必要があるかどうか、又は(書込みが行われていない場合)、外部メモリ内の対応データは、データがクリーンであれば依然として同じであると仮定することができるので、オンチップメモリ内に記憶されたデータを領域をページングアウトする際に単に破棄することができるかどうかを決定することができる。
【0100】
アクセスフラグ70及びダーティビット修正子72は、変換テーブルエントリ内に記憶され得る可能なアクセス追跡データの単なるいくつかの例であり、他の例は、他のタイプのアクセス追跡メタデータを提供し得る。例えば、別の例では、マルチビットアクセスカウンタが、アクセス追跡メタデータとして提供され得る。また、別の例では、書込み要求に対する読取り専用アクセス許可違反の処理を修正し、書込み許可の更新をトリガするためにDBMビット72が使用される代わりに、前述のようにアクセスフラグ70がページへの最初のアクセス時に更新される方法と同様の方法で、DBMフラグ72をクリアした後のページへの最初の書込みに応答して、DBMフラグ72を直接更新することができる。
【0101】
図8に示すように、様々な変換テーブル記述子はまた、攻撃者による攻撃下でオペレーティングシステムコードによる破損からステージ1変換テーブルエントリを保護するのに有用であり得るいくつかの他の情報を含むことができる。典型的なオペレーティングシステムコードは、攻撃に対して安全であることを完全に検証することが困難な場合がある多くのコード行を含む場合があり、したがって、攻撃者がオペレーティングシステムコードの挙動を修正して、変換テーブルエントリを記憶するために使用されるメモリ領域への書込みを引き起こすことができ、これらのエントリ内のアドレスマッピング又は許可を修正して、無許可の形でメモリ領域にアクセスする権利を攻撃者に与えることができる可能性から保護するためのアーキテクチャ機構を提供することが望ましい。
【0102】
図8に示すように、攻撃に対してステージ1変換テーブルを強化するための以下に説明する追加の属性及び許可は、以下を含む。
●ステージ2ブロック/ページ記述子は、対応メモリ領域が部分読取り専用(partially-read-only、PRO)許可を有するかどうかを示す符号化を有するステージ2アクセス許可68を指定する(部分読取り専用許可は、「大部分読取り専用」許可と呼ぶこともできる)。
●ステージ1変換テーブル構造の全てのレベルにおける有効ステージ1記述子(テーブル記述子及びブロック/ページ記述子を含む)は、その変換テーブルエントリが、非保護エントリと比較して無許可の更新に対する追加の保護が提供される「保護」エントリであるかどうかを指定する符号化を有する。例えば、有効なステージ1記述子内のビットフィールド76は、エントリが保護エントリであるか否かを示すことができる。
●ステージ1変換テーブル構造の全てのレベルにおける無効ステージ1記述子はまた、その変換テーブルエントリが「保護された」エントリであるかどうかを指定する符号化を有し得る。これは、有効なステージ1変換テーブルエントリのための保護エントリを表すために使用されるビットフィールド76と比較して、変換テーブルエントリ符号化内の異なる位置にあり得るビットフィールド78を使用して示され得る。
●ステージ2ブロック/ページ記述子は、対応するメモリ領域がアンチエイリアシング特性を有するかどうかを指定するインジケータ79を有することができる。いくつかの例では、アンチエイリアシング特性の有無は、他のタイプの特性もシグナリングすることができる組み合わされたビットフィールドにおいて符号化され得るか、又は代替的に、アンチエイリアシングビットフィールドは、他の情報をシグナリングしないスタンドアロンビットフィールドであり得る。指定されている場合、アンチエイリアシング特性は、対応する物理アドレスへのアクセスが許可されるために、そのステージ2記述子にアクセスするために使用される中間アドレスを得るために変換テーブルウォークにおいてアクセスされる全てのステージ1変換テーブルエントリが、ビットフィールド76を使用して保護エントリとして指定され、対応するステージ2ブロック/ページ記述子が部分読取り専用許可74を示すメモリの領域に記憶される必要があることを示す。
●ステージ2ブロック/ページ記述子はまた、ステージ2アクセス許可68において、対応メモリ領域がステージ1変換のためのトップレベル変換テーブル(すなわち、
図4及び
図6の例におけるステージ1 L0テーブル)を保持することを許可されているかどうかを示すステージ1トップレベルエントリ存在許可80を指定し得る。一例では、ステージ2アクセス許可68の符号化は、ステージ1トップレベルエントリ存在許可がPRO許可の更なる属性として符号化されるようなものであってもよく、したがって、ステージ2アクセス許可68のために符号化されることを許される値は、以下を示す値を含んでもよい。
○ステージ1トップレベルエントリ存在許可なしのPRO許可、
○ステージ1トップレベルエントリ存在許可を伴うPRO許可、又は
○PRO許可又はステージ1トップレベルエントリ存在許可のいずれも有さない1つ以上の他のタイプの許可(例えば、読取り専用許可、読取り/書込み許可、及び/又は実行許可)である。
【0103】
この場合、ステージ1トップレベルエントリの存在許可をPRO許可とは独立に指定することができない場合がある。しかしながら、他の実装形態は、PRO許可が提供されない場合であってもステージ1トップレベルエントリ存在許可が指定され得るように、ステージ1トップレベルエントリ存在許可をPRO許可とは独立して符号化することができる。
【0104】
これらの属性及び許可の使用については、以下でより詳細に説明する。これらの属性の全てがあらゆる可能性のある実装形態においてサポートされる必要があるわけではないことが理解されるであろう。
図8は、S1及びS2アクセス許可が変換テーブルエントリの符号化において直接指定される例を示すが、許可レジスタにおいて指定された許可を使用して同じ情報を間接的に指定することも可能である。例えば、S1又はS2許可フィールド66、68は、許可レジスタのいくつかの許可フィールドのうちのどれが対応変換テーブルエントリに対するアクセス許可を指定するかを選択するインデックス値を指定することができる。また、変換テーブルエントリのいくつかのフィールドが、制御レジスタに記憶されたコントロール状態に依存した異なる方法で解釈されることも可能である。例えば、ステージ1変換テーブルエントリの保護エントリフィールド76は、制御レジスタに格納された制御値が第1の値を有するときにステージ1変換テーブルエントリが保護されるかどうかを示すものとして解釈されてもよく、制御値が第2の値を有するときに異なる方法で解釈されてもよい。同様に、ステージ2変換テーブルエントリのアンチエイリアシング特性フィールド79は、制御レジスタに記憶された制御値が第1の値を有するときに、ステージ2変換テーブルエントリがアンチエイリアシング特性を有するかどうかを示すものとして解釈され、制御値が第2の値を有するときに、異なる方法で解釈されてもよい。
【0105】
部分読取り専用許可
図9は、部分読取り専用(PRO)許可を有するものとしてステージ2アクセス許可68によってマークされたメモリ領域に対する書込みアクセス制御挙動を要約する。PRO許可を有するメモリ領域は、少なくとも、現在の実行状態がEL1(オペレーティングシステムコードが実行されると予想される状態)であるときに発行された書込み要求に対して、書込み要求タイプの制限されたサブセットに対して書込み可能であるが、書込み要求タイプに対して読取り専用として扱われる。いくつかの書込み要求タイプのみがメモリ領域を読取り専用と見なすので、この許可は、したがって、部分読取り専用許可として説明される。
【0106】
図9は、対応ステージ2変換テーブルエントリが領域をPRO許可を有するものとして定義するメモリ領域への書込みを許可された書込み要求及び禁止された書込み要求のタイプを要約する。書込みがEL1で発行されたときにPRO領域への書込みを許可された書込み要求タイプの制限されたサブセットは、変換テーブルエントリ内のアクセス追跡メタデータを更新するためにMMU 28によって生成されたメタデータ更新書込み要求、例えばアクセスフラグ70、又は上述のようにダーティビット修正子72が設定されている場合の書込み許可を含む。また、制限されたサブセットは、例外状態EL1において実行される少なくとも1つの所定のタイプの変換テーブルエントリ更新命令を含むことができ、この命令は、変換テーブルエントリを更新するためのそのような書込みを、変換テーブルエントリ以外のデータを更新するための書込みから区別するプログラムコードの意図を表現するために、変換テーブルエントリを更新する際に使用するように意図された専用タイプの命令とすることができる。例えば、所定のタイプの変換テーブルエントリ更新命令は、以下の
図12~
図14に関して説明される保護エントリチェック読取りチェック書込み(RCW)命令のバリアントを含むことができる。
図9に示されるように、例外状態EL0及びEL1のうちの1つにおいて実行される少なくとも1つの他のタイプの記憶命令に応答して発行される書込み要求は、メモリのPRO領域への書込みを禁止される。例えば、禁止書込み要求タイプは、処理回路4によってサポートされる命令セットアーキテクチャ内の大多数の記憶命令を含み得る。領域がPRO許可でマークされているときに変換テーブルエントリを更新する能力を命令タイプの限定されたセットに制限することによって、これは、ステージ1変換テーブルエントリを破損しようと試みるときに攻撃者が利用できる攻撃面を低減し、例えば、書込み要求の制限されたサブセットのうちの1つではない汎用記憶のアドレスオペランドを改ざんすると、メモリのPRO領域へのアクセスが許可されなくなる。
【0107】
任意選択で、実行状態EL2又は実行状態EL3のうちの1つで実行された記憶命令に応答して発行された書込み要求は、実行状態EL0又は実行状態EL1で実行された場合にその領域への書込みが禁止されていた記憶命令のタイプであっても、部分読取り専用領域への書込みが許可され得る。しかしながら、これは前述したように必須ではない。
【0108】
図10は、命令を処理する、及びメモリ管理動作を制御する方法を示すフロー図である。ステップ500において、処理回路4は、異なる特権レベルに関連付けられた複数の実行状態EL0~EL3のうちの1つにおいて命令を処理する。ステップ502において、メモリアクセス要求に応答して、MMU 28は、メモリアクセス要求によって指定されたターゲット仮想アドレス(VA)のターゲット物理アドレス(PA)への2ステージアドレス変換を実行し、ターゲットVAのターゲットPAへのマッピングは、ターゲットVAからターゲット中間アドレス(intermediate address、IPA)へのステージ1アドレスマッピング及びターゲットIPAからターゲットPAへのステージ2アドレスマッピングに依存する。ステップ504において、MMU 28のアクセス制御回路50は、対応ステージ2変換テーブルエントリにおいて指定されたステージ2アクセス許可情報68に少なくとも基づいて、メモリアクセス要求に対する許可チェックを実行する。許可チェックは、ステージ1アクセス許可情報66に基づくこともできる。ステージ2アクセス許可情報66は、ターゲットIPAに対応するメモリ領域がPRO許可を有するかどうかを指定する符号化を有する。ステップ506において、MMU 28は、メモリアクセス要求が所定の実行状態(例えば、EL1)において発行された書込み要求であり、ステージ2アクセス許可情報がPRO許可を指定し、書込み要求がメモリのPRO領域への書込みを許可された書込み要求タイプの制限されたサブセット以外の書込み要求タイプである場合、メモリアクセス要求を拒絶する。任意選択で、MMU 28はまた、PRO許可がステージ2アクセス許可情報によって指定され、書込み要求タイプが書込み要求タイプの制限されたサブセットのうちの1つでないときに、メモリアクセス要求が所定の実行状態以外の実行状態(例えば、EL0)で発行された書込み要求であるときに、メモリアクセス要求を拒否することができる。
【0109】
図11は、MMU 28のアクセス制御回路50によって実行される部分読取り専用チェックをより詳細に示す。ステップ600において、処理回路4が所定の実行状態(EL1)にあるときに、書込みメモリアクセス要求が発行される。書込み要求は、ターゲットVAを指定する。書込み要求は、処理回路によって実行されるロード/記憶命令に応答して処理回路4のロード/記憶ユニット26によって、又は命令フェッチを要求するときにフェッチステージ6によって発行された可能性がある。書込み要求は、変換テーブルウォークプロセス中に変換テーブルエントリ内のアクセス追跡メタデータを更新するためにMMU 28によって発行されるメタデータ更新書込み要求であってもよい。
【0110】
ステップ602において、ターゲットVAは、アクセスされるメモリシステムロケーションを識別するターゲットPAに変換される。変換を実行するために、MMU 28は、TLB 29内のターゲットVAをルックアップすることができ、ターゲットVAからターゲットPAへのマッピングがTLB 29内ですでに利用可能である場合、変換テーブルウォークは不要である。そうでなければ、
図6に示される変換テーブルウォークプロセスの少なくとも一部が必要とされ得るが、変換テーブルウォークのその部分についての対応変換テーブルエントリから導出された情報がすでにTLB 29内にキャッシュされている場合、いくつかの部分をスキップすることが可能であり得る。非セキュアEL1から発行された書込みメモリアクセス要求の場合、変換は、ステージ1変換テーブル及びステージ2変換テーブルの両方で定義されたマッピングに基づいて2ステージアドレス変換として実行されるが、ターゲットIPAが明示的に決定される必要を回避するために、対応するステージ1許可情報及びステージ2許可情報とともに、ターゲットVAからターゲットPAへの直接マッピング(ステージ1マッピング及びステージ2マッピングの両方に依存する)をキャッシュする組み合わされたステージ1/ステージ2 TLBが提供されることが可能であるので、これは必ずしも2つの別個の変換が実行される必要があることを意味しない。
【0111】
ステップ604において、アクセス制御回路は、対応するステージ2(stage-2、S2)変換テーブルエントリ(ターゲットIPAからターゲットPAへのマッピングを指定するステージ2エントリ)がPRO許可を指定するかどうかをチェックする。そうである場合、ステップ606において、アクセス制御回路は、処理されている書込み要求が書込み要求タイプの制限されたサブセットのうちの1つであるかどうかをチェックする。現在の書込み要求が書込み要求タイプの制限されたサブセットのうちの1つでない場合(少なくともメタデータ更新書込み要求を含む)、ステップ608において、メモリアクセス要求は拒否され、失敗が通知される。書込み要求が書込み要求タイプの制限されたサブセットのうちの1つである場合、部分読取り専用チェックにパスし、したがって方法はステップ610に進む。また、ステップ604において、対応ステージ2変換テーブルエントリがPRO許可を指定しなかった場合、ステップ606における部分読取り専用チェックを省略することができ、したがって、方法はステップ604から直接ステップ610に進む。
【0112】
ステップ610において、アクセス制御回路は、書込みメモリアクセス要求が進行することを可能にするために必要とされる任意の他のチェックが満たされるかどうかを決定する。例えば、これらのチェックは、ステージ1アクセス許可66を使用するチェック、PRO許可が指定されていない場合の他のステージ2アクセス許可68を使用するチェック、要求がセキュア状態又は非セキュア状態(セキュア状態をサポートする実装形態において)から発行されたかどうかに基づくセキュリティチェック、並びにターゲットメモリロケーションにおけるデータが保護変換テーブルエントリであるかどうかに関する
図12~
図14に関して以下で説明するチェックなどの特定の命令タイプに固有の他のチェックを含むことができる。これらの他のチェックのいずれかが満たされない場合、再びステップ608において、メモリアクセス要求は拒絶され、失敗が通知される。失敗シンドローム情報は、失敗の原因を区別するために設定され得る。ステップ610において実行されたチェックが満足される場合、ステップ612において、メモリアクセス要求は続行することを許可され得、したがって、ターゲットPAに関連付けられたメモリシステムロケーションは、書込み要求によって指定された書込みデータで更新され得る。
【0113】
したがって、先に説明した
図6に示すように、PRO許可は、機密情報を含むメモリ領域の中間アドレスを得るためにステージ1テーブル構造のトラバースにおいて使用される様々なレベルのステージ1変換テーブルを保持するメモリシステムロケーションの物理アドレスを提供するために使用されるステージ2変換テーブルエントリのステージ2アクセス許可68において指定され得る。これは、PRO許可が、対応するメモリ領域に書込む能力を命令タイプの限られたサブセットに制限し、ステージ1変換テーブルの破損に対して脆弱であり得るコードの行の数を大幅に低減するので、悪意のある者による攻撃の下でコード又はオペレーティングシステムコードを誤って機能させることによる破損から、それらのステージ1変換エントリを保護する。それにもかかわらず、変換テーブルエントリ内のアクセス追跡メタデータを更新するためのハードウェア生成書込み要求は、オペレーティングシステムによるページング動作の効率を損なうことを回避するために、そのような領域に対して依然として許可され得る。
【0114】
図11は、所定の実行状態EL1にあるときに発行された書込みメモリアクセス要求に対して実行される部分読取り専用チェックを示しているが、他の実行状態に対しても実行することができる。しかしながら、最低特権実行状態EL0において発行された書込み要求に対して、ステージ1変換テーブルを保持するメモリ領域は、いずれの場合もステージ1アクセス許可66によって、EL0において動作するアプリケーションレベルコードにアクセス不可能であるとしてマークされる可能性が高いので、これは必須ではない場合があり、したがって、ステージ1許可チェックは、そのような書込み要求がステージ1変換テーブルを破損することをすでに防止することができる。また、EL2又はEL3で実行されるコードの場合、ハイパーバイザ又はモニタコードが、ステージ1変換テーブルへの更新が許可される制限を制御しているコードである可能性があるので、変換テーブルは、2ステージアドレス変換を使用せず、ステージ1変換テーブルエントリを記憶する領域への書込みを制限する可能性は低い。したがって、いくつかの実装形態は、現在の実行状態がEL1であるときのみ実行されるように部分読取り専用チェックを制限することができる。他の実装形態は、どの実行状態が現在の実行状態であるかにかかわらず、部分読取り専用チェックを適用することができる。
【0115】
ステージ1変換テーブルエントリのための保護エントリ符号化
書込みタイプの制限されたサブセット以外の書込み要求に対して、あるメモリ領域を読取り専用としてマークするためにPRO許可を使用することは、ステージ1テーブルを破損から保護するのに役立つ。しかしながら、
図6に示されるように、典型的には、変換テーブル構造の所与のレベルにおける所与の変換テーブルは、メモリ内のページ全体を占有し、したがって、PRO許可は、ステージ1変換テーブル構造の所与のレベルにおける変換テーブル全体に適用され、これは、不正アクセスに対して保護される必要がある機密情報のために使用されるいくつかのメモリ領域と、この保護を必要としない非機密情報のみを含む他のメモリ領域とを含み得る、様々なメモリ領域のための変換テーブルエントリを含み得る。
【0116】
以下で更に説明されるように、ステージ1変換テーブルエントリに対する保護エントリ符号化の使用をサポートしない実装形態を提供することが可能である。この場合、オペレーティングシステムが、非機密情報を含む非保護領域に関連付けられたあるステージ1変換テーブルエントリを更新することを可能にするために、PRO領域への書込みを許可された書込み要求タイプの1つではないPRO領域への書込みアクセス時に生成された失敗は、EL2で動作するハイパーバイザにトラップを引き起こす可能性があり、ハイパーバイザは、オペレーティングシステムがステージ1変換テーブルエントリを更新したい領域がオペレーティングシステムによって更新されることから保護されるべきかどうかをソフトウェアで決定することができ、その領域が保護される必要がない場合、オペレーティングシステムによって要求された更新を進めることができる。しかしながら、実際には、オペレーティングシステムは、メモリの非保護領域の変換テーブルエントリを比較的頻繁に変更する必要がある場合があり、したがって、更新が必要とされるたびにハイパーバイザにトラップすることは、性能の点で遅い場合がある。
【0117】
ステージ1変換テーブルエントリのための保護エントリ符号化(例えば、ビット76、78を使用する)は、オペレーティングシステムが、ハイパーバイザの介入なしに非保護エントリに更新を行うこと(及び、任意選択で、いくつかの実装形態では、ハイパーバイザの介入なしに保護エントリの非更新制限ビットに更新を行うこと)を可能にするのに役立つ。これは、所与のステージ1変換テーブルがメモリのPRO領域に記憶される場合であっても、保護エントリと非保護エントリとの混合を含むため、ハイパーバイザの関与をより頻繁に回避することができるので、性能を向上させるのに役立つ。処理回路4の命令デコーダ10及び実行ステージ16は、保護エントリチェックタイプの読取りチェック書込み(RCW)命令と呼ばれる少なくとも1つのタイプの命令をサポートし、この命令は、アクセスされたメモリシステムロケーションに記憶されたデータをチェックして、保護ステージ1変換テーブルエントリの符号化と一致する値を有するかどうかをチェックするための保護エントリチェックを条件として更新が行われる所与のメモリシステムロケーションへの更新を要求するために使用することができる。アクセスされたメモリシステムロケーションにおけるデータが、保護ステージ1変換テーブルエントリであるデータと一致する値を有することを判明した場合、所与のメモリシステムロケーションの少なくとも更新制限されたビットのサブセットへの更新が抑制される。RCW命令は、EL1で実行されるオペレーティングシステムによって実行されることが許される。RCW命令は、対応ステージ2変換テーブルエントリによってPRO許可でマークされたメモリ領域中のデータを更新することを許可された命令の制限されたサブセットのうちの1つである。
【0118】
保護エントリチェックは、保護エントリチェック回路54によってハードウェアで実行され、
図7に示されるように、保護エントリチェック回路54は、MMU 28内、又はデータを記憶するメモリシステムロケーションのより近く、例えば、キャッシュ、インターコネクト、又はメモリコントローラなどのメモリシステム構成要素56内のいずれかで実装され得る。また、MMU 28(又はパイプラインの実行ステージ16)内に実装された保護エントリチェック回路54のいくつかの部分と、メモリストレージのより近くに実装された他の部分とを有するロジックの分散セットを使用することも可能である。RCW命令を実行するスレッドと同じプロセッサ回路上で実行される別のスレッドによって、又は別のプロセッサコアによって所与のメモリシステムロケーションへのアクセスが要求されるときに、他のアクセスが、RCW命令のいずれかの部分的効果ではなく、RCW命令を処理する前の所与のメモリシステムロケーションの値、又はRCW命令を処理した後の所与のメモリシステムロケーションの値のいずれかを見るように、また、所与のメモリシステムロケーションにおけるデータを読取る保護エントリチェックと、RCW命令に応答して所与のメモリシステムロケーションにおけるデータに応答して所与のメモリシステムロケーションにおけるデータの後続の更新との間の期間に所与のメモリシステムロケーションを更新することは不可能であるように、保護エントリチェックにおいて実行される読取り、チェック及び書込み動作は、アトミック(不可分)動作として実行される。アトミック性を実施するために、メモリシステムロケーションに対してアトミック読取り/書込み動作を実施するための任意の知られている技法を使用することができる(例えば、読取りと書込みとの間の期間中に他の動作によるアクセスに対してメモリロケーションをロックする、又はその期間中に競合アクセスを許可するが、競合アクセスが読取りと書込みとの間の期間中に検出された場合にRCW動作を再開する)。読取り、チェック、及び書込みのアトミック性を実施することによって、これは、不正確な処理結果につながり得る競合状態を回避する。読取り、チェック、及び書込み動作がアトミック的に実行されるので、書込みが進み、書込みデータをデータを記憶するメモリシステムロケーションに戻すことができる前にチェックを実行するために、読取りデータをMMU 28又はプロセッサパイプライン4の別の要素までずっと戻さなければならない場合の持続時間と比較して、読取りと書込みとの間の期間の持続時間を短縮するために、保護エントリチェック回路54を、更新されているストレージロケーションにより近いメモリシステム構成要素56内に実装することが有用である可能性がある。
【0119】
図8に示される例では、有効なステージ1変換テーブルエントリ及び無効なステージ1変換テーブルエントリの両方が、エントリが保護エントリとして指定されることを可能にする符号化を有する。しかしながら、無効エントリが保護されているとして指定されることが可能であることは必須ではなく、他の例は、無効エントリフォーマットから保護エントリ符号化ビットフィールド78を省略することができる。また、異なる実装形態は、RCW命令に応答して保護エントリのいくつのビットがそれらの更新を抑制されるかについて異なるオプションを選択することができる。いくつかの実装形態は、RCW命令に応答して保護エントリへのいかなる更新も防止することができ、所与のメモリシステムロケーションにおけるデータが保護エントリとして符号化されない場合、RCW命令に応答してのみ更新が許可される。他の実装形態は、更新制限されたビットのサブセット及び更新制限されないビットのサブセットを指定することができ、したがって、更新制限されないビットのサブセットへの更新は、保護エントリに対してさえ許容可能であり得る。例えば、アクセスフラグ70及びダーティビット修正子72など、セキュリティにとって重要でないいくつかのフィールドが存在する場合があり、これらは、保護エントリ内であっても更新することが可能である。どのビットが更新制限されているか又は更新制限されていないかは、所与のアーキテクチャに対して非プログラマブルな方法で固定されるか、又は制御レジスタに記憶された選択値を使用してソフトウェアによってプログラマブルであるかのいずれかであり得る。例えば、選択値は、いくつかの異なるモードのうちの1つから選択することができ、各モードは、ビットが更新制限される異なる設定に関連付けられる。しかしながら、
図7の例では、選択値は、更新制限されたビットの位置を識別するビットマスクとして符号化され、選択値はマスクレジスタに記憶される(例えば、
図7に示すRCWMask_Valid_EL2レジスタ及びRCWMask_Invalid_EL2レジスタは、それぞれ有効エントリ及び無効エントリの更新制限されたビットを選択するためのものであり、RCW_Mask_Invalid_EL2レジスタは、無効エントリを保護エントリとして符号化することができない実装形態では省略することができる)。選択値への更新は、閾値特権レベル以上で実行するプログラム命令に制限されてもよく、例えば、EL2又はEL3で実行する命令のみが、選択値を更新することを許可されてもよい。選択値の状態にかかわらず、強制的に更新制限されるいくつかのビットが存在し得る。例えば、エントリが保護エントリであるかどうかを符号化するために使用されるビットフィールド76、78は、他のどのビットが更新されることが可能であるかにかかわらず、更新されることを許可されなくてもよい。一般に、RCW命令は、特定のエントリが保護されているか保護されていないかのステータスを変更することを禁止され得る。ビットフィールド76、78の設定は、代わりに、EL2又はEL3などのより高いレベルの特権で実行されるプログラムコードによって制御され、プログラムコードは、保護エントリを記憶するメモリ領域を部分読取り専用としてマークしないステージ2変換テーブルの異なるセットを使用してメモリにアクセスすることができ、したがって、標準的な汎用記憶命令を使用して保護ステージ1エントリのビットフィールド76、78を設定することができる。
【0120】
プロテクトされたエントリチェックを実装することができる様々な方法がある。一例では、アクセスされたメモリシステムロケーションに記憶されたエントリが有効かつ保護されている場合、それを変更することはできず、無効である場合、それを有効にすることを含めて(エントリも保護されていない限り)、それを変更することができる。代替的に、有効エントリ内に保護ビットフィールド76が存在し、無効エントリ内に保護ビットフィールド78が存在する可能性があり、保護エントリに対する変更は許可されなくてもよく、そうでなければ、(エントリが保護されているか否かのステータスを変更する)以外の非保護(有効又は無効)エントリに対する更新が許可される。別の例は、有効エントリ内に保護ビットフィールド76を提供し、無効エントリ内に保護ビットフィールド78を提供することができ、RCW命令は、保護されていない場合(保護される以外)、エントリに任意の変更を行うことが可能であり、一方、保護されている場合、RCW命令は、有効エントリについて説明したようにいくつかのビットに変更を行い、無効エントリ内のいくつかのビットに変更を行うことができる。いくつかの例では、どのビットが保護されるかを記述するための機構は、保護フィールド又は有効フィールドを除く任意のフィールドのハードワイヤードアーキテクチャ選択である。代替的に、どのビットが有効エントリ内で保護されるかを記述するための機構は、EL2によって所有されるマスクレジスタを使用することができ、及び/又はどのビットが無効エントリ内で保護されるかを記述するための機構は、EL2によって所有されるマスクレジスタである。更新制限されたビットを定義するための異なる選択が、有効エントリ及び無効エントリのそれぞれに対して可能であり、例えば、1つのアプローチは、有効エントリの更新制限されたビットを定義するためのマスクレジスタを定義するが、無効エントリの更新制限されたビットをハードワイヤすることであり得る。
【0121】
また、保護エントリ内のいくつかのフィールドを更新することが許可されるときにチェックを適用する方法にはバリエーションがあり得るが、2つの例示的なオプションは、以下の通りである。
A)保護エントリチェック回路54は、エントリが有効及び/又は保護されているか否かをチェックするために現在のエントリを読取り、次いで、(RCW命令が、書込むことが許可されていない更新制限されたビットを変更しようとしていたか否かをチェックすることなく)書込むことが許可されているビットのみを記憶する。
B)保護エントリチェック回路54は、現在のエントリを読取り、エントリが有効及び/又は保護されているか否かをチェックする。それが保護されており、RCW命令が、書込むことが許可されていないビットを変更しようとしていない場合、書込みを行うことができるが、RCW命令が、更新制限されたビットを更新しようとしている場合、書込みは失敗し、何も書込まれない。
【0122】
A及びBは両方とも実行可能な選択肢である。
【0123】
RCW命令に応答して、書込みが成功したか失敗したかの指示を、処理回路4の制御レジスタに格納された条件ステータスフラグに書込むことができる。例えば、条件ステータスレジスタは、処理動作の結果に応じて設定することができ、条件ステータスフラグの状態に応じて条件付きで動作(分岐動作又は算術/論理動作など)をトリガすることができる条件付き命令によってテストすることができるいくつかの条件フラグ(例えば、負フラグN、0フラグZ、キャリーフラグC、及びオーバーフローフラグV)を含むことができる。したがって、RCW命令によって要求された書込みのいずれかの部分が不成功であったかどうかに基づいて条件ステータスフラグを更新して、書込みが成功したかどうかをチェックするためにメモリシステムロケーションを再読取りする必要なしに、後続の命令が書込みの結果に応じてアクションをとることを可能にすることが有用であり得る。
【0124】
図12、
図13、及び
図14は、保護エントリチェックRCW命令のいくつかのバリアントの処理を示す。
図12は、命令の記憶バリアント又はスワップバリアントのいずれかの処理の例を示す(バリアントに依存する最終ステップ726又は728以外の処理ステップの大部分は、両方の命令について同じである)。記憶バリアント及びスワップバリアントの両方は、更新されるべき所与のメモリシステムロケーションのアドレスを生成するために使用されるアドレスオペランドを提供するレジスタXdと、所与のメモリシステムロケーションに書込まれるべき新しいデータを提供するソースレジスタXsとを指定する。少なくともスワップバリアントはまた、所与のメモリシステムロケーションから読取られた古いデータが書込まれる宛先レジスタXtを指定する。記憶バリアントは、古いデータがどの宛先レジスタにも書込まれないという点でスワップバリアントとは異なるので、記憶バリアントは、どの宛先レジスタも指定する必要がない。しかしながら、一例では、記憶バリアント及びスワップバリアントは、宛先レジスタXtを指定するために使用されるフィールドが所定の値を有する場合に命令が記憶バリアントとして扱われ得ることを除いて、同一の符号化を使用して符号化され得る。例えば、いくつかの命令セットアーキテクチャは、特定のレジスタ指定子(例えば、レジスタ31)を「0」レジスタに対応するものとして定義することができ、これは、命令のオペランドとして指定されると、オペランドがハードウェア内に設けられたレジスタから実際に読取られる必要なく、オペランドが値0を有するかのように処理されるようにする。したがって、いくつかの例では、宛先レジスタXtが「0」レジスタX31として指定されるとき、命令は記憶バリアントとして扱われ得る。他の例では、記憶命令は、スワップ命令とは完全に異なる命令タイプとして符号化され得る。
【0125】
図12のステップ700において、書込まれるアドレスオペランド及び新しいデータ(「NewData」)が、それぞれレジスタ指定子Xd及びレジスタ指定子Xsによって識別されるレジスタから読取られる。ステップ702において、メモリアクセスのためのターゲットアドレスが、アドレスオペランドに基づいて決定される。例えば、アドレスオペランドは、ターゲットアドレスを直接指定する絶対アドレスとして扱うことができ、あるいは更なるベースレジスタ内の値又はRCW命令自体のアドレスを識別するプログラムカウンタ値などの基準アドレスに対するオフセットを定義することができる。アドレスオペランドに基づいて計算されたターゲットアドレスは仮想アドレスであり、MMU 28によって物理アドレスに変換され得る。ステップ704において、ターゲットアドレスが現在の命令にアクセス可能であるかどうかについての(保護エントリチェック以外の)任意のMMUチェックがパスされると仮定すると、(変換された)ターゲットアドレスに対応するメモリシステムロケーションから読取られたデータ(「ReadData」)を取得するために、メモリシステムに対して読取り要求が発行される。これは、RCW命令の「読取り」に対応する。
【0126】
ステップ706として、保護エントリチェック回路54は、ReadDataが保護ステージ1(stage-1、S1)変換テーブルエントリの符号化と一致する値を有するかどうかを決定する。これは、RCW命令の「チェック」部分に対応する。ReadDataが、保護ステージ1変換テーブルエントリであることと一致する値を有さない場合、ステップ708において、保護エントリチェック回路は、NewDataが保護ステージ1変換テーブルエントリとして符号化されているかどうかをチェックする。もしそうであれば、ステップ710では、RCW命令によって要求された書込みが拒否されるか、あるいは、RCW命令によってNewDataとして指定されたステージ1変換テーブルエントリの非更新制限されたビットを、メモリシステムロケーションの対応するビットに書込むことができ、少なくとも、エントリが保護されるかどうかを符号化するために使用されるビットは、書込まれない更新制限されたビットと見なされる。いずれにしても、ステップ712で、RCW命令によって要求された書込みを完全に実行できなかったことを報告するために、条件ステータスフラグがセットされる。
【0127】
ステップ706において、ReadDataが保護ステージ1変換テーブルエントリとして符号化されていると決定された場合、ステップ716において、保護エントリチェック回路54は、読取られたデータが、有効又は無効なステージ1変換テーブルエントリであることと一致する値を有するかどうかを決定する。読取られたデータが無効な保護ステージ1変換テーブルエントリであることと一致する値を有する場合、ステップ718において、保護エントリチェック回路54は、NewDataがステージ1変換テーブルエントリの任意の無効なエントリ更新制限されたビット(エントリが保護されているかどうかを符号化するために使用される少なくとも任意のビットを含む)を変更しようとするかどうかを決定し、変更しようとする場合、方法は再びステップ710及び712に進み、少なくとも無効なエントリ更新制限されたビットの更新を抑制し、条件ステータスフラグを設定する(再び、これは、書込みを完全に拒否することによって、又は非更新制限のビットにのみ書込むことによって行うことができる)。
【0128】
一方、ステップ716において、ReadDataが、保護エントリとして符号化された有効なステージ1変換テーブルエントリであることと一致する値を有すると決定された場合、ステップ720において、保護エントリチェック回路54は、NewDataが、ターゲットアドレスに対応するメモリシステムロケーションから読取られたステージ1変換テーブルエントリの任意の有効なエントリ更新制限されたビット(エントリが保護されているか否かを符号化するために使用される少なくとも任意のビットを含む)を変更しようとしているか否かを決定する。そうである場合には、再びステップ710において、書込みが拒否されるか、又は非更新制限のビットを書込むためだけに許可され、ステップ712において、書込みの失敗を報告するために条件ステータスフラグがセットされる。
【0129】
無効な変換テーブルエントリが保護エントリとして符号化されることをサポートしない実装形態では、ステップ716及び718を省略することができ、方法は、ReadDataが保護エントリとして符号化されるときに、ステップ706からステップ720に直接進むことができる。
【0130】
ステップ708で、ReadDataが保護エントリでなかった場合に書込まれるNewData、又はステップ718若しくは720で、NewData(ReadDataが保護エントリであった場合に書込まれる)が更新制限されたビットを変更しようとしない場合、ステップ714で、RCW命令の書込みが許可され、したがって、NewDataがターゲットアドレスに対応するメモリシステムロケーションに書込まれる。
【0131】
書込みが成功したか拒否されたか(少なくとも部分的に)にかかわらず、ステップ724で、実行されている現在のRCW命令が記憶バリアントであるかスワップバリアントであるかに応じて動作が変化する。命令が記憶バリアントである場合、ステップ726において、更なるアクションは必要とされず、ReadDataはどの宛先レジスタにも書込まれない。命令がスワップバリアントである場合、ステップ728で、ReadDataが宛先レジスタXtに書込まれる。いくつかの実装形態は、記憶バリアント及びストップバリアントの両方をサポートしない場合があり、その場合、ステップ724を省略することができ、方法は、ステップ714からステップ726及び728のうちの関連する1つに直接進むことができる。
【0132】
ステップ704での読取り、ステップ714での書込み、及びステップ704と714との間で実行される様々なチェック動作は、ステップ704での読取りとステップ710又は714での書込みとの間にメモリシステムロケーションへの介入書込みが行われることが不可能な動作の不可分のセットとして、又は実行の別のスレッドが動作のセットを実行する部分的な結果を見ることが不可能な動作の不可分のセットとして、アトミックに実行される。
【0133】
RCW命令の記憶/スワップバリアントの機能を表すためのいくつかの例示的な擬似コードを以下に示す。これは単なる一例であり、
図12に示されるより一般的な表現よりも具体的であることが理解されるであろう。例えば、擬似コードは、有効な保護エントリ及び無効な保護エントリの両方に対する更新制限されたビットの選択が、対応するマスクレジスタにおいて定義されると仮定するが、上述したように、これは必須ではなく、他の例は、どのビットが更新制限されるかの選択をハードワイヤするか、又は保護エントリの全てのビットが更新制限されるとみなすことができる。この例では、条件ステータスフラグの「0」フラグZを1に設定することにより、書込み失敗を通知する。他の例では、書込み失敗を符号化するために異なる条件状態を選択することができる。擬似コードで以下に示される機能は、上述の保護エントリチェック回路54内のハードウェア回路ロジックを使用して実装することができ、したがって、擬似コードは、ソフトウェアがこれらの機能を実行することを暗示するのではなく、回路ロジックのロジック機能を示すことを意図していることが理解されよう。
【0134】
【0135】
図13は、保護エントリチェックRCW命令の比較及びスワップ(compare-and-swap、CAS)バリアントの処理を示すフロー図である。
図12と同じ参照番号で示された
図13のステップは、上述したものと同じである。ReadDataを記憶し、NewDataを提供するために使用されるレジスタに使用される表記は、
図12と比較して
図13では交換されており、Xtは、NewDataを提供するレジスタであり、Xsは、書込み前にReadDataの古い値が書込まれた宛先レジスタであることに留意されたい。
図13は、CASバリアントが比較データ(「CompareData」)と呼ばれる追加のソースオペランドを指定するので、ステップ700がステップ750で置き換えられるという点で
図12と異なる。この例では、命令符号化において必要とされるレジスタフィールドの数を低減するために、CompareDataは、ステップ728においてReadDataを書込むための宛先レジスタとして使用される同じレジスタXsにおいて指定されるが、これは必須ではなく、他の例は、Xsとは別の更なるレジスタにおいて比較データを指定することができる。
【0136】
ステップ702及び704は、
図12と同じである。ステップ704の後、追加のステップ752が実行されて、ターゲットアドレスに対応する所与のメモリシステムロケーションから読取られたReadDataと、レジスタXs内のRCW命令によって指定されたCompareDataとが比較される。保護エントリチェック回路54は、比較に基づいて、比較条件が満たされているかどうかを決定する。例えば、比較条件は、CompareDataとReadDataとが等しいかどうかであってもよいし、より小さい、より大きい、等しくないなどの別の比較条件に基づいてもよい。いくつかの実装形態は、比較条件を等しい条件として固定してもよい一方で、他の実装形態は、命令のパラメータがどのタイプの比較を実行するかを選択することを可能にしてもよい。比較条件が満たされていない場合、ステップ754で、RCW命令によって要求された書込みが拒否され、比較条件失敗によって引き起こされた書込みの失敗を報告するために条件ステータスフラグがセットされる(例えば、比較条件失敗時に否定フラグNを設定する)。比較条件が満たされる場合、ステップ706、708、710、714、716、718、720が
図12と同様に実行されて、ターゲットアドレスに対応するメモリシステムロケーションから読取られたデータの保護エントリステータスをチェックし、チェックの結果に基づいて書込みが許可されるかどうかを制御する。書込みが許可された場合、ステップ714は、先に説明したものと同じであり、書込みがNewDataをメモリシステムロケーションに書込むことを可能にする。ステップ710において、書込みが拒絶されるか、又は部分的にのみ実行される場合、
図12の後続のステップ712は、
図13のステップ762で置き換えられ、これは、書込み失敗を報告するために条件ステータスフラグを設定するという点で同じであるが、比較及びスワップバリアントの場合、失敗が保護エントリチェック失敗によって引き起こされたことを区別し、比較条件失敗の場合にステップ754で使用される値とは異なる値に条件ステータスフラグを設定することができる。
【0137】
比較条件が満たされているか否か、又は保護エントリチェックが成功しているか否かにかかわらず、ステップ724、726、及び728は
図12と同じであり、任意選択でReadDataを宛先レジスタXsに書込む(この場合も、宛先レジスタ指定子が所定の値、例えば31を指定するとき、宛先レジスタXsの更新を抑制することが可能である)。
【0138】
RCW命令のCASバリアントの機能の1つの可能な実装形態を示す擬似コードの例を以下に示す。
【0139】
【0140】
この擬似コードの例は、比較条件評価が保護エントリチェックよりも優先される場合を示しており、したがって、比較条件が不合格であるが、エントリも保護されており、ステップ708、718、720におけるチェックが失敗である場合、条件ステータスコードは、Nビットを使用してCAS失敗を示すことになる。エントリが保護され、ステップ708、718又は720でのチェックが失敗した場合、比較条件が不合格だとしても、条件ステータスコードが、Zビットを使用して、保護エントリチェックによる書込みの失敗を示すように、保護エントリチェックが優先されることも可能である。例えば、
図13は、ステップ706の前の代わりにステップ714の後にステップ752及び754を実装するように修正することができる。
【0141】
図14は、保護エントリチェックRCW命令のビット設定/クリアバリアントの処理を示すフロー図である。
図14において、ステップ700~728は、
図12と同じであるが、
図14では、NewDataは、ソースレジスタ内で直接指定されるのではなく、アドレス指定されたメモリシステムロケーション内で設定又はクリアされるビットの位置を符号化するソースレジスタXs内に提供されるビットマスク(「BitMask」)に基づいて計算される。したがって、
図12との唯一の違いは、ステップ700において、レジスタXsがNewDataを直接指定するのではなくBitMaskを定義すること、及びステップ704とステップ706との間に追加のステップ770、772、774が実行されることである。ステップ770において、方法は、ビット設定命令又はビットクリア命令が実行されているかどうかに応じて異なる(両方のタイプの命令をサポートする必要はなく、したがって、これらの命令のうちの1つのみがサポートされる場合、ステップ770は省略され、ステップ772、774のうちの関連する1つがステップ704の後に実行され得る)。ビット設定命令が実行されている場合、ステップ774において、NewDataは、アドレス指定されたメモリシステムロケーションから読取られたReadDataと、RCW命令によって指定されたBitMaskとに対してビット単位のOR演算を実行した結果に設定される(したがって、ビット設定命令について、BitMaskにおいて「1」とマークされたビット位置は、アドレス指定されたメモリシステムロケーション内で1に設定されるように要求される)。対照的に、ステップ772において、ビットクリア命令が実行されている場合、NewDataは、ReadData及びBitMaskの逆数に対してビットごとのAND演算を実行した結果に設定される(したがって、ビットクリア命令について、BitMaskにおいて「1」とマークされたビット位置は、アドレス指定されたメモリシステムロケーション内で0にクリアされるように要求される)。ビット設定バリアント及びビットクリアバリアントの両方について、BitMaskの「0」ビットに対応するReadDataのビットは、NewData内のそれらの元の値を保持し、したがって、RCW命令によって変更されない。ステップ772又は774でNewDataを計算した後、
図14の後続のステップは全て
図12と同じである。
【0142】
RCW命令のビット設定/クリアバリアントの機能の1つの可能な実装形態を示す擬似コードの例を以下に示す。
【0143】
【0144】
本出願におけるフロー図の全てについて、同じ機能を異なる順序で実装することもでき、したがって、フロー図はステップの順次シーケンスを示すが、互いに依存しない任意のステップについて、ステップを並べ替えるか、又は少なくとも部分的に並列に実行することが可能であることが理解されよう。
【0145】
したがって、
図6に示すように、機密メモリページ(例えば、機密データ又は命令に使用されることが予想されるページ)に対応する中間アドレスマッピングに到達するために変換テーブルツリー構造をトラバースするために使用される様々なステージ1変換テーブルエントリは、保護エントリ符号化を有するように設定することができる。これは、これらのエントリのうちの1つが、(例えば、ページング動作の結果として)ページへのアクセスを禁止するために一時的に無効として設定される場合であっても当てはまる可能性がある。一方、保護エントリと同じページテーブル内の他のエントリは、更新があまり制限されていない非保護エントリであり得る。保護エントリ符号化をサポートすることによって、これは、メモリのPRO領域に記憶された所与のページテーブルが保護エントリと非保護エントリとの混合を含むことを可能にし、非保護エントリは、上記で説明したバリアントのいずれかに従ってRCW命令を実行することによって、ハイパーバイザの介入なしにEL1で実行されるオペレーティングシステムコードによって更新されることが可能であり、一方、保護エントリは、より厳しい制限を受けることができる。専用タイプの命令(例えば、上述のRCW命令のバリアントのうちの1つ以上)が、保護エントリチェックをトリガするために提供され、PRO許可は、他のタイプの命令(記憶命令の大部分など)がメモリのPRO領域を更新することができるのを防止するので、これは、性能の点で非常に高価になるメモリへの書込みごとに保護エントリチェックを実行する必要性を回避する。
【0146】
アンチエイリアシングチェック
上述した機構は、特定のステージ1変換エントリを破損(悪意のある者によってハッキングされたコードによって故意に、又は誤って書かれたコードによって)から保護するのに有用である。しかし、
図15に示すように、同じ中間アドレスマッピング62を指定するステージ1変換テーブルエントリを定義することによって、いくつかの異なる仮想アドレスが同じ中間アドレスにエイリアスすることが可能である。
図8に示すように、異なる仮想アドレスVA2を同じ中間アドレスIPAにマッピングするエイリアシングステージ1エントリを定義することによって、VA1をIPAにマッピングするステージ1変換エントリの第1のセットについて上述したPRO許可及び保護エントリ符号化によって提供される保護を攻撃者が回避できることを防止するために、ステージ2変換テーブルエントリは、メモリの対応する領域がアンチエイリアシング特性を有するかどうかを指定するビットフィールド79を有することができる。領域がアンチエイリアシング特性を有すると示される場合、追加のアンチエイリアシングチェックが、その領域へのアクセスに対して実行され、全てのウォークされたステージ1変換テーブルエントリ(その領域の仮想アドレスから物理アドレスへのステージ1アドレスマッピングを指定する対応するステージ1変換テーブルエントリを見つけるために変換テーブルウォークにおいてアクセスされる)が、(a)メモリのPRO領域に記憶され、保護エントリとして符号化されるか、又は(b)メモリの読取り専用領域に記憶されるかのいずれかであるかどうかをチェックする。これは、アンチエイリアシング特性を有するステージ2変換テーブルエントリに関連付けられたメモリ領域へのアクセスごとに実際に実行されるために、それらのウォークされたステージ1変換テーブルエントリを通じたページテーブルウォークを必ずしも必要としないことに留意されたい。毎回完全な変換テーブルウォークを実行する必要を回避するために、アンチエイリアシングチェックに合格したかどうかを示す(又は、あるウォークされたステージ1変換テーブルエントリについて、それらがPRO領域に記憶されている、及び/又は保護エントリであるとすでに決定されているかどうかを示す)ために、情報をTLB 29にキャッシュすることが可能である。
【0147】
図16は、アンチエイリアシングチェックを実行する方法を示すフロー図である。ステップ800において、あるターゲット仮想アドレスVAxを指定するメモリアクセス要求が発行される。ステップ802において、MMU 28は、VAxから中間アドレスIPAyへのステージ1マッピングと、中間アドレスIPAyからターゲット物理アドレスPAzへのステージ2マッピングとに応じて、ターゲット仮想アドレスVAxからターゲット物理アドレスPAzへのアドレス変換を開始する(ステージ1及びステージ2変換のために2つの別個のアクションを実行することは必須ではないが、これは1つのオプションであり、他の例は、すでにキャッシュされている変換のためにVAxからPAzに直接マッピングすることができる組み合わされたステージ1及び2 TLBを有することができるが、TLBにおけるミス時に、
図6に示すように、ステージ1及びステージ2ウォークを実行することによって新しいVAからPAへのマッピングが識別される)。
【0148】
ステップ804において、MMU 28は、IPAyに対応するステージ2変換テーブルエントリ(ブロック記述子又はページ記述子)がアンチエイリアシング特性を示すかどうかをチェックする。そうである場合、ステップ806において、MMUは、全てのウォークされたステージ1変換テーブルエントリがアンチエイリアシング条件を満たすかどうかをチェックする。ウォークされたステージ1変換テーブルエントリは、仮想アドレスVAxに対応する完全な変換テーブルウォークが実行された場合に、VAxからIPAyへのS1アドレスマッピングを指定する対応S1変換テーブルエントリを見つけるために変換テーブルウォークにおいてアクセスされるエントリである(このウォークは、TLB 29にすでにキャッシュされているものに応じて、現在のメモリアクセスに実際には必要とされない場合がある)。例えば、
図6では、ウォークされたステージ1変換テーブルエントリは、L0、L1、及びL2ステージ1ページテーブル内のD_Tableとマークされたエントリ、並びにL3ステージ1ページテーブル内のD_Pageとマークされたエントリである。アンチエイリアシング条件は、以下の条件のいずれかが満たされるとき、所与のウォークされたステージ1変換テーブルエントリに対して満たされる。
(a)所与のウォークされたステージ1変換テーブルエントリが保護エントリとして指定され、所与のウォークされたステージ1変換テーブルエントリが物理アドレスPAjに記憶され、PRO許可が、PAjを導出するために使用されるステージ2アドレスマッピングを提供する関連するステージ2変換テーブルエントリによって指定される。又は
(b)読取り専用許可は、所与のウォークされたステージ1変換テーブルエントリの物理アドレスPAjを導出するために使用されるステージ2アドレスマッピングを提供する関連するステージ2変換テーブルエントリによって指定される。
【0149】
図6の特定の例では、アクセスされたページのPAを導出するために使用されるL1ステージ1エントリに対する関連するステージ2変換テーブルエントリは、
図6において「D_Page」として示されるステージ2 L3エントリである。
図6に示される他のウォークされたステージ1エントリに対して、同様に、アンチエイリアシング条件が満たされるためにPRO又は読取り専用許可でマークされるべき関連するステージ2 L3エントリ(又は、ステージ2ブロック記述子がIPAyに対応して発見される場合、ステージ2 L1又はL2エントリ)がある(これらは、各ウォークされたステージ1変換テーブルの物理アドレスを取得するために示される様々なステージ2変換ウォークの最後のエントリである)。
【0150】
図16のステップ806において、MMU 28が、ウォークされたステージ1変換テーブルエントリのうちのいずれか1つ以上がアンチエイリアシング条件を満たさないと決定した場合、ステップ808において、メモリアクセスが拒否される。失敗がシグナリングされ得、失敗は、エラー処理アクションを実行するために(例えば、EL2において実行する)例外ハンドラをトリガし得る。
【0151】
全てのウォークされたステージ1変換テーブルエントリがアンチエイリアシング条件を満足する場合、ステップ808は省略される。この場合、ステップ810において、MMU 28は、任意の他のチェック(メモリ領域へのアクセスに対して設定されているPRO許可に基づく任意のチェック、メモリアクセス要求がRCW命令に応答して発行されたかどうかの保護エントリチェック、又はこれをサポートする実装形態におけるセキュア/非セキュア状態に基づくチェックなど、他の不適切なアクセスから保護するための任意の他の特定のチェックなど)が満たされているかどうかもチェックする。他のチェックのいずれかが満たされない場合、再びステップ808において、メモリアクセスが拒否される(生成される失敗タイプは、アクセスチェック失敗の原因に依存し得る)。そうであれば、ステップ812においてメモリアクセス要求が続行を許可される。
【0152】
したがって、
図6に示すように、アンチエイリアシング特性は、アクセスされているメモリ領域に対する物理アドレスマッピングを提供するステージ2変換テーブルエントリに設定することができる(これは、ページ記述子又はブロック記述子のいずれかであり得る)。アンチエイリアシング特性が、対応するメモリロケーションへの有効なアクセスに対して設定される場合、これは、そのメモリ領域に対する中間アドレスマッピングを提供するエントリへのパス上の全てのウォークされたステージ1変換テーブルエントリが、(a)保護されているとマークされ、PRO許可を指定するためにそれらのウォークされたステージ1変換テーブルエントリを記憶する領域の物理アドレスマッピングを提供するステージ2エントリに対してマークされるか、又は(b)そのPAに対するPAマッピングを提供するステージ2エントリによって読取り専用許可が指定されるPAに記憶されることを必要とする。これは、攻撃者が、メモリの対応する領域にアクセスするために使用されることが予想される信頼できるアドレスマッピングに適用される保護を回避するために、新しいエイリアシングステージ1アドレスマッピングを容易にセットアップすることができないことを意味する。EL1においてオペレーティングシステムコードの挙動に影響を及ぼすことができる攻撃者は、メモリアクセスを制御するために使用されるステージ2エントリに対する制御を有さないが、なぜなら、これは、EL1において実行するコードによって更新することができないVTTBR_EL2レジスタ内のベースアドレスに基づくからである(したがって、攻撃者の新たに作成されたエイリアシングステージ1アドレスマッピングを記憶する領域に対してPRO又は読取り専用許可を設定させることができない)。また、ステージ1変換テーブルエントリを更新するためにEL1で実行されるコードの機構は、上述した保護エントリチェックタイプのRCW命令(他の命令はメモリのPRO領域に書込むことを禁止されている)を実行することであり得、その命令は任意の変換テーブルエントリの保護状態を変更することができないので、攻撃者はステージ1エントリを保護されるようにすることができない。また、読取り専用領域は、いかなる書込み命令によっても書込むことができない。したがって、攻撃者が作成することができる任意の新しいエントリは、VA-IPAマッピングを取得するために使用されるステージ1エントリが保護されているかどうか、及びそれらのエントリがメモリのPRO領域又は読取り専用領域に記憶されているかどうかのアンチエイリアシングチェックのうちの少なくとも1つに失敗するはずである。
【0153】
ステージ1トップレベルベースアドレスへの不適切な更新に対する保護
EL1において実行されるオペレーティングシステムコードの挙動に影響を及ぼすことができる攻撃者によって試みられる可能性がある別の攻撃は、ベースアドレスレジスタTTBR_EL1によって示されるステージ1トップレベルベースアドレス(L0ステージ1ページテーブルのメモリ内のロケーションを識別する)を修正することであり得る。例えば、攻撃者は、攻撃者によって定義されたステージ1テーブルの新しいセットのアドレスを置換して、正しく形成され、ハイパーバイザによって検証されるように正しく挙動する許可されたページテーブル構造のアドレスを置き換えることができる。また、攻撃者は、例えば、正しいL0ベースアドレスを置き換えるためにL1、2、又は3ページテーブルのうちの1つのベースアドレスを置換することによって、MMU 28に既存の許可されたステージ1ページテーブルを予期せぬ方法で使用させようと試みる可能性があり、その結果、アクセスされたテーブルが予測レベルからツリーの誤ったレベルで使用され、仮想アドレスの異なるビットがテーブルから関連するエントリを選択するために使用されることに起因して、異なるメモリ領域に対するネクストレベルテーブルポインタ又はアドレスマッピングが、アクセスされているメモリ領域に対して誤って使用される可能性がある。
【0154】
図17は、これらのタイプの攻撃から保護するために実行することができるステージ1トップレベルベースアドレスチェックを示す。ステップ1000では、あるターゲット仮想アドレスを指定するメモリアクセス要求に対してページテーブルウォークが必要とされる(必要なアドレスマッピングがTLBからすでに利用可能であるのでページテーブルウォークを必要としないメモリアクセス要求に対しては、前のページテーブルウォークに続いてこれらのアドレスマッピングがキャッシュに割り振られた時点で、必要なステージ1トップレベルベースアドレスチェックがすでに行われているので、別のチェックを実行する必要はない)。ステップ1002において、ステージ1トップレベルベースアドレスは、ステージ1変換テーブルベースアドレスレジスタTTBR_EL1内の値に基づいて決定される。ベースアドレスは、中間アドレスIPA_baseとして指定される。ステップ1004において、MMU 28は、IPA_baseからPA_baseへのマッピングを提供する関連するステージ2変換テーブルエントリによって指定される情報を取得する。例えば、この情報は、すでにTLBにキャッシュされている場合にはTLB 29から取得することができ、又はステージ2変換テーブルベースアドレスレジスタVTTBR_EL2において指定されたステージ2ベースアドレスを使用してステージ2変換テーブルウォークを実行することによって取得することができる。
【0155】
ステップ1006において、MMU 28は、ステージ1トップレベルテーブル部分読取り専用チェックがイネーブルかどうかを決定する。例えば、これは、制御レジスタ(例えば、更新が例外レベルEL2以上で実行するコードに制限されるステージ2変換制御レジスタVTCR_EL2)に記憶されたステージ1トップレベルテーブル部分読取り専用チェックイネーブル制御値に基づいて決定され得る。代替的に、他の実装形態は、ステージ1トップレベルテーブル部分読取り専用チェックが永続的にイネーブルであると見なし得る。ステージ1トップレベルテーブル部分読取り専用チェックがイネーブルにされている場合、ステップ1008において、MMU 28は、関連するステージ2変換テーブルエントリがPRO許可を指定しているかどうかをチェックし、指定していない場合、ステップ1010において、メモリアクセスが拒絶され、失敗が通知される。これは、攻撃者がステージ1変換テーブルベースアドレスレジスタTTBR_EL1を、攻撃者によって作成された新しいL0ページテーブルを指すように修正しようと試みる場合、攻撃者がメモリのPRO領域を修正することができず、したがって非PRO領域に書込まれているはずなので、修正されたベースアドレスに基づくアクセスが失敗し、したがってステージ1トップレベルテーブルPROチェックが失敗することを意味する。
【0156】
ステージ1トップレベルテーブルPROチェックが、ステップ1006でディセーブルであるか、又はイネーブルであるがステップ1008でパスする場合、ステップ1012で、MMU 28は、ステージ1トップレベルテーブル存在チェックがイネーブルであるかどうかを決定する。この場合も、これは、制御レジスタ(例えば、ステージ2変換制御レジスタVTCR_EL2)に記憶されたステージ1トップレベルテーブル存在チェックイネーブル制御値に基づいて決定され得る。ステップ1012においてチェックがイネーブルであるかどうかを決定するために使用されるイネーブル制御値は、ステップ1006について上述されたイネーブル制御値と同じであり得る(例えば、いくつかの実装形態では、ステップ1008及び1014におけるチェックは、全体としてイネーブルであるか又は全体としてディセーブルである単一のチェックの2つのステップと見なされ得る)。ステージ1トップレベルテーブル存在チェックがイネーブルである場合、ステップ1014において、MMU 28は、関連するステージ2変換テーブルエントリがステージ1トップレベルエントリ存在許可80を指定するかどうかを決定する。
図8に関して上述したように、ステージ1トップレベルエントリ存在許可は、(ステージ1トップレベルエントリ存在許可を有するメモリ領域もPRO許可を有すると仮定されるように)PRO許可の代替的なバリアントとして符号化されてもよく、あるいは、PRO許可が提供されるか否かの指示とは別個の独立した属性として符号化されてもよい。関連付けられたステージ2変換テーブルエントリがステージ1トップレベルエントリ存在許可を指定しない場合、再びステップ1010において、メモリアクセスが拒否され、失敗がシグナリングされる。これは、L1、L2、又はL3テーブルを保持するために使用されるメモリ領域に対応するステージ2エントリがステージ1トップレベルエントリ存在許可を有さないように定義され得るので、ステージ1トップレベルベースアドレスをL1、L2、又はL3テーブルのアドレスを指すように修正することによって、有効かつ真正なL1、L2、又はL3テーブルがL0テーブルと置換されることから保護するために使用され得る。どのアドレスが有効なメモリアクセスのためのステージ1 L0ベースアドレスとして使用され得るかを制限するために、任意の有効かつ真正なステージ1 L0テーブルを保持するために使用されるメモリ領域のみが、対応するステージ2エントリにおいてステージ1トップレベルエントリ存在許可を有するものとしてマークされ得る。
【0157】
ステージ1トップレベルテーブル存在チェックが、ステップ1012においてディセーブルであるか、又はイネーブルであるがステップ1014においてパスする場合、ステップ1016において、MMUは、PA_baseによって識別されるメモリ領域にアクセスするために必要とされる任意の他のチェックを実行し、これらが失敗する場合、再びステップ1010においてメモリアクセスを拒否する。任意の他のチェックにパスした場合、ステップ1018において、ステージ1トップレベルベースアドレスIPA_baseを有効に使用して、ページテーブルウォークを実行することができる。したがって、ステージ1トップレベル変換テーブルエントリのアドレスは、決定されたPA_baseにインデックスオフセットを適用することによって取得され、インデックスオフセットは、変換されるターゲットVAのビットのサブセットに基づいて決定される。その後、ページテーブルウォークは前述したように継続する。
【0158】
したがって、
図6に示すように、ソフトウェアによって定義される(したがってハードウェアによる要件として実施されない)予想される使用において、追加保護が望まれるメモリ領域のPAマッピング64を取得するためにページテーブルウォーク上でアクセスされるステージ1エントリの中で、ステージ1 L0ページテーブルの記憶ロケーションを識別するPAマッピング64を提供するステージ2ページ/ブロック記述子は、PRO及びステージ1トップレベル存在許可の両方を指定し、PAマッピング64を提供するステージ2ページ/ブロック記述子は、ステージ1 L1、L2、又はL3ページテーブルの記憶ロケーションを識別し、PRO許可を指定するがステージ1トップレベル存在許可を指定しない。これは、上述したベースアドレス置換攻撃から保護する。ベースアドレスチェックを実装する必要性を回避する代替は、EL2において実行するハイパーバイザへのステージ1ベースアドレスレジスタTTBR_EL1への任意のアクセスをトラップすることであり得、次いで、ハイパーバイザは、EL1において実行するオペレーティングシステムコードによって要求された更新が有効であるかどうかを検査し、必要であれば更新を拒否し得る。しかしながら、実際には、オペレーティングシステムは、コンテキスト切り替え時にベースアドレスレジスタTTBR_EL1内のアドレスを頻繁に切り替える必要がある場合があり、したがって、全ての更新をトラップすることは、性能の点でコストがかかる場合がある。
図17に示されるステージ1トップレベルベースアドレスチェックを実装することによって、これは、TTBR_EL1へのベースアドレスレジスタ更新に対するそのようなトラップの必要性を回避し、性能を改善することができる。
【0159】
いくつかの例では、ステージ1トップレベルの存在許可の単一のバリアントがサポートされ得、その場合、
図17のステップ1014におけるチェックは、単に、そのステージ1トップレベルの存在許可が指定されているかどうかのチェックであり得る。
【0160】
他の例は、特定のステージ1変換テーブルベースアドレスレジスタが対応するメモリ領域内のアドレスを指定することができるより細かい制御を可能にするために、ステージ1トップレベル存在許可の2つ以上のバリアントをサポートすることができる。例えば、いくつかの実装形態は、以下の2つのステージ1ベースアドレスレジスタをサポートし得る。
●TTBR0_EL1であり、変換される仮想アドレスの構成可能な数(number、N)の最上位ビットが全て0に設定されるときに、EL0又はEL1におけるステージ1変換のために選択される(Nは、制御レジスタにおいて指定される制御値において定義され得る)。及び
●TTBR1_EL1であり、変換される仮想アドレスのN個の最上位ビットのいずれかが非0であるときに、EL0又はEL1におけるステージ1変換のために選択される。
【0161】
次に、ステージ1トップレベルの存在許可のいくつかのバリアントは、以下を含んで定義されることができる。
●Toplevel0であり、TTBR0_EL1を介してアクセスされるTop-level変換テーブルでは使用が許可されているが、TTBR1_EL1を介してアクセスされるTop-level変換テーブルでは使用が許可されていないメモリ領域を示す。
●Toplevel1であり、TTBR1_EL1を介してアクセスされるTop-level変換テーブルでは使用が許可されているが、TTBR0_EL1を介してアクセスされるTop-level変換テーブルでは使用が許可されていないメモリ領域を示す。
●Toplevel01であり、TTBR0_EL1又はTTBR1_EL1のいずれかを介してアクセスされるトップレベル変換テーブルのために使用が許可されるメモリ領域を示す。
【0162】
この場合、ステップ1014におけるチェックの一実装形態は、以下の条件のいずれかが満たされる場合、
図17のステップ1010において失敗がシグナリングされるようにし得る。
●TTBR0_EL1は、対応メモリ領域がToplevel0許可又はToplevel01許可のいずれかを有していないベースアドレスを提供するために使用されるか、又は
●TTBR1_EL1は、対応するメモリ領域がToplevel1許可又はToplevel01許可のいずれかを持たないベースアドレスを提供するために使用される。
【0163】
いくつかの実装形態では、EL2においてソフトウェアによって制御される制御レジスタに設定される更なる制御は、TTBR0_EL1がToplevel1ページへのアクセスを与えることを禁止されるかどうか、及びTTBR1_EL1がToplevel0ページへのアクセスを与えることを禁止されるかどうかを制御することができる。この場合、ステップ1014におけるチェックは、以下の条件のいずれかが満たされた場合に、ステップ1010において失敗を通知させることができ、
●TTBR0_EL1は、TTBR0/Toplevel1失敗イネーブル制御が、TTBR0_EL1がToplevel1ページにアクセスするために使用されるときに失敗がトリガされることを可能にするように設定されるとき、対応するメモリ領域がToplevel01許可を有しないか、又はToplevel1許可を有するベースアドレスを提供するために使用され、又は
●TTBR1_EL1は、TTBR1_EL1がToplevel01ページにアクセスするために使用されるときに失敗がトリガされることを可能にするようにTTBR1/Toplevel0失敗イネーブル制御が設定されるときに、対応するメモリ領域がToplevel0許可を有しないか、又はToplevel0許可を有するベースアドレスを提供するために使用される。
【0164】
これらの特徴は、トップレベルステージ1変換テーブルを提供するためにどのメモリアドレス領域に使用され得るかについてのより細かい制御を可能にするが、イネーブル制御は、TTBR0及びTTBR1の両方のベースアドレスを提供するために使用される任意のトップレベルページについて許容可能であると考えられる場合、これらのより細かいチェックがディセーブルされることを可能にする。
【0165】
いくつかの実装形態では、様々なトップレベル存在許可Toplevel0、Toplevel1、Toplevel01の符号化は、これらがToplevel0 PRO許可、Toplevel1 PRO許可、及びToplevel01 PRO許可として扱われるように、PRO許可の符号化と組み合わせることができる。そのような実装形態では、Toplevel0、Toplevel1、又はToplevel01メモリ領域をPRO許可を有さないものとして定義することは不可能である。それにもかかわらず、ステージ1トップレベルテーブル存在許可のいずれかを有するものとして扱われない別個のPRO許可符号化が存在するので、Toplevel0、Toplevel1、又はToplevel01許可のいずれも有さないものとしてPRO領域を定義することが可能である。
【0166】
シミュレータ例
図18は、使用され得るシミュレータ実装形態を例示する。上記の実施形態は、当該技法をサポートする特定の処理ハードウェアを動作させる装置及び方法の点において本発明を実装しているが、コンピュータプログラムの使用によって実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限り、シミュレータと称されることがよくある。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、ホストプロセッサ1230で実行してもよく、任意選択でホストオペレーティングシステム1220を実行し、シミュレータプログラム1210をサポートする。いくつかの配置では、ハードウェアと提供されている命令実行環境との間に複数のレイヤのシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供されている複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装形態を提供するのに必要とされてきたが、このようなアプローチは、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときなど一定の状況では、正当化され得る。例えば、シミュレータ実装形態は、ホストプロセッサハードウェアによってサポートされていない追加の機能性を有する命令実行環境を提供し得るか、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供し得る。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
【0167】
これまで、特定のハードウェア構成物又は特性を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、好適なソフトウェア構成物又は特徴によって同等の機能性を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態で、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態で、ソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ1230)に存在する配置では、いくつかのシミュレーションされた実施形態は、好適な場合、ホストハードウェアを使用し得る。
【0168】
シミュレータプログラム1210は、コンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶されてもよく、シミュレータプログラム1210によってモデル化されているハードウェアアーキテクチャのインターフェースと同じであるターゲットコード1200(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)にプログラムインターフェース(命令実行環境)を提供する。したがって、上述した保護エントリチェックRCW命令を含む、ターゲットコード1200のプログラム命令は、シミュレータプログラム1210を使用する命令実行環境内から実行されてもよく、それによって、上述した装置2のハードウェア機能を実際には有していないホストコンピュータ1230は、これらの機能をエミュレートすることができる。同様に、PRO領域タイプのサポートを含む、上述した様々なメモリ管理チェック機能は、シミュレータプログラム1210のメモリ管理プログラムロジック1218を使用してエミュレートされてもよい。
【0169】
したがって、シミュレータプログラム1210は、上述した処理回路4の状態をシミュレートする処理プログラムロジック1212を有してもよい。例えば、処理プログラムロジック1212は、ターゲットコード1200のシミュレートされた実行中に発生するイベントに応答して、実行状態EL0~EL3の遷移を制御することができる。命令復号プログラムロジック1214は、ターゲットコード1200の命令を復号し、ホスト装置1230のネイティブ命令セットで対応する命令セットにマッピングする。レジスタエミュレーションプログラムロジック1216は、ターゲットコードによって要求されたレジスタアクセスを、ホスト装置1230のレジスタ又はメモリ1232内のデータにアクセスすることなどによって、ホスト装置1230のホストハードウェア上に維持された対応するデータ構造へのアクセスにマッピングする。メモリ管理プログラムロジック1218は、アドレス変換、ページテーブルウォーク、及びアクセス制御チェックを、上記のハードウェア実装実施形態で説明したMMU 28に対応する方法で実装するが、ターゲットコード1200に対して定義されたページテーブルに基づくアドレス変換におけるステージ2マッピングによって得られたシミュレートされた物理アドレスを、ホストメモリ1232にアクセスするために使用されるホスト仮想アドレスにマッピングする追加機能も有する。これらのホスト仮想アドレス自体は、ホストによってサポートされる標準アドレス変換機構を使用してホスト物理アドレスに変換することができる(ホスト仮想アドレスのホスト物理アドレスへの変換は、シミュレータプログラム1210によって制御されるものの範囲外である)。
【0170】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実行することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0171】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。
【国際調査報告】