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