(57)【要約】      （修正有）【課題】ページ属性サポートのある仮想アドレスから物理アドレスへの変換のためのシステム、方法、装置を提供する。【解決手段】システムは、仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する。アドレス変換ハードウェアにおいて、仮想メモリ・ポインタを、ページ・テーブル情報に基づいて物理的なメモリ・アドレスに変換して命令の結果の一部を生成し、命令の結果として、メモリ階層構造にアクセスすることなく、物理的なメモリ・アドレスおよび一つまたは複数のページ属性を一つまたは複数のプロセッサ・レジスタ中にロードする。【選択図】図５
2014067445.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにおいて、仮想メモリ・ポインタをメモリ階層構造中に記憶されているあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を、命令を提供する電子アクセス可能媒体から受領する段階と；
アドレス変換ハードウェアにおいて、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成する段階と；
前記命令の結果として、前記メモリ階層構造にアクセスすることなく、前記物理的なメモリ・アドレスおよび一つまたは複数のページ属性を一つまたは複数のプロセッサ・レジスタ中にロードする段階とを有し、前記一つまたは複数のページ属性はページ状態を示す、
機械実装される方法。
【請求項２】
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む段階を有する、
請求項１記載の方法。
【請求項３】
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るために少なくとも一つのページ・テーブル項目を読む段階を有する、
請求項１記載の方法。
【請求項４】
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１記載の方法。
【請求項５】
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を専用レジスタに記憶する段階と；
少なくとも部分的にマイクロコードを使って前記専用レジスタにアクセスする段階とを有する、
請求項１記載の方法。
【請求項６】
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を読み取り戻りバスを介して返す段階を有する、
請求項１記載の方法。
【請求項７】
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が、該命令を仮想マシン・マネージャから受領することを含み；
さらに、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が、ホスト物理メモリ・アドレスを返すことを含む、
請求項１記載の方法。
【請求項８】
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が、該命令をゲスト・オペレーティング・システムから受領することを含み；
さらに、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が、ゲスト物理メモリ・アドレスを返すことを含む、
請求項１記載の方法。
【請求項９】
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が：
前記仮想メモリ・ポインタを物理的なメモリ・アドレスに変換する非同期的な命令を受領することを含み、該命令は該命令についてのコンテキストを定義するオペランドを含んでいる、
請求項１記載の方法。
【請求項１０】
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記仮想メモリ・ポインタに対応するページがメモリ中にあるかどうかを、ページ・テーブル情報に基づくことなく判定する段階を有する、
請求項１記載の方法。
【請求項１１】
メモリ装置およびプロセッサを有するシステムであって、前記プロセッサは：
仮想メモリ・ポインタをメモリ階層構造中に記憶されているあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を、命令を提供する電子アクセス可能媒体から受領する論理と；
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成するアドレス変換ハードウェアと；
前記物理的なメモリ・アドレスおよびページ状態を示す一つまたは複数のページ属性を含む前記命令の結果を記憶する一つまたは複数のプロセッサ・レジスタとを有しており、前記命令の前記結果は、前記メモリ階層構造にアクセスすることなく生成される、
システム。
【請求項１２】
前記アドレス変換ハードウェアが：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む論理を有する、
請求項１１記載のシステム。
【請求項１３】
前記アドレス変換ハードウェアが：
TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにページ・テーブル項目を読む論理を有する、
請求項１１記載のシステム。
【請求項１４】
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１１記載のシステム。
【請求項１５】
前記命令を受領する前記論理が、該命令を仮想マシン・マネージャから受領する論理を含み；
さらに、前記物理的なメモリ・アドレスがホスト物理メモリ・アドレスである、
請求項１１記載のシステム。
【請求項１６】
電子アクセス可能媒体であって、
装置によって実行されると、該装置をして、
該装置において、仮想メモリ・ポインタをメモリ階層構造中に記憶されているあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を、命令を提供する当該電子アクセス可能媒体から受領する段階と；
アドレス変換ハードウェアにおいて、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成する段階と；
前記命令の結果として、前記メモリ階層構造にアクセスすることなく、前記物理的なメモリ・アドレスおよびページ状態を示す一つまたは複数のページ属性を前記装置中の一つまたは複数のレジスタ中にロードする段階とを行わせる、
命令を具備する電子アクセス可能媒体。
【請求項１７】
前記装置によって実行されると、該装置をして、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する段階を行わせる命令が、前記装置をして：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む段階を行わせる、
請求項１６記載の電子アクセス可能媒体。
【請求項１８】
前記装置によって実行されると、該装置をして、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する段階を行わせる命令が、前記装置をして：
前記TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにページ・テーブル項目を読む段階を行わせる、
請求項１６記載の電子アクセス可能媒体。
【請求項１９】
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１６記載の電子アクセス可能媒体。
【請求項２０】
前記装置によって実行されると、該装置をして、仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する段階を行わせる命令が、前記装置をして該命令を仮想マシン・マネージャから受領する段階を行わせ；
さらに、前記命令は、前記装置によって実行されると、該装置をして、前記命令の結果として、ホスト物理メモリ・アドレスおよび前記一つまたは複数のページ属性を返す段階を行わせる、
請求項１６記載の電子アクセス可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は概括的にはコンピューティング・システムの分野に、より詳細にはページ属性（page  attributes）サポートのある仮想アドレスから物理アドレスへの変換のためのシステム、方法および装置に関する。
【背景技術】
【０００２】
仮想メモリは、プロセッサに利用可能な実際の物理的メモリによって提供されるよりも大きな範囲のメモリをプログラマーがプログラムおよびデータのために使用することを許容する。さらに、仮想メモリは、複数のプログラムが互いに並列に、メモリ・マップとともにロードされることを許容する。メモリ・マップは他のプログラムの存在や、ロードされる位置に関係ない。コンピューティング・システムは、プログラムの仮想アドレス（IA32アーキテクチャでは線形アドレスとしても知られる――本記載では、「線形アドレス（linear  address）」やLAは「仮想アドレス」と同義に使われる）を本当のハードウェア記憶アドレス（たとえば物理的なメモリ・アドレス）に、アドレス変換ハードウェアを使ってマッピングする。ハードウェアは、メモリ内のテーブルのツリー（tree  of  tables）を、アドレス変換のための入力データとして使う。ツリーのルートは、ページ・テーブル・ツリー（page  table  tree）中の最初のテーブルの物理アドレスを保持するレジスタをポイントしている。そのようなレジスタの一例は、IA32アーキテクチャにおけるCR3である。ページ・テーブル項目（PTE:  page  table  entry）はベースおよびインデックスを使ってアドレス指定される。ベースはレジスタまたは前のテーブル・メモリ・ポインタ（table  memory  pointer）から取られる。インデックスは、線形アドレスの一部を使っている。PTEは、サブツリー（sub  tree）の残りがメモリ内に存在しない場合はそのページを、さもなくばメモリ・ポインタおよびのちに論じる他の情報を含んでいる。メモリ・ポインタは、データ（アプリケーションまたはオペレーティング・システムに属するデータ）または当該ページ・テーブル（page-table）の別のレベルのいずれかを含みうるメモリ内のページについてのものである。後者の場合、線形アドレスの別の部分が、記述されているものと同様の方式でテーブルへのインデックスとするために使われる。アドレスがアプリケーション・ページのためであれば、物理アドレスは、（インデックスするために使われなかった）アドレスの残りのビットを、ページ・テーブル項目から取得されたページのベース・アドレスに加えることによって構築される。また、いくつかの実施形態は、いくつかの変換方式（たとえば異なるテーブル・ツリーのインデックス付け構造）をレジスタ中で記述されるとして例示することがある。この記述を単純化するため、CR3レジスタのそのような情報部分を考えるが、それは一つまたは複数の他のレジスタに保持されてもよい。
【０００３】
アドレス変換情報のほかに、これらのテーブルは、アクセス権読み取り、書き込みもしくは実行、メモリ中のデータの存在、キャッシング・ポリシー指標、ページ修正状態などといった情報を含む。場合によっては、ページ・テーブルは異なる大きさのページを含み、より大きなページはページ・テーブル・ツリーのより低いレベルでポイントされる（ポインタを含んでいる別のページをポイントするのではなく）ことがある。ポイントされるページの大きさは、ページ・テーブル・ツリーの属性として記憶される（典型的にはそのデータ・ページをポイントするレベルに）。
【０００４】
物理アドレスを取得するために、ページ・テーブル項目がルート（IA32におけるCR3）から始まって再帰的な仕方で読み込まれ、ページのプロパティが取得され、マージされる。IA32プログラマーズ・レファレンス・マニュアル（たとえばボリューム3A）は、物理アドレス取得の従来式のアプローチの一例を与えている。このプロセスは、いくつかのメモリ・アクセス動作を必要とし、ページ・テーブル・ハンドリング（Page-Table  Handling）・ハードウェアまたはuCodeシーケンスによって実装される。
【０００５】
しばしば物理的なメモリ・アドレスを取得するためにソフトウェアが要求される。そのような場合、エミュレートされた完全なテーブル・ウォークか、あるいはオペレーティング・システムが課すテーブル設定の制限に基づく短縮されたヒューリスティックのいずれかが使われる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
トランスレーション・ルックアサイド・バッファ（TLB:  translation  look  aside  buffer）は、あるアドレス（またはある範囲のアドレス）への相続くアクセスがデータ構造のウォーキングを回避でき、以前の変換（translation）の結果を使用できるよう、以前の変換の結果を保持するキャッシュである。従来のアドレス変換命令は、典型的には、いかなる追加的情報も与えることなく、オペランドとして与えられた線形アドレスについて、物理的なメモリ・アドレスを返す。
本発明の実施形態が、限定ではなく例として、付属の図面の図に図示されている。図面において、同様の参照符号は似た要素を指す。
【課題を解決するための手段】
【０００７】
本発明の諸実施形態は概括的には、ページ属性サポートのある仮想アドレス（線形アドレスを称されることになる）から物理アドレスへの変換のためのシステム、方法および装置に向けられる。いくつかの実施形態では、システムは線形メモリ・ポインタを、あるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する。システムは前記物理的なメモリ・アドレスおよび一つまたは複数のページ属性を返しうる。
【図面の簡単な説明】
【０００８】
【図１】本発明のある実施形態に基づいて実装されたコンピューティング・システムの選択された諸側面を図示する高レベルのブロック図である。
【図２】本発明のある実施形態に基づく、アドレス変換ハードウェアの選択された諸側面を図示するブロック図である。
【図３】本発明のある実施形態に基づく、拡張されたページ・テーブルを有するページ・ツリーの選択された諸側面を図示するブロック図である。
【図４】本発明のある実施形態に基づく、ページ・テーブル項目の選択された諸側面を図示するブロック図である。
【図５】本発明のある実施形態に基づく、ページ属性サポートのある、線形アドレスから物理アドレスへの変換のための方法の選択された諸側面を図示する流れ図である。
【発明を実施するための形態】
【０００９】
図１は、本発明のある実施形態に基づいて実装されたコンピューティング・システムの選択された諸側面を図示する高レベルのブロック図である。システム１００は、アプリケーション１０２、カーネル１０４およびハードウェア１０６を含む。カーネル１０４はハードウェア１０６を管理し、アプリケーション１０２とハードウェア１０６との間の通信を提供する。耐故障性およびセキュリティを提供するため、カーネル１０４はアプリケーション１０２より高い特権レベル（すなわちリング0）で動作してもよい。いくつかの実施形態では、カーネル１０４はLOAD  PHYSICAL  ADDRESS〔物理アドレスをロード〕命令（LPA）１０８を含む。LPA１０８のための入力パラメータは、メモリへのほとんど任意のポインタを含みうる。LPA１０８の出力パラメータは、前記ポインタに対応する物理的なメモリ・アドレス（PA:  physical  memory  address）および一つまたは複数のページ属性を含む。図２ないし図５を参照してのちにさらに述べるように、LPA１０８はタッチ動作および／または仮想化技術をサポートしてもよい。
【００１０】
テーブル１は、本発明のいくつかの実施形態に基づくLPAxx命令の選択された諸側面を示している。いくつかの実施形態では、LPAxx命令は、入力として線形アドレス（たとえばm8）を取り、そのメモリ位置の物理アドレスおよび一つまたは複数のページ属性を出力する。32ビット・モードにおいて、物理アドレスがレジスタより大きいことがありうる場合には、命令はアドレス出力のために二つのレジスタを有することがある（32ビットより大きな物理アドレス空間をサポートするため）。64ビット・モードでは、単一の出力レジスタが十分でありうる。いくつかの実施形態では、前記命令の基本構造は読み取りセマンティクスをサポートする。ページが書き込み可能にされているかどうかを直接検査するために、書き込みセマンティクスがサポートされてもよい（たとえば、後述するトラップ議論を参照）。
【００１１】
【表１】
2014067445.tif 000003
【００１２】
いくつかの実施形態では、レガシー・モードで動作するとき、LPAxx命令はDS:(E)SI中のバイト・アドレスのアドレスをEDX:EAXに移し、EBXがアクセス許可およびページ・サイズを保持する。64ビット・モードでは、LPAxxは(R|E)SI中のバイト・アドレスのアドレスをEDX:EAX（またはr64レジスタ）に移し、EBXがアクセス許可およびページ・サイズを保持する。代替的な諸実施形態では、異なるレジスタが使用されてもよく、異なるモードがサポートされてもよい。
【００１３】
いくつかの実施形態では、LPAxx命令は、たとえばカーネル・レベルで実行されるプロテクトされた命令である。アプリケーション・レベルでのこの命令の実行は、ユーザー・アプリケーションの仮想化効果（たとえば、ユーザー・アプリケーションは自分が走っている実際のアドレスを意識しない）を破ることにつながりうる。いくつかの実施形態では、LPAxx命令は、カーネル・コードがユーザー・コンテキストとともに動作する同期的なオペレーティング・システム・コールにおいて動作する（IA32では、これは特定のCR3の値を指す）。代替的な諸実施形態では（のちにさらに論じるように）、LPAxx命令は非同期的なオペレーティング・システム（OS）・コールにおいて動作する。いくつかの実施形態では、結果として得られる物理アドレスがページ・テーブルと同期されていることを保証するために、LPAxxの使用は、オペレーティング・システムに存在する等価なSW動作と同様である。
【００１４】
入力パラメータは、メモリをポイントするほとんどいかなる有効な方法でもよい。たとえば、この命令に線形アドレスを指定するより多くの柔軟性を与えるために、m8の値またはr/m8の値が代替的に使用されうる。アドレス変換ハードウェア（たとえば図２に示されているシステム２００）は、返される結果は異なるが、その命令のために読み取り（または書き込み）が要求されているかのように、アドレス変換動作を実行しうる。ページ・ウォーク段階を通ることなく直接、トランスレーション・ルックアサイド・バッファ（たとえば図２に示されるTLB２０４）内のアドレス情報が使用されてもよい。
【００１５】
いくつかの実施形態では、出力パラメータは物理アドレス（PA:  physical  address）（たとえば長さ64ビットまで）および一つまたは複数のページ属性（たとえば、表２に示される属性のうちの一つまたは複数）である。PAは、単一の64ビット・レジスタ中に（たとえばIA32eモードで動作しているとき）、あるいは暗黙的に定義されるレジスタ対に（たとえばIA32モードで、または任意的にIA32e互換モードで動作しているとき）記憶されてもよい。前記一つまたは複数の属性は、暗黙的に定義されるレジスタに記憶されてもよい。代替的な諸実施形態では、その情報を専用のレジスタ（単数または複数）またはあるメモリ位置に記憶するなど、のちの使用のためにソフトウェアに当該データを利用可能にする他の手段が使われる。
【００１６】
表１に示されるように、いくつかの実施形態では、二つ（またはそれ以上）の型のLPAxx命令がありうる。たとえば、いくつかの実施形態はLPA命令と、タッチ命令（touch  instruction）を伴うLPA命令とを含みうる。LPA命令は上記のように、入力としてLAを受領し、PAおよび一つまたは複数のページ属性を返す。タッチ命令を伴うLPAは、そのページがメモリ中に存在しているかどうかを（ページ・テーブルの最後のレベルの状態に従って）判定する。最後のページが存在していない場合、タッチ命令を伴うLPAは、フォールトを生成する。このフォールトは、LPARDについてはRDによって生成されるフォールトと、またはLPAWRについてはWRによって生成されるフォールトと同じである。これは、標準的なフォールト・ハンドラがそのフォールト・ケースの手当てをする（たとえば、ページ・フォールトの場合、そのページをメモリに持ってくる、あるいは書き込みタッチ（write  touch）が読み取り専用ページを書き込み可能にされた形に変換する）ことを許容する。タッチ命令を伴うLPAは、メモリ中の当該データにアクセスすることなくあるページの状態を判定する。これはメモリ階層構造へのアクセスを省き、多くの場合、キャッシュ・ミスをなくす。代わりに、状態判定は、ページ・テーブル項目（PTE）の状態に基づく。
【００１７】
図２は、本発明のある実施形態に基づく、アドレス変換ハードウェアの選択された諸側面を図示するブロック図である。アドレス変換ハードウェア２００は、メモリ要求ユニット（MRU:  memory  request  unit）２０２、トランスレーション・ルックアサイド・バッファ（TLB）２０４、ページ・ミス・ハンドラ（PMH:  page  miss  handler）２０６、メモリ・サブシステム（MSU:  memory  sub  system）２０８、物理アドレス戻りレジスタ（PARR:  physical  address  return  register）２１０およびマルチプレクサ（MUX）２１２を含む。代替的な諸実施形態では、アドレス変換ハードウェア２００はより多くの要素、より少ない要素および／または異なる要素を含む。
【００１８】
MRU２０２は、線形アドレス（たとえば線形アドレス２１４）を含むメモリ要求（たとえばロードまたは記憶）を発する。TLB２０４は、すでに変換された線形アドレスの物理アドレスおよび属性を保持するキャッシング機構（これは複数層のTLBを含んでいてもよい）である。以前に変換されたアドレスのすべてがTLBに保持されるのではなく、どのアドレスを保持するかを決めるためにさまざまなキャッシング・ヒューリスティックが適用される。ページ・テーブルが更新されるときは、影響を受ける項目がTLBから、直接的なソフトウェア制御によって（ソフトウェア管理されたTLB整合性）、あるいはハードウェアによって（ハードウェア管理されたTLB整合性）パージされる。LA２１４についての変換がTLB２０４内に見出される場合、TLBが物理的なメモリ・アドレス（PA）を直接出力する。PA（たとえばPA２１６）は、MSU２０８から直接データを取得するために使用されることができる。TLB２０４が前記アドレスを含まない場合、LAがPMH２０６に送られる（２１８）。PMH２０６はページ・ウォークを実行し、該ページ・ウォークが成功裏に完了した場合には、PA（２２０）をTLB２０４に返す。PMHウォークが失敗するとき（たとえばそのデータが、ページ・テーブルのどのレベルについてもメモリ中に存在していない）、オペレーティング・システムに与えられる例外が生成される。いくつかの実施形態でのLPA動作については、該動作は、例外を生成することなくそのフォールトがどこで発生したかを示す状態をもって終了する。返される情報についてのさらなる詳細は後述する。MSU２０８は、メモリに直接アクセスすることまたはメモリ・アクセス遅延を短縮するために使われる一つまたは複数のレベルのキャッシュにアクセスすることからなっていてもよいメモリ階層構造を表す。MSU２０８は物理アドレス２１６に記憶されているデータを戻りバス（return  bus）を介してデータ・レジスタに返す（２２２）。
【００１９】
いくつかの実施形態では、PAを（場合によりTLB２０４からまたはPMH２０６から）得ることに加えて、前記命令に応答して一つまたは複数のページ属性が得られる。PAおよび関連付けられたページ属性は、LPAパラメータの一部としてプロセッサ・レジスタに返される。いくつかの実施形態では、PAおよび関連付けられたページ属性は、物理アドレス戻りレジスタ内に入れられる（たとえばPARR２１０）。これはPAおよび／または属性情報および動作完了を示す状態の保持専用のレジスタである。任意的に、プロセッサは、PARRからデータを読み、それを汎用レジスタに入れるためにマイクロコードを使ってもよい。ある代替的な実施形態では、PARRは他のプロセッサ命令によって直接アドレス指定されることができる。別の代替的な実施形態では、PAおよび関連付けられたページ属性はプロセッサに、読み取り戻りバス（たとえば２２４）を介して返されてもよい。さらに別の諸実施形態では、PAおよび関連付けられたページ属性をプロセッサに返すために種々の技法が使用されうる。
【００２０】
表２は、本発明のいくつかの実施形態において、PAとともに返されうる選択されたページ属性のリストを提供する。代替的な諸実施形態では、より多くの属性、より少ない属性および／または異なる属性が返されてもよい。
【００２１】
【表２】
2014067445.tif 000004
【００２２】
たいていの場合、例外は、通常のメモリ・アクセス（読み取りまたは書き込み）についてと実質的に同じ方法で扱われる。しかしながら、いくつかの実施形態では、次の例外があてはまる。LPAxxがあるデータ・ページへのアクセスに失敗する場合、命令は、0に等しいアドレスを返し、Pビットはクリアされる。アドレス変換がページ・テーブルのどれかにアクセスすることに失敗する場合、「変換ページ・フォールト」状態がセットされて、フォールトおよび該フォールトのレベルが示される。タッチ命令を伴うLPAxxに関しては、当該ページへのアクセスが失敗する場合にページ・フォールトが取られる（たとえば、ページ・フォールト例外を生成する）。いくつかの実施形態では、失敗が、「変換ページ・フォールト」状態を使ってフラグ付けされているページ・テーブルのいずれかのアクセスについてであれば、例外は取られない。
【００２３】
いくつかの実施形態では、LPAxx命令は、向上したページ・テーブル（EPT:  enhanced  page  table）をもつ仮想化技術（VT:  virtualization  technology）をサポートする。VT環境で動作するとき、アドレスの変換は、プロセッサ内の状態ビットによって示される、要求者がゲストOSであるかホストOS（または仮想マシン・マネージャ[virtual  machine  manager]――VMM）であるかに部分的に依存してもよい。いくつかの実施形態では、要求者がホストOSであれば、LPAxx命令はホストPA（HPA:  host  PA）を返す。しかしながら、要求者がゲストOSであれば、LPAxx命令はゲストPA（GPA:  guest  PA）を返しうる。図３は、本発明のある実施形態に基づく、VT環境におけるアドレス変換の選択された諸側面を示すブロック図である。
【００２４】
ページ・テーブル・ツリー３００は、拡張されたページ・テーブル（EPT）３０２〜３０６を含む。EPT３０２〜３０６は、ホストOSに属するということを除いて、通常のテーブル（たとえば３０８および３１０）と同様である。EPTは、EPTベース・レジスタによってポイントされるテーブルのツリーを使って、GPAをHPAに変換する。この動作は、ゲスト・ページ・テーブル・ウォークの一部としてゲスト・ページ・テーブルへのアクセスを含む変換を必要とする任意のGPAについて実行される。ゲストLA（GLA:  guest  LA）３１２の一部およびCR3（３１４）はEPT３０２内のある位置を参照する。EPT３０２のほうは、ページ・ディレクトリ３０８中のある位置をポイントする。ページ・ディレクトリ３０８およびGLA３１２の別の部分を使って、EPT３０４中のある位置が参照されうる。このプロセスは、GPA３１６に到達するまで、ほとんど何レベルでも続けられうる。EPT３０６はGPA３１６をHPA３１８にマッピングする。いくつかの実施形態では、VT環境で動作するとき、LPAxx命令は、最後のゲスト・ページ・テーブルに記憶されているページのGPAそのもの（たとえばGPA３１６）と、一つまたは複数の関連付けられたページ属性とを返す。
【００２５】
いくつかの実施形態では、TLBはHPAのみを保持する。これは、TLBミスの場合に行われるように、GPAを返すためにページ・テーブルをウォークすることを要求する。代替的な諸実施形態では、TLBは、TLBからGPAを取得することを可能にする、GPAおよびそのページの属性を保持する追加的なフィールドを含んでいる。
【００２６】
図４は、本発明のある実施形態に基づく、ページ・テーブル項目（PTE）の選択された諸側面を図示するブロック図である。いくつかの実施形態では、LPAxx命令の出力パラメータはPTE（たとえばPTE４００）またはTLB（たとえばTLB２０４）中の同様の項目から得られる。たとえば、PAアドレスは、フィールド４０２から得られてもよく、関連付けられたページ属性はフィールド４０４〜４２０から得られてもよい。フィールド４０４〜４２０に示されるページ属性は表２で上に論じてある。代替的な諸実施形態では、PTE４００はより多くのフィールド、より少ないフィールドおよび／または異なるフィールドを含んでいてもよい。
【００２７】
図５は、本発明のある実施形態に基づく、ページ属性のサポートがある、線形アドレスから物理アドレスへの変換の方法の選択された諸側面を図示する流れ図である。処理ブロック５０２を参照すると、アドレス変換論理（たとえば、図２に示されるアドレス変換論理２００）はあるメモリ・ポインタ（たとえばLA）をPAに変換する命令（たとえばLPAxx命令）を受領する。アドレス変換論理はそのメモリ・ポインタをPAに、メモリ・アクセスを実行することなく変換する。その代わり、出力パラメータは、TLB項目からまたはPTEから得られる。処理ブロック５０６を参照すると、PAおよび一つまたは複数の関連付けられたページ属性がプロセッサに返される（たとえば、データをPARRに入れることによって、あるいはデータを読み取り戻りバスを介して返すことによって）。「メモリ・アクセスを実行することなく」の句は、変換を実行するためにページ・テーブル情報に頼ることを言っている。ページ・テーブル情報は、ページ・テーブル項目（たとえばTLB中の）によって、すなわちメモリから提供されてもよい。
【００２８】
いくつかの実施形態では、LPAxx命令は、同期的なコールに加えて非同期的なコールをもサポートする。非同期的なコールとは、変換のために使われている現在のCR3に対応しないアプリケーションからのLPAxx命令へのコールをいう。いくつかの実施形態では、LPAxx命令は、ページ・ツリーに、ページ・テーブル・ウォークをどこから始めるかを告げる追加的なパラメータ（その非同期的なコールを行ったアプリケーションに対応するCR3値）を含む。多くの場合、TLB内のデータは、非同期的なコールの間は使うことができない。そのデータは別のプログラムに対応するからである。よって、多くの場合、PAおよび一つまたは複数の関連付けられたページ属性を得るために、ページ・テーブル・ウォークが実行される。他の場合には、あるTLB項目がどのアドレス空間（CR3）と関連付けられているかを同定するタグが設けられる。これは、非同期的なコールにおけるTLB項目の使用を可能にする。
【００２９】
本発明の諸実施形態の諸要素は、機械実行可能な命令を記憶するための機械可読媒体として提供されてもよい。機械可読媒体は、これに限られないが、フラッシュ・メモリ、光ディスク、コンパクト・ディスク‐読み取り専用メモリ（CD-ROM）、デジタル・多用途／ビデオ・ディスク（DVD）ROM、ランダム・アクセス・メモリ（RAM）、消去可能なプログラム可能な読み取り専用メモリ（EPROM）、電気的に消去可能なプログラム可能な読み取り専用メモリ（EEPROM）、磁気式もしくは光学式カード、伝搬媒体または電子的な命令を記憶するために好適なその他の種別の機械可読媒体を含みうる。たとえば、本発明の諸実施形態は、コンピュータ・プログラムとしてダウンロードされてもよい。該コンピュータ・プログラムは、リモート・コンピュータ（たとえばサーバー）から要求元のコンピュータ（たとえばクライアント）に、搬送波またはその他の伝搬媒体で具現されるデータ信号によって、通信リンク（たとえばモデムもしくはネットワーク接続）を介して、転送されてもよい。
【００３０】
本明細書を通じて「一つの実施形態」または「ある実施形態」という言及は、その実施形態との関連で記述されるある特定の特徴、構造または特性が本発明の少なくとも一つの実施形態に含まれることを意味することは理解しておくべきである。したがって、本明細書のさまざまな部分における「ある実施形態」または「一つの実施形態」または「ある代替的な実施形態」への二つ以上の言及が必ずしもみな同じ実施形態を指しているのではないことを強調し、認識しておくべきである。さらに、特定の特徴、構造または特性が、本発明の一つまたは複数の実施形態において適宜組み合わされてもよい。
【００３１】
同様に、本発明の諸実施形態の以上の記述において、さまざまな特徴が時に単一の実施形態、図面またはその説明にまとめられているが、それはさまざまな本発明の側面の一つまたは複数の理解を助ける開示の流れをよくするためであることは理解しておくべきである。こうした開示方法は、特許請求される主題が、各請求項において明示的に記載されているよりも多くの特徴を必要とするという意図を反映したものと解釈すべきではない。むしろ、付属の請求項が反映するように、本発明の側面は、単一の以上の開示される実施形態の全特徴よりも少ないものに存する。よって、詳細な説明に付属する請求項はここに、本詳細な説明に明示的に組み込まれるものである。
【００３２】
本願の原出願の分割直前の特許請求の範囲を記載しておく。
〔請求項１〕
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を機械可読媒体から受領する段階と；
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成する段階と；
前記命令の結果として、前記物理的なアドレスに記憶されたデータにアクセスすることなく、前記物理的なメモリ・アドレスおよび一つまたは複数のページ属性を返す段階とを有し、前記ページ属性はページ状態を示す、
機械実装される方法。
〔請求項２〕
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む段階を有する、
請求項１記載の方法。
〔請求項３〕
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るために少なくとも一つのページ・テーブル項目を読む段階を有する、
請求項１記載の方法。
〔請求項４〕
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１記載の方法。
〔請求項５〕
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を専用レジスタに記憶する段階と；
少なくとも部分的にマイクロコードを使って前記専用レジスタにアクセスする段階とを有する、
請求項１記載の方法。
〔請求項６〕
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を読み取り戻りバスを介して返す段階を有する、
請求項１記載の方法。
〔請求項７〕
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が、該命令を仮想マシン・マネージャから受領することを含み；
さらに、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が、ホスト物理メモリ・アドレスを返すことを含む、
請求項１記載の方法。
〔請求項８〕
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が、該命令をゲスト・オペレーティング・システムから受領することを含み；
さらに、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す前記段階が、ゲスト物理メモリ・アドレスを返すことを含む、
請求項１記載の方法。
〔請求項９〕
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する前記段階が：
前記仮想メモリ・ポインタを物理的なメモリ・アドレスに変換する非同期的な命令を受領することを含み、該命令は該命令についてのコンテキストを定義するオペランドを含んでいる、
請求項１記載の方法。
〔請求項１０〕
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する前記段階が：
前記仮想メモリ・ポインタに対応するページがメモリ中にあるかどうかを、ページ・テーブル情報に基づくことなく判定する段階を有する、
請求項１記載の方法。
〔請求項１１〕
メモリ装置；
プロセッサならびに
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を前記メモリ装置から受領する段階と；
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成する段階と；
前記命令の結果として、前記物理的なアドレスに記憶されたデータにアクセスすることなく、前記物理的なメモリ・アドレスおよび一つまたは複数のページ属性を返す段階であって、前記ページ属性はページ状態を示す、段階とを行うための前記プロセッサ上で実行可能な論理
を有するシステム。
〔請求項１２〕
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する論理が：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む論理を有する、
請求項１１記載のシステム。
〔請求項１３〕
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する論理が：
TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにページ・テーブル項目を読む論理を有する、
請求項１１記載のシステム。
〔請求項１４〕
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１１記載のシステム。
〔請求項１５〕
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する論理が、該命令を仮想マシン・マネージャから受領する論理を含み；
さらに、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す論理が、ホスト物理メモリ・アドレスを返す論理を含む、
請求項１１記載のシステム。
〔請求項１６〕
装置によって実行されると、該装置をして、
仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令をメモリから受領する段階と；
前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換して前記命令の結果の一部を生成する段階と；
前記命令の結果として、前記物理的なアドレスに記憶されたデータにアクセスすることなく、前記物理的なメモリ・アドレスおよびページ状態を示す一つまたは複数のページ属性を返す段階とを行わせる、
命令を具備する機械アクセス可能媒体。
〔請求項１７〕
前記装置によって実行されると、該装置をして、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する段階を行わせる命令が、前記装置をして：
前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにトランスレーション・ルックアサイド・バッファ（TLB）項目を読む段階を行わせる、
請求項１６記載の機械アクセス可能媒体。
〔請求項１８〕
前記装置によって実行されると、該装置をして、前記仮想メモリ・ポインタを、ページ・テーブル情報に基づいて前記物理的なメモリ・アドレスに変換する段階を行わせる命令が、前記装置をして：
前記TLBが前記物理的なメモリ・アドレスを含んでいない場合、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を得るためにページ・テーブル項目を読む段階を行わせる、
請求項１６記載の機械アクセス可能媒体。
〔請求項１９〕
前記一つまたは複数の属性が：
存在ビット、
読み取り／書き込みビット、
ユーザー／管理者ビット、
アクセス・ビット、
ダーティー・ビット、
グローバル・フラグ、
実行無効化ビット、
ページ・サイズ指標および
変換ページ・フォールト
のうちの少なくとも一つを含む、請求項１６記載の機械アクセス可能媒体。
〔請求項２０〕
前記装置によって実行されると、該装置をして、仮想メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領する段階を行わせる命令が、前記装置をして該命令を仮想マシン・マネージャから受領する段階を行わせ；
さらに、前記装置によって実行されると、該装置をして、前記命令の結果として、前記物理的なメモリ・アドレスおよび前記一つまたは複数のページ属性を返す段階を行わせる命令が、前記装置をして、ホスト物理メモリ・アドレスを返す段階を行わせる、
請求項１６記載の機械アクセス可能媒体。
【符号の説明】
【００３３】
１００  システム
１０４  カーネル
１０６  ハードウェア（たとえばプロセッサ、メモリ、I/O装置など）
１０８  LPA（LOAD  PHYSICAL  ADDRESS命令）
２００  アドレス変換ハードウェア／システム
２０２  メモリ要求ユニット（MRU）
２０４  トランスレーション・ルックアサイド・バッファ（TLB）
２０６  ページ・ミス・ハンドラ（PMH）
２０８  メモリ・サブシステム（MSU）
２１０  物理アドレス戻りレジスタ（PARR）
２１２  マルチプレクサ（MUX）
２１４  線形アドレス要求
２１６  物理アドレス
２１８  線形アドレス要求
２２０  物理アドレス
２２２  戻りバス
２２４  読み取り戻りバス
３０２  拡張されたページ・テーブル
３０４  拡張されたページ・テーブル
３０６  拡張されたページ・テーブル
３０８  IA-32  ページ・ディレクトリ
３１０  IA-32  ページ・テーブル
３１２  ゲスト線形アドレス（GLA）
３１４  CR3
３１６  ゲスト物理アドレス
３１８  ホスト物理アドレス
４００  ページ・テーブル項目（PTE）
４０２  物理アドレス
４０４  存在ビット（P）
４０６  読み取り／書き込みビット（R/W）
４０８  ユーザー／管理者ビット（U/S）
４１０  アクセス・ビット（A）
４１２  ダーティー・ビット（D）
４１４  グローバル・フラグ（G）
４１６  実行無効化ビット（EXB）
４１８  ページ・サイズ
４２０  変換ページ・フォールト
５０２  メモリ・ポインタをあるメモリ位置についての物理的なメモリ・アドレスに変換する命令を受領
５０４  メモリ・ポインタを、ページ・テーブル情報に基づいて物理的なメモリ・アドレスに変換
５０６  物理的なメモリ・アドレスおよび一つまたは複数のページ属性を返す
【図１】
2014067445.tif 000005
【図２】
2014067445.tif 000006
【図３】
2014067445.tif 000007
【図４】
2014067445.tif 000008
【図５】
2014067445.tif 000009