JP2011203854A - メモリ管理装置、メモリ管理方法及びメモリ管理プログラム - Google Patents

メモリ管理装置、メモリ管理方法及びメモリ管理プログラム Download PDF

Info

Publication number
JP2011203854A
JP2011203854A JP2010068704A JP2010068704A JP2011203854A JP 2011203854 A JP2011203854 A JP 2011203854A JP 2010068704 A JP2010068704 A JP 2010068704A JP 2010068704 A JP2010068704 A JP 2010068704A JP 2011203854 A JP2011203854 A JP 2011203854A
Authority
JP
Japan
Prior art keywords
asid
virtual
domain
real
identification information
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
JP2010068704A
Other languages
English (en)
Other versions
JP5459006B2 (ja
Inventor
Naoki Nishiguchi
直樹 西口
Noboru Iwamatsu
昇 岩松
Masatomo Yazaki
昌朋 矢崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010068704A priority Critical patent/JP5459006B2/ja
Priority to US12/929,943 priority patent/US8954709B2/en
Publication of JP2011203854A publication Critical patent/JP2011203854A/ja
Application granted granted Critical
Publication of JP5459006B2 publication Critical patent/JP5459006B2/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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】複数のVMが動作した場合にも、仮想化していないときと同等までTLBフラッシュを抑制する。
【解決手段】VMにおいて実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想ASID、プログラムを実行するVMに対して割り当てられるメモリ上の領域を識別する実ASID、実ASIDが複数のVMに対して重複して割り当てられている旨を示す重複フラグをVM毎に対応付けて管理するASID変換表43及び実ASID使用表44と、切替元VMから切替先VMへ切り替える際に、切替先VMに対して割り当てられている実ASIDを読み出し、読み出した実ASIDが複数のVMに対して重複して割り当てられているか否かを重複フラグを参照して判定し、この読み出した実ASIDの内、重複して割り当てられていると判定された実ASIDをTLBフラッシュの対象とするTLBフラッシュ制御部50とを有する。
【選択図】図1

Description

本発明は、メモリ管理装置、メモリ管理方法及びメモリ管理プログラムに関する。
組み込み機器(例えば、携帯電話機)で使用されている中央処理ユニット(Central Processing Unit:以下、単にCPUと称する)の性能が向上し、仮想化して複数オペレーティングシステム(Operating System:以下、単にOSと称する)を動作させることが可能となってきた。そのような機器では、パソコンやサーバ用のCPUのように、仮想化のサポートのあるCPUではなく、組み込みに特化したCPUを使用している。つまり、組み込み機器における仮想化は、性能面では可能であるが、機能面ではソフトによる仮想化のサポートが必要な状況にある。
仮想環境で動作するOS(ゲストOS)が、仮想環境ではないときに行っているTLB(Translation Lookaside Buffer)フラッシュをなくす制御は、仮想化した際に、各ゲストOSで何もしなければ、ゲスト間の切り替えでは有効に働かない。その結果、仮想化していないときに比べTLBフラッシュが増加することになる。
例えば、通常、OSのカーネル領域として使用される仮想メモリにおけるグローバルな領域は、ゲストOS間で同じ仮想アドレスに存在する可能性がある。また、プロセス毎のメモリマップをTLBのエントリとしてキャッシュできるようにするASID(Address Space Identifier)により、ゲスト内のプロセス切り替えではTLBフラッシュの必要はないが、ゲスト間の切り替えでは、ASIDが重複した場合、TLBフラッシュが必要となる。
ASIDは、プロセスIDに対応付けて使用しているため、OSでは0から順に使用されており、ゲスト間で重複する可能性が高い。さらに、メモリ領域を分類してアクセス保護を可能とするドメインにより、各OSは、カーネル領域やユーザ領域を分けてドメインによるアクセス制御を行っている。
ドメイン重複時には、グローバル領域かASIDが同じ場合に、ゲスト間の切り替えでTLBフラッシュが必要となる。特に、グローバル領域は同じドメインであることが多い。
また、ゲストOSにおいて、複数ゲストOSが存在することを前提に制御を変更することを考えてみる。例えば、ゲストが扱えるASIDの最大数を制限すると、OSの扱えるプロセス数を制限することにつながり、如いてはOSの設計自体に影響を与えることにつながる。つまり、ゲストOSの制御を適切に変更することは非常に難しいと言わざるを得ない。
ゲストOSのASIDの使用法を変更しないようにするために、ゲストOSが使用するASIDと実際のASIDとの対応表を用意し、ゲストOSは自由にASIDを使用するが、実際のASIDは重複しないように制御する方法が提案されている。
特開2009−151650号公報 特許第2825550号公報 特開平5−35597号公報
しかしながら、従来技術ではグローバル領域のTLBフラッシュを削減することはできない。
また、従来技術では、TLBのエントリを管理することにより、実際に使用されているASIDを正確に把握し、空いているASIDを回収して同じASIDを重複して使用する状況を避けている。しかしながら、TLBのエントリを管理することは、非常に重い処理であり、TLBフラッシュを削減する意味が薄れてしまう。つまり、TLBのエントリを管理することは、実際の環境では行えないため、ASIDを回収することができず、ASIDを重複使用せざるを得ない状況となる。このような状況に対して従来技術では対応できないのが実情である。
開示技術は上記点に鑑みてなされたものであり、その目的とするところは、仮想環境上の制御を極力変更することなく、複数の仮想環境が動作した場合にも、仮想化していないときと同等までTLBフラッシュを抑制するメモリ管理装置等を提供することである。
本願の開示するメモリ管理装置は、一つの態様において、仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて管理する領域識別情報管理部と、前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定部と、前記重複判定部によって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を管理する重複領域管理部と、実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御部とを有するようにした。
本願の開示するメモリ管理装置の一つの態様では、仮想環境上の制御を極力変更することなく、複数の仮想環境が動作した場合にも、仮想化していないときと同等までTLBフラッシュを抑制できるという効果を奏する。
図1は、メモリ管理装置のハードウェア及びソフトウェア構成を示す説明図である。 図2は、ASID変換表のエントリ内容の一例を示す説明図である。 図3は、実ASID使用表のエントリ内容の一例を示す説明図である。 図4は、ドメイン変換表のエントリ内容の一例を示す説明図である。 図5は、実ドメイン使用表のエントリ内容の一例を示す説明図である。 図6は、ASID設定部の処理動作を示すフローチャートである。 図7は、ドメイン設定部の処理動作を示すフローチャートである。 図8は、ASID管理部の処理動作を示すフローチャートである。 図9は、ASID制御部の処理動作を示すフローチャートである。 図10は、ドメイン管理部の処理動作を示すフローチャートである。 図11は、ドメイン制御部の処理動作を示すフローチャートである。 図12は、コンテキストスイッチ制御部の処理動作を示すフローチャートである。 図13は、例外処理部の処理動作を示すフローチャートである。 図14は、TLBフラッシュ制御部の処理動作を示すフローチャートである。 図15は、実施例2のTLBフラッシュ制御部の処理動作を示すフローチャートである。 図16は、実施例3のTLBフラッシュ制御部の処理動作を示すフローチャートである。 図17は、TLBフラッシュ判断情報の一例を示す説明図である。
以下、図面に基づいて、本願の開示するメモリ管理装置、メモリ管理方法及びメモリ管理プログラムの実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
図1は、メモリ管理装置のハードウェア及びソフトウェア構成を示す説明図である。図1に示すメモリ管理装置1は、ハードウェア構成10として、メモリ11、メモリ管理ユニット(Memory Management Unit:以下、単にMMUと称する)12、TLB13及びCPU14を有する。CPU14は、命令を実行することに加え、例外を発生させる。MMU12は、ASID設定やドメインアクセス設定を実行する部位に相当し、その設定に基づきメモリ11へのアクセスを実現する。この際、MMU12は、ページテーブルをメモリ11やTLB13から参照する。また、TLB13のフラッシュもMMU12にて行う。メモリ11は、ハイパーバイザやVMのソフトウェア等が保持され、CPU14を通じて、MMU12経由でアクセスされる。
更に、メモリ管理装置1は、ソフトウェア構成20として、仮想環境下でゲストOSを動作する複数の仮想マシン(Virtual Machine:以下、単にVMと称する)21と、これら複数のVM21を管理するハイパーバイザ22とを有する。
VM21は、ASID設定部31及びドメイン設定部32を有する。ASID設定部31は、VM21上のOSが管理しているプロセスに設定される仮想ASIDをハイパーバイザ22に通知する。ドメイン設定部32は、VM21上のOSが管理している仮想アドレス空間を構成するページテーブルエントリの変更やドメインアクセス設定をハイパーバイザ22に通知する。
VM21には、OSを修正することなく、そのまま動作可能な完全仮想化と、特権命令をハイパーバイザ22への呼び出し、すなわちハイパーコールに修正してOSを動作させる準仮想化との2種類が存在する。VM21からハイパーバイザ22への通知の仕方も完全仮想化と準仮想化との2種類が存在する。完全仮想化のVM21の場合は、VM21上で特権命令が実行されると、CPU14が例外を発生させるため、その例外によってハイパーバイザ22への通知が可能である。準仮想化のVM21の場合は、ハイパーコールでハイパーバイザ22に通知する。尚、ハイパーコールはソフトウェア割り込み等のCPU14の機能を利用して実現される。完全仮想化の場合も、ハイパーコールによる通知が可能である。これらの通知機能を利用して、VM21からハイパーバイザ22に指示を出す。
ハイパーバイザ22は、ASID管理部41、ASID制御部42、ASID変換表43及び実ASID使用表44を有する。図2は、ASID変換表43のエントリ内容の一例を示す説明図である。ASID変換表43は、VM21毎に用意され、VM21の仮想ASIDとMMU12に設定する実ASIDとの対応表である。図2に示すASID変換表43のエントリ内容は、VMID43A、仮想ASID43B、実ASID43C、重複フラグ43D、TLB要否フラグ43E及び使用中フラグ43Fを含む。
VMID43Aは、該当VM21を一意に識別するIDに相当する。仮想ASID43Bは、VM21上で動作するOSにより実行されるプロセス毎の仮想アドレス空間を識別するためのアドレス空間識別情報である。仮想ASID43Cは、例えば、ARMプロセッサの場合、0〜255を指定可能である。重複フラグ43Dは、当該実ASIDを重複割当中の複数の仮想ASIDのプロセスがあるか否か、すなわち「有」又は「無」を示すフラグに相当する。TLB要否フラグ43Eは、当該プロセスへの切替時にTLBフラッシュが必要であるか否か、すなわち「要」又は「否」を示すフラグに相当する。尚、TLB要否フラグ43Eは、当該VM21がTLBフラッシュを実行すると、そのTLBフラッシュを「否」に設定するものである。
使用中フラグ43Fは、当該VM21のOSにて仮想ASIDのプロセスが現在使用中であるか否か、すなわち「使用中」又は「未使用」を示すフラグに相当する。ASID変換表43は、実ASIDに無効な値を設定することで使用中フラグを代用しても良い。尚、ASID変換表43は、仮想ASIDの最大個数分のテーブル領域を予め準備しても良く、この場合、最大個数分のテーブル領域を確保する必要があるが、仮想ASIDを検索する際の作業効率が向上するものである。また、ASID変換表43は、有効な仮想ASIDのみをリストとして追加するようにしても良い。
図3は、実ASID使用表44のエントリ内容の一例を示す説明図である。実ASID使用表44は、実ASIDの使用状況を管理する。図3に示す実ASID使用表44のエントリ内容は、実ASID44A、重複フラグ44B、使用中フラグ44C、重複使用中の仮想マシンリスト44Dを含む。重複フラグ44Bは、実ASIDを重複割当中の仮想ASIDのプロセスがあるか否か、すなわち「有」又は「無」を示すフラグに相当する。使用中フラグ44Cは、当該実ASIDを使用中であるか否か、すなわち「使用中」又は「未使用」を示すフラグに相当する。重複使用中の仮想マシンリスト44Dは、当該実ASIDを使用中のVMID及び仮想ASIDの組を管理する。
ASID管理部41は、VM21からASID割当やASID削除の指示を得て、このVM21のASID変換表43及び実ASID使用表44の内容を更新すると共に、VM終了時にVM21に対応するASID変換表43を削除する。
ASID制御部42は、仮想ASIDを実ASIDに変換し、実ASIDをMMU12に対して設定する。ASID制御部42は、ASID変換表43からVMID及び仮想ASIDをキーにエントリを取得し、エントリの重複フラグ43Dが「有」の場合、仮想ASIDが重複していると判断する。更に、ASID制御部42は、このエントリの実ASIDをキーに実ASID使用表44からVMID及び仮想ASIDの仮想マシンリスト44Dを取得する。更に、ASID制御部42は、このリストに対して、ASID変換表43からエントリを取得し、このエントリのTLB要否フラグ43Eを「要」に変更する。
更に、ハイパーバイザ22は、ドメイン管理部45、ドメイン制御部46、ドメイン変換表47及び実ドメイン使用表48を有する。図4は、ドメイン変換表47のエントリ内容の一例を示す説明図である。ドメイン変換表47は、VM21毎に備えられ、VM21の仮想ドメインとMMU12に設定する際の実ドメインとの対応関係を示す変換表である。図4に示すドメイン変換表47は、VMID47A、仮想ドメイン47B、実ドメイン47C、アクセス設定47D、重複フラグ47E、TLB要否フラグ47F、使用中フラグ47G、グローバル47H及びローカル47Iを含む。
VMID47Aは、VM21を一意に識別するIDに相当する。尚、VMID47Aは、ドメイン変換表47がVM21毎に保持可能であれば、省略可能である。仮想ドメイン47Bは、VM21のOSが使用するドメインに相当する。仮想ドメイン47Bは、ARMプロセッサの場合、0〜15を指定可能である。実ドメイン47Cは、ハードウェアに設定する際のドメインに相当する。尚、ASIDと異なり、同一VM21内で異なる仮想ドメインが同一の実ドメインと対応付けられることはない。アクセス設定47Dは、当該仮想ドメイン47Bに対応した実ドメインに対応するメモリ領域のアクセス権限の設定内容を管理する。尚、アクセス権限には、アクセス可、アクセス不可、ページテーブルエントリのフラグに従うといった設定がある。
重複フラグ47Eは、実ドメインを重複割当中の複数の仮想ドメインがあるか否か、すなわち「有」又は「無」を示すフラグに相当する。TLB要否フラグ47Fは、当該プロセスへの切替時にTLBフラッシュが必要であるか否か、すなわち「要」又は「否」を示すフラグに相当する。尚、TLB要否フラグ47Fは、当該VM21がTLBフラッシュを実行すると、そのTLBフラッシュを「否」に設定するものである。使用中フラグ47Gは、当該VM21のOSにて仮想ドメインが現在使用中であるか否か、すなわち「使用中」又は「未使用」を示すフラグに相当する。ドメイン変換表47は、実ドメインに無効な値を設定しても良い。
また、グローバル47Hは、仮想ドメインがグローバル領域に使用されている場合に設定し、ローカル47Iは、仮想ドメインがローカル領域に使用されている場合に設定する。尚、グローバル領域又はローカル領域に使用されているか否かは、ページテーブルエントリ内のフラグとして存在し、グローバル領域の場合はTLB13にASIDと関係なくキャッシュされる。TLB13にキャッシュされる情報は、仮想アドレス、ページサイズ、物理アドレス及びページテーブルエントリのフラグ群に相当する。また、ローカル領域の場合はTLB13にASIDと関連付けてキャッシュされる。この際、TLB13にキャッシュされる情報は、仮想アドレス、ページサイズ、物理アドレス、ページテーブルエントリ内のフラグ群及びASIDに相当する。
尚、ドメイン変換表47は、仮想ドメインの最大個数分のテーブル領域を予め準備しても良く、この場合、最大個数分のテーブル領域を確保する必要があるが、仮想ドメインを検索する際の作業効率が向上するものである。また、ドメイン変換表47は、有効な仮想ドメインのみをリストとして追加するようにしても良い。
図5は、実ドメイン使用表48のエントリ内容の一例を示す説明図である。実ドメイン使用表48は、実ドメインの使用状況を管理する。図5に示す実ドメイン使用表48のエントリ内容は、実ドメイン48A、重複フラグ48B、使用中フラグ48C、重複使用中の仮想マシンリスト48Dを含む。重複フラグ48Bは、実ドメインを重複割当中の仮想ドメインがあるか否か、すなわち「有」又は「無」を示すフラグに相当する。使用中フラグ48Cは、当該実ドメインを使用中であるか否か、「使用中」又は「未使用」を示すフラグに相当する。重複使用中の仮想マシンリスト48Dは、当該実ドメインを使用中のVMID及び仮想ドメインの組を管理する。
ドメイン管理部45は、VM21からドメイン割り当て、ドメイン削除、ドメインアクセス設定、ページテーブルエントリ設定の指示を得て、そのVM21のドメイン変換表47及び実ドメイン使用表48の内容を更新する。更に、ドメイン管理部45は、VM21の終了時に、VM21に対応するドメイン変換表47を削除する。
ドメイン制御部46は、VM21のドメイン変換表47からドメインアクセス設定を構築し、そのドメインアクセス設定をMMU12に対して設定する。ドメイン制御部46は、ドメイン変換表47からVMID47A及び仮想ドメイン47Bをキーにエントリを取得し、エントリの重複フラグ47Eが「有」の場合、仮想ドメインが重複していると判断する。更に、ドメイン制御部46は、このエントリの実ドメインをキーに実ドメイン使用表48からVMID及び仮想ドメインの仮想マシンリスト48Dを取得する。更に、ドメイン制御部46は、このリストに対してドメイン変換表47からエントリを取得し、このエントリのTLB要否フラグ47Fを「要」に変更する。
更に、ハイパーバイザ22は、コンテキストスイッチ制御部49、TLBフラッシュ制御部50及び例外処理部51を有する。
コンテキストスイッチ制御部49は、VM21間の切替や同一VM21内のプロセス切替等のコンテキストスイッチを実行する。更に、コンテキストスイッチ制御部49は、TLBフラッシュ制御部50に対してTLBフラッシュの制御処理の実行を指示する。更に、コンテキストスイッチ制御部49は、ASID制御部42に対して仮想ASIDを切替える処理の実行を指示し、ドメイン制御部46に対してドメインアクセス設定処理の実行を指示する。その後、CPU14のレジスタの入れ替えやページテーブルの置き換え等のコンテキストスイッチの処理を行う。
また、TLBフラッシュ制御部50は、TLBフラッシュの制御処理において、TLBフラッシュが必要であるか否かを判定し、必要の場合、MMU12に対してTLBフラッシュの命令を発行する。また、例外処理部51は、CPU14が発生する例外を処理する。
次に、実施例1のメモリ管理装置1の動作について説明する。図6は、ASID設定部31の処理動作を示すフローチャートである。ASID設定部31は、VM21上で動作するOSにより実行されるプロセスの管理処理と連動して、ハイパーバイザ22へ所定の指示を通知する。尚、プロセスの管理としては、プロセス作成、プロセス削除、プロセス切り替え等がある。
図6に示すASID設定部31は、プロセスを作成するか否かを判定する(ステップS11)。ASID設定部31は、プロセスを作成する場合(ステップS11肯定)、当該プロセスに新たな仮想ASIDを割り当てる(ステップS12)。更に、ASID設定部31は、仮想ASIDの割当を通知すべく、ハイパーバイザ22のASID管理部41を呼び出し(ステップS13)、この処理動作を終了する。
ASID設定部31は、プロセスを作成しない場合(ステップS11否定)、プロセスを削除するか否かを判定する(ステップS14)。ASID設定部31は、プロセスを削除する場合(ステップS14肯定)、仮想ASIDを解放する(ステップS15)。更に、ASID設定部31は、仮想ASIDの削除を通知すべく、ハイパーバイザ22のASID管理部41を呼び出し(ステップS16)、この処理動作を終了する。
ASID設定部31は、プロセスを削除しない場合(ステップS14否定)、プロセスを切替えたか否かを判定する(ステップS17)。ASID設定部31は、プロセスを切替える場合(ステップS17肯定)、プロセスの切替処理を行い、切替先プロセスに対応する仮想ASIDを取得する(ステップS18)。更に、ASID設定部31は、切替先プロセスの仮想ASIDを通知すべく、ハイパーバイザ22のコンテキストスイッチ制御部49を呼び出し(ステップS19)、この処理動作を終了する。また、ASID設定部31は、プロセスを切替えない場合(ステップS17否定)、この処理動作を終了する。
図7は、ドメイン設定部32の処理動作を示すフローチャートである。ドメイン設定部32は、VM21上で動作するOSにより実行される、プロセス毎に作成される仮想アドレス空間のためのページテーブルの作成処理や、ドメインアクセスの設定処理に連動して、ハイパーバイザ22に指示を通知する。尚、仮想ドメインは、ページテーブルのエントリ内にドメイン番号として設定される。そのページテーブルによってアクセスされるアドレス空間は、そのドメインに属すことになる。ドメインアクセス設定は、ドメイン番号毎にアクセス権を設定するものであり、アクセス不可、アクセス可、ページテーブルのフラグに従うといったアクセス権がドメイン番号毎に設定できる。
図7においてドメイン設定部32は、使用する新たな仮想ドメインを追加するか否かを判定する(ステップS21)。ドメイン設定部32は、使用する新たな仮想ドメインを追加する場合(ステップS21肯定)、追加する仮想ドメインのドメイン番号を通知すべく、ハイパーバイザ22のドメイン管理部45を呼び出し(ステップS22)、この処理動作を終了する。尚、仮想ドメインをグローバル領域又はローカル領域の一方又は両方で使用するか否かを指定することも可能である。
また、ドメイン設定部32は、仮想ドメインを追加しなかった場合(ステップS21否定)、使用しなくなった仮想ドメインを削除するか否かを判定する(ステップS23)。ドメイン設定部32は、使用しなくなった仮想ドメインを削除する場合(ステップS23肯定)、削除する仮想ドメインのドメイン番号を通知すべく、ハイパーバイザ22のドメイン管理部45を呼び出し(ステップS24)、この処理動作を終了する。
また、ドメイン設定部32は、仮想ドメインを削除しなかった場合(ステップS23否定)、ドメインアクセスを設定するか否かを判定する(ステップS25)。ドメイン設定部32は、ドメインアクセスを設定する場合(ステップS25肯定)、そのドメインアクセスの設定を通知すべく、ハイパーバイザ22のドメイン管理部45を呼び出し(ステップS26)、この処理動作を終了する。
更に、ドメイン設定部32は、ドメインアクセスを設定しない場合(ステップS25否定)、ページテーブルのエントリ内容の修正であるか否かを判定する(ステップS27)。ドメイン設定部32は、ページテーブルのエントリ内容の修正である場合(ステップS27肯定)、そのエントリ内容をハイパーバイザ22のドメイン管理部45に通知し(ステップS28)、この処理動作を終了する。
更に、ドメイン設定部32は、ページテーブルのエントリ内容の修正でない場合(ステップS27否定)、この処理動作を終了する。
尚、ドメイン設定部32による仮想ドメインの追加や削除は、ハイパーバイザ22に通知するように構成したが、ページテーブルエントリからハイパーバイザ22がドメイン番号を抜き出し、自動的に使用仮想ドメインを追加するようにしても良い。また、ページテーブルエントリのグローバルフラグをチェックすることで仮想ドメインがグローバル領域又はローカル領域で使用されているかを判別できる。このため、仮想ドメインの追加や削除を、ドメイン設定部32で行わない方法も可能である。
図8は、ASID管理部41の処理動作を示すフローチャートである。ASID管理部41は、VM21のASID設定部31又は、VM21が終了する際、図示せぬVM管理部からの呼出動作に応じて起動する。尚、VM管理部は、ハイパーバイザ22内に配置し、当該VM21の生成や終了、VM21の切替等を管理するものである。このVM21の切替とは、一般にスケジューラを使用し、複数のVM21が存在する場合、一定時間毎に、CPU14を使用する、つまり、実際に動作するVM21を切替えることである。
図8においてASID管理部41は、VM21のASID設定部31から新たな仮想ASIDの割当を検出したか否かを判定する(ステップS31)。ASID管理部41は、新たな仮想ASIDの割当を検出した場合(ステップS31肯定)、実ASID使用表44のエントリ内容を参照し、新たな仮想ASIDに対応する実ASIDを割り当てると共に、当該仮想ASIDに対応したASID変換表43を更新し(ステップS32)、この処理動作を終了する。尚、ASID管理部41は、実ASID使用表44のエントリ内容を参照し、未使用の実ASIDを新たな仮想ASIDに優先的に割り当てる。その結果、ASID管理部41は、実ASID使用表44及びASID変換表43の実ASIDの使用中フラグを「使用中」に設定する。更に、ASID管理部41は、実ASID使用表44の実ASIDに対応する仮想マシンリスト(VMID及び仮想ASID)44Dを追加する。
また、ASID管理部41は、全ての実ASIDが「使用中」の場合、重複していない実ASID、同一VM21が使用していない実ASID、TLB要否フラグが「否」の実ASID等を割り当てるようにしても良い。また、ASID管理部41は、割り当てられた実ASIDが重複して割り当てられた場合、実ASID使用表44の当該実ASIDの重複フラグ44Bを「有」に設定すると共に、ASID変換表43の当該実ASIDの重複フラグ43Dを「有」に設定する。更に、ASID管理部41は、重複しているVM21の仮想ASIDに関し、ASID変換表43のTLB要否フラグ43Eに「要」が存在する場合、対象VM21のASID変換表43の仮想ASIDのTLB要否フラグ43Eを「要」に設定する。
ASID管理部41は、新たな仮想ASIDの割当を検出しなかった場合(ステップS31否定)、仮想ASIDの削除を検出したか否かを判定する(ステップS33)。ASID管理部41は、仮想ASIDの削除を検出した場合(ステップS33肯定)、実ASID使用表44のエントリ内容を参照し、削除の仮想ASIDに対応する実ASIDを解放する(ステップS34)。更に、ASID管理部41は、当該仮想ASIDに対応したASID変換表43を更新し(ステップS34)、この処理動作を終了する。
尚、ASID管理部41は、削除の仮想ASIDに対応するASID変換表43の実ASIDを無効な値にして使用中フラグ43Fの設定を解除する(未使用)。また、ASID管理部41は、重複が設定中の実ASIDに対応する実ASID使用表44のVMID及び仮想ASIDの組を削除し、残りの組が1個の場合、その重複フラグ44Bの設定を解除する(無)。更に、ASID管理部41は、残りの組が1個の場合、その組に対応するASID変換表43の仮想ASIDの重複フラグ43Dの設定を解除する(無)。
ASID管理部41は、仮想ASIDの削除を検出しなかった場合(ステップS33否定)、VM管理部からVM終了を検出したか否かを判定する(ステップS35)。ASID管理部41は、VM終了を検出した場合(ステップS35肯定)、当該VM21が使用している全ての仮想ASIDを解放する(ステップS36)。更に、ASID管理部41は、当該VM21が使用している全ての仮想ASIDを管理するASID変換表43を削除し(ステップS36)、この処理動作を終了する。また、ASID管理部41は、VM終了を検出しなかった場合(ステップS35否定)、この処理動作を終了する。
図9は、ASID制御部42の処理動作を示すフローチャートである。ASID制御部42は、コンテキストスイッチ制御部49から呼び出されると、設定対象として指定された仮想ASIDとその仮想ASIDを使用するVM21を示すVMIDとを、コンテキストスイッチ制御部49から引き渡される。
図9においてASID制御部42は、コンテキストスイッチ制御部49から呼び出されると、設定対象として指定された仮想ASIDに対応する実ASIDをASID変換表43のエントリから取得する(ステップS41)。ASID制御部42は、実ASIDの重複フラグ43Dに基づき、実ASIDが重複使用されているか否かを判定する(ステップS42)。ASID制御部42は、実ASIDが重複使用されている場合(ステップS42肯定)、実ASID使用表44に登録されている実ASIDに対応する重複使用の仮想マシンリスト44D内の重複使用のVMID及び仮想ASIDを検索する。更に、ASID制御部42は、仮想マシンリスト44D内のVMID及び仮想ASIDの内、対象VMID及び対象仮想ASIDとは別のVMIDと仮想ASIDの組に対して、ASID変換表43に登録されているASID変換情報を取得する。更に、ASID制御部42は、ASID変換情報を取得すると、TLB要否フラグ43Eに「要」を設定する(ステップS43)。そして、ASID制御部42は、実ASIDをMMU12に設定し(ステップS44)、この処理動作を終了する。
更に、ASID制御部42は、実ASIDが重複使用されていない場合(ステップS42否定)、ASID変換情報の設定処理を実行せず、実ASIDをMMU12に設定すべく、ステップS44に移行する。ASID制御部42は、ASID変換情報の重複フラグが「有」の場合、実ASIDが重複していると判断し、重複フラグが「無」の場合、実ASIDが重複していないと判断する。
図10は、ドメイン管理部45の処理動作を示すフローチャートである。ドメイン管理部45は、VM21のドメイン設定部32又は、VM21が終了する際、図示せぬVM管理部からの呼出動作に応じて起動する。図10においてドメイン管理部45は、VM21のドメイン設定部31から新たな仮想ドメインの割当を検出したか否かを判定する(ステップS51)。ドメイン管理部45は、新たな仮想ドメインの割当を検出した場合(ステップS51肯定)、実ドメイン使用表48のエントリ内容を参照し、新たな仮想ドメインに対応する実ドメインを割り当てる(ステップS52)。
更に、ドメイン管理部45は、当該仮想ドメインに対応したドメイン変換表47を更新し(ステップS52)、この処理動作を終了する。尚、ドメイン管理部45は、実ドメイン使用表48のエントリ内容を参照し、未使用の実ドメインを新たな仮想ドメインに優先的に割り当てる。その結果、ドメイン管理部45は、実ドメイン使用表48及びドメイン変換表47の実ドメインを使用中に設定し、実ドメイン使用表48にVMID及び仮想ドメインの組を仮想マシンリスト48Dとして追加する。
また、ドメイン管理部45は、全ての実ドメインが使用中の場合、重複していない実ドメイン、TLB要否フラグ47Fが「否」の実ドメイン又は、グローバル領域に使用されていない実ドメイン等を割り当てるようにしても良い。また、ドメイン管理部45は、割り当てられた実ドメインが重複して割り当てられた場合、実ドメイン使用表48の当該実ドメインの重複フラグ48Bを設定すると共に、ドメイン変換表47の当該実ドメインの重複フラグ47Eを設定する。更に、ドメイン管理部45は、重複しているVM21の仮想ドメインに関し、ドメイン変換表47のTLB要否フラグ47F内に「要」が存在する場合、対象VM21のドメイン変換表47の仮想ドメインのTLB要否フラグ47Fを「要」に設定する。
また、ドメイン管理部45は、VM21のドメイン設定部32からグローバル又はローカルが指定されている場合、ドメイン変換表47のグローバル47H又はローカル47Iの設定を指定通り設定する。
ドメイン管理部45は、新たな仮想ドメインの割当を検出しなかった場合(ステップS51否定)、仮想ドメインの削除を検出したか否かを判定する(ステップS53)。ASID管理部41は、仮想ドメインの削除を検出した場合(ステップS53肯定)、実ドメイン使用表48のエントリ内容を参照し、削除の仮想ドメインに対応する実ドメインを解放する(ステップS54)。更に、ドメイン管理部45は、当該仮想ドメインに対応したドメイン変換表47を更新し(ステップS54)、この処理動作を終了する。尚、ドメイン管理部45は、削除の仮想ドメインに対応するドメイン変換表47の実ドメインを無効な値にして使用中フラグ47Gの設定を解除する(未使用)。また、ドメイン管理部45は、重複が設定中の実ドメインに対応する実ドメイン使用表48のVMID及び仮想ドメインの組を削除し、残りの組が1個の場合、その重複フラグ48Bの設定を解除する(無)。更に、ドメイン管理部45は、残りの組が1個の場合、その組に対応するドメイン変換表47の仮想ドメインの重複フラグ47Eの設定を解除する(無)。
ドメイン管理部45は、仮想ドメインの削除を検出しなかった場合(ステップS53否定)、ドメインアクセスの設定を検出したか否かを判定する(ステップS55)。ドメイン管理部45は、ドメインアクセスの設定を検出した場合(ステップS55肯定)、仮想ドメイン毎のアクセス設定を読み出し、読み出したアクセス制御の設定をドメイン変換表47のアクセス設定47Dに更新し(ステップS56)、この処理動作を終了する。
ドメイン管理部45は、ドメインアクセスの設定を検出しなかった場合(ステップS55否定)、VM21のドメイン設定部32からページテーブルエントリの設定を検出したか否かを判定する(ステップS57)。ドメイン管理部45は、ページテーブルエントリの設定を検出した場合(ステップS57肯定)、エントリ内のドメイン番号を取得し、そのドメイン番号を仮想ドメインとして、対応する実ドメインをドメイン変換表47から取得する。更に、ドメイン管理部45は、ページテーブルエントリのドメイン番号を実ドメインで置き換える(ステップS58)。ドメイン管理部45は、ページテーブルの領域のドメインを置き換えたエントリを書き込む。このドメインの変換により、MMU12に設定されるドメインとページテーブルのエントリのドメインの整合性が保たれる。
更に、ドメイン管理部45は、ページテーブルエントリのグローバルフラグを取得し、フラグが設定されている場合、ドメイン変換表47の仮想ドメインのグローバルフラグ47Hを設定する。また、ドメイン管理部45は、フラグが設定されていない場合、ドメイン変換表47の仮想ドメインのローカルフラグ47Iを設定する(ステップS59)。
また、ドメイン管理部45は、ページテーブルエントリの設定を検出しなかった場合(ステップS57否定)、VM管理部からVM終了を検出したか否かを判定する(ステップS60)。ドメイン管理部45は、VM終了を検出した場合(ステップS60肯定)、当該VM21が使用している全ての仮想ドメインを解放する(ステップS61)。更に、ドメイン管理部45は、当該VM21が使用している全ての仮想ドメインを管理するドメイン変換表47を削除し(ステップS61)、この処理動作を終了する。また、ドメイン管理部45は、VM終了を検出しなかった場合(ステップS60否定)、この処理動作を終了する。
図11は、ドメイン制御部46の処理動作を示すフローチャートである。図11においてドメイン制御部46は、コンテキストスイッチ制御部49から設定するVM21を指定して呼び出されると、ドメイン変換表47から当該VMIDに対応する実ドメイン及びアクセス設定を取得する(ステップS71)。ドメイン制御部46は、実ドメイン及びアクセス設定を取得すると、MMU12に設定するためのドメインアクセス設定を構築する(ステップS72)。尚、ドメインアクセス設定には、当該VM21で使用中の実ドメインの他に、当該VM21で使用していない実ドメインも必要である。つまり、ドメイン制御部46は、当該VM21が使用中の実ドメインに対するドメインアクセスはアクセス可、当該VM21が使用していない実ドメインに対するドメインアクセスはアクセス不可に設定する。
更に、ドメイン制御部46は、実ドメイン使用表48を参照して、当該VM21が使用中で、かつ、アクセス設定がアクセス不可以外の仮想ドメインの実ドメインが重複使用中であるか否かを判定する(ステップS73)。ドメイン制御部46は、実ドメインが重複使用中である場合(ステップS73肯定)、対象のVM21以外の実ドメインに対応する仮想ドメインを実ドメイン使用表48のVMIDと仮想ドメインの組として取得する(ステップS74)。更に、ドメイン制御部46は、それらのドメイン変換表47のTLB要否フラグ47Fを「要」に変更し(ステップS74)、ドメインアクセスをMMU12に設定し(ステップS75)、この処理動作を終了する。
また、ドメイン制御部46は、実ドメインが重複使用中でない場合(ステップS73否定)、そのドメインアクセス設定をMMU12に設定すべく、ステップS75に移行する。
図12は、コンテキストスイッチ制御部49の処理動作を示すフローチャートである。コンテキストスイッチ制御部49は、VM21のASID設定部31から仮想ASIDを指定して呼び出されるか、図示せぬVM管理部からVMIDを指定して呼び出される。図12においてコンテキストスイッチ制御部49は、VM管理部から呼び出された場合、現在のVM21から異なるVM21への切替が発生したか否かを判定する(ステップS81)。コンテキストスイッチ制御部49は、VM21の切り替えが発生した場合(ステップS81肯定)、現在のVM21の仮想ASIDを図示せぬVM21毎のASID保存部に保存する。更に、コンテキストスイッチ制御部49は、指定された切替先VM21の仮想ASIDを当該切替先VM21のASID保存部から取得する(ステップS82)。
コンテキストスイッチ制御部49は、TLBフラッシュが必要であるか否か判断し、必要な場合、TLBフラッシュを実行するために切替先VM21及び仮想ASIDを指定してTLBフラッシュ制御部50を呼び出す(ステップS83)。更に、コンテキストスイッチ制御部49は、TLBフラッシュ制御部50を呼び出した後、切替先VM21及び仮想ASIDを指定してASID制御部42を呼び出す(ステップS84)。更に、コンテキストスイッチ制御部49は、切替先VM21を指定してドメイン制御部46を呼び出す(ステップS85)。そして、コンテキストスイッチ制御部49は、コンテキストスイッチを実行し(ステップS86)、この処理動作を終了する。尚、コンテキストスイッチは、CPU14のレジスタの入れ替えや仮想アドレスから物理アドレスへの変換に使用するページテーブルの置き換えを実行する。
また、コンテキストスイッチ制御部49は、VM切替が発生しなかった場合(ステップS81否定)、TLBフラッシュ制御部50を呼び出すべく、ステップS83に移行する。尚、ASID設定部31から呼び出された場合は、ステップS83から処理を行う。
図13は、例外処理部51の処理動作を示すフローチャートである。尚、例外とは、例えば、アクセスすべきメモリが存在しなかったり、アクセス権がなかったりすることによりメモリアクセス時に発生する例外や、0で除算したり、未定義の命令を実行しようとしたことにより、CPU14が実行時に発生する例外等である。
例外処理部51は、メモリアクセス時に発生する例外に対する処理であり、かつ、ハイパーバイザ22の実行中ではなく、VM21の実行中に発生したものを対象とする。図13において例外処理部51は、例外の種類を調べ、例外がドメインフォールトであるか否かを判定する(ステップS91)。尚、ドメインフォールトとは、VM21がアクセスした仮想アドレスに対応するページテーブルエントリのドメインに対するドメインアクセス設定が、アクセス不可のときに発生する例外である。
例外処理部51は、例外がドメインフォールトでない場合(ステップS91否定)、当該VM21へ例外をそのまま通知し(ステップS92)、この処理動作を終了する。尚、VM21は、通知内容に基づき、その例外を処理する。
また、例外処理部51は、例外がドメインフォールトである場合(ステップS91肯定)、フォールト発生の要因となった仮想アドレス、すなわちVM21がアクセスを試みた仮想アドレスを取得する。更に、例外処理部51は、その仮想アドレスに対応するページテーブルエントリを取得する(ステップS93)。尚、TLBのエントリには、自VM21で使用していないドメインが使用されている可能性があり、ドメインアクセス設定ではそのドメインはアクセス不可に設定されるため、自VM21とは関係のないドメインフォールトが発生することになる。
例外処理部51は、ページテーブルエントリが存在しないか否かを判定する(ステップS94)。例外処理部51は、ページテーブルエントリが存在しない場合(ステップS94肯定)、他のVM21のページテーブルエントリがTLB13に残っていて、なおかつ、ページテーブルが存在しない仮想アドレスへのアクセスと判断する。例外処理部51は、アクセスすべきメモリが存在しないことを示すページフォールトの例外に変更し(ステップS95)、VM21へ例外を通知すべく、ステップS92に移行する。
尚、例外が通知されたVM21のOSの処理としては、実行継続不能と判断して自身を終了したり、デマンドページングの機能を備えたOSでは、ページフォールトを契機に新たにメモリを割り当てるといった処理を実行したりする。デマンドページングの場合は、ページフォールトの発生したアドレスとページフォールトの原因により、メモリ割当可能なアドレスであるか否かを判定する。割当可能なメモリがある場合、ページテーブルを変更し、ページフォールトが起きた箇所から再度実行するよう、例外からの復帰を行う。尚、例外処理部51は、TLBフラッシュ制御部50の呼出を省略しても良い。その理由は、フォールトを発生させたVM21は、フォールト発生時の仮想アドレスをアクセスするためのページテーブルを用意していない場合があるためである。
例外処理部51は、ページテーブルエントリが存在する場合(ステップS94否定)、ページテーブルエントリのドメインを参照し、この実ドメインを取得する(ステップS96)。更に、例外処理部51は、例外発生時に動作していたVM21のVMID及び実ドメインに対応する仮想ドメインを実ドメイン使用表48から取得する。更に、例外処理部51は、この仮想ドメインのアクセス設定に基づき、エントリのドメインがアクセス可能であるか否かを判定する(ステップS96)。
例外処理部51は、エントリのドメインがアクセス可能でない場合(ステップS96否定)、ページフォールトの例外に変更すべく、ステップS95に移行する。尚、アクセスが可能でない場合とは、仮想ドメインのアクセス設定がアクセス不可の場合と、エントリのフラグに従う場合のフラグによるアクセス権の欠如である。例外処理部51は、アクセス不可の場合、例外の変更は必要ないが、アクセス権の欠如の場合、アクセス違反へと例外を変更する。そして、例外処理部51は、VM21へ例外を通知すべく、ステップS92に移行する。尚、例えば、VM21のOSは、カーネルモード時に例外を通知されると、これ以上実行を継続不能と判断してPanicにし、結果、VM21は終了する。また、VM21のOSは、ユーザモード時に例外を通知されると、ユーザモードで実行されていたプロセスにシグナルを通知してプロセスを終了する。尚、例外処理部51は、TLBフラッシュ制御部50の呼出を省略しても良い。
例外処理部51は、エントリのドメインがアクセス可能である場合(ステップS96肯定)、仮想アドレスを指定してTLBフラッシュ制御部50を呼び出し(ステップS97)、この処理動作を終了する。尚、TLBフラッシュ制御部50の呼び出しは、VM21からアクセスが可能にも関わらず、仮想アドレスに関するTLBエントリのために例外が発生し、そのTLBエントリの影響を排除すべく、TLBエントリをフラッシュするためである。
例外処理部51は、例外が発生する前の状態からVM21を再開する。尚、VM21の再開とは、TLBフラッシュ制御部50によるTLBフラッシュ処理終了後、フォールト発生の要因となった仮想アドレス、すなわちVM21がアクセスを試みた仮想アドレスに対して再度アクセスを試みるものである。例外が発生したときの、CPU14のレジスタの情報を、例外が発生する前に戻して処理を再開させる。具体的には、プログラムカウンタを戻すことで実現できる。
尚、例外処理部51は、仮想アドレスを指定してTLBフラッシュ制御部50を呼び出しているが、TLBフラッシュの方法はいくつかあるため、適切なパラメータを指定して起動することも可能である。
図14は、TLBフラッシュ制御部50の処理動作を示すフローチャートである。TLBフラッシュ制御部50は、コンテキストスイッチ制御部49又は例外処理部51から呼び出される。図14においてTLBフラッシュ制御部50は、TLBフラッシュの実行が必要であるか否かを判定する(ステップS101)。TLBフラッシュ制御部50は、TLBフラッシュの実行が必要な場合(ステップS101肯定)、TLBフラッシュ命令を発行し(ステップS102)、この処理動作を終了する。また、TLBフラッシュ制御部50は、TLBフラッシュの実行が必要でない場合(ステップS101否定)、この処理動作を終了する。
尚、TLBフラッシュ制御部50は、例外処理部51から呼び出された場合、仮想アドレスが指定されているため、TLBフラッシュの実行が必要であると判断する。更に、TLBフラッシュ制御部50は、例外処理部51から呼び出された際に指定された仮想アドレスを使用してTLBフラッシュ命令を発行する。
また、TLBフラッシュ制御部50は、コンテキストスイッチ制御部49から呼び出された場合、切替先VM21を示すVMID及び仮想ASIDが指定される。更に、TLBフラッシュ制御部50は、切替先VM21のVMID及び仮想ASIDに基づき、TLBフラッシュの実行が必要であるか否かを判定する。TLBフラッシュ制御部50は、VM21のドメイン変換表47からTLB要否フラグ47Fが「要」のドメインを抜き出す。更に、TLBフラッシュ制御部50は、抜き出したドメインの内、グローバルフラグ47Hが設定されているドメインが存在した場合、TLBフラッシュの実行が必要であると判断する。尚、VM21間で同じドメインを使用している場合、例えば、VM1のある領域Aのページテーブルにそのドメインとグローバルを設定し、そのページテーブルエントリがTLB13にキャッシュされた場合を想定する。この場合、TLBフラッシュ制御部50は、TLB13をフラッシュせずに、VM2に切替えると、VM2は本来領域Aに対してアクセスできなくても、TLB13に残っているページテーブルエントリを使用して、領域Aに対してアクセスできてしまう。つまり、VM21間でメモリ領域の分離ができていないことになってしまう。従って、TLBフラッシュ制御部50は、グローバルフラグが設定されているものが存在した場合、TLBフラッシュの実行を必要と判断する。
また、TLBフラッシュ制御部50は、グローバルフラグが設定されていないページテーブルエントリがある場合、ASIDを使用してTLB13を検索するので、この時点でTLBフラッシュの実行が必要であると判断せず、下記の時点で判断する。
TLBフラッシュ制御部50は、グローバルフラグが設定されているドメインのTLB要否フラグが「否」の場合、VM21のASID変換表43の仮想ASIDのTLB要否フラグ47Fを参照する。TLBフラッシュ制御部50は、そのTLB要否フラグ47Fが「要」の場合、仮想ASIDに対してTLBフラッシュの実行が必要であると判断する。この際、TLBフラッシュ制御部50は、そのTLBフラッシュの実行が必要であると判断した際、そのTLB要否フラグ47Fの項目を「要」から「否」に変更する。
また、TLBフラッシュ制御部50は、グローバルフラグが設定されている仮想ドメインのTLB要否フラグ47Fが「要」の場合、TLB13全体のフラッシュを実行する。また、TLBフラッシュ制御部50は、仮想ASIDに対してTLBフラッシュが必要と判断された場合、仮想ASIDに対応付けられている実ASIDを指定してTLB13をフラッシュする。
尚、TLBフラッシュ制御部50は、アドレスを指定してTLB13をフラッシュすることも可能であるため、グローバルフラグが設定されているドメインのTLB要否フラグ47Fが「要」の場合でも、部分的にTLBをフラッシュすることは可能である。
また、TLBフラッシュ制御部50は、例外処理部51から呼び出された場合も、仮想アドレスを指定してTLBフラッシュを実行する以外に、TLB13全体をフラッシュすることも可能である。更に、TLBフラッシュ制御部50は、現在動作しているVM21の仮想ASIDに対応づけられている実ASIDを指定してTLBフラッシュを実行することも可能である。
実施例1では、コンテキストスイッチ時に最小限のTLBフラッシュのみを実行し、TLB13にキャッシュされているエントリがバッティングした場合には、例外処理にてTLBフラッシュを実行する。その結果、TLBフラッシュを例外発生まで遅らせることができるため、その間にTLB13内のエントリが入れ替わる可能性もあるため、結果として、不必要なTLBフラッシュを抑制することができる。つまり、実施例1では、ASID及びドメインを仮想化し、ASID及びドメインをVM21毎に排他的に使用することで、仮想環境下で動作する複数VM21間の切替が発生したとしても、TLBフラッシュの発生頻度を抑制できる。
次に、実施例2のメモリ管理装置1について説明する。尚、実施例1のメモリ管理装置1と同一の構成については同一符号を付すことで、その重複する構成及び動作の説明については省略する。実施例2のメモリ管理装置1は、TLBフラッシュ制御部50において、仮想ASIDに対してTLBフラッシュを実行した際に、実ASIDの再割当を実行するようにしたものである。
図15は、実施例2のTLBフラッシュ制御部50の処理動作を示すフローチャートである。尚、TLBフラッシュ制御部50は、コンテキストスイッチ制御部49又は例外処理部51から呼び出される。図15においてTLBフラッシュ制御部50は、TLBフラッシュの実行が必要であるか否かを判定する(ステップS111)。TLBフラッシュ制御部50は、TLBフラッシュの実行が必要である場合(ステップS111肯定)、TLBフラッシュ命令を発行する(ステップS112)。また、TLBフラッシュ制御部50は、TLBフラッシュの実行が必要でない場合(ステップS111否定)、この処理動作を終了する。
TLBフラッシュ制御部50は、TLBフラッシュ命令発行に応じて現在動作中のVM21の現在設定されている仮想ASIDのエントリを全てフラッシュしたか否かを判定する(ステップS113)。TLBフラッシュ制御部50は、現在動作中のVM21の現在設定されている仮想ASIDのエントリを全てフラッシュした場合(ステップS113肯定)、VM21の仮想ASIDを削除するようにASID管理部41を呼び出す(ステップS114)。更に、TLBフラッシュ制御部50は、VM21の仮想ASIDを追加するようにASID管理部41を呼び出し(ステップS115)、この処理動作を終了する。その結果、実ASIDに空きがあれば、仮想ASIDは重複しないものに変更されることになる。
また、TLBフラッシュ制御部50は、現在動作中のVM21の現在設定されている仮想ASIDのエントリをフラッシュしなかった場合(ステップS113否定)、この処理動作を終了する。
実施例2では、実ASIDに空きがあるのに実ASIDを重複して使用するような場合に、空いている実ASIDを使用するように仮想ASIDの割当を再調整できるため、TLBフラッシュの頻度を更に抑制できる。
次に、実施例3のメモリ管理装置1について説明する。尚、実施例1及び2のメモリ管理装置1と同一の構成については同一符号を付すことで、その重複する構成及び動作の説明については省略する。実施例3のメモリ管理装置1は、TLBフラッシュを一律に遅延させるのではなく、遅延させる場合と遅延させない場合とに切替えるものである。尚、実施例1のメモリ管理装置1は、TLBフラッシュを遅延させた場合、ASIDやドメインの重複使用状況に応じて、遅延させたTLBフラッシュが例外処理によって頻繁に発生するような事態も考えられる。そこで、このような事態に対処すべく、TLBフラッシュの遅延を一律に実行するのではなく、条件に応じてTLBフラッシュの遅延を実行するか否かを判定するようにした。
図16は、実施例3のTLBフラッシュ制御部50の処理動作を示すフローチャートである。図16においてTLBフラッシュ制御部50は、コンテキストスイッチ制御部49から呼び出された場合、すなわちコンテキストスイッチ時であるか否かを判定する(ステップS121)。TLBフラッシュ制御部50は、コンテキストスイッチ時である場合(ステップS121肯定)、切替元のVM21を示すVMID及び仮想ASIDを保存する(ステップS122)。尚、同一のVM21内で仮想ASIDを切替える場合には、VMIDの保存を行わない。そして、TLBフラッシュ制御部50は、ステップS122の処理後、TLBフラッシュが必要であるか否かを判定すべく、ステップS111〜S115の処理動作に移行する
また、TLBフラッシュ制御部50は、コンテキストスイッチ時でない場合(ステップS121否定)、例外処理部51から呼び出された場合、すなわち例外処理時であるか否かを判定する(ステップS123)。TLBフラッシュ制御部50は、例外処理時である場合(ステップS123肯定)、例外の発生した仮想アドレスが属するページテーブルエントリから仮想ドメインと、そのページテーブルエントリがグローバルでない場合の仮想ASIDとを取得する。尚、仮想ドメインは、仮想アドレスから対応するページテーブルエントリを取得し、ページテーブルエントリに記されたドメイン番号を実ドメインとして実ドメイン使用表48を参照し、例外発生時に動作していたVM21のVMIDとの組の仮想ドメインである。また、仮想ASIDは、VM21毎の図示せぬASID保存部から取得するものである。
そして、TLBフラッシュ制御部50は、TLBフラッシュ判断情報を更新する(ステップS124)。図17は、TLBフラッシュ判断情報の一例を示す説明図である。図17に示すTLBフラッシュ判断情報は、ドメインの場合とASIDの場合の二つ示している。ドメインの場合のTLBフラッシュ判断情報、すなわちドメイン依存情報81は、TLBフラッシュの対象となる領域がグローバルの場合に設定され、VMID81A、仮想ドメイン81B及び依存VMID81Cを有する。尚、VMID81Aは、TLBフラッシュを行うときのVM21、すなわち例外処理部51が処理を実行する契機となるフォールトを引き起こしたVM21のIDである。仮想ドメイン81Bは、TLBフラッシュの対象となる領域のドメイン番号である。依存VMID81Cは、コンテキストスイッチ時に保存したVM21のIDである。
また、ASIDの場合のTLBフラッシュ判断情報、すなわちASID依存情報82は、TLBフラッシュの対象となる領域がローカルの場合に設定され、VMID82A、仮想ASID82B及び依存VMID82Cを有する。尚、VMID82Aは、TLBフラッシュを行うときのVM21のIDである。仮想ASID82Bは、TLBフラッシュの対象となる領域のASIDである。依存VMID82Cは、コンテキストスイッチ時に保存したVM21のIDである。
TLBフラッシュ制御部50は、重複使用されなくなった仮想ASIDを指定してASID管理部41から呼び出された場合、TLBフラッシュ判断情報82内に指定された仮想ASIDが存在すれば削除する。尚、TLBフラッシュ制御部50は、TLBフラッシュ判断情報82から、指定された仮想ASIDのVM21が依存VMID82Cに設定されている項目を検索する。更に、TLBフラッシュ制御部50は、その検索結果である依存VMID82CのVM21の仮想ASIDの実ASIDをASID変換表43から取得する。更に、TLBフラッシュ制御部50は、指定された仮想ASIDの実ASIDを指定された仮想ASIDのVM21のASID変換表43から取得し、同じであれば存在すると判断する。また、TLBフラッシュ制御部50は、存在しなければ何もしない。
TLBフラッシュ制御部50は、使用されなくなった仮想ドメインを指定してドメイン管理部45から呼び出された場合、TLBフラッシュ判断情報81から、削除できる項目があるか判断する。尚、TLBフラッシュ制御部50は、図17の例のドメインの場合は、依存VMIDの仮想ドメインがすべて削除されたときに削除できるため、指定された仮想ドメインのVM21が依存VMIDに設定されている項目を検索する。更に、TLBフラッシュ制御部50は、依存VMIDの仮想ドメインが全て削除されていることをドメイン変換表47から確認できた場合のみ、その依存VMIDを含む項目を削除する。尚、TLBフラッシュ制御部50は、ドメイン管理部45から呼び出す単位をドメイン単位とした。しかしながら、TLBフラッシュ制御部50は、VM削除時に、ドメイン管理部45からVM21が使用しているすべての仮想ドメインという形で呼び出し、依存VMIDを含む項目を削除することで、VM21が使用する仮想ドメイン単位で繰り返し呼び出す場合に比較して処理が円滑になる。
従って、TLBフラッシュ制御部50は、TLBフラッシュ判断情報を更新すると(ステップS124)、TLBフラッシュが必要であるか否かを判定すべく、ステップS111〜S115の処理動作に移行する。
また、TLBフラッシュ制御部50は、例外処理時でない場合(ステップS123否定)、TLBフラッシュ判断情報を更新し(ステップS125)、処理動作を終了する。
ASID管理部41及びドメイン管理部45から呼び出された場合、TLBフラッシュ制御部50の処理は終了する。コンテキストスイッチ制御部49から呼び出された場合は、TLBフラッシュの判断が変更される。
更に、TLBフラッシュ制御部50は、切替後のVMIDのTLBフラッシュ判断情報を取得する。TLBフラッシュ制御部50は、取得したTLBフラッシュ判断情報においてドメインの依存情報が含まれている場合、その依存情報の項目「依存VMID」に切替前のVM21を示すVMIDが設定されている依存情報があれば、その依存情報の項目「仮想ドメイン」に示される仮想ドメインの領域に対するTLBフラッシュを「要」と判断する。
TLBフラッシュ制御部50は、取得したTLBフラッシュ判断情報においてASIDの依存情報が含まれている場合、その依存情報の項目「依存VMID」に切替前のVM21を示すVMIDが設定されている依存情報があるか否かを判定する。TLBフラッシュ制御部50は、依存情報がある場合、その依存情報の項目「依存VMID」に示されるVMIDに対応付けてASID変換表43に登録されているASID変換情報から、その依存情報の項目「仮想ASID」に示される仮想ASIDの実ASIDを取得する。これにより、切替前のVM(依存VMID)の仮想ASIDに対応する実ASIDが取得される。
また、TLBフラッシュ制御部50は、ASIDの依存情報の仮想ASIDに対してASID変換表43から実ASIDを取得し、依存VMIDの実ASIDと同じであれば、実ASIDに対してTLBフラッシュが必要と判断する。尚、ASIDの依存情報の仮想ASIDは、切替前のVM21を示すVMIDが項目「依存VMID」に設定されているもののみに限定する。
尚、ドメインの領域をTLBフラッシュする方法は、ここでは示さないが、ドメイン管理部45において、ページテーブルエントリ設定時にドメイン毎にメモリ領域を記録しておく。更に、TLBフラッシュ制御部50において、その記録しておいたメモリ領域を指定してTLBフラッシュの命令を実行すれば可能である。また、これ以外にも、TLBフラッシュの発生頻度を記録しておき、その発生頻度に応じて遅延させるか否かを判断させることも可能である。また、遅延させるか否かの判断は、これらに限定されるものではない。
実施例3では、TLBフラッシュを遅延する効果のない場合には、コンテキストスイッチ時にTLBフラッシュできるようになり、遅延による例外処理の多発による不具合にも対処できる。
尚、上記実施例3では、TLBフラッシュ判断情報としてドメイン依存情報81及びASID依存情報82を例に挙げて説明したが、TLBフラッシュの対象領域の設定、すなわち、グローバル又はローカルに応じて依存情報の設定処理を実行するようにした。しかしながら、TLBフラッシュの対象領域の設定がグローバルの場合にのみ依存情報の設定処理を実行するようにしても良い。
また、上記実施例3では、ASID依存情報82の仮想ASIDに対してASID変換表43から実ASIDを取得し、その実ASIDが依存VMIDの実ASIDと同じ場合、実ASIDに対してTLBフラッシュの実行が必要と判断した。しかしながら、依存VMIDと同値の実ASIDを設定されたASID変換情報をASID変換表43で照合し、TLBフラッシュの要否を判断するようにしても良い。
次に、実施例4のメモリ管理装置1について説明する。尚、実施例1のメモリ管理装置1と同一の構成については同一符号を付すことで、その重複する構成及び動作の説明については省略する。実施例4のメモリ管理装置1は、VM21の特性を利用して、実ASIDの割当や実ドメインの割当を実現する。
先ず、実ASIDの割当について説明する。以下に述べるパラメータは、VM21から指定してもよいし、予め、ハイパーバイザ22に用意しておいても良い。VM21から指定する場合は、ハイパーコール等を使用する。VM21に対して、使用可能な仮想ASID数の割合を設定しておく。割合なので、動作しているVM21に応じて、使用可能な仮想ASID数は変動する。
ASID管理部41は、仮想ASIDの追加時に、当該仮想ASIDの追加を依頼したVM21が割合よりも多く実ASIDを使用している場合には、重複使用の実ASIDを割り当てる。また、ASID管理部41は、割合よりも少ない場合は、割合を最も超えているVM21を探し、このVM21の仮想ASIDで重複していない仮想ASIDを探し、その仮想ASIDに対応付けられた実ASIDを解放する。仮想ASIDは、解放した実ASID以外の実ASIDと対応付ける。このときは、必ず実ASIDを重複使用することになる。この場合、ASID管理部41は、TLB要否フラグを「要」に設定する。
実ASIDの解放については、次に述べる。ASID変換表43は、使用頻度を記録できるように拡張する。使用頻度は、TLBフラッシュ制御部50にて切り替えられたときに加算する。使用頻度の高い仮想ASIDが重複すると、それだけTLBフラッシュの可能性が高まるため、重複させる仮想ASIDは使用頻度の低いものを選択する。使用頻度の低い仮想ASIDが重複していなければ、それを選択し、そうでなければ、次に使用頻度の低いものを対象として重複のない仮想ASIDを探す。使用頻度の低い仮想ASIDの重複がなくなるまで、重複している仮想ASIDの対応付けを変更することも可能である。実ASIDの対応付けを変更された仮想ASIDのTLB要否フラグは「要」に変更する。
また、ASID変換表43は、優先度を記録できるように拡張する。優先度の低い仮想ASIDを重複させ、優先度の高い仮想ASIDは重複させないように制御する。仮想ASIDを重複させる実ASIDを決定する場合、VM21内の仮想ASIDに限定するか、若しくは、VM21を限定せず、全てのVM21の仮想ASIDを対象にしても良い。
尚、これらの実ASIDの解放方法は、ASIDの割当時にも使用できる。VM21の仮想ASID数の割合とは関係なく、使用頻度や優先度により、実ASIDの割り当てを制御することが可能である。
優先度の低い仮想ASIDは、実ASIDに空きがあるときでさえ、重複させるようにすることも可能である。次に、実ドメインの割当について説明する。ドメインは、ドメイン番号がページテーブルのエントリ内に設定されているため、VM21の実ドメインを変更することは容易ではない。尚、実ドメインを変更することは、ページテーブルエントリのドメイン番号を変更することになる。従って、ページテーブルのエントリはいくつも存在し、同じドメイン番号はページテーブルにいくつでも設定できる。つまり、実ドメインを変更すると、そのドメイン番号のページテーブルを全て変更する必要がある。しかも、ページテーブルを変更するには、TLB13もフラッシュする必要があるため、仮想ドメインと実ドメインの対応付けは変更しない。
また、ドメインは、再調整を行わず、重複させる仮想ドメインの決定方法を説明する。VM21に対して、重複を許可するかどうか設定しておく。これは単なるフラグであっても、優先順位であってもよい。優先順位の場合は、最も優先順位の低いVM21の仮想ドメインを重複させるようにする。また、VM21に対して、使用メモリ領域を設定しておく。このメモリ領域の重なりを調べ、メモリ領域が多く重なるVM21と仮想ドメインを重複させる。その結果、TLBフラッシュを避けるためというよりは、TLBフラッシュが起きるのであれば、よりTLBフラッシュの起きやすい重複をさせ、実ドメインを重複させる。そして、実ドメインを重複させることで、空きになった実ドメインを他のVM21に使用できる他のドメインとして有効利用できる。つまり、TLBフラッシュ制御部50にTLBフラッシュが必要であると判定させるための重複をメモリ領域が多く重なるVM21間で生じさせるものである。尚、仮想ドメイン毎に使用メモリ領域を設定しておき、仮想ドメイン毎に重複を判断することも可能である。
また、仮想ASIDの使用数の少ないVM21とドメインを重複させる。尚、仮想ASIDの使用数の少ないVM21とは、例えば、実ドメインを重複するVM数で最大実ASID数を割った値よりも少ないVM21である。尚、全てのVM21がASIDを複数使用するわけではなく、一つしか使用しないVM21も存在する。従って、このようなVM21を想定すると、更に、使用数の少ないと判断されたVM21の中でも少ない順に選択する。仮想ASID数が少ないとは、ASIDが重複する可能性が少なくなり、TLBフラッシュを抑制できる可能性が高まる。また、予めASIDを排他的に使用できるVM21間では積極的にドメインを重複させることも可能である。例えば、OSがASIDを一つしか使わないVM21であれば、ASIDを重複させなければドメインを重複させられる。ドメインも、ASIDと同様、割り当て時に空きがあっても重複させるようにすることも可能である。
実施例4では、効率的にASIDやドメインを割り当てられるようになり、TLBフラッシュを抑制できる。
次に、実施例5のメモリ管理装置1について説明する。尚、実施例1のメモリ管理装置1と同一の構成については同一符号を付すことで、その重複する構成及び動作の説明については省略する。実施例5のメモリ管理装置1は、VM21のメモリ使用状況を管理し、メモリ領域が重複していない仮想ASIDを重複させるというものである。尚、メモリ管理装置1は、VM21毎にグローバルな領域の使用状況(グローバル領域使用状況)、VM21内のプロセス毎の使用状況(ローカル領域使用状況)を管理する。
プロセス毎の使用状況は、仮想ASID毎の使用状況に相当する。メモリ領域を2MB単位で使用有無を1ビットで表わすと、4GBのメモリ空間では、256バイト必要である。つまり、VM21毎に、グローバルな領域用に256バイト、プロセス数×256バイトのメモリが必要である。グローバル及びローカルの区別なく管理することも可能である。この際、メモリ領域の使用有無をカウンタで表わすことも可能である。
また、VM21のグローバル領域使用状況は、VM管理部によるVM作成時に作成され、VM管理部によるVM終了時に削除される。ローカル領域使用状況は、ASID管理部41のASID割当時に作成され、ASID管理部41のASID削除時に削除される。グローバル領域使用状況とローカル領域使用状況は、ドメイン管理部45のページテーブルエントリ設定時に更新される。
これらの使用状況により、ASID管理部41における実ASIDの割当時に、使用メモリ領域が重ならない仮想ASIDを見つけ、この使用メモリ領域が重ならない仮想ASIDと実ASIDを重複使用することが可能となる。尚、ASID管理部41は、実ASIDを割り当てる対象の仮想ASIDのローカル領域使用状況と、対象以外のローカル領域使用状況とを比較し、使用メモリ領域が重ならないものを検索する。更に、ASID管理部41は、検索結果としてのローカル領域使用状況のVMID及び仮想ASIDからASID変換表43を参照し、重複使用する実ASIDを検索する。更に、使用メモリ領域が重ならない仮想ASID及び実ASIDを有するASID変換情報を割当対象のASIDに対応付けてASID変換表43に登録する。尚、割当対象のASIDは、VM21上で動作するASID設定部31からASID管理部41が呼び出される際に指定されるIDに相当する。尚、使用状況は、VM作成時やVM21内のOSのプロセス作成時に、ハイパーコール等で設定することも可能である。
実施例5では、メモリ領域の重複が少ない仮想ASIDを重複するようにしているため、TLBフラッシュの可能性は少なくなる。
次に、実施例6のメモリ管理装置1について説明する。尚、実施例5のメモリ管理装置1と同一の構成については同一符号を付すことで、その重複する構成及び動作の説明については省略する。実施例6のメモリ管理装置1は、実施例5の使用状況を活用し、他のVM21が使用していないメモリ領域のみを使用するVM21を動作させ、そのVM21とのコンテキストスイッチ時には、TLBフラッシュを起こさないようにするというものである。
VM管理部がVM21を作成するとき、VM21が必要とするメモリ領域のサイズ分、空いているメモリ領域を探し、空きメモリ領域があれば、その領域で動作するようにVM21のプログラムを変換し、そのメモリ領域にコピーする。尚、VM21のプログラムは、VM21上で動作するプログラムに相当し、どのアドレスに配置されても実行できるような形式で作成されたプログラムである。その領域で動作するようにVM21のプログラムを変換するとは、実際にメモリに配置する際にアドレスを変換することである。VM21がそのメモリ領域をアクセスできるようにページテーブルを作成し、VM21を動作させる。空きメモリ領域は、全てのVM21のグローバル領域使用状況とローカル領域使用状況の和をとり、いずれでも使用されていない領域のことである。また、空きメモリ領域のアドレスは、その都度変化する可能性があるため、VM21のプログラムは、リエントラントに作成しておく。尚、リエントラントとは、どのアドレスに配置されても動作するように作成されたプログラムに相当する。従って、一つのプロセスのみしか動作しないようなVM21に対して適用でき、高速にVM21との切り替えを行うことが可能となる。
実施例6では、全ての仮想アドレスを構成するページテーブルに、このVM21のメモリ領域の変換エントリを備えることで、コンテキストスイッチ時にページテーブルの置き換えを行う必要もなく、さらに高速化できる。
尚、実施例1乃至6では、単一のCPU14の環境に適用した場合を例に挙げて説明したが、複数のCPU14のマルチプロセッサの環境下でも同様の効果が得られることは言うまでもない。この際、CPU14毎に上述した構成を構築することになる。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
さらに、各装置で行われる各種処理機能は、CPU(Central Processing Unit)(又はMPU(Micro Processing Unit)、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上、又は同CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
以上、本実施例を含む実施の形態に関し、更に以下の付記を開示する。
(付記1)仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて管理する領域識別情報管理部と、
前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定部と、
前記重複判定部によって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を管理する重複領域管理部と、
実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御部と
を有することを特徴とするメモリ管理装置。
(付記2)前記仮想環境毎に、前記仮想領域識別情報に含む仮想ドメイン及び前記実領域識別情報に含む実ドメインを前記領域識別情報管理部内に対応付けるドメイン管理部を有し、
前記TLB制御部は、
前記仮想環境動作時にドメインの対応付けからドメインアクセス設定を行い、このドメインアクセス設定に基づき、他の仮想環境と重複して使用しているドメインに対してアクセス可能である場合に、TLB処理の対象としてTLBフラッシュが必要であることを保持するドメイン制御部と、
前記仮想環境の切替時にTLBフラッシュが必要であるか否かを判断するTLBフラッシュ制御部と、
例外発生時に他の仮想環境と重複して使用しているドメインに対してアクセス可能である場合にTLBフラッシュを実行すると共に、例外発生時に他の仮想環境と重複して使用しているドメインに対してアクセス可能でない場合にTLBフラッシュを遅延させる例外処理部と
を有することを特徴とする付記1記載のメモリ管理装置。
(付記3)前記仮想環境毎に、前記仮想領域識別情報に含む仮想ASID及び前記実領域識別情報に含む実ASIDを前記領域識別情報管理部内に対応付けるASID管理部を有し、
前記TLB制御部は、
前記仮想環境動作時に使用するASIDが他の仮想環境と重複している場合にはTLBフラッシュが必要であることを保持するASID制御部を有することを特徴とする付記2記載のメモリ管理装置。
(付記4)前記ASID管理部は、
前記仮想環境の仮想ASIDを新規に実ASIDに対応付ける際に、既に対応付けられているASIDの対応付けを変更することを特徴とする付記3記載のメモリ管理装置。
(付記5)前記TLBフラッシュ制御部は、
前記TLBフラッシュを実行すると判断したASIDの対応付けを変更するように前記ASID管理部に指示することを特徴とする付記3又は4記載のメモリ管理装置。
(付記6)前記TLBフラッシュ制御部は、
前記TLBフラッシュ実行時のASID及びドメインを保持し、この保持内容をTLBフラッシュの判断に使用することを特徴とする付記3〜5の何れか一つに記載のメモリ管理装置。
(付記7)前記ASID管理部は、
前記ASIDを重複使用しなくなった場合に当該ASIDを前記TLBフラッシュ制御部に通知すると共に、
前記ドメイン管理部は、
前記ドメインが使用されなくなった場合に当該ドメインを前記TLBフラッシュ制御部に通知することを特徴とする付記6記載のメモリ管理装置。
(付記8)前記例外処理部は、
前記例外発生時に、当該例外を仮想環境に通知可能な例外に変換することを特徴とする付記2〜7の何れか一つに記載のメモリ管理装置。
(付記9)仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて領域識別情報管理部に管理する管理ステップと、
前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定ステップと、
前記重複判定ステップによって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を重複領域管理部に管理する管理ステップと、
実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御ステップと
を含むことを特徴とするメモリ管理方法。
(付記10)仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて領域識別情報管理部に管理する管理手順と、
前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定手順と、
前記重複判定手順によって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を重複領域管理部に管理する管理手順と、
実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御手順と
を含むプログラムをコンピュータ装置に実行させることを特徴とするメモリ管理プログラム。
1 メモリ管理装置
11 メモリ
12 MMU
13 TLB
14 CPU
21 VM
22 ハイパーバイザ
41 ASID管理部
42 ASID制御部
43 ASID変換表
44 実ASID使用表
45 ドメイン管理部
46 ドメイン制御部
47 ドメイン変換表
48 実ドメイン使用表
50 TLBフラッシュ制御部
51 例外処理部

Claims (3)

  1. 仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて管理する領域識別情報管理部と、
    前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定部と、
    前記重複判定部によって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を管理する重複領域管理部と、
    実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御部と
    を有することを特徴とするメモリ管理装置。
  2. 仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて領域識別情報管理部に管理する管理ステップと、
    前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定ステップと、
    前記重複判定ステップによって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を重複領域管理部に管理する管理ステップと、
    実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御ステップと
    を含むことを特徴とするメモリ管理方法。
  3. 仮想環境において実行されるプログラムに対して割り当てられるメモリ上の領域を識別するための仮想領域識別情報と前記プログラムを実行する仮想環境に対して割り当てられるメモリ上の領域を識別する実領域識別情報とを前記仮想環境毎に対応付けて領域識別情報管理部に管理する管理手順と、
    前記実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを判定する重複判定手順と、
    前記重複判定手順によって前記実領域識別情報が複数の仮想環境に対して重複して割り当てられている場合に、当該実領域識別情報に対応付けて、重複している旨を示す重複情報を重複領域管理部に管理する管理手順と、
    実行時間が割り当てられている切替元の仮想環境から切替先の仮想環境へ切り替える際に、前記切替先の仮想環境に対して割り当てられている前記実領域識別情報を前記領域識別情報管理部から読み出し、読み出した実領域識別情報が複数の仮想環境に対して重複して割り当てられているか否かを前記重複情報を参照して判定し、この読み出した実領域識別情報の内、重複して割り当てられていると判定された実領域識別情報をTLB処理の対象とするTLB制御手順と
    を含むプログラムをコンピュータ装置に実行させることを特徴とするメモリ管理プログラム。
JP2010068704A 2010-03-24 2010-03-24 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム Expired - Fee Related JP5459006B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010068704A JP5459006B2 (ja) 2010-03-24 2010-03-24 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US12/929,943 US8954709B2 (en) 2010-03-24 2011-02-25 Memory management apparatus, memory management method and non-transitory computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010068704A JP5459006B2 (ja) 2010-03-24 2010-03-24 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム

Publications (2)

Publication Number Publication Date
JP2011203854A true JP2011203854A (ja) 2011-10-13
JP5459006B2 JP5459006B2 (ja) 2014-04-02

Family

ID=44657671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010068704A Expired - Fee Related JP5459006B2 (ja) 2010-03-24 2010-03-24 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム

Country Status (2)

Country Link
US (1) US8954709B2 (ja)
JP (1) JP5459006B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196055A (ja) * 2012-03-15 2013-09-30 Fujitsu Ltd 情報処理装置及び制御プログラム

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
JP5541036B2 (ja) * 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
US9465748B2 (en) * 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9208102B2 (en) 2013-01-15 2015-12-08 Qualcomm Incorporated Overlap checking for a translation lookaside buffer (TLB)
US20140208034A1 (en) * 2013-01-18 2014-07-24 Wind River Systems, Inc. System And Method for Efficient Paravirtualized OS Process Switching
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
JP6550308B2 (ja) * 2015-09-14 2019-07-24 株式会社ターボデータラボラトリー 情報処理システム及びコンピュータプログラム
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169233B2 (en) * 2017-06-05 2019-01-01 International Business Machines Corporation Translation lookaside buffer purging with concurrent cache updates
US10915404B2 (en) 2018-11-02 2021-02-09 Arm Limited Persistent memory cleaning
CN112463657A (zh) * 2019-09-09 2021-03-09 阿里巴巴集团控股有限公司 一种地址转换缓存清除指令的处理方法和处理装置
CN112099907B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 一种虚拟机运行方法、装置及服务器
CN114064517A (zh) 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥进行高速缓存写回且无效的计算机系统及方法
CN114064518A (zh) * 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥辨识码进行转译后备缓冲区清除的处理器和方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60238954A (ja) * 1984-05-11 1985-11-27 Fujitsu Ltd テ−ブルバツフアのパ−ジ方式
US7275136B1 (en) * 2002-09-06 2007-09-25 Vmware, Inc. Virtualization system for computers with a region-based memory architecture
JP2008508598A (ja) * 2004-07-30 2008-03-21 インテル コーポレイション アーキテクチャイベントの間のプロセッサリソースの保持
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
JP2009151650A (ja) * 2007-12-21 2009-07-09 Hitachi Ltd 計算機仮想化装置、そのプログラム、及びその方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2825550B2 (ja) 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
JPH0535597A (ja) 1991-08-01 1993-02-12 Nec Corp 仮想空間識別子管理方式
WO1995031783A1 (de) * 1994-05-11 1995-11-23 Gmd - Forschungszentrum Informationstechnik Gmbh Speichervorrichtung zum speichern von daten
US7823151B2 (en) * 2005-06-15 2010-10-26 Intel Corporation Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB
US8031634B1 (en) * 2008-03-31 2011-10-04 Emc Corporation System and method for managing a virtual domain environment to enable root cause and impact analysis

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60238954A (ja) * 1984-05-11 1985-11-27 Fujitsu Ltd テ−ブルバツフアのパ−ジ方式
US7275136B1 (en) * 2002-09-06 2007-09-25 Vmware, Inc. Virtualization system for computers with a region-based memory architecture
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
JP2008508598A (ja) * 2004-07-30 2008-03-21 インテル コーポレイション アーキテクチャイベントの間のプロセッサリソースの保持
JP2009151650A (ja) * 2007-12-21 2009-07-09 Hitachi Ltd 計算機仮想化装置、そのプログラム、及びその方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7013004521; James E.Smith,Ravi Nair: 'Virtual Machines' Virtual Machines , 2005, 402-403, MORGAN LAUFMANN PUBLISHERS *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196055A (ja) * 2012-03-15 2013-09-30 Fujitsu Ltd 情報処理装置及び制御プログラム

Also Published As

Publication number Publication date
JP5459006B2 (ja) 2014-04-02
US8954709B2 (en) 2015-02-10
US20110238947A1 (en) 2011-09-29

Similar Documents

Publication Publication Date Title
JP5459006B2 (ja) メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US9547600B2 (en) Method and system for restoring consumed memory after memory consolidation
US8555028B2 (en) Computer-readable, non-transitory medium storing memory access control program, memory access control method, and information processing apparatus
US8782639B2 (en) Computer scheduling product and apparatus therefor
US9336035B2 (en) Method and system for VM-granular I/O caching
US8365167B2 (en) Provisioning storage-optimized virtual machines within a virtual desktop environment
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
US8151032B2 (en) Direct memory access filter for virtualized operating systems
US10534720B2 (en) Application aware memory resource management
JP5091655B2 (ja) 計算機仮想化装置、そのプログラム、及びその方法
US7725642B2 (en) Method and program for partitioning a physical computer into logical partitions
US20120210068A1 (en) Systems and methods for a multi-level cache
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
KR20070121812A (ko) 시퀀서 어드레스 관리
JP2008077144A (ja) 仮想化システム、メモリ管理方法及び制御プログラム
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
WO2013023090A2 (en) Systems and methods for a file-level cache
JP6198858B2 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
JP4862770B2 (ja) 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム
US11586371B2 (en) Prepopulating page tables for memory of workloads during live migrations
Kim et al. I/O access frequency-aware cache method on KVM/QEMU
US20240028361A1 (en) Virtualized cache allocation in a virtualized computing system
US20230029331A1 (en) Dynamically allocatable physically addressed metadata storage
JP2012074084A (ja) 電力制御方法、計算機システム、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131128

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: 20131217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

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