(57)【要約】  アクションの実施をトリガするための装置及び方法が提供される。一実例の装置は、メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路を備える。装置は、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、データ値が第２の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義しているかどうかを判断するアクション・トリガ回路さらに備える。データ値が実施されるアクションを定義していると判断される場合、アクション・トリガ回路はアクションの実施をトリガする。
2021525415.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路と、
前記データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、
前記データ値が前記第２の解釈にしたがって解釈されると判断される場合、
前記データ値が実施されるアクションを定義しているかどうかを判断し、
前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガするための、
アクション・トリガ回路と
を備える、装置。
【請求項２】
前記アクションが誤り緩和アクションである、請求項１に記載の装置。
【請求項３】
前記アクションが例外をシグナリングすることを含む、請求項１又は２に記載の装置。
【請求項４】
前記アクションが異なるメモリ位置から異なるデータ値をリターンすることを含む、請求項１から３までのいずれかに記載の装置。
【請求項５】
前記アクションが診断的レコードを更新することを含む、請求項１から４までのいずれかに記載の装置。
【請求項６】
前記アクションが
前記メモリ位置への試行される書き込みに関連付けられるプロセッサの動作状態が、禁止されている動作状態であるかどうかを判断することと、
前記動作状態が前記禁止されている動作状態であると判断することに応じて、前記試行される書き込みを禁止することと
を含む、請求項１から５までのいずれかに記載の装置。
【請求項７】
前記動作状態が、少なくとも１つの実行特権レベルである、請求項６に記載の装置。
【請求項８】
前記アクション・トリガ回路が、前記メモリ位置に関連付けられる制御値に基づいて、前記データ値が前記第１の解釈又は前記第２の解釈のどちらにしたがって解釈されるかを判断する、請求項１から７までのいずれかに記載の装置。
【請求項９】
前記制御値が制御値メモリ位置に記憶され、前記制御値メモリ位置が制御値記憶用に割り当てられる前記メモリの領域内にある、請求項８に記載の装置。
【請求項１０】
前記制御値が、前記メモリ位置に関連付けられる制御値メモリ位置に記憶される、請求項８に記載の装置。
【請求項１１】
前記制御値メモリ位置が、前記メモリ位置に隣接する、請求項１０に記載の装置。
【請求項１２】
前記データ値が少なくとも部分的に１つ又は複数の所定の値のうちの１つに一致する場合に、前記アクション・トリガ回路が、前記アクションをトリガする、請求項１から１１までのいずれかに記載の装置。
【請求項１３】
前記第１の解釈が、前記データ値がデータであることである、請求項１から１２までのいずれかに記載の装置。
【請求項１４】
前記第２の解釈が、前記データ値が前記メモリ位置とは異なるさらなるメモリ位置に記憶されるデータ値に関連するメタデータであることであり、前記さらなるメモリ位置に記憶される前記データ値が前記第１の解釈にしたがって解釈される、請求項１から１３までのいずれかに記載の装置。
【請求項１５】
前記さらなるメモリ位置に記憶される前記データ値が、有界ポインタのポインタ値を含み、
前記メタデータが前記有界ポインタについての境界を含む、
請求項１４に記載の装置。
【請求項１６】
前記アクション・トリガ回路は、
前記ポインタ値が前記境界の外側にあるかどうか判断し、
前記ポインタ値が前記境界の外側にあると判断することに応じて、例外をシグナリングする、
請求項１５に記載の装置。
【請求項１７】
前記メタデータが、前記さらなるメモリ位置に記憶される前記データに関連付けられる誤り訂正コードを含む、請求項１４に記載の装置。
【請求項１８】
方法であって、
メモリのメモリ位置からデータ値を取り出すことと、
前記データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、
前記データ値が前記第２の解釈にしたがって解釈されると判断される場合、
前記データ値が実施されるアクションを定義しているかどうかを判断し、
前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガすることと
を含む、方法。
【請求項１９】
ターゲット・プログラム・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、
メモリのメモリ位置にデータ値をリクエストするためのメモリ・アクセス・プログラム・ロジックと、
前記データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、
前記データ値が前記第２の解釈にしたがって解釈されると判断される場合、
前記データ値が実施されるアクションを定義しているかどうかを判断し、
前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガするための、
アクション・トリガ・プログラム・ロジックと
を備える、コンピュータ・プログラム。
【請求項２０】
請求項１９に記載のコンピュータ・プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
提案される技法はデータ処理の分野に関する。
【背景技術】
【０００２】
いくつかのデータ処理装置は、例えばデバッグ時の使用又はメモリ使用誤りの検出時の使用において一定のメモリ・アクセスがなされると、アクションをトリガして実施するようにウォッチポイントを構成することができる。ウォッチポイントは、データ値がアドレッシング可能な記憶場所に記憶されるデータ処理装置の記憶装置に関連付けることができる。そのようなウォッチポイントの例としては、特定のデータ値が記憶装置からロードされた時にアクションをトリガさせるデータ・ウォッチポイントが挙げられる。別の実例としては、特定の記憶アドレスがアクセスされた特にアクションをトリガさせるアドレス・ウォッチポイントが挙げられる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【発明が解決しようとする課題】
【０００４】
その有用性に関わらず、上述のウォッチポイントには不利な点がある。データ・ウォッチポイントに関連付けられるデータ値は、通常データへアクセスする際ウォッチポイントのアクションが実施することを意図されていない場合、通常データを表現するために使用することができない。したがって、データ・ウォッチポイントを設定することは、通常データを表現するために使用することができるデータ値の数を制限する。アドレス・ウォッチポイントの場合、典型的には設定されるそれぞれのアドレス・ウォッチポイントごとに比較器が必要とされる。ハードウェアにアドレス・ウォッチポイント用の多数のアドレス比較器を設けることは高価になることがあるため、実用においてはアドレス・ウォッチポイントを同時的に確立することができるアドレスの数は限定されることがある。
【課題を解決するための手段】
【０００５】
一実例の構成において、装置であって、メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路と、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、データ値が第２の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義するかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガするためのアクション・トリガ回路とを備える、装置が提供される。
【０００６】
別の実例の構成において、方法であって、メモリのメモリ位置からデータ値を取り出すことと、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、データ値が第２の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義しているかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガすることとを含む、方法が提供される。
【０００７】
さらなる実例において、ターゲット・プログラム・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、メモリのメモリ位置にデータ値をリクエストするためのメモリ・アクセス・プログラム・ロジックと、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断し、データ値が第２の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義するかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガするためのアクション・トリガ・プログラム・ロジックとを備える、コンピュータ・プログラムが提供される。記憶媒体は上述のコンピュータ・プログラムを記憶することができる。記憶媒体は非一時的な記憶媒体であってもよい。
【０００８】
本技法は、その実例を参照して添付の図面に図示されるように、単に例示としてさらに説明される。
【図面の簡単な説明】
【０００９】
【図１】一実例の配置構成による、装置のブロック図である。
【図２】有界ポインタ格納要素のセット内でポインタ値の設定又はポインタ値へのアクセスが試行される場合、エラーがトリガされ得、関連付けられる範囲情報によって示される範囲の外のアドレスを指定するためにそのポインタ値が使用される、命令のタイプの実例の図である。
【図３】一実例の配置構成による、有界ポインタに関連付けられるタグ・ビットの使用を示す図である。
【図４】実例による方法を概略的に示す図である。
【図５Ａ】実例による誤り緩和アルゴリズムの図である。
【図５Ｂ】実例による誤り緩和アルゴリズムの図である。
【図５Ｃ】実例による誤り緩和アルゴリズムの図である。
【図５Ｄ】実例による誤り緩和アルゴリズムの図である。
【図５Ｅ】実例による誤り緩和アルゴリズムの図である。
【図６】実例による方法を概略的に示す図である。
【図７】実例による装置を概略的に示す図である。
【図８】実例によるシミュレータを概略的に示す図である。
【発明を実施するための形態】
【００１０】
本開示の実例によるデータ処理装置は、所与のメモリ位置に記憶されたデータ値を異なる解釈にしたがって解釈できるようにする。
【００１１】
そのような異なる解釈を可能にするシステムの実例として、装置は有界ポインタをサポートすることができ、特定のアドレスを示すポインタが、ポインタが逆参照され得るアドレスの許容範囲を示す範囲情報に関連付けられている。例えば、そのようなポインタを「ファット・ポインタ」と称することがある。範囲情報に加え、そのような有界ポインタは、ポインタの使用に対して１つ又は複数のリストリクション／パーミッションを定義する他の関連付けられる属性を有することもできる。パーミッションを有するそのような有界ポインタはしばしば「機能（ｃａｐａｂｉｌｉｔｙ）」と呼ばれ、ひいてはそのような有界ポインタの使用は、有界ポインタによって指定されたポインタ値がどのように使用されるかに対して制約を課すことにより、強固なセキュリティを与えることができる。そのようなデータ処理装置では、所与のメモリ位置の内容を機能又はデータのいずれかとして解釈することができる。
【００１２】
本開示の実例において、このデータ機能性は、非データ解釈などの特定の解釈にしたがって解釈される場合、所与のデータ値を与えることにより拡張され、実施されるアクションを定義する。実例では、アクションは、対象の解釈には冗長であるデータ値空間内でエンコードされる。例えば、この解釈は、利用可能なデータ値の、すべてではなく一部を利用することができる。第２の解釈には利用されない残りのデータ値の少なくとも一部は、次いで実施されるアクションをエンコードするために使用することができる。このやり方において、ウォッチポイント・タイプの機能性はデータ解釈のために利用可能なデータ値空間を減らすことなく実装することができ、すなわちデータ値の全範囲が依然として利用可能である。データ・ウォッチポイントの上述の不利な点は、このように回避される。さらには、監視されるそれぞれのアドレスごとに専用のアドレス比較器が必要とされないため、アドレス・ウォッチポイントの上述の不利な点が回避される。
【００１３】
上述のように、一実例の装置は、メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路を備える。装置はデータ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断するためのアクション・トリガ回路を備える。実例では、第１の解釈はデータ値がデータであることであり、第２の解釈はデータ値がメタデータなどの非データであることである。データ値が第２の解釈にしたがって解釈されると判断される場合、アクション・トリガ回路はデータ値が実施されるアクションを定義しているかどうか判断する。データ値が実施されるアクションを定義していると判断される場合、アクション・トリガ回路はアクションの実施をトリガする。このように、装置は、実施されるアクションを定義するために第２の解釈にしたがって解釈されるデータ値を提供する。ひいては、これにより、多数のアドレス比較器を必要とすることなく、また第１の解釈においてデータ用の利用可能なエンコード空間を減らすことなく、潜在的にアクションをトリガするアクセスについて潜在的に多数のアドレスを監視できる。これはメモリ使用誤りの一定のクラスを検出するために特に有用であり得る（範囲外違反、ｕｓｅ−ａｆｔｅｒ−ｆｒｅｅ誤りなど、不正にアクセスされる可能性のある複数のメモリ・アドレスが比較的多く、アドレス・ウォッチポイントを使用してそのような誤りを捉えることが実際的でない場合）。
【００１４】
実例では、アクションは例えば例外をシグナリングすることを含むことがある誤り緩和アクションである。これは望ましくない又は認可されていない特定のメモリ領域からのロードに対して保護するための「カナリヤ」として使用することができる。
【００１５】
代替的又は追加的に、アクションは、カウンタを増分すること又はログ・ファイルを記憶することなどの診断的レコードを更新することを含むことがある。これにより、例外をシグナリングする必要なく、且つ実行フローを止めることなく、特定のメモリ領域からのロードを追跡し続けることができる。
【００１６】
アクションは異なるメモリ位置から異なるデータ値をリターンすることを含むこともできる。これにより、所望のデータ値をリターンしながらアクションを実施することができる。例えば、以下でより詳細に説明するように、解放されたメモリ位置はアクションを定義するデータ値で上書きすることができる一方で、元々そのメモリ位置に記憶されていたデータ値を、別のメモリ位置に記憶することができる。そのメモリ位置がアクセスされる際、アクションを実施することができ、また他のメモリ位置からのデータ値をリターンすることができる。これにより、例えば依然として期待されるデータをリターンしながら解放されたメモリ位置からのロードのレコードを維持できるため、現在の装置に具体的に書き込みがなされないコードの実行を妨げることなく現在定義されている装置をトランスペアレントに実装することができる。
【００１７】
実例では、データ値の取り出し及び関連するアクションはメモリ位置への試行される書き込みに応じて実施され、アクションは書き込みが実際に行われるかどうか判断することを含む。
【００１８】
関連する実例において、アクションは、メモリ位置への試行される書き込みに関連付けられるプロセッサの動作状態が、禁止されている動作状態であるかどうかを判断し、動作状態が禁止されている動作状態であると判断することに応じて、試行される書き込みを禁止することを含む。動作状態は、少なくとも１つの実行特権レベルであり得る。特定の特権レベルからの書き込みをこのように禁止することにより、どのプロセスがデータ値を上書きすることができるかの制御が可能となる。例えばデータ値をセットするプロセス以外のプロセスによるデータ値の偶発的な上書きを防ぐことができる。
【００１９】
実例では、上述のデータ値の取り出し、及び関連付けられるアクションの実施は、メモリ位置への試行される書き込みに応じて実施される。そのような実例では、アクションは試行される書き込みが実際に実施されるかどうかを判断することを含むことがある。例えば、これによりアクションを、禁止された書き込みが試行されたかどうかに基づかせることができる。
【００２０】
実例では、アクション・トリガ回路は、メモリ位置に関連付けられる制御値に基づいて、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断する。例えば、制御値はタグ・ビットであってもよい。制御値は、制御値記憶用に割り当てられるメモリの領域内にある制御値メモリ位置に記憶される。代替的に、制御値は、メモリ位置に隣接するなど、メモリ位置に関連付けられる制御値メモリ位置に記憶されてもよい。このように、制御値記憶の位置は特定のシステムの要求及び制限に基づいて決定することができる。
【００２１】
実例では、データ値が少なくとも部分的に１つ又は複数の所定の値のうちの１つに一致する場合に、アクション・トリガ回路は、アクションをトリガする。例えば、上述のように、アクションは第２の解釈にしたがってデータ値における冗長性により定義することができ、それによって特定の所定の値は第２の解釈のために利用されない。そのような所定のデータ値は、次に実施されるアクションを定義するために使用することができる。
【００２２】
一部の処理装置は有界ポインタの使用をサポートすることができる。ポインタ自身は、例えば、アクセスされるデータ値又は実行される命令のアドレスを指し示すことができるか、又はそのようなアドレスを決定するために使用することができる。しかしながら、ポインタは、ポインタを使用する際アドレスの許容可能な範囲を示す関連付けられる範囲情報を有することもできる。これは、例えば、ポインタから決定されたアドレスが一定の境界内に留まり、振る舞いのセキュリティ又は機能的な正常性を維持することを保証するために有用であり得る。例えば、所与の処理についてある機能が定義され、定義された機能以外の動作を実行するような試行があるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。有界ポインタ用の範囲情報は、そのようなアーキテクチャのために定義される機能情報の一部であり得、機能ベースのアーキテクチャ内でそのような有界ポインタ（その関連付けられる機能情報を含む）は、機能と称することができる。
【００２３】
したがって、装置は、ポインタを使用する際、許容可能なアドレスの範囲を示す関連付けられた範囲情報を有するポインタを記憶するために使用される記憶要素を含むことができる。それぞれの有界ポインタ記憶要素は、汎用メモリ内のレジスタ又はメモリ位置、例えば、スタック・メモリ上の位置であり得る。
【００２４】
ある命令を使用して、ポインタを取得するために、そのような有界ポインタ記憶要素を参照することができ、次いでポインタは命令の動作中に必要とされるメモリ内のアドレスを導出するために使用される。ポインタはメモリ・アドレスを直接特定するために使用することができ、又は例えば、ポインタ値へオフセットを加算することによってメモリ・アドレスを導出するために使用することができる。
【００２５】
上述のように、実例では、第１の解釈はデータ値がデータであることである。関連する実例では、第２の解釈はデータ値がメタデータであることである。例えばメタデータは、メタデータが記憶されるメモリ位置とは異なるさらなるメモリ位置に記憶されるデータ値に関連する。さらなるメモリ位置に記憶されるデータ値は第１の解釈にしたがって解釈することができる。有界ポインタの使用がサポートされる実例では、さらなるメモリ位置に記憶されるデータ値が、有界ポインタのポインタ値を含むことができ、メタデータが有界ポインタについての境界を含むことができる。いくつかのそのような実例では、アクション・トリガ回路は、ポインタ値が境界の外側にあるかどうか判断し、ポインタ値が境界の外側にあると判断することに応じて、例外をシグナリングする。この方法では、機能の使用をサポートしているシステムのデータ処理機能性は、本明細書において他所で説明されるアクションのトリガを提供するように拡張することができる。
【００２６】
第２の解釈が、データ値がメタデータであることである他の実例では、メタデータはさらなるメモリ位置に記憶されるデータに関連付けられる誤り訂正コードである。この方法では、誤り訂正コードの使用をサポートしているシステムのデータ処理機能性は、本明細書において他所で説明されるアクションのトリガを提供するように拡張することができる。
【００２７】
次に、図面を参照して特定の実例を説明する。
【００２８】
図１は命令を処理するための処理パイプライン４を備えるデータ処理装置２の実例を概略的に図示している。この実例において、処理パイプライン４は、フェッチ工程６、デコード工程８、発行工程１０、実行工程１２、及びライトバック工程１４を含む複数のパイプライン工程を含むが、他のタイプの工程又は工程の組み合わせが提供されてもよいことを了解されたい。例えば、いくつかの実装形態ではレジスタのリネームを実施するためのリネーム工程を含むことができる。処理される命令は工程から工程へと移動し、命令がある工程で待ち状態にある間、別の命令はパイプライン４の異なる工程で待ち状態にあり得る。
【００２９】
フェッチ工程６はレベル１（Ｌ１：Ｌｅｖｅｌ  １）の命令キャッシュ２０から命令をフェッチする。フェッチ工程６は普通、連続する命令アドレスから逐次に命令をフェッチすることができる。しかしながら、フェッチ工程はまた分岐命令の結果を予測するための分岐予測器２２を有することがあり、フェッチ工程６は、分岐すると予測される場合は（非逐次）分岐ターゲット・アドレスから、又は分岐しないと予測される場合は次の連続するアドレスから、命令をフェッチすることができる。分岐予測器２２は、ある分岐が取られそうか、又は取られそうにないかを予測するための情報を格納するための１つ又は複数の分岐履歴テーブルを含むことができる。例えば分岐履歴テーブルは、前に実行された分岐の実際の結果を追跡するための、又は分岐についてなされた予測についての信頼度を表すカウンタを含むことができる。分岐予測器２２はまた分岐命令の前のターゲット・アドレスをキャッシュするための分岐ターゲット・アドレス・キャッシュ（ＢＴＡＣ：Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ａｄｄｒｅｓｓ  Ｃａｃｈｅ）２４を含むことができ、それによって同一の分岐命令との後続の遭遇の際、これらが予測され得る。
【００３０】
フェッチされた命令は、命令をデコードしてデコード命令を生成するためのデコード工程８に渡される。デコード命令は適当な処理演算を実行するために実行工程１２を制御するための制御情報を含むことができる。キャッシュ２０からフェッチされたいくつかのより複雑な命令について、デコード工程８はこれらの命令を複数のデコード命令にマッピングすることができ、これはマイクロ命令（μｏｐ又はｕｏｐ）として知られ得る。したがって、Ｌ１の命令キャッシュ２０からフェッチされた命令とパイプラインの後方の工程で見られる命令との間には１対１関係がなくてもよい。一般的には、本出願における「命令」との称し方はマイクロ命令を含むものとして解釈するべきである。
【００３１】
デコード命令は発行工程１０に渡され、命令の実行に必要なオペランドが利用可能かどうかを判断し、オペランドが利用可能であれば実行のため命令を発行する。いくつかの実装形態はインオーダー処理をサポートしていることがあり、それによって、命令がＬ１の命令キャッシュ２０からフェッチされたプログラム順序に対応する順序での実行のために、命令が発行される。他の実装形態はアウトオブオーダー実行をサポートしていることがあり、それによって命令は、プログラムの順序とは異なる順序で実行工程１２に発行され得る。前方の命令がオペランドを待ってストールしている間、オペランドが利用可能であるプログラムの順序において後方の命令を先に実行できるため、アウトオブオーダー処理はパフォーマンスを改善するために有用であり得る。
【００３２】
発行工程１０は命令を実行工程１２に発行し、ここで命令は様々なデータ処理演算を実行するために、実行される。例えば、実行工程は、整数値に対して算術又は論理演算を実行するための算術／論理ユニット（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ／Ｌｏｇｉｃ  Ｕｎｉｔ）３０、浮動小数点形式で表現される値に対して演算を実行するための浮動小数点（ＦＰ：Ｆｌｏａｔｉｎｇ−Ｐｏｉｎｔ）ユニット３２、及びレベル１（Ｌ１）のデータ・キャッシュ３６からのデータ値をレジスタ４０にロードするためのロード演算、又はレジスタ４０からのデータ値をＬ１のデータ・キャッシュ３６に格納するためのストア演算を実行するためロード／ストア・ユニット３４を含む複数の実行ユニット３０、３２、３４を含むことができる。これらは、設けることができる実行ユニットのいくつかの実例のタイプに過ぎず、多くの他の種類も設けることができることを了解されたい。処理演算を実行するために、実行工程１２はデータ値をレジスタ４０のセットから読み出すことができる。実行された命令の結果は次いでライトバック工程１４によってレジスタ４０に書き戻すことができる。
【００３３】
Ｌ１の命令キャッシュ２０及びＬ１のデータ・キャッシュ３６は、複数のキャッシュのレベルを含むキャッシュ・ヒエラルキの一部であってもよい。例えば、レベル２（Ｌ２：Ｌｅｖｅｌ  ２）のキャッシュ４４をやはり設けることができ、任意選択でさらなるレベルのキャッシュが設けられてもよい。この実例において、Ｌ２のキャッシュ４４はＬ１の命令キャッシュ２０とＬ１のデータ・キャッシュ３６との間で共有されるが、他の実例は別個のＬ２の命令及びデータ・キャッシュを有することができる。フェッチされることになる命令がＬ１の命令キャッシュ２０にない場合、Ｌ２のキャッシュ４４からフェッチすることができ、同様に命令がＬ２のキャッシュ４４にない場合、メイン・メモリ５０からフェッチすることができる。同様に、ロード命令に応答して、データはＬ１のデータ・キャッシュ３６にない場合Ｌ２のキャッシュ４４からフェッチすることができ、必要であればメモリ５０からフェッチすることができる。あらゆる既知のスキームがキャッシュ・ヒエラルキを管理するために使用され得る。
【００３４】
プログラム命令及びデータ値を参照するためにパイプライン４によって使用されるアドレスは、仮想アドレスであってもよいが、少なくともメイン・メモリ５０、及び任意選択でやはり少なくともキャッシュ・ヒエラルキのいくつかのレベルは、物理的にアドレッシングされ得る。したがってトランスレーション・ルックアサイド・バッファ（ＴＬＢ：Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）５２が、パイプライン４によって使用される仮想アドレスを、キャッシュ又はメモリにアクセスするために使用される物理アドレスにトランスレートするために設けられてもよい。例えば、ＴＬＢ５２はそれぞれが仮想アドレス空間の対応するページの仮想ページ・アドレスを指定する複数のエントリを含むことができ、仮想ページがアドレッシングする対応する物理ページ・アドレスは、対応するページ内の仮想アドレスを物理アドレスにトランスレートするためにマッピングされるべきである。例えば、仮想及び物理ページ・アドレスは対応する仮想アドレス及び物理アドレスの最上位部分に対応することができ、この時残りの最下位部分は仮想アドレスを物理アドレスにマッピングする際変更されないままである。アドレス・トランスレーション情報と同様に、それぞれのＴＬＢエントリはまた、アドレスのあるページがパイプライン４のあるモードでアクセス可能かどうかを示すことなどのアクセス・パーミッションを指定する何らかの情報を含むことができる。いくつかの実装形態において、ＴＬＢエントリはまた、キャッシュ・ヒエラルキのどのレベルが読み出し若しくは書き込み動作に応じて更新されるかを定義するキャッシュ・ポリシ情報（例えば、キャッシュがライトバック又はライトスルー・モードで動作すべきであるかどうか）、又は対応するページ内のアドレスへのデータ・アクセスがメモリ・システムによって、データ・アクセスがパイプライン４によって発行された順序と比べてリオーダすることができるかどうかを定義する情報、などのアドレスの対応するページの他のプロパティを定義することができる。
【００３５】
図１が単一のレベルのＴＬＢ５２を示す一方、ＴＬＢのヒエラルキがレベル１（Ｌ１）のＴＬＢ５２が複数の最近アクセスされたページ内のアドレスをトランスレートするためのＴＬＢエントリを含み得るように提供され得、またレベル２（Ｌ２）のＴＬＢが多数のページについてのエントリを格納するために提供され得ることを了解されたい。必要とされるエントリがＬ１のＴＬＢに存在しない場合、Ｌ２のＴＬＢから、又はヒエラルキ内のさらなるＴＬＢからフェッチすることができる。アクセスされることになるページについて必要とされるエントリがＴＬＢのうちいずれにもない場合、メモリ５０のページ・テーブルにアクセスするためにページ・テーブル・ウォークを実施することができる。本技法では、あらゆる既知のＴＬＢ管理スキームを使用することができる。
【００３６】
また、いくつかのシステムは複数のレベルのアドレス・トランスレーションをサポートすることができ、それによって、例えば、第１のＴＬＢ（又はＴＬＢのヒエラルキ）は仮想アドレスを中間アドレスにトランスレートするために使用することができ、また１つ又は複数のさらなるＴＬＢを使用するアドレス・トランスレーションの第２のレベルが、次いで中間アドレスをキャッシュ又はメモリにアクセスするために使用される物理アドレスにトランスレートできることを了解されたい。これは例えば、アドレス・トランスレーションの第１のレベルがオペレーティング・システムによって管理され得、アドレス・トランスレーションの第２のレベルがハイパーバイザによって管理され得る場合の仮想化をサポートするために有用であり得る。
【００３７】
図１に示すように、装置２は有界ポインタ・レジスタ６０のセットを有することができる。有界ポインタ・レジスタのセットは図１において汎用データ・レジスタ４０のセットとは物理的に別個であるように示されるが、一実装形態においては汎用データ・レジスタ及び有界ポインタ・レジスタの両方を提供するために同一の物理記憶装置が使用されてもよい。
【００３８】
それぞれの有界ポインタ・レジスタ６０は、アクセスされることになるデータ値のアドレスを決定するために使用され得るポインタ値６２、及び対応するポインタ６２を使用する際アドレスの許容範囲を指定する範囲情報６４を含む。有界ポインタ・レジスタ６０はまたポインタの使用に関して１つ又は複数のリストリクション／パーミッションを定義することができるリストリクション情報６６（本明細書ではパーミッション情報とも称する）を含むことができる。例えば、リストリクション６６は、ポインタ６２を使用し得る命令のタイプ、又はポインタが使用され得るパイプライン４のモードを制限するために使用することができる。したがって、範囲情報６４及びリストリクション情報６６は、ポインタ６２が使用できる機能を定義すると考えられ得る。定義された機能以外でポインタ６２を使用する試行がなされると、エラーがトリガされ得る。範囲情報６４は例えば、ポインタがある既知の境界内に留まっており、重要又はセキュアな情報を含み得るメモリ・アドレス空間の他のエリアに迷い込んでいないことを保証することのために有用であり得る。汎用データ・レジスタ及び有界ポインタ・レジスタの両方のために同一の物理記憶装置が使用される実例において、その時一実装形態においてポインタ値６２は例えば対応する汎用レジスタについて使用されるのと同一の記憶装置の位置に格納され得る。
【００３９】
図２は、許容範囲が、データ又は命令への認可されていないアクセスに対して保護するために使用される命令のタイプの実例を示す。図２の上部で示すように、特定の有界ポインタ・レジスタＰＲ（Ｐｏｉｎｔｅｒ  Ｒｅｇｉｓｔｅｒ）１は所与のポインタ値６２及び範囲情報６４を含み、この実例においては許容範囲の下位境界を定義する下位境界アドレス６８、及び許容範囲の上位境界を定義する上位境界アドレス６９を使用して指定されている。例えば、境界６８、６９はアドレス範囲８００００から８１０００を定義するために設定される。ある命令が有界ポインタ・レジスタＰＲ１参照し、ポインタ６２から決定されるアドレスがこの範囲の外にある場合、エラーがトリガされ得る。
【００４０】
例えば、図２のパートＡで示されるように、いくつかのシステムではポインタ・レジスタ６０内のポインタ６２の値を範囲情報６４によって指定される範囲の外にある値に設定しようとする試行があるとエラーがトリガされ得る（ここではポインタがアドレスを直接指定すると仮定している）。これはポインタ６２が指定された範囲の外のあらゆる値を取ることを回避し、それによって、ポインタを使用するあらゆるアクセスが許可された範囲内に安全にあることを保証することができる。代替的に、図２のパートＢで示されるように、命令がポインタ６２のアドレスによって特定される位置にアクセスしようと試行すると、その時そのアドレスが指定された範囲の外にある場合、エラーがトリガされ得る。したがって、ポインタ６２を指定された範囲の外の値に設定することがなお許容され得るが、そのポインタ・アドレスのデータ・アクセス（又はそのポインタから導出されるアドレス）が試行されると、その時そのアドレスが許可された範囲の外にある場合、エラーがトリガされ得る。図２のパートＡ及びパートＢに示される両方のタイプの命令に応じて、他のシステムがエラーをトリガすることもある。
【００４１】
範囲情報６４は様々な方法で設定することができる。例えば、セキュアなコード、又はオペレーティング・システム若しくはハイパーバイザは、所与のポインタに許可される範囲を指定することができる。例えば、命令セット・アーキテクチャは、所与のポインタ６２についての範囲情報６４を設定するための又は修正するための複数の命令を含むことができ、これらの命令の実行は、あるソフトウェア又はプロセッサ４のあるモード若しくは例外状態に制限することができる。範囲情報６４を設定するための又は修正するためのあらゆる既知の技法を使用することができる。
【００４２】
ポインタへの参照を行うある命令を実行する際に実行状態１２で使用され得る有界ポインタ格納要素６０のセットに加えて、プログラム・カウンタ機能（ＰＣＣ：Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ  Ｃａｐａｂｉｌｉｔｙ）レジスタ８０が、命令がレベル１の命令キャッシュ２０からフェッチされる際、フェッチ工程６で類似の機能性を提供するためにやはり使用されてもよい。特に、プログラム・カウンタ・ポインタはフィールド８２に格納され得、この時ＰＣＣ８０はまた、有界ポインタ格納要素６０のセット内のポインタのそれぞれに与えられる範囲及びリストリクション情報と同様に、範囲情報８４及び適当なリストリクション情報８６を与える。
【００４３】
図３は、タグ・ビットが個々のデータ・ブロックに関連付けられて、これらのデータ・ブロックが第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを特定するためにどのように使用されるか概略的に図示している。この実例において、第１の解釈はデータ・ブロックが通常データとして解釈されることであり、第２の解釈はデータ・ブロックが機能（すなわち有界ポインタ及び関連付けられる制限情報）を表現していると解釈されることである。特に、メモリ・アドレス空間１１０は、典型的には指定されたサイズを有することになる一連のデータ・ブロック１１５を格納することになる。純粋に図示のために、この実例において、それぞれのデータ・ブロックは１２８ビット含むと仮定する。それぞれのデータ・ブロック１１５に関連して、タグ・フィールド１２０が提供され、一実例において、これはタグ・ビットと称される単一のビット・フィールドであり、関連付けられるデータ・ブロックが非データ、例えば機能として解釈されることを特定するためにセットされ（すなわち第２の解釈にしたがって解釈される）、関連付けられるデータ・ブロックが通常データを表現することを示すためにクリアされる（すなわち第１の解釈にしたがって解釈される）。セット状態又はクリア状態に関連付けられる実際の値は、実装形態によって異なっていてよいが、純粋に図示のため、一実例においては、タグ・ビットが値１を有する場合、関連付けられるデータ・ブロックが非データとして解釈されることを示し、タグ・ビットが値０を有する場合は関連付けられるデータ・ブロックが通常データを含むことを示すことを了解されたい。
【００４４】
本実例では、第２の非データの解釈はデータ・ブロックが機能を含むことである。機能が、図３で示される機能レジスタ１００などの有界ポインタ・レジスタ（本明細書では機能レジスタとも称する）６０のうちの１つにロードされると、次にタグ・ビットは機能情報を伴って移動する。したがって、機能が機能レジスタ１００にロードされると、ポインタ１０２、範囲情報１０４及びリストリクション情報１０６（以降でパーミッション情報と称する）が機能レジスタにロードされることになる。加えて、その機能レジスタに関連して、又はその中の特定のビット・フィールドとして、タグ・ビット１０８はその内容が機能を表すことを特定するためにセットされることになる。同様に、機能がメモリに格納し戻される場合、関連するタグ・ビット１２０は機能が格納されるデータ・ブロックに関連付けられてセットされることになる。そのような手法によって、機能と通常データとを区別し、ひいては通常データを機能として使用することができないことを保証することが可能である。
【００４５】
タグ・ビットが所与のデータ・ブロックが機能を表現することを示している場合、データ・ブロックは実施されるアクションを定義することができる。実例では、これはデータ・ブロック内の冗長な空間内でエンコードされる。例えば、特定のデータ値は機能を定義するために必要とされないことがある。そのような値は、次に実施される１つ又は複数のアクションを定義するために使用することができる。
【００４６】
図４は、本開示の実例による方法４００を概略的に示している。方法４００は例えば一般的な処理回路、又は方法４００を実装するよう特別に構成された特殊回路に実装することができる。
【００４７】
ブロック４０５において、例えば図１に関連して上述したように、データ値はメモリのメモリ位置から取り出される。
【００４８】
ブロック４１０において、データ値を第１の解釈又は第２の解釈のどちらにしたがって解釈するか判断される。上述のように、実例では、第１の解釈はデータ値がデータに対応することであり、第２の解釈はデータ値が機能に対応することである。例えば、ブロック４１０の判断は、図３に関連して上述したように、データ値に関連付けられるタグ・ビットに基づくことができる。
【００４９】
ブロック４１０でデータが第２の解釈にしたがって解釈されると判断される場合、フローはブロック４１５に進む。
【００５０】
ブロック４１５において、データ値が実施されるアクションを定義しているかどうか判断される。そのようなアクションの特定の実例、及びデータ値内でそれらがどのようにエンコードされ得るかを、本開示の他所で説明する。例えば、アクションは誤り緩和アクションであり得る。
【００５１】
ブロック４１５でデータ値が実施されるアクションを定義していると判断される場合、フローはブロック４２０に進む。
【００５２】
ブロック４２０において、アクションが実施される。
【００５３】
それにより方法４００は所与のデータ値を異なる解釈にしたがって解釈されるようにし、さらには、第２の解釈に対応していると示されるデータ値にアクションの実施をトリガさせる。例えば、本明細書において他所で説明されるように、実施されるアクションは、それ以外では第２の解釈によって必要とされないデータ値を利用することにより、冗長性を活用することによって定義することができる。このやり方で、アクションが実施されるかどうかを表現するための追加的な記憶装置を必要とすることなく、システムのデータ処理機能性を向上させる。
【００５４】
上述のように、実施されるアクションは誤り緩和アクションであり得る。例えば、アクションは、例えばログ・ファイルを記憶すること若しくは更新すること、又はカウンタを増分することにより、診断的レコードを更新することを含むことがある。代替的又は追加的に、アクションは元々アクセスされていたメモリ位置とは異なるメモリ位置からのデータ値をリターンすることを含むことがある。次に、そのようなアクションの実例を、図５Ａ〜図５Ｅを参照して説明する。
【００５５】
図５Ａは、本開示の方法が実装されておらず、そのためデータ値が第１のデータの解釈又は第２の非データの解釈にしたがって解釈され得るが、第２の解釈にしたがうデータ値は実施されるアクションを定義していない、比較のシステムのメモリ５００を概略的に示している。
【００５６】
メモリ５００は、メモリ位置５０５ａ〜５０５ｅにデータ値Ａ〜Ｅを含む。取り出しリクエスト５１０はメモリ位置５０５ｃに向けられており、データ値Ｃは、取り出し５１５で取り出される。
【００５７】
図５Ｂは、メモリ位置５０５ａ〜５０５ｅの解放後のメモリ５００を概略的に示している。メモリ位置５０５ａ〜５０５ｅは解放されているが（破線の描写で示されている）、データ値Ａ〜Ｅは上書きされておらず、そのためメモリ位置５０５ａ〜５０５ｅは依然としてデータ値Ａ〜Ｅを含んでいる。
【００５８】
取り出しリクエスト５２０はメモリ位置５０５ｃに向けられている。この取り出しリクエストが（例えば解放されたメモリ位置へのアクセスを妨げるシステム・プロセスによって）妨げられない場合、データ値Ｃは取り出し５２５で取り出される。いくつかのシステムにおいて、例えばクラッシュを引き起こすのではなく実行フローを進めさせるために、この振る舞いは望ましい。
【００５９】
図５Ｃは、本開示の実例によるメモリ５３０を概略的に示している。メモリはメモリ位置５３５ａ〜５３５ｅを備えており、データ値Ａ〜Ｅをそれぞれ含むため、メモリ５３０は図５Ａのメモリ５００と同一の設定を有している。
【００６０】
図５Ｄは、メモリ位置５３５ａから５３５ｅを解放するプロセスの第１のステップの後のメモリ５３０を概略的に示している。メモリ位置５３５ａ〜５３５ｅの内容（すなわちデータ値Ａ〜Ｅ）は、メモリ位置５４０ａ〜５４０ｅの異なるセットへ複製される。
【００６１】
図５Ｅは、メモリ位置５３５ａ〜５３５ｅを解放するプロセスの完了の後のメモリ５３０を概略的に示している。さらなるデータ値Ａ２〜Ｅ２はメモリ位置５３５ａ〜５３５ｅに書き込まれており、これに続いてメモリ位置５３５ａ〜５３５ｅは解放されている（破線の描写で示されている）。
【００６２】
例えば本明細書において他所で説明されるようにメモリ位置５３５ａ〜５３５ｅのそれぞれに関連付けられるタグ・ビットによって、さらなるデータ値Ａ２〜Ｅ２が非データの解釈にしたがって解釈されるデータ値であるという指標は記憶されている。本実例において、それぞれのデータ値５３５ａ〜５３５ｅは、その元々の内容が複製された対応するメモリ位置５４０ａ〜５４０ｅを特定し、また本明細書において他所で説明されるように誤り緩和アクションも定義する。例えば、対応するメモリ位置５４０ａ〜５４０ｅは、メモリ位置５３５ａ〜５３５ｅからのオフセットによって特定することができる。
【００６３】
取り出しリクエスト５４５は、解放されたメモリ位置５３５ｃに向けられている。データ値Ｃ２がデータを表現しておらず、代わりに対応するメモリ位置５４０ｃを特定し、やはり誤り緩和アクションを定義しているかどうか判断される。これに基づいて、対応するメモリ位置５４０ｃの内容、すなわちデータ値Ｃは特定５５０において特定される。データ値Ｃは取り出し５５５において取り出され、誤り緩和アクションが実施される。このやり方で、データ値Ｃの取り出しを妨げることなく、誤り緩和が定義されて実施される。このように、実行は図５Ａ〜図５Ｂに関連して上述したのと同じやり方でデータ値Ｃに基づいて進み、一方で誤り緩和アクションを実施させる。したがって、誤り緩和機能性はトランスペアレントに実装することができ、それによって誤り緩和アクションの実際の実施とは別に、実行のフローは図５Ａ〜図５Ｂのシステムなど比較のシステムとは変わらないままである。誤り緩和は、ユーザ・エクスペリエンスにマイナスの影響を及ぼすことなく、このように実装することができる。
【００６４】
図６は、本開示の実例による方法６００を概略的に示している。この実例において、所与のデータ値の第１の解釈はそれがデータを表現していることであり、第２の解釈はそれが第１の解釈にしたがって解釈されるさらなるデータ値に関連付けられるメタデータを表現していることである。方法６００は例えば一般的な処理回路、又は方法６００を実装するよう特別に構成された特殊回路に実装することができる。
【００６５】
ブロック６０５において、例えば図１に関連して上述したように、データ値はメモリのメモリ位置から取り出される。
【００６６】
ブロック６１０において、データ値を第１の解釈又は第２の解釈のどちらにしたがって解釈するか判断される。例えば、ブロック６１０の判断は、図３に関連して上述したように、データ値に関連付けられるタグ・ビットに基づくことができる。
【００６７】
データ値が第１の解釈にしたがって解釈されると判断される場合、フローはブロック６１５に進み、データ値はデータとして解釈される。
【００６８】
データ値が第２の解釈にしたがって解釈されると判断される場合、フローはブロック６２０に進む。ブロック６２０において、データ値が実施されるアクションを定義しているかどうか判断される。そのようなアクションの特定の実例、及びデータ値内でそれらがどのようにエンコードされ得るかを、本開示の他所で説明する。例えば、アクションは誤り緩和アクションであり得る。
【００６９】
データ値が実施されるアクションを定義していると判断される場合、フローはブロック６２５に進み、アクションの実施がトリガされる。
【００７０】
アクションの実施に続いて、フローはブロック６３０に進む。代替的に、ブロック６２０でデータ値が実施されるアクションを定義していないと判断される場合、フローはブロック６２５をスキップして直接ブロック６３０に進む。ブロック６３０において、データ値はメタデータとして解釈される。
【００７１】
図７は、本開示の実例による装置７００を概略的に示している。装置のコンポーネントは、例えば、１つ又は複数の汎用処理コンポーネント内にルーチンとして実装すること、及び／又は専用の回路に実装することができる。
【００７２】
装置７００は、メモリ７１０のメモリ位置からデータ値を取り出すためのメモリ・アクセス回路を備える。メモリ７１０は装置７００の外部にあってもよい。
【００７３】
装置７００はアクション・トリガ回路７１５を備える。アクション・トリガ回路７１５は、メモリ・アクセス回路７０５からデータ値を受け取る。
【００７４】
アクション・トリガ回路７１５は処理ブロック７１５ａ〜５１５ｃを含む。
【００７５】
ブロック７１５ａはアクション・トリガ回路７１５に、データ値が第１の解釈又は第２の解釈のどちらにしたがって解釈されるかを判断させる。
【００７６】
データ値が第２の解釈にしたがって解釈される場合、ブロック７１５ｂはアクション・トリガ回路７１５にデータ値が実施されるアクションを定義しているかどうか判断させる。
【００７７】
データ値が実施されるアクションを定義している場合、ブロック７１５ｃはアクション・トリガ回路７１５に、アクションの実施をトリガさせる。
【００７８】
このやり方で、装置７００は本開示の方法を実施するように構成される。
【００７９】
図８は使用され得るシミュレータの実装形態を図示している。先に説明された実施例は考慮される技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、本明細書で説明される実施例にしたがっており、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、しばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類としては、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ変換器を含むバイナリ変換器が挙げられる。典型的には、シミュレータ実装形態は、任意選択でホスト・オペレーティングシステム８１０を実行させ、シミュレータ・プログラム８１５をサポートする、ホスト・プロセッサ８０５上で実行することができる。いくつかの配置構成において、ハードウェアと提供される命令実行環境との間に複数のシミュレーションのレイヤ、及び／又は同一のホスト・プロセッサ上に設けられる複数の別個の命令実行環境があってもよい。歴史的には、適度な速度で実行するシミュレータ実装形態を提供するためにはパワーのあるプロセッサが要求されてきたが、そのような手法は一定の状況下で正当化されてもよく、例えば互換性又は再利用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。例えば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を伴う命令実行環境を提供すること、又は典型的には異なるハードウェア・アーキテクチャに関連付けられる命令実行環境を提供することができる。シミュレーションの概略は「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に示されている。
【００８０】
実施例が特定のハードウェア構築物又は特徴を参照して以前に説明されてきた範囲で、シミュレートされる実施例において等価な機能性が適切なソフトウェア構築物又は特徴によって提供され得る。例えば、特定の回路がコンピュータ・プログラム・ロジックとしてシミュレートされる実施例に実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアが、ソフトウェア・データ構造体としてシミュレートされた実施例に実装されてもよい。以前に説明された実施例において参照されるハードウェア要素の１つ又は複数がホスト・ハードウェアに存在する配置構成（例えば、ホスト・プロセッサ８０５）において、いくつかのシミュレートされる実施例は適切であればホスト・ハードウェアを利用することができる。
【００８１】
シミュレータ・プログラム８１５はコンピュータ可読記憶媒体８２０（非一時的媒体であってもよい）に記憶することができ、ターゲット・コード８２５（アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る）にプログラム・インターフェース（命令実行環境）を提供するが、ターゲット・コード８２５はシミュレータ・プログラム８１５によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同一のものである。したがって、上述のアクションのトリガを含むターゲット・コード８２５のプログラム命令は、命令実行環境内からシミュレータ・プログラム８１５を使用して実行することができ、それによって、上で議論した装置２のハードウェア特徴を実際には有していないホスト・コンピュータ８０５がこれらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム８１５は、ターゲット・コード８２５の命令によるメモリへのアクセスを制御するためのメモリ・アクセス・プログラム・ロジック８３０を含むことができる。例えば、メモリ・アクセス・プログラム・ロジック８３０は、メモリのメモリ位置にデータ値をリクエストする命令を含むことができる。また、シミュレータ・プログラム８１５はアクション・トリガ・プログラム・ロジック８３５を含むことができ、上述の方法に関連してより詳細に説明したようなアクションの実施をトリガするための命令を含む。
【００８２】
上述の技法の使用を通じて、データ・ウォッチポイント及び／又はアドレス・ウォッチポイントが実装される比較のシステムの不利な点を回避しつつも、アクションをトリガする機能性をデータ処理システムに実装することができることが了解されよう。さらには、実行フローへの影響を低減又は除去することができる。
【００８３】
本明細書において説明される方法は、ハードウェア及び／又はソフトウェアで実施することができる。そのようなハードウェアは、汎用プロセッサ、又は特定用途向け集積回路若しくはフィールド・プログラマブル・ゲート・アレイなどのより特殊な装置であってもよい。
【００８４】
本発明の図示的な実例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの正確な実例に限定されず、当業者により添付の特許請求の範囲によって定義されるような本発明の範囲及び精神を逸脱することなく、その様々な変形、付加、及び修正がそこになされ得ることを理解されたい。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組み合わせが可能である。
【図１】
2021525415.tif 000003
【図２】
2021525415.tif 000004
【図３】
2021525415.tif 000005
【図４】
2021525415.tif 000006
【図５Ａ】
2021525415.tif 000007
【図５Ｂ】
2021525415.tif 000008
【図５Ｃ】
2021525415.tif 000009
【図５Ｄ】
2021525415.tif 000010
【図５Ｅ】
2021525415.tif 000011
【図６】
2021525415.tif 000012
【図７】
2021525415.tif 000013
【図８】
2021525415.tif 000014
【国際調査報告】
2021525415.tif 000015
2021525415.tif 000016
2021525415.tif 000017