(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-18
(45)【発行日】2023-10-26
(54)【発明の名称】データ処理装置におけるアドレス変換
(51)【国際特許分類】
G06F 12/1027 20160101AFI20231019BHJP
G06F 12/02 20060101ALI20231019BHJP
【FI】
G06F12/1027
G06F12/02 570A
(21)【出願番号】P 2020540422
(86)(22)【出願日】2019-01-23
(86)【国際出願番号】 GB2019050189
(87)【国際公開番号】W WO2019150077
(87)【国際公開日】2019-08-08
【審査請求日】2022-01-17
(32)【優先日】2018-01-31
(33)【優先権主張国・地域又は機関】GB
【前置審査】
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】バーンズ、グレイム
(72)【発明者】
【氏名】マリナス、カタリン
(72)【発明者】
【氏名】ディーコン、ウィリアム ジェイムズ
【審査官】北村 学
(56)【参考文献】
【文献】特開2002-366425(JP,A)
【文献】特開平02-015345(JP,A)
【文献】米国特許第05574877(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/1027
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
仮想タグ部及び仮想アドレス部を含む仮想アドレスを、物理タグ部及び物理アドレス部を含む物理アドレスに変換を行うためのアドレス変換回路、を備える装置であって、
前記アドレス変換回路は、前記仮想タグ部を前記物理タグ部に変換を行うためのアドレス・タグ変換回路を備え、
前記アドレス変換回路は、前記仮想アドレス部に依存して前記アドレス・タグ変換回路によって行われることになる前記変換を選択
し、
前記アドレス・タグ変換回路によって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、
装置。
【請求項2】
前記仮想アドレス部の前記最上位ビットが第1の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記仮想タグ部にマッチする前記物理タグ部を生成し、
前記最上位ビットが第2の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部を修正する
請求項
1に記載の装置。
【請求項3】
前記装置が、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、前記仮想アドレス部の前記最上位ビットの値が、前記仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものである、請求項
1又は
2に記載の装置。
【請求項4】
前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部を反転することを含む、請求項1から
3までのいずれか一項に記載の装置。
【請求項5】
前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部をインクリメントすることを含む、請求項1から
3までのいずれか一項に記載の装置。
【請求項6】
前記物理アドレスを受信し、前記物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、前記メモリ・システムが、前記物理アドレスの受信に応答して、前記物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う、請求項1から
5までのいずれか一項に記載の装置。
【請求項7】
前記所定のメモリ動作が、前記物理タグ部の、前記記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、前記メモリ・システムが、前記物理タグ部と前記ガード・タグ値がマッチ条件を満たさないことに応答して、フォルト状態を示す、請求項
6に記載の装置。
【請求項8】
前記物理タグ部の所定部分が所定値を含むとき、前記マッチ条件が、いずれかのガード・タグ値が前記マッチ条件を満たすようなmatch-all条件である、請求項
7に記載の装置。
【請求項9】
前記物理タグ部の前記所定部分が前記所定値を含まないとき、前記マッチ条件が、前記マッチ条件を満たすために、前記物理タグ部の前記所定部分と前記ガード・タグ値が同じでなければならないようなmatch-one条件である、請求項
8に記載の装置。
【請求項10】
前記物理タグ部の前記所定部分が、前記物理タグ部のビットの所定セットである、請求項
8又は
9に記載の装置。
【請求項11】
前記アドレス・タグ変換回路が、所定値を含む前記仮想タグ部の所定ビットに応答して前記物理タグ部を生成し、前記物理タグ部の前記所定部分が、前記仮想タグ部の他の所定ビットの値に関係のない前記所定値を含む、請求項
8から
10までのいずれか一項に記載の装置。
【請求項12】
前記物理タグ部の前記所定部分が、前記物理タグ部の所定ビットである、請求項
8又は
9に記載の装置。
【請求項13】
前記ガード・タグ比較が、前記物理タグ部のうちの一部について、前記記憶場所と関連付けられた前記ガード・タグ値と比較するものである、請求項
7から
12までのいずれか一項に記載の装置。
【請求項14】
前記物理タグ部の前記所定部分の前記所定値が、同じビット値の全ビットを含む、請求項
8から
13までのいずれか一項に記載の装置。
【請求項15】
前記仮想タグ部が、前記物理アドレスに含まれる少なくとも1つのビットを含み、前記メモリ・システムが、前記少なくとも1つのビットに応答して、前記記憶場所にライト・アクセスが行われるとき、前記記憶場所と関連付けられた前記ガード・タグ値の上書きを制御する、請求項
7から
14までのいずれか一項に記載の装置。
【請求項16】
仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択するステップであって、前記変換の前記選択は前記仮想アドレス部に依存する、ステップと、
前記仮想タグ部を前記物理タグ部に変換するために前記変換を行うステップと
を含
み、
前記変換が、前記仮想アドレス部の最上位ビットに依存する、
方法。
【請求項17】
ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想タグ部及び仮想アドレス部を含む仮想アドレスを、物理タグ部及び物理アドレス部を含む物理アドレスに変換を行うためのアドレス変換プログラム・ロジック
を含み、前記アドレス変換プログラム・ロジックが、
前記仮想タグ部を前記物理タグ部に変換を行うためのアドレス・タグ変換プログラム・ロジック
を含み、
前記アドレス変換プログラム・ロジックが、前記仮想アドレス部に依存して前記アドレス・タグ変換プログラム・ロジックによって行われることになる前記変換を選択
し、
前記アドレス・タグ変換プログラム・ロジックによって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、
コンピュータ・プログラム。
【請求項18】
請求項
17に記載のコンピュータ・プログラムを格納するストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
データ処理システムは、2つのアドレス指定システム、すなわち、仮想アドレスのシステム、及び物理アドレスのシステムを用いることがある。仮想アドレスは、データ処理装置によって実行されるソフトウェアによって使用されるものであり、その一方で、物理アドレスは、外部RAMなどのメモリ格納ハードウェアによって使用されるものである。アドレス変換能力は、次に、この2つのメモリ・アドレス指定システムの間で変換できるようにするため、及び特に、ハードウェアによって使用される物理アドレス・システムを使用する必要のない、このハードウェア内のメモリ格納先に実行ソフトウェアがアクセスできるようにするために、データ処理装置によって提供されることが可能である。言い換えれば、仮想から物理へのアドレス変換は、メモリ・アクセス・リクエスト(例えばロード及び格納)が仮想アドレスを使用して発行されるのでCPU上で実行されているソフトウェアに透明であることが可能であり、(メモリ・アクセスにふさわしいとき)データは、アドレス変換が行われ、仮想アドレスとは異なる物理アドレスにおいてデータがアクセスされたことをソフトウェアが認識する必要なく、メモリ・システムから返される。
【先行技術文献】
【非特許文献】
【0003】
【文献】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁
【発明の概要】
【課題を解決するための手段】
【0004】
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置を提供する。
【0005】
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うこととを含む方法を提供する。
【0006】
少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムを提供する。
【0007】
ストレージ媒体は、上述のコンピュータ・プログラムを格納することができる。ストレージ媒体は、非一時的ストレージ媒体であることが可能である。
【0008】
本技法は、以下の説明と共に読まれることになる、添付の図面に示されるような実施例を参照しながら、ほんの一例としてさらに説明される。
【図面の簡単な説明】
【0009】
【
図1】データ処理装置の実例を概略的に示す図である。
【
図2】アドレス・タグがガード・タグにマッチするかどうかをチェックすることを含むタグ・ガード式メモリ・アクセス動作の実例を示す図である。
【
図3】タグ・ガード式メモリ・アクセス動作を行う方法を示す流れ図である。
【
図4】カーネルによる使用のために1つの部分が予約され、ユーザ空間のために別の部分が予約される仮想アドレス空間を概略的に示す図である。
【
図5】アドレス変換回路及びアドレス・タグ変換回路を備えるデータ処理装置の実例を概略的に示す図である。
【
図6】仮想タグ部の物理タグ部への変換のさらなる詳細を示す1つの実例におけるデータ処理装置のいくつかの構成要素を概略的に示す図である。
【
図7】1つの実例における
図6のデータ処理装置のいくつかの構成要素を概略的に示す図である。
【
図8】仮想タグ部を物理タグ部に変換する方法を示す流れ図である。
【
図9】アドレス変換ロジックをサポートするシミュレータの実例を示す図である。
【発明を実施するための形態】
【0010】
1つの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置がある。
【0011】
物理アドレスに変換されることになる仮想アドレスは、プロセッサ・コアによる使用のために一意の仮想アドレスを定義するのに厳密に必要なものより広いビット幅を有する仮想アドレス空間において定義されることが可能である。例えば、命令セットのために64ビット・アドレス空間を使用するように構成された現代のアーキテクチャにおいて、プロセッサ・コアは、例えば64ビット・アドレス空間の下位48ビットしか使用できないように制限されることがあり、これより上位にあるビットは、何らかの方式で予約される。このアプローチは、例えば、ユーザ空間及びカーネル空間はそれぞれ、重複しない仮想アドレスの固有定義領域を有することができるので、有利である可能性がある。例えば、ユーザ空間及びカーネル空間がそれぞれ、(239=512GBの仮想アドレスをそれぞれ提供する)固有定義の39ビット・アドレス空間を含むシステムにおいて、1つのアプローチは、次に、例えば、全てのユーザ仮想アドレスが25個の先頭ゼロを含み、全てのカーネル仮想アドレスが25個の先頭1を含むように、ビットの先頭セットを用いて、ユーザ仮想アドレス及びカーネル仮想アドレスのこれらのセットにラベルを付けることである。例えば、これらは、最上位の「実」アドレス・ビットの符号拡張としてセットされることが可能である(これにより、予備部分は、全てゼロ又は全て1にセットされる)。ユーザ又はカーネルによって使用される仮想アドレスの先頭ビット部分の検査により、許可されたメモリ・アクセスが行われているかどうかの検証、及び違法なアクセスをトラップするための検証を行うことができる。
【0012】
それでも、その結果、仮想アドレスの先頭ビット部分(の少なくとも大部分)が実質的に使用されない場合、これは、別の目的のためにこのビット空間が使用される機会をもたらす。しかし、これは、さらに、仮想アドレスの上位部分において使用されるエンコーディングが、仮想アドレス空間が使用される手法によって影響を受ける可能性があるということを意味する。ユーザ空間のために予約された部分、及びカーネル空間のために予約された部分を含む仮想アドレス空間の上述の実例において、(全てゼロ又は全て1にセットされた)仮想アドレスのビットの先頭部分が、所与のアドレスがユーザ空間のために予約されているか、カーネル空間のために予約されているかを示す場合、仮想アドレスのこの上位部分のためのデフォルトのビット・エンコーディングは、したがって、ユーザ空間及びカーネル空間に対して異なる。
【0013】
さらに、仮想アドレス空間のこの上位部分が大部分、使用されていない場合、このビット空間を使用して、ソフトウェアが追加の情報をメモリ・システムに信号を送れるようにすることが有利である可能性がある。この背景において、提供された装置は、変換を行うときに受信した仮想アドレスの仮想タグ部と仮想アドレス部とを区別し、物理タグ部及び物理アドレス部を含む物理アドレスに仮想アドレスを変換する、仮想アドレスを物理アドレスに変換するためのアドレス変換回路を備える。言い換えれば、仮想アドレス部は、ソフトウェアがアクセスを要求する特定のメモリ・アドレスを示すために物理アドレス部に変換されるが、仮想アドレスのさらなる部分、すなわち仮想タグ部は、物理タグ部に別々に変換され、この物理タグ部は、次に、さらなる情報をメモリ・アドレス・システムに伝えることができる。さらに、仮想タグ部から物理タグ部へのこの変換を行うとき、本技法の装置は、アドレス・タグ変換回路によってどのような種類の変換が行われることになるかを判定するときに、仮想アドレスの内容を考慮に入れる。言い換えれば、仮想アドレスのいくつかの特徴に依存して、異なる変換が使用されることが可能である。
【0014】
アドレス・タグ変換回路によって行われることになる変換のためにこのように仮想アドレスに依存することは、様々な方式で構成されることが可能であるが、いくつかの実例において、アドレス・タグ変換回路によって行われる変換は、仮想アドレス部の最上位ビットに依存する。仮想アドレス部のこの最上位ビットの意味は、特定の実装形態に応じて、及び実際には、仮想アドレス内の仮想タグ部と仮想アドレス部の間の境界がどこにあるかについての選択に応じて、変化する可能性があるということが認識されよう。
【0015】
選択された変換が、仮想アドレス部の最上位ビットに依存する手法は、様々な形式であってよいが、いくつかの実例において、仮想アドレス部の最上位ビットが第1の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、仮想タグ部にマッチする物理タグ部を生成し、最上位ビットが第2の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部を修正する。したがって、最上位ビットが第1の値を含むとき、アドレス・タグ変換回路は、物理タグ部を生成するために仮想タグ部を修正しない。しかし、最上位ビットが第2の値を含むとき、仮想タグ部の修正は、物理タグ部を生成するために行われる。
【0016】
上述のように、仮想アドレス部の最上位ビットの意味は変化する可能性がある。しかし、いくつかの実例において、装置は、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、仮想アドレス部の最上位ビットの値は、仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものであることが可能である。これは、例えば、完全仮想アドレス空間の2つの別個且つ非重複部分が、カーネル処理及びユーザ固有処理にそれぞれ配分される上述のようなシステムの一部としてのものであることが可能であり、デフォルトで装置は、例えば、カーネル空間アドレスに対して1の連続セットで仮想アドレスの上位部分をポピュレートすること、及び、ユーザ空間アドレスに対してゼロの連続セットでこの同じ部分をポピュレートすること、を行うように設計される。本技法の背景において、これは、さらに、仮想アドレスがカーネル空間内に配分されたことが識別されたとき、仮想タグ部に変換を適用する一方で、ユーザ空間の一部として配分された仮想アドレスの一部を仮想タグ部が形成していることが識別されたとき、仮想タグ部に変換を適用しないようにアドレス変換回路が構成されることが可能であるということを意味する。仮想タグ部が、本当のアドレス自体の一部を形成しておらず、むしろ(場合によっては、特定のメモリ・アドレスに関連した、又は場合によっては、メモリ・システムへのより一般的なコマンド又は信号としての)他の情報をメモリ・システムに通信するために使用されることが可能である場合、このアプローチは、その結果として、アドレスがカーネル固有処理に属するか、ユーザ固有処理に属するかを、物理タグ部の生成が考慮できるようにする。
【0017】
この依存性は様々に構成されてよいが、いくつかの実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部を反転することを含む。このような構成は、例えば、カーネル固有アドレスに対して1の連続セットによって、及びユーザ固有アドレスに対してゼロの連続セットで、デフォルトで仮想タグ部がポピュレートされるように、装置内のアドレス指定が構成されるときに使用されることが可能である。したがって、メモリ・アドレス・システムに情報を通信するために仮想タグ部の少なくとも一部が使用されるとき、仮想タグ部のこの少なくとも一部をこのように反転すると、仮想アドレスがカーネル固有処理のものであるか、ユーザ固有処理のものであるかに関わらず、メモリ・アドレス・システムに提示された情報のエンコーディングを同じものにすることができる。
【0018】
他の実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部をインクリメントすることを含むことができる。これは、例えば、アドレス空間の可能な限り小さい値で配分されるものがある一方で、アドレス空間の最上位において他の処理に配分されるものもあるように、仮想アドレス空間内のアドレスが種々の処理に配分される構成に適用できる可能性がある。例えば、仮想アドレス空間の上述のユーザ空間/カーネル空間の境界設定において、ゼロの完全セット(例えば64ビット)を含むアドレスが、ユーザ空間に配分されることが可能である一方で、1の完全なセットを含むアドレスは、カーネル空間に配分されることが可能である。可能な限り大きいアドレス(全て1)がインクリメントされる場合、この値は、64個のゼロの連続シーケンスを生み出すためにラップ・アラウンドすることになる(264を法とすることが可能なアドレスがある)。しかし、この変換は仮想タグ部にしか適用されないので、この実例において、仮想タグ部における1の連続セットは、物理タグ部におけるゼロの連続セットに変換されることになるということに留意されたい。仮想アドレス部における1の連続シーケンスは、物理アドレス部における1の連続シーケンスのままである。
【0019】
いくつかの実例において、装置は、物理アドレスを受信し、物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、メモリ・システムは、物理アドレスの受信に応答して、物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う。したがって、物理タグ部、及びさらに言うと仮想タグ部は、メモリ・システムが所定のメモリ動作を行うために使用されることが可能である。これは、メモリ・システムについての有用な制御メカニズムをプロセッサ・コアに与える。
【0020】
所定のメモリ動作は、システム要件及び特定の実装形態に応じて多種多様な形式であることが可能であるが、いくつかの実例において、所定のメモリ動作は、物理タグ部の、記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、メモリ・システムは、物理タグ部とガード・タグ値がマッチ条件を満たさないことに応答して、フォルト(fault)状態を示す。このようにして、このような装置において、物理アドレス部によって指定された記憶場所に関連してメモリ・システムに格納されたガード・タグが提供され、物理タグ部とガード・タグ値がマッチ条件を満たすことが要求されることによって、記憶場所へのアクセスに対して制御を及ぼすことが可能になる。マッチ条件が満たされなかったことを示すフォルト状態は、様々な方式で使用されることが可能である。例えば、フォルト状態は、この記憶場所にアクセスするのを防ぐために使用されることが可能であるが、これは、フォルト状態が使用されるただ1つの手法ではなく、他の実例において、フォルト状態は、マッチ条件が満たされなかったが、依然としてアクセスを続行できることを示すために、装置の別の部分に単に信号で送られる(例えば、プロセッサ・コアに戻す)ことが可能である。このようにして、物理タグ部とガード・タグ値の比較の結論は、メモリ・アクセスを続けることができるかどうか、若しくは、その後の動作を続けることができるかどうかを制御するために使用されることが可能であり、又は、いつものようにメモリ・アクセスを続けられる間、単にレポートされることが可能である。
【0021】
このようなガード・タグ・チェックを行うようにメモリ・システムが構成されるこのような構成において、ガード・タグ比較が行われることになる特定の手法を制御するために、物理タグ部の少なくとも一部を使用することができる。いくつかの実例において、物理タグ部の所定部分が所定値を含むとき、マッチ条件は、いずれかのガード・タグ値がマッチ条件を満たすようなmatch-all条件である。したがって、事実上これにより、いずれかのガード・タグ値がマッチ条件を満たすことになり、したがって、フォルト状態が生成されなくなるので、フォルト状態を信号で送ることができなくなる。
【0022】
いくつかの実例において、物理タグ部の所定部分が所定値を含まないとき、マッチ条件は、マッチ条件を満たすために、物理タグ部の所定部分とガード・タグ値が同じでなければならないようなmatch-one条件である。このようにして、逆に、物理タグ部の所定部分は、この部分が上述の「match-all」値を含まない場合にマッチ条件を満たすことが明示的に要求される可能性がある。物理タグ部の所定部分は、したがって、マッチ条件を満たすためにガード・タグ値が含まなければならない特定の値を指定するために使用されることが可能である。例えば、これは、例えば、メモリ・アドレスが配分された特定の処理に依存して、これらのメモリ・アドレスをカテゴライズするためにシステムによって使用されることが可能であり、その結果、特定のメモリ・アドレスが配分された処理だけが、フォルト状態をトリガせずにこのメモリ・アドレスにアクセスすることができる。
【0023】
物理タグ部の所定部分は様々に定義されてよいが、いくつかの実例において、物理タグ部の所定部分は、物理タグ部のビットの所定セットである。ビットのこの所定のセットは様々に定義されてよいが、16個の種々の順列が、例えば、上述の「match-all」値として1つを残して定義されるような、また、残りが、次に、メモリ・アドレスの15個の種々のカテゴリ化をシステム内で定義できる「match-one」値として個別に使用される場合の、例えば、(ただ1つの例証となる実例を挙げると)4ビットのセットであることが可能である。一般に、物理タグ部の任意の数のビットは、このように使用されることが可能であり、これに対応して、カテゴリ化のより大きいセット又はより小さいセットを定義することができる。
【0024】
この上述の「match-all」値が、「match-one」値のセットからのメモリ・システムへの影響とは異なるということが理解される場合、アドレス・タグ変換回路は、様々な状況の下での所定値を有する物理タグ部の所定部分の生成を強制するように設計されることが可能である。例えば、いくつかの実例において、アドレス・タグ変換回路は、所定値を含む仮想タグ部の所定ビットに応答して物理タグ部を生成し、物理タグ部の所定部分は、仮想タグ部の他の所定ビットの値に関係のない所定値を含む。このように、仮想タグ部の所定ビットは、このようにして、メモリ・システムによって「match-all」比較が行われることを強制するための制御ビットとして振る舞う。
【0025】
match-all比較が行われることをトリガする物理タグ部の所定部分は様々に定義されてよいが、いくつかの実施例において、物理タグ部の所定部分は、物理タグ部の所定ビットである。match-all比較を行うべきか否かについてのメモリ・システムへの信号は、このようにして、(他の情報をメモリ・システムに通信するための物理タグ部の他のビットを潜在的に残して)物理タグ部の単一ビットだけによって通信されることが可能である。
【0026】
物理タグ部とガード・タグ値との間のガード・タグ比較は様々に構成されてよいが、いくつかの実例において、ガード・タグ比較は、物理タグ部の全ての、記憶場所と関連付けられたガード・タグ値との比較より小さいものである。
【0027】
さらに、物理タグ部の所定部分の所定値は様々に定義されてよいが、いくつかの実例において、仮想タグ部は、物理アドレスに含まれる少なくとも1つのビットを含み、メモリ・システムは、少なくとも1つのビットに応答して、記憶場所にライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御する。このようにして、仮想タグ部のビットを定義する処理は、この少なくとも1つのビットを使用して、記憶場所に対してライト・アクセスがどのように行われることになるかについてメモリ・システムに通信し、この実例において、ライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御することができる。原則として、記憶場所に対してライト・アクセスが行われるとき、一般に、定義されたガード・タグ配分を、記憶場所にアクセスする処理が遵守している場合、これは変更するべきではないので、この記憶場所と関連付けられたガード・タグが更新されるのは必須ではないが、ガード・タグの上書きの制御は、ライト・アクセスが行われるときにガード・タグ値が上書きされることを強制することによって、ライト・アクセスを行っている処理が、そのように行うことを正しく許可される追加のレベルの検証を提供する。
【0028】
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うことと、を含む方法がある。
【0029】
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムがある。
【0030】
いくつかの実例において、上述のコンピュータ・プログラムを格納するストレージ媒体があり、このストレージ媒体は、非一時的ストレージ媒体であることが可能である。
【0031】
いくつかの特定の実施例が、図を参照しながらこれから説明される。
【0032】
図1は、データ処理装置2の実例を概略的に示す。これは単に、装置の構成要素のサブセットの高レベル表現であり、装置は、示されていない他の多くの構成要素を含むことができるということが理解されよう。装置2は、命令デコーダ6によってデコードされた命令に応答してデータ処理を行う処理回路4を備える。命令デコーダ6は、命令キャッシュ8からフェッチされた命令をデコードして、処理回路4を制御するための制御信号10を生成し、それによって、命令に相当する対応処理動作を行う。処理回路4は、レジスタに書き戻されることになる結果の値を生成するために、レジスタ14に格納されている値に対する動作を行うための1つ又は複数の実行ユニットを含むことができる。例えば、実行ユニットは、算術演算若しくは論理演算を実行するための算術/論理ユニット(ALU)、浮動小数点オペランドを使用して動作を実行するための浮動小数点ユニット、及び/又は複数の独立データ要素を含むオペランドに対してベクトル演算を行うためのベクトル処理ユニットを含むことができる。処理回路は、レジスタ14とメモリ・システムとの間のデータの移送を制御するための(例えばロード/格納ユニットを含む)メモリ・アクセス回路15も含む。この実例において、メモリ・システムは、命令キャッシュ8、レベル1(Ll)データ・キャッシュ16、データと命令との間で共有されるレベル2(L2)キャッシュ17、及びメイン・メモリ18を含む。他のキャッシュ階層も可能であり、これは1つの実例に過ぎないということが理解されよう。メモリ管理ユニット(MMU:memory management unit)20は、ロード/格納ユニット15によってトリガされたメモリ・アクセスをサポートするためのアドレス変換機能を行うために提供される。MMUは、メモリ・システム16、17、18に格納されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)22を備える。各ページ・テーブルのエントリは、アドレスの対応するページに対するアドレス変換マッピングを提供することができ、ページがリード・オンリの領域であるか、可読及び書込み可能の両方であるかを指定するアクセス許可、又は、どの特権レベルがページにアクセスできるかを指定するアクセス許可などの、アクセス制御パラメータを指定することもできる。
【0033】
図2は、タグ・ガード式メモリ・アクセスの概念を概略的に示す。メモリ・システム内の記憶場所を参照するために使用される物理アドレス空間は、いくつかのブロック30に論理的に区分されることが可能であり、それぞれは、一定数のアドレス指定可能な位置を含む。簡潔さのために、
図2の実例において、各ブロック30は4つの記憶場所を含むが、他のブロック・サイズも同様に使用されることが可能である。各ブロック30は、対応するガード・タグ32と関連付けられる。一定数のブロック30と関連付けられたガード・タグは、ひとまとめにされ、物理アドレス空間内の異なる構造的にアクセス可能な記憶場所34の中、又は、構造的にアクセス可能ではない(同じ物理アドレス空間にマッピングされていない)、メイン・メモリ18内に用意された追加の格納先に格納されることが可能である。別個の構造的にアクセス可能でないストレージの使用は、場合によっては、通常のコードの実行に影響を及ぼす恐れがあり、コヒーレンス管理をより複雑にする恐れのある、ガード・タグ値をキャッシュするためのデータ・キャッシュ16、17内の空間を使用し尽くすこと、を避けるのに好ましい可能性がある。追加のタグ・キャッシュ19は、メイン・メモリ18からタグにアクセスしなければならない場合よりアクセスを高速にするために、構造的にアクセス可能でないストレージからのタグ値をキャッシュするために、マイクロ・アーキテクチャの中で提供されることが可能である。タグ格納先34が各ブロック30に対応する特定のマッピングは、ロード/格納ユニット15によって制御されることが可能であり、配線で接続されること、又はプログラム可能であることが可能である。
図2において、各タグ32は、物理アドレスのブロックと関連付けられているが、仮想メモリ・アドレス空間内の仮想記憶場所と関連付けられたガード・タグ32を提供することも可能であるはずであるが、これは、各メモリ・アクセスに対していくつかの追加のアドレス変換を必要とする可能性がある。したがって、ガード・タグ32を物理記憶場所と関連付けることによって、これは、性能を改善することができる。一般に、これは、物理アドレス空間の対応するブロック30と、ガード・タグ32が正確にどのように関連付けられるかについての、特定のマイクロ・アーキテクチャの実装形態の選択である。一般に、必要とされるものは全て、メモリの所与のブロックと関連付けられたガード・タグ32がアクセスされ、比較されることが可能であるというものである。
【0034】
したがって、タグ・ガード式メモリ・アクセスが必要なとき、(アクセスされることになるアドレス指定位置44を識別するターゲット・アドレス42と関連付けられた)アドレス・タグ40は、アドレス指定位置44を含む記憶場所30のブロックと関連付けられたガード・タグ32と比較されることが可能である。例えば、
図2において、ターゲット・アドレス42は、
図2のアドレス空間内で44とマークされたメモリ内の一定の位置B1を指す。したがって、位置B1を含む位置Bのブロックと関連付けられたガード・タグBは、ターゲット・アドレス42と関連付けられたアドレス・タグ40と比較される。
図2の一番上に示されているように、アドレス・タグ4は、ターゲット・アドレス自体の選択されたビットに応じて決定されることが可能である。特に、アドレス・タグは、アドレス指定位置44として選択されることになる特定の記憶場所を示すために使用されていないターゲット・アドレスの一部の中のビットから決定されることが可能である。例えば、いくつかのアーキテクチャにおいて、ターゲット・アドレスのビットの最上位部分は、常に、符号拡張などの一定の固定値(オール0又はオール1)を含むことができるので、アドレスは、これらの未使用ビットを任意のタグ値で上書きすることによってアドレス・タグ40でタグ付けされることが可能である。例えばプログラマ又はコンパイラによって特定のアドレス・タグ値が選択されることが可能である。アドレス・タグ及びガード・タグ32は、例えば4ビットといった、比較的少ない数のビットであることが可能なので、メモリ内及びターゲット・アドレス内の多くの空間を占有する必要がない。4ビットのタグ空間、すなわちタグの16個の可能な値を提供することは、しばしば、多くの共通タイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
【0035】
したがって、タグ・ガード式メモリ・アクセスが行われるとき、アドレス・タグ40と、アドレス指定位置44を含むブロック30と関連付けられたガード・タグ32との間で比較が行われ、これらがマッチするかどうかについて判定が行われる。
図1の実例の構成において、ロード/格納ユニット15と物理メモリ18との間のどこでも比較が行われることが可能である(及び実際は、この経路に沿って分散されることが可能である)ということに留意されたい。しかしこの実例において、比較は、簡略化のために、ロード/格納ユニット15によって比較が行われるという観点から説明される。ロード/格納ユニット15は、アドレス・タグ40とガード・タグ32がマッチしたかどうかを示すマッチ指標を生成する。例えば、このマッチ指標は、アドレス・タグ40とガード・タグ32との間にミスマッチがある場合に生成されるフォルト信号60、又は、マッチがあったかどうかを示す状態レジスタ内にある指標、又は、エラーが検出されたアドレス、及び/若しくはエラーをトリガした命令の命令アドレスを示すためのエラー・レポートに追加されたエントリ、であることが可能である。
【0036】
図3は、タグ・ガード式メモリ・アクセスをハンドリングするための流れ図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及びターゲット・アドレスを指定することができる。
図2に示されているように、いくつかのケースにおいて、アドレス・タグは、ターゲット・アドレス自体のビットのサブセットから実際に導出されることが可能であるが、他の実例において、別個のレジスタで指定されることが可能である。ステップ50において、タグ・ガード式メモリ・アクセスをトリガする命令が発生する。それに応じて、ステップ52において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44を含む、記憶場所30のブロックに関連のある、メモリ・システムに格納されたガード・タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、ステップ54において取得されたガード・タグ32と、アドレス・タグ40を比較する。ステップ58において、ガード・タグとアドレス・タグとの間でマッチが検出されたかどうかについての指標が、メモリ・アクセス回路15によって生成される(例えば、上述のマッチ/ミスマッチ・レポート指標のタイプのいずれか)。いずれかのミスマッチをレポートするために使用される正確な指標は、実装形態によって変化する可能性がある。
【0037】
図4は、実例の実施例において使用されることが可能な仮想アドレス空間60の図を概略的に示す。図は、この64ビット・アドレス空間において指定されることが可能な仮想アドレスの全範囲を示し、上位部分62が、カーネル使用のために予約されているものとして示されている一方で、下位部分64は、ユーザ空間として予約されているものとして示されている。したがって、カーネル空間における仮想アドレスは、連続した1の先頭(最上位)セットを含む一方で、ユーザ空間における仮想アドレスは、先頭ゼロの対応する連続セットを含む。図にさらに記されているように、この仮想アドレス空間への参照は2
64を法とする手法で行われ、その結果、0xFF...FFより上位の仮想アドレスへの参照をインクリメントすると、最小定義アドレス0x00...00にラップ・アラウンドするという点において、この空間において定義されることが可能な最小アドレス(0x00...00)と最大アドレス(0xFF...FF)は互いに「隣接」している。
【0038】
上述のように、プロセッサ・コアにおいて(すなわち、例えば、処理回路4において)使用される仮想アドレスは、メモリ・システムのハードウェアにおいて使用される物理アドレスに変換され、
図5は、これをサポートするために提供される実例の回路を概略的に示す。示された装置70は、タグ変換回路72、アドレス変換回路74、及び制御回路76を備える。制御回路76は、タグ変換回路72及びアドレス変換回路74の動作を制御する。必要であれば、制御回路76も、仮想アドレスと物理アドレスとの間の定義された変換を格納するページ・テーブル78内のエントリを参照する。このようにして、装置70によって受信された仮想アドレス80は、物理アドレス82に変換され、これは次に、必要に応じて関連物理アドレスにアクセスするために、メモリ・システム84にさらに渡される。仮想アドレス80は、2つの部分、すなわち仮想アドレス部86及び仮想タグ部88においてハンドリングされる。示される実例において、仮想アドレスは64ビットであり、ビット[55:0]は仮想アドレス部を形成し、ビット[63:56]は仮想タグ部を形成する。仮想タグ部の最大ビットは、代替として、例えば、64ビット・アドレスのビット[63:60]が単純に、特定の実装形態において使用されない場合、ビット[59]であるとみなされることが可能であるということを
図5が示しているということに留意されたい。このようにして、仮想アドレス部は、装置70内のアドレス変換回路74によって受信され、制御回路76の制御下で、この仮想アドレスは、当業者が見慣れているはずの手法で、対応する物理アドレスに変換される。しかし、さらに仮想タグ部88は、装置70のタグ変換回路72によって受信され、この回路は、仮想タグ部を物理タグ部92に変換することができる。この仮想タグから物理タグへの変換のさらなる詳細は、
図6、
図7、及び
図8を参照しながら下記において説明される。
【0039】
図6は、仮想タグ部を物理タグ部に変換するために提供される回路の実例を、より詳細に概略的に示す。
図5の実例におけるように、(ビット[63:56]を含む)仮想タグ部、及び(ビット[55:0]を含む)仮想アドレス部を含む仮想アドレス80が示されている。仮想タグ部内のビットは、異なる使用を行うことができ、図に示されるように、「t」とラベルを付けられた仮想タグ部([59:56])の最小4ビットは、変換される仮想タグ部を形成する。これより上位の仮想タグ部の残りのビット([63:60])は、下記においてより詳細に説明されるような異なる機能を果たす。仮想タグ部のビット「t」のセットは、ビットのこのセットのための2つの可能な経路を提供するタグ変換回路72によって受信される。これらの経路のどれが続くかは、制御回路76の制御の下、多重化装置94、96の設定によって決定される。本質的にこれは、タグ変換回路を通る直接経路、又は、構成可能な変換回路98を経由して進む経路である。示された実例において、制御回路76は、仮想アドレス部の最上位ビット(ビット[55])に基づいて変換選択を行う。このようにして、このビットがセットされるとき、変換回路98を経由する経路が選ばれるが、このビットがセットされないとき、タグ変換回路72を通る直接経路が選択される。この制御は、if VA[55]=1 PA[t]=t-bar else PA[t]=tという、論理ステートメントによって
図6の右側に示されている。言い換えれば、ビット55がセットされると、tは反転され、そうでなければ、tは、変更されずに伝搬される。しかし反転は、行われることが可能なただ1つの変換ではなく、変換回路98によって行われる変換は、構成設定100に応じて変化することが可能である。別の実例において、変換は、部分tによって表現される値のインクリメントであることが可能であり、他の変換も同様に予想できる。装置が動作する手法は、仮想タグ部内の他のビットによる影響を受ける可能性もある。
図6に示されるように、(mとラベルを付けられた)別のビットも、制御回路76によって受信される。ここで、ガード・タグ制御回路の制御の下、(例えば、
図2及び
図3を参照しながら上述されたような)タグ・ガード式メモリ・アクセスを含むメモリ・システムにおける使用のために物理アドレスが生成される実例が示され、追加ビット「m」は、このタグ・ガード式メモリ・アクセスが行われる手法に対して制御を及ぼすために使用されることが可能である。
図6に示された実例において、「m」ビットは、「match_all」又は「match_one」条件を定義するために、タグ変換回路72によって生成された4ビットのセット102がメモリ・システムによって使用されるかどうかを判定する。言い換えれば、このmビットの設定に応じて、タグ・ガード式メモリ・アクセスは、ビット102のための物理アドレス・タグと、(match_one条件における)関連メモリ・アドレスに関連のある格納されたガード・タグとの間のマッチが必要になるか、又は、ビットのいずれかのアドレス・タグのセットが(match_all条件における)マッチを満たすことが実質的にできるようになる。
【0040】
一般に、仮想タグ部の残りの部分は、図の中でラベル付けされたように「予備」とみなされてよいが、いくつかの実例において、(例えば、図の中で「c」とラベル付けされたような)この予備部分の1つ又は複数のビットは、追加として、仮想タグ部内に設定可能な1つ又は複数の追加の制御ビットを提供するために使用されることが可能であり、メモリ・システムに伝えられること、及び/又は、装置の構成設定に影響を与えることが可能である。したがって、図において(代替として破線で)示されるように、これらの予備ビットは、構成設定100を決定することができ、例えば、追加の制御ビットとしてメモリ・システムに渡される2つの追加ビット106を提供することもできる。最終的に、ガード・タグ制御回路104は、ビットのセット102の特定のビットの組合せが(物理タグの中で)受信されるとき、「match_all」条件がセットされるように一般に構成されるということに留意されたい。示された実例において、これは、全ビットがセットされるときのものである。これも、if PA[t]=0xF match_all else match_oneという、
図6の右下の方にある論理ステートメントによって示される。(
図4に示されるように)利用可能な仮想アドレス空間の一部がユーザ空間のために予約され、別の部分がカーネル空間のために予約されるシステム内で仮想アドレスが配分されることが可能であり、これが、完全(例えば64ビット)仮想アドレスの上位部分にデフォルトの意味をもたらすことを思い出すと、仮想アドレス部の最上位ビット(ビット[55])によって制御される、変換回路72によって行われる変換は、したがって、仮想アドレスがカーネル空間のために配分されたか、ユーザ空間のために配分されたかに関わらず、同じ所定の「match_all」ビットの組合せ(この実例では0xF)がメモリ制御システムに提供されることが可能であるということを定めることができる。他の実例の構成において、5ビットの物理タグが使用されることが可能であり、ここで、1つのビットは、「match_all」比較又は「match_one」比較が行われるべきかどうかを示すことに充てられ、他の4つのビットは、「match_one」が構成される場合、この比較のために使用される。
【0041】
図7は、
図6に示された回路のいくつかの別の概略図であり、ここで、制御回路76による変換回路98の制御に対する変形物を示す。制御回路76は、(「OV」(オーバーライド)とラベル付けされた)仮想タグ部の特定のビットを受信し、これは、変換回路98によって特定のビット(又はビットの組合せ)が物理タグ部内に生成されることを強制するために使用されることが可能である。これは、例えば、match_all比較が行われることを強制するために使用されることが可能である。しかし原則として、タグ・ガード式メモリ・アクセスの一部としてのものであろうと、別のメモリ動作に関するものであろうと、変換回路98によって物理タグ部の中に生成された強制されたビット(又はビットの組合せ)によって、いずれかの目的が果たされることが可能であり、仮想タグ部内のオーバーライド・ビット(OV)は、これをトリガするために使用されることが可能である。
【0042】
1つの実例において、1つのアプローチが行われ、「match_all」物理タグ・エンコーディングとして定義される、仮想アドレス部の最上位ビットに基づく仮想タグ・エンコーディングのうちの多くても1つについて選択が行われる。この「match_all」比較が行われるかどうかは、他のコンテキストの構成に基づくことも可能である。例えば、これは、全てのユーザ・タグが「match_one」であるように構成されることが可能であり、ユーザ・タグ「0」が「match_all」であるように構成されることが可能であり、全てのカーネル・タグが「match_one」であるように構成されることが可能であり、カーネル・タグ「1111」がmatch allであるように構成されることが可能である。
【0043】
図8は、1つの実例において実行される一連のステップを示す流れ図である。ステップ120において、変換されることになる新しい仮想アドレスが受信される。ステップ122において、(例えば、仮想タグ部内の予備ビットを用いて)変換回路に適用することになる特定の構成があるかどうかが判定され、この場合、これは、ステップ124において発生する。ステップ126において、仮想タグ部に適用されることになる変換は、仮想アドレスの仮想アドレス部に基づいて(例えば、その最上位ビットに基づいて)決定される。選択された変換は、次に、ステップ128において、(対応する物理タグ部を生成するために)仮想タグ部の一部に適用される。ステップ130において、ビット「m」が1であるかどうかが判定され、これは、match_all比較が行われることになるかどうか(ステップ132)、又はmatch_one比較(ステップ134)が行われることになるかどうかを判定する。最終的に、ステップ136において、物理アドレス・タグ部におけるビットの生成されたセットが、所定の特殊な値に対応するかどうかが判定され、この実例において、この値は、1の連続セット(0xF)である。この場合、フローはステップ140に進み、ここで、これがメモリ・システム内で特殊な動作をトリガし、その一方で、そうではない場合、フローはステップ138を介して進み、ここで、「通常の」タグ・ガード式メモリ・アクセスが行われ、比較は、ステップ130において判定されたように、match_all又はmatch_oneとしてチェックされる。フローは次に、ステップ120に復帰する。
【0044】
図9は、使用されることが可能なシミュレータの実装形態を示す。前に説明された実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実行しているが、コンピュータ・プログラムの使用によって実行される、本明細書において説明される実施例による命令実行環境を提供することもできる。このようなコンピュータ・プログラムは、これらが、ハードウェア・アーキテクチャのソフトウェア・ベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。様々な種類のシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。典型的には、シミュレータの実装形態は、シミュレータ・プログラム210をサポートする、任意選択としてホスト・オペレーティング・システム220を実行するホスト・プロセッサ230上で実行することができる。いくつかの設計では、ハードウェアと、提供された命令実行環境、及び/又は同じホスト・プロセッサ上で提供される複数の別個の命令実行環境との間にシミュレーションの複数のレイヤがある可能性がある。歴史的に、適度な速さで実行するシミュレータの実装形態を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換又は再使用のために、別のプロセッサにネイティブのコードを、実行するという要望があるときなどの一定の状況において正当化されることがある。例えば、シミュレータの実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能を命令実行環境に提供すること、又は、異なるハードウェア・アーキテクチャと典型的に関連付けられた命令実行環境を提供することができる。シミュレーションの全体像は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁において示されている。
【0045】
特定のハードウェア構造又は特徴を参照しながら実施例が前に説明された範囲まで、シミュレートされた実施例において、適切なソフトウェア構造又は特徴によって同等の機能が提供されることが可能である。例えば、コンピュータ・プログラム・ロジックとしてシミュレートされた実施例において、特定の回路が実装されることが可能である。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、ソフトウェア・データ構造としてシミュレートされた実施例において実装されることが可能である。前述の実施例において参照されたハードウェア要素の1つ又は複数がホスト・ハードウェア(例えばホスト・プロセッサ230)上にある設計において、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを使用することができる。
【0046】
シミュレータ・プログラム210は、(非一時的媒体であることが可能な)コンピュータ可読ストレージ媒体212に格納され、シミュレータ・プログラム210によってモデル化される、ハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じ、(アプリケーション、オペレーティング・システム、及びハイパーバイザを含むことができる)ターゲット・コード200へのプログラム・インターフェース(命令実行環境)を提供することができる。このようにして、ターゲット・コード200のプログラム命令は、シミュレータ・プログラム210を使用して、命令実行環境内から実行されることが可能であり、これにより、上述の装置2のハードウェア特徴、及び、特にタグ変換回路72を、実際には備えていないホスト・コンピュータ230が、これらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム210は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック214を含むことができ、特に、仮想アドレス・タグ部を物理アドレス・タグ部に変換するためのアドレス変換ロジック216を含むことができる。このようにして、シミュレータ・プログラム210は、ガード・タグとアドレス・タグの比較を行うため、ガード・タグとアドレス・タグとの間のなんらかのミスマッチが検出されたかどうかをレポートするためのメモリ・アクセス・プログラム・ロジックを含むこともできる。また、シミュレータ・プログラム110は、ハードウェア実施例がタグをセットするはずの方式に対応する方式でガード・タグを設定するための命令を含むタグ設定プログラム・ロジックを含むことができる。
【0047】
簡単に全体を要約すると、装置は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって行われることになる変換は、仮想アドレスに依存して選択される。
【0048】
本出願において、単語「~ように構成された(configured to...)」は、装置の要素が、定義された動作を実行できる構成を備えることを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の設計又は手法を意味する。例えば、装置は、定義された動作を行う専用のハードウェアを備えることができ、又は、プロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされることが可能である。「ように構成された(Configured to)」は、定義された動作を行うために任意の方式で装置の要素が変更される必要があることを意味しない。
【0049】
例証的な実施例が、添付の図面を参照しながら本明細書において詳細に説明されてきたが、本発明はこれらの正確な実施例に限定されず、添付の特許請求の範囲によって定義されるような本発明の範囲を逸脱することなく当業者によって様々な変更、追加、及び修正がもたらされる可能性があるということが理解されよう。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行われることが可能である。