JP2010257049A - 仮想化プログラム、仮想化処理方法及び装置 - Google Patents

仮想化プログラム、仮想化処理方法及び装置 Download PDF

Info

Publication number
JP2010257049A
JP2010257049A JP2009104022A JP2009104022A JP2010257049A JP 2010257049 A JP2010257049 A JP 2010257049A JP 2009104022 A JP2009104022 A JP 2009104022A JP 2009104022 A JP2009104022 A JP 2009104022A JP 2010257049 A JP2010257049 A JP 2010257049A
Authority
JP
Japan
Prior art keywords
guest
address
page
virtual page
pointer
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
JP2009104022A
Other languages
English (en)
Other versions
JP5246014B2 (ja
Inventor
Minoru Nakamura
実 中村
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 JP2009104022A priority Critical patent/JP5246014B2/ja
Publication of JP2010257049A publication Critical patent/JP2010257049A/ja
Application granted granted Critical
Publication of JP5246014B2 publication Critical patent/JP5246014B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】仮想マシンにおいて動的バイナリ変換を効率的に適用する。
【解決手段】特定のゲスト仮想ページへのアクセスの際に、特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定し、ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードをホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定されたゲスト物理ページアドレスについてのエントリを読み出し、変換コードへのポインタが含まれているか判断する。変換コードへのポインタが含まれている場合には、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとを比較し、一致すれば、ポインタにより変換コードを読み出して実行する。
【選択図】図3

Description

本技術は、動的バイナリ変換を伴う仮想化技術に関する。
現在のコンピュータの多くは動的アドレス変換(DAT:Dynamic Address Translation。仮想メモリとも呼ぶ。) を適用して動作しており、実用的な仮想マシンは、ホストマシン上で仮想的に構成されたコンピュータであるゲストマシン上でDAT機能をサポートする必要がある。
また、仮想マシンで動的バイナリ変換(仮想マシンがゲストマシンをエミュレーションするにあたって、ゲストマシンにおける機械語をホストマシンにおける機械語に動的にコンパイルする技術。これはJIT(Just In Time)コンパイリング(compiling)とも呼ばれる。)を適用する場合、ゲストマシン上のDAT機能が問題になる。これは、ゲストマシン上のDAT機能によって、物理メモリ以上の広いメモリ空間を使えるため、動的バイナリ変換の対象となるメモリ空間がゲストマシンの動作状態によって動的に変動してしまうことによって生じる。
またDATテーブルの書き替えによって、ゲストマシンにおける仮想ページであるゲスト仮想ページと、ゲストマシンにおける物理ページであるゲスト物理ページとの写像関係が動的に変更される。この変更によって、動的バイナリ変換の結果である変換コードが不正となることがあるため、変換コードを無効化、削除する必要が生じる。そのためDATと変換コード管理の連動が必要となる。
通常、ゲストマシンはDATを有効にして動作しており、実用的な仮想マシンはDAT機能を有効にしたゲストマシンをエミュレーションする必要がある。この際に、シャドウページ方式が用いられることが多い。
シャドウページ方式は、ゲストマシンのDATテーブルと同期したシャドウ・ページ・テーブルを仮想マシンが動的に作成する方式である。シャドウページ方式では、以下のような管理が行われる。
(1)最初に、シャドウ・ページ・テーブルは空である。
(2)仮想マシンがゲストマシンのTLB(Translation Lookaside Buffer)フォルトを検出すると、DATをエミュレートする。その結果をシャドウ・ページ・テーブルに登録する。
(3)ゲストマシンのDATテーブルが更新された場合やTLBの削除操作(例えば、IBM社のSystem/370のINVALIDATE PAGE TABLE ENTRY(IPTE)命令やPURGE TLB(PTLB)命令などがあげられる。)が行われた場合には、シャドウ・ページ・テーブルの該当部分を削除する。
また、動的バイナリ変換は、ゲスト仮想ページに対して変換コードを作成する方式とゲスト物理ページに対して変換コードを作成する方式の2種類があるが、前者の方が主流である。前者の方式の場合、DATテーブルが更新を受けたりTLB操作が行われた場合にはゲスト仮想ページが削除されるので、そのゲスト仮想ページを基にして翻訳された変換コードもまた削除する必要がある。そのためシャドウページ方式を用いた場合、このシャドウ・ページ・テーブルと連動して変換コードを管理する必要がある。
図1は、シャドウページ方式で動的バイナリ変換された変換コードを管理する様子を模式的に表している。シャドウテーブルには、ホスト仮想ページアドレスと、このホスト仮想ページアドレスに係るコードが格納されているホスト物理ページへのポインタと、このようなコードのコード変換の結果である変換コードが格納されているホスト物理ページへのポインタとが登録されている。ゲスト仮想ページは仮想マシン内でホスト仮想ページに変換される(ステップ(101))。このホスト仮想ページのアドレスをキーにしてシャドウテーブル内の検索が行われ(ステップ(102))、該当するエントリのポインタにより、DATが写像すべきホスト物理ページ1001と翻訳を行った変換コード1002に到達することができる。シャドウテーブルはDATに従い動的にサイズが変わっていく。図1ではシャドウテーブルを線形的なテーブルで表しているが、実際には階層テーブルやハッシュテーブルであることもある。またホスト仮想ページアドレスとホスト物理ページ、ホスト仮想ページアドレスと変換コードの管理表は分れている場合もある。
米国特許第7299337号公報
Keith Adams et al: A Comparison of Software and Hardware Techniques for x86 Virtualization, ASPLOS' 06 October 21-25, 2006, San Jose, California
シャドウページ方式において、ゲスト仮想ページからゲスト物理ページへの写像関係は多対1になるため、シャドウ・ページ・テーブルのサイズは固定的には決まらない。このため、実行に先立ってシャドウ・ページ・テーブルを静的に割り付けることができないという問題がある。
また、DATテーブルの書き替えによって動的バイナリ変換によって生成した変換コードの内容が不正になったり、変換コードが使用されなくなって不要になることがある。このようなタイミングはゲストマシン上のプログラムに明示的に示されることが少ないため、変換コードを破棄するタイミングの判定が困難で、またシャドウ・ページ・テーブルのメンテナンスも難しい。
すなわち、シャドウ・ページ・テーブルの利用は、仮想マシンにおいて動的バイナリ変換を適用する上で必ずしも効率的ではない。
よって、本技術の目的は、仮想マシンにおいて動的バイナリ変換を適用する上で効率的なメモリ管理技術を提供することである。
本仮想化処理方法は、ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させるための方法である。そして、特定のゲスト仮想ページへのアクセスの際に、特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードをホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定されたゲスト物理ページアドレスについてのエントリを読み出し、変換コードへのポインタが含まれているか判断するステップと、変換コードへのポインタが含まれている場合には、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとを比較する比較ステップと、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとが一致する場合には、読み出されたエントリに含まれる変換コードへのポインタにより当該変換コードを読み出して実行するステップとを含む。
仮想マシンにおいて動的バイナリ変換を適用する上で効率的なメモリ管理が可能となる。
図1は、従来技術を説明するための図である。 図2は、メモリ空間の関係を説明するための図である。 図3は、本実施の形態の概要を説明するための模式図である。 図4は、本実施の形態の概要を説明するための模式図である。 図5は、本実施の形態の概要を説明するための模式図である。 図6は、ホストマシンのシステム構成図である。 図7は、本実施の形態におけるメインの処理フローを示す図である。 図8は、αテーブル検索処理の第1の処理フローを示す図である。 図9は、登録処理の処理フローを示す図である。 図10は、共有メモリについて説明するための図である。 図11は、共有メモリに対応するためのαテーブルの概要を示す図である。 図12は、αテーブル検索処理の第2の処理フローを示す図である。 図13は、コンピュータの機能ブロック図である。
[実施の形態の概要]
ホストマシンのCPU(Central Processing Unit)が以下で述べるCPUエミュレータを実行することで、ゲストマシンのCPUを仮想的にエミュレートする。このCPUエミュレータが動作するホストマシンにおける仮想及び物理メモリ空間の配置と、CPUエミュレータが仮想的に実行するゲストマシンにおける仮想メモリ空間と物理メモリ空間との対応関係を図2に示す。
図2の左側がエミュレーションされるゲストマシンにおけるメモリアクセスを模式的に示しており、図2の右側がこのメモリアクセスをホストマシン上でエミュレートした様子を模式的に示す。
まず、ゲストマシン起動時に、ホスト物理空間上に当該ゲストマシンの物理メモリ用の領域Aを確保する。CPUエミュレータは、ホスト仮想空間上で動作しており、ホスト仮想空間上には、ゲストマシンのゲスト仮想空間に対応する窓(すなわち、ゲスト仮想メモリアクセス領域B)を設けるものとする。
また、ゲストマシン起動時には、ホスト物理空間に、確保されたゲスト物理メモリ用の領域Aに含まれるページ数分のエントリを固定的に有するαテーブルの領域も確保され、CPUエミュレータにより、各エントリには各ページへのポインタが設定される。さらに、ホスト物理空間には、ゲスト物理メモリ用の領域Aに格納されているコードをホストマシン用にコード変換(翻訳とも呼ぶ)した結果である変換コードを格納する変換コード管理領域も含まれる。
このような状況において、ゲスト仮想ページPage1がゲスト物理ページPage2に写像されるものとする(図2のゲストDAT)。この動作をエミュレートするため、CPUエミュレータはゲスト仮想メモリアクセス領域B上で、Page1に対応するホスト仮想ページPage4にアクセスする。そして、ホストマシンのDATでホスト仮想ページPage4をホスト物理ページPage3に写像できれば、ゲストマシンのメモリアクセスをホストマシンがエミュレートしたことになる。本実施の形態では、ゲストDATとホストDATとの整合性については、従来技術によって担保することとし、これ以上述べないこととする。
本実施の形態では、上で述べたαテーブルを導入することによって、例えばゲスト仮想ページPage1にアクセスする際に、対応するホスト物理ページPage3に効率的にアクセスできるようにすると共に、対応するホスト物理ページPage3に格納されているコードのコード変換の結果である変換コードに効率的にアクセスできるようにする。
図3に、αテーブルを用いたメモリアクセスを模式的に示す。αテーブルは、ゲスト物理ページ数分のエントリを固定的に有するテーブルであり、ゲスト物理ページ番号順にエントリは並べられている。このαテーブルは、ゲスト仮想ページアドレスの列Xと、対応するホスト物理ページへのポインタの列Yと、対応するホスト物理ページに格納されているコードのコード変換の結果である変換コードへのポインタの列Zとを有する。
ゲスト仮想ページアドレスの列Xには、ゲスト物理ページに格納されているコードに対して動的バイナリ変換を実施した時のゲスト仮想ページのアドレス値が格納される。すなわち、変換コードの列Zのアドレスに格納されている変換コードが有効であるゲスト仮想ページアドレスが登録されている。また、エントリの位置とホスト物理ページへのポインタへの列Yとで、ゲスト物理ページとホスト物理ページの対応関係を表している。
このようなαテーブルを用いてゲスト仮想ページアドレスからホストマシン用に翻訳されている変換コードを検索する場合、まずゲスト仮想ページアドレスをDATを用いてゲスト物理ページアドレスへ変換する。但し、この変換にはシャドウ・ページ・テーブル等の他の手法を用いても良い。
そして、ゲスト物理ページアドレスをキーにしてαテーブルを検索し、当該αテーブルから該当するエントリを特定する。αテーブルはゲスト物理ページ番号順に並んでいるので、この検索は単純な一次変換となる。この検索によって特定されたエントリにより、ホスト物理ページへのポインタ及び変換コードへのポインタが得られ、それらに容易にアクセスすることができる。しかしながら、シャドウページ方式と異なり、ゲスト仮想ページとゲスト物理ページが多対一となってしまっている場合には、同一のエントリに重複してヒットしてしまう。そのため、あるゲスト仮想ページアドレスからαテーブルで辿って変換コードを特定できても、この変換コードが検索元のゲスト仮想ページを翻訳したものとは限らない。このため検索元となるゲスト仮想ページのアドレスとαテーブル内のゲスト仮想ページアドレスの列Xのアドレス値とを比較することでチェックを行う。これが一致する場合には、変換コードは有効であり実行可能である。不一致の場合には変換コードは無効であり、削除する必要がある。同様に、αテーブルにおける該当エントリに含まれるポインタも破棄すべきである。
例えば図4に示すように、最初に、ゲスト仮想ページアドレスaaaがαテーブルの列Xに登録されてものとする。そうすると、ゲスト仮想ページアドレスaaaにアクセスした際、DAT等によりゲスト物理ページアドレスAAAを得て、当該ゲスト物理ページアドレスAAAで、αテーブルにアクセスすると、ゲスト仮想ページアドレスの列Xにはゲスト仮想ページアドレスaaaが登録されているので、列Zに変換コードへのポインタが登録されていれば、変換コードを得ることができる。
しかし、その後DATテーブル等が書き換えられ、図5に示すように、ゲスト仮想ページアドレスaaaがDAT等によりゲスト物理ページアドレスBBBに写像され、ゲスト仮想ページアドレスbbbがDAT等によりゲスト物理ページアドレスAAAに写像されるようになったとする。
このとき、DATテーブル等が書き換えられた後に別途変換コードを削除するような処理を実施しなければ、図5に示すように、ゲスト物理ページアドレスAAAのエントリの列Xには、ゲスト仮想ページアドレスaaaが残っており、列Zには、元の変換コードへのポインタが残ってしまっている。
そうすると、ゲスト仮想ページアドレスbbbにアクセスする際には、DAT等によりゲスト物理ページアドレスAAAが得られて、当該ゲスト物理ページアドレスAAAにアクセスしても、αテーブルの列Xのアドレス値aaaと一致しないので、列Zに格納されている変換コードへのポインタ及び変換コード自体無効である。従って、このタイミングで変換コードを削除し、αテーブルの列Zの変換コードへのポインタも削除する。
一方、ゲスト仮想ページアドレスaaaにアクセスする際には、DAT等によりゲスト物理ページアドレスBBBが得られてゲスト物理ページアドレスBBBにアクセスしても、αテーブルの列Xには初期値が登録されているだけで、列Zには変換コードへのポインタも登録されていない状態である。
図4の場合も図5の場合も、ここでαテーブルの列Yに格納されているホスト物理ページアドレスにアクセスして、格納されているコードに対してコード変換処理を実施し、新たに変換コードを生成する。そして、αテーブルの列Zに、当該変換コードのアドレスを登録すると共に、αテーブルの列Xに、今回有効となったゲスト仮想ページアドレスを登録する。このようにすれば、同じゲスト仮想ページにアクセスする際今後適正な変換コードの実行速度を速くすることができる。
以下、本実施の形態で導入されたαテーブルを用いてどのように処理を実施するのかについて具体的に述べる。
[本実施の形態の具体的内容]
図6に、本実施の形態のαテーブルに関わるシステム構成を示す。ホストマシン1のホストCPUがCPUエミュレータ100を実行することで、ゲストマシンのCPUを仮想的にエミュレートする。CPUエミュレータ100は、命令インタプリタ101と、変換コード検索部103と、動的バイナリ変換部105とを有する。また、ホストマシン1のホスト主記憶200には、ゲスト主記憶領域201と、αテーブル203と、変換コード管理領域205とが設けられている。ゲスト主記憶領域201には、ゲストマシンのプログラムであるゲストプログラム2011が格納されており、αテーブル203には、ゲスト仮想ページ数分のエントリ2031が含まれており、変換コード管理領域205にはゲストプログラム2011のコード変換の結果である変換コード2051が格納されている。上で述べたように、エントリ2031は、変換コード2051を指し示している場合がある。
CPUエミュレータ100は、最初命令インタプリタ101を用いて、ゲスト主記憶領域201上のゲストプログラム2011の実行を行う(図6(1))。これはゲスト主記憶領域201上に格納されているゲストマシン命令の逐語解釈実行となる。しかし命令インタプリタ101の実行速度は遅い。その性能を改善するために、動的バイナリ変換部105により、ゲストマシンの命令列をホストマシン1用のコードに変換することによって変換コード2051を生成し、変換コード管理領域205に登録する。さらに、αテーブル203の該当エントリ2031の更新も行う(図6(6))。変換コード2051の登録後に、CPUエミュレータ100の変換コード検索部103は、本実施の形態の概要の欄で述べたように、αテーブル203の検索を実施し(図6(4))、適正な変換コード2051が変換コード管理領域205に格納されていることが分かれば、CPUエミュレータ100は、ゲストプログラム2011の逐語解釈実行ではなく変換コード2051を実行する(図6(5))。これによって処理の高速化が図られる。
また、命令インタプリタ101がDATテーブルの一部を無効化するゲストマシン命令(例えばIPTE命令等)を逐語解釈実行する場合には、変換コード管理領域205に格納されている該当変換コード2051を削除する(図6(2))。また、図4及び図5で説明したように、αテーブル203の検索を行った結果、無効な変換コード2051を検出した場合には、変換コード検索部103が、αテーブル203の該当エントリ2031における変換コード2051へのポインタを削除すると共に、変換コード管理領域205に格納されている該当変換コード2051を削除する(図6(3))。
なお、命令インタプリタ101が、TLBをフラッシュするゲストマシン命令(例えばIBM社のSystem/370のPTLB命令など)を逐語解釈実行する場合や、DATテーブルの無効化命令なしでDATテーブルを書き換えた場合、αテーブル203に登録されている仮想ページ−物理ページの写像関係と実際のDATテーブルとの間の一貫性が崩れることになる。これは図4及び図5で述べたような処理にて検出可能なため、TLBフラッシュ操作やDATテーブルの書き替え操作のタイミングではαテーブル203の更新は行わない。これによって、メモリ管理に必要な処理の効率化が図られる。
次に、図7乃至図12を用いて、図6のシステムの処理内容について詳細に説明する。まず、命令インタプリタ101が特定のゲスト仮想ページへのアクセスを行う際には、命令インタプリタ101は、変換コード検索部103にアクセス先のゲスト仮想ページのアドレスを出力し、変換コード検索部103は、DATテーブル等により当該特定のゲスト仮想ページアドレスからゲスト物理ページアドレスを特定する(図7:ステップS1)。そして、変換コード検索部103は、特定されたゲスト物理ページアドレスによるαテーブル検索処理を実施する(ステップS3)。このαテーブル検索処理については、図8を用いて説明する。
まず、変換コード検索部103は、特定されたゲスト物理ページアドレスでαテーブル203を検索し、当該ゲスト物理ページアドレスのエントリを読み出す(ステップS21)。そして、変換コード検索部103は、読み出したエントリに変換コードへのポインタが登録済みであるか判断する(ステップS23)。読み出したエントリに変換コードへのポインタが登録されていない場合には、そのまま元の処理に戻る。
一方、読み出したエントリに変換コードへのポインタが登録されていれば、変換コード検索部103は、特定のゲスト仮想ページアドレスと、当該エントリに含まれているゲスト仮想ページアドレスとが一致するか判断する(ステップS25)。一致しない場合には、変換コード検索部103は、読み出したエントリに含まれる変換コードへのポインタで指し示されている変換コードを削除し(ステップS29)、当該エントリにおける変換コードへのポインタを削除する(ステップS30)。そして、元の処理に戻る。
一方、特定のゲスト仮想ページアドレスと、当該エントリに含まれているゲスト仮想ページアドレスとが一致する場合には、有効な変換コードが得られることを意味するので、変換コード検索部103は、読み出されたエントリにおける変換コードへのポインタを特定し、保持する(ステップS27)。そして元の処理に戻る。
このように2つの条件を満たしていれば有効な変換コードを用いることができ、2つの条件のうち少なくともいずれかを満たさない場合には、有効な変換コードを用いることができない。
図7の処理の説明に戻って、変換コード検索部103は、ステップS3の結果、変換コードへのポインタを特定して保持しているか判断する(ステップS5)。変換コードへのポインタを特定して保持している場合には、CPUエミュレータ100は、変換コードへのポインタで変換コード管理領域205から該当する変換コードを読み出して、実行する(ステップS11)。
一方、変換コードへのポインタを特定していない場合には、変換コード検索部103は、動的バイナリ変換部105に、αテーブル203において該当するエントリに含まれるホスト物理ページへのポインタと、ゲスト仮想ページアドレス及びゲスト物理ページアドレスとを出力し、動的バイナリ変換部105は、当該ポインタで指し示されるホスト物理ぺージに格納されているコードに対して周知のコード変換処理を実施し、生成された変換コードを変換コード管理領域205に格納する(ステップS7)。そして、動的バイナリ変換部105は、αテーブル203への登録処理を実施する(ステップS9)。本登録処理については図9を用いて説明する。
動的バイナリ変換部105は、変換コード検索部103から受け取ったゲスト物理ページアドレスでαテーブル203の該当エントリを特定する(ステップS31)。そして、当該エントリに、ゲスト仮想ページアドレスを上書き保存すると共に、今回生成した変換コードへのポインタも登録する(ステップS33)。これによって、正しいデータが、αテーブル203の該当エントリに登録されるようになって、当該エントリのデータを利用することで、ゲストプログラム2011が高速に実行されるようになる。そして元の処理に戻る。
図7の処理の説明に戻って、ステップS9の後には、CPUエミュレータ100は、動的バイナリ変換部105が保持する変換コードへのポインタで新たに生成した変換コードを取得して、変換コードを実行する(ステップS11)。
以上のような処理を、処理終了まで繰り返し(ステップS13)、動的バイナリ変換を利用して高速な実行が可能な仮想マシンが実現される。
なお、ステップS7及びS9の代わりに、より高速にするために動的バイナリ変換を非同期に別プロセッサに任せ、未だ変換されていない場合は変換コードではなくインタプリタで実行する方式を採用する場合もある。
なお、上で述べた処理を実施することにより、αテーブル203の各エントリはゲスト仮想ページと一対一の写像関係を持つという一貫性を維持することが可能である。
但し、共有メモリに対しても同様の処理を行うと、変換コードの削除が頻発し性能低下が問題になる可能性がある。共有メモリとは一般的なOS(Operating System)で使用される技術で、図10に示すように複数の仮想アドレス空間1乃至3から同一の物理アドレス空間への写像を許す技術である。特に一般的なOSはカーネルに関するコードを共有メモリに配置することが多いため、これまで述べたαテーブル方式をそのまま適用すると、OSカーネルに対する動的バイナリ変換で性能が向上しない。
このため、共有メモリに関しては、ゲスト物理ページに対して複数のゲスト仮想ページを対応させることを許すように構成する。具体的には、図11に示すように、αテーブル203のゲスト仮想ページアドレスの列Xを、ページ共有の判定ビット、仮想空間を区別する空間識別子及びページアドレスに細分化する。そして、アクセス先のページが仮想空間間で共有されているかどうかはページ共有判定ビットで区別する。アクセス先のページが非共有ページの場合は、空間識別子とページアドレスの両方を用いて、図8のステップS25の判断を実施する。一方、共有メモリの場合には空間識別子を無視してページアドレスのみを比較すればよい。
一般に、あるページが共有メモリとして使用されているか否かは、ゲストマシンのハードウェア特性(例えばIBM社のSystem/370におけるcommon segment bit、Intel 386のPTEにおけるglobal bitなど)やゲストOSの特性(i386/Linuxの場合、各仮想アドレス空間4GBの後半1GBがカーネルの使用と決まっている)から定まる。従って、このような情報を基に用意される動的バイナリ変換部105は、変換対象となったページが共有メモリかどうかの情報をαテーブルエントリの登録時にページ共有判定ビットに反映させる。
具体的には、図8の代わりに、図12のαテーブル検索処理を実施する。
まず、変換コード検索部103は、特定されたゲスト物理ページアドレスでαテーブル203を検索し、当該ゲスト物理ページアドレスのエントリを読み出す(ステップS41)。そして、変換コード検索部103は、読み出したエントリに変換コードへのポインタが登録済みであるか判断する(ステップS43)。読み出したエントリに変換コードへのポインタが登録されていない場合には、そのまま元の処理に戻る。
一方、読み出したエントリに変換コードへのポインタが登録されていれば、変換コード検索部103は、読み出したエントリに含まれるページ共有判定ビットがオンであるか判断する(ステップS45)。ページ共有判定ビットがオンであれば、共有ページであるから、変換コード検索部103は、命令インタプリタ101から受け取ったゲスト仮想ページアドレスのページアドレス部分と、読み出したエントリにおけるゲスト仮想ページアドレスのページアドレス部分とが一致するか判断する(ステップS47)。すなわち、空間識別子部分を除外して比較する。一致する場合には、変換コード検索部103は、読み出したエントリにおける変換コードへのポインタを特定し、保持する(ステップS49)。そして元の処理に戻る。一方、一致しない場合には、変換コード検索部103は、変換コード検索部103は、読み出したエントリに含まれる変換コードへのポインタで指し示されている変換コードを削除し(ステップS53)、当該エントリにおける変換コードへのポインタを削除する(ステップS55)。そして、元の処理に戻る。
また、読み出したエントリにおけるページ共有判定ビットがオフであれば、非共有ページであるから、変換コード検索部103は、命令インタプリタ101から受け取ったゲスト仮想ページアドレスと、読み出したエントリにおける空間識別子とページアドレスを含むゲスト仮想ページアドレスとが一致するか判断する(ステップS51)。非共有メモリについては空間識別子をも含めて一致するか判断する。一致する場合には、変換コード検索部103は、ステップS49に移行する。一方、不一致の場合には、ステップS53に移行する。
以上のような処理を実施すれば、共有メモリが存在する場合においても、αテーブルを問題なく活用することができるようになる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で述べた具体的な命令名は、一例であって、他のOSにおける実質的に同一の機能を果たす命令であれば該当する。さらに、上でも述べたが、動的バイナリ変換部105を別のCPUなどに設けて、ゲストプログラム2011に対して別スレッドで変換処理を実施して、変換完了ページについて随時変換コードへのポインタをαテーブル203に登録するようにしても良い。このような場合には、図7のステップS7及びS9の代わりに、命令インタプリタ101により、αテーブル203から得られたホスト物理ページへのポインタで得られるコードを逐次実行する。後に同一のゲスト仮想ページアドレスにアクセスする際に、変換コードが生成済みであれば、ステップS11に移行して変換コードを得て実行することができる。
また、処理フローについても一例であって、同一の機能を果たすことができれば、順番を入れ替えたり、並列実行される場合もある。
なお、上で述べたホストマシン1は、コンピュータ装置であって、図13に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上本実施の形態をまとめると以下のようになる。
本仮想化処理方法は、ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させるための方法である。そして、特定のゲスト仮想ページへのアクセスの際に、特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードをホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定されたゲスト物理ページアドレスについてのエントリを読み出し、変換コードへのポインタが含まれているか判断するステップと、変換コードへのポインタが含まれている場合には、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとを比較する比較ステップと、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとが一致する場合には、読み出されたエントリに含まれる変換コードへのポインタにより当該変換コードを読み出して実行するステップとを含む。
上で述べたような変換テーブルを用いることによって、変換テーブルのエントリ数をホスト物理ページ数に限定でき、メンテナンスも容易で、仮想マシンにおいて動的バイナリ変換を効率的に行うことができるようになる。
また、本仮想化処理方法では、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスとが不一致である場合には、読み出されたエントリに含まれる変換コードへのポインタを削除すると共に、当該ポインタで指定されたページに格納されている当該変換コードを削除するステップをさらに含むようにしても良い。上で述べたような条件が成立すれば、動的アドレス変換(DAT)テーブルの書き換えやTLB(Translation Lookaside Buffer)のフラッシュが発生したことが分かるので、不要な変換コードを破棄することができるようになる。なお、DATテーブルの一部を無効化するゲストマシン命令を実行することが分かれば、この際にも該当する変換コードを削除して、変換テーブルにおける該当エントリの変換コードへのポインタを破棄すればよい。
また、本仮想化処理方法では、読み出されたエントリに含まれるゲスト仮想ページアドレスと特定のゲスト仮想ページのアドレスが不一致である場合又は読み出されたエントリに変換コードへのポインタが含まれていない場合、読み出されたエントリに含まれるホスト物理ページへのポインタにより当該ホスト物理ページに格納されているコードを読み出して、コード変換処理を実施するステップと、特定されたゲスト物理ページアドレスについてのエントリに、特定のゲスト仮想ページのアドレスとコード変換処理によって生成された変換コードが格納されているホスト物理ページのアドレスを格納するステップと、コード変換処理によって生成された変換コードを実行するステップとをさらに含むようにしても良い。このように直ぐに変換コードを実行できない場合においても、変換テーブルの該当エントリから、コード変換処理を実施すべきコードの格納場所が特定できるので、コード変換処理をスムーズに実行することができる。
さらに、変換テーブルにおける有効なゲスト仮想ページアドレスが、ページ共有判定ビットと空間識別子とページアドレスとを含むようにしてもよい。この場合、上で述べた比較ステップにおいて、ページ共有判定ビットがセットされている場合には、読み出されたエントリに含まれるゲスト仮想ページアドレスのうちページアドレスと、特定のゲスト仮想ページのアドレスのうち空間識別子以外の部分とを比較し、ページ共有判定ビットがセットされていない場合には、読み出されたエントリに含まれる有効なゲスト仮想ページアドレスのうち空間識別子及びページアドレスと特定のゲスト仮想ページのアドレスとを比較するようにしてもよい。例えば、複数のゲストマシンで共有するメモリ領域以外の部分については、上で述べたような構成にてゲスト仮想ページアドレスとホスト物理アドレスとの一対一関係を表すことができる。しかしながら、複数のゲストマシンで共有するメモリ領域については、多対一の写像関係を有効に表す必要があるので、上で述べたような構成を採用すれば、変換コードを効率よく利用できるようになる。
なお、上で述べたような処理をホストマシンに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させるための仮想化プログラムであって、
特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、
ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断するステップと、
前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する比較ステップと、
読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行するステップと、
を実行させるための仮想化プログラム。
(付記2)
読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが不一致である場合には、読み出された前記エントリに含まれる前記変換コードへのポインタを削除すると共に、当該ポインタで指定されたページに格納されている当該変換コードを削除するステップ
をさらに含む付記1記載の仮想化プログラム。
(付記3)
読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスが不一致である場合又は読み出された前記エントリに前記変換コードへのポインタが含まれていない場合、読み出された前記エントリに含まれる前記ホスト物理ページへのポインタにより当該ホスト物理ページに格納されているコードを読み出して、コード変換処理を実施するステップと、
特定された前記ゲスト物理ページアドレスについてのエントリに、前記特定のゲスト仮想ページのアドレスと前記コード変換処理によって生成された変換コードが格納されているホスト物理ページのアドレスを格納するステップと、
前記コード変換処理によって生成された変換コードを実行するステップと、
をさらに実行させるための付記1又は2記載の仮想化プログラム。
(付記4)
前記変換テーブルにおける前記有効なゲスト仮想ページアドレスが、ページ共有判定ビットと空間識別子とページアドレスとを含み、
前記比較ステップにおいて、
前記ページ共有判定ビットがセットされている場合には、読み出された前記エントリに含まれる前記ゲスト仮想ページアドレスのうち前記ページアドレスと、前記特定のゲスト仮想ページのアドレスのうち前記空間識別子以外の部分とを比較し、
前記ページ共有判定ビットがセットされていない場合には、読み出された前記エントリに含まれる前記ゲスト仮想ページアドレスのうち前記空間識別子及び前記ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する
付記1乃至3のいずれか1つ記載の仮想化プログラム。
(付記5)
ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させる仮想化処理方法であって、
特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、
ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断するステップと、
前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する比較ステップと、
読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行するステップと、
を含む仮想化処理方法。
(付記6)
仮想的なコンピュータであるゲストマシンを実行させるホストマシンであって、
特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定する手段と、
ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルを格納するメモリと、
前記変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断し、前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較し、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行する手段と、
を有するホストマシン。
1 ホストマシン 100 CPUエミュレータ
200 ホスト主記憶
101 命令インタプリタ 103 変換コード検索部
105 動的バイナリ変換部
201 ゲスト主記憶領域 203 αテーブル
205 変換コード管理領域
2011 ゲストプログラム
2051 変換コード

Claims (6)

  1. ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させるための仮想化プログラムであって、
    特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、
    ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断するステップと、
    前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する比較ステップと、
    読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行するステップと、
    を実行させるための仮想化プログラム。
  2. 読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが不一致である場合には、読み出された前記エントリに含まれる前記変換コードへのポインタを削除すると共に、当該ポインタで指定されたページに格納されている当該変換コードを削除するステップ
    をさらに含む請求項1記載の仮想化プログラム。
  3. 読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスが不一致である場合又は読み出された前記エントリに前記変換コードへのポインタが含まれていない場合、読み出された前記エントリに含まれる前記ホスト物理ページへのポインタにより当該ホスト物理ページに格納されているコードを読み出して、コード変換処理を実施するステップと、
    特定された前記ゲスト物理ページアドレスについてのエントリに、前記特定のゲスト仮想ページのアドレスと前記コード変換処理によって生成された変換コードが格納されているホスト物理ページのアドレスを格納するステップと、
    前記コード変換処理によって生成された変換コードを実行するステップと、
    をさらに実行させるための請求項1又は2記載の仮想化プログラム。
  4. 前記変換テーブルにおける前記有効なゲスト仮想ページアドレスが、ページ共有判定ビットと空間識別子とページアドレスとを含み、
    前記比較ステップにおいて、
    前記ページ共有判定ビットがセットされている場合には、読み出された前記エントリに含まれる前記ゲスト仮想ページアドレスのうち前記ページアドレスと、前記特定のゲスト仮想ページのアドレスのうち前記空間識別子以外の部分とを比較し、
    前記ページ共有判定ビットがセットされていない場合には、読み出された前記エントリに含まれる前記ゲスト仮想ページアドレスのうち前記空間識別子及び前記ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する
    請求項1乃至3のいずれか1つ記載の仮想化プログラム。
  5. ホストマシンに、仮想的なコンピュータであるゲストマシンを実行させる仮想化処理方法であって、
    特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定するステップと、
    ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断するステップと、
    前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較する比較ステップと、
    読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行するステップと、
    を含む仮想化処理方法。
  6. 仮想的なコンピュータであるゲストマシンを実行させるホストマシンであって、
    特定のゲスト仮想ページへのアクセスの際に、前記特定のゲスト仮想ページのアドレスに対応するゲスト物理ページアドレスを特定する手段と、
    ゲスト物理ページの数分エントリを有しており且つ各ゲスト物理ページアドレスにゲスト仮想ページアドレスと対応するホスト物理ページへのポインタと当該ホスト物理ページに格納されているコードを前記ホストマシン向けに変換したコードである変換コードへのポインタとを格納するための変換テーブルを格納するメモリと、
    前記変換テーブルから、特定された前記ゲスト物理ページアドレスについてのエントリを読み出し、前記変換コードへのポインタが含まれているか判断し、前記変換コードへのポインタが含まれている場合には、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとを比較し、読み出された前記エントリに含まれるゲスト仮想ページアドレスと前記特定のゲスト仮想ページのアドレスとが一致する場合には、読み出された前記エントリに含まれる前記変換コードへのポインタにより当該変換コードを読み出して実行する手段と、
    を有するホストマシン。
JP2009104022A 2009-04-22 2009-04-22 仮想化プログラム、仮想化処理方法及び装置 Active JP5246014B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009104022A JP5246014B2 (ja) 2009-04-22 2009-04-22 仮想化プログラム、仮想化処理方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009104022A JP5246014B2 (ja) 2009-04-22 2009-04-22 仮想化プログラム、仮想化処理方法及び装置

Publications (2)

Publication Number Publication Date
JP2010257049A true JP2010257049A (ja) 2010-11-11
JP5246014B2 JP5246014B2 (ja) 2013-07-24

Family

ID=43317918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009104022A Active JP5246014B2 (ja) 2009-04-22 2009-04-22 仮想化プログラム、仮想化処理方法及び装置

Country Status (1)

Country Link
JP (1) JP5246014B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014211727A (ja) * 2013-04-18 2014-11-13 株式会社日立製作所 仮想計算機システムおよび仮想計算機におけるi/o実施方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5434722A (en) * 1977-08-24 1979-03-14 Hitachi Ltd Address converting device
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
JPH05225064A (ja) * 1992-02-10 1993-09-03 Hitachi Ltd アドレス変換装置及びバッファ記憶制御装置
JP2003511788A (ja) * 1999-10-13 2003-03-25 トランスメータ・コーポレーション 微細粒度変換判別
JP2004110812A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム
JP2006252554A (ja) * 2005-03-08 2006-09-21 Microsoft Corp 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5434722A (en) * 1977-08-24 1979-03-14 Hitachi Ltd Address converting device
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
JPH05225064A (ja) * 1992-02-10 1993-09-03 Hitachi Ltd アドレス変換装置及びバッファ記憶制御装置
JP2003511788A (ja) * 1999-10-13 2003-03-25 トランスメータ・コーポレーション 微細粒度変換判別
JP2004110812A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム
JP2006252554A (ja) * 2005-03-08 2006-09-21 Microsoft Corp 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014211727A (ja) * 2013-04-18 2014-11-13 株式会社日立製作所 仮想計算機システムおよび仮想計算機におけるi/o実施方法

Also Published As

Publication number Publication date
JP5246014B2 (ja) 2013-07-24

Similar Documents

Publication Publication Date Title
US8095771B2 (en) Method and system for caching address translations from multiple address spaces in virtual machines
US8171255B1 (en) Optimization of paging cache protection in virtual environment
US9104594B2 (en) Operational efficiency of virtual TLBs
US10318322B2 (en) Binary translator with precise exception synchronization mechanism
JP5214670B2 (ja) マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置
JP5091655B2 (ja) 計算機仮想化装置、そのプログラム、及びその方法
US6820255B2 (en) Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US10474369B2 (en) Mapping guest pages to disk blocks to improve virtual machine management processes
CN109074316B (zh) 页面错误解决方案
US9405567B2 (en) Method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts
US9286101B2 (en) Free page hinting
US7856542B1 (en) Paging cache optimization for virtual machine
US20090119089A1 (en) Method, apparatus and full-system simulator for speeding mmu simulation
WO2006081582A2 (en) A method and apparatus for supporting address translation in a virtual machine environment
US7506096B1 (en) Memory segment emulation model for virtual machine
US8589143B2 (en) Virtualization apparatus and processing method thereof
JP5246014B2 (ja) 仮想化プログラム、仮想化処理方法及び装置
US20230229609A1 (en) Iommu-based direct memory access (dma) tracking for enabling live migration of virtual machines (vms) using passthrough physical devices
US20230195533A1 (en) Prepopulating page tables for memory of workloads during live migrations
JP2010198398A (ja) 計算機装置および制御方法
AU2014328735B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
Zhen-hua et al. A Dual-TLB Method for MIPS Heterogeneous Virtualization
JPS588073B2 (ja) アドレス変換装置
Zhang A Simplified TDP with Large Tables

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130325

R150 Certificate of patent or registration of utility model

Ref document number: 5246014

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3