(57)【要約】【課題】仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして、ラージページにマップした仮想メモリ領域内で個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムを提供する。【解決手段】物理アドレスへのアドレス変換を高速化する方法は、コンピュータが、所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップし、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する。【選択図】図３
2011128787.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法であって、
所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、前記仮想ページよりも大きい領域であるラージページでマップするステップと、
マップした前記ラージページに含まれる一部の前記仮想ページのメモリ保護属性がその他の前記仮想ページのメモリ保護属性と異なることを条件に、前記メモリ保護属性が異なる前記一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定するステップと、
を含む方法。
【請求項２】
前記所定の条件は、前記ラージページでのマップ対象の複数の前記仮想ページの各々に対応する物理ページが他の仮想ページのいずれにも対応していない場合である、
請求項１に記載の方法。
【請求項３】
前記所定の条件は、前記ラージページでのマップ対象の複数の前記仮想ページのうち対応する前記物理ページが存在しない割合が所定量より少ない場合である、
請求項１に記載の方法。
【請求項４】
前記所定の条件は、過去のラージページの使用履歴に基づいて前記ラージページでのマップ対象にすると判定した場合である、
請求項１に記載の方法。
【請求項５】
新しくマッピングしたい前記仮想ページが存在したことに応じて、前記所定の条件を満たすか否かを判定するステップを含む、
請求項１に記載の方法。
【請求項６】
前記物理ページに対応する前記他の仮想ページが前記ラージページでマップされていることに応じて、前記ラージページをページ単位の仮想ページに戻すステップを含む、
請求項２に記載の方法。
【請求項７】
前記コンピュータが、他のコンピュータで実行可能なアプリケーションと、前記アプリケーションのエミュレータとを記憶する、
請求項１に記載の方法。
【請求項８】
仮想アドレスから物理アドレスへのアドレス変換を高速化するシステムであって、
新しくマッピングしたい仮想ページが存在したことに応じて、所定の条件を満たすか否かを判定する事前判定手段と、
前記事前判定手段により前記所定の条件を満たすことに応じて、ページ単位の仮想ページを複数含んだ仮想メモリ領域を、前記仮想ページよりも大きい領域であるラージページでマップするラージページマップ手段と、
前記ラージページマップ手段がマップした前記ラージページに含まれる一部の前記仮想ページのメモリ保護属性がその他の前記仮想ページのメモリ保護属性と異なることを条件に、前記メモリ保護属性が異なる前記一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する保護設定手段と、
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムに関する。
【背景技術】
【０００２】
近年、サーバ管理コストの削減の観点から、仮想化技術を用いて複数の既存サーバを新規サーバへ統合することが積極的に行われている。既存サーバと新規サーバとのアーキテクチャが異なる場合には、新規サーバ（以下、「ホスト」ともいう。）は、既存サーバのエミュレータを利用して、ホスト上で既存サーバ（以下、「ゲスト」ともいう。）を動作させる。エミュレータとは、ホスト上でゲストでの仕組みを動作させるソフトウェアをいう。エミュレータを用いることで、ゲスト上のアプリケーションを再コンパイルすることなく、アーキテクチャの異なるホスト上にゲストの機能を統合できる。
【０００３】
エミュレータでは、ゲストの仮想アドレスを元にホスト上のゲストのデータにアクセスするためにシャドウページテーブルを利用する。シャドウページテーブルは、ゲストの仮想アドレスからホストの物理アドレスへの、例えば、ページ単位のマッピングを管理する。ここで、ページ単位は、４ＫＢであるとする。そして、ホストのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、シャドウページテーブルを用いてハードウェアによる自動的なアドレス変換を行う。多くのＣＰＵは、ハードウェアＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）と呼ばれる変換結果のキャッシュを持つ。そして、仮想アドレスがハードウェアＴＬＢにヒットすると、シャドウページテーブルを経由したコストの高い変換を行うことなく、高速にアドレス変換ができる。
【０００４】
一方で、近年のアプリケーションでのメモリ使用量の増加に伴い、ハードウェアＴＬＢミスによる性能低下が問題になっている。ハードウェアＴＬＢの容量は、ハードウェアコストのためあまり大きくできず、４ＫＢのページ単位では、キャッシュできる仮想アドレスの範囲が狭いためである。そこで、エミュレータは、ハードウェアＴＬＢヒット率を上げるため、ゲストに透過に（ゲストの変更なく）より多くの仮想メモリ領域を一度にマップできる方法として、ラージページの利用を検討する。ラージページとは、例えば、ページ単位が４ＫＢであれば（このページ単位のページを、通常ページともいう。）、１ＭＢ等の通常ページよりも大きいページをいう。しかし、ゲストのある連続した仮想メモリ領域は、単純にラージページにマップすることができない。ゲストのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が、基本的に通常ページの単位でメモリを管理・保護していることによる。
【０００５】
ラージページにマップできないケースとして、あるラージページ領域に異なるメモリ保護属性のページが混在している場合がある。典型的な例として、１つは、読み書き可能なページと読み取り専用ページという異なるメモリ保護属性が１つのラージページ領域に混在しているケースであり、もう１つは、物理メモリ領域にマップされているページとマップされていないページとが混在しているケースである。しかし、そのような場合でも、仮想メモリ領域をラージページに置き換えることができれば、ハードウェアＴＬＢミスの削減効果による性能向上が得られる。
【０００６】
ラージページを利用してハードウェアＴＬＢミスを削減する既存の手法として、ＯＳがアプリケーションに透過にページ属性が同じ４ＫＢページをまとめてラージページにプロモートし、ページ属性が変更になるとラージページを４ＫＢページにデモートする手法が存在する（例えば、非特許文献１）。しかし、この手法では、仮想メモリ領域への許されていない読み取りあるいは書き込みアクセスを検知して、それを禁止することができない。
【０００７】
また、例えば、可変ページサイズの仮想ページにおいて、仮想アドレスを物理アドレスに変換するＴＬＢを提供する変換索引バッファが存在する（例えば、特許文献１）。しかし、特許文献１に記載の変換索引バッファは、犠牲キャッシュによりＴＬＢミスを削減するものであり、メモリ保護属性が混在しているケースに対応できるものではない。
【０００８】
さらに、仮想アドレスを一度中間アドレスに変換し、この中間アドレスを物理アドレスに変換することで、連続でない複数の物理ページをより大きい仮想ラージページにマップする再マッピング装置が存在する（例えば、特許文献２）。しかし、特許文献２に記載の再マッピング装置は、中間アドレスを用いるアドレス変換のために変換索引バッファ（ＴＬＢ）の他に再マッピング索引バッファ（ＲＬＢ）を必要とする。そのため、アドレス変換のコストが倍になり、システム性能が低下してしまうものである。
【０００９】
さらにまた、少なくとも１つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間にプログラムをロードする場合に用いる、プログラムローディング方法が存在する（例えば、特許文献３）。この方法は、プログラムのテキスト等のサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域か、ページサイズが最大の領域にプログラムのテキスト等を割り当てることで、ＴＬＢミスの発生頻度を低下させるものである。しかし、特許文献３に記載のプログラムローディング方法は、プログラムをロードする際にページサイズを決定するので、仮想アドレスから物理アドレスへのマッピングが動的に変更される場合には、ページサイズを適切に決定できない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平８−１０１７９７号公報
【特許文献２】特開平８−３６５２８号公報
【特許文献３】特開２００６−２６０３９５号公報
【非特許文献】
【００１１】
【非特許文献１】ナヴァロ（Ｊ．  Ｎａｖａｒｒｏ）他著、「スーパーページに対する有用で透過なオペレーティングシステム支援」、ＯＳＤＩ、２００２年
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして（置き換えて）、ラージページにマップした仮想メモリ領域内で個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の１つの態様として、本発明の第１の形態によると、コンピュータによって、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法を提供する。コンピュータは、新しくマッピングしたいページ単位の仮想ページが存在したことに応じて、所定の条件を満たすか否かを判定し、所定の条件を満たした仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップする。そして、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する。
【００１４】
本発明の第２の形態によると、第１の形態に加えて、所定の条件が、ラージページでのマップ対象の複数の仮想ページの各々に対応する物理ページが他の仮想ページのいずれにも対応していない場合である。また、物理ページに対応する他の仮想ページがラージページでマップされていることに応じて、ラージページをページ単位の仮想ページに戻す。
【００１５】
本発明の第３の形態によると、第１の形態に加えて、所定の条件が、ラージページでのマップ対象の複数の仮想ページのうち対応する物理ページが存在しない割合が所定量より少ない場合や、過去のラージページの使用履歴に基づいてラージページでのマップ対象にすると判定した場合を含む。
【００１６】
本発明の第４の形態によると、第１の形態に加えて、コンピュータが、他のコンピュータで実行可能なアプリケーションと、アプリケーションのエミュレータとを記憶する。
【００１７】
また、本発明は別の態様として、上記の方法の各ステップを実行するシステムとしても提供可能である。
【発明の効果】
【００１８】
本発明によれば、コンピュータが、所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップし、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する方法及びシステムを提供するので、仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして、ラージページにマップした仮想メモリ領域内個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るホストのソフトウェア構成を示す図である。
【図２】本実施形態に係る仮想メモリ領域の既存のマッピングをラージページに置き換える様子を示す図である。
【図３】本実施形態に係るラージページへのマップを行う例及び行わない例を示す図である。
【図４】本実施形態に係る新マッピング生成時のフローチャートである。
【図５】図４に続くフローチャートである。
【図６】本実施形態に係るＷｉｎｄｏｗｓ（登録商標）エクスプローラのメモリ状況を示す図である。
【図７】本実施形態に係るホストのハードウェア構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について、図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
【００２１】
本発明を用いた例として、ホスト上でゲストのエミュレーションを行った場合のラージページの利用について説明する。図１は、本実施形態に係るホスト１のソフトウェア構成を示す図である。
【００２２】
図１に示すホスト１は、ホストハードウェア１０と、ホストハードウェア１０の上で起動するホストＯＳ３、エミュレータ５、ゲストＯＳ７及びゲストアプリケーション９のソフトウェアとにより構成される。ホストハードウェア１０の上で、ホストＯＳ３を実行し、ホストＯＳ３がエミュレータ５を実行することで、ホストＯＳ３は、ゲストＯＳ７の上で起動するゲストアプリケーション９を実行できる。
【００２３】
ホスト１は、例えば、ＩＢＭ  Ｓｙｓｔｅｍ  ｚ（登録商標）に代表されるサーバである。ホスト１は、通常ページのサイズが４ＫＢで、ラージページのサイズが１ＭＢであるとする。また、ホスト１の上で起動させるゲストは、例えば、Ｉｎｔｅｌ（登録商標）サーバである。ゲストは、通常ページのサイズが４ＫＢで、ラージページのサイズが４ＭＢであるとする。
【００２４】
ホストハードウェア１０は、ＣＰＵ１１とメモリ１６とを備える。ＣＰＵ１１は、情報の演算及び処理を行い、ホスト１全体を制御する中央処理装置である。ＣＰＵ１１は、ＴＬＢ１３と、レジスタ１４とを備える。ＴＬＢ１３は、ハードウェアＴＬＢであり、仮想アドレスと物理アドレスとの変換結果をキャッシュし、ＴＬＢ１３に存在する仮想アドレスに対応する物理アドレスを返すバッファである。レジスタ１４については、後述する。メモリ１６は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を含む半導体記憶装置である。
【００２５】
なお、本発明でいうコンピュータとは、制御部、記憶装置等を備えた情報処理装置をいい、ホスト１は、ＣＰＵ１１、メモリ１６等を備えた情報処理装置であり、本発明のコンピュータの概念に含まれる。
【００２６】
次に、ホスト１上のゲストアプリケーション９の仮想アドレスを、ゲストＯＳ７及びエミュレータ５によってホスト１の物理アドレスに置き換える際の仕組みについて説明する。図２は、本実施形態に係る仮想メモリ領域の既存のマッピングをラージページに置き換える様子を示す図である。ここでは、説明のために通常ページのサイズ１０個分がラージページのサイズであるとする。
【００２７】
図２（１）は、既存のマッピングとして仮想ページの一部が、通常ページのサイズを使って物理ページにマッピングされている。図２（１）では、１０個中７個の仮想ページが物理ページにマッピングされている。仮想メモリ領域の仮想ページ２１から２３は、物理ページへのマッピングが生成されていない。
【００２８】
図２（２）は、図２（１）のような部分的に通常ページでのマッピングが存在する仮想メモリ領域を、ラージページを使ったマッピングに置き換えたものである。ラージページサイズの仮想メモリ領域全体が、連続した物理メモリ領域にマップされる。
【００２９】
この置き換えにおいて、ラージページサイズの仮想メモリ領域全体を連続した物理メモリ領域にマップすることで、本来マッピングのなかった仮想ページ（図２（１）の仮想ページ２１から２３）に対しても物理ページをマップしてしまう。そこで、本来マップのない仮想ページを保護するために、Ｓｔｏｒａｇｅ  ｋｅｙと呼ばれる物理メモリ保護情報を用いる。Ｓｔｏｒａｇｅ  ｋｅｙは、ＩＢＭ  Ｓｙｓｔｅｍ  ｚに存在するメモリ管理機能である。Ｓｔｏｒａｇｅ  ｋｅｙにより、４ＫＢの物理ページごとにメモリからの読み込みやメモリへの書き込みを制限できる。なお、メモリ保護属性は、仮想ページにより設定されているものと、Ｓｔｏｒａｇｅ  ｋｅｙにより設定されているもののうち、より大きな制限を課すものが優先される。例えば、仮想ページの属性がｒｅａｄ−ｏｎｌｙである場合、対応する物理ページの属性がＳｔｏｒａｇｅ  ｋｅｙによってｒｅａｄ／ｗｒｉｔｅに設定されていたとしても、この仮想ページはｒｅａｄ−ｏｎｌｙとしてアクセスされる。
【００３０】
Ｓｔｏｒａｇｅ  ｋｅｙは、４ＫＢの物理ページごとに関連付けられ、アーキテクチャが定義する７ビットのビット列である。７ビットのうち４ビットがアクセス制御ビット（ＡＣＣ）であり、１ビットが取り出し保護ビット（Ｆ）である。このＡＣＣビット及びＦビットは、メモリアクセスの制御に用いられる。他方、ＣＰＵ１１のレジスタ１４は、ＰＳＷ１４ａ（ＰＳＷ：Ｐｒｏｇｒａｍ  Ｓｔａｔｕｓ  Ｗｏｒｄ）と呼ばれるグローバルなレジスタを含み、その中に４ビットのＰＳＷ  ｋｅｙが存在する。ＡＣＣビットは、対応する物理ページへの書込アクセス制御に用いられる。Ｆビットは、対応する物理ページへの読込アクセス制御に用いられる。
【００３１】
ここで、Ｓｔｏｒａｇｅ  ｋｅｙによるメモリアクセスを禁止する方法について説明する。ゲストアプリケーション９が起動されて、シャドウページテーブルを用いて変換後のアドレスで物理ページにアクセスした時、ＣＰＵ１１は、まずＰＳＷ  ｋｅｙとアクセスされる物理ページのＡＣＣビットとを照合する。ＰＳＷ  ｋｅｙとＡＣＣビットとが一致する場合には、ＣＰＵ１１は、アクセスを許可する。他方、ＰＳＷ  ｋｅｙとＡＣＣビットとが不一致である場合には、ＣＰＵ１１は、ＡＣＣビットによりアクセスが書き込みであれば、アクセスを禁止する。また、ＣＰＵ１１は、ＡＣＣビットによりアクセスが読み込みであれば、次にＦビットをチェックする。Ｆビットが「１」であれば、ＣＰＵ１１は、メモリからの読み込みアクセスを禁止する。アクセスを禁止した場合には、ＣＰＵ１１は、ハードウェアによる割り込みを発生させる。図２（１）の例では、ゲストアプリケーション９は、マップされた全ての仮想ページにアクセスできるため、ＰＳＷ  ｋｅｙとＳｔｏｒａｇｅ  ｋｅｙとが同一である。
【００３２】
既存のマッピングではマップされていなかった仮想ページ２１から２３を保護するために、図２（２）に示すように、仮想ページ２１から２３がマップされた物理ページの各々には、特別なＳｔｏｒａｇｅ  ｋｅｙを設定して物理ページへの読み込み及び書き込みを禁止する。特別なＳｔｏｒａｇｅ  ｋｅｙとは、例えば、特殊なＡＣＣビットとＦビットが「１」とによる設定をいう。これによって、既存のマッピングの有無を保持しつつ、ラージページを利用することができる。物理ページ２６から２８は、通常とは異なるＳｔｏｒａｇｅ  ｋｅｙを設定している。この設定により、既存のマッピングでマップされた仮想ページへのアクセスについては、ラージテーブルの効果が得られ、他方、マップされていない仮想ページへのアクセスは、Ｓｔｏｒａｇｅ  ｋｅｙとＰＳＷ  ｋｅｙとの不一致によりアクセス対象外になる。
【００３３】
図３は、本実施形態に係るラージページへのマップを行う例及び行わない例を示す図である。図３（１）は、仮想メモリ領域がメモリ保護属性の異なる仮想ページを含んでいてもラージページでマップする例である。ラージページ対象の領域のうちの大半のメモリ保護属性がｒｅａｄ／ｗｒｉｔｅであるが、一部にｉｎｖａｌｉｄと、ｒｅａｄ−ｏｎｌｙとが存在する。この場合、ラージページ自体のメモリ保護属性は、最も保護の緩いｒｅａｄ／ｗｒｉｔｅにしてマップし、ｉｎｖａｌｉｄ及びｒｅａｄ−ｏｎｌｙの物理ページは、対応するＳｔｏｒａｇｅ  ｋｅｙを設定することで、その物理ページを保護できる。
【００３４】
例えば、ｉｎｖａｌｉｄな物理ページ３１には、物理ページ３１への読み込み及び書き込みを禁止するＳｔｏｒａｇｅ  ｋｅｙとして特殊なＡＣＣビットとＦビットが「１」とによる設定を行う。また、メモリ保護属性がｒｅａｄ−ｏｎｌｙの物理ページ３２には、読み込みのみを許容するＳｔｏｒａｇｅ  ｋｅｙとして特殊なＡＣＣビットとＦビットが「０」とによる設定を行う。なお、メモリ保護属性がｒｅａｄ／ｗｒｉｔｅの物理ページは、読み書き共に許容するＳｔｏｒａｇｅ  ｋｅｙとして、通常のＡＣＣビットとＦビットが「０」とによる設定を行う。
【００３５】
従来は、ラージページでマップするためには、そのラージページ領域中の仮想メモリ領域が全て同じメモリ保護属性を持つ必要があったので、図３（１）の例のような異なるメモリ保護属性の仮想メモリ領域を含むラージページへのマッピングが不可能であった。通常ページよりサイズの大きいラージページでマップすることで、ＴＬＢミスを減らすことができる。
【００３６】
図３（２）は、物理ページ３３を共有（シェア）している仮想ページ間でメモリ保護属性が異なる場合である。このような場合には、物理ページでの保護が難しいため、ラージページでのマップを抑制し、通常ページによるマップを行う。
【００３７】
図３（３）は、既にラージページでマップされたメモリ領域中での使用されない物理ページを管理して、未使用な物理ページの量が増えた場合にラージページでのマップを抑制するものである。この場合、ラージページ中のマップされている仮想ページのカウンタと閾値とが比較されて、マップを抑制するか否かが決定される。
【００３８】
図３（４）は、将来ラージページでマップされるであろう仮想メモリ領域を、早い段階でラージページでマップするものである。将来を見越してラージページでマップすることで、通常ページでマップするコストを削減できる。この場合は、今までの仮想メモリ領域の使用を蓄積したラージページのマップ履歴を活用することで、メモリの使用の傾向を分析して実現する。
【００３９】
次に、図２及び図３で説明したマップを生成するフローチャートについて説明する。図４及び図５は、本実施形態に係る新マッピング生成時のフローチャートである。ここでは、ＣＰＵ１１が新規にゲストの仮想ページからホスト１の物理ページへのマッピングを作成する際の手順を説明する。
【００４０】
先ず、ステップＳ１００（以下、ステップＳを単にＳとする。）では、新しくマッピングしたい仮想ページを、ゲストを探索して見つける。この新しくマッピングしたい仮想ページの見つけ方として、例えば、ゲストのページテーブルをｗｒｉｔｅプロテクトしておくことで、ゲストＯＳ７がページテーブルに書き込んだことを分かるようにする方法がある。また、他には、実際にゲストＯＳ７にそのアドレスにアクセスさせて、ページテーブルにエントリがないために見つける方法がある。
【００４１】
Ｓ１１０において、ゲスト自身が既にラージページを使ってマップしているか否かを判断する。これは、ゲストＯＳ７のページテーブルによって判断できる。既に従来技術においてラージページのマッピングをしている場合（Ｓ１１０：ＹＥＳ）には、処理をＳ１６０に移し、シャドウページテーブルでもラージページを用いてマッピングする。他方、ラージページのマッピングをしていない場合（Ｓ１１０：ＮＯ）には、処理をＳ１２０に移す。
【００４２】
Ｓ１２０では、候補になる１つの物理ページを複数の仮想ページが共有しているか否かを判断する。物理ページが共有されている場合（Ｓ１２０：ＹＥＳ）には、ラージページによるマップをあきらめて、処理を図５のＳ１７０に移す。他方、物理ページが共有されていない場合（Ｓ１２０：ＮＯ）には、処理をＳ１３０に移す。
【００４３】
候補になる物理ページが複数の仮想ページで共有されているか否かは、例えば、マッピングの回数をチェックすることで実現できる。マッピングの回数チェックの方法として、例えば、ビットベクタの対応ビットをチェックする方法が考えられる。各ビットは、対応する物理ページのマップ状態を表し、最初のマップでセットする。対応ビットをチェックしてセットがされていれば、その物理ページは、複数の仮想ページにマップされていると判断できる。他には、カウンタで管理する方法が考えられる。
【００４４】
Ｓ１３０では、ラージページの対象になる仮想メモリ領域の全ての仮想ページが同じメモリ保護属性であり、対象の仮想ページ以外の全てをマップしているか否かを判断する。この条件を満たす場合（Ｓ１３０：ＹＥＳ）には、処理をＳ１６０に移し、対象の仮想ページを含む全体をラージページでマッピングする。これは、既存のスーパーページと呼ばれる手法である。他方、この条件を満たさない場合（Ｓ１３０：ＮＯ）には、処理をＳ１４０に移す。
【００４５】
Ｓ１４０では、未使用の物理ページの比率やラージページの対象になる仮想メモリ領域の過去の使用履歴をチェックする。そして、未使用の物理ページや使用履歴に基づいて、ラージページにすべきか否かを判断する。ラージページにすべきであると判断する場合（Ｓ１４０：ＹＥＳ）には、処理をＳ１５０に移す。他方、ラージページにすべきではないと判断する場合（Ｓ１４０：ＮＯ）には、処理を図５のＳ１９０に移す。
【００４６】
ラージページにすべきか否かの判断は、未使用の物理ページの比率として、ラージページの対象になる仮想メモリ領域の中にマップのない仮想ページがどの程度あるかを調べることで判断できる。マップのない仮想ページが少ない場合には、ラージページでマップする。使用されない物理ページの比率の閾値は、例えば、エミュレータ５の起動時に比率を与えてもよいし、システム全体のメモリの空き状態を判断して決めてもよい。システム全体でメモリが空いている場合には、マップされない仮想ページが多くてもラージページを利用し、空きメモリがない場合には、マップされない仮想ページが少ない場合のみラージページを利用するようにしてもよい。
【００４７】
ラージページにすべきか否かのもう１つの判断として、過去の使用履歴に基づいて行う。マップのない仮想ページが多い場合でも、あるゲストの仮想メモリ領域に対してラージページを適用することが多ければ、現在対象にしているラージページの候補についてもラージページを適用することになる可能性が高いと考えられる。よって、ラージページを使用してマップする。これは、エミュレータ５は、ゲストＯＳ７を仮想化し、アプリケーション切替といったゲストＯＳ７の活動を追跡している。エミュレータ５は、ゲストアプリケーション９を識別でき、ゲストアプリケーション９ごとのラージページ利用履歴を保持できる。
【００４８】
Ｓ１５０では、Ｓｔｏｒａｇｅ  ｋｅｙを元のメモリ保護属性に応じて物理ページに設定する。
【００４９】
Ｓ１６０では、対象全体を新たにラージページでマッピングする。その後、本処理を終了する。
【００５０】
図５のＳ１７０では、マップ対象の物理ページが既にラージページに組み込まれてマップされた一部になっているか否かを判断する。この判断は、例えば、ビットベクタとハッシュとを用いて、物理ページがラージページでマップされているか否かを管理する方法により実現できる。ラージページでマップするごとに、物理ページの先頭アドレスに対応するビットをセットし、そのアドレスとページテーブルエントリとのペアをハッシュに登録する。チェックする際には、マップ対象の物理ページからそれを含むラージページにアラインしたアドレスを計算して、ビットベクタの対応ビットを調べ、セットされていなければ、ラージページでマップされていないと判断する。既に他のラージページに組み込まれている場合（Ｓ１７０：ＹＥＳ）には、処理をＳ１８０に移す。他方、他のラージページに組み込まれていない場合（Ｓ１７０：ＮＯ）には、処理をＳ１９０に移す。
【００５１】
Ｓ１８０では、ラージページのマップを通常ページのマップに戻す。
【００５２】
Ｓ１９０では、既存の通常ページ（４ＫＢ）を使用してマッピングをする。その後、本処理を終了する。
【００５３】
なお、ＣＰＵ１１は、Ｓ１６０及びＳ１９０でマッピングしたシャドウページテーブルを用いて、ＣＰＵ１１内のＴＬＢ１３を更新する。
【００５４】
図４及び図５を用いて説明したフローチャートによれば、ラージページでマップされる物理ページは、そのラージページにのみマップされる。個々のゲストアプリケーション９の仮想メモリ空間内では、ある物理ページが複数のマップをもつことは極めてまれであると考えられるためである。複数のアプリケーションの仮想メモリ空間の間では、共有ライブラリコードが置かれたある物理ページが複数のアプリケーションの仮想空間にマップされることがある。しかし、このようなページを含む仮想メモリ領域は、ラージページでマップしない。この条件を緩和する方法としては、例えば、コードを含んだ物理ページをそれぞれが単一マップになるように複製することが考えられる。各アプリケーションを実行している間は、命令キャッシュの利用効率に影響はなく、また、アプリケーションの切替は頻繁ではないので、切替による命令キャッシュにコードを再フェッチする影響はほとんどないので、複製による命令キャッシュへの影響は少ない。
【００５５】
このように、ゲストＯＳ７が通常ページのマッピングしか行わず、仮想アドレス空間上のメモリ保護属性が異なるページが交互に現れる場合であっても、エミュレータ５が自動的にラージページを使用して仮想メモリ領域のマッピングを行う。よって、ゲストＯＳ７に透過にハードウェアＴＬＢミスを削減することができる。例えば、ＩＢＭ  Ｓｙｓｔｅｍ  ｚの場合、既存のマッピングをラージページに置き換えることで、従来は、アドレス変換のために２５６個のハードウェアＴＬＢエントリが必要だった仮想メモリ領域を、１個のハードウェアＴＬＢエントリで変換することができるようになる。これにより、ハードウェアＴＬＢへのプレッシャーが低下し、ハードウェアＴＬＢミスを削減することができるため、エミュレータ５全体の性能を向上させることができる。
【００５６】
図６は、本実施形態に係るＷｉｎｄｏｗｓ（登録商標）エクスプローラのメモリ状況を示す図である。図６に示すＷｉｎｄｏｗｓエクスプローラの場合の例で、従来は、属性が単一の場合のみラージページを適用可能であったので、メモリ領域の４割弱がラージページを利用可能なものであった。しかし、今回の手法により、属性が混在する場合であってもラージページを適用することができる。これにより、メモリ領域の大部分にラージページを適用することができるので、ハードウェアＴＬＢミスを削減し、エミュレータ５全体の性能を向上させることができる。
【００５７】
以上、ＩＢＭ  Ｓｙｓｔｅｍ  ｚ上でＩｎｔｅｌサーバのエミュレーションをする場合のラージページの利用について述べた。しかし、本発明は、これに限らず、Ｓｔｏｒａｇｅ  ｋｅｙのように、ラージページとして括った仮想メモリ領域の中で通常ページの単位でアクセスを制限する機能がハードウェアに存在すれば、本発明は、本質的にシャドウページテーブルを利用する全てのシステムに適用可能である。例えば、本発明をＯＳに適用することで、本来的に適応するＯＳ自身の性能を向上できる。他のシステムであっても、ラージページに置き換えることによるＴＬＢミスの削減によって、システム全体の性能向上が期待できる。
【００５８】
最後に、ハードウェア構成について説明する。図７は、本実施形態に係るホスト１のハードウェア構成を示す図である。図７においては、ホスト１を情報処理装置１０００とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
【００５９】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１０、バスライン１００５、通信Ｉ／Ｆ１０４０、メインメモリ１０５０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１０６０、パラレルポート１０８０、ＵＳＢポート１０９０、グラフィック・コントローラ１０２０、ＶＲＡＭ１０２４、音声プロセッサ１０３０、Ｉ／Ｏコントローラ１０７０並びにキーボード及びマウス・アダプタ１１００等の入力手段を備える。Ｉ／Ｏコントローラ１０７０には、フレキシブル・ディスク（ＦＤ）ドライブ１０７２、ハードディスク１０７４、光ディスク・ドライブ１０７６、半導体メモリ１０７８等の記憶手段を接続することができる。
【００６０】
グラフィック・コントローラ１０２０には、表示装置１０２２が接続されている。また、音声プロセッサ１０３０には、増幅回路１０３２及びスピーカ１０３４が接続される。
【００６１】
ＢＩＯＳ１０６０は、情報処理装置１０００の起動時にＣＰＵ１０１０が実行するブートプログラムや、情報処理装置１０００のハードウェアに依存するプログラム等を格納する。ＦＤ（フレキシブル・ディスク）ドライブ１０７２は、フレキシブル・ディスク１０７１からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供する。
【００６２】
光ディスク・ドライブ１０７６としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）ドライブ等を使用することができる。この際は各ドライブに対応した光ディスク１０７７を使用する必要がある。光ディスク・ドライブ１０７６は光ディスク１０７７からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供することもできる。
【００６３】
情報処理装置１０００に提供されるコンピュータ・プログラムは、フレキシブル・ディスク１０７１、光ディスク１０７７又はメモリカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、Ｉ／Ｏコントローラ１０７０を介して、記録媒体から読み出され、又は通信Ｉ／Ｆ１０４０を介してダウンロードされることによって、情報処理装置１０００にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
【００６４】
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク１０７１、光ディスク１０７７又はメモリーカードの他に、ＭＤ等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置１０００に提供してもよい。
【００６５】
以上の例は、情報処理装置１０００について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。したがって、本発明において１つの実施形態として説明した情報処理装置は、方法及びそのコンピュータ・プログラムによっても実現可能である。
【００６６】
本装置は、ハードウェア、ソフトウェア又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。係る場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明に係る処理を実行させる。このプログラムは、任意の言語、コード又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は（１）他の言語、コード、もしくは表記への変換、（２）他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＲＡＭ、Ｍ−ＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、フラッシュメモリ等の任意のコンピュータ可読媒体に格納することができる。係るプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、係るプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
【００６７】
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
【符号の説明】
【００６８】
１    ホスト
３    ホストＯＳ
５    エミュレータ
７    ゲストＯＳ
９    ゲストアプリケーション
１０    ホストハードウェア
１１    ＣＰＵ
１３    ＴＬＢ
１４    レジスタ
１６    メモリ
２１，２２，２３  仮想ページ
２６，２７，２８，３１，３２，３３  物理ページ
【図１】
2011128787.tif 000003
【図２】
2011128787.tif 000004
【図３】
2011128787.tif 000005
【図４】
2011128787.tif 000006
【図５】
2011128787.tif 000007
【図６】
2011128787.tif 000008
【図７】
2011128787.tif 000009