(57)【要約】  装置は、仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路を備える。記憶されたページ・テーブル・マッピングは、タグ保護制御情報を含む。装置は、対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路を備え、タグで保護されたメモリ・アクセスは、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む。メモリ・アクセス回路は、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される。
2021512400.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するためのアドレス変換回路であって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、前記タグで保護されたメモリ・アクセスが、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
前記メモリ・アクセス回路が、前記タグ保護制御情報に応じて前記保護タグ・チェックを実行することなく、前記対象物理アドレスに対応して、前記アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される、装置。
【請求項２】
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとにタグ保護制御ビットを含み、前記メモリ・アクセス回路が、所定の第１の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス回路が、所定の第２の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、請求項１に記載の装置。
【請求項３】
前記記憶されたページ・テーブル・マッピングが、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、前記メモリ・アクセス回路が、所定の第１の値を有する前記複数のタグ保護制御ビットのうちの少なくとも１つに応答して、前記アドレス指定された位置への前記タグで保護されたメモリ・アクセスを実行し、前記メモリ・アクセス回路が、所定の第２の値を有する前記タグ保護制御ビットに応答して、前記アドレス指定された位置への前記タグで保護されないメモリ・アクセスを実行する、請求項１に記載の装置。
【請求項４】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、前記メモリ・アクセスのタイプに応じてタグ・チェック・ルールを指定する、請求項３に記載の装置。
【請求項５】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、
前記アドレス指定された位置へのデータ・アクセス、
前記アドレス指定された位置への命令フェッチ、及び
前記アドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセス
のうちの少なくとも１つに適用されるように構成されたタグ・チェック・ルールを定義する、請求項４に記載の装置。
【請求項６】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、ロード動作と記憶動作で異なるタグ・チェック・ルールを定義する、請求項４又は請求項５に記載の装置。
【請求項７】
ページ・テーブル・エントリごとの前記複数のタグ保護制御ビットが、前記アドレス指定された位置への書込みアクセスのための、前記タグで保護されないメモリ・アクセス動作を指定するタグ・チェック・ルールを定義する、請求項４から６までのいずれか一項に記載の装置。
【請求項８】
前記装置が、前記アドレス指定された位置が命令の記憶用に割り当てられるか、又はデータの記憶用に割り当てられるかに応じて、前記記憶されたページ・テーブル・マッピングに前記タグ保護制御情報を設定するように構成される、請求項１から７までのいずれか一項に記載の装置。
【請求項９】
前記装置が、前記アドレス指定された位置がカーネル空間として割り当てられるか、又はユーザ空間として割り当てられるかに応じて、前記記憶されたページ・テーブル・マッピングに前記タグ保護制御情報を設定するように構成される、請求項１から８までのいずれか一項に記載の装置。
【請求項１０】
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するステップであって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
前記タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
前記対象物理アドレスに対応した、前記保護タグ・チェックを実行することのない前記アドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を実行するステップと
を含む方法。
【請求項１１】
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて前記仮想アドレスの前記物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、前記記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、前記タグで保護されたメモリ・アクセスが、前記対象物理アドレスに関連付けられたアドレス・タグを、前記対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
前記メモリ・アクセス・プログラム・ロジックが、前記タグ保護制御情報に応じて前記保護タグ・チェックを実行することなく、前記対象物理アドレスに対応して、前記アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
コンピュータ・プログラム。
【請求項１２】
請求項１０に記載のコンピュータ・プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理装置によって実行されるソフトウェアは、通常、高水準プログラミング言語で記述され、次いでソフトウェアが実行される装置によってサポートされる命令セット・アーキテクチャに従ってコードにコンパイルされ得る。例えば、ソフトウェアは最初にＪａｖａ、Ｃ、又はＣ＋＋などの高水準言語で記述され、次いでｘ８６又はＡｒｍ（登録商標）などのネイティブにサポートされる命令セット・アーキテクチャにコンパイルされ得る。
【０００３】
Ｊａｖａなどのいくつかの高水準プログラミング言語は、メモリ・アクセスに関連する一定のエラーをチェックするための実行時エラー検出チェックを含むので、メモリ安全な言語とみなされる。対照的に、Ｃ及びＣ＋＋などのメモリ安全でない言語は、そのような実行時エラー・チェックを含まない。メモリ安全でない言語の使用が永続的に普及するということは、所与の命令セット・アーキテクチャに従ってコンパイルされたコード内に、攻撃者又は他の悪意のある当事者による悪用に対して脆弱である可能性があるメモリ関連エラーが多数存在し得ることを意味する。このようなエラーには、以下が含まれ得る。
・コードによって提供された配列のインデックスが配列の正当な境界の外側にある場合の、境界違反。
・メモリ位置がすでに割当て解除又は解放された後にそのメモリ位置へのアクセスが行われた場合の、解放後使用エラー。
・関数内で使用される変数（スタック上の値など）に関連付けられたアドレスへのメモリ・アクセスが、関数からすでに戻った後に行われた場合の、リターン後使用。
・変数が宣言されているスコープ外でアクセスされた場合の、スコープ外使用のエラー。
・変数に関連付けられたメモリ・アドレスが、変数が初期化される前にアクセスされた場合の、初期化前使用エラー。
【０００４】
これらは、予測不可能な挙動を引き起こし、悪用するための手段を攻撃者に潜在的に提供する恐れがあるメモリ関連エラーのごく一部の実例であり、したがって、所与の処理装置によってサポートされる命令セット・アーキテクチャ内で、一定のクラスのメモリ・エラーの実行時検出を支援するためのアーキテクチャ・サポートを提供することが望ましい場合がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、１９９０冬、ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００６】
少なくともいくつかの実例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路であって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
メモリ・アクセス回路が、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
装置を提供する。
【０００７】
少なくともいくつかの実例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するステップであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
対象物理アドレスに対応した、保護タグ・チェックを実行することのないアドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を実行するステップと
を含む方法を提供する。
【０００８】
少なくともいくつかの実例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
メモリ・アクセス・プログラム・ロジックが、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
コンピュータ・プログラムを提供する。
【０００９】
記憶媒体は、上記のコンピュータ・プログラムを記憶してもよい。記憶媒体は、非一時的記憶媒体であってもよい。
【００１０】
添付の図面に示されるようなその実施例を参照して、本技法を単なる一例としてさらに説明する。
【図面の簡単な説明】
【００１１】
【図１】データ処理装置の一実例を概略的に示す図である。
【図２】アドレス・タグが保護タグと一致するかどうかをチェックすることを含むタグで保護されたメモリ・アクセス動作の一実例の図である。
【図３】タグで保護されたメモリ・アクセス動作を実行する方法を示すフロー図である。
【図４】アドレス変換及び保護タグ・チェックが実行され得る例示的なシステムを概略的に示す図である。
【図５Ａ】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【図５Ｂ】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【図５Ｃ】タグ保護制御情報を含む例示的なページ・テーブル・エントリの図である。
【図６】一実例においてメモリが割り当てられるときにページ・テーブル・ビットがどのように設定されるかを示すフロー図である。
【図７】一実例においてページ・テーブル・エントリ内のタグ保護制御情報に応じて実施される保護タグ・チェックに対する制御を示すフロー図である。
【図８】アドレス変換ロジックをサポートするシミュレータの一実例の図である。
【発明を実施するための形態】
【００１２】
少なくともいくつかの実施例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路であって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換回路と、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路であって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス回路とを備え、
メモリ・アクセス回路が、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
装置を提供する。
【００１３】
上述のタイプの一定のメモリ使用エラーから保護するための１つの手法は、１つ又は複数のメモリ位置のブロックに関連付けてメモリ・システムに記憶される保護タグを提供することである場合がある。メモリ・システム内の特定のアドレス指定された位置を識別する対象アドレスに基づいて、タグで保護されたメモリ・アクセスが要求されると、メモリ・アクセス回路は、対象アドレスに関連付けられているアドレス・タグを、対象アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けられているメモリ・システム内に記憶されている保護タグと比較することができる。メモリ・アクセス回路は、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示を生成することができる。この表示は、メモリ・アクセスの成功を許可するか、若しくは後続の動作を成功させるかを制御するために使用され得るか、又はメモリ・アクセスを通常通り続行しながら単に報告される場合がある。
【００１４】
これは、例えば、Ｃ又はＣ＋＋などのメモリ安全でない言語に基づいてコードをコンパイルするコンパイラが、メモリの領域を初期化するときに、コードが特定の値にアクセスすることが予想されるメモリのブロックの保護タグを設定することができるので有用である場合があり、対応するアドレス・タグ値をそれらのブロックを指す対象アドレスに関連付けてもよい。メモリ使用エラーが発生し、例えばアドレス・ポインタがスコープ外で使用されるか、又は初期化された有効範囲の境界を越えて拡張する場合、アドレス指定された位置に関連付けられた保護タグが対象アドレスに関連付けられたアドレス・タグと一致しない可能性があり、この場合、一致が検出されたかどうかの表示を使用して、何らかのエラー処理応答又はエラー報告メカニズムをトリガすることができる。実行される特定の応答は、実行されているソフトウェアの特定のニーズ、又はアーキテクチャの特定のマイクロアーキテクチャ実装に依存する可能性がある。したがって、高水準言語がメモリ・アクセス・エラーから保護するために実行時エラー・チェックを実行するための手段を有していない場合でも、コンパイルされるコードに使用されるＩＳＡは、そのようなチェックを実行するためのアーキテクチャ機能を含む可能性がある。
【００１５】
しかしながら、そのような保護タグ・チェックは、いくつかの状況においてあまり望ましくない可能性のある保護タグ・チェックを実行する際に、いくらかのオーバーヘッドを招く恐れがある。ここで説明する装置は、仮想アドレスから物理アドレスへの変換を実行するときに、タグ保護制御情報を含むページ・テーブル・マッピングを利用し、次いで、メモリ・アクセス回路が、タグ保護制御情報に応じて、タグで保護されたメモリ・アクセスを実行する（保護タグ・チェックを行う）か、又は単に「通常の」メモリ・アクセスを実行する（保護タグ・チェックを行わない）のいずれかを行う。したがって、これにより、タグ保護制御情報が、（物理）アドレスについて定義されたページ・テーブル・マッピングの一部を形成するので、メモリ・アクセスの対象であるその（物理）アドレスに応じて保護タグ・チェックを実行するかどうかを制御することができる。メモリ・アドレスは様々に分類され得るので（例えば、所有者別、コンテンツ別など）、いつ、どのメモリ・アクセスが保護タグ・チェックを伴うかを柔軟に制御することができる。
【００１６】
タグ保護制御情報は様々な形式をとることができるが、いくつかの実例では、記憶されたページ・テーブル・マッピングは、ページ・テーブル・エントリごとにタグ保護制御ビットを含み、メモリ・アクセス回路は、所定の第１の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されたメモリ・アクセスを実行し、メモリ・アクセス回路は、所定の第２の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行する。したがって、アドレス指定された位置へのアクセスが保護タグ・チェックを伴うかどうかを、単一のビットが制御することができる。
【００１７】
いくつかの実例では、記憶されたページ・テーブル・マッピングは、ページ・テーブル・エントリごとに複数のタグ保護制御ビットを含み、メモリ・アクセス回路は、所定の第１の値を有する複数のタグ保護制御ビットのうちの少なくとも１つに応答して、アドレス指定された位置へのタグで保護されたメモリ・アクセスを実行し、メモリ・アクセス回路は、所定の第２の値を有するタグ保護制御ビットに応答して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行する。したがって、タグ保護制御情報が複数のビットを含む場合、アドレス指定された位置へのどのアクセスに保護タグ・チェックを伴うかについて、より細かい制御がサポートされる。その場合、保護タグ・チェックを行うかどうかを判定する際に、メモリ・アクセスの任意の定義可能な特性が利用され得る。
【００１８】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、メモリ・アクセスのタイプに応じてタグ・チェック・ルールを指定する。したがって、保護タグ・チェックが行われるかどうかは、メモリ・アクセスのタイプに依存する可能性がある。例えば、ある特定のタイプのメモリ・アクセスを除くすべてのメモリ・アクセスで保護タグ・チェックが省略されることがあり、ある特定のタイプのメモリ・アクセスを除くすべてのメモリ・アクセスで保護タグ・チェックがトリガされることがあり、又はこれらの極端なものの間の何らかである。
【００１９】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、アドレス指定された位置へのデータ・アクセス、アドレス指定された位置への命令フェッチ、及びアドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセスのうちの少なくとも１つに適用されるように構成されたタグ・チェック・ルールを定義する。
【００２０】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、ロード動作と記憶動作で異なるタグ・チェック・ルールを定義する。有用となり得る特定の区別は、ロードと記憶の区別であり、それにより保護タグ・チェックを一方に対して行い、もう一方に対しては行わない。
【００２１】
いくつかの実例では、ページ・テーブル・エントリごとの複数のタグ保護制御ビットは、アドレス指定された位置への書込みアクセスのための、タグで保護されないメモリ・アクセス動作を指定するタグ・チェック・ルールを定義する。したがって、保護タグ・チェックを行わずにアドレス位置への書込みがなされ得る。
【００２２】
アドレス指定された位置が割り当てられるとき、アクセスされる前に、タグ保護制御情報は、そのアドレス指定された位置の所期の使用に応じて様々に設定され得る。いくつかの実例では、装置は、アドレス指定された位置が命令の記憶用に割り当てられるか、又はデータの記憶用に割り当てられるかに応じて、記憶されたページ・テーブル・マッピングにタグ保護制御情報を設定するように構成される。保護タグ・チェックを一方に対して行い、もう一方に対しては行わないように構成されてもよい。
【００２３】
さらに、保護タグ・チェックを行うかどうかを判定するために、割り当てられたメモリ位置の所有者が使用されてもよく、いくつかの実例では、装置は、アドレス指定された位置がカーネル空間として割り当てられるか、又はユーザ空間として割り当てられるかに応じて、記憶されたページ・テーブル・マッピングにタグ保護制御情報を設定するように構成される。
【００２４】
少なくともいくつかの実施例は、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するステップであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、ステップと、
タグ保護制御情報に応じて、
対象物理アドレスに対応した、タグで保護されたメモリ・アクセスであって、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、タグで保護されたメモリ・アクセス、及び
対象物理アドレスに対応した、保護タグ・チェックを実行することのないアドレス指定された位置へのタグで保護されないメモリ・アクセスのうちの一方を実行するステップと
を含む方法を提供する。
【００２５】
少なくともいくつかの実施例は、
対象プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想アドレスと物理アドレスとの間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換プログラム・ロジックであって、記憶されたページ・テーブル・マッピングがタグ保護制御情報を含む、アドレス変換プログラム・ロジックと、
対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス・プログラム・ロジックであって、タグで保護されたメモリ・アクセスが、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む、メモリ・アクセス・プログラム・ロジックとを含み、
メモリ・アクセス・プログラム・ロジックが、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される
コンピュータ・プログラムを提供する。
【００２６】
少なくともいくつかの実施例は、上記のコンピュータ・プログラムを記憶する記憶媒体を提供する。
【００２７】
次に、図を参照していくつかの特定の実施例を説明する。
【００２８】
図１は、データ処理装置２の一実例を概略的に示す。これは単に装置の構成要素のサブセットの高水準表現であり、装置が図示されていない他の多くの構成要素を含み得ることが理解されよう。装置２は、命令デコーダ６にデコードされた命令に対応してデータ処理を実行するための処理回路４を備える。命令デコーダ６は、命令キャッシュ８からフェッチされた命令をデコードして、命令によって表される対応する処理動作を実行するように処理回路４を制御するための制御信号１０を生成する。処理回路４は、レジスタ１４に記憶された値に対して演算を実行して、レジスタに書き戻される結果値を生成するための１つ又は複数の実行ユニットを含み得る。例えば、実行ユニットには、算術演算若しくは論理演算を実行するための算術／論理ユニット（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ／ｌｏｇｉｃ  ｕｎｉｔ）、浮動小数点オペランドを使用して演算を実行するための浮動小数点ユニット、及び／又は複数の独立したデータ要素を含むオペランドに対してベクトル演算を実行するためのベクトル処理ユニットが含まれ得る。処理回路は、レジスタ１４とメモリ・システムとの間のデータの転送を制御するためのメモリ・アクセス回路（例えば、ロード／記憶ユニットを含む）１５も含む。この実例では、メモリ・システムは、命令キャッシュ８、レベル１（Ｌ１）データ・キャッシュ１６、データと命令との間で共有されるレベル２（Ｌ２）キャッシュ１７、及びメイン・メモリ１８を含む。これは一例にすぎず、他のキャッシュ階層も可能であることが理解されよう。メモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）２０は、ロード／記憶ユニット１５によってトリガされるメモリ・アクセスをサポートするためのアドレス変換機能を提供するために設けられる。ＭＭＵは、メモリ・システム１６、１７、１８に記憶されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）２２を有する。各ページ・テーブル・エントリは、アドレスの対応するページにアドレス変換マッピングを提供し、ページが読取り専用領域であるか、若しくは読取りと書込みの両方が可能であるかを指定するアクセス許可、又はどの特権レベルがページにアクセスできるかを指定するアクセス許可などのアクセス制御パラメータを指定してもよい。さらに、以下でより詳細に述べるように、ページ・テーブル・エントリは、アドレスのそのページ内のアドレスへのアクセスが行われたときに保護タグ・チェックを行うかどうかを制御するために本技法によって使用されるタグ保護制御情報を指定することができる。
【００２９】
図２は、タグで保護されたメモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ位置を参照するために使用される物理アドレス空間は、それぞれが一定数のアドレス指定可能な位置を含むいくつかのブロック３０に論理的に分割され得る。簡潔にするために、図２の実例では、各ブロック３０は４つのメモリ位置を含むが、他のブロック・サイズも同様に使用され得る。各ブロック３０は、対応する保護タグ３２に関連付けられている。一定数のブロック３０に関連付けられた保護タグは、一緒に集められて、物理アドレス空間内のアーキテクチャ的にアクセス可能な別のメモリ位置３４内、又はメイン・メモリ１８に提供されている、アーキテクチャ的にアクセス不可能な（同じ物理アドレス空間にマッピングされていない）追加の記憶位置内のいずれかに記憶され得る。非アーキテクチャ的にアクセス可能な別個の記憶装置を使用すると、場合によっては、データ・キャッシュ１６、１７で保護タグの値をキャッシュするために空間を使い果たし、通常のコードの性能に影響を及ぼし、コヒーレンシ管理がより複雑になるのを避けることが望ましい場合がある。メイン・メモリ１８からタグにアクセスする必要がある場合よりも高速にアクセスできるように、非アーキテクチャ的にアクセス可能な記憶装置からのタグ値をキャッシュするための追加のタグ・キャッシュ１９がマイクロアーキテクチャに設けられてもよい。どのタグ記憶位置３４が各ブロック３０に対応するかの特定のマッピングは、ロード／記憶ユニット１５によって制御されてもよく、ハードワイヤードされ得るか、又はプログラム可能であり得る。図２では、各タグ３２が物理アドレスのブロックに関連付けられている一方で、仮想メモリ・アドレス空間内の仮想メモリ位置に関連付けられた保護タグ３２を提供することも可能であるが、これには各メモリ・アクセスでいくつかの追加のアドレス変換が必要になる場合がある。したがって、保護タグ３２を物理メモリ位置に関連付けることによって性能を向上させることができる。一般に、保護タグ３２を物理アドレス空間の対応するブロック３０にどのように関連付けるかは、厳密には特定のマイクロアーキテクチャの実装による選択である。一般に、必要とされるのは、メモリの所与のブロックに関連付けられた保護タグ３２にアクセスし、比較できることだけである。
【００３０】
したがって、タグで保護されたメモリ・アクセスが発生する必要がある場合、（アクセスされるアドレス指定された位置４４を識別する対象アドレス４２に関連付けられている）アドレス・タグ４０は、アドレス指定された位置４４を含むメモリ位置３０のブロックに関連付けられている保護タグ３２と比較され得る。例えば、図２では、対象アドレス４２はメモリ内のある位置Ｂ１を指し、図２のアドレス空間で４４と記されている。したがって、位置Ｂ１を含む位置Ｂのブロックに関連付けられている保護タグＢは、対象アドレス４２に関連付けられたアドレス・タグ４０と比較される。図２の上部に示すように、アドレス・タグ４０は、対象アドレス自体の選択されたビットの関数として決定され得る。具体的には、アドレス・タグは、アドレス指定された位置４４として選択されるべき特定のメモリ位置を示すために使用されない対象アドレスの一部内のビットから決定され得る。例えば、いくつかのアーキテクチャでは、対象アドレスのビットの上位部は符号拡張（すべて０又はすべて１）などの一定の固定値を常に有する可能性があるので、アドレスは、これらの未使用のビットを任意のタグ値で上書きすることによってアドレス・タグ４０でタグ付けされ得る。特定のアドレス・タグ値は、例えばプログラマ又はコンパイラによって選択され得る。アドレス・タグ及び保護タグ３２は、比較的少数のビット、例えば４ビットであり得るので、メモリ内及び対象アドレス内の多くの空間を占有する必要はない。４ビットのタグ空間、すなわち１６の可能なタグ値を提供することは、しばしば、多くの一般的なタイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
【００３１】
したがって、タグで保護されたメモリ・アクセスが実行されると、アドレス・タグ４０とアドレス指定された位置４４を含むブロック３０に関連付けられた保護タグ３２との間で比較が行われ、それらが一致するかどうかが判定される。図１の例示的な構成例では、比較は、ロード／記憶ユニット１５と物理メモリ１８との間のどこでも実行され得る（実際には、その経路に沿って分散され得る）ことに留意されたい。しかしながら、この実例では、比較は、ロード／記憶ユニット１５によって実行されるという点で、簡単にするために説明されている。ロード／記憶ユニット１５は、アドレス・タグ４０及び保護タグ３２が一致したかどうかを示す一致表示を生成する。例えば、この一致表示は、アドレス・タグ４０と保護タグ３２との間に不一致がある場合に生成されるフォールト信号６０、又は一致があったかどうかを示すステータス・レジスタに設定される表示、又はエラーが検出されたアドレス及び／若しくはエラーをトリガした命令の命令アドレスを示すためにエラー・レポートに追加されたエントリである場合がある。
【００３２】
図３は、タグで保護されたメモリ・アクセスを処理するためのフロー図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及び対象アドレスを指定してもよい。図２に示すように、場合によっては、アドレス・タグは、実際には対象アドレス自体のビットのサブセットから導出されてもよいが、他の実例では別のレジスタで指定され得る。ステップ５０において、タグで保護されたメモリ・アクセスをトリガする命令が発生する。これに応答して、ステップ５２において、メモリ・アクセス回路１５は、対象アドレスによって識別されるアドレス指定された位置４４へのメモリ・アクセスをトリガする。また、ステップ５４において、メモリ・アクセス回路１５は、対象アドレスによって識別されるアドレス指定された位置４４を含むメモリ位置３０のブロックに関連付けてメモリ・システムに記憶されている保護タグ３２を取得する。ステップ５６において、メモリ・アクセス回路１５は、アドレス・タグ４０をステップ５４で取得された保護タグ３２と比較する。ステップ５８において、保護タグとアドレス・タグとの間で一致が検出されたかどうかの表示が、メモリ・アクセス回路１５によって生成される（例えば、上述の一致／不一致を報告する表示タイプのいずれか）。不一致の場合にそれを報告するために使用される正確な表示は、実装ごとに異なる場合がある。
【００３３】
図４は、一実例における装置６０を概略的に表現したものである。ＭＭＵ２０の一部であり得るアドレス変換回路６２は、（タグ部分６５を含む）仮想アドレスを受信する。アドレス変換回路６２は、仮想アドレス６４をメモリ・システムで使用するための物理アドレス６６に変換する。メモリ６８は、図４に一般的に示されており、メイン・メモリ及び１つ又は複数のキャッシュを含み得る。アドレス変換回路６２は、単一の例７０が示されている（実際にはメモリ・システムに記憶されている）ページ・テーブルを参照して変換を実行する。上述のように、ＭＭＵは、頻繁に使用される変換をキャッシュするためのＴＬＢを有する場合がある。ページ・テーブル・エントリ７２は、変換情報自体、及び追加のタグ保護制御情報７４を含む。変換を実行する際、アドレス変換回路６２は、タグ保護制御情報を、それが生成する物理アドレスに組み込む。これは、例えば、物理メモリ位置を指定するために使用されず、代わりに他の情報をメモリ・システムに伝達するために使用されるアドレス空間（ここでは物理タグとも称する）の一部とすることができる。例えば、６４ビットのアドレス空間では、ビット［５５：０］が仮想アドレス部分を形成し、ビット［６３：５６］が仮想タグ部分を形成する場合がある。同様に、物理アドレスでは、ビット［５５：０］が物理アドレス部分を形成し、ビット［６３：５６］が物理タグ部分を形成する場合がある。定義されたビット空間が何であれ、この物理タグ部分は、選択された情報、例えば保護タグと比較され得るアドレス・タグを、メモリ・システムに伝達することができるが、これは物理タグ部分のすべてを占有し得るとは限らず、したがってタグ保護制御情報７４も伝達され得る。
【００３４】
タグ保護チェック回路７６は、アドレス・タグ７８とタグ保護制御情報（ＴＧＣ：ｔａｇ  ｇｕａｒｄ  ｃｏｎｔｒｏｌ  ｉｎｆｏｒｍａｔｉｏｎ）８０（ここでは物理アドレス６６の一部）の両方を受信する。タグ保護チェック回路７６内の制御ユニット８２は、タグ保護制御情報（ＴＧＣ）８０を受信し、制御ユニットは、受信した特定の情報に応じて、保護タグ・チェックを実行するかどうかを判定する。アドレス・タグ７８及びアドレス指定された位置に関連付けて記憶されている関連する保護タグ８６を受信することによってチェックを実行するのは、タグ保護チェック回路７６内の比較ユニット８４である。図４は、制御ユニット８２がメモリ・アクセスのタイプ（例えば、ロード又は記憶、すなわち、読取り又は書込み）の表示も受信することを示しており、いくつかの実例では、制御ユニットは、制御ユニットが保護タグ・チェックを実行するかどうかを判定するときに、それを考慮に入れるように構成されてもよい。
【００３５】
図５Ａ、図５Ｂ、及び図５Ｃは、タグ保護制御情報を含む例示的なページ・テーブル・エントリを示す。図５Ａのページ・テーブル・エントリ９０は、変換情報９１自体、並びに様々な許可情報９２、及び単一のタグ保護制御ビット９３を含む。したがって、ページ・テーブル・エントリ９０を使用して生成される物理アドレスの場合、保護タグ・チェックは、完全にオフ又は完全にオンに切り替えられ得るのみである。図５Ｂのページ・テーブル・エントリ９４は、変換情報９５自体、並びに様々な許可情報９６、及び１組のタグ保護制御ビット９７を含む。したがって、ページ・テーブル・エントリ９４を使用して生成される物理アドレスの場合、保護タグ・チェックは、１組のタグ保護制御ビット９７のそれぞれに関連付けられた意味に応じて様々に制御され得る。図５Ｃのページ・テーブル・エントリ９８は、ページ・テーブル・エントリ内で設定可能な複数のタグ保護制御ビットの一実例を示しており、変換情報９９自体、並びに様々な許可情報１００を含む。ページ・テーブル・エントリ９８は、読取りアクセスのためのタグ保護制御１０１及び書込みアクセスのためのタグ保護制御１０２をさらに含む。これらはそれぞれわずか１ビットであるので、保護タグ・チェックは、アクセスのタイプごとに完全にオフ又は完全にオンに切り替えられ得る。しかしながら、ここでもそれぞれに対して複数ビットが想定されるので、さらに定義されたコンテキスト制約に応じて、アクセスのタイプごとに保護タグ・チェックを実行するかどうかについてより詳細な制御が実施され得る。例えば、いくつかの場合において、複数ビットは、特注のタグ・チェック・ルール、すなわち、アドレス指定された位置へのデータ・アクセス、アドレス指定された位置への命令フェッチ、及びアドレス指定された位置からフェッチされた命令を使用して行われたデータ・アクセスを定義する。保護タグ・チェックは、これらのコンテキストごとに、システム要件に応じてオン又はオフに切り替えられ得る。
【００３６】
図６は、一実例においてメモリが割り当てられるときにページ・テーブル・ビットがどのように設定されるかを示すフロー図である。フローはステップ１１０で開始し、プロセスはメモリの割当てが必要になるまで待機する。割当てが必要になると、ステップ１１２において、割当てがユーザ・プロセス用であるか又はカーネル・プロセス用であるかが判定される。ユーザ・プロセスの場合、フローはステップ１１４に進み、（例えば、図５Ａ〜図５Ｃの実例のいずれかによる）所望のタグ保護チェック構成が、対応する１つ又は複数のページ・テーブル・エントリに設定される。カーネル・プロセスの場合、フローはステップ１１６に進み、（例えば、図５Ａ〜図５Ｃの実例のいずれかによる）所望のタグ保護チェック構成が、対応する１つ又は複数のページ・テーブル・エントリに設定される。ほんの一例を挙げれば、タグ保護チェックは、ユーザ空間割当ての場合はオンであるが、カーネル空間割当ての場合はオフにされてもよい。なお、これはそれぞれのページ・テーブル・エントリを介して行われ、２つの異なる仮想アドレス（一方はユーザ空間の割当て用、もう一方はカーネル空間の割当て用）に対応する所与の物理アドレスがアクセスされ得るので、同じ物理位置／保護タグに対するタグ保護チェックは、一方のアクセス（例えば、ユーザ）に対して発生するが、他方（カーネル）に対しては発生しないように構成されてもよい。次いで、フローは、いずれかの経路によってステップ１１８まで進み、割当てが命令の記憶用であるか又はデータの記憶用であるか判定され、別個のタグ保護制御構成が（それぞれステップ１２０及びステップ１２２で）それぞれに設定され得る。図６は単に１つの例示的なプロセスを示しており、例えば、ユーザ／カーネルと命令／データの両方の区別がなされる必要はないことを理解されたい。いくつかの実例では、これらの１つのみが使用され得る。
【００３７】
図７は、一実例においてページ・テーブル・エントリ内のタグ保護制御情報に応じて実施される保護タグ・チェックに対する制御を示すフロー図である。フローはステップ１３０で開始し、プロセスは仮想アドレスが受信されるまで待機する。仮想アドレスが受信されると、ステップ１３２において、仮想アドレスは物理アドレスに変換され、ページ・テーブル・エントリからのタグ保護制御情報は、物理アドレスの物理タグ部分に含まれる。次いでステップ１３４において、物理アドレスがメモリ・システム内でアクセスされるとき、（タグ保護制御情報によって定義されるように、場合によってはアクセスのタイプなどの他のコンテキスト情報を参照して）保護タグ・チェックが有効かどうかが判定される。有効である場合、ステップ１３６において、保護タグ・チェック、及び（これは保護タグ・チェック失敗の１つの可能性のある結果であるが必須ではないので、防止されていない場合に）物理アドレスによってアドレス指定された位置へのメモリ・アクセスが実行される。有効でない場合、ステップ１３８において、物理アドレスによってアドレス指定された位置へのメモリ・アクセスは、保護タグ・チェックが実行されることなく実施される。
【００３８】
図８は、使用され得るシミュレータの実装を示す。前述の実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実装するが、本明細書に記載の実施例による命令実行環境を提供することも可能であり、これはコンピュータ・プログラムの使用を通じて実装される。このようなコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェアベースの実装を提供する限りにおいては、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。通常、シミュレータの実装は、ホスト・プロセッサ２３０で実行され、任意選択でホスト・オペレーティング・システム２２０を実行し、シミュレータ・プログラム２１０をサポートする。いくつかの構成では、ハードウェアと提供される命令実行環境との間にシミュレーションの複数の層、及び／又は同じホスト・プロセッサ上に提供される複数の異なる命令実行環境が存在する場合がある。歴史的に、強力なプロセッサは適正な速度で実行するシミュレータの実装を提供する必要があったが、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行したい場合など特定の状況下においては、このような手法が妥当である場合がある。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアでサポートされていない追加機能を備えた命令実行環境を提供してもよく、又は通常は異なるハードウェア・アーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、１９９０冬、ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に記載されている。
【００３９】
実施例が特定のハードウェア構成又は特徴を参照して前述された範囲において、シミュレートされた実施例では、同等の機能が適切なソフトウェア構成又は特徴によって提供されてもよい。例えば、シミュレートされた実施例において、特定の回路はコンピュータ・プログラム・ロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装されてもよい。前述の実施例で参照されたハードウェア要素のうちの１つ又は複数がホスト・ハードウェア（例えば、ホスト・プロセッサ２３０）上に存在する構成では、いくつかのシミュレートされた実施例は、適宜ホスト・ハードウェアを利用してもよい。
【００４０】
シミュレータ・プログラム２１０は、コンピュータ可読記憶媒体２１２（非一時的媒体であり得る）に記憶されてもよく、シミュレータ・プログラム２１０によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである、（アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る）対象コード２００へのプログラム・インターフェース（命令実行環境）を提供する。したがって、対象コード２００のプログラム命令は、シミュレータ・プログラム２１０を使用して命令実行環境内から実行されてもよく、その結果、実際に上述の装置６０のハードウェア機能を有していないホストコンピュータ２３０、具体的にはアドレス変換回路６２及びタグ保護チェック回路７６は、これらの機能をエミュレートすることができる。例えば、シミュレータ・プログラム２１０は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック２１４を含んでもよく、アドレス指定された位置にアクセスするため、及び保護タグ・チェックを実行するためのメモリ・アクセス・ロジック２１６を含んでもよい。したがって、シミュレータ・プログラム２１０は、保護タグとアドレス・タグの比較を実行し、保護タグとアドレス・タグとの間の何らかの不一致が検出されたかどうかを報告するためのメモリ・アクセス・プログラム・ロジック２１６を含んでもよい。また、シミュレータ・プログラム２１０は、ハードウェアの実施例がページ・テーブル・エントリを設定する方法に対応する方法でページ・テーブル・エントリを設定するための命令を含むページ・テーブル設定プログラム・ロジックを含んでもよい。
【００４１】
要約すると、装置は、仮想アドレスと物理アドレスと間の記憶されたページ・テーブル・マッピングに応じて仮想アドレスの物理アドレスへの変換を実行するためのアドレス変換回路を備える。記憶されたページ・テーブル・マッピングは、タグ保護制御情報を含む。装置は、対象物理アドレスに対応してタグで保護されたメモリ・アクセスを実行するためのメモリ・アクセス回路を備え、タグで保護されたメモリ・アクセスは、対象物理アドレスに関連付けられたアドレス・タグを、対象物理アドレスによって識別されるアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連付けて記憶されている保護タグと比較する保護タグ・チェックを含む。メモリ・アクセス回路は、タグ保護制御情報に応じて保護タグ・チェックを実行することなく、対象物理アドレスに対応して、アドレス指定された位置へのタグで保護されないメモリ・アクセスを実行するように構成される。
【００４２】
本出願において、「〜ように構成される」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有する場合があり、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされている場合がある。「ように構成される」は、定義された動作を提供するために装置の要素が何らかの変更を必要とすることを暗示するものではない。
【００４３】
例示的な実施例が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明がそれらの厳密な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が、当業者によって行われ得ることを理解されたい。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなく、独立請求項の特徴と様々に組み合わせることができる。
【図１】
2021512400.tif 000003
【図２】
2021512400.tif 000004
【図３】
2021512400.tif 000005
【図４】
2021512400.tif 000006
【図５Ａ】
2021512400.tif 000007
【図５Ｂ】
2021512400.tif 000008
【図５Ｃ】
2021512400.tif 000009
【図６】
2021512400.tif 000010
【図７】
2021512400.tif 000011
【図８】
2021512400.tif 000012
【国際調査報告】
2021512400.tif 000013
2021512400.tif 000014
2021512400.tif 000015