(57)【要約】  受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置、及び同装置の動作方法が開示される。タグガードされたメモリ・アクセスにおいて、ガードタグ取出し操作は、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すことを求め、ガードタグ検査操作は、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較する。ガードタグ取出し操作がガード・タグを取り出すことに失敗したとき、代用ガード・タグ値が、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連したガード・タグとして記憶される。
2021532474.tif 000002
【特許請求の範囲】
【請求項１】
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置であって、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを前記ガードタグ取出し操作によって取り出された前記ガード・タグと比較するガードタグ検査操作と
を含み、
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む１つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を引き起こす、装置。
【請求項２】
前記代用ガード・タグ値が、前記ガードタグ検査操作において前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと一致するように選択される、請求項１に記載の装置。
【請求項３】
前記代用ガード・タグ値が、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグである、請求項１又は請求項２に記載の装置。
【請求項４】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記代用ガード・タグ値として前記ガード・タグについて前に定義された値の決定を開始する、請求項１に記載の装置。
【請求項５】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記装置の命令実行回路によって例外が発生され、
前記命令実行回路が、前記例外に応答して、前記ガード・タグについて前記前に定義された値の前記決定を含むガードタグ修復例外ルーチンを実行する、請求項４に記載の装置。
【請求項６】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと前記ガード・タグとの間に一致が確立されたものとして前記ガードタグ検査操作の結果を決定する、請求項１から５までのいずれかに記載の装置。
【請求項７】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと前記ガード・タグとの間に前記一致が確立されるように、所定の全一致特性を有するものとして前記ガード・タグを取り扱う、請求項６に記載の装置。
【請求項８】
前記所定の全一致特性が前記ガード・タグの所定の値である、請求項７に記載の装置。
【請求項９】
前記所定の全一致特性が、前記ガード・タグに関連付けられた設定された全一致フラグの存在である、請求項７に記載の装置。
【請求項１０】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ指示を生成する、請求項１から９までのいずれかに記載の装置。
【請求項１１】
前記メモリ・アクセス回路が、前記受信されたターゲット・アドレスに関連する前記紛失ガードタグ指示を記憶するように構成された、請求項１０に記載の装置。
【請求項１２】
前記メモリ・アクセス回路が、前記紛失ガードタグ指示をプロセッサ・ユニットにシグナリングするように構成された、請求項１０又は請求項１１に記載の装置。
【請求項１３】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ・カウンタを増分する、請求項１から１２までのいずれかに記載の装置。
【請求項１４】
前記メモリ・アクセス回路が、前記受信されたターゲット・アドレスを与えるメモリ・アクセスの特性に応答して、
前記タグガードされたメモリ・アクセス、及び
タグガードされていないメモリ・アクセス
のうちの１つを選択的に実行する、請求項１から１３までのいずれかに記載の装置。
【請求項１５】
前記メモリ・アクセスの前記特性が、
前記メモリ・アクセスを生成したリクエスタのタイプ、
前記メモリ・アクセスを生成した前記リクエスタの特権レベル、及び
前記受信されたターゲット・アドレス
のうちの少なくとも１つを含む、請求項１４に記載の装置。
【請求項１６】
前記メモリ・アクセスの前記特性は、前記メモリ・アクセスが投機的データ処理の一部を形成するという指示を含み、前記メモリ・アクセス回路は、前記メモリ・アクセスが投機的データ処理の一部を形成するという前記指示に応答して、前記タグガードされていないメモリ・アクセスを実行する、請求項１４又は請求項１５に記載の装置。
【請求項１７】
前記メモリ・アクセス回路は、前記メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む１つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての前記代用ガード・タグ値の記憶を防ぐ、請求項１から１６までのいずれかに記載の装置。
【請求項１８】
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行することを含む方法であって、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを、前記取り出すステップにおいて取り出された前記ガード・タグと比較するステップと、
前記取り出すステップが前記ガード・タグを取り出すことに失敗したとき、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む１つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を引き起こすステップと
を含む方法。
【請求項１９】
ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備え、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを前記ガードタグ取出し操作によって取り出された前記ガード・タグと比較するガードタグ検査操作と
を含み、
前記メモリ・アクセス論理は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む１つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を引き起こす、コンピュータ・プログラム。
【請求項２０】
請求項１９に記載のコンピュータ・プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法はデータ処理の分野に関する。
【背景技術】
【０００２】
データ処理システムは、１つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶されたガード・タグの提供によって、いくつかの使用エラーに対して保護する技法を使用し得る。メモリ・システムへのアクセスが行われるとき、メモリ・アクセスに関連付けられたアドレス・タグが、メモリ・システムから取り出されたガード・タグに対して比較され得、両者の不一致によってメモリ使用エラーが識別され得る。反対に、両者の一致は、メモリ、特に関連があるメモリ位置が正しく使用されていることを示すことができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁。
【発明の概要】
【課題を解決するための手段】
【０００４】
少なくともいくつかの実例は、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置を提供し、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【０００５】
少なくともいくつかの実例は、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行することを含む方法を提供し、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、受信されたターゲット・アドレスに関連付けられたアドレス・タグを、取り出すステップにおいて取り出されたガード・タグと比較するステップと、取り出すステップがガード・タグを取り出すことに失敗したとき、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こすステップとを含む。
【０００６】
少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムを提供し、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備え、タグガードされたメモリ・アクセスが、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス論理は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【０００７】
記憶媒体が上記で説明したコンピュータ・プログラムを記憶し得る。記憶媒体は非一時的記憶媒体であり得る。
【０００８】
本技法について、以下の説明とともに読まれる、添付の図面に示されている実施例を参照して、単に実例として、さらに説明する。
【図面の簡単な説明】
【０００９】
【図１】データ処理装置の実例を概略的に示す図である。
【図２】アドレス・タグがガード・タグに一致するかどうかを検査することを含むタグガードされたメモリ・アクセス動作の実例を示す図である。
【図３】タグガードされたメモリ・アクセス動作を実行する方法を示す流れ図である。
【図４Ａ】さらなるキャッシュ・レベルに又はメモリにエビクトされ、フィル動作においてキャッシュに戻され得る、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【図４Ｂ】ガード・タグがキャッシュ・ラインのエビクション（eviction）によってどのように失われ得るかを概略的に示す図である。
【図５】一実施例における、メモリ・アクセス回路を概略的に示す図である。
【図６Ａ】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【図６Ｂ】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【図７Ａ】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【図７Ｂ】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【図８Ａ】各データ項目が、関連付けられたタグと、タグ値が失われたか否かを示すさらなるフラグ値とを記憶する能力を有する、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【図８Ｂ】特定のタグ値が、失われたタグ値を示すために使用される、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【図９】一実施例における、それに従ってガード・タグが読み取られ、アドレス・タグに対して比較されるステップのシーケンスを示す流れ図である。
【図１０Ａ】投機的メモリ・アクセスのためのガード・タグ検査を修正又は抑制し得るメモリ・アクセス回路を概略的に示す図である。
【図１０Ｂ】それに従って、メモリ・アクセスの異なるアクセス特性に応じて、ガード・タグ検査が抑制されるか又は変化させられ得る、図１０Ａの変形態を示す図である。
【図１１】メモリ・アクセス論理をサポートするシミュレータの実例を示す図である。
【発明を実施するための形態】
【００１０】
本明細書の一実例では、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行するメモリ・アクセス回路を備える装置があり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【００１１】
タグガードされたメモリ・アクセスをサポートするデータ処理システムにおいて、メモリ・アクセス回路は、メモリ・アクセスに関連付けられたアドレス・タグが、メモリ・アクセスによってアドレス指定されたメモリ位置に関連して記憶されたガード・タグに一致するかどうかを決定することができる。しかしながら、本技法は、そのメモリ位置に関連して記憶されたガード・タグの利用可能性が保証されない状況があることを認識する。たとえば、タグガードされたメモリ・アクセスをサポートするいくつかの手法において、ガード・タグは、キャッシュ内のデータに関連して生成及び記憶され得るが、永続メモリに記憶されたデータに関連しては生成及び記憶され得ない。この手法は、たとえば、メモリ・システムがデータ値に関連してガード・タグの追加の記憶をサポートしないことがあるので、後方互換性の理由で、又は、データ値に関連してガード・タグを永続的に記憶するために必要とされる追加の記憶空間が適当とされることが考えられないことが決定された場合、記憶節約の理由で、取られ得る。しかしながら、これは、タグガードされたメモリ・アクセスを実行するように構成されたメモリ・アクセス回路を備える装置において、そのタグ・ガードされたメモリ・アクセスの一部としてのガード・タグの利用可能性が変化し得ることを意味する。本技法は、ガード・タグが利用可能ではない（したがって、ガード・タグ取出し操作が失敗した）ときに、１つ又は複数の関連があるメモリ位置に関連付けられた代用ガード・タグ値の記憶を引き起こす、メモリ・アクセス回路を与えることによって、この問題に対処する。代用ガード・タグ値の記憶は、特にその代用ガード・タグ値がどうなるように選択されるべきであるかという観点から、様々に構成され得、これはシステム構成において有用な柔軟性を与える。代用ガード・タグ値の選定により、また、メモリ・アクセス回路は、次いで、データ値及びその関連付けられたガード・タグが後続のメモリ・アクセス動作においてどのように取り扱われるかに影響を及ぼすことが可能になる。
【００１２】
代用ガード・タグ値は様々に定義され得るが、いくつかの実施例では、代用ガード・タグ値は、ガードタグ検査操作において、受信されたターゲット・アドレスに関連付けられたアドレス・タグと一致するように選択される。これは、したがって、同じアドレス・タグを使用し、与える同じターゲット・アドレスへの後続のメモリ・アクセスも次いで一致することを意味する。アドレス・タグとガード・タグとの間の一致の定義は変化し得、一致が決定されるために、ガード・タグの全体がアドレス・タグの全体と一致する必要がない場合があることに留意されたい。しかしながら、いくつかの実施例では、両者が同一であることが必要とされ得る。これに照らして、いくつかの実施例では、代用ガード・タグ値は、受信されたターゲット・アドレスに関連付けられたアドレス・タグである。
【００１３】
消失したガード・タグ値をアドレス・タグのものと（又は、少なくとも、両者が一致することが決定されるように）交換するこの手法は、たいていのメモリ・アクセスは正当に実行され（すなわち、アドレス・タグがガード・タグと一致することが予想され）、したがって、大部分のケースにおいて、この手法が本質的にガード・タグをその正しい値で「修復」するという仮定に基づいて採用され得る。とはいえ、代用ガード・タグ値の記憶を引き起こしたメモリ・アクセスが事実上不正確であった（すなわち、与えられたアドレス・タグが正しいガード・タグ値に対して一致しないであろうことがわかった）場合でも、それ自体のアドレス・タグを与えるその後続のアクセスが次いで一致せず、後続のタグガードされたメモリ・アクセスのこの失敗が、必要とされる場合、ガード・タグがどうあるべきかの再評価とその修正とをトリガすることができるので、この不一致は、とはいえ、同じメモリ位置への次のアクセスにおいて識別され得る。
【００１４】
ガード・タグ値がどうあるべきかのそのような決定は、たとえば、正しいガード・タグ値を決定するためにソフトウェアを実行することができるプロセッサ・デバイスにタグガードされたメモリ・アクセスの失敗をシグナリングすることによって可能であり得る。代替的に、ガード・タグ値のバックアップが２次位置に記憶され、それが、次いで、ガード・タグの正しい値がどうあるべきかを決定するためにアクセスされ、その後、これが代用ガード・タグ値として記憶されることを引き起こし得る場合があり得る。したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、代用ガード・タグ値としてのガード・タグについての前に定義された値の決定を開始する。
【００１５】
上述のように、ガード・タグについて前に定義された値の決定はソフトウェアによって実行され得、したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、装置の命令実行回路によって例外が取られることを引き起こし、命令実行回路は、例外に応答して、ガード・タグについて前に定義された値の決定を含むガードタグ修復例外ルーチンを実行する。
【００１６】
タグガードされたメモリ・アクセスが、アドレス・タグがそこにおいてガード・タグに対して比較されるガードタグ検査操作を含む場合、ガードタグ取出し操作が失敗した場合に、その比較の成果に影響を及ぼすための機構が与えられ得る。いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ガードタグ検査操作の結果を、受信されたターゲット・アドレスに関連付けられたアドレス・タグとガード・タグとの間に一致が確立されることであることを決定する。したがって、ガード・タグ取出し操作が失敗し、したがって、（消失した）ガード・タグとアドレス・タグとの間の比較が不可能であるとき、これは、ガードタグ検査の成果を利用する装置中の後続の機構が、一致が見つけられたかのように動作し続けることができるように、メモリ・アクセス回路が、それでもアドレス・タグとガード・タグとの間に一致が確立されたことを決定することができることを与える。
【００１７】
このガードタグ検査操作のオーバーライドは、ガード・タグ検査操作の出力の明示的オーバーライドなど、様々な方法で達成され得るが、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、受信されたターゲット・アドレスに関連付けられたアドレス・タグとガード・タグとの間に一致が確立されるように、ガード・タグを所定の全一致（ｍａｔｃｈ−ａｌｌ）特性を有するものとして取り扱う。したがって、定義されたガード・タグ値の範囲内で、「全一致」、すなわち、これが、特定のガード・タグ値がそれに対して比較される何らかのアドレス・タグ値に対して一致することが決定されることを意味するために、特定のガード・タグ値が使用され得る。この特定のガード・タグ値は、次いで、ガード・タグ取出し操作が失敗した場合に代用ガード・タグ値として使用され得るか、又は、そうでなければ、ガードタグ検査は、ガード・タグ取出し操作が失敗した場合に、全一致に対する比較のためにガードタグ検査が生成する応答が再生されるように、構成され得る。
【００１８】
所定の全一致特性は、ガード・タグの特定の値であり得るか、又はガード・タグに関連する情報の追加の項目であり得る。したがって、いくつかの実施例では、所定の全一致特性はガード・タグの所定の値であるが、他の実施例では、所定の全一致特性は、ガード・タグに関連付けられた設定された全一致フラグの存在である。
【００１９】
ガード・タグ取出し操作がガード・タグを取り出すことに失敗したとき、この情報はいくつかの様式でキャプチャされ得、したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ（ｌｏｓｔ−ｇｕａｒｄ−ｔａｇ）指示を生成する。この紛失ガードタグ指示は、次いで、特定の所望の応答をトリガするためか、又はたとえばガード・タグの紛失に関する統計を累積するために様々に使用され得る。
【００２０】
したがって、いくつかの実施例では、メモリ・アクセス回路は、受信されたターゲット・アドレスに関連する紛失ガードタグ指示を記憶するように構成される。したがって、メモリ・アクセスのターゲットは、そのガード・タグを紛失したとして明示的に標示され得る。
【００２１】
いくつかの実施例では、メモリ・アクセス回路は、紛失ガードタグ指示をプロセッサ・ユニットにシグナリングするように構成される。プロセッサ・ユニットは、次いで適切な様式で応答又は監視し得る。
【００２２】
いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ガードタグ紛失カウンタを増分する。そのような紛失ガード・タグ・カウンタは、したがって、どのくらいの頻度でガード・タグが失われたかについての統計を累積することができる。この紛失ガード・タグ・カウンタは、メモリ・アクセス回路自体内であれ、他の場所であれ、必要に応じてシステム中の様々な位置において与えられ得る。
【００２３】
本技法は、タグガードされたメモリ・アクセスを実行することが、メモリ・アクセス回路が受信し得るすべてのメモリ・アクセスにとって適切でないことがあることを認識し、したがって、いくつかの実施例では、メモリ・アクセス回路は、受信されたターゲット・アドレスを与えるメモリ・アクセスの特性に応答して、タグガードされたメモリ・アクセス及びタグガードされていないメモリ・アクセスのうちの１つを選択的に実行する。
【００２４】
タグ・ガードされたメモリ・アクセス又はタグ・ガードされていないメモリ・アクセスのどちらかを実行させる特性は様々に定義され得るが、いくつかの実施例では、メモリ・アクセスの特性は、メモリ・アクセスを生成したリクエスタのタイプ、メモリ・アクセスを生成したリクエスタの特権レベル、及び受信されたターゲット・アドレスのうちの少なくとも１つを含む。
【００２５】
いくつかの実施例では、メモリ・アクセスの特性は、メモリ・アクセスが投機的データ処理の一部を形成するという指示を含み、メモリ・アクセス回路は、メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、タグガードされていないメモリ・アクセスを実行する。たとえば、本技法のタグガードされたメモリ・アクセス、及びその、ガード・タグ値を代用ガード・タグ値で修正する能力は、投機的データ処理のコンテキストにおいて適切でないことがあることが決定され得る。
【００２６】
メモリ・アクセスが投機的データ処理の一部を形成する場合でも、タグ・ガードされたメモリ・アクセスは続行することが可能であるが、ガード・タグ値の修正は可能ではなく、したがって、いくつかの実施例では、メモリ・アクセス回路は、メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を防ぐという点において、投機的データ処理によってトリガされたメモリ・アクセスへのメモリ・アクセス回路の応答に対するこの保守的手法は、メモリ・アクセス回路自体内でより具体的であり得る。
【００２７】
いくつかの実例では、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行することを含む方法があり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、受信されたターゲット・アドレスに関連付けられたアドレス・タグを、取り出すステップにおいて取り出されたガード・タグと比較するステップと、取り出すステップがガード・タグを取り出すことに失敗したとき、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こすステップとを含む。
【００２８】
いくつかの実例では、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備える、ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムがあり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス論理は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【００２９】
いくつかの実施例では、上記で説明したコンピュータ・プログラムを記憶する記憶媒体があり、この記憶媒体は非一時的記憶媒体であり得る。
【００３０】
次に、図を参照しながら、いくつかの特定の実施例について説明する。
【００３１】
図１は、データ処理装置２の実例を概略的に示す。これは、単に、本装置の構成要素のサブセットの高レベル表現であり、本装置は、図示されていない多くの他の構成要素を含み得ることが諒解されよう。装置２は、命令デコーダ６によって復号された命令に応答してデータ処理を実行するための処理回路４を備える。命令デコーダ６は、命令キャッシュ８からフェッチされた命令によって表される対応する処理演算を実行するように処理回路４を制御するための制御信号１０を生成するために命令を復号する。処理回路４は、レジスタにライトバックされるべき結果値を生成するためにレジスタ１４に記憶される値に対して演算を実行するための１つ又は複数の実行ユニットを含み得る。たとえば、実行ユニットは、算術演算又は論理演算を実行するための算術／論理ユニット（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ／ｌｏｇｉｃ  ｕｎｉｔ）と、浮動小数点オペランドを使用して演算を実行するための浮動小数点ユニット、及び／又は複数の独立したデータ要素を含むオペランドに対してベクトル演算を実行するためのベクトル処理ユニットとを含み得る。処理回路はまた、レジスタ１４とメモリ・システムとの間のデータの転送を制御するための（たとえば、ロード／ストア・ユニット１５を含む）メモリ・アクセス回路を含む。この実例では、メモリ・システムは、命令キャッシュ８と、レベル１（Ｌ１）データ・キャッシュ１６と、データと命令との間で共有されるレベル２（Ｌ２）キャッシュ１７と、メイン・メモリ１８とを含む。これは、ただ１つの実例に過ぎず、他のキャッシュ階層も可能であることが諒解されよう。ロード／ストア・ユニット１５によってトリガされるメモリ・アクセスをサポートするためのアドレス変換機能を与えるためのメモリ管理ユニット（ＭＭＵ）２０が与えられる。ＭＭＵは、メモリ・システム１６、１７、１８に記憶されたページ・テーブルからエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）２２を有する。各ページ・テーブル・エントリは、アドレスの対応するページのためのアドレス変換マッピングを与え得、また、ページが読取り専用領域であるのか、読取り可能且つ書込み可能であるのかを指定するアクセス許可、又はどの特権レベルがページにアクセスすることができるのかを指定するアクセス許可など、アクセス制御パラメータを指定し得る。
【００３２】
図２は、タグガードされたメモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ位置を参照するために使用される物理アドレス空間は、それぞれ一定数のアドレス指定可能な位置を含む、いくつかのブロック３０に論理的に区分され得る。簡明のために、図２の実例では、各ブロック３０は４つのメモリ位置を含むが、他のブロック・サイズも使用され得る。各ブロック３０は、対応するガード・タグ３２に関連付けられる。一定数のブロック３０に関連付けられたガード・タグは、１つに集約され、物理アドレス空間内の異なるアーキテクチャ上アクセス可能なメモリ位置３４内か、又は（同じ物理アドレス空間にマッピングされない）アーキテクチャ上アクセス可能でないメイン・メモリ１８中に与えられた追加の記憶位置内のどちらかに記憶され得る。別個のアーキテクチャ上アクセス可能でないストレージの使用は、場合によっては、通常のコードのパフォーマンスに影響を及ぼし得、コヒーレンシ管理をより複雑にし得る、ガード・タグ値をキャッシュするためのデータ・キャッシュ１６、１７中の空間を使い切ることを回避するために好ましいことがある。タグがメイン・メモリ１８からアクセスされる必要があった場合よりも速いアクセスのために、アーキテクチャ上アクセス可能でないストレージからタグ値をキャッシュするためのマイクロアーキテクチャ中に追加のタグ・キャッシュ１９が与えられ得る。どのタグ記憶位置３４が各ブロック３０に対応するかという特定のマッピングは、ロード／ストア・ユニット１５によって制御され得、ハードワイヤードされ得るか、又はプログラマブルであり得る。図２において、各タグ３２は、物理アドレスのブロックに関連付けられ、また、仮想メモリ・アドレス空間中の仮想メモリ位置に関連付けられたガード・タグ３２を与えることも可能であるが、これは、各メモリ・アクセス上でいくつかの追加のアドレス変換を必要とし得る。したがって、ガード・タグ３２を物理メモリ位置と関連付けることによって、これはパフォーマンスを改善することができる。一般に、ガード・タグ３２が物理アドレス空間の対応するブロック３０に厳密にどのように関連付けられるかが、特定のマイクロアーキテクチャ実装のための選択項目である。一般に、必要であるのは、メモリの所与のブロックに関連付けられたガード・タグ３２がアクセスされ、比較され得ることだけである。
【００３３】
したがって、タグガードされたメモリ・アクセスが必要とされるとき、（アクセスされるべきアドレス指定された位置４４を識別するターゲット・アドレス４２に関連付けられた）アドレス・タグ４０が、アドレス指定された位置４４を含むメモリ位置３０のブロックに関連付けられたガード・タグ３２に対して比較され得る。たとえば、図２において、ターゲット・アドレス４２は、図２のアドレス空間中で４４とマーキングされた、メモリ中のある位置Ｂ１を指す。したがって、位置Ｂ１を含む位置Ｂのブロックに関連付けられたガード・タグＢは、ターゲット・アドレス４２に関連付けられたアドレス・タグ４０に対して比較される。図２の上部に示されているように、アドレス・タグ４０は、ターゲット・アドレス自体の選択されたビットに応じて決定され得る。特に、アドレス・タグは、アドレス指定された位置４４として選択されるべき固有のメモリ位置を示すために使用されていない、ターゲット・アドレスの部分内のビットから決定され得る。たとえば、いくつかのアーキテクチャにおいて、ターゲット・アドレスのビットの上部部分は、常に、符号拡張（すべて０又はすべて１）など、ある固定値を有し得、したがって、アドレスは、これらの使用されていないビットに任意のタグ値を上書きすることによってアドレス・タグ４０でタグ付けされ得る。特定のアドレス・タグ値は、たとえば、プログラマー又はコンパイラによって選択され得る。アドレス・タグ及びガード・タグ３２は、比較的小さいビット数、たとえば４ビットであり得、したがって、メモリ内及びターゲット・アドレス内で多くの空間を占有する必要がない。４ビットのタグ・空間、すなわちタグの１６個の可能な値を与えることは、メモリ・アクセス・エラーの多くの一般的なタイプを検出するのにしばしば十分であり得る。
【００３４】
したがって、タグガードされたメモリ・アクセスが実行されるとき、アドレス・タグ４０と、アドレス指定された位置４４を含むブロック３０に関連付けられたガード・タグ３２との間で比較が行われ、それらが一致するかどうかに関する決定が行われる。図１における例示的な構成において、比較はロード／ストア・ユニット１５と物理メモリ１８との間のどこでも実行され得る（実際、その経路に沿って分配され得る）ことに留意されたい。しかしながら、この実例では、簡単のために、比較がロード／ストア・ユニット１５によって実行されることに関して、比較について説明する。ロード／ストア・ユニット１５は、アドレス・タグ４０とガード・タグ３２とが一致したかどうかを示す一致指示を生成する。たとえば、この一致指示は、アドレス・タグ４０とガード・タグ３２との間に不一致がある場合に生成される障害信号６０、又は一致があったかどうかを示す、状態レジスタ中に配置された指示、又はエラーが検出されたアドレスを示すためのエラー報告に加えられるエントリ、及び／又はエラーをトリガした命令の命令アドレスであり得る。
【００３５】
図３は、タグ・ガードされたメモリ・アクセスを処理するための流れ図を示す。メモリ・アクセスをトリガする命令はアドレス・タグ及びターゲット・アドレスを指定し得る。図２に示されているように、場合によっては、アドレス・タグは実際にターゲット・アドレス自体のビットのサブセットから導出され得るが、他の実例では、アドレス・タグは別個のレジスタ中で指定され得る。ステップ５０において、タグ・ガードされたメモリ・アクセスをトリガする命令に遭遇する。それに応答して、ステップ５２において、メモリ・アクセス回路１５は、ターゲット・アドレスによって識別されたアドレス指定された位置４４へのメモリ・アクセスをトリガする。また、ステップ５４において、メモリ・アクセス回路１５は、ターゲット・アドレスによって識別されたアドレス指定された位置４４を含むメモリ位置３０のブロックに関連してメモリ・システム中に記憶されたガード・タグ３２を取得する。ステップ５６において、メモリ・アクセス回路１５は、アドレス・タグ４０をステップ５４において取得されたガード・タグ３２と比較する。ステップ５８において、ガード・タグとアドレス・タグとの間に一致が検出されたかどうかの指示がメモリ・アクセス回路１５によって生成される（たとえば、上記で説明した一致／不一致報告指示のタイプのいずれか）。不一致を報告するために使用される正確な指示は実装によって異なり得る。
【００３６】
図４Ａは、キャッシュ１００及びさらなるキャッシュ又はメモリ１０５を概略的に示す。さらなるキャッシュ又はメモリ１０５にエビクトされ得る、キャッシュ１００中のキャッシュ・ライン１０２が示されており、キャッシュ・ライン中のデータが再び必要とされたとき、さらなるキャッシュ又はメモリ１０５からのフィルにより、キャッシュ・ライン１０２が再びキャッシュ１００中に割り振られ得る。キャッシュ・ライン１０２は、データ１０５と、関連付けられたガード・タグ１０３とを含むことが示されている。この個々のキャッシュ・ライン１０２は、事実上、データの４つの項目と、関連付けられたガード・タグとを含むことに留意されたい。これらはまた、（１０５がさらなるキャッシュである場合、またさらなるキャッシュ・ラインである）同等のデータ１０８中に存在する。図４Ａの例は、異なるキャッシュ１１０及び異なるさらなるキャッシュ又はメモリ１１２を表す、図４Ｂの例と比較されるべきである。キャッシュ１１０のコンテンツは、図４Ａにおける場合と同じである、すなわちガード・タグ１０３と、データ１０４とを含むキャッシュ・ライン１０２である。しかしながら、図４Ｂに示されているように、さらなるキャッシュ又はメモリ１１２は、ガード・タグを記憶するように構成されていないので、このキャッシュ・ライン１０２のエビクションは、このキャッシュ・ライン１０２からガード・タグ１０３の、及び実際すべてのガード・タグの紛失を引き起こす。したがって、同等のデータ項目１１４のみは、同じデータ項目１０４と、（図４Ｂのこの例において投入されない）３つのさらなるデータ項目とを含む。したがって、このデータ１０４がメモリ・アクセスのために再び必要とされ、フィル動作中にキャッシュ１１０に進められたとき、前に存在していたガード・タグ１０３は次いで失われ、キャッシュ・ライン１０２は、ガード・タグ１０３なしにキャッシュ１１０中に存在することとなる。
【００３７】
図５は、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行するように構成されたメモリ・アクセス回路１２０を概略的に示す。メモリ・アクセス回路１２０は、データ・アクセス回路１２２と、ガード・タグ取出し回路１２４と、ガード・タグ検査回路１２６とを備える。メモリ・アクセス回路１２０がメモリ・アクセスの一部としてターゲット・アドレスを受信したとき、ターゲット・アドレスは、データ・アクセス回路１２２及びガード・タグ取出し回路１２４に、キャッシュ／メモリ・システム１３０中の関連があるデータ値及びガード・タグにアクセスすることを求めさせる。説明を明快にするために、データ・アクセス回路１２２及びガード・タグ取出し回路１２４は、図５の例では別個に表されているが、図４Ａ及び図４Ｂの説明が示したように、所与のデータ値及びガード・タグへのアクセスは、事実上、たとえば、所与のキャッシュ内の単一のキャッシュ・ラインへのアクセスを含み得ることに留意されたい。その上、図５の例は、データ値及びガード・タグ値は、（単一のキャッシュ・ライン内で）図４Ａの実例と同様に互いに緊密に関連付けられるように記憶されないことがあるが、また、完全に別個の物理的位置に記憶され得る、という事実を考慮に入れている。とはいえ、ガード・タグ及びデータ値がどのように記憶されても、ガード・タグ取出し操作回路はキャッシュ／メモリ・システム１３０にアクセスし、応答がガード・タグ検査回路１２６によって受信される。ガード・タグがうまく取り出されたとき、これは、受信されたアドレス・タグに対して比較され、ガード・タグ検査結果が生成される。これは、（メモリ・アクセスのソースであったこともあり、そうでなかったこともある）プロセッサにシグナリングされるなど、様々な方法で使用され得る。データはまた、メモリ・アクセスが負荷である場合、キャッシュ／メモリ・システム１３０から戻され得る。
【００３８】
図６Ａは、ガード・タグ検査回路１３１の例示的な実施例を概略的に示す。ここで、ガード・タグ検査回路１３１は、比較回路１３４と、ガード・タグ取出し回路１３５と、代用ガード・タグ・ストレージ１３７とを備える。比較回路１３３は、取り出されたガード・タグとアドレス・タグとが一致するかどうかを決定し、ガード・タグ検査結果を生成するように構成される。アドレス・タグと取り出されたガード・タグとの間の一致は、２つが同一であることを必要とし得るか、又は、いくつかの実装形態では、たとえば、アドレス・タグとガード・タグのいずれか又は両方の一部を形成するが、一致する必要はないマルチ・ビット値のいくつかのビットがあり得ることに留意されたい。キャッシュ／メモリ・システム１３９からガード・タグ取出し回路１３５によって取り出されたガード・タグは、取り出されたガード・タグとアドレス・タグとが一致するかどうかを決定するために比較回路１３３に渡される。ガード・タグ取出しが失敗した場合、ガード・タグ取出し回路１３５は、これを代用ガード・タグ・ストレージ１３７にシグナリングする。応答して、ガード・タグ検査回路１３１は、関連があるメモリ・アドレス（又はアドレス）に関連して代用ガード・タグをキャッシュ／メモリ・システム１３９に記憶させる。代用ガード・タグ値は、（たとえば、ガード・タグ値が「失われた」ことがわかったときはいつでも使用される）所定の値であり得ることに留意されたい。いくつかの実例では、この所定の値は、任意の受信されたアドレス・タグがそれに対して一致することがわかるであろう値を示すためにガード・タグ検査において使用される、「全一致」値であり得る。
【００３９】
しかしながら、いくつかの実例では、ガード・タグ検査回路１３１は、受信された（ガード・タグがそれに対して比較されるべきである）アドレス・タグを（図６Ａにおいて破線によって示されているように）代用ガード・タグとして使用するように構成される。したがって、この構成において、ガード・タグ取出しが失敗したとき（すなわち、ガード・タグ値が「失われた」とき）、ガード・タグ検査回路１３１は、関連があるメモリ・アドレス（又はアドレス）に関連してメモリ・アクセスのアドレス・タグをキャッシュ／メモリ・システム１３９中に記憶させる。さらに、（同じく図６Ａにおいて破線によって示されているように）そのような構成において、代用ガード・タグはまた、比較回路１３３にそのガード・タグ入力において与えられ得る。これは、したがって、メモリ・アクセスの一部として受信されたアドレス・タグが、所定の代用値又はアドレス・タグ自体のいずれかに対して比較されることを行う。所定の代用値及び比較回路１３３は、（たとえば、「一致」出力を強制するために、代わりに「ガード・タグ紛失」出力を生成するためになど）ガード・タグ検査結果のための特定の出力が取得されるようにセット・アップされ得る。最後に、しかしながら、ガード・タグ検査回路１３１はまた、メモリ・アクセスが投機的であるか否かの指示を受信することに留意されたい。ガード・タグ検査回路１３１は、メモリ・アクセスが投機的であるという指示に様々な方法で応答するように構成され得るが、想定される１つの特定の構成は、メモリ・アクセスが投機的であるとき、ガード・タグ検査回路１３１が、キャッシュ／メモリ・システム１３９への代用ガード・タグ値の記憶を防ぐことである。
【００４０】
図６Ｂは、ガード・タグ検査回路のいくつかの要素の例示的な一実施例を概略的に示す。ここで、ガード・タグ検査回路１３２は比較回路１３４とオーバーライド回路１３５とを備える。比較回路１３４は、取り出されたガード・タグとアドレス・タグが一致するかどうかを決定し、ガード・タグ検査結果を生成するように構成される。アドレス・タグと取り出されたガード・タグとの間の一致は、両者が同一であることを必要とし得るか、又は、いくつかの実装形態では、たとえば、アドレス・タグとガード・タグのいずれか又は両方の一部を形成するが、一致する必要はない、マルチ・ビット値のいくつかのビットがあり得ることに留意されたい。オーバーライド回路１３５は、ガード・タグ取出しが失敗したという信号を受信する。これは、ガード・タグ取出しがそこから試みられたキャッシュ／メモリ・システムからの明示的な信号であり得るか、又は、たとえば、メモリ・アクセス回路内に一時的に保持されたガード・タグ値がガード・タグ取出しの結果として予想された場合、１つも見つけられないという指示であり得るか、又は、実際、ガード・タグの紛失を示す明示的な値であり得る。これがどのように決定されても、オーバーライド回路１３５は、ガード・タグ取出し失敗の場合に、比較回路１３４に信号を与え、これは、比較回路１３４に、アドレス・タグと取り出されたガード・タグとが一致するかのようにガード・タグ検査結果を生成させる。
【００４１】
図７Ａは、ガード・タグ検査回路１４０が、ガード・タグ比較制御１４１と、比較回路１４２と、ガード・タグ記憶回路１４３とを備える、ガード・タグ検査回路のいくつかの要素の変形態を概略的に示す。ガード・タグがうまく取り出されたとき、ガード・タグは、ガード・タグ・ストレージ１４３に一時的に記憶され、比較回路１４２は、次いで、ガード・タグ検査結果を生成するために、これを受信されたアドレス・タグに対して比較する。しかしながら、ガード・タグ取出し失敗がある場合、この情報はガード・タグ比較制御１４２によって受信され、ガード・タグ比較制御１４２は、次いで、受信されたアドレス・タグをガード・タグ・ストレージ１４３に記憶させる。したがって、比較回路１４２がその比較を実行するとき、比較回路１４２は、アドレス・タグをそれ自体と比較しており、ガード・タグ検査結果は、一致が見つけられたことを示す。
【００４２】
図７Ｂは、ガード・タグ検査回路のいくつかの要素の変形態を概略的に示す。ここで、ガード・タグ検査回路１５０は、ガード・タグ比較制御１５１と、比較回路１５２と、ガード・タグ・ストレージ１５３と、ガード・タグ比較制御１５２内の代用値ストレージ１５４とを備える。ガード・タグがうまく取り出され、ガード・タグ・ストレージ１５３に一時的に記憶されたとき、これは、比較回路１５２によって、受信されたアドレス・タグに対して比較され、ガード・タグ検査結果が生成される。しかしながら、ガード・タグ取出し失敗の場合、ガード・タグ比較制御は、代用値１５４を取り出されたガード・タグの代わりに使用させ、この値をガード・タグ・ストレージ１５３に入れる。したがって、ガード・タグ取出し失敗の場合、比較回路１５２は、受信されたアドレス・タグを代用値１５４と比較する。この代用値１５４は様々に構成され得、たとえば、比較回路１５２が、受信されたいかなるアドレス・タグに対しても確実に一致するように構成される、事前定義された「全一致」値である。
【００４３】
図８Ａは、キャッシュ・ラインが、関連があるデータ値及びそれらの関連付けられたガード・タグを含めるためにさらに延長されるだけでなく、さらに、追加のビットが各ガード・タグに関連して与えられ、ガード・タグが失われたことがそれによって示され得る、一実施例におけるキャッシュ１６０を概略的に示す。これらの追加のビットは、図７Ａにおいて斜線付きブロックによって示されている。したがって、ガード・タグが失われたとき、この指示は、将来のガード・タグ検査に関してそれを別様に処理するために、このデータ値に関連して維持され得る。たとえば、この紛失ガード・タグ・フラグ・セットを有するデータ値がアクセスされたとき、ガード・タグ検査はオーバーライドされ得る。
【００４４】
図８Ｂは、キャッシュ１７０が、データ値が関連付けられたガード・タグとともに記憶されるキャッシュ・ラインを含むことが示されている変形態を示し、ガード・タグの特定の値Ｎは、失われたタグを示すために使用されるが、何らかの他の値（！Ｎ）は、このガード・タグは失われておらず、むしろ、これは通常の使用可能なタグ値であることを示す。
【００４５】
図９は、１つの方法実施例において取られるステップのシーケンスを示す流れ図である。ステップ２００において、ガード・タグが読み取られ、ステップ２０１において、ガード・タグが失われたかどうか（すなわち、ガード・タグが読み取られ得ないかどうか）が決定される。そうではなく、ガード・タグがうまく読み取られた場合、ステップ２０２において、タグが一致するかどうか、すなわち、読み取られたガード・タグが、このガード・タグ検査をトリガしたメモリ・アクセスのアドレス・タグと一致するかどうかが決定される。タグが一致する場合、フローはステップ２０６に進み、メモリ・アクセスが実行される（したがって、メモリ・アクセスの性質に応じてデータをロードするか又は記憶する）。タグが一致しない場合、ステップ２０３において、そのような不一致に対して障害が生成されるべきかどうかが検査される。そうではない場合、フローはまた、ステップ２０６に進む。不一致に応答して障害が生成されるべき場合、これはステップ２０４において起こる。ステップ２０１の検討に戻ると、タグが失われたことがわかった場合、フローはステップ２０５に進み、（メモリ・アクセスの）アドレス・タグがガード・タグに書き込まれる。したがって、紛失ガード・タグはアドレス・タグによって代用される。フローは、次いで、ステップ２０６に続き、メモリ・アクセスが実行される（ロード又は記憶する）。さらに、ステップ２０５及びステップ２０６の各々において（＊）によって強調されているように、これらのステップの順序は、示されている順序の逆であり得ることに留意されたい。言い換えれば、メモリ・アクセスは、アドレス・タグが代用ガード・タグとして書き込まれる前に実行され得る。しかしながら、いくつかのシステムでは、タグ書込みがどのくらい遅れて起こるように見え得るかについての制約があり得る。
【００４６】
図１０Ａは、メモリ・アクセス回路の一部を形成するガード・タグ検査回路２１１が、メモリ・アクセスが投機的であるかどうかの指示、並びにメモリ・アクセス自体を受信する、例示的な一実施例におけるメモリ・アクセス回路２０１を概略的に示す。ガード・タグ検査回路２１１は、メモリ・システム２１２へのガードタグ検査されていないメモリ・アクセスが行われるように、メモリ・アクセスが投機的であるという指示に応答して、メモリ・アクセスのためのその操作を抑制する。より一般的には、図１０Ｂは、メモリ・アクセス回路の一部を形成するガード・タグ検査回路２２１が、メモリ・アクセスのアクセス特性、並びにメモリ・アクセス自体を受信する、例示的な一実施例におけるメモリ・アクセス回路２２０を概略的に示す。アクセス特性は、たとえば、メモリ・アクセスを生成したリクエスタのタイプの指示、メモリ・アクセスを生成したリクエスタの特権レベル、受信されたターゲット・アドレスの指示などであり得る。ガード・タグ検査回路２２１は、アクセス特性の特定のタイプとガード・タグ検査回路２２１の構成とに応じて、アクセス特性に応答して、ガードタグ検査されていないメモリ・アクセスが行われるように、メモリ・アクセスのためのその操作を抑制する。したがって、ガード・タグ検査、特に本明細書で開示するガード・タグの紛失に応答するための技法は、メモリ・アクセスのいくつかのタイプ又はメモリ・アクセスのソースのためにのみ有効にされ得る。
【００４７】
図１１は、使用され得るシミュレータ実装を示す。前に説明した実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施するが、コンピュータ・プログラムの使用によって実施される、本明細書で説明する実施例による命令実行環境を与えることも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェア・ベース実装を与える限り、しばしばシミュレータと呼ばれる。様々なシミュレータ・コンピュータ・プログラムとしては、エミュレータと、仮想マシンと、モデルと、動的バイナリ・トランスレータを含むバイナリ・トランスレータとを含む。一般に、シミュレータ実装は、随意に、シミュレータ・プログラム３１０をサポートする、ホスト・オペレーティング・システム３２０を動作させる、ホスト・プロセッサ３３０上で動作し得る。いくつかの構成では、ハードウェアと、与えられた命令実行環境、及び／又は同じホスト・プロセッサ上に与えられた複数の別個の命令実行環境との間に、シミュレーションの複数のレイヤがあり得る。歴史的に、妥当な速度で実行するシミュレータ実装を与えるために、強力なプロセッサが必要とされてきたが、そのような手法は、互換性又は再利用の理由で別のプロセッサに固有のコードを実行する要望があるときなど、いくつかの状況では適当とされ得る。たとえば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能性をもつ命令実行環境を与え得るか、又は、一般に、異なるハードウェア・アーキテクチャに関連する命令実行環境を与え得る。シミュレーションの概観は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に与えられている。
【００４８】
特定のハードウェア構成又は特徴に関して実施例について前に説明した範囲内で、シミュレートされた実施例において、同等の機能性が適切なソフトウェア構成又は特徴によって与えられ得る。たとえば、特定の回路は、シミュレートされた実施例において、コンピュータ・プログラム論理として実装され得る。同様に、レジスタ又はキャッシュなど、メモリ・ハードウェアは、シミュレートされた実施例において、ソフトウェア・データ構造として実装され得る。前に説明した実施例において参照されたハードウェア要素のうちの１つ又は複数がホスト・ハードウェア（たとえば、ホスト・プロセッサ３３０）上に存在する構成では、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを利用し得る。
【００４９】
シミュレータ・プログラム３１０は、（非一時的媒体であり得る）コンピュータ可読記憶媒体３１２上に記憶され得、シミュレータ・プログラム３１０によってモデル化されたハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである（アプリケーションと、オペレーティング・システムと、ハイパーバイザとを含み得る）ターゲット・コード３００にプログラム・インターフェース（命令実行環境）を与える。したがって、ターゲット・コード３００のプログラム命令は、上記で説明した装置２のハードウェア特徴、特にメモリ・アクセス回路１２０を実際には有しないホスト・コンピュータ３３０が、これらの特徴をエミュレートすることができるように、シミュレータ・プログラム３１０を使用して命令実行環境内から実行され得る。たとえば、シミュレータ・プログラム３１０は、説明されたメモリ・アクセスをシミュレートするためのメモリ・アクセス論理３１４を含み得る。したがって、シミュレータ・プログラム３１０はまた、ガード・タグとアドレス・タグとの比較を実行し、ガード・タグとアドレス・タグとの間に何らかの不一致が検出されたかどうかを報告し、ガードタグ取出し操作が失敗したときに代用ガード・タグを記憶するためのメモリ・アクセス・プログラム論理を含むことができる。
【００５０】
簡単に全体的に要約すると、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置、及び同装置の動作方法が開示される。タグガードされたメモリ・アクセスにおいて、ガードタグ取出し操作は、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すことを求め、ガードタグ検査操作は、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較する。ガードタグ取出し操作がガード・タグを取り出すことに失敗したとき、代用ガード・タグ値が、ターゲット・アドレスによって識別されたアドレス指定された位置を含む１つ又は複数のメモリ位置のブロックに関連したガード・タグとして記憶される。
【００５１】
本出願において、「…ように構成された」という単語は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置は、定義された動作を与える専用のハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を与えるために何らかの方法で変更される必要があることを暗示しない。
【００５２】
本明細書において、添付の図面を参照しながら例示的な実施例について詳細に説明したが、本発明は、それらの正確な実施例に限定されないこと、及び添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、当業者によって、それらの実施例において様々な変更、追加及び改変が実施され得ることを理解されたい。たとえば、従属クレームの特徴の様々な組合せが、本発明の範囲から逸脱することなく、独立クレームの特徴とともに行われ得る。
【図１】
2021532474.tif 000003
【図２】
2021532474.tif 000004
【図３】
2021532474.tif 000005
【図４Ａ】
2021532474.tif 000006
【図４Ｂ】
2021532474.tif 000007
【図５】
2021532474.tif 000008
【図６Ａ】
2021532474.tif 000009
【図６Ｂ】
2021532474.tif 000010
【図７Ａ】
2021532474.tif 000011
【図７Ｂ】
2021532474.tif 000012
【図８Ａ】
2021532474.tif 000013
【図８Ｂ】
2021532474.tif 000014
【図９】
2021532474.tif 000015
【図１０Ａ】
2021532474.tif 000016
【図１０Ｂ】
2021532474.tif 000017
【図１１】
2021532474.tif 000018
【国際調査報告】
2021532474.tif 000019
2021532474.tif 000020
2021532474.tif 000021