(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-20
(45)【発行日】2023-07-28
(54)【発明の名称】ガード・タグ紛失の取り扱い
(51)【国際特許分類】
G06F 11/10 20060101AFI20230721BHJP
G06F 12/0875 20160101ALI20230721BHJP
G06F 12/0895 20160101ALI20230721BHJP
【FI】
G06F11/10 664
G06F12/0875 100
G06F12/0895 100
(21)【出願番号】P 2021503814
(86)(22)【出願日】2019-06-07
(86)【国際出願番号】 GB2019051590
(87)【国際公開番号】W WO2020025918
(87)【国際公開日】2020-02-06
【審査請求日】2022-05-31
(32)【優先日】2018-07-31
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
(72)【発明者】
【氏名】バーンズ、グレーム ピーター
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2013-140446(JP,A)
【文献】特開平05-134930(JP,A)
【文献】国際公開第2017/032969(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 12/0875
G06F 12/0895
(57)【特許請求の範囲】
【請求項1】
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置であって、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを前記ガードタグ取出し操作によって取り出された前記ガード・タグと比較するガードタグ検査操作と
を含み、
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む1つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を
行う、装置。
【請求項2】
前記代用ガード・タグ値が、前記ガードタグ検査操作において前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと一致するように選択される、請求項1に記載の装置。
【請求項3】
前記代用ガード・タグ値が、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグである、請求項1又は請求項2に記載の装置。
【請求項4】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記代用ガード・タグ値として前記ガード・タグについて前に定義された値の決定を開始する、請求項1に記載の装置。
【請求項5】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記装置の命令実行回路によって例外が発生され、
前記命令実行回路が、前記例外に応答して、前記ガード・タグについて前記前に定義された値の前記決定を含むガードタグ修復例外ルーチンを実行する、請求項4に記載の装置。
【請求項6】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと前記ガード・タグとの間に一致が確立されたものとして前記ガードタグ検査操作の結果を決定する、請求項1から5までのいずれかに記載の装置。
【請求項7】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記受信されたターゲット・アドレスに関連付けられた前記アドレス・タグと前記ガード・タグとの間に前記一致が確立されるように、所定の全一致特性を有するものとして前記ガード・タグを取り扱う、請求項6に記載の装置。
【請求項8】
前記所定の全一致特性が前記ガード・タグの所定の値である、請求項7に記載の装置。
【請求項9】
前記所定の全一致特性が、前記ガード・タグに関連付けられた設定された全一致フラグの存在である、請求項7に記載の装置。
【請求項10】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ指示を生成する、請求項1から9までのいずれかに記載の装置。
【請求項11】
前記メモリ・アクセス回路が、前記受信されたターゲット・アドレスに関連する前記紛失ガードタグ指示を記憶するように構成された、請求項10に記載の装置。
【請求項12】
前記メモリ・アクセス回路が、前記紛失ガードタグ指示をプロセッサ・ユニットにシグナリングするように構成された、請求項10又は請求項11に記載の装置。
【請求項13】
前記メモリ・アクセス回路は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ・カウンタを増分する、請求項1から12までのいずれかに記載の装置。
【請求項14】
前記メモリ・アクセス回路が、前記受信されたターゲット・アドレスを与えるメモリ・アクセスの特性に応答して、
前記タグガードされたメモリ・アクセス、及び
タグガードされていないメモリ・アクセス
のうちの1つを選択的に実行する、請求項1から13までのいずれかに記載の装置。
【請求項15】
前記メモリ・アクセスの前記特性が、
前記メモリ・アクセスを生成したリクエスタのタイプ、
前記メモリ・アクセスを生成した前記リクエスタの特権レベル、及び
前記受信されたターゲット・アドレス
のうちの少なくとも1つを含む、請求項14に記載の装置。
【請求項16】
前記メモリ・アクセスの前記特性は、前記メモリ・アクセスが投機的データ処理の一部を形成するという指示を含み、前記メモリ・アクセス回路は、前記メモリ・アクセスが投機的データ処理の一部を形成するという前記指示に応答して、前記タグガードされていないメモリ・アクセスを実行する、請求項14又は請求項15に記載の装置。
【請求項17】
前記メモリ・アクセス回路は、前記メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む1つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての前記代用ガード・タグ値の記憶を防ぐ、請求項1から16までのいずれかに記載の装置。
【請求項18】
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行することを含む方法であって、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを、前記取り出すステップにおいて取り出された前記ガード・タグと比較するステップと、
前記取り出すステップが前記ガード・タグを取り出すことに失敗したとき、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む1つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を
行うステップと
を含む方法。
【請求項19】
ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備え、前記タグガードされたメモリ・アクセスが、
前記受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、
前記受信されたターゲット・アドレスに関連付けられたアドレス・タグを前記ガードタグ取出し操作によって取り出された前記ガード・タグと比較するガードタグ検査操作と
を含み、
前記メモリ・アクセス論理は、前記ガードタグ取出し操作が前記ガード・タグを取り出すことに失敗したことに応答して、前記ターゲット・アドレスによって識別された前記アドレス指定された位置を含む1つ又は複数のメモリ位置の前記ブロックに関連して記憶された前記ガード・タグとしての代用ガード・タグ値の記憶を
行う、コンピュータ・プログラム。
【請求項20】
請求項19に記載のコンピュータ・プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法はデータ処理の分野に関する。
【背景技術】
【0002】
データ処理システムは、1つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶されたガード・タグの提供によって、いくつかの使用エラーに対して保護する技法を使用し得る。メモリ・システムへのアクセスが行われるとき、メモリ・アクセスに関連付けられたアドレス・タグが、メモリ・システムから取り出されたガード・タグに対して比較され得、両者の不一致によってメモリ使用エラーが識別され得る。反対に、両者の一致は、メモリ、特に関連があるメモリ位置が正しく使用されていることを示すことができる。
【先行技術文献】
【非特許文献】
【0003】
【文献】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁。
【発明の概要】
【課題を解決するための手段】
【0004】
少なくともいくつかの実例は、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置を提供し、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【0005】
少なくともいくつかの実例は、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行することを含む方法を提供し、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、受信されたターゲット・アドレスに関連付けられたアドレス・タグを、取り出すステップにおいて取り出されたガード・タグと比較するステップと、取り出すステップがガード・タグを取り出すことに失敗したとき、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こすステップとを含む。
【0006】
少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムを提供し、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備え、タグガードされたメモリ・アクセスが、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス論理は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【0007】
記憶媒体が上記で説明したコンピュータ・プログラムを記憶し得る。記憶媒体は非一時的記憶媒体であり得る。
【0008】
本技法について、以下の説明とともに読まれる、添付の図面に示されている実施例を参照して、単に実例として、さらに説明する。
【図面の簡単な説明】
【0009】
【
図1】データ処理装置の実例を概略的に示す図である。
【
図2】アドレス・タグがガード・タグに一致するかどうかを検査することを含むタグガードされたメモリ・アクセス動作の実例を示す図である。
【
図3】タグガードされたメモリ・アクセス動作を実行する方法を示す流れ図である。
【
図4A】さらなるキャッシュ・レベルに又はメモリにエビクトされ、フィル動作においてキャッシュに戻され得る、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【
図4B】ガード・タグがキャッシュ・ラインのエビクション(eviction)によってどのように失われ得るかを概略的に示す図である。
【
図5】一実施例における、メモリ・アクセス回路を概略的に示す図である。
【
図6A】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【
図6B】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【
図7A】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【
図7B】一実施例における、メモリ・アクセス回路の一部を形成するガード・タグ検査回路を概略的に示す図である。
【
図8A】各データ項目が、関連付けられたタグと、タグ値が失われたか否かを示すさらなるフラグ値とを記憶する能力を有する、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【
図8B】特定のタグ値が、失われたタグ値を示すために使用される、キャッシュに記憶されたキャッシュ・ラインを概略的に示す図である。
【
図9】一実施例における、それに従ってガード・タグが読み取られ、アドレス・タグに対して比較されるステップのシーケンスを示す流れ図である。
【
図10A】投機的メモリ・アクセスのためのガード・タグ検査を修正又は抑制し得るメモリ・アクセス回路を概略的に示す図である。
【
図10B】それに従って、メモリ・アクセスの異なるアクセス特性に応じて、ガード・タグ検査が抑制されるか又は変化させられ得る、
図10Aの変形態を示す図である。
【
図11】メモリ・アクセス論理をサポートするシミュレータの実例を示す図である。
【発明を実施するための形態】
【0010】
本明細書の一実例では、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行するメモリ・アクセス回路を備える装置があり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【0011】
タグガードされたメモリ・アクセスをサポートするデータ処理システムにおいて、メモリ・アクセス回路は、メモリ・アクセスに関連付けられたアドレス・タグが、メモリ・アクセスによってアドレス指定されたメモリ位置に関連して記憶されたガード・タグに一致するかどうかを決定することができる。しかしながら、本技法は、そのメモリ位置に関連して記憶されたガード・タグの利用可能性が保証されない状況があることを認識する。たとえば、タグガードされたメモリ・アクセスをサポートするいくつかの手法において、ガード・タグは、キャッシュ内のデータに関連して生成及び記憶され得るが、永続メモリに記憶されたデータに関連しては生成及び記憶され得ない。この手法は、たとえば、メモリ・システムがデータ値に関連してガード・タグの追加の記憶をサポートしないことがあるので、後方互換性の理由で、又は、データ値に関連してガード・タグを永続的に記憶するために必要とされる追加の記憶空間が適当とされることが考えられないことが決定された場合、記憶節約の理由で、取られ得る。しかしながら、これは、タグガードされたメモリ・アクセスを実行するように構成されたメモリ・アクセス回路を備える装置において、そのタグ・ガードされたメモリ・アクセスの一部としてのガード・タグの利用可能性が変化し得ることを意味する。本技法は、ガード・タグが利用可能ではない(したがって、ガード・タグ取出し操作が失敗した)ときに、1つ又は複数の関連があるメモリ位置に関連付けられた代用ガード・タグ値の記憶を引き起こす、メモリ・アクセス回路を与えることによって、この問題に対処する。代用ガード・タグ値の記憶は、特にその代用ガード・タグ値がどうなるように選択されるべきであるかという観点から、様々に構成され得、これはシステム構成において有用な柔軟性を与える。代用ガード・タグ値の選定により、また、メモリ・アクセス回路は、次いで、データ値及びその関連付けられたガード・タグが後続のメモリ・アクセス動作においてどのように取り扱われるかに影響を及ぼすことが可能になる。
【0012】
代用ガード・タグ値は様々に定義され得るが、いくつかの実施例では、代用ガード・タグ値は、ガードタグ検査操作において、受信されたターゲット・アドレスに関連付けられたアドレス・タグと一致するように選択される。これは、したがって、同じアドレス・タグを使用し、与える同じターゲット・アドレスへの後続のメモリ・アクセスも次いで一致することを意味する。アドレス・タグとガード・タグとの間の一致の定義は変化し得、一致が決定されるために、ガード・タグの全体がアドレス・タグの全体と一致する必要がない場合があることに留意されたい。しかしながら、いくつかの実施例では、両者が同一であることが必要とされ得る。これに照らして、いくつかの実施例では、代用ガード・タグ値は、受信されたターゲット・アドレスに関連付けられたアドレス・タグである。
【0013】
消失したガード・タグ値をアドレス・タグのものと(又は、少なくとも、両者が一致することが決定されるように)交換するこの手法は、たいていのメモリ・アクセスは正当に実行され(すなわち、アドレス・タグがガード・タグと一致することが予想され)、したがって、大部分のケースにおいて、この手法が本質的にガード・タグをその正しい値で「修復」するという仮定に基づいて採用され得る。とはいえ、代用ガード・タグ値の記憶を引き起こしたメモリ・アクセスが事実上不正確であった(すなわち、与えられたアドレス・タグが正しいガード・タグ値に対して一致しないであろうことがわかった)場合でも、それ自体のアドレス・タグを与えるその後続のアクセスが次いで一致せず、後続のタグガードされたメモリ・アクセスのこの失敗が、必要とされる場合、ガード・タグがどうあるべきかの再評価とその修正とをトリガすることができるので、この不一致は、とはいえ、同じメモリ位置への次のアクセスにおいて識別され得る。
【0014】
ガード・タグ値がどうあるべきかのそのような決定は、たとえば、正しいガード・タグ値を決定するためにソフトウェアを実行することができるプロセッサ・デバイスにタグガードされたメモリ・アクセスの失敗をシグナリングすることによって可能であり得る。代替的に、ガード・タグ値のバックアップが2次位置に記憶され、それが、次いで、ガード・タグの正しい値がどうあるべきかを決定するためにアクセスされ、その後、これが代用ガード・タグ値として記憶されることを引き起こし得る場合があり得る。したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、代用ガード・タグ値としてのガード・タグについての前に定義された値の決定を開始する。
【0015】
上述のように、ガード・タグについて前に定義された値の決定はソフトウェアによって実行され得、したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、装置の命令実行回路によって例外が取られることを引き起こし、命令実行回路は、例外に応答して、ガード・タグについて前に定義された値の決定を含むガードタグ修復例外ルーチンを実行する。
【0016】
タグガードされたメモリ・アクセスが、アドレス・タグがそこにおいてガード・タグに対して比較されるガードタグ検査操作を含む場合、ガードタグ取出し操作が失敗した場合に、その比較の成果に影響を及ぼすための機構が与えられ得る。いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ガードタグ検査操作の結果を、受信されたターゲット・アドレスに関連付けられたアドレス・タグとガード・タグとの間に一致が確立されることであることを決定する。したがって、ガード・タグ取出し操作が失敗し、したがって、(消失した)ガード・タグとアドレス・タグとの間の比較が不可能であるとき、これは、ガードタグ検査の成果を利用する装置中の後続の機構が、一致が見つけられたかのように動作し続けることができるように、メモリ・アクセス回路が、それでもアドレス・タグとガード・タグとの間に一致が確立されたことを決定することができることを与える。
【0017】
このガードタグ検査操作のオーバーライドは、ガード・タグ検査操作の出力の明示的オーバーライドなど、様々な方法で達成され得るが、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、受信されたターゲット・アドレスに関連付けられたアドレス・タグとガード・タグとの間に一致が確立されるように、ガード・タグを所定の全一致(match-all)特性を有するものとして取り扱う。したがって、定義されたガード・タグ値の範囲内で、「全一致」、すなわち、これが、特定のガード・タグ値がそれに対して比較される何らかのアドレス・タグ値に対して一致することが決定されることを意味するために、特定のガード・タグ値が使用され得る。この特定のガード・タグ値は、次いで、ガード・タグ取出し操作が失敗した場合に代用ガード・タグ値として使用され得るか、又は、そうでなければ、ガードタグ検査は、ガード・タグ取出し操作が失敗した場合に、全一致に対する比較のためにガードタグ検査が生成する応答が再生されるように、構成され得る。
【0018】
所定の全一致特性は、ガード・タグの特定の値であり得るか、又はガード・タグに関連する情報の追加の項目であり得る。したがって、いくつかの実施例では、所定の全一致特性はガード・タグの所定の値であるが、他の実施例では、所定の全一致特性は、ガード・タグに関連付けられた設定された全一致フラグの存在である。
【0019】
ガード・タグ取出し操作がガード・タグを取り出すことに失敗したとき、この情報はいくつかの様式でキャプチャされ得、したがって、いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、紛失ガードタグ(lost-guard-tag)指示を生成する。この紛失ガードタグ指示は、次いで、特定の所望の応答をトリガするためか、又はたとえばガード・タグの紛失に関する統計を累積するために様々に使用され得る。
【0020】
したがって、いくつかの実施例では、メモリ・アクセス回路は、受信されたターゲット・アドレスに関連する紛失ガードタグ指示を記憶するように構成される。したがって、メモリ・アクセスのターゲットは、そのガード・タグを紛失したとして明示的に標示され得る。
【0021】
いくつかの実施例では、メモリ・アクセス回路は、紛失ガードタグ指示をプロセッサ・ユニットにシグナリングするように構成される。プロセッサ・ユニットは、次いで適切な様式で応答又は監視し得る。
【0022】
いくつかの実施例では、メモリ・アクセス回路は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ガードタグ紛失カウンタを増分する。そのような紛失ガード・タグ・カウンタは、したがって、どのくらいの頻度でガード・タグが失われたかについての統計を累積することができる。この紛失ガード・タグ・カウンタは、メモリ・アクセス回路自体内であれ、他の場所であれ、必要に応じてシステム中の様々な位置において与えられ得る。
【0023】
本技法は、タグガードされたメモリ・アクセスを実行することが、メモリ・アクセス回路が受信し得るすべてのメモリ・アクセスにとって適切でないことがあることを認識し、したがって、いくつかの実施例では、メモリ・アクセス回路は、受信されたターゲット・アドレスを与えるメモリ・アクセスの特性に応答して、タグガードされたメモリ・アクセス及びタグガードされていないメモリ・アクセスのうちの1つを選択的に実行する。
【0024】
タグ・ガードされたメモリ・アクセス又はタグ・ガードされていないメモリ・アクセスのどちらかを実行させる特性は様々に定義され得るが、いくつかの実施例では、メモリ・アクセスの特性は、メモリ・アクセスを生成したリクエスタのタイプ、メモリ・アクセスを生成したリクエスタの特権レベル、及び受信されたターゲット・アドレスのうちの少なくとも1つを含む。
【0025】
いくつかの実施例では、メモリ・アクセスの特性は、メモリ・アクセスが投機的データ処理の一部を形成するという指示を含み、メモリ・アクセス回路は、メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、タグガードされていないメモリ・アクセスを実行する。たとえば、本技法のタグガードされたメモリ・アクセス、及びその、ガード・タグ値を代用ガード・タグ値で修正する能力は、投機的データ処理のコンテキストにおいて適切でないことがあることが決定され得る。
【0026】
メモリ・アクセスが投機的データ処理の一部を形成する場合でも、タグ・ガードされたメモリ・アクセスは続行することが可能であるが、ガード・タグ値の修正は可能ではなく、したがって、いくつかの実施例では、メモリ・アクセス回路は、メモリ・アクセスが投機的データ処理の一部を形成するという指示に応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を防ぐという点において、投機的データ処理によってトリガされたメモリ・アクセスへのメモリ・アクセス回路の応答に対するこの保守的手法は、メモリ・アクセス回路自体内でより具体的であり得る。
【0027】
いくつかの実例では、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行することを含む方法があり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すステップと、受信されたターゲット・アドレスに関連付けられたアドレス・タグを、取り出すステップにおいて取り出されたガード・タグと比較するステップと、取り出すステップがガード・タグを取り出すことに失敗したとき、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こすステップとを含む。
【0028】
いくつかの実例では、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス論理を備える、ターゲット・プログラム・コードの命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムがあり、タグガードされたメモリ・アクセスは、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すためのガードタグ取出し操作と、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較するガードタグ検査操作とを含み、メモリ・アクセス論理は、ガードタグ取出し操作がガード・タグを取り出すことに失敗したことに応答して、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグとしての代用ガード・タグ値の記憶を引き起こす。
【0029】
いくつかの実施例では、上記で説明したコンピュータ・プログラムを記憶する記憶媒体があり、この記憶媒体は非一時的記憶媒体であり得る。
【0030】
次に、図を参照しながら、いくつかの特定の実施例について説明する。
【0031】
図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とを含む。これは、ただ1つの実例に過ぎず、他のキャッシュ階層も可能であることが諒解されよう。ロード/ストア・ユニット15によってトリガされるメモリ・アクセスをサポートするためのアドレス変換機能を与えるためのメモリ管理ユニット(MMU)20が与えられる。MMUは、メモリ・システム16、17、18に記憶されたページ・テーブルからエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)22を有する。各ページ・テーブル・エントリは、アドレスの対応するページのためのアドレス変換マッピングを与え得、また、ページが読取り専用領域であるのか、読取り可能且つ書込み可能であるのかを指定するアクセス許可、又はどの特権レベルがページにアクセスすることができるのかを指定するアクセス許可など、アクセス制御パラメータを指定し得る。
【0032】
図2は、タグガードされたメモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ位置を参照するために使用される物理アドレス空間は、それぞれ一定数のアドレス指定可能な位置を含む、いくつかのブロック30に論理的に区分され得る。簡明のために、
図2の実例では、各ブロック30は4つのメモリ位置を含むが、他のブロック・サイズも使用され得る。各ブロック30は、対応するガード・タグ32に関連付けられる。一定数のブロック30に関連付けられたガード・タグは、1つに集約され、物理アドレス空間内の異なるアーキテクチャ上アクセス可能なメモリ位置34内か、又は(同じ物理アドレス空間にマッピングされない)アーキテクチャ上アクセス可能でないメイン・メモリ18中に与えられた追加の記憶位置内のどちらかに記憶され得る。別個のアーキテクチャ上アクセス可能でないストレージの使用は、場合によっては、通常のコードのパフォーマンスに影響を及ぼし得、コヒーレンシ管理をより複雑にし得る、ガード・タグ値をキャッシュするためのデータ・キャッシュ16、17中の空間を使い切ることを回避するために好ましいことがある。タグがメイン・メモリ18からアクセスされる必要があった場合よりも速いアクセスのために、アーキテクチャ上アクセス可能でないストレージからタグ値をキャッシュするためのマイクロアーキテクチャ中に追加のタグ・キャッシュ19が与えられ得る。どのタグ記憶位置34が各ブロック30に対応するかという特定のマッピングは、ロード/ストア・ユニット15によって制御され得、ハードワイヤードされ得るか、又はプログラマブルであり得る。
図2において、各タグ32は、物理アドレスのブロックに関連付けられ、また、仮想メモリ・アドレス空間中の仮想メモリ位置に関連付けられたガード・タグ32を与えることも可能であるが、これは、各メモリ・アクセス上でいくつかの追加のアドレス変換を必要とし得る。したがって、ガード・タグ32を物理メモリ位置と関連付けることによって、これはパフォーマンスを改善することができる。一般に、ガード・タグ32が物理アドレス空間の対応するブロック30に厳密にどのように関連付けられるかが、特定のマイクロアーキテクチャ実装のための選択項目である。一般に、必要であるのは、メモリの所与のブロックに関連付けられたガード・タグ32がアクセスされ、比較され得ることだけである。
【0033】
したがって、タグガードされたメモリ・アクセスが必要とされるとき、(アクセスされるべきアドレス指定された位置44を識別するターゲット・アドレス42に関連付けられた)アドレス・タグ40が、アドレス指定された位置44を含むメモリ位置30のブロックに関連付けられたガード・タグ32に対して比較され得る。たとえば、
図2において、ターゲット・アドレス42は、
図2のアドレス空間中で44とマーキングされた、メモリ中のある位置B1を指す。したがって、位置B1を含む位置Bのブロックに関連付けられたガード・タグBは、ターゲット・アドレス42に関連付けられたアドレス・タグ40に対して比較される。
図2の上部に示されているように、アドレス・タグ40は、ターゲット・アドレス自体の選択されたビットに応じて決定され得る。特に、アドレス・タグは、アドレス指定された位置44として選択されるべき固有のメモリ位置を示すために使用されていない、ターゲット・アドレスの部分内のビットから決定され得る。たとえば、いくつかのアーキテクチャにおいて、ターゲット・アドレスのビットの上部部分は、常に、符号拡張(すべて0又はすべて1)など、ある固定値を有し得、したがって、アドレスは、これらの使用されていないビットに任意のタグ値を上書きすることによってアドレス・タグ40でタグ付けされ得る。特定のアドレス・タグ値は、たとえば、プログラマー又はコンパイラによって選択され得る。アドレス・タグ及びガード・タグ32は、比較的小さいビット数、たとえば4ビットであり得、したがって、メモリ内及びターゲット・アドレス内で多くの空間を占有する必要がない。4ビットのタグ・空間、すなわちタグの16個の可能な値を与えることは、メモリ・アクセス・エラーの多くの一般的なタイプを検出するのにしばしば十分であり得る。
【0034】
したがって、タグガードされたメモリ・アクセスが実行されるとき、アドレス・タグ40と、アドレス指定された位置44を含むブロック30に関連付けられたガード・タグ32との間で比較が行われ、それらが一致するかどうかに関する決定が行われる。
図1における例示的な構成において、比較はロード/ストア・ユニット15と物理メモリ18との間のどこでも実行され得る(実際、その経路に沿って分配され得る)ことに留意されたい。しかしながら、この実例では、簡単のために、比較がロード/ストア・ユニット15によって実行されることに関して、比較について説明する。ロード/ストア・ユニット15は、アドレス・タグ40とガード・タグ32とが一致したかどうかを示す一致指示を生成する。たとえば、この一致指示は、アドレス・タグ40とガード・タグ32との間に不一致がある場合に生成される障害信号60、又は一致があったかどうかを示す、状態レジスタ中に配置された指示、又はエラーが検出されたアドレスを示すためのエラー報告に加えられるエントリ、及び/又はエラーをトリガした命令の命令アドレスであり得る。
【0035】
図3は、タグ・ガードされたメモリ・アクセスを処理するための流れ図を示す。メモリ・アクセスをトリガする命令はアドレス・タグ及びターゲット・アドレスを指定し得る。
図2に示されているように、場合によっては、アドレス・タグは実際にターゲット・アドレス自体のビットのサブセットから導出され得るが、他の実例では、アドレス・タグは別個のレジスタ中で指定され得る。ステップ50において、タグ・ガードされたメモリ・アクセスをトリガする命令に遭遇する。それに応答して、ステップ52において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定された位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定された位置44を含むメモリ位置30のブロックに関連してメモリ・システム中に記憶されたガード・タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、アドレス・タグ40をステップ54において取得されたガード・タグ32と比較する。ステップ58において、ガード・タグとアドレス・タグとの間に一致が検出されたかどうかの指示がメモリ・アクセス回路15によって生成される(たとえば、上記で説明した一致/不一致報告指示のタイプのいずれか)。不一致を報告するために使用される正確な指示は実装によって異なり得る。
【0036】
図4Aは、キャッシュ100及びさらなるキャッシュ又はメモリ105を概略的に示す。さらなるキャッシュ又はメモリ105にエビクトされ得る、キャッシュ100中のキャッシュ・ライン102が示されており、キャッシュ・ライン中のデータが再び必要とされたとき、さらなるキャッシュ又はメモリ105からのフィルにより、キャッシュ・ライン102が再びキャッシュ100中に割り振られ得る。キャッシュ・ライン102は、データ105と、関連付けられたガード・タグ103とを含むことが示されている。この個々のキャッシュ・ライン102は、事実上、データの4つの項目と、関連付けられたガード・タグとを含むことに留意されたい。これらはまた、(105がさらなるキャッシュである場合、またさらなるキャッシュ・ラインである)同等のデータ108中に存在する。
図4Aの例は、異なるキャッシュ110及び異なるさらなるキャッシュ又はメモリ112を表す、
図4Bの例と比較されるべきである。キャッシュ110のコンテンツは、
図4Aにおける場合と同じである、すなわちガード・タグ103と、データ104とを含むキャッシュ・ライン102である。しかしながら、
図4Bに示されているように、さらなるキャッシュ又はメモリ112は、ガード・タグを記憶するように構成されていないので、このキャッシュ・ライン102のエビクションは、このキャッシュ・ライン102からガード・タグ103の、及び実際すべてのガード・タグの紛失を引き起こす。したがって、同等のデータ項目114のみは、同じデータ項目104と、(
図4Bのこの例において投入されない)3つのさらなるデータ項目とを含む。したがって、このデータ104がメモリ・アクセスのために再び必要とされ、フィル動作中にキャッシュ110に進められたとき、前に存在していたガード・タグ103は次いで失われ、キャッシュ・ライン102は、ガード・タグ103なしにキャッシュ110中に存在することとなる。
【0037】
図5は、受信されたターゲット・アドレスに応答してタグガードされたメモリ・アクセスを実行するように構成されたメモリ・アクセス回路120を概略的に示す。メモリ・アクセス回路120は、データ・アクセス回路122と、ガード・タグ取出し回路124と、ガード・タグ検査回路126とを備える。メモリ・アクセス回路120がメモリ・アクセスの一部としてターゲット・アドレスを受信したとき、ターゲット・アドレスは、データ・アクセス回路122及びガード・タグ取出し回路124に、キャッシュ/メモリ・システム130中の関連があるデータ値及びガード・タグにアクセスすることを求めさせる。説明を明快にするために、データ・アクセス回路122及びガード・タグ取出し回路124は、
図5の例では別個に表されているが、
図4A及び
図4Bの説明が示したように、所与のデータ値及びガード・タグへのアクセスは、事実上、たとえば、所与のキャッシュ内の単一のキャッシュ・ラインへのアクセスを含み得ることに留意されたい。その上、
図5の例は、データ値及びガード・タグ値は、(単一のキャッシュ・ライン内で)
図4Aの実例と同様に互いに緊密に関連付けられるように記憶されないことがあるが、また、完全に別個の物理的位置に記憶され得る、という事実を考慮に入れている。とはいえ、ガード・タグ及びデータ値がどのように記憶されても、ガード・タグ取出し操作回路はキャッシュ/メモリ・システム130にアクセスし、応答がガード・タグ検査回路126によって受信される。ガード・タグがうまく取り出されたとき、これは、受信されたアドレス・タグに対して比較され、ガード・タグ検査結果が生成される。これは、(メモリ・アクセスのソースであったこともあり、そうでなかったこともある)プロセッサにシグナリングされるなど、様々な方法で使用され得る。データはまた、メモリ・アクセスが負荷である場合、キャッシュ/メモリ・システム130から戻され得る。
【0038】
図6Aは、ガード・タグ検査回路131の例示的な実施例を概略的に示す。ここで、ガード・タグ検査回路131は、比較回路134と、ガード・タグ取出し回路135と、代用ガード・タグ・ストレージ137とを備える。比較回路133は、取り出されたガード・タグとアドレス・タグとが一致するかどうかを決定し、ガード・タグ検査結果を生成するように構成される。アドレス・タグと取り出されたガード・タグとの間の一致は、2つが同一であることを必要とし得るか、又は、いくつかの実装形態では、たとえば、アドレス・タグとガード・タグのいずれか又は両方の一部を形成するが、一致する必要はないマルチ・ビット値のいくつかのビットがあり得ることに留意されたい。キャッシュ/メモリ・システム139からガード・タグ取出し回路135によって取り出されたガード・タグは、取り出されたガード・タグとアドレス・タグとが一致するかどうかを決定するために比較回路133に渡される。ガード・タグ取出しが失敗した場合、ガード・タグ取出し回路135は、これを代用ガード・タグ・ストレージ137にシグナリングする。応答して、ガード・タグ検査回路131は、関連があるメモリ・アドレス(又はアドレス)に関連して代用ガード・タグをキャッシュ/メモリ・システム139に記憶させる。代用ガード・タグ値は、(たとえば、ガード・タグ値が「失われた」ことがわかったときはいつでも使用される)所定の値であり得ることに留意されたい。いくつかの実例では、この所定の値は、任意の受信されたアドレス・タグがそれに対して一致することがわかるであろう値を示すためにガード・タグ検査において使用される、「全一致」値であり得る。
【0039】
しかしながら、いくつかの実例では、ガード・タグ検査回路131は、受信された(ガード・タグがそれに対して比較されるべきである)アドレス・タグを(
図6Aにおいて破線によって示されているように)代用ガード・タグとして使用するように構成される。したがって、この構成において、ガード・タグ取出しが失敗したとき(すなわち、ガード・タグ値が「失われた」とき)、ガード・タグ検査回路131は、関連があるメモリ・アドレス(又はアドレス)に関連してメモリ・アクセスのアドレス・タグをキャッシュ/メモリ・システム139中に記憶させる。さらに、(同じく
図6Aにおいて破線によって示されているように)そのような構成において、代用ガード・タグはまた、比較回路133にそのガード・タグ入力において与えられ得る。これは、したがって、メモリ・アクセスの一部として受信されたアドレス・タグが、所定の代用値又はアドレス・タグ自体のいずれかに対して比較されることを行う。所定の代用値及び比較回路133は、(たとえば、「一致」出力を強制するために、代わりに「ガード・タグ紛失」出力を生成するためになど)ガード・タグ検査結果のための特定の出力が取得されるようにセット・アップされ得る。最後に、しかしながら、ガード・タグ検査回路131はまた、メモリ・アクセスが投機的であるか否かの指示を受信することに留意されたい。ガード・タグ検査回路131は、メモリ・アクセスが投機的であるという指示に様々な方法で応答するように構成され得るが、想定される1つの特定の構成は、メモリ・アクセスが投機的であるとき、ガード・タグ検査回路131が、キャッシュ/メモリ・システム139への代用ガード・タグ値の記憶を防ぐことである。
【0040】
図6Bは、ガード・タグ検査回路のいくつかの要素の例示的な一実施例を概略的に示す。ここで、ガード・タグ検査回路132は比較回路134とオーバーライド回路135とを備える。比較回路134は、取り出されたガード・タグとアドレス・タグが一致するかどうかを決定し、ガード・タグ検査結果を生成するように構成される。アドレス・タグと取り出されたガード・タグとの間の一致は、両者が同一であることを必要とし得るか、又は、いくつかの実装形態では、たとえば、アドレス・タグとガード・タグのいずれか又は両方の一部を形成するが、一致する必要はない、マルチ・ビット値のいくつかのビットがあり得ることに留意されたい。オーバーライド回路135は、ガード・タグ取出しが失敗したという信号を受信する。これは、ガード・タグ取出しがそこから試みられたキャッシュ/メモリ・システムからの明示的な信号であり得るか、又は、たとえば、メモリ・アクセス回路内に一時的に保持されたガード・タグ値がガード・タグ取出しの結果として予想された場合、1つも見つけられないという指示であり得るか、又は、実際、ガード・タグの紛失を示す明示的な値であり得る。これがどのように決定されても、オーバーライド回路135は、ガード・タグ取出し失敗の場合に、比較回路134に信号を与え、これは、比較回路134に、アドレス・タグと取り出されたガード・タグとが一致するかのようにガード・タグ検査結果を生成させる。
【0041】
図7Aは、ガード・タグ検査回路140が、ガード・タグ比較制御141と、比較回路142と、ガード・タグ記憶回路143とを備える、ガード・タグ検査回路のいくつかの要素の変形態を概略的に示す。ガード・タグがうまく取り出されたとき、ガード・タグは、ガード・タグ・ストレージ143に一時的に記憶され、比較回路142は、次いで、ガード・タグ検査結果を生成するために、これを受信されたアドレス・タグに対して比較する。しかしながら、ガード・タグ取出し失敗がある場合、この情報はガード・タグ比較制御142によって受信され、ガード・タグ比較制御142は、次いで、受信されたアドレス・タグをガード・タグ・ストレージ143に記憶させる。したがって、比較回路142がその比較を実行するとき、比較回路142は、アドレス・タグをそれ自体と比較しており、ガード・タグ検査結果は、一致が見つけられたことを示す。
【0042】
図7Bは、ガード・タグ検査回路のいくつかの要素の変形態を概略的に示す。ここで、ガード・タグ検査回路150は、ガード・タグ比較制御151と、比較回路152と、ガード・タグ・ストレージ153と、ガード・タグ比較制御152内の代用値ストレージ154とを備える。ガード・タグがうまく取り出され、ガード・タグ・ストレージ153に一時的に記憶されたとき、これは、比較回路152によって、受信されたアドレス・タグに対して比較され、ガード・タグ検査結果が生成される。しかしながら、ガード・タグ取出し失敗の場合、ガード・タグ比較制御は、代用値154を取り出されたガード・タグの代わりに使用させ、この値をガード・タグ・ストレージ153に入れる。したがって、ガード・タグ取出し失敗の場合、比較回路152は、受信されたアドレス・タグを代用値154と比較する。この代用値154は様々に構成され得、たとえば、比較回路152が、受信されたいかなるアドレス・タグに対しても確実に一致するように構成される、事前定義された「全一致」値である。
【0043】
図8Aは、キャッシュ・ラインが、関連があるデータ値及びそれらの関連付けられたガード・タグを含めるためにさらに延長されるだけでなく、さらに、追加のビットが各ガード・タグに関連して与えられ、ガード・タグが失われたことがそれによって示され得る、一実施例におけるキャッシュ160を概略的に示す。これらの追加のビットは、
図7Aにおいて斜線付きブロックによって示されている。したがって、ガード・タグが失われたとき、この指示は、将来のガード・タグ検査に関してそれを別様に処理するために、このデータ値に関連して維持され得る。たとえば、この紛失ガード・タグ・フラグ・セットを有するデータ値がアクセスされたとき、ガード・タグ検査はオーバーライドされ得る。
【0044】
図8Bは、キャッシュ170が、データ値が関連付けられたガード・タグとともに記憶されるキャッシュ・ラインを含むことが示されている変形態を示し、ガード・タグの特定の値Nは、失われたタグを示すために使用されるが、何らかの他の値(!N)は、このガード・タグは失われておらず、むしろ、これは通常の使用可能なタグ値であることを示す。
【0045】
図9は、1つの方法実施例において取られるステップのシーケンスを示す流れ図である。ステップ200において、ガード・タグが読み取られ、ステップ201において、ガード・タグが失われたかどうか(すなわち、ガード・タグが読み取られ得ないかどうか)が決定される。そうではなく、ガード・タグがうまく読み取られた場合、ステップ202において、タグが一致するかどうか、すなわち、読み取られたガード・タグが、このガード・タグ検査をトリガしたメモリ・アクセスのアドレス・タグと一致するかどうかが決定される。タグが一致する場合、フローはステップ206に進み、メモリ・アクセスが実行される(したがって、メモリ・アクセスの性質に応じてデータをロードするか又は記憶する)。タグが一致しない場合、ステップ203において、そのような不一致に対して障害が生成されるべきかどうかが検査される。そうではない場合、フローはまた、ステップ206に進む。不一致に応答して障害が生成されるべき場合、これはステップ204において起こる。ステップ201の検討に戻ると、タグが失われたことがわかった場合、フローはステップ205に進み、(メモリ・アクセスの)アドレス・タグがガード・タグに書き込まれる。したがって、紛失ガード・タグはアドレス・タグによって代用される。フローは、次いで、ステップ206に続き、メモリ・アクセスが実行される(ロード又は記憶する)。さらに、ステップ205及びステップ206の各々において(*)によって強調されているように、これらのステップの順序は、示されている順序の逆であり得ることに留意されたい。言い換えれば、メモリ・アクセスは、アドレス・タグが代用ガード・タグとして書き込まれる前に実行され得る。しかしながら、いくつかのシステムでは、タグ書込みがどのくらい遅れて起こるように見え得るかについての制約があり得る。
【0046】
図10Aは、メモリ・アクセス回路の一部を形成するガード・タグ検査回路211が、メモリ・アクセスが投機的であるかどうかの指示、並びにメモリ・アクセス自体を受信する、例示的な一実施例におけるメモリ・アクセス回路201を概略的に示す。ガード・タグ検査回路211は、メモリ・システム212へのガードタグ検査されていないメモリ・アクセスが行われるように、メモリ・アクセスが投機的であるという指示に応答して、メモリ・アクセスのためのその操作を抑制する。より一般的には、
図10Bは、メモリ・アクセス回路の一部を形成するガード・タグ検査回路221が、メモリ・アクセスのアクセス特性、並びにメモリ・アクセス自体を受信する、例示的な一実施例におけるメモリ・アクセス回路220を概略的に示す。アクセス特性は、たとえば、メモリ・アクセスを生成したリクエスタのタイプの指示、メモリ・アクセスを生成したリクエスタの特権レベル、受信されたターゲット・アドレスの指示などであり得る。ガード・タグ検査回路221は、アクセス特性の特定のタイプとガード・タグ検査回路221の構成とに応じて、アクセス特性に応答して、ガードタグ検査されていないメモリ・アクセスが行われるように、メモリ・アクセスのためのその操作を抑制する。したがって、ガード・タグ検査、特に本明細書で開示するガード・タグの紛失に応答するための技法は、メモリ・アクセスのいくつかのタイプ又はメモリ・アクセスのソースのためにのみ有効にされ得る。
【0047】
図11は、使用され得るシミュレータ実装を示す。前に説明した実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施するが、コンピュータ・プログラムの使用によって実施される、本明細書で説明する実施例による命令実行環境を与えることも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェア・ベース実装を与える限り、しばしばシミュレータと呼ばれる。様々なシミュレータ・コンピュータ・プログラムとしては、エミュレータと、仮想マシンと、モデルと、動的バイナリ・トランスレータを含むバイナリ・トランスレータとを含む。一般に、シミュレータ実装は、随意に、シミュレータ・プログラム310をサポートする、ホスト・オペレーティング・システム320を動作させる、ホスト・プロセッサ330上で動作し得る。いくつかの構成では、ハードウェアと、与えられた命令実行環境、及び/又は同じホスト・プロセッサ上に与えられた複数の別個の命令実行環境との間に、シミュレーションの複数のレイヤがあり得る。歴史的に、妥当な速度で実行するシミュレータ実装を与えるために、強力なプロセッサが必要とされてきたが、そのような手法は、互換性又は再利用の理由で別のプロセッサに固有のコードを実行する要望があるときなど、いくつかの状況では適当とされ得る。たとえば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能性をもつ命令実行環境を与え得るか、又は、一般に、異なるハードウェア・アーキテクチャに関連する命令実行環境を与え得る。シミュレーションの概観は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁に与えられている。
【0048】
特定のハードウェア構成又は特徴に関して実施例について前に説明した範囲内で、シミュレートされた実施例において、同等の機能性が適切なソフトウェア構成又は特徴によって与えられ得る。たとえば、特定の回路は、シミュレートされた実施例において、コンピュータ・プログラム論理として実装され得る。同様に、レジスタ又はキャッシュなど、メモリ・ハードウェアは、シミュレートされた実施例において、ソフトウェア・データ構造として実装され得る。前に説明した実施例において参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(たとえば、ホスト・プロセッサ330)上に存在する構成では、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを利用し得る。
【0049】
シミュレータ・プログラム310は、(非一時的媒体であり得る)コンピュータ可読記憶媒体312上に記憶され得、シミュレータ・プログラム310によってモデル化されたハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである(アプリケーションと、オペレーティング・システムと、ハイパーバイザとを含み得る)ターゲット・コード300にプログラム・インターフェース(命令実行環境)を与える。したがって、ターゲット・コード300のプログラム命令は、上記で説明した装置2のハードウェア特徴、特にメモリ・アクセス回路120を実際には有しないホスト・コンピュータ330が、これらの特徴をエミュレートすることができるように、シミュレータ・プログラム310を使用して命令実行環境内から実行され得る。たとえば、シミュレータ・プログラム310は、説明されたメモリ・アクセスをシミュレートするためのメモリ・アクセス論理314を含み得る。したがって、シミュレータ・プログラム310はまた、ガード・タグとアドレス・タグとの比較を実行し、ガード・タグとアドレス・タグとの間に何らかの不一致が検出されたかどうかを報告し、ガードタグ取出し操作が失敗したときに代用ガード・タグを記憶するためのメモリ・アクセス・プログラム論理を含むことができる。
【0050】
簡単に全体的に要約すると、受信されたターゲット・アドレスに応答して、タグガードされたメモリ・アクセスを実行するためのメモリ・アクセス回路を備える装置、及び同装置の動作方法が開示される。タグガードされたメモリ・アクセスにおいて、ガードタグ取出し操作は、受信されたターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して記憶されたガード・タグを取り出すことを求め、ガードタグ検査操作は、受信されたターゲット・アドレスに関連付けられたアドレス・タグをガードタグ取出し操作によって取り出されたガード・タグと比較する。ガードタグ取出し操作がガード・タグを取り出すことに失敗したとき、代用ガード・タグ値が、ターゲット・アドレスによって識別されたアドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連したガード・タグとして記憶される。
【0051】
本出願において、「…ように構成された」という単語は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置は、定義された動作を与える専用のハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を与えるために何らかの方法で変更される必要があることを暗示しない。
【0052】
本明細書において、添付の図面を参照しながら例示的な実施例について詳細に説明したが、本発明は、それらの正確な実施例に限定されないこと、及び添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、当業者によって、それらの実施例において様々な変更、追加及び改変が実施され得ることを理解されたい。たとえば、従属クレームの特徴の様々な組合せが、本発明の範囲から逸脱することなく、独立クレームの特徴とともに行われ得る。