JP2011128787A - アドレス変換を高速化する方法及びシステム - Google Patents

アドレス変換を高速化する方法及びシステム Download PDF

Info

Publication number
JP2011128787A
JP2011128787A JP2009285375A JP2009285375A JP2011128787A JP 2011128787 A JP2011128787 A JP 2011128787A JP 2009285375 A JP2009285375 A JP 2009285375A JP 2009285375 A JP2009285375 A JP 2009285375A JP 2011128787 A JP2011128787 A JP 2011128787A
Authority
JP
Japan
Prior art keywords
page
virtual
physical
pages
mapped
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009285375A
Other languages
English (en)
Other versions
JP4915756B2 (ja
Inventor
Ai Ito
愛 伊藤
Takeshi Ogasawara
武史 小笠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009285375A priority Critical patent/JP4915756B2/ja
Priority to US12/970,046 priority patent/US8806146B2/en
Publication of JP2011128787A publication Critical patent/JP2011128787A/ja
Application granted granted Critical
Publication of JP4915756B2 publication Critical patent/JP4915756B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Abstract

【課題】仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして、ラージページにマップした仮想メモリ領域内で個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムを提供する。
【解決手段】物理アドレスへのアドレス変換を高速化する方法は、コンピュータが、所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップし、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する。
【選択図】図3

Description

本発明は、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムに関する。
近年、サーバ管理コストの削減の観点から、仮想化技術を用いて複数の既存サーバを新規サーバへ統合することが積極的に行われている。既存サーバと新規サーバとのアーキテクチャが異なる場合には、新規サーバ(以下、「ホスト」ともいう。)は、既存サーバのエミュレータを利用して、ホスト上で既存サーバ(以下、「ゲスト」ともいう。)を動作させる。エミュレータとは、ホスト上でゲストでの仕組みを動作させるソフトウェアをいう。エミュレータを用いることで、ゲスト上のアプリケーションを再コンパイルすることなく、アーキテクチャの異なるホスト上にゲストの機能を統合できる。
エミュレータでは、ゲストの仮想アドレスを元にホスト上のゲストのデータにアクセスするためにシャドウページテーブルを利用する。シャドウページテーブルは、ゲストの仮想アドレスからホストの物理アドレスへの、例えば、ページ単位のマッピングを管理する。ここで、ページ単位は、4KBであるとする。そして、ホストのCPU(Central Processing Unit)は、シャドウページテーブルを用いてハードウェアによる自動的なアドレス変換を行う。多くのCPUは、ハードウェアTLB(Translation Lookaside Buffer)と呼ばれる変換結果のキャッシュを持つ。そして、仮想アドレスがハードウェアTLBにヒットすると、シャドウページテーブルを経由したコストの高い変換を行うことなく、高速にアドレス変換ができる。
一方で、近年のアプリケーションでのメモリ使用量の増加に伴い、ハードウェアTLBミスによる性能低下が問題になっている。ハードウェアTLBの容量は、ハードウェアコストのためあまり大きくできず、4KBのページ単位では、キャッシュできる仮想アドレスの範囲が狭いためである。そこで、エミュレータは、ハードウェアTLBヒット率を上げるため、ゲストに透過に(ゲストの変更なく)より多くの仮想メモリ領域を一度にマップできる方法として、ラージページの利用を検討する。ラージページとは、例えば、ページ単位が4KBであれば(このページ単位のページを、通常ページともいう。)、1MB等の通常ページよりも大きいページをいう。しかし、ゲストのある連続した仮想メモリ領域は、単純にラージページにマップすることができない。ゲストのOS(Operating System)が、基本的に通常ページの単位でメモリを管理・保護していることによる。
ラージページにマップできないケースとして、あるラージページ領域に異なるメモリ保護属性のページが混在している場合がある。典型的な例として、1つは、読み書き可能なページと読み取り専用ページという異なるメモリ保護属性が1つのラージページ領域に混在しているケースであり、もう1つは、物理メモリ領域にマップされているページとマップされていないページとが混在しているケースである。しかし、そのような場合でも、仮想メモリ領域をラージページに置き換えることができれば、ハードウェアTLBミスの削減効果による性能向上が得られる。
ラージページを利用してハードウェアTLBミスを削減する既存の手法として、OSがアプリケーションに透過にページ属性が同じ4KBページをまとめてラージページにプロモートし、ページ属性が変更になるとラージページを4KBページにデモートする手法が存在する(例えば、非特許文献1)。しかし、この手法では、仮想メモリ領域への許されていない読み取りあるいは書き込みアクセスを検知して、それを禁止することができない。
また、例えば、可変ページサイズの仮想ページにおいて、仮想アドレスを物理アドレスに変換するTLBを提供する変換索引バッファが存在する(例えば、特許文献1)。しかし、特許文献1に記載の変換索引バッファは、犠牲キャッシュによりTLBミスを削減するものであり、メモリ保護属性が混在しているケースに対応できるものではない。
さらに、仮想アドレスを一度中間アドレスに変換し、この中間アドレスを物理アドレスに変換することで、連続でない複数の物理ページをより大きい仮想ラージページにマップする再マッピング装置が存在する(例えば、特許文献2)。しかし、特許文献2に記載の再マッピング装置は、中間アドレスを用いるアドレス変換のために変換索引バッファ(TLB)の他に再マッピング索引バッファ(RLB)を必要とする。そのため、アドレス変換のコストが倍になり、システム性能が低下してしまうものである。
さらにまた、少なくとも1つの領域のページサイズが他の領域のページサイズと異なるような仮想アドレス空間にプログラムをロードする場合に用いる、プログラムローディング方法が存在する(例えば、特許文献3)。この方法は、プログラムのテキスト等のサイズよりもページサイズが大きい領域のうちのページサイズが最小の領域か、ページサイズが最大の領域にプログラムのテキスト等を割り当てることで、TLBミスの発生頻度を低下させるものである。しかし、特許文献3に記載のプログラムローディング方法は、プログラムをロードする際にページサイズを決定するので、仮想アドレスから物理アドレスへのマッピングが動的に変更される場合には、ページサイズを適切に決定できない。
特開平8−101797号公報 特開平8−36528号公報 特開2006−260395号公報
ナヴァロ(J. Navarro)他著、「スーパーページに対する有用で透過なオペレーティングシステム支援」、OSDI、2002年
本発明は、仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして(置き換えて)、ラージページにマップした仮想メモリ領域内で個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法及びシステムを提供することを目的とする。
本発明の1つの態様として、本発明の第1の形態によると、コンピュータによって、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法を提供する。コンピュータは、新しくマッピングしたいページ単位の仮想ページが存在したことに応じて、所定の条件を満たすか否かを判定し、所定の条件を満たした仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップする。そして、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する。
本発明の第2の形態によると、第1の形態に加えて、所定の条件が、ラージページでのマップ対象の複数の仮想ページの各々に対応する物理ページが他の仮想ページのいずれにも対応していない場合である。また、物理ページに対応する他の仮想ページがラージページでマップされていることに応じて、ラージページをページ単位の仮想ページに戻す。
本発明の第3の形態によると、第1の形態に加えて、所定の条件が、ラージページでのマップ対象の複数の仮想ページのうち対応する物理ページが存在しない割合が所定量より少ない場合や、過去のラージページの使用履歴に基づいてラージページでのマップ対象にすると判定した場合を含む。
本発明の第4の形態によると、第1の形態に加えて、コンピュータが、他のコンピュータで実行可能なアプリケーションと、アプリケーションのエミュレータとを記憶する。
また、本発明は別の態様として、上記の方法の各ステップを実行するシステムとしても提供可能である。
本発明によれば、コンピュータが、所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、仮想ページよりも大きい領域であるラージページでマップし、マップしたラージページに含まれる一部の仮想ページのメモリ保護属性がその他の仮想ページのメモリ保護属性と異なることを条件に、メモリ保護属性が異なる一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する方法及びシステムを提供するので、仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして、ラージページにマップした仮想メモリ領域内個別対応が必要な仮想ページに対応する物理ページを個別に処理することで、仮想アドレスから物理アドレスへのアドレス変換を高速化することができる。
本実施形態に係るホストのソフトウェア構成を示す図である。 本実施形態に係る仮想メモリ領域の既存のマッピングをラージページに置き換える様子を示す図である。 本実施形態に係るラージページへのマップを行う例及び行わない例を示す図である。 本実施形態に係る新マッピング生成時のフローチャートである。 図4に続くフローチャートである。 本実施形態に係るWindows(登録商標)エクスプローラのメモリ状況を示す図である。 本実施形態に係るホストのハードウェア構成を示す図である。
以下、本発明の実施形態について、図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
本発明を用いた例として、ホスト上でゲストのエミュレーションを行った場合のラージページの利用について説明する。図1は、本実施形態に係るホスト1のソフトウェア構成を示す図である。
図1に示すホスト1は、ホストハードウェア10と、ホストハードウェア10の上で起動するホストOS3、エミュレータ5、ゲストOS7及びゲストアプリケーション9のソフトウェアとにより構成される。ホストハードウェア10の上で、ホストOS3を実行し、ホストOS3がエミュレータ5を実行することで、ホストOS3は、ゲストOS7の上で起動するゲストアプリケーション9を実行できる。
ホスト1は、例えば、IBM System z(登録商標)に代表されるサーバである。ホスト1は、通常ページのサイズが4KBで、ラージページのサイズが1MBであるとする。また、ホスト1の上で起動させるゲストは、例えば、Intel(登録商標)サーバである。ゲストは、通常ページのサイズが4KBで、ラージページのサイズが4MBであるとする。
ホストハードウェア10は、CPU11とメモリ16とを備える。CPU11は、情報の演算及び処理を行い、ホスト1全体を制御する中央処理装置である。CPU11は、TLB13と、レジスタ14とを備える。TLB13は、ハードウェアTLBであり、仮想アドレスと物理アドレスとの変換結果をキャッシュし、TLB13に存在する仮想アドレスに対応する物理アドレスを返すバッファである。レジスタ14については、後述する。メモリ16は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)等を含む半導体記憶装置である。
なお、本発明でいうコンピュータとは、制御部、記憶装置等を備えた情報処理装置をいい、ホスト1は、CPU11、メモリ16等を備えた情報処理装置であり、本発明のコンピュータの概念に含まれる。
次に、ホスト1上のゲストアプリケーション9の仮想アドレスを、ゲストOS7及びエミュレータ5によってホスト1の物理アドレスに置き換える際の仕組みについて説明する。図2は、本実施形態に係る仮想メモリ領域の既存のマッピングをラージページに置き換える様子を示す図である。ここでは、説明のために通常ページのサイズ10個分がラージページのサイズであるとする。
図2(1)は、既存のマッピングとして仮想ページの一部が、通常ページのサイズを使って物理ページにマッピングされている。図2(1)では、10個中7個の仮想ページが物理ページにマッピングされている。仮想メモリ領域の仮想ページ21から23は、物理ページへのマッピングが生成されていない。
図2(2)は、図2(1)のような部分的に通常ページでのマッピングが存在する仮想メモリ領域を、ラージページを使ったマッピングに置き換えたものである。ラージページサイズの仮想メモリ領域全体が、連続した物理メモリ領域にマップされる。
この置き換えにおいて、ラージページサイズの仮想メモリ領域全体を連続した物理メモリ領域にマップすることで、本来マッピングのなかった仮想ページ(図2(1)の仮想ページ21から23)に対しても物理ページをマップしてしまう。そこで、本来マップのない仮想ページを保護するために、Storage keyと呼ばれる物理メモリ保護情報を用いる。Storage keyは、IBM System zに存在するメモリ管理機能である。Storage keyにより、4KBの物理ページごとにメモリからの読み込みやメモリへの書き込みを制限できる。なお、メモリ保護属性は、仮想ページにより設定されているものと、Storage keyにより設定されているもののうち、より大きな制限を課すものが優先される。例えば、仮想ページの属性がread−onlyである場合、対応する物理ページの属性がStorage keyによってread/writeに設定されていたとしても、この仮想ページはread−onlyとしてアクセスされる。
Storage keyは、4KBの物理ページごとに関連付けられ、アーキテクチャが定義する7ビットのビット列である。7ビットのうち4ビットがアクセス制御ビット(ACC)であり、1ビットが取り出し保護ビット(F)である。このACCビット及びFビットは、メモリアクセスの制御に用いられる。他方、CPU11のレジスタ14は、PSW14a(PSW:Program Status Word)と呼ばれるグローバルなレジスタを含み、その中に4ビットのPSW keyが存在する。ACCビットは、対応する物理ページへの書込アクセス制御に用いられる。Fビットは、対応する物理ページへの読込アクセス制御に用いられる。
ここで、Storage keyによるメモリアクセスを禁止する方法について説明する。ゲストアプリケーション9が起動されて、シャドウページテーブルを用いて変換後のアドレスで物理ページにアクセスした時、CPU11は、まずPSW keyとアクセスされる物理ページのACCビットとを照合する。PSW keyとACCビットとが一致する場合には、CPU11は、アクセスを許可する。他方、PSW keyとACCビットとが不一致である場合には、CPU11は、ACCビットによりアクセスが書き込みであれば、アクセスを禁止する。また、CPU11は、ACCビットによりアクセスが読み込みであれば、次にFビットをチェックする。Fビットが「1」であれば、CPU11は、メモリからの読み込みアクセスを禁止する。アクセスを禁止した場合には、CPU11は、ハードウェアによる割り込みを発生させる。図2(1)の例では、ゲストアプリケーション9は、マップされた全ての仮想ページにアクセスできるため、PSW keyとStorage keyとが同一である。
既存のマッピングではマップされていなかった仮想ページ21から23を保護するために、図2(2)に示すように、仮想ページ21から23がマップされた物理ページの各々には、特別なStorage keyを設定して物理ページへの読み込み及び書き込みを禁止する。特別なStorage keyとは、例えば、特殊なACCビットとFビットが「1」とによる設定をいう。これによって、既存のマッピングの有無を保持しつつ、ラージページを利用することができる。物理ページ26から28は、通常とは異なるStorage keyを設定している。この設定により、既存のマッピングでマップされた仮想ページへのアクセスについては、ラージテーブルの効果が得られ、他方、マップされていない仮想ページへのアクセスは、Storage keyとPSW keyとの不一致によりアクセス対象外になる。
図3は、本実施形態に係るラージページへのマップを行う例及び行わない例を示す図である。図3(1)は、仮想メモリ領域がメモリ保護属性の異なる仮想ページを含んでいてもラージページでマップする例である。ラージページ対象の領域のうちの大半のメモリ保護属性がread/writeであるが、一部にinvalidと、read−onlyとが存在する。この場合、ラージページ自体のメモリ保護属性は、最も保護の緩いread/writeにしてマップし、invalid及びread−onlyの物理ページは、対応するStorage keyを設定することで、その物理ページを保護できる。
例えば、invalidな物理ページ31には、物理ページ31への読み込み及び書き込みを禁止するStorage keyとして特殊なACCビットとFビットが「1」とによる設定を行う。また、メモリ保護属性がread−onlyの物理ページ32には、読み込みのみを許容するStorage keyとして特殊なACCビットとFビットが「0」とによる設定を行う。なお、メモリ保護属性がread/writeの物理ページは、読み書き共に許容するStorage keyとして、通常のACCビットとFビットが「0」とによる設定を行う。
従来は、ラージページでマップするためには、そのラージページ領域中の仮想メモリ領域が全て同じメモリ保護属性を持つ必要があったので、図3(1)の例のような異なるメモリ保護属性の仮想メモリ領域を含むラージページへのマッピングが不可能であった。通常ページよりサイズの大きいラージページでマップすることで、TLBミスを減らすことができる。
図3(2)は、物理ページ33を共有(シェア)している仮想ページ間でメモリ保護属性が異なる場合である。このような場合には、物理ページでの保護が難しいため、ラージページでのマップを抑制し、通常ページによるマップを行う。
図3(3)は、既にラージページでマップされたメモリ領域中での使用されない物理ページを管理して、未使用な物理ページの量が増えた場合にラージページでのマップを抑制するものである。この場合、ラージページ中のマップされている仮想ページのカウンタと閾値とが比較されて、マップを抑制するか否かが決定される。
図3(4)は、将来ラージページでマップされるであろう仮想メモリ領域を、早い段階でラージページでマップするものである。将来を見越してラージページでマップすることで、通常ページでマップするコストを削減できる。この場合は、今までの仮想メモリ領域の使用を蓄積したラージページのマップ履歴を活用することで、メモリの使用の傾向を分析して実現する。
次に、図2及び図3で説明したマップを生成するフローチャートについて説明する。図4及び図5は、本実施形態に係る新マッピング生成時のフローチャートである。ここでは、CPU11が新規にゲストの仮想ページからホスト1の物理ページへのマッピングを作成する際の手順を説明する。
先ず、ステップS100(以下、ステップSを単にSとする。)では、新しくマッピングしたい仮想ページを、ゲストを探索して見つける。この新しくマッピングしたい仮想ページの見つけ方として、例えば、ゲストのページテーブルをwriteプロテクトしておくことで、ゲストOS7がページテーブルに書き込んだことを分かるようにする方法がある。また、他には、実際にゲストOS7にそのアドレスにアクセスさせて、ページテーブルにエントリがないために見つける方法がある。
S110において、ゲスト自身が既にラージページを使ってマップしているか否かを判断する。これは、ゲストOS7のページテーブルによって判断できる。既に従来技術においてラージページのマッピングをしている場合(S110:YES)には、処理をS160に移し、シャドウページテーブルでもラージページを用いてマッピングする。他方、ラージページのマッピングをしていない場合(S110:NO)には、処理をS120に移す。
S120では、候補になる1つの物理ページを複数の仮想ページが共有しているか否かを判断する。物理ページが共有されている場合(S120:YES)には、ラージページによるマップをあきらめて、処理を図5のS170に移す。他方、物理ページが共有されていない場合(S120:NO)には、処理をS130に移す。
候補になる物理ページが複数の仮想ページで共有されているか否かは、例えば、マッピングの回数をチェックすることで実現できる。マッピングの回数チェックの方法として、例えば、ビットベクタの対応ビットをチェックする方法が考えられる。各ビットは、対応する物理ページのマップ状態を表し、最初のマップでセットする。対応ビットをチェックしてセットがされていれば、その物理ページは、複数の仮想ページにマップされていると判断できる。他には、カウンタで管理する方法が考えられる。
S130では、ラージページの対象になる仮想メモリ領域の全ての仮想ページが同じメモリ保護属性であり、対象の仮想ページ以外の全てをマップしているか否かを判断する。この条件を満たす場合(S130:YES)には、処理をS160に移し、対象の仮想ページを含む全体をラージページでマッピングする。これは、既存のスーパーページと呼ばれる手法である。他方、この条件を満たさない場合(S130:NO)には、処理をS140に移す。
S140では、未使用の物理ページの比率やラージページの対象になる仮想メモリ領域の過去の使用履歴をチェックする。そして、未使用の物理ページや使用履歴に基づいて、ラージページにすべきか否かを判断する。ラージページにすべきであると判断する場合(S140:YES)には、処理をS150に移す。他方、ラージページにすべきではないと判断する場合(S140:NO)には、処理を図5のS190に移す。
ラージページにすべきか否かの判断は、未使用の物理ページの比率として、ラージページの対象になる仮想メモリ領域の中にマップのない仮想ページがどの程度あるかを調べることで判断できる。マップのない仮想ページが少ない場合には、ラージページでマップする。使用されない物理ページの比率の閾値は、例えば、エミュレータ5の起動時に比率を与えてもよいし、システム全体のメモリの空き状態を判断して決めてもよい。システム全体でメモリが空いている場合には、マップされない仮想ページが多くてもラージページを利用し、空きメモリがない場合には、マップされない仮想ページが少ない場合のみラージページを利用するようにしてもよい。
ラージページにすべきか否かのもう1つの判断として、過去の使用履歴に基づいて行う。マップのない仮想ページが多い場合でも、あるゲストの仮想メモリ領域に対してラージページを適用することが多ければ、現在対象にしているラージページの候補についてもラージページを適用することになる可能性が高いと考えられる。よって、ラージページを使用してマップする。これは、エミュレータ5は、ゲストOS7を仮想化し、アプリケーション切替といったゲストOS7の活動を追跡している。エミュレータ5は、ゲストアプリケーション9を識別でき、ゲストアプリケーション9ごとのラージページ利用履歴を保持できる。
S150では、Storage keyを元のメモリ保護属性に応じて物理ページに設定する。
S160では、対象全体を新たにラージページでマッピングする。その後、本処理を終了する。
図5のS170では、マップ対象の物理ページが既にラージページに組み込まれてマップされた一部になっているか否かを判断する。この判断は、例えば、ビットベクタとハッシュとを用いて、物理ページがラージページでマップされているか否かを管理する方法により実現できる。ラージページでマップするごとに、物理ページの先頭アドレスに対応するビットをセットし、そのアドレスとページテーブルエントリとのペアをハッシュに登録する。チェックする際には、マップ対象の物理ページからそれを含むラージページにアラインしたアドレスを計算して、ビットベクタの対応ビットを調べ、セットされていなければ、ラージページでマップされていないと判断する。既に他のラージページに組み込まれている場合(S170:YES)には、処理をS180に移す。他方、他のラージページに組み込まれていない場合(S170:NO)には、処理をS190に移す。
S180では、ラージページのマップを通常ページのマップに戻す。
S190では、既存の通常ページ(4KB)を使用してマッピングをする。その後、本処理を終了する。
なお、CPU11は、S160及びS190でマッピングしたシャドウページテーブルを用いて、CPU11内のTLB13を更新する。
図4及び図5を用いて説明したフローチャートによれば、ラージページでマップされる物理ページは、そのラージページにのみマップされる。個々のゲストアプリケーション9の仮想メモリ空間内では、ある物理ページが複数のマップをもつことは極めてまれであると考えられるためである。複数のアプリケーションの仮想メモリ空間の間では、共有ライブラリコードが置かれたある物理ページが複数のアプリケーションの仮想空間にマップされることがある。しかし、このようなページを含む仮想メモリ領域は、ラージページでマップしない。この条件を緩和する方法としては、例えば、コードを含んだ物理ページをそれぞれが単一マップになるように複製することが考えられる。各アプリケーションを実行している間は、命令キャッシュの利用効率に影響はなく、また、アプリケーションの切替は頻繁ではないので、切替による命令キャッシュにコードを再フェッチする影響はほとんどないので、複製による命令キャッシュへの影響は少ない。
このように、ゲストOS7が通常ページのマッピングしか行わず、仮想アドレス空間上のメモリ保護属性が異なるページが交互に現れる場合であっても、エミュレータ5が自動的にラージページを使用して仮想メモリ領域のマッピングを行う。よって、ゲストOS7に透過にハードウェアTLBミスを削減することができる。例えば、IBM System zの場合、既存のマッピングをラージページに置き換えることで、従来は、アドレス変換のために256個のハードウェアTLBエントリが必要だった仮想メモリ領域を、1個のハードウェアTLBエントリで変換することができるようになる。これにより、ハードウェアTLBへのプレッシャーが低下し、ハードウェアTLBミスを削減することができるため、エミュレータ5全体の性能を向上させることができる。
図6は、本実施形態に係るWindows(登録商標)エクスプローラのメモリ状況を示す図である。図6に示すWindowsエクスプローラの場合の例で、従来は、属性が単一の場合のみラージページを適用可能であったので、メモリ領域の4割弱がラージページを利用可能なものであった。しかし、今回の手法により、属性が混在する場合であってもラージページを適用することができる。これにより、メモリ領域の大部分にラージページを適用することができるので、ハードウェアTLBミスを削減し、エミュレータ5全体の性能を向上させることができる。
以上、IBM System z上でIntelサーバのエミュレーションをする場合のラージページの利用について述べた。しかし、本発明は、これに限らず、Storage keyのように、ラージページとして括った仮想メモリ領域の中で通常ページの単位でアクセスを制限する機能がハードウェアに存在すれば、本発明は、本質的にシャドウページテーブルを利用する全てのシステムに適用可能である。例えば、本発明をOSに適用することで、本来的に適応するOS自身の性能を向上できる。他のシステムであっても、ラージページに置き換えることによるTLBミスの削減によって、システム全体の性能向上が期待できる。
最後に、ハードウェア構成について説明する。図7は、本実施形態に係るホスト1のハードウェア構成を示す図である。図7においては、ホスト1を情報処理装置1000とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
情報処理装置1000は、CPU(Central Processing Unit)1010、バスライン1005、通信I/F1040、メインメモリ1050、BIOS(Basic Input Output System)1060、パラレルポート1080、USBポート1090、グラフィック・コントローラ1020、VRAM1024、音声プロセッサ1030、I/Oコントローラ1070並びにキーボード及びマウス・アダプタ1100等の入力手段を備える。I/Oコントローラ1070には、フレキシブル・ディスク(FD)ドライブ1072、ハードディスク1074、光ディスク・ドライブ1076、半導体メモリ1078等の記憶手段を接続することができる。
グラフィック・コントローラ1020には、表示装置1022が接続されている。また、音声プロセッサ1030には、増幅回路1032及びスピーカ1034が接続される。
BIOS1060は、情報処理装置1000の起動時にCPU1010が実行するブートプログラムや、情報処理装置1000のハードウェアに依存するプログラム等を格納する。FD(フレキシブル・ディスク)ドライブ1072は、フレキシブル・ディスク1071からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供する。
光ディスク・ドライブ1076としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、BD(Blu−ray Disc)ドライブ等を使用することができる。この際は各ドライブに対応した光ディスク1077を使用する必要がある。光ディスク・ドライブ1076は光ディスク1077からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供することもできる。
情報処理装置1000に提供されるコンピュータ・プログラムは、フレキシブル・ディスク1071、光ディスク1077又はメモリカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、I/Oコントローラ1070を介して、記録媒体から読み出され、又は通信I/F1040を介してダウンロードされることによって、情報処理装置1000にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク1071、光ディスク1077又はメモリーカードの他に、MD等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置1000に提供してもよい。
以上の例は、情報処理装置1000について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。したがって、本発明において1つの実施形態として説明した情報処理装置は、方法及びそのコンピュータ・プログラムによっても実現可能である。
本装置は、ハードウェア、ソフトウェア又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。係る場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明に係る処理を実行させる。このプログラムは、任意の言語、コード又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は(1)他の言語、コード、もしくは表記への変換、(2)他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、RAM、M−RAM(Magnetoresistive RAM)、フラッシュメモリ等の任意のコンピュータ可読媒体に格納することができる。係るプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、係るプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
1 ホスト
3 ホストOS
5 エミュレータ
7 ゲストOS
9 ゲストアプリケーション
10 ホストハードウェア
11 CPU
13 TLB
14 レジスタ
16 メモリ
21,22,23 仮想ページ
26,27,28,31,32,33 物理ページ

Claims (8)

  1. コンピュータによって、仮想アドレスから物理アドレスへのアドレス変換を高速化する方法であって、
    所定の条件を満たすページ単位の仮想ページを複数含んだ仮想メモリ領域を、前記仮想ページよりも大きい領域であるラージページでマップするステップと、
    マップした前記ラージページに含まれる一部の前記仮想ページのメモリ保護属性がその他の前記仮想ページのメモリ保護属性と異なることを条件に、前記メモリ保護属性が異なる前記一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定するステップと、
    を含む方法。
  2. 前記所定の条件は、前記ラージページでのマップ対象の複数の前記仮想ページの各々に対応する物理ページが他の仮想ページのいずれにも対応していない場合である、
    請求項1に記載の方法。
  3. 前記所定の条件は、前記ラージページでのマップ対象の複数の前記仮想ページのうち対応する前記物理ページが存在しない割合が所定量より少ない場合である、
    請求項1に記載の方法。
  4. 前記所定の条件は、過去のラージページの使用履歴に基づいて前記ラージページでのマップ対象にすると判定した場合である、
    請求項1に記載の方法。
  5. 新しくマッピングしたい前記仮想ページが存在したことに応じて、前記所定の条件を満たすか否かを判定するステップを含む、
    請求項1に記載の方法。
  6. 前記物理ページに対応する前記他の仮想ページが前記ラージページでマップされていることに応じて、前記ラージページをページ単位の仮想ページに戻すステップを含む、
    請求項2に記載の方法。
  7. 前記コンピュータが、他のコンピュータで実行可能なアプリケーションと、前記アプリケーションのエミュレータとを記憶する、
    請求項1に記載の方法。
  8. 仮想アドレスから物理アドレスへのアドレス変換を高速化するシステムであって、
    新しくマッピングしたい仮想ページが存在したことに応じて、所定の条件を満たすか否かを判定する事前判定手段と、
    前記事前判定手段により前記所定の条件を満たすことに応じて、ページ単位の仮想ページを複数含んだ仮想メモリ領域を、前記仮想ページよりも大きい領域であるラージページでマップするラージページマップ手段と、
    前記ラージページマップ手段がマップした前記ラージページに含まれる一部の前記仮想ページのメモリ保護属性がその他の前記仮想ページのメモリ保護属性と異なることを条件に、前記メモリ保護属性が異なる前記一部の仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定する保護設定手段と、
    を備えるシステム。
JP2009285375A 2009-12-16 2009-12-16 アドレス変換を高速化する方法及びシステム Expired - Fee Related JP4915756B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009285375A JP4915756B2 (ja) 2009-12-16 2009-12-16 アドレス変換を高速化する方法及びシステム
US12/970,046 US8806146B2 (en) 2009-12-16 2010-12-16 Method and system to accelerate address translation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009285375A JP4915756B2 (ja) 2009-12-16 2009-12-16 アドレス変換を高速化する方法及びシステム

Publications (2)

Publication Number Publication Date
JP2011128787A true JP2011128787A (ja) 2011-06-30
JP4915756B2 JP4915756B2 (ja) 2012-04-11

Family

ID=44144210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009285375A Expired - Fee Related JP4915756B2 (ja) 2009-12-16 2009-12-16 アドレス変換を高速化する方法及びシステム

Country Status (2)

Country Link
US (1) US8806146B2 (ja)
JP (1) JP4915756B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825320A (zh) * 2018-08-07 2020-02-21 马维尔国际贸易有限公司 虚拟化固态存储介质的隔离区域

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954707B2 (en) 2012-08-03 2015-02-10 International Business Machines Corporation Automatic use of large pages
WO2014142809A1 (en) * 2013-03-12 2014-09-18 Empire Technology Development, Llc Accelerator buffer access
CN106326144B (zh) * 2015-06-24 2019-08-06 龙芯中科技术有限公司 基于大页映射的数据读取方法及装置
US9734088B2 (en) 2015-08-12 2017-08-15 International Business Machines Corporation Memory management unit and method for accessing data
US9983820B2 (en) * 2016-03-29 2018-05-29 Nxp B.V. Method for performing data updates

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836528A (ja) * 1994-01-12 1996-02-06 Sun Microsyst Inc 複数のページ・サイズをサポートする仮想メモリ・コンピュータ・システム用の再マッピング装置及び再マッピング方法
JPH08101797A (ja) * 1994-09-27 1996-04-16 Hewlett Packard Co <Hp> 変換索引バッファ
JP2000057054A (ja) * 1998-08-12 2000-02-25 Fujitsu Ltd 高速アドレス変換システム
JP2005135396A (ja) * 2003-10-30 2005-05-26 Microsoft Corp アドレス変換制御のためのシャドウ・ページテーブル
JP2006260395A (ja) * 2005-03-18 2006-09-28 Nec Corp プログラムローディング方法及びその装置
WO2009087134A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US7475183B2 (en) * 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836528A (ja) * 1994-01-12 1996-02-06 Sun Microsyst Inc 複数のページ・サイズをサポートする仮想メモリ・コンピュータ・システム用の再マッピング装置及び再マッピング方法
JPH08101797A (ja) * 1994-09-27 1996-04-16 Hewlett Packard Co <Hp> 変換索引バッファ
JP2000057054A (ja) * 1998-08-12 2000-02-25 Fujitsu Ltd 高速アドレス変換システム
JP2005135396A (ja) * 2003-10-30 2005-05-26 Microsoft Corp アドレス変換制御のためのシャドウ・ページテーブル
JP2006260395A (ja) * 2005-03-18 2006-09-28 Nec Corp プログラムローディング方法及びその装置
WO2009087134A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825320A (zh) * 2018-08-07 2020-02-21 马维尔国际贸易有限公司 虚拟化固态存储介质的隔离区域

Also Published As

Publication number Publication date
US8806146B2 (en) 2014-08-12
JP4915756B2 (ja) 2012-04-11
US20110145541A1 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US7739477B2 (en) Multiple page size address translation incorporating page size prediction
US8661181B2 (en) Memory protection unit in a virtual processing environment
TWI622880B (zh) 比較及取代動態位址轉譯表項之電腦程式產品、電腦系統及方法
JP5079104B2 (ja) 変換例外修飾子を用いる動的アドレス変換
EP1898311B1 (en) Method and apparatus for preventing software side channel attacks
US7783859B2 (en) Processing system implementing variable page size memory organization
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US20140108701A1 (en) Memory protection unit in a virtual processing environment
JP4915756B2 (ja) アドレス変換を高速化する方法及びシステム
JP2013500525A (ja) I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減
KR20120058352A (ko) 하이브리드 메모리 시스템, 및 그 관리 방법
JP2008299530A (ja) メインメモリに書き込むデータをキャッシュする技術
CN113486349B (zh) 存储器扫描方法和装置
US20160259732A1 (en) Managing reuse information for memory pages
EP3757799B1 (en) System and method to track physical address accesses by a cpu or device
IL280088B2 (en) A memory protection unit that uses a memory protection table stored in a memory system
US9471509B2 (en) Managing address-independent page attributes
JP2009282774A (ja) エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
US11907301B2 (en) Binary search procedure for control table stored in memory system
JP2019144921A (ja) 情報処理装置及び情報処理方法
JP2023554308A (ja) メモリ攻撃軽減のための方法及びシステム
US7769979B1 (en) Caching of page access parameters
EP4127944A1 (en) Memory management apparatus and method
KR20190018321A (ko) 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111220

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120117

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees