(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-06
(45)【発行日】2023-06-14
(54)【発明の名称】メモリ・アクセスにおける保護タグ・チェックの制御
(51)【国際特許分類】
G06F 12/14 20060101AFI20230607BHJP
G06F 12/1009 20160101ALI20230607BHJP
G06F 12/1027 20160101ALI20230607BHJP
G06F 12/0895 20160101ALI20230607BHJP
G06F 9/34 20180101ALI20230607BHJP
【FI】
G06F12/14 510D
G06F12/1009
G06F12/1027
G06F12/0895 100
G06F9/34 350A
G06F9/34 380
(21)【出願番号】P 2020540269
(86)(22)【出願日】2019-01-25
(86)【国際出願番号】 GB2019050210
(87)【国際公開番号】W WO2019150081
(87)【国際公開日】2019-08-08
【審査請求日】2022-01-18
(32)【優先日】2018-02-02
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】バーンズ、グレイム
【審査官】岸野 徹
(56)【参考文献】
【文献】米国特許出願公開第2016/0371179(US,A1)
【文献】特表2009-516310(JP,A)
【文献】米国特許出願公開第2017/0177429(US,A1)
【文献】米国特許第05737575(US,A)
【文献】特開平06-095972(JP,A)
【文献】米国特許出願公開第2007/0157003(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 12/1009
G06F 12/1027
G06F 12/0895
G06F 9/34
(57)【特許請求の範囲】
【請求項1】
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するためのアドレス変換回路であって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、前記タグで保護されたメモリ・アクセスが、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
前記メモリ・アクセス回路が、前記タグ保護制御情報に応じて前記保護タグ・チェックを実行することなく、前記対象物理アドレスに対応して、前記アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成され
、
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、前記メモリ・アクセス回路が、所定の第1の値を有する前記複数のタグ保護制御ビットのうちの少なくとも1つに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス回路が、所定の第2の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、装置。
【請求項2】
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとにタグ保護制御ビットを含み、前記メモリ・アクセス回路が、所定の第1の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス回路が、所定の第2の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、請求項1に記載の装置。
【請求項3】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、前記メモリ・アクセスのタイプに応じてタグ・チェック・ルールを指定する、請求項
1に記載の装置。
【請求項4】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、
前記アドレス指定された位置へのデータ・アクセス、
前記アドレス指定された位置への命令フェッチ、及び
前記アドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセス
のうちの少なくとも1つに適用されるように構成されたタグ・チェック・ルールを定義する、請求項
3に記載の装置。
【請求項5】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、ロード動作と記憶動作で異なるタグ・チェック・ルールを定義する、請求項
3又は請求項
4に記載の装置。
【請求項6】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、前記アドレス指定された位置への書込みアクセスのための、前記タグで保護されないメモリ・アクセス動作を指定するタグ・チェック・ルールを定義する、請求項
3から
5までのいずれか一項に記載の装置。
【請求項7】
前記装置が、前記アドレス指定された位置が命令の記憶用に割り当てられるか、又はデータの記憶用に割り当てられるかに応じて、前記記憶されたページ・テーブル・マッピングに前記タグ保護制御情報を設定するように構成される、請求項1から
6までのいずれか一項に記載の装置。
【請求項8】
前記装置が、前記アドレス指定された位置がカーネル空間として割り当てられるか、又はユーザ空間として割り当てられるかに応じて、前記記憶されたページ・テーブル・マッピングに前記タグ保護制御情報を設定するように構成される、請求項1から
7までのいずれか一項に記載の装置。
【請求項9】
アドレス変換回路が、仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するステップであって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
前記タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
前記対象物理アドレスに対応した、前記保護タグ・チェックを実行することのない前記アドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を
メモリ・アクセス回路が実行するステップと
を含
み、
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、
前記メモリ・アクセス回路が、所定の第1の値を有する前記複数のタグ保護制御ビットのうちの少なくとも1つに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス回路が、所定の第2の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、方法。
【請求項10】
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、前記タグで保護されたメモリ・アクセスが、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
前記メモリ・アクセス・プログラム・ロジックが、前記タグ保護制御情報に応じて前記保護タグ・チェックを実行することなく、前記対象物理アドレスに対応して、前記アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成され
、
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、前記メモリ・アクセス・プログラム・ロジックが、所定の第1の値を有する前記複数のタグ保護制御ビットのうちの少なくとも1つに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス・プログラム・ロジックが、所定の第2の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、コンピュータ・プログラム。
【請求項11】
請求項10に記載のコンピュータ・プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
データ処理装置によって実行されるソフトウェアは、通常、高水準プログラミング言語で記述され、次いでソフトウェアが実行される装置によってサポートされる命令セット・アーキテクチャに従ってコードにコンパイルされ得る。例えば、ソフトウェアは最初にJava、C、又はC++などの高水準言語で記述され、次いでx86又はArm(登録商標)などのネイティブにサポートされる命令セット・アーキテクチャにコンパイルされ得る。
【0003】
Javaなどのいくつかの高水準プログラミング言語は、メモリ・アクセスに関連する一定のエラーをチェックするための実行時エラー検出チェックを含むので、メモリ安全な言語とみなされる。対照的に、C及びC++などのメモリ安全でない言語は、そのような実行時エラー・チェックを含まない。メモリ安全でない言語の使用が永続的に普及するということは、所与の命令セット・アーキテクチャに従ってコンパイルされたコード内に、攻撃者又は他の悪意のある当事者による悪用に対して脆弱である可能性があるメモリ関連エラーが多数存在し得ることを意味する。このようなエラーには、以下が含まれ得る。
・コードによって提供された配列のインデックスが配列の正当な境界の外側にある場合の、境界違反。
・メモリ位置がすでに割当て解除又は解放された後にそのメモリ位置へのアクセスが行われた場合の、解放後使用エラー。
・関数内で使用される変数(スタック上の値など)に関連付けられたアドレスへのメモリ・アクセスが、関数からすでに戻った後に行われた場合の、リターン後使用。
・変数が宣言されているスコープ外でアクセスされた場合の、スコープ外使用のエラー。
・変数に関連付けられたメモリ・アドレスが、変数が初期化される前にアクセスされた場合の、初期化前使用エラー。
【0004】
これらは、予測不可能な挙動を引き起こし、悪用するための手段を攻撃者に潜在的に提供する恐れがあるメモリ関連エラーのごく一部の実例であり、したがって、所与の処理装置によってサポートされる命令セット・アーキテクチャ内で、一定のクラスのメモリ・エラーの実行時検出を支援するためのアーキテクチャ・サポートを提供することが望ましい場合がある。
【先行技術文献】
【非特許文献】
【0005】
【文献】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53~63頁
【発明の概要】
【課題を解決するための手段】
【0006】
少なくともいくつかの実例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路であって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
メモリ・アクセス回路が、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
装置を提供する。
【0007】
少なくともいくつかの実例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するステップであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
対象物理アドレスに対応した、保護タグ・チェックを実行することのないアドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を実行するステップと
を含む方法を提供する。
【0008】
少なくともいくつかの実例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
メモリ・アクセス・プログラム・ロジックが、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
コンピュータ・プログラムを提供する。
【0009】
記憶媒体は、上記のコンピュータ・プログラムを記憶してもよい。記憶媒体は、非一時的記憶媒体であってもよい。
【0010】
添付の図面に示されるようなその実施例を参照して、本技法を単なる一例としてさらに説明する。
【図面の簡単な説明】
【0011】
【
図1】データ処理装置の一実例を概略的に示す図である。
【
図2】アドレス・タグが保護タグと一致するかどうかをチェックすることを含むタグで保護されたメモリ・アクセス動作の一実例の図である。
【
図3】タグで保護されたメモリ・アクセス動作を実行する方法を示すフロー図である。
【
図4】アドレス変換及び保護タグ・チェックが実行され得る例示的なシステムを概略的に示す図である。
【
図5A】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【
図5B】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【
図5C】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【
図6】一実例においてメモリが割り当てられるときにページ・テーブル・ビットがどのように設定されるかを示すフロー図である。
【
図7】一実例においてページ・テーブル・エントリ内のタグ保護制御情報に応じて実施される保護タグ・チェックに対する制御を示すフロー図である。
【
図8】アドレス変換ロジックをサポートするシミュレータの一実例の図である。
【発明を実施するための形態】
【0012】
少なくともいくつかの実施例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路であって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
メモリ・アクセス回路が、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
装置を提供する。
【0013】
上述のタイプの一定のメモリ使用エラーから保護するための1つの手法は、1つ又は複数のメモリ位置のブロックに関連付けてメモリ・システムに記憶される保護タグを提供することである場合がある。メモリ・システム内の特定のアドレス指定された位置を識別する対象アドレスに基づいて、タグで保護されたメモリ・アクセスが要求されると、メモリ・アクセス回路は、対象アドレスに関連付けられているアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けられているメモリ・システム内に記憶されている保護タグと比較することができる。メモリ・アクセス回路は、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示を生成することができる。この表示は、メモリ・アクセスの成功を許可するか、若しくは後続の動作を成功させるかを制御するために使用され得るか、又はメモリ・アクセスを通常通り続行しながら単に報告される場合がある。
【0014】
これは、例えば、C又はC++などのメモリ安全でない言語に基づいてコードをコンパイルするコンパイラが、メモリの領域を初期化するときに、コードが特定の値にアクセスすることが予想されるメモリのブロックの保護タグを設定することができるので有用である場合があり、対応するアドレス・タグ値をそれらのブロックを指す対象アドレスに関連付けてもよい。メモリ使用エラーが発生し、例えばアドレス・ポインタがスコープ外で使用されるか、又は初期化された有効範囲の境界を越えて拡張する場合、アドレス指定された位置に関連付けられた保護タグが対象アドレスに関連付けられたアドレス・タグと一致しない可能性があり、この場合、一致が検出されたかどうかの表示を使用して、何らかのエラー処理応答又はエラー報告メカニズムをトリガすることができる。実行される特定の応答は、実行されているソフトウェアの特定のニーズ、又はアーキテクチャの特定のマイクロアーキテクチャ実装に依存する可能性がある。したがって、高水準言語がメモリ・アクセス・エラーから保護するために実行時エラー・チェックを実行するための手段を有していない場合でも、コンパイルされるコードに使用されるISAは、そのようなチェックを実行するためのアーキテクチャ機能を含む可能性がある。
【0015】
しかしながら、そのような保護タグ・チェックは、いくつかの状況においてあまり望ましくない可能性のある保護タグ・チェックを実行する際に、いくらかのオーバーヘッドを招く恐れがある。ここで説明する装置は、仮想アドレスから物理アドレスへの変換を実行するときに、タグ保護制御情報を含むページ・テーブル・マッピングを利用し、次いで、メモリ・アクセス回路が、タグ保護制御情報に応じて、タグで保護されたメモリ・アクセスを実行する(保護タグ・チェックを行う)か、又は単に「通常の」メモリ・アクセスを実行する(保護タグ・チェックを行わない)のいずれかを行う。したがって、これにより、タグ保護制御情報が、(物理)アドレスについて定義されたページ・テーブル・マッピングの一部を形成するので、メモリ・アクセスの対象であるその(物理)アドレスに応じて保護タグ・チェックを実行するかどうかを制御することができる。メモリ・アドレスは様々に分類され得るので(例えば、所有者別、コンテンツ別など)、いつ、どのメモリ・アクセスが保護タグ・チェックを伴うかを柔軟に制御することができる。
【0016】
タグ保護制御情報は様々な形式をとることができるが、いくつかの実例では、記憶されたページ・テーブル・マッピングは、ページ・テーブル・エントリごとにタグ保護制御ビットを含み、メモリ・アクセス回路は、所定の第1の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されたメモリ・アクセスを実行し、メモリ・アクセス回路は、所定の第2の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行する。したがって、アドレス指定された位置へのアクセスが保護タグ・チェックを伴うかどうかを、単一のビットが制御することができる。
【0017】
いくつかの実例では、記憶されたページ・テーブル・マッピングは、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、メモリ・アクセス回路は、所定の第1の値を有する複数のタグ保護制御ビットのうちの少なくとも1つに応答して、アドレス指定された位置へのタグで保護されたメモリ・アクセスを実行し、メモリ・アクセス回路は、所定の第2の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行する。したがって、タグ保護制御情報が複数のビットを含む場合、アドレス指定された位置へのどのアクセスに保護タグ・チェックを伴うかについて、より細かい制御がサポートされる。その場合、保護タグ・チェックを行うかどうかを判定する際に、メモリ・アクセスの任意の定義可能な特性が利用され得る。
【0018】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、メモリ・アクセスのタイプに応じてタグ・チェック・ルールを指定する。したがって、保護タグ・チェックが行われるかどうかは、メモリ・アクセスのタイプに依存する可能性がある。例えば、ある特定のタイプのメモリ・アクセスを除くすべてのメモリ・アクセスで保護タグ・チェックが省略されることがあり、ある特定のタイプのメモリ・アクセスを除くすべてのメモリ・アクセスで保護タグ・チェックがトリガされることがあり、又はこれらの極端なものの間の何らかである。
【0019】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、アドレス指定された位置へのデータ・アクセス、アドレス指定された位置への命令フェッチ、及びアドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセスのうちの少なくとも1つに適用されるように構成されたタグ・チェック・ルールを定義する。
【0020】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、ロード動作と記憶動作で異なるタグ・チェック・ルールを定義する。有用となり得る特定の区別は、ロードと記憶の区別であり、それにより保護タグ・チェックを一方に対して行い、もう一方に対しては行わない。
【0021】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、アドレス指定された位置への書込みアクセスのための、タグで保護されないメモリ・アクセス動作を指定するタグ・チェック・ルールを定義する。したがって、保護タグ・チェックを行わずにアドレス位置への書込みがなされ得る。
【0022】
アドレス指定された位置が割り当てられるとき、アクセスされる前に、タグ保護制御情報は、そのアドレス指定された位置の所期の使用に応じて様々に設定され得る。いくつかの実例では、装置は、アドレス指定された位置が命令の記憶用に割り当てられるか、又はデータの記憶用に割り当てられるかに応じて、記憶されたページ・テーブル・マッピングにタグ保護制御情報を設定するように構成される。保護タグ・チェックを一方に対して行い、もう一方に対しては行わないように構成されてもよい。
【0023】
さらに、保護タグ・チェックを行うかどうかを判定するために、割り当てられたメモリ位置の所有者が使用されてもよく、いくつかの実例では、装置は、アドレス指定された位置がカーネル空間として割り当てられるか、又はユーザ空間として割り当てられるかに応じて、記憶されたページ・テーブル・マッピングにタグ保護制御情報を設定するように構成される。
【0024】
少なくともいくつかの実施例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するステップであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
対象物理アドレスに対応した、保護タグ・チェックを実行することのないアドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を実行するステップと
を含む方法を提供する。
【0025】
少なくともいくつかの実施例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
メモリ・アクセス・プログラム・ロジックが、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
コンピュータ・プログラムを提供する。
【0026】
少なくともいくつかの実施例は、上記のコンピュータ・プログラムを記憶する記憶媒体を提供する。
【0027】
次に、図を参照していくつかの特定の実施例を説明する。
【0028】
図1は、データ処理装置2の一実例を概略的に示す。これは単に装置の構成要素のサブセットの高水準表現であり、装置が図示されていない他の多くの構成要素を含み得ることが理解されよう。装置2は、命令デコーダ6にデコードされた命令に対応してデータ処理を実行するための処理回路4を備える。命令デコーダ6は、命令キャッシュ8からフェッチされた命令をデコードして、命令によって表される対応する処理動作を実行するように処理回路4を制御するための制御信号10を生成する。処理回路4は、レジスタ14に記憶された値に対して演算を実行して、レジスタに書き戻される結果値を生成するための1つ又は複数の実行ユニットを含み得る。例えば、実行ユニットには、算術演算若しくは論理演算を実行するための算術/論理ユニット(ALU:arithmetic/logic unit)、浮動小数点オペランドを使用して演算を実行するための浮動小数点ユニット、及び/又は複数の独立したデータ要素を含むオペランドに対してベクトル演算を実行するためのベクトル処理ユニットが含まれ得る。処理回路は、レジスタ14とメモリ・システムとの間のデータの転送を制御するためのメモリ・アクセス回路(例えば、ロード/記憶ユニットを含む)15も含む。この実例では、メモリ・システムは、命令キャッシュ8、レベル1(L1)データ・キャッシュ16、データと命令との間で共有されるレベル2(L2)キャッシュ17、及びメイン・メモリ18を含む。これは一例にすぎず、他のキャッシュ階層も可能であることが理解されよう。メモリ管理ユニット(MMU:memory management unit)20は、ロード/記憶ユニット15によってトリガされるメモリ・アクセスをサポートするためのアドレス変換機能を提供するために設けられる。MMUは、メモリ・システム16、17、18に記憶されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)22を有する。各ページ・テーブル・エントリは、アドレスの対応するページにアドレス変換マッピングを提供し、ページが読取り専用領域であるか、若しくは読取りと書込みの両方が可能であるかを指定するアクセス許可、又はどの特権レベルがページにアクセスできるかを指定するアクセス許可などのアクセス制御パラメータを指定してもよい。さらに、以下でより詳細に述べるように、ページ・テーブル・エントリは、アドレスのそのページ内のアドレスへのアクセスが行われたときに保護タグ・チェックを行うかどうかを制御するために本技法によって使用されるタグ保護制御情報を指定することができる。
【0029】
図2は、タグで保護されたメモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ位置を参照するために使用される物理アドレス空間は、それぞれが一定数のアドレス指定可能な位置を含むいくつかのブロック30に論理的に分割され得る。簡潔にするために、
図2の実例では、各ブロック30は4つのメモリ位置を含むが、他のブロック・サイズも同様に使用され得る。各ブロック30は、対応する保護タグ32に関連付けられている。一定数のブロック30に関連付けられた保護タグは、一緒に集められて、物理アドレス空間内のアーキテクチャ的にアクセス可能な別のメモリ位置34内、又はメイン・メモリ18に提供されている、アーキテクチャ的にアクセス不可能な(同じ物理アドレス空間にマッピングされていない)追加の記憶位置内のいずれかに記憶され得る。非アーキテクチャ的にアクセス可能な別個の記憶装置を使用すると、場合によっては、データ・キャッシュ16、17で保護タグの値をキャッシュするために空間を使い果たし、通常のコードの性能に影響を及ぼし、コヒーレンシ管理がより複雑になるのを避けることが望ましい場合がある。メイン・メモリ18からタグにアクセスする必要がある場合よりも高速にアクセスできるように、非アーキテクチャ的にアクセス可能な記憶装置からのタグ値をキャッシュするための追加のタグ・キャッシュ19がマイクロアーキテクチャに設けられてもよい。どのタグ記憶位置34が各ブロック30に対応するかの特定のマッピングは、ロード/記憶ユニット15によって制御されてもよく、ハードワイヤードされ得るか、又はプログラム可能であり得る。
図2では、各タグ32が物理アドレスのブロックに関連付けられている一方で、仮想メモリ・アドレス空間内の仮想メモリ位置に関連付けられた保護タグ32を提供することも可能であるが、これには各メモリ・アクセスでいくつかの追加のアドレス変換が必要になる場合がある。したがって、保護タグ32を物理メモリ位置に関連付けることによって性能を向上させることができる。一般に、保護タグ32を物理アドレス空間の対応するブロック30にどのように関連付けるかは、厳密には特定のマイクロアーキテクチャの実装による選択である。一般に、必要とされるのは、メモリの所与のブロックに関連付けられた保護タグ32にアクセスし、比較できることだけである。
【0030】
したがって、タグで保護されたメモリ・アクセスが発生する必要がある場合、(アクセスされるアドレス指定された位置44を識別する対象アドレス42に関連付けられている)アドレス・タグ40は、アドレス指定された位置44を含むメモリ位置30のブロックに関連付けられている保護タグ32と比較され得る。例えば、
図2では、対象アドレス42はメモリ内のある位置B1を指し、
図2のアドレス空間で44と記されている。したがって、位置B1を含む位置Bのブロックに関連付けられている保護タグBは、対象アドレス42に関連付けられたアドレス・タグ40と比較される。
図2の上部に示すように、アドレス・タグ40は、対象アドレス自体の選択されたビットの関数として決定され得る。具体的には、アドレス・タグは、アドレス指定された位置44として選択されるべき特定のメモリ位置を示すために使用されない対象アドレスの一部内のビットから決定され得る。例えば、いくつかのアーキテクチャでは、対象アドレスのビットの上位部は符号拡張(すべて0又はすべて1)などの一定の固定値を常に有する可能性があるので、アドレスは、これらの未使用のビットを任意のタグ値で上書きすることによってアドレス・タグ40でタグ付けされ得る。特定のアドレス・タグ値は、例えばプログラマ又はコンパイラによって選択され得る。アドレス・タグ及び保護タグ32は、比較的少数のビット、例えば4ビットであり得るので、メモリ内及び対象アドレス内の多くの空間を占有する必要はない。4ビットのタグ空間、すなわち16の可能なタグ値を提供することは、しばしば、多くの一般的なタイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
【0031】
したがって、タグで保護されたメモリ・アクセスが実行されると、アドレス・タグ40とアドレス指定された位置44を含むブロック30に関連付けられた保護タグ32との間で比較が行われ、それらが一致するかどうかが判定される。
図1の例示的な構成例では、比較は、ロード/記憶ユニット15と物理メモリ18との間のどこでも実行され得る(実際には、その経路に沿って分散され得る)ことに留意されたい。しかしながら、この実例では、比較は、ロード/記憶ユニット15によって実行されるという点で、簡単にするために説明されている。ロード/記憶ユニット15は、アドレス・タグ40及び保護タグ32が一致したかどうかを示す一致表示を生成する。例えば、この一致表示は、アドレス・タグ40と保護タグ32との間に不一致がある場合に生成されるフォールト信号60、又は一致があったかどうかを示すステータス・レジスタに設定される表示、又はエラーが検出されたアドレス及び/若しくはエラーをトリガした命令の命令アドレスを示すためにエラー・レポートに追加されたエントリである場合がある。
【0032】
図3は、タグで保護されたメモリ・アクセスを処理するためのフロー図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及び対象アドレスを指定してもよい。
図2に示すように、場合によっては、アドレス・タグは、実際には対象アドレス自体のビットのサブセットから導出されてもよいが、他の実例では別のレジスタで指定され得る。ステップ50において、タグで保護されたメモリ・アクセスをトリガする命令が発生する。これに応答して、ステップ52において、メモリ・アクセス回路15は、対象アドレスによって識別されるアドレス指定された位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、対象アドレスによって識別されるアドレス指定された位置44を含むメモリ位置30のブロックに関連付けてメモリ・システムに記憶されている保護タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、アドレス・タグ40をステップ54で取得された保護タグ32と比較する。ステップ58において、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示が、メモリ・アクセス回路15によって生成される(例えば、上述の一致/不一致を報告する表示タイプのいずれか)。不一致の場合にそれを報告するために使用される正確な表示は、実装ごとに異なる場合がある。
【0033】
図4は、一実例における装置60を概略的に表現したものである。MMU20の一部であり得るアドレス変換回路62は、(タグ部分65を含む)仮想アドレスを受信する。アドレス変換回路62は、仮想アドレス64をメモリ・システムで使用するための物理アドレス66に変換する。メモリ68は、
図4に一般的に示されており、メイン・メモリ及び1つ又は複数のキャッシュを含み得る。アドレス変換回路62は、単一の例70が示されている(実際にはメモリ・システムに記憶されている)ページ・テーブルを参照して変換を実行する。上述のように、MMUは、頻繁に使用される変換をキャッシュするためのTLBを有する場合がある。ページ・テーブル・エントリ72は、変換情報自体、及び追加のタグ保護制御情報74を含む。変換を実行する際、アドレス変換回路62は、タグ保護制御情報を、それが生成する物理アドレスに組み込む。これは、例えば、物理メモリ位置を指定するために使用されず、代わりに他の情報をメモリ・システムに伝達するために使用されるアドレス空間(ここでは物理タグとも称する)の一部とすることができる。例えば、64ビットのアドレス空間では、ビット[55:0]が仮想アドレス部分を形成し、ビット[63:56]が仮想タグ部分を形成する場合がある。同様に、物理アドレスでは、ビット[55:0]が物理アドレス部分を形成し、ビット[63:56]が物理タグ部分を形成する場合がある。定義されたビット空間が何であれ、この物理タグ部分は、選択された情報、例えば保護タグと比較され得るアドレス・タグを、メモリ・システムに伝達することができるが、これは物理タグ部分のすべてを占有し得るとは限らず、したがってタグ保護制御情報74も伝達され得る。
【0034】
タグ保護チェック回路76は、アドレス・タグ78とタグ保護制御情報(TGC:tag guard control information)80(ここでは物理アドレス66の一部)の両方を受信する。タグ保護チェック回路76内の制御ユニット82は、タグ保護制御情報(TGC)80を受信し、制御ユニットは、受信した特定の情報に応じて、保護タグ・チェックを実行するかどうかを判定する。アドレス・タグ78及びアドレス指定された位置に関連付けて記憶されている関連する保護タグ86を受信することによってチェックを実行するのは、タグ保護チェック回路76内の比較ユニット84である。
図4は、制御ユニット82がメモリ・アクセスのタイプ(例えば、ロード又は記憶、すなわち、読取り又は書込み)の表示も受信することを示しており、いくつかの実例では、制御ユニットは、制御ユニットが保護タグ・チェックを実行するかどうかを判定するときに、それを考慮に入れるように構成されてもよい。
【0035】
図5A、
図5B、及び
図5Cは、タグ保護制御情報を含む例示的なページ・テーブル・エントリを示す。
図5Aのページ・テーブル・エントリ90は、変換情報91自体、並びに様々な許可情報92、及び単一のタグ保護制御ビット93を含む。したがって、ページ・テーブル・エントリ90を使用して生成される物理アドレスの場合、保護タグ・チェックは、完全にオフ又は完全にオンに切り替えられ得るのみである。
図5Bのページ・テーブル・エントリ94は、変換情報95自体、並びに様々な許可情報96、及び1組のタグ保護制御ビット97を含む。したがって、ページ・テーブル・エントリ94を使用して生成される物理アドレスの場合、保護タグ・チェックは、1組のタグ保護制御ビット97のそれぞれに関連付けられた意味に応じて様々に制御され得る。
図5Cのページ・テーブル・エントリ98は、ページ・テーブル・エントリ内で設定可能な複数のタグ保護制御ビットの一実例を示しており、変換情報99自体、並びに様々な許可情報100を含む。ページ・テーブル・エントリ98は、読取りアクセスのためのタグ保護制御101及び書込みアクセスのためのタグ保護制御102をさらに含む。これらはそれぞれわずか1ビットであるので、保護タグ・チェックは、アクセスのタイプごとに完全にオフ又は完全にオンに切り替えられ得る。しかしながら、ここでもそれぞれに対して複数ビットが想定されるので、さらに定義されたコンテキスト制約に応じて、アクセスのタイプごとに保護タグ・チェックを実行するかどうかについてより詳細な制御が実施され得る。例えば、いくつかの場合において、複数ビットは、特注のタグ・チェック・ルール、すなわち、アドレス指定された位置へのデータ・アクセス、アドレス指定された位置への命令フェッチ、及びアドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセスを定義する。保護タグ・チェックは、これらのコンテキストごとに、システム要件に応じてオン又はオフに切り替えられ得る。
【0036】
図6は、一実例においてメモリが割り当てられるときにページ・テーブル・ビットがどのように設定されるかを示すフロー図である。フローはステップ110で開始し、プロセスはメモリの割当てが必要になるまで待機する。割当てが必要になると、ステップ112において、割当てがユーザ・プロセス用であるか又はカーネル・プロセス用であるかが判定される。ユーザ・プロセスの場合、フローはステップ114に進み、(例えば、
図5A~
図5Cの実例のいずれかによる)所望のタグ保護チェック構成が、対応する1つ又は複数のページ・テーブル・エントリに設定される。カーネル・プロセスの場合、フローはステップ116に進み、(例えば、
図5A~
図5Cの実例のいずれかによる)所望のタグ保護チェック構成が、対応する1つ又は複数のページ・テーブル・エントリに設定される。ほんの一例を挙げれば、タグ保護チェックは、ユーザ空間割当ての場合はオンであるが、カーネル空間割当ての場合はオフにされてもよい。なお、これはそれぞれのページ・テーブル・エントリを介して行われ、2つの異なる仮想アドレス(一方はユーザ空間の割当て用、もう一方はカーネル空間の割当て用)に対応する所与の物理アドレスがアクセスされ得るので、同じ物理位置/保護タグに対するタグ保護チェックは、一方のアクセス(例えば、ユーザ)に対して発生するが、他方(カーネル)に対しては発生しないように構成されてもよい。次いで、フローは、いずれかの経路によってステップ118まで進み、割当てが命令の記憶用であるか又はデータの記憶用であるか判定され、別個のタグ保護制御構成が(それぞれステップ120及びステップ122で)それぞれに設定され得る。
図6は単に1つの例示的なプロセスを示しており、例えば、ユーザ/カーネルと命令/データの両方の区別がなされる必要はないことを理解されたい。いくつかの実例では、これらの1つのみが使用され得る。
【0037】
図7は、一実例においてページ・テーブル・エントリ内のタグ保護制御情報に応じて実施される保護タグ・チェックに対する制御を示すフロー図である。フローはステップ130で開始し、プロセスは仮想アドレスが受信されるまで待機する。仮想アドレスが受信されると、ステップ132において、仮想アドレスは物理アドレスに変換され、ページ・テーブル・エントリからのタグ保護制御情報は、物理アドレスの物理タグ部分に含まれる。次いでステップ134において、物理アドレスがメモリ・システム内でアクセスされるとき、(タグ保護制御情報によって定義されるように、場合によってはアクセスのタイプなどの他のコンテキスト情報を参照して)保護タグ・チェックが有効かどうかが判定される。有効である場合、ステップ136において、保護タグ・チェック、及び(これは保護タグ・チェック失敗の1つの可能性のある結果であるが必須ではないので、防止されていない場合に)物理アドレスによってアドレス指定された位置へのメモリ・アクセスが実行される。有効でない場合、ステップ138において、物理アドレスによってアドレス指定された位置へのメモリ・アクセスは、保護タグ・チェックが実行されることなく実施される。
【0038】
図8は、使用され得るシミュレータの実装を示す。前述の実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実装するが、本明細書に記載の実施例による命令実行環境を提供することも可能であり、これはコンピュータ・プログラムの使用を通じて実装される。このようなコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェアベースの実装を提供する限りにおいては、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。通常、シミュレータの実装は、ホスト・プロセッサ230で実行され、任意選択でホスト・オペレーティング・システム220を実行し、シミュレータ・プログラム210をサポートする。いくつかの構成では、ハードウェアと提供される命令実行環境との間にシミュレーションの複数の層、及び/又は同じホスト・プロセッサ上に提供される複数の異なる命令実行環境が存在する場合がある。歴史的に、強力なプロセッサは適正な速度で実行するシミュレータの実装を提供する必要があったが、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行したい場合など特定の状況下においては、このような手法が妥当である場合がある。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアでサポートされていない追加機能を備えた命令実行環境を提供してもよく、又は通常は異なるハードウェア・アーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53~63頁に記載されている。
【0039】
実施例が特定のハードウェア構成又は特徴を参照して前述された範囲において、シミュレートされた実施例では、同等の機能が適切なソフトウェア構成又は特徴によって提供されてもよい。例えば、シミュレートされた実施例において、特定の回路はコンピュータ・プログラム・ロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装されてもよい。前述の実施例で参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(例えば、ホスト・プロセッサ230)上に存在する構成では、いくつかのシミュレートされた実施例は、適宜ホスト・ハードウェアを利用してもよい。
【0040】
シミュレータ・プログラム210は、コンピュータ可読記憶媒体212(非一時的媒体であり得る)に記憶されてもよく、シミュレータ・プログラム210によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである、(アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る)対象コード200へのプログラム・インターフェース(命令実行環境)を提供する。したがって、対象コード200のプログラム命令は、シミュレータ・プログラム210を使用して命令実行環境内から実行されてもよく、その結果、実際に上述の装置60のハードウェア機能を有していないホストコンピュータ230、具体的にはアドレス変換回路62及びタグ保護チェック回路76は、これらの機能をエミュレートすることができる。例えば、シミュレータ・プログラム210は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック214を含んでもよく、アドレス指定された位置にアクセスするため、及び保護タグ・チェックを実行するためのメモリ・アクセス・ロジック216を含んでもよい。したがって、シミュレータ・プログラム210は、保護タグとアドレス・タグの比較を実行し、保護タグとアドレス・タグとの間の何らかの不一致が検出されたかどうかを報告するためのメモリ・アクセス・プログラム・ロジック216を含んでもよい。また、シミュレータ・プログラム210は、ハードウェアの実施例がページ・テーブル・エントリを設定する方法に対応する方法でページ・テーブル・エントリを設定するための命令を含むページ・テーブル設定プログラム・ロジックを含んでもよい。
【0041】
要約すると、装置は、仮想アドレスと物理アドレスと間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路を備える。記憶されたページ・テーブル・マッピングは、タグ保護制御情報を含む。装置は、対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路を備え、タグで保護されたメモリ・アクセスは、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む。メモリ・アクセス回路は、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される。
【0042】
本出願において、「~ように構成される」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有する場合があり、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされている場合がある。「ように構成される」は、定義された動作を提供するために装置の要素が何らかの変更を必要とすることを暗示するものではない。
【0043】
例示的な実施例が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明がそれらの厳密な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が、当業者によって行われ得ることを理解されたい。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなく、独立請求項の特徴と様々に組み合わせることができる。