(57)【要約】【解決手段】  仮想メモリページングメカニズムを含むプロセッサ。仮想メモリページングメカニズムは、プロセッサ上で動作しているオペレーティングシステムが、第１のサイズ及び第２のサイズのページを用いることを可能にし、第２のサイズは第１のサイズより大きい。メカニズムは、更に、オペレーティングシステムが第１のサイズの２つ以上の連続的なページを含むスーパーページを用いることを可能にする。スーパーページのサイズは第２のサイズより小さい。プロセッサは、更に、各スーパーページに含まれるページの各々に対して別個のエントリを有するページテーブルを含む。オペレーティングシステムは、単一の仮想アドレスを用いて各スーパーページへアクセスする。メカニズムは、トランスレーションルックアサイドバッファＴＬＢにおける単一のエントリを、ＴＬＢにおけるエントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページに対応する一連のページを備えているメモリの領域を参照するものとして解釈する。【選択図】図１
2012532381.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
前記プロセッサ上で動作しているオペレーティングシステムが、第１のサイズのページ及び前記第１のサイズより大きい第２のサイズのページを用いることと、前記第１のサイズの２つ以上の連続的なページを含む一連のページを備えているスーパーページであってそのサイズは前記第２のサイズより小さいスーパーページを形成することと、を可能にするように構成される仮想メモリページングメカニズムと、
各スーパーページに含まれる前記２つ以上の連続的なページの各々に対して別個のエントリを含むページテーブルと、を備えたプロセッサ。
【請求項２】
前記仮想メモリページングメカニズムは、前記プロセッサ上で動作している前記オペレーティングシステムが単一の仮想アドレスを用いて各スーパーページへアクセスすることを可能にするように更に構成される請求項１のプロセッサ。
【請求項３】
スーパーページの前記サイズは６４ＫＢである請求項１のプロセッサ。
【請求項４】
トランスレーションルックアサイドバッファ（ＴＬＢ）を更に備えた請求項２のプロセッサであって、前記仮想メモリページングメカニズムは、前記ＴＬＢにおける単一のエントリを、前記ＴＬＢにおける前記エントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページに対応する一連のページを備えているメモリの領域を参照するものとして解釈するように構成されるプロセッサ。
【請求項５】
前記仮想メモリページングメカニズムは、前記ページテーブルにおけるエントリを、前記ページテーブルにおける前記エントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページの一部を備えているメモリの領域を参照するものとして解釈するように更に構成される請求項４のプロセッサ。
【請求項６】
前記スーパーページ有効標識はソフトウエア設定可能である請求項４のプロセッサ。
【請求項７】
前記仮想メモリページングメカニズムは、前記ページテーブルにおける当該少なくとも２つのエントリの少なくとも１つが欠落しており又は前記ページテーブルにおける前記少なくとも２つのエントリの他における対応する属性に無矛盾でない属性を含んでいることを検出することに応答してページフォールトを発行するように更に構成される請求項２のプロセッサ。
【請求項８】
前記仮想メモリページングメカニズムは、前記プロセッサ上で動作している第１のオペレーティングシステム及び第２のオペレーティングシステムの一方又は両方でのスーパーページの使用を同時に且つ独立に可能にするように更に構成される請求項１のプロセッサ。
【請求項９】
前記第１のオペレーティングシステムは、第１のページテーブルを用いてゲストアドレス空間内の仮想アドレスをゲストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるゲストオペレーティングシステムであり、前記第２のオペレーティングシステムは、第２のページテーブルを用いてゲストアドレス空間内の物理アドレスをホストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるホストオペレーティングシステムである請求項８のプロセッサ。
【請求項１０】
前記仮想メモリページングメカニズムは、前記オペレーティングシステムが２つ以上の異なるスーパーページサイズのスーパーページを用いることを可能にするように更に構成され、各スーパーページサイズは前記第１のサイズの２つ以上の連続的なアラインされたページのサイズに等しく、各スーパーページサイズは前記第２のサイズよりも小さい請求項１のプロセッサ。
【請求項１１】
プロセッサにおける仮想メモリページングのための方法であって、
前記プロセッサ上で動作しているオペレーティングシステムが第１のサイズのページ及び前記第１のサイズより大きい第２のサイズのページを用いることとを可能にすることと、
前記オペレーティングシステムが前記第１のサイズの２つ以上の連続的なページを含む一連のページを備えているスーパーページであってそのサイズは前記第２のサイズより小さいスーパーページを形成することを可能にすることと、
各スーパーページに含まれる前記２つ以上の連続的なページの各々に対して別個のエントリをページテーブル内に含ませることと、を備えた方法。
【請求項１２】
前記プロセッサ上で動作している前記オペレーティングシステムが単一の仮想アドレスを用いて各スーパーページへアクセスすることを可能にすることを更に備えた請求項１１の方法。
【請求項１３】
スーパーページの前記サイズは６４ＫＢである請求項１１の方法。
【請求項１４】
ＴＬＢにおける単一のエントリを、前記ＴＬＢにおける前記エントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページに対応する一連のページを備えているメモリの領域を参照するものとして解釈することを更に備えた請求項１２の方法。
【請求項１５】
前記ページテーブルにおけるエントリを、前記ページテーブルにおける前記エントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページの一部を備えているメモリの領域を参照するものとして解釈することを更に備えた請求項１４の方法。
【請求項１６】
前記スーパーページ有効標識はソフトウエア設定可能である請求項１４の方法。
【請求項１７】
前記ページテーブルにおける当該少なくとも２つのエントリの少なくとも１つが欠落しており又は前記ページテーブルにおける前記少なくとも２つのエントリの他における対応する属性に無矛盾でない属性を含んでいることを検出することに応答してページフォールトを発行することを更に備えた請求項１２の方法。
【請求項１８】
前記プロセッサ上で動作している第１のオペレーティングシステム及び第２のオペレーティングシステムの一方又は両方でのスーパーページの使用を同時に且つ独立に可能にすることを更に備えた請求項１１の方法。
【請求項１９】
前記第１のオペレーティングシステムは、第１のページテーブルを用いてゲストアドレス空間内の仮想アドレスをゲストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるゲストオペレーティングシステムであり、前記第２のオペレーティングシステムは、第２のページテーブルを用いてゲストアドレス空間内の物理アドレスをホストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるホストオペレーティングシステムである請求項１８の方法。
【請求項２０】
前記オペレーティングシステムが２つ以上の異なるスーパーページサイズのスーパーページを用いることを可能にすることを更に備えた請求項１１の方法であって、各スーパーページサイズは前記第１のサイズの２つ以上の連続的なアラインされたページのサイズに等しく、各スーパーページサイズは前記第２のサイズよりも小さい方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータプロセッサに関し、より特定的には仮想メモリ環境におけるページトランスレーション(page translation)に関する。
【背景技術】
【０００２】
最新のコンピュータシステムは、仮想メモリを活用して性能を高めている。例えば、メモリを効率的に使用する一方でハードディスク記憶装置のより大きな容量を生かすために、プロセッサは多くの場合に仮想アドレシングメカニズムを備えており、このメカニズムにおいては、仮想アドレスは、メモリの物理サイズよりも大きな仮想空間を参照することができる。仮想アドレシングメカニズムは、通常は、プロセッサハードウエアとオペレーティングシステムソフトウエアの組み合わせによって実行される。実際上は、大きな仮想アドレス空間が複数のページに分割されるのが通例である。プロセッサが仮想メモリアドレスに対して読み出し又は書き込みする場合はいつでも、専門のプロセッサハードウエアが当該アドレスを物理メモリ内にあるページ（しばしばフレームと称される）上の物理ロケーション又はディスク上に記憶されているページ（又はフレーム）への参照のいずれかへとトランスレートする(translates)。参照がディスク上に記憶されているフレームへのものである場合、オペレーティングシステムは、当該フレームを物理メモリ内へ移動させて、必要であれば最近アクセスされていないフレームと交換する。
【０００３】
ページング(paging)を用いるアドレストランスレーションは、典型的には、ページトランスレーションテーブルとして知られる一連のデータ構造を伴う。仮想アドレスを物理アドレスへとトランスレートするために、仮想アドレスの低位ビットは物理アドレスへ直接的にマッピングされ得る一方で、仮想アドレスの高位ビットは、ページトランスレーションテーブル内へ索引を付けて物理アドレスの高位ビットを発見するために用いられ得る。階層的なページテーブル実装においては、プロセッサは仮想アドレスの高位ビットを１つ以上のビットフィールドに区分することができ、各ビットフィールドはページトランスレーションテーブルの異なる階層レベルに対応している。仮想アドレスを物理アドレスへとマッピングしているページトランスレーションテーブルにおけるエントリは、一般的にはページテーブルエントリ（ＰＴＥ）と称されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想アドレストランスレーションの速度は、トランスレーションルックアサイドバッファ(translation lookaside buffer)（ＴＬＢ）として知られるＣＰＵキャッシュ内でＰＴＥをキャッシュすることによって高められ得る。ＴＬＢはＰＴＥを記憶するための固定数のスロットを有しているであろう。ＴＬＢエントリへアクセスすることは、一般的にはページトランスレーションテーブルを用いてアドレストランスレーションを行うよりも速いので、ＴＬＢのサイズ及びカバー範囲(coverage)は全体的なシステム性能の重要な指標になり得る。ＴＬＢのカバー範囲は各ＴＬＢエントリによって表されるページのサイズに依存する。一般的なコンピュータアーキテクチャは、仮想メモリページサイズの粗い選択を提供するのみである。例えば周知のｘ８６−６４アーキテクチャは、４ＫＢ、２ＭＢ、及び１ＧＢのページサイズを提供する。ページサイズが小さくなると、ＴＬＢの有効容量が減少すると共にＴＬＢアクセスのミスレートが増大する。残念なことに、大量のデータセットを必要としていないアプリケーションに対して、極めて大きなページサイズがしばしばメモリの非効率な割り当てを結果としてもたらしてしまう。上述の考察を考慮すると、効率的なメモリ使用を維持しつつＴＬＢミスレートを改善し且つ／又はＴＬＢ有効容量を増大することによってシステム性能を改善するシステム及び方法が求められるであろう。
【０００５】
上述の考察に加えて、改良されたＴＬＢミス率及び容量がいくらかは高められた能力を提供し得る一方で、高められた能力が導入されたならばいつでもプロセッサが既存のソフトウエアを実行し続けることが可能にすることが望ましいであろう。従って、古くなってしまったページングモードをサポートし続けるプロセッサ強化が望ましいであろう。
【課題を解決するための手段】
【０００６】
仮想メモリページングメカニズムを含むプロセッサの種々の実施形態が開示される。仮想メモリページングメカニズムは、プロセッサ上で動作しているオペレーティングシステムが、第１のサイズ及び第２のサイズのページを用いることを可能にする。第２のサイズは第１のサイズより大きい。仮想メモリページングメカニズムは、更に、第１のサイズの２つ以上の連続的なページを含む一連のページを備えているスーパーページをオペレーティングシステムが形成することを可能にする。スーパーページのサイズは第２のサイズより小さい。プロセッサは、更に、各スーパーページに含まれる２つ以上の連続的なページの各々に対して別個のエントリを含むページテーブルを含む。仮想メモリページングメカニズムは、オペレーティングシステムが単一の仮想アドレスを用いて各スーパーページへアクセスすることを可能にする。プロセッサは更にトランスレーションルックアサイドバッファ（ＴＬＢ）を含む。仮想メモリページングメカニズムは、ＴＬＢにおける単一のエントリを、ＴＬＢにおけるエントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、スーパーページに対応する一連のページを備えているメモリの領域を参照するものとして解釈する。１つの実施形態では、スーパーページのサイズは６４ＫＢである。
【０００７】
１つの実施形態では、ＴＬＢにおけるエントリに関連するスーパーページ有効標識がアサートされていることを検出することに応答して、仮想メモリページングメカニズムは、スーパーページの一部を備えているメモリの領域を参照するものとしてページテーブルにおけるエントリを解釈する。更なる実施形態においては、スーパーページ有効標識はソフトウエア設定可能である。仮想メモリページングメカニズムは、ページテーブルにおける少なくとも２つのエントリの少なくとも１つが欠落しており又はページテーブルにおける少なくとも２つのエントリの他における対応する属性に無矛盾でない属性を含んでいることを検出することに応答してページフォールトを発行する。
【０００８】
更なる実施形態においては、仮想メモリページングメカニズムは、プロセッサ上で動作している第１のオペレーティングシステム及び第２のオペレーティングシステムの一方又は両方でのスーパーページの使用を同時に且つ独立に可能にする。更なる実施形態においては、第１のオペレーティングシステムは、第１のページテーブルを用いてゲストアドレス空間内の仮想アドレスをゲストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるゲストオペレーティングシステムであり、第２のオペレーティングシステムは、第２のページテーブルを用いてゲストアドレス空間内の物理アドレスをホストアドレス空間内の物理アドレスへとトランスレートするように構成される仮想化された環境におけるホストオペレーティングシステムである。更なる実施形態においては、仮想メモリページングメカニズムは、オペレーティングシステムが２つ以上の異なるスーパーページサイズのスーパーページを用いることを可能にする。この実施形態においては、各スーパーページサイズは第１のサイズの２つ以上の連続的なアラインされたページのサイズに等しく、各スーパーページサイズは第２のサイズよりも小さい。
【０００９】
これらの及び他の実施形態は、以下の説明及び添付の図面を考慮することによって明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】図１は拡張されたページサイズを組み込み得るコンピュータシステムの１つの実施形態の一般化されたブロック図である。
【００１１】
【図２】図２はシステムにおいてプロセッサによって用いられ得るアドレストランスレーションシステムの１つの実施形態を示す図である。
【００１２】
【図３】図３はページテーブルにおけるエントリ及びＴＬＢにおけるエントリのメモリへのマッピングの１つの実施形態を示す図である。
【００１３】
【図４】図４は拡張されたページサイズのためのサポートの状態を表示する制御レジスタ内に含まれるビットフィールドの１つの実施形態を示す図である。
【００１４】
【図５】図５は特定モデル用レジスタ（ＭＳＲ）内に含まれるビットフィールドの１つの実施形態を示す図である。
【００１５】
【図６】図６はオペレーティングシステムがスーパーページを定義するために用いることができるデータ構造エントリの１つの実施形態を示す図である。
【００１６】
【図７】図７はスーパーページにアクセスするためにプロセッサによって実行され得るページングプロセスの１つの実施形態を示す図である。
【００１７】
【図８】図８はスーパーページをサポートしているプロセッサにおいてページテーブルから読み出されるスーパーページエントリの有効性をチェックするために用いられ得るプロセスの１つの実施形態を示す図である。
【００１８】
【図９】図９はスーパーページを用いるようにプロセッサを構成するために用いられ得るプロセスの１つの実施形態を示す図である。
【００１９】
本発明は種々の修正及び代替的形態を許容する一方で、具体的な実施形態は、例示として図面に示され、またここに詳細に説明される。但し、図面及びそれに対する詳細な説明は、開示される特定の形態に本発明を限定することを意図しているのではなく、むしろ逆に、本発明は、添付の特許請求の範囲によって画定される本発明の精神及び範囲内に含まれる全ての修正、均等なもの、及び代替を網羅するものである。
【発明を実施するための形態】
【００２０】
図１は拡張されたページサイズを組み込み得るコンピュータシステム１００の１つの実施形態の一般化されたブロック図である。プロセッサ１１０は、周辺機器１２０及び物理メモリ１３０に結合されるものとして示されている。周辺機器１２０は、記憶デバイス１７０、ネットワークインタフェース１７４、及び取り外し可能媒体１７７を含んでいてよい。図示される実施形態は汎用コンピュータシステムの典型である。その一方で、図示される構成要素、特にプロセッサ１１０は、制御システム、電化製品、自動車、民生用電子製品、等の広範な装置において見出され得るし、あるいは計算を具現化し且つデータを記憶し又は処理する任意のデバイスにおいて実際に見られるであろう。
【００２１】
プロセッサ１１０は、アドレストランスレーション機能を提供することによって仮想メモリをサポートし得る任意の種類のプロセッサの例示である。プロセッサ１１０は、Ｉ／Ｏインタフェース１６０に結合され且つレベル２（Ｌ２）キャッシュ１５０に結合される１つ以上のコア１４０を含んでいてよい。コア１４０は、Ｌ２キャッシュ１５０に結合されるレベル１（Ｌ１）キャッシュ１４５を含んでいてよい。物理メモリ１３０は、典型的にはＲＡＭを備えていてよいが、プロセッサ１１０に結合され且つプロセッサ１１０上での実行を処理するためのデータへの比較的に速やかなアクセスを提供する任意の種類のデータ記憶装置であってもよい。対照的に、記憶デバイス１７０は、一般的には物理メモリ１３０よりも大量のデータをより長いアクセス時間で記憶することができる。一般的な記憶デバイスは、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ、又は任意の他の適切なデータ記憶デバイスを含む。
【００２２】
コンピュータシステム１００の使用目的に応じて、種々の他の周辺機器１２０がＩ／Ｏインタフェース１６０を介してプロセッサ１１０に結合されてよい。例えば、周辺機器１２０は、キーボード、モニタ、スピーカ、ディスクドライブ、入力／出力ポート等を含み得る。メモリ１３０、周辺機器１２０、及びプロセッサ１１０の間での相互接続は、アドレスバス及びデータバスを含んでいてよく、そして共有バス、スイッチング構造、又はコンピュータシステム内で構成要素同士を結合するための任意の他の適切な相互接続システムを備えていてよい。代替的な実施形態では、コンピュータシステム１００は、２レベルより多い又は少ないキャッシュを含んでいてよい。
【００２３】
動作の間、コア１４０が初めてデータのページへのアクセスを要求すると、対応するデータは記憶デバイス１７０からメモリ１３０へと移動させられてよい。コア１４０は次いで、ページの１つ以上の部分（例えばキャッシュライン）をメモリ１３０からＬ１キャッシュ１４５へと移動させてよい。追加的なキャッシュラインが必要になるにつれ、それらもまたＬ１キャッシュ１４５へ移動させられてよい。Ｌ１キャッシュ１４５に十分なスペースがなくなると、キャッシュラインはＬ２キャッシュ１５０へと移動（退去）させられてよい。同様に、Ｌ２キャッシュ１５０が埋まるにつれ、キャッシュラインはメモリ１３０へ移されてよく、そしてメモリ１３０が埋まるにつれ、ページは記憶デバイス１７０へ移されてよい。特定のキャッシュが埋まるときにページのどの部分を移動させるかを決定するための技術は当該分野でよく知られている。これらの技術の各々は、キャッシュ置換ポリシー又はキャッシュアルゴリズムと称されることがある。
【００２４】
図２はシステム１００においてプロセッサ１１０によって用いられ得るアドレストランスレーションシステム２００の１つの実施形態を示している。システム２００は、トランスレーションルックアサイドバッファ（ＴＬＢ）２１０、ページテーブル２２０、及びディスク２３０を含む。１つの実施形態においては、ＴＬＢ２１０及びページテーブル２２０はプロセッサ１１０内に組み込まれていてよく、そしてディスク２３０は記憶デバイス１７０と同様の任意の種類の記憶デバイスであってよい。動作の間、プロセッサ１１０は、仮想メモリロケーションに対して読み出し又は書き込む命令を実行しているプロセスからの所望のページに対する仮想アドレス２４０を維持することができる。
【００２５】
プロセッサ１１０は次いで、ＴＬＢ２１０におけるエントリを参考にすることによって、仮想アドレス２４０に対応する物理アドレスを識別することを試みてよい。仮想から物理へのトランスレーションがＴＬＢ２１０内に存在する場合には、ＴＬＢヒットと称され、フレーム番号を含む物理アドレス２５０がプロセッサ１１０へ返送されてよい。仮想から物理へのトランスレーションがＴＬＢ２１０内に存在しない場合には、ＴＬＢミスと称され、プロセッサ１１０は次いで、ページテーブル２２０におけるエントリを参考にすることによって、仮想アドレス２４０に対応する物理アドレスを識別することを試みてよい。仮想から物理へのトランスレーションがページテーブル２２０内に存在する場合には、ページテーブルヒットと称され、トランスレーションエントリがＴＬＢ２１０へ書き込まれてよい。続いてプロセッサ１１０は、所望のエントリが今や見つかっているであろうＴＬＢ２１０におけるエントリを参考にすることによって、アクセスを再試行してよい。仮想から物理へのトランスレーションがページテーブル２２０内に存在しない場合には、ページテーブルミスと称され、プロセッサ１１０はページフォールト(page fault)を宣言してよい。ページフォールトにより、所望のページがディスク２３０から検索されてよく、また対応するエントリがページテーブル２２０へ書き込まれてよい。ページテーブル２２０が更新された後に、プロセッサ１１０は、ＴＬＢ２１０におけるエントリを参考にすることによって、アクセスを再試行してよい。ＴＬＢ２１０は未だ更新されていないので、ＴＬＢミスが生じるであろう。しかし、プロセッサ１１０は、ページテーブルヒットが生じているであろうページテーブル２２０におけるエントリを参考にしてよく、そしてトランスレーションエントリがＴＬＢ２１０へ書き込まれてよい。続いてプロセッサ１１０は、所望のエントリが今や見つかっているであろうＴＬＢ２１０におけるエントリを参考にすることによって、アクセスを再試行してよい。所望のページがディスク２３０から検索し得ない場合、例えば所望のアクセスが無効である場合、セグメンテーションフォールト(segmentation fault)又は他の同様のエラーが、プロセッサ１１０上で実行中のオペレーションシステム等のソフトウエアによって宣言されると共に対処されてよい。
【００２６】
ページテーブル２２０におけるエントリは、任意の種類のフォーマットを用いて仮想アドレスを物理アドレスへとトランスレートしてよい。一般的に言えば、仮想アドレスは、ページテーブル２２０内への索引として用いられる幾つかのビットフィールドと、ページテーブル２２０によって識別されるページ内へのオフセットとして用いられる一連の低位ビットとを含む。種々の実施形態において、ページテーブル２２０は１つ以上のレベルを含んでいてよく、各レベルは仮想アドレスの特定のビットフィールドによって索引付けられる。従って、仮想アドレスにおける高位ビットフィールドのフォーマットは、ページのサイズ及びページテーブル２２０内のレベル数に依存する。ページテーブルレベルの数にかかわりなく、ページテーブルエントリ及び対応するＴＬＢエントリは、物理フレーム番号を含む物理アドレスへと仮想アドレスをトランスレートするために用いられ得る。
【００２７】
仮想アドレシングをサポートするプロセッサは、種々の動作モードにおいて種々の長さの仮想アドレスを用いてよい。そのような動作モードは、オペレーティングシステム及びプロセッサが仮想アドレス内のビットフィールドを解釈する方法を定義してよい他、物理アドレスへの仮想アドレスのトランスレーションにおいてビットフィールドが用いられる方法を定義してよい。１つの実施形態においては、プロセッサ１１０は、ｘ８６アーキテクチャと互換性のあるプロセッサの動作モードとの後方互換性(backward compatibility)を維持する。
【００２８】
ＴＬＢのカバー範囲を増大し且つＴＬＢミスの確率を低減する１つの手法は、ＴＬＢにおける各エントリによって代表されるページのサイズを増大することである。プロセッサ１１０は、以下に説明される制御レジスタ設定を介して、拡張されたページサイズを用いるように構成され得る。図３はページテーブル３１０におけるエントリ及びＴＬＢ３５０におけるエントリのメモリ３３０へのマッピングの１つの実施形態を示している。図示される実施形態においては、ページテーブルエントリは４ＫＢページに対応していてよく、そしてＴＬＢエントリは、もっと大きなページサイズ、例えば６４ＫＢページに対応していてよい。ページテーブル３１０は、ページテーブルエントリ３０１〜３１８等を含んでいてよい。ＴＬＢ３５０はエントリ３５１〜３１７等を含んでいてよい。メモリ３３０はページ３３１〜３４８等を含んでいてよい。エントリ３０１〜３１８の各々は４ＫＢページに対応していてよい。図示されるように、エントリ３０１はページ３３１に対応し、エントリ３０２はページ３３２に対応し、以下同様である。エントリ３５１〜３５７の各々は６４ＫＢに対応していてよい。例えば、図示されるように、エントリ３５２は、ページ３３１〜３４６を含むメモリの領域に対応しており、この領域はスーパーページ(superpage)と称されることがある。スーパーページは、ここで用いられるように、２つ以上の連続的な凝集されアラインされた(contiguous, aggregated, aligned)４ＫＢページを含むメモリの領域を参照してよい。加えて、便宜上且つ一般性を失うことなく、以下の議論では、Ｌ１キャッシュ、Ｌ２キャッシュ、又はメモリ内にある物理フレームの任意の部分は、記憶デバイス内にあるフレームとは対照的にメモリ内にあるものとして参照され得る。プロセッサ１１０及びその上で実行中のオペレーティングシステムは、種々のデータ構造を用いて、スーパーページがサポートされているか否か、スーパーページが有効にされているか否か、どのＴＬＢエントリが小さい（例えば４ＫＢ）ページに対応するか、及びどのＴＬＢエントリが以下に説明されるようなスーパーページに対応するかを決定することができる。
【００２９】
図４は拡張されたページサイズのためのサポートの状態を表示する制御レジスタ４００内に含まれるビットフィールドの１つの実施形態を示している。制御レジスタ４００は、ｘ８６アーキテクチャを組み込んでいるプロセッサ内の制御レジスタ４（ＣＲ４）に対応していてよい。ＣＲ４レジスタは、プロセッサの能力を定義する幾つかのビットを含む。図示されるように、レジスタ４００は、スーパーページに関連する２つのビット４０１及び４０２を含む。ビット４０１はページサイズ拡張又はＰＳＥビットと称され、ページが４ＫＢであるか若しくは標準的な大きなページサイズである４ＭＢであるか、又は物理アドレス拡張（ＰＡＥ）が有効にされている場合における２ＭＢであるかを表示する。ビット４０１がアサートされていない場合には、４ＫＢのページサイズが有効である。加えてレジスタ４００は拡張されたページングモード（ＸＰＭ）サポートビットと称されるビット４０２を含み、ビット４０２は、セットされている場合に、拡張されたモードのページサイズがサポートされていることを表示する。
【００３０】
１つの実施形態では、プロセッサ１１０は単一の拡張されたページサイズをサポートしてよい。例えば、６４ＫＢの拡張されたページサイズがサポートされ得る。代替的な実施形態においては、２つ以上の拡張されたページサイズがサポートされてよい。どの拡張されたページサイズがサポートされるかを決定するために、種々のメカニズムが提供され得る。以下の欄は１つのそのようなメカニズムを説明している。
【００３１】
図５は特定モデル用レジスタ(model-specific register)（ＭＳＲ）５００内に含まれるビットフィールドの１つの実施形態を示している。ＭＳＲ５００は、プロセッサによってサポートされる拡張されたモードのページサイズを定義する幾つかのビットを含む。１つの実施形態では、図示されるように、レジスタ５００はビット５０１〜５０８を含む。拡張されたページサイズが、上述したようなビット４０１及び４０２によって表示されるようにサポートされているとすると、サポートされるページサイズは、表１に示されるようなビット５０１〜５０８の値によって示される。
【００３２】
【表１】
2012532381.tif 000003
【００３３】
１つの実施形態では、レジスタ５００は読み出し専用レジスタであってよい。従って、表１に示されるように、レジスタ５００は、単一の選択された拡張されたページサイズがサポートされていることを表示する。１つの実施形態では、ビット５０１〜５０８の１つのみが、どの単一の拡張されたページサイズがサポートされるかを表示するようにセットされてよい。代替的な実施形態においては、ビット５０１〜５０８の２つ以上が、２つ以上の拡張されたページサイズがサポートされることを表示するようにセットされてよい。更なる実施形態においては、レジスタ５００は、種々のページサイズがソフトウエアによって動的に有効にされると共に無効にされることを可能にするように、書き込み可能であってよい。
【００３４】
尚、拡張されたページングモードは、セキュア仮想マシン（ＳＶＭ）等の仮想化されたマシン環境のホストモード及びゲストモードにおいて独立に有効にされてよい。例えば、ホストオペレーティングシステム及びゲストオペレーティングシステムの間で切り換える場合、レジスタ４００及び５００の特定ＯＳ用バージョンの値が、仮想マシン制御ブロック（ＶＭＣＢ）として知られるデータ構造へと保存されると共に復活させられてよい。
【００３５】
レジスタ４００及び５００内にセットされる値をチェックすることによって、プロセッサ１１０上で実行中のソフトウエアは、もしあれば何の拡張されたページサイズがサポートされているかを決定することができる。ソフトウエアは次いで、幾つかの追加的なメカニズムを用いてスーパーページを定義することができる。
【００３６】
図６はオペレーティングシステムがスーパーページを定義するために用いることができるデータ構造エントリの１つの実施形態を示している。図においては、ページテーブルエントリ３５２及びページ属性テーブル（ＰＡＴ）エントリ６３０が示されている。１つの実施形態では、ページテーブルにおける各エントリは、参照しているページテーブルエントリのフォーマットを表すＰＡＴにおけるエントリを参照する識別子ビットを含む。例えば、ページテーブルエントリ３５２は、ＰＡＴにおける特定のエントリ、例えばエントリ６３０への索引を共に形成するビット６０３、６０４、及び６０７を含む。１つの実施形態では、ビット６０３はページ書き込みスルー（ＰＷＴ）ビットに対応していてよく、ビット６０４はページキャッシュ無効（ＰＣＤ）ビットに対応していてよく、そしてビット６０７はｘ８６アーキテクチャのページ属性テーブル（ＰＡＴ）ビットに対応していてよい。
【００３７】
ＰＡＴエントリ６３０内においては、スーパーページが有効であるか否かを表示するために、あるビットが指定されてよい。例えば図６に示されるように、スーパーページビット６３４がＰＡＴエントリ６３０内に示されている。１つの実施形態では、ビット６３４が「１」にセットされている場合、当該ページ属性エントリを参照しているページテーブルエントリはページテーブルエントリのスーパーページ群の一部であり、そして当該ページ属性エントリを参照しているＴＬＢエントリはスーパーページを表す。一方、ビット６３４が「１」にセットされていない場合には、当該ページ属性エントリを参照しているページテーブルエントリ又はＴＬＢエントリは、４ＫＢページを表す。
【００３８】
代替的な実施形態では、ビット６３４がスーパーページビットとして機能するＰＡＴにおけるエントリへの索引としてビット６０３、６０４、及び６０７を用いることに代えて、ページテーブルエントリ３５２の別のビットがスーパーページビットとして用いられてよい。例えば、ページテーブルエントリ３５２のビット１１又はＰＡＴビット、即ちビット６０７のようなＡＶＬビットの１つがスーパーページビットとして用いられてよい。ＡＶＬビットが用いられる場合、ハードウエアがＡＶＬビットを解釈することができるようにＸＰＭをサポートするプロセッサを構成することが必要であろう。
【００３９】
ペーテーブルエントリ３５２内には、ビット６１２〜６１６等を含むビットフィールド６４０も示されている。ビットフィールド６４０は、どのスーパーページサイズが有効にされるのかを表示するために用いられてよい。１つの実施形態では、表２に示されるようなビットフィールド６４０の値が、どのスーパーページサイズが有効にされるのかを表示する。
【００４０】
【表２】
2012532381.tif 000004
【００４１】
ビットフィールド６４０の一部でないビット６１２〜６１９のいずれも、物理フレーム番号の一部であってよい。例えば６４ＫＢスーパーページが有効である場合、ビット６１２〜６１５がビットフィールド６４０として確保されて有効であるスーパーページサイズを表示する一方で、高位ビット６１６，６１７等は物理フレーム番号の一部である。代替的な実施形態では、ページテーブルエントリ３５２からの任意の種類の他のビットが、単一又は複数の有効にされたスーパーページサイズをオペレーティングシステムが定義するために用いられてよい。
【００４２】
尚、１つの実施形態では、拡張されたページングモードは、セキュア仮想マシン（ＳＶＭ）等の仮想化されたマシン環境のホストモード及びゲストモードにおいて独立に定義され得る。例えば、ホストオペレーティングシステム及びゲストオペレーティングシステムの間で切り換える場合、ページテーブル及びページ属性テーブルの特定ＯＳ用バージョンの値が維持されてよい。また、仮想化されたマシンを組み込む幾つかの実施形態においては、ゲストオペレーティングシステムアドレス空間における仮想アドレスをゲストオペレーティングシステムアドレス空間における物理アドレスへとトランスレートするために第１の一連のスーパーページが用いられてよく、またゲストオペレーティングシステムアドレス空間における物理アドレスをホストオペレーティングシステムアドレス空間における物理アドレスへとトランスレートするために第２の一連のスーパーページが用いられてよい。そのようなシステムにおいて用いられるページテーブルは、入れ子にされた(nested)ページテーブルと称されることがある。
【００４３】
上述したように、スーパーページは２つ以上の連続的な凝集されアラインされた４ＫＢページを備えている。尚、１つの実施形態では、スーパーページを用いるオペレーティングシステムは、そのような一連の４ＫＢページを表す一連のページテーブルエントリの各々内へスーパーページエントリを複製することによって、一連のページテーブルエントリを無矛盾的に(consistently)埋めてスーパーページ領域を形成する必要があるかもしれない。以下の無矛盾性要求がこの実施形態に適用される。
【００４４】
個々のページテーブルエントリは、それらがスーパーページエントリの一部であることを表示するために、上述したフォーマットに従う必要があるであろう。
上述したフォーマットに従わない個々のページテーブルエントリをプロセッサ１１０が読み出した場合、スーパーページは無効であると宣言されてよく、また問い合わせ(question)におけるページテーブルエントリは、４ＫＢページを表しているものとして解釈されてよい。矛盾するエントリが読み出された場合、ＴＬＢは対立しているエントリを除去してよい。また、プロセッサ１１０が、アクセスされたビット及び／又はダーティービット（Ａ／Ｄビット）を矛盾したエントリにおいてセットすることを試みると、ページ不良が生じるであろう。
【００４５】
更なる実施形態においては、有効なスーパーページは、プロセッサ１１０とその上で実行されるオペレーティングシステムとの間での取り決め(contract)を形づくる一連の規則に従って、一連の完全なページテーブルエントリがページテーブル内に存在することを必要とするであろう。例えば、６４ＫＢスーパーページが有効にされる場合、有効なスーパーページを形成するために１６個の４ＫＢページテーブルエントリが必要である。もしそうでなければ、有効なページテーブルエントリが存在している４ＫＢページへとアクセスが向けられているとしても、メモリアクセスの間にページフォールトが生じ得る。更なる実施形態においては、スーパーページエントリを備えている各個々の４ＫＢエントリの物理フレーム番号及び／又はキャッシング属性は、同一である必要があるかもしれない。さもなければプロセッサ１１０の挙動が不明確になることがある。更なる実施形態においては、スーパーページエントリを備えている各個々の４ＫＢエントリの保護属性は、同一である必要があるかもしれない。もしそうでなければ、有効なページテーブルエントリが存在している４ＫＢページへとアクセスが向けられているとしても、メモリアクセスの間にページフォールトが生じ得る。上述の規則に従う場合、オペレーティングシステムは、幾つかのスプリアスな（しかし別の面では無害な）ページフォールトを無視することによって、スーパーページを備えている個々のページテーブルエントリを順次更新することができる。代替的な実施形態においては、オペレーティングシステムは、スプリアスなページフォールトを回避するように、更新プロセスの間にページテーブルをオフラインにしてよい。
【００４６】
別の実施形態では、ページテーブルエントリのＡ／Ｄビットを更新することは、スーパーページの一連のエントリに属している最初の（即ち最低位アドレスの）エントリが最初に更新されることを必要とするかもしれない。最初のエントリが一連のスーパーページビットを有していない場合、又は上述したような他の矛盾が存在する場合には、ページフォールトが生じるであろう。代替的な実施形態においては、ページテーブルエントリのＡ／Ｄビットを更新することは、スーパーページの一連のエントリに属するエントリの任意の１つが更新されることを必要とするだけであってよい。そのような更新は「まばらな(sparse)」更新と称され、有効なスーパーページを見つけるためにオペレーティングシステムがエントリを順次スキャンし又は一連のスーパーページエントリにおける全てのエントリの関連ビットに対して論理「ＯＲ」動作を実行することを必要とするかもしれない。任意のエントリにおいてダーティビットを更新することは、エントリにおいてアクセスされたビットもまた同時に更新されることを必要とするかもしれない。
【００４７】
図７はスーパーページにアクセスするためにプロセッサ１１０によって実行され得るページングプロセス７００の１つの実施形態を示している。プロセス７００は、スーパーページの仮想アドレスが得られたときに開始してよい（ブロック７１０）。仮想アドレスが利用可能になると、整合しているエントリをチェックするためにＴＬＢがアクセスされてよい（ブロック７２０）。ＴＬＢヒットがある場合（判断ブロック７２５）、ＴＬＢにおいて見出される物理フレーム番号及び仮想アドレスからのオフセットを用いること等によって、仮想アドレスが物理アドレスへとトランスレートされてよい（ブロック７７０）。物理アドレスが一旦知られると、対応するスーパーページがメモリ内でアクセスされてよい（ブロック７８０）。ページングプロセスはブロック７９０で完結する。
【００４８】
ＴＬＢミスがある場合（判断ブロック７２５）、整合しているエントリをチェックするために単一又は複数のページテーブルがアクセスされてよい（ブロック７３０）。ページテーブルミスがある場合（判断ブロック７３５）、ページフォールトが宣言されてよい（ブロック７６０）。ページテーブルヒットがある場合（判断ブロック７３５）であって且つページテーブルエントリが４Ｋバイトページに対応する場合（判断ブロック７４０）、プロセス７００はブロック７７０で継続してよい。ページテーブルヒットがある場合（判断ブロック７３５）であって且つページテーブルエントリが４Ｋバイトページに対応しない場合（判断ブロック７４０）、目標となるスーパーページに共に対応している一連のページテーブルエントリの有効性が検証されてよい（ブロック７４５）。一連のページテーブルエントリが有効でない場合（判断ブロック７５０）、ページフォールトが宣言されてよい（ブロック７６０）。１つの実施形態では、ページフォールトはアクセス要求を終了させてよい。他の実施形態では、ページフォールトの原因に応じてアクセスは継続してよい。例えば上述のような特定の状況下では、アクセス要求は４ＫＢページアクセス要求であるものとみなされてよい。他の状況においては、ページフォールトは無視されてよく、そしてあたかもページテーブルエントリが有効であるようにスーパーページアクセスが継続可能であってよい。一連のページテーブルエントリが有効である場合（判断ブロック７５０）、ＴＬＢにおいて見出される物理フレーム番号及び仮想アドレスからのオフセットを用いること等によって、仮想アドレスが物理アドレスへとトランスレートされてよい（ブロック７７０）。物理アドレスが一旦知られると、対応するスーパーページがメモリ内でアクセスされてよい（ブロック７８０）。ページングプロセスはブロック７９０で完結する。
【００４９】
図８はスーパーページをサポートしているプロセッサにおいてページテーブルから読み出されるスーパーページエントリの有効性をチェックするために用いられ得るプロセス８００の１つの実施形態を示している。プロセス８００は、スーパーページページテーブルエントリが受信されたときに開始してよい（ブロック８１０）。一連のスーパーページエントリが無矛盾性をチェックされてよい。一連のエントリにおける何れかのエントリのフォーマットが矛盾している場合（判断ブロック８２０）、又は一連のエントリにおいて欠落したエントリがある場合（判断ブロック８３０）、又は一連のエントリにおけるエントリの保護属性が不整合である場合（判断ブロック８４０）、ページフォールトが宣言されてよい（ブロック８２５）。
【００５０】
一連のエントリにおける全てのエントリのフォーマットが無矛盾である場合（判断ブロック８２０）であって、一連のエントリにおいて欠落したエントリがない場合（判断ブロック８３０）であって、且つ一連のエントリにおけるエントリの保護属性が整合している場合（判断ブロック８４０）ではあるが、一連のエントリにおける不整合な物理フレーム番号がある場合（判断ブロック８５０）又は一連のエントリにおける不整合なキャッシュング属性がある場合（判断ブロック８６０）、ページング挙動は定義されないであろう（ブロック８６２）。一連のエントリにおいて不整合な物理フレーム番号がない場合（判断ブロック８５０）又は不整合なキャッシング属性がない場合（判断ブロック８６０）、ページングプロセスは完結してよい（ブロック８７０）。
【００５１】
図９はスーパーページを用いるようにプロセッサを構成するために用いられ得るプロセスの１つの実施形態を示している。プロセス９００は、拡張されたページサイズがサポートされているかどうかを決定するためのプロセッサハードウエア能力のチェックと共に開始してよい（判断ブロック９１０）。例えば１つの実施形態では、制御状態レジスタ内のビットが、拡張されたページサイズがサポートされているか否かを表示してよい。拡張されたページサイズがサポートされていない場合には、エラーが返されてよい（ブロック９２０）。拡張されたページサイズがサポートされている場合には、何のサイズのスーパーページがサポートされるのかを決定するために別のチェックが実行されてよい（ブロック９３０）。例えば１つの実施形態においては、特定モデル用レジスタ内のビットフィールドが、拡張されたページサイズがサポートされているものを表示してよい。次いで、１つ以上の所望のページサイズが選択されてよい（ブロック９４０）。スーパーページ標識がソフトウエアによってセットされてよい（ブロック９５０）。例えば、スーパーページのためにページテーブルエントリのフォーマットを定義するために用いられるページ属性テーブルエントリ内のビットが、スーパーページの有効性を表示する値にセットされてよい。一旦スーパーページが有効にされると、スーパーページに対応する一連のエントリの最初のエントリがページテーブルへと書き込まれてよい（ブロック９７０）。１つの実施形態では、上述のページ属性テーブルエントリによって指定されるフォーマットは、ページテーブルにおける最初の及び次のエントリのために用いられてよい。次いで、スーパーページに対応する一連のエントリの残りのエントリがページテーブルへと書き込まれてよい（ブロック９８０）。連続的なアラインされた一連の４ＫＢページに対応する一連の無矛盾なエントリが一旦ページテーブルへと書き込まれたならば、対応するスーパーページがアクセスに対して利用可能になり（ブロック９９０）、プロセス９００は完結する。
【００５２】
尚、前述のフローチャートは議論の目的のためだけのものである。代替的な実施形態では、フローチャートに示される要素は、異なる順序で又は幾つかの場合には同時に生じてよい。加えて、フローチャート要素の幾つかは、種々の実施形態において存在しなくてよく又は他の要素と組み合わされてよい。全てのそのような代替案が検討される。
【００５３】
また、上述の実施形態はソフトウエアを備えていてよい。そのような実施形態においては、方法及び／又はメカニズムを実装するプログラム命令は、コンピュータがアクセス可能な媒体上で運ばれ又は媒体上に記憶されてよい。プログラム命令を記憶するように構成される多くの種類の媒体が利用可能であり、そのような媒体は、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラム可能ＲＯＭ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、及び種々の他の形態の揮発性又は不揮発性記憶装置を含む。コンピュータデバイスによるアクセスのためにプログラム命令を運ぶように構成される更に他の形態は、電気信号、電磁気信号、光信号、又はデジタル信号が運ばれ得るネットワークリンク、ワイヤレスリンク、及び衛星リンク等の地上波又は非地上波通信リンクを含む。従って、種々の実施形態は、コンピュータがアクセス可能な媒体についての上述した説明に従って実装される命令及び／又はデータを受信し、送信し、又は記憶することを更に含み得る。
【００５４】
上述の実施形態はかなり詳細に説明されてきたが、上述の開示が完全に理解されるならば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は全てのそのような変形及び修正を包含するものとして解釈されることが意図されている。
【図１】
2012532381.tif 000005
【図２】
2012532381.tif 000006
【図３】
2012532381.tif 000007
【図４】
2012532381.tif 000008
【図５】
2012532381.tif 000009
【図６】
2012532381.tif 000010
【図７】
2012532381.tif 000011
【図８】
2012532381.tif 000012
【図９】
2012532381.tif 000013
【国際調査報告】
2012532381.tif 000014