(57)【要約】  装置は、仮想タグ部８８及び仮想アドレス部８６を含む仮想アドレス８０の、物理タグ部９２及び物理アドレス部９０を含む物理アドレス８２への変換を行うためのアドレス変換回路７０を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路７２を備え、行われることになるアドレス変換は、仮想アドレスに依存して選択される。
2021513139.tif 000002
【特許請求の範囲】
【請求項１】
仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、
前記仮想タグ部の前記物理タグ部への変換を行うためのアドレス・タグ変換回路
を備え、
前記アドレス・タグ変換回路によって前記仮想アドレスに依存して行われることになる前記変換を選択する
アドレス変換回路
を備える、装置。
【請求項２】
前記アドレス・タグ変換回路によって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、請求項１に記載の装置。
【請求項３】
前記仮想アドレス部の前記最上位ビットが第１の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記仮想タグ部にマッチする前記物理タグ部を生成し、
前記最上位ビットが第２の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部を修正する
請求項２に記載の装置。
【請求項４】
前記装置が、カーネル固有処理及びユーザ固有処理のうちの１つによる排他使用のための仮想アドレスを配分するように設計され、前記仮想アドレス部の前記最上位ビットの値が、前記仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものである、請求項２又は３に記載の装置。
【請求項５】
前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部を反転することを含む、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部をインクリメントすることを含む、請求項１から４までのいずれか一項に記載の装置。
【請求項７】
前記物理アドレスを受信し、前記物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、前記メモリ・システムが、前記物理アドレスの受信に応答して、前記物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う、請求項１から６までのいずれか一項に記載の装置。
【請求項８】
前記所定のメモリ動作が、前記物理タグ部の、前記記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、前記メモリ・システムが、前記物理タグ部と前記ガード・タグ値がマッチ条件を満たさないことに応答して、フォルト状態を示す、請求項７に記載の装置。
【請求項９】
前記物理タグ部の所定部分が所定値を含むとき、前記マッチ条件が、いずれかのガード・タグ値が前記マッチ条件を満たすようなｍａｔｃｈ−ａｌｌ条件である、請求項８に記載の装置。
【請求項１０】
前記物理タグ部の前記所定部分が前記所定値を含まないとき、前記マッチ条件が、前記マッチ条件を満たすために、前記物理タグ部の前記所定部分と前記ガード・タグ値が同じでなければならないようなｍａｔｃｈ−ｏｎｅ条件である、請求項９に記載の装置。
【請求項１１】
前記物理タグ部の前記所定部分が、前記物理タグ部のビットの所定セットである、請求項９又は１０に記載の装置。
【請求項１２】
前記アドレス・タグ変換回路が、所定値を含む前記仮想タグ部の所定ビットに応答して前記物理タグ部を生成し、前記物理タグ部の前記所定部分が、前記仮想タグ部の他の所定ビットの値に関係のない前記所定値を含む、請求項９から１１までのいずれか一項に記載の装置。
【請求項１３】
前記物理タグ部の前記所定部分が、前記物理タグ部の所定ビットである、請求項９又は１０に記載の装置。
【請求項１４】
前記ガード・タグ比較が、前記物理タグ部の全ての、前記記憶場所と関連付けられた前記ガード・タグ値との比較より小さいものである、請求項８から１３までのいずれか一項に記載の装置。
【請求項１５】
前記物理タグ部の前記所定部分の前記所定値が、同じビット値の全ビットを含む、請求項９から１４までのいずれか一項に記載の装置。
【請求項１６】
前記仮想タグ部が、前記物理アドレスに含まれる少なくとも１つのビットを含み、前記メモリ・システムが、前記少なくとも１つのビットに応答して、前記記憶場所にライト・アクセスが行われるとき、前記記憶場所と関連付けられた前記ガード・タグの上書きを制御する、請求項８から１５までのいずれか一項に記載の装置。
【請求項１７】
仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択するステップであって、前記仮想アドレスに依存する、ステップと、
前記仮想タグ部を前記物理タグ部に変換するために前記変換を行うステップと
を含む、方法。
【請求項１８】
ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジック
を含み、前記アドレス変換プログラム・ロジックが、
前記仮想タグ部の前記物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジック
を含み、
前記アドレス変換プログラム・ロジックが、前記アドレス・タグ変換回路によって前記仮想アドレスに依存して行われることになる前記変換を選択する
コンピュータ・プログラム。
【請求項１９】
請求項１８に記載のコンピュータ・プログラムを格納するストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理システムは、２つのアドレス指定システム、すなわち、仮想アドレスのシステム、及び物理アドレスのシステムを用いることがある。仮想アドレスは、データ処理装置によって実行されるソフトウェアによって使用されるものであり、その一方で、物理アドレスは、外部ＲＡＭなどのメモリ格納ハードウェアによって使用されるものである。アドレス変換能力は、次に、この２つのメモリ・アドレス指定システムの間で変換できるようにするため、及び特に、ハードウェアによって使用される物理アドレス・システムを使用する必要のない、このハードウェア内のメモリ格納先に実行ソフトウェアがアクセスできるようにするために、データ処理装置によって提供されることが可能である。言い換えれば、仮想から物理へのアドレス変換は、メモリ・アクセス・リクエスト（例えばロード及び格納）が仮想アドレスを使用して発行されるのでＣＰＵ上で実行されているソフトウェアに透明であることが可能であり、（メモリ・アクセスにふさわしいとき）データは、アドレス変換が行われ、仮想アドレスとは異なる物理アドレスにおいてデータがアクセスされたことをソフトウェアが認識する必要なく、メモリ・システムから返される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００４】
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置を提供する。
【０００５】
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うこととを含む方法を提供する。
【０００６】
少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムを提供する。
【０００７】
ストレージ媒体は、上述のコンピュータ・プログラムを格納することができる。ストレージ媒体は、非一時的ストレージ媒体であることが可能である。
【０００８】
本技法は、以下の説明と共に読まれることになる、添付の図面に示されるような実施例を参照しながら、ほんの一例としてさらに説明される。
【図面の簡単な説明】
【０００９】
【図１】データ処理装置の実例を概略的に示す図である。
【図２】アドレス・タグがガード・タグにマッチするかどうかをチェックすることを含むタグ・ガード式メモリ・アクセス動作の実例を示す図である。
【図３】タグ・ガード式メモリ・アクセス動作を行う方法を示す流れ図である。
【図４】カーネルによる使用のために１つの部分が予約され、ユーザ空間のために別の部分が予約される仮想アドレス空間を概略的に示す図である。
【図５】アドレス変換回路及びアドレス・タグ変換回路を備えるデータ処理装置の実例を概略的に示す図である。
【図６】仮想タグ部の物理タグ部への変換のさらなる詳細を示す１つの実例におけるデータ処理装置のいくつかの構成要素を概略的に示す図である。
【図７】１つの実例における図６のデータ処理装置のいくつかの構成要素を概略的に示す図である。
【図８】仮想タグ部を物理タグ部に変換する方法を示す流れ図である。
【図９】アドレス変換ロジックをサポートするシミュレータの実例を示す図である。
【発明を実施するための形態】
【００１０】
１つの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置がある。
【００１１】
物理アドレスに変換されることになる仮想アドレスは、プロセッサ・コアによる使用のために一意の仮想アドレスを定義するのに厳密に必要なものより広いビット幅を有する仮想アドレス空間において定義されることが可能である。例えば、命令セットのために６４ビット・アドレス空間を使用するように構成された現代のアーキテクチャにおいて、プロセッサ・コアは、例えば６４ビット・アドレス空間の下位４８ビットしか使用できないように制限されることがあり、これより上位にあるビットは、何らかの方式で予約される。このアプローチは、例えば、ユーザ空間及びカーネル空間はそれぞれ、重複しない仮想アドレスの固有定義領域を有することができるので、有利である可能性がある。例えば、ユーザ空間及びカーネル空間がそれぞれ、（２３９＝５１２ＧＢの仮想アドレスをそれぞれ提供する）固有定義の３９ビット・アドレス空間を含むシステムにおいて、１つのアプローチは、次に、例えば、全てのユーザ仮想アドレスが２５個の先頭ゼロを含み、全てのカーネル仮想アドレスが２５個の先頭１を含むように、ビットの先頭セットを用いて、ユーザ仮想アドレス及びカーネル仮想アドレスのこれらのセットにラベルを付けることである。例えば、これらは、最上位の「実」アドレス・ビットの符号拡張としてセットされることが可能である（これにより、予備部分は、全てゼロ又は全て１にセットされる）。ユーザ又はカーネルによって使用される仮想アドレスの先頭ビット部分の検査により、許可されたメモリ・アクセスが行われているかどうかの検証、及び違法なアクセスをトラップするための検証を行うことができる。
【００１２】
それでも、その結果、仮想アドレスの先頭ビット部分（の少なくとも大部分）が実質的に使用されない場合、これは、別の目的のためにこのビット空間が使用される機会をもたらす。しかし、これは、さらに、仮想アドレスの上位部分において使用されるエンコーディングが、仮想アドレス空間が使用される手法によって影響を受ける可能性があるということを意味する。ユーザ空間のために予約された部分、及びカーネル空間のために予約された部分を含む仮想アドレス空間の上述の実例において、（全てゼロ又は全て１にセットされた）仮想アドレスのビットの先頭部分が、所与のアドレスがユーザ空間のために予約されているか、カーネル空間のために予約されているかを示す場合、仮想アドレスのこの上位部分のためのデフォルトのビット・エンコーディングは、したがって、ユーザ空間及びカーネル空間に対して異なる。
【００１３】
さらに、仮想アドレス空間のこの上位部分が大部分、使用されていない場合、このビット空間を使用して、ソフトウェアが追加の情報をメモリ・システムに信号を送れるようにすることが有利である可能性がある。この背景において、提供された装置は、変換を行うときに受信した仮想アドレスの仮想タグ部と仮想アドレス部とを区別し、物理タグ部及び物理アドレス部を含む物理アドレスに仮想アドレスを変換する、仮想アドレスを物理アドレスに変換するためのアドレス変換回路を備える。言い換えれば、仮想アドレス部は、ソフトウェアがアクセスを要求する特定のメモリ・アドレスを示すために物理アドレス部に変換されるが、仮想アドレスのさらなる部分、すなわち仮想タグ部は、物理タグ部に別々に変換され、この物理タグ部は、次に、さらなる情報をメモリ・アドレス・システムに伝えることができる。さらに、仮想タグ部から物理タグ部へのこの変換を行うとき、本技法の装置は、アドレス・タグ変換回路によってどのような種類の変換が行われることになるかを判定するときに、仮想アドレスの内容を考慮に入れる。言い換えれば、仮想アドレスのいくつかの特徴に依存して、異なる変換が使用されることが可能である。
【００１４】
アドレス・タグ変換回路によって行われることになる変換のためにこのように仮想アドレスに依存することは、様々な方式で構成されることが可能であるが、いくつかの実例において、アドレス・タグ変換回路によって行われる変換は、仮想アドレス部の最上位ビットに依存する。仮想アドレス部のこの最上位ビットの意味は、特定の実装形態に応じて、及び実際には、仮想アドレス内の仮想タグ部と仮想アドレス部の間の境界がどこにあるかについての選択に応じて、変化する可能性があるということが認識されよう。
【００１５】
選択された変換が、仮想アドレス部の最上位ビットに依存する手法は、様々な形式であってよいが、いくつかの実例において、仮想アドレス部の最上位ビットが第１の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、仮想タグ部にマッチする物理タグ部を生成し、最上位ビットが第２の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部を修正する。したがって、最上位ビットが第１の値を含むとき、アドレス・タグ変換回路は、物理タグ部を生成するために仮想タグ部を修正しない。しかし、最上位ビットが第２の値を含むとき、仮想タグ部の修正は、物理タグ部を生成するために行われる。
【００１６】
上述のように、仮想アドレス部の最上位ビットの意味は変化する可能性がある。しかし、いくつかの実例において、装置は、カーネル固有処理及びユーザ固有処理のうちの１つによる排他使用のための仮想アドレスを配分するように設計され、仮想アドレス部の最上位ビットの値は、仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものであることが可能である。これは、例えば、完全仮想アドレス空間の２つの別個且つ非重複部分が、カーネル処理及びユーザ固有処理にそれぞれ配分される上述のようなシステムの一部としてのものであることが可能であり、デフォルトで装置は、例えば、カーネル空間アドレスに対して１の連続セットで仮想アドレスの上位部分をポピュレートすること、及び、ユーザ空間アドレスに対してゼロの連続セットでこの同じ部分をポピュレートすること、を行うように設計される。本技法の背景において、これは、さらに、仮想アドレスがカーネル空間内に配分されたことが識別されたとき、仮想タグ部に変換を適用する一方で、ユーザ空間の一部として配分された仮想アドレスの一部を仮想タグ部が形成していることが識別されたとき、仮想タグ部に変換を適用しないようにアドレス変換回路が構成されることが可能であるということを意味する。仮想タグ部が、本当のアドレス自体の一部を形成しておらず、むしろ（場合によっては、特定のメモリ・アドレスに関連した、又は場合によっては、メモリ・システムへのより一般的なコマンド又は信号としての）他の情報をメモリ・システムに通信するために使用されることが可能である場合、このアプローチは、その結果として、アドレスがカーネル固有処理に属するか、ユーザ固有処理に属するかを、物理タグ部の生成が考慮できるようにする。
【００１７】
この依存性は様々に構成されてよいが、いくつかの実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部を反転することを含む。このような構成は、例えば、カーネル固有アドレスに対して１の連続セットによって、及びユーザ固有アドレスに対してゼロの連続セットで、デフォルトで仮想タグ部がポピュレートされるように、装置内のアドレス指定が構成されるときに使用されることが可能である。したがって、メモリ・アドレス・システムに情報を通信するために仮想タグ部の少なくとも一部が使用されるとき、仮想タグ部のこの少なくとも一部をこのように反転すると、仮想アドレスがカーネル固有処理のものであるか、ユーザ固有処理のものであるかに関わらず、メモリ・アドレス・システムに提示された情報のエンコーディングを同じものにすることができる。
【００１８】
他の実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部をインクリメントすることを含むことができる。これは、例えば、アドレス空間の可能な限り小さい値で配分されるものがある一方で、アドレス空間の最上位において他の処理に配分されるものもあるように、仮想アドレス空間内のアドレスが種々の処理に配分される構成に適用できる可能性がある。例えば、仮想アドレス空間の上述のユーザ空間／カーネル空間の境界設定において、ゼロの完全セット（例えば６４ビット）を含むアドレスが、ユーザ空間に配分されることが可能である一方で、１の完全なセットを含むアドレスは、カーネル空間に配分されることが可能である。可能な限り大きいアドレス（全て１）がインクリメントされる場合、この値は、６４個のゼロの連続シーケンスを生み出すためにラップ・アラウンドすることになる（２６４を法とすることが可能なアドレスがある）。しかし、この変換は仮想タグ部にしか適用されないので、この実例において、仮想タグ部における１の連続セットは、物理タグ部におけるゼロの連続セットに変換されることになるということに留意されたい。仮想アドレス部における１の連続シーケンスは、物理アドレス部における１の連続シーケンスのままである。
【００１９】
いくつかの実例において、装置は、物理アドレスを受信し、物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、メモリ・システムは、物理アドレスの受信に応答して、物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う。したがって、物理タグ部、及びさらに言うと仮想タグ部は、メモリ・システムが所定のメモリ動作を行うために使用されることが可能である。これは、メモリ・システムについての有用な制御メカニズムをプロセッサ・コアに与える。
【００２０】
所定のメモリ動作は、システム要件及び特定の実装形態に応じて多種多様な形式であることが可能であるが、いくつかの実例において、所定のメモリ動作は、物理タグ部の、記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、メモリ・システムは、物理タグ部とガード・タグ値がマッチ条件を満たさないことに応答して、フォルト（ｆａｕｌｔ）状態を示す。このようにして、このような装置において、物理アドレス部によって指定された記憶場所に関連してメモリ・システムに格納されたガード・タグが提供され、物理タグ部とガード・タグ値がマッチ条件を満たすことが要求されることによって、記憶場所へのアクセスに対して制御を及ぼすことが可能になる。マッチ条件が満たされなかったことを示すフォルト状態は、様々な方式で使用されることが可能である。例えば、フォルト状態は、この記憶場所にアクセスするのを防ぐために使用されることが可能であるが、これは、フォルト状態が使用されるただ１つの手法ではなく、他の実例において、フォルト状態は、マッチ条件が満たされなかったが、依然としてアクセスを続行できることを示すために、装置の別の部分に単に信号で送られる（例えば、プロセッサ・コアに戻す）ことが可能である。このようにして、物理タグ部とガード・タグ値の比較の結論は、メモリ・アクセスを続けることができるかどうか、若しくは、その後の動作を続けることができるかどうかを制御するために使用されることが可能であり、又は、いつものようにメモリ・アクセスを続けられる間、単にレポートされることが可能である。
【００２１】
このようなガード・タグ・チェックを行うようにメモリ・システムが構成されるこのような構成において、ガード・タグ比較が行われることになる特定の手法を制御するために、物理タグ部の少なくとも一部を使用することができる。いくつかの実例において、物理タグ部の所定部分が所定値を含むとき、マッチ条件は、いずれかのガード・タグ値がマッチ条件を満たすようなｍａｔｃｈ−ａｌｌ条件である。したがって、事実上これにより、いずれかのガード・タグ値がマッチ条件を満たすことになり、したがって、フォルト状態が生成されなくなるので、フォルト状態を信号で送ることができなくなる。
【００２２】
いくつかの実例において、物理タグ部の所定部分が所定値を含まないとき、マッチ条件は、マッチ条件を満たすために、物理タグ部の所定部分とガード・タグ値が同じでなければならないようなｍａｔｃｈ−ｏｎｅ条件である。このようにして、逆に、物理タグ部の所定部分は、この部分が上述の「ｍａｔｃｈ−ａｌｌ」値を含まない場合にマッチ条件を満たすことが明示的に要求される可能性がある。物理タグ部の所定部分は、したがって、マッチ条件を満たすためにガード・タグ値が含まなければならない特定の値を指定するために使用されることが可能である。例えば、これは、例えば、メモリ・アドレスが配分された特定の処理に依存して、これらのメモリ・アドレスをカテゴライズするためにシステムによって使用されることが可能であり、その結果、特定のメモリ・アドレスが配分された処理だけが、フォルト状態をトリガせずにこのメモリ・アドレスにアクセスすることができる。
【００２３】
物理タグ部の所定部分は様々に定義されてよいが、いくつかの実例において、物理タグ部の所定部分は、物理タグ部のビットの所定セットである。ビットのこの所定のセットは様々に定義されてよいが、１６個の種々の順列が、例えば、上述の「ｍａｔｃｈ−ａｌｌ」値として１つを残して定義されるような、また、残りが、次に、メモリ・アドレスの１５個の種々のカテゴリ化をシステム内で定義できる「ｍａｔｃｈ−ｏｎｅ」値として個別に使用される場合の、例えば、（ただ１つの例証となる実例を挙げると）４ビットのセットであることが可能である。一般に、物理タグ部の任意の数のビットは、このように使用されることが可能であり、これに対応して、カテゴリ化のより大きいセット又はより小さいセットを定義することができる。
【００２４】
この上述の「ｍａｔｃｈ−ａｌｌ」値が、「ｍａｔｃｈ−ｏｎｅ」値のセットからのメモリ・システムへの影響とは異なるということが理解される場合、アドレス・タグ変換回路は、様々な状況の下での所定値を有する物理タグ部の所定部分の生成を強制するように設計されることが可能である。例えば、いくつかの実例において、アドレス・タグ変換回路は、所定値を含む仮想タグ部の所定ビットに応答して物理タグ部を生成し、物理タグ部の所定部分は、仮想タグ部の他の所定ビットの値に関係のない所定値を含む。このように、仮想タグ部の所定ビットは、このようにして、メモリ・システムによって「ｍａｔｃｈ−ａｌｌ」比較が行われることを強制するための制御ビットとして振る舞う。
【００２５】
ｍａｔｃｈ−ａｌｌ比較が行われることをトリガする物理タグ部の所定部分は様々に定義されてよいが、いくつかの実施例において、物理タグ部の所定部分は、物理タグ部の所定ビットである。ｍａｔｃｈ−ａｌｌ比較を行うべきか否かについてのメモリ・システムへの信号は、このようにして、（他の情報をメモリ・システムに通信するための物理タグ部の他のビットを潜在的に残して）物理タグ部の単一ビットだけによって通信されることが可能である。
【００２６】
物理タグ部とガード・タグ値との間のガード・タグ比較は様々に構成されてよいが、いくつかの実例において、ガード・タグ比較は、物理タグ部の全ての、記憶場所と関連付けられたガード・タグ値との比較より小さいものである。
【００２７】
さらに、物理タグ部の所定部分の所定値は様々に定義されてよいが、いくつかの実例において、仮想タグ部は、物理アドレスに含まれる少なくとも１つのビットを含み、メモリ・システムは、少なくとも１つのビットに応答して、記憶場所にライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御する。このようにして、仮想タグ部のビットを定義する処理は、この少なくとも１つのビットを使用して、記憶場所に対してライト・アクセスがどのように行われることになるかについてメモリ・システムに通信し、この実例において、ライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御することができる。原則として、記憶場所に対してライト・アクセスが行われるとき、一般に、定義されたガード・タグ配分を、記憶場所にアクセスする処理が遵守している場合、これは変更するべきではないので、この記憶場所と関連付けられたガード・タグが更新されるのは必須ではないが、ガード・タグの上書きの制御は、ライト・アクセスが行われるときにガード・タグ値が上書きされることを強制することによって、ライト・アクセスを行っている処理が、そのように行うことを正しく許可される追加のレベルの検証を提供する。
【００２８】
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うことと、を含む方法がある。
【００２９】
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムがある。
【００３０】
いくつかの実例において、上述のコンピュータ・プログラムを格納するストレージ媒体があり、このストレージ媒体は、非一時的ストレージ媒体であることが可能である。
【００３１】
いくつかの特定の実施例が、図を参照しながらこれから説明される。
【００３２】
図１は、データ処理装置２の実例を概略的に示す。これは単に、装置の構成要素のサブセットの高レベル表現であり、装置は、示されていない他の多くの構成要素を含むことができるということが理解されよう。装置２は、命令デコーダ６によってデコードされた命令に応答してデータ処理を行う処理回路４を備える。命令デコーダ６は、命令キャッシュ８からフェッチされた命令をデコードして、処理回路４を制御するための制御信号１０を生成し、それによって、命令に相当する対応処理動作を行う。処理回路４は、レジスタに書き戻されることになる結果の値を生成するために、レジスタ１４に格納されている値に対する動作を行うための１つ又は複数の実行ユニットを含むことができる。例えば、実行ユニットは、算術演算若しくは論理演算を実行するための算術／論理ユニット（ＡＬＵ）、浮動小数点オペランドを使用して動作を実行するための浮動小数点ユニット、及び／又は複数の独立データ要素を含むオペランドに対してベクトル演算を行うためのベクトル処理ユニットを含むことができる。処理回路は、レジスタ１４とメモリ・システムとの間のデータの移送を制御するための（例えばロード／格納ユニットを含む）メモリ・アクセス回路１５も含む。この実例において、メモリ・システムは、命令キャッシュ８、レベル１（Ｌｌ）データ・キャッシュ１６、データと命令との間で共有されるレベル２（Ｌ２）キャッシュ１７、及びメイン・メモリ１８を含む。他のキャッシュ階層も可能であり、これは１つの実例に過ぎないということが理解されよう。メモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）２０は、ロード／格納ユニット１５によってトリガされたメモリ・アクセスをサポートするためのアドレス変換機能を行うために提供される。ＭＭＵは、メモリ・システム１６、１７、１８に格納されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ（ＴＬＢ）２２を備える。各ページ・テーブルのエントリは、アドレスの対応するページに対するアドレス変換マッピングを提供することができ、ページがリード・オンリの領域であるか、可読及び書込み可能の両方であるかを指定するアクセス許可、又は、どの特権レベルがページにアクセスできるかを指定するアクセス許可などの、アクセス制御パラメータを指定することもできる。
【００３３】
図２は、タグ・ガード式メモリ・アクセスの概念を概略的に示す。メモリ・システム内の記憶場所を参照するために使用される物理アドレス空間は、いくつかのブロック３０に論理的に区分されることが可能であり、それぞれは、一定数のアドレス指定可能な位置を含む。簡潔さのために、図２の実例において、各ブロック３０は４つの記憶場所を含むが、他のブロック・サイズも同様に使用されることが可能である。各ブロック３０は、対応するガード・タグ３２と関連付けられる。一定数のブロック３０と関連付けられたガード・タグは、ひとまとめにされ、物理アドレス空間内の異なる構造的にアクセス可能な記憶場所３４の中、又は、構造的にアクセス可能ではない（同じ物理アドレス空間にマッピングされていない）、メイン・メモリ１８内に用意された追加の格納先に格納されることが可能である。別個の構造的にアクセス可能でないストレージの使用は、場合によっては、通常のコードの実行に影響を及ぼす恐れがあり、コヒーレンス管理をより複雑にする恐れのある、ガード・タグ値をキャッシュするためのデータ・キャッシュ１６、１７内の空間を使用し尽くすこと、を避けるのに好ましい可能性がある。追加のタグ・キャッシュ１９は、メイン・メモリ１８からタグにアクセスしなければならない場合よりアクセスを高速にするために、構造的にアクセス可能でないストレージからのタグ値をキャッシュするために、マイクロ・アーキテクチャの中で提供されることが可能である。タグ格納先３４が各ブロック３０に対応する特定のマッピングは、ロード／格納ユニット１５によって制御されることが可能であり、配線で接続されること、又はプログラム可能であることが可能である。図２において、各タグ３２は、物理アドレスのブロックと関連付けられているが、仮想メモリ・アドレス空間内の仮想記憶場所と関連付けられたガード・タグ３２を提供することも可能であるはずであるが、これは、各メモリ・アクセスに対していくつかの追加のアドレス変換を必要とする可能性がある。したがって、ガード・タグ３２を物理記憶場所と関連付けることによって、これは、性能を改善することができる。一般に、これは、物理アドレス空間の対応するブロック３０と、ガード・タグ３２が正確にどのように関連付けられるかについての、特定のマイクロ・アーキテクチャの実装形態の選択である。一般に、必要とされるものは全て、メモリの所与のブロックと関連付けられたガード・タグ３２がアクセスされ、比較されることが可能であるというものである。
【００３４】
したがって、タグ・ガード式メモリ・アクセスが必要なとき、（アクセスされることになるアドレス指定位置４４を識別するターゲット・アドレス４２と関連付けられた）アドレス・タグ４０は、アドレス指定位置４４を含む記憶場所３０のブロックと関連付けられたガード・タグ３２と比較されることが可能である。例えば、図２において、ターゲット・アドレス４２は、図２のアドレス空間内で４４とマークされたメモリ内の一定の位置Ｂ１を指す。したがって、位置Ｂ１を含む位置Ｂのブロックと関連付けられたガード・タグＢは、ターゲット・アドレス４２と関連付けられたアドレス・タグ４０と比較される。図２の一番上に示されているように、アドレス・タグ４は、ターゲット・アドレス自体の選択されたビットに応じて決定されることが可能である。特に、アドレス・タグは、アドレス指定位置４４として選択されることになる特定の記憶場所を示すために使用されていないターゲット・アドレスの一部の中のビットから決定されることが可能である。例えば、いくつかのアーキテクチャにおいて、ターゲット・アドレスのビットの最上位部分は、常に、符号拡張などの一定の固定値（オール０又はオール１）を含むことができるので、アドレスは、これらの未使用ビットを任意のタグ値で上書きすることによってアドレス・タグ４０でタグ付けされることが可能である。例えばプログラマ又はコンパイラによって特定のアドレス・タグ値が選択されることが可能である。アドレス・タグ及びガード・タグ３２は、例えば４ビットといった、比較的少ない数のビットであることが可能なので、メモリ内及びターゲット・アドレス内の多くの空間を占有する必要がない。４ビットのタグ空間、すなわちタグの１６個の可能な値を提供することは、しばしば、多くの共通タイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
【００３５】
したがって、タグ・ガード式メモリ・アクセスが行われるとき、アドレス・タグ４０と、アドレス指定位置４４を含むブロック３０と関連付けられたガード・タグ３２との間で比較が行われ、これらがマッチするかどうかについて判定が行われる。図１の実例の構成において、ロード／格納ユニット１５と物理メモリ１８との間のどこでも比較が行われることが可能である（及び実際は、この経路に沿って分散されることが可能である）ということに留意されたい。しかしこの実例において、比較は、簡略化のために、ロード／格納ユニット１５によって比較が行われるという観点から説明される。ロード／格納ユニット１５は、アドレス・タグ４０とガード・タグ３２がマッチしたかどうかを示すマッチ指標を生成する。例えば、このマッチ指標は、アドレス・タグ４０とガード・タグ３２との間にミスマッチがある場合に生成されるフォルト信号６０、又は、マッチがあったかどうかを示す状態レジスタ内にある指標、又は、エラーが検出されたアドレス、及び／若しくはエラーをトリガした命令の命令アドレスを示すためのエラー・レポートに追加されたエントリ、であることが可能である。
【００３６】
図３は、タグ・ガード式メモリ・アクセスをハンドリングするための流れ図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及びターゲット・アドレスを指定することができる。図２に示されているように、いくつかのケースにおいて、アドレス・タグは、ターゲット・アドレス自体のビットのサブセットから実際に導出されることが可能であるが、他の実例において、別個のレジスタで指定されることが可能である。ステップ５０において、タグ・ガード式メモリ・アクセスをトリガする命令が発生する。それに応じて、ステップ５２において、メモリ・アクセス回路１５は、ターゲット・アドレスによって識別されたアドレス指定位置４４へのメモリ・アクセスをトリガする。また、ステップ５４において、メモリ・アクセス回路１５は、ターゲット・アドレスによって識別されたアドレス指定位置４４を含む、記憶場所３０のブロックに関連のある、メモリ・システムに格納されたガード・タグ３２を取得する。ステップ５６において、メモリ・アクセス回路１５は、ステップ５４において取得されたガード・タグ３２と、アドレス・タグ４０を比較する。ステップ５８において、ガード・タグとアドレス・タグとの間でマッチが検出されたかどうかについての指標が、メモリ・アクセス回路１５によって生成される（例えば、上述のマッチ／ミスマッチ・レポート指標のタイプのいずれか）。いずれかのミスマッチをレポートするために使用される正確な指標は、実装形態によって変化する可能性がある。
【００３７】
図４は、実例の実施例において使用されることが可能な仮想アドレス空間６０の図を概略的に示す。図は、この６４ビット・アドレス空間において指定されることが可能な仮想アドレスの全範囲を示し、上位部分６２が、カーネル使用のために予約されているものとして示されている一方で、下位部分６４は、ユーザ空間として予約されているものとして示されている。したがって、カーネル空間における仮想アドレスは、連続した１の先頭（最上位）セットを含む一方で、ユーザ空間における仮想アドレスは、先頭ゼロの対応する連続セットを含む。図にさらに記されているように、この仮想アドレス空間への参照は２６４を法とする手法で行われ、その結果、０ｘＦＦ．．．ＦＦより上位の仮想アドレスへの参照をインクリメントすると、最小定義アドレス０ｘ００．．．００にラップ・アラウンドするという点において、この空間において定義されることが可能な最小アドレス（０ｘ００．．．００）と最大アドレス（０ｘＦＦ．．．ＦＦ）は互いに「隣接」している。
【００３８】
上述のように、プロセッサ・コアにおいて（すなわち、例えば、処理回路４において）使用される仮想アドレスは、メモリ・システムのハードウェアにおいて使用される物理アドレスに変換され、図５は、これをサポートするために提供される実例の回路を概略的に示す。示された装置７０は、タグ変換回路７２、アドレス変換回路７４、及び制御回路７６を備える。制御回路７６は、タグ変換回路７２及びアドレス変換回路７４の動作を制御する。必要であれば、制御回路７６も、仮想アドレスと物理アドレスとの間の定義された変換を格納するページ・テーブル７８内のエントリを参照する。このようにして、装置７０によって受信された仮想アドレス８０は、物理アドレス８２に変換され、これは次に、必要に応じて関連物理アドレスにアクセスするために、メモリ・システム８４にさらに渡される。仮想アドレス８０は、２つの部分、すなわち仮想アドレス部８６及び仮想タグ部８８においてハンドリングされる。示される実例において、仮想アドレスは６４ビットであり、ビット［５５：０］は仮想アドレス部を形成し、ビット［６３：５６］は仮想タグ部を形成する。仮想タグ部の最大ビットは、代替として、例えば、６４ビット・アドレスのビット［６３：６０］が単純に、特定の実装形態において使用されない場合、ビット［５９］であるとみなされることが可能であるということを図５が示しているということに留意されたい。このようにして、仮想アドレス部は、装置７０内のアドレス変換回路７４によって受信され、制御回路７６の制御下で、この仮想アドレスは、当業者が見慣れているはずの手法で、対応する物理アドレスに変換される。しかし、さらに仮想タグ部８８は、装置７０のタグ変換回路７２によって受信され、この回路は、仮想タグ部を物理タグ部９２に変換することができる。この仮想タグから物理タグへの変換のさらなる詳細は、図６、図７、及び図８を参照しながら下記において説明される。
【００３９】
図６は、仮想タグ部を物理タグ部に変換するために提供される回路の実例を、より詳細に概略的に示す。図５の実例におけるように、（ビット［６３：５６］を含む）仮想タグ部、及び（ビット［５５：０］を含む）仮想アドレス部を含む仮想アドレス８０が示されている。仮想タグ部内のビットは、異なる使用を行うことができ、図に示されるように、「ｔ」とラベルを付けられた仮想タグ部（［５９：５６］）の最小４ビットは、変換される仮想タグ部を形成する。これより上位の仮想タグ部の残りのビット（［６３：６０］）は、下記においてより詳細に説明されるような異なる機能を果たす。仮想タグ部のビット「ｔ」のセットは、ビットのこのセットのための２つの可能な経路を提供するタグ変換回路７２によって受信される。これらの経路のどれが続くかは、制御回路７６の制御の下、多重化装置９４、９６の設定によって決定される。本質的にこれは、タグ変換回路を通る直接経路、又は、構成可能な変換回路９８を経由して進む経路である。示された実例において、制御回路７６は、仮想アドレス部の最上位ビット（ビット［５５］）に基づいて変換選択を行う。このようにして、このビットがセットされるとき、変換回路９８を経由する経路が選ばれるが、このビットがセットされないとき、タグ変換回路７２を通る直接経路が選択される。この制御は、ｉｆ  ＶＡ［５５］＝１  ＰＡ［ｔ］＝ｔ−ｂａｒ  ｅｌｓｅ  ＰＡ［ｔ］＝ｔという、論理ステートメントによって図６の右側に示されている。言い換えれば、ビット５５がセットされると、ｔは反転され、そうでなければ、ｔは、変更されずに伝搬される。しかし反転は、行われることが可能なただ１つの変換ではなく、変換回路９８によって行われる変換は、構成設定１００に応じて変化することが可能である。別の実例において、変換は、部分ｔによって表現される値のインクリメントであることが可能であり、他の変換も同様に予想できる。装置が動作する手法は、仮想タグ部内の他のビットによる影響を受ける可能性もある。図６に示されるように、（ｍとラベルを付けられた）別のビットも、制御回路７６によって受信される。ここで、ガード・タグ制御回路の制御の下、（例えば、図２及び図３を参照しながら上述されたような）タグ・ガード式メモリ・アクセスを含むメモリ・システムにおける使用のために物理アドレスが生成される実例が示され、追加ビット「ｍ」は、このタグ・ガード式メモリ・アクセスが行われる手法に対して制御を及ぼすために使用されることが可能である。図６に示された実例において、「ｍ」ビットは、「ｍａｔｃｈ＿ａｌｌ」又は「ｍａｔｃｈ＿ｏｎｅ」条件を定義するために、タグ変換回路７２によって生成された４ビットのセット１０２がメモリ・システムによって使用されるかどうかを判定する。言い換えれば、このｍビットの設定に応じて、タグ・ガード式メモリ・アクセスは、ビット１０２のための物理アドレス・タグと、（ｍａｔｃｈ＿ｏｎｅ条件における）関連メモリ・アドレスに関連のある格納されたガード・タグとの間のマッチが必要になるか、又は、ビットのいずれかのアドレス・タグのセットが（ｍａｔｃｈ＿ａｌｌ条件における）マッチを満たすことが実質的にできるようになる。
【００４０】
一般に、仮想タグ部の残りの部分は、図の中でラベル付けされたように「予備」とみなされてよいが、いくつかの実例において、（例えば、図の中で「ｃ」とラベル付けされたような）この予備部分の１つ又は複数のビットは、追加として、仮想タグ部内に設定可能な１つ又は複数の追加の制御ビットを提供するために使用されることが可能であり、メモリ・システムに伝えられること、及び／又は、装置の構成設定に影響を与えることが可能である。したがって、図において（代替として破線で）示されるように、これらの予備ビットは、構成設定１００を決定することができ、例えば、追加の制御ビットとしてメモリ・システムに渡される２つの追加ビット１０６を提供することもできる。最終的に、ガード・タグ制御回路１０４は、ビットのセット１０２の特定のビットの組合せが（物理タグの中で）受信されるとき、「ｍａｔｃｈ＿ａｌｌ」条件がセットされるように一般に構成されるということに留意されたい。示された実例において、これは、全ビットがセットされるときのものである。これも、ｉｆ  ＰＡ［ｔ］＝０ｘＦ  ｍａｔｃｈ＿ａｌｌ  ｅｌｓｅ  ｍａｔｃｈ＿ｏｎｅという、図６の右下の方にある論理ステートメントによって示される。（図４に示されるように）利用可能な仮想アドレス空間の一部がユーザ空間のために予約され、別の部分がカーネル空間のために予約されるシステム内で仮想アドレスが配分されることが可能であり、これが、完全（例えば６４ビット）仮想アドレスの上位部分にデフォルトの意味をもたらすことを思い出すと、仮想アドレス部の最上位ビット（ビット［５５］）によって制御される、変換回路７２によって行われる変換は、したがって、仮想アドレスがカーネル空間のために配分されたか、ユーザ空間のために配分されたかに関わらず、同じ所定の「ｍａｔｃｈ＿ａｌｌ」ビットの組合せ（この実例では０ｘＦ）がメモリ制御システムに提供されることが可能であるということを定めることができる。他の実例の構成において、５ビットの物理タグが使用されることが可能であり、ここで、１つのビットは、「ｍａｔｃｈ＿ａｌｌ」比較又は「ｍａｔｃｈ＿ｏｎｅ」比較が行われるべきかどうかを示すことに充てられ、他の４つのビットは、「ｍａｔｃｈ＿ｏｎｅ」が構成される場合、この比較のために使用される。
【００４１】
図７は、図６に示された回路のいくつかの別の概略図であり、ここで、制御回路７６による変換回路９８の制御に対する変形物を示す。制御回路７６は、（「ＯＶ」（オーバーライド）とラベル付けされた）仮想タグ部の特定のビットを受信し、これは、変換回路９８によって特定のビット（又はビットの組合せ）が物理タグ部内に生成されることを強制するために使用されることが可能である。これは、例えば、ｍａｔｃｈ＿ａｌｌ比較が行われることを強制するために使用されることが可能である。しかし原則として、タグ・ガード式メモリ・アクセスの一部としてのものであろうと、別のメモリ動作に関するものであろうと、変換回路９８によって物理タグ部の中に生成された強制されたビット（又はビットの組合せ）によって、いずれかの目的が果たされることが可能であり、仮想タグ部内のオーバーライド・ビット（ＯＶ）は、これをトリガするために使用されることが可能である。
【００４２】
１つの実例において、１つのアプローチが行われ、「ｍａｔｃｈ＿ａｌｌ」物理タグ・エンコーディングとして定義される、仮想アドレス部の最上位ビットに基づく仮想タグ・エンコーディングのうちの多くても１つについて選択が行われる。この「ｍａｔｃｈ＿ａｌｌ」比較が行われるかどうかは、他のコンテキストの構成に基づくことも可能である。例えば、これは、全てのユーザ・タグが「ｍａｔｃｈ＿ｏｎｅ」であるように構成されることが可能であり、ユーザ・タグ「０」が「ｍａｔｃｈ＿ａｌｌ」であるように構成されることが可能であり、全てのカーネル・タグが「ｍａｔｃｈ＿ｏｎｅ」であるように構成されることが可能であり、カーネル・タグ「１１１１」がｍａｔｃｈ  ａｌｌであるように構成されることが可能である。
【００４３】
図８は、１つの実例において実行される一連のステップを示す流れ図である。ステップ１２０において、変換されることになる新しい仮想アドレスが受信される。ステップ１２２において、（例えば、仮想タグ部内の予備ビットを用いて）変換回路に適用することになる特定の構成があるかどうかが判定され、この場合、これは、ステップ１２４において発生する。ステップ１２６において、仮想タグ部に適用されることになる変換は、仮想アドレスの仮想アドレス部に基づいて（例えば、その最上位ビットに基づいて）決定される。選択された変換は、次に、ステップ１２８において、（対応する物理タグ部を生成するために）仮想タグ部の一部に適用される。ステップ１３０において、ビット「ｍ」が１であるかどうかが判定され、これは、ｍａｔｃｈ＿ａｌｌ比較が行われることになるかどうか（ステップ１３２）、又はｍａｔｃｈ＿ｏｎｅ比較（ステップ１３４）が行われることになるかどうかを判定する。最終的に、ステップ１３６において、物理アドレス・タグ部におけるビットの生成されたセットが、所定の特殊な値に対応するかどうかが判定され、この実例において、この値は、１の連続セット（０ｘＦ）である。この場合、フローはステップ１４０に進み、ここで、これがメモリ・システム内で特殊な動作をトリガし、その一方で、そうではない場合、フローはステップ１３８を介して進み、ここで、「通常の」タグ・ガード式メモリ・アクセスが行われ、比較は、ステップ１３０において判定されたように、ｍａｔｃｈ＿ａｌｌ又はｍａｔｃｈ＿ｏｎｅとしてチェックされる。フローは次に、ステップ１２０に復帰する。
【００４４】
図９は、使用されることが可能なシミュレータの実装形態を示す。前に説明された実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実行しているが、コンピュータ・プログラムの使用によって実行される、本明細書において説明される実施例による命令実行環境を提供することもできる。このようなコンピュータ・プログラムは、これらが、ハードウェア・アーキテクチャのソフトウェア・ベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。様々な種類のシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。典型的には、シミュレータの実装形態は、シミュレータ・プログラム２１０をサポートする、任意選択としてホスト・オペレーティング・システム２２０を実行するホスト・プロセッサ２３０上で実行することができる。いくつかの設計では、ハードウェアと、提供された命令実行環境、及び／又は同じホスト・プロセッサ上で提供される複数の別個の命令実行環境との間にシミュレーションの複数のレイヤがある可能性がある。歴史的に、適度な速さで実行するシミュレータの実装形態を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換又は再使用のために、別のプロセッサにネイティブのコードを、実行するという要望があるときなどの一定の状況において正当化されることがある。例えば、シミュレータの実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能を命令実行環境に提供すること、又は、異なるハードウェア・アーキテクチャと典型的に関連付けられた命令実行環境を提供することができる。シミュレーションの全体像は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁において示されている。
【００４５】
特定のハードウェア構造又は特徴を参照しながら実施例が前に説明された範囲まで、シミュレートされた実施例において、適切なソフトウェア構造又は特徴によって同等の機能が提供されることが可能である。例えば、コンピュータ・プログラム・ロジックとしてシミュレートされた実施例において、特定の回路が実装されることが可能である。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、ソフトウェア・データ構造としてシミュレートされた実施例において実装されることが可能である。前述の実施例において参照されたハードウェア要素の１つ又は複数がホスト・ハードウェア（例えばホスト・プロセッサ２３０）上にある設計において、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを使用することができる。
【００４６】
シミュレータ・プログラム２１０は、（非一時的媒体であることが可能な）コンピュータ可読ストレージ媒体２１２に格納され、シミュレータ・プログラム２１０によってモデル化される、ハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じ、（アプリケーション、オペレーティング・システム、及びハイパーバイザを含むことができる）ターゲット・コード２００へのプログラム・インターフェース（命令実行環境）を提供することができる。このようにして、ターゲット・コード２００のプログラム命令は、シミュレータ・プログラム２１０を使用して、命令実行環境内から実行されることが可能であり、これにより、上述の装置２のハードウェア特徴、及び、特にタグ変換回路７２を、実際には備えていないホスト・コンピュータ２３０が、これらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム２１０は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック２１４を含むことができ、特に、仮想アドレス・タグ部を物理アドレス・タグ部に変換するためのアドレス変換ロジック２１６を含むことができる。このようにして、シミュレータ・プログラム２１０は、ガード・タグとアドレス・タグの比較を行うため、ガード・タグとアドレス・タグとの間のなんらかのミスマッチが検出されたかどうかをレポートするためのメモリ・アクセス・プログラム・ロジックを含むこともできる。また、シミュレータ・プログラム１１０は、ハードウェア実施例がタグをセットするはずの方式に対応する方式でガード・タグを設定するための命令を含むタグ設定プログラム・ロジックを含むことができる。
【００４７】
簡単に全体を要約すると、装置は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって行われることになる変換は、仮想アドレスに依存して選択される。
【００４８】
本出願において、単語「〜ように構成された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ．．．）」は、装置の要素が、定義された動作を実行できる構成を備えることを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の設計又は手法を意味する。例えば、装置は、定義された動作を行う専用のハードウェアを備えることができ、又は、プロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされることが可能である。「ように構成された（Ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」は、定義された動作を行うために任意の方式で装置の要素が変更される必要があることを意味しない。
【００４９】
例証的な実施例が、添付の図面を参照しながら本明細書において詳細に説明されてきたが、本発明はこれらの正確な実施例に限定されず、添付の特許請求の範囲によって定義されるような本発明の範囲を逸脱することなく当業者によって様々な変更、追加、及び修正がもたらされる可能性があるということが理解されよう。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行われることが可能である。
【図１】
2021513139.tif 000003
【図２】
2021513139.tif 000004
【図３】
2021513139.tif 000005
【図４】
2021513139.tif 000006
【図５】
2021513139.tif 000007
【図６】
2021513139.tif 000008
【図７】
2021513139.tif 000009
【図８】
2021513139.tif 000010
【図９】
2021513139.tif 000011
【国際調査報告】
2021513139.tif 000012
2021513139.tif 000013