JP5010164B2 - サーバ装置及び仮想計算機の制御プログラム - Google Patents

サーバ装置及び仮想計算機の制御プログラム Download PDF

Info

Publication number
JP5010164B2
JP5010164B2 JP2006097594A JP2006097594A JP5010164B2 JP 5010164 B2 JP5010164 B2 JP 5010164B2 JP 2006097594 A JP2006097594 A JP 2006097594A JP 2006097594 A JP2006097594 A JP 2006097594A JP 5010164 B2 JP5010164 B2 JP 5010164B2
Authority
JP
Japan
Prior art keywords
code
operation code
conversion
hardware
executed
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.)
Expired - Fee Related
Application number
JP2006097594A
Other languages
English (en)
Other versions
JP2007272576A (ja
JP2007272576A5 (ja
Inventor
直也 服部
俊臣 森本
雄次 對馬
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006097594A priority Critical patent/JP5010164B2/ja
Priority to US11/703,662 priority patent/US8104035B2/en
Publication of JP2007272576A publication Critical patent/JP2007272576A/ja
Publication of JP2007272576A5 publication Critical patent/JP2007272576A5/ja
Application granted granted Critical
Publication of JP5010164B2 publication Critical patent/JP5010164B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

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

Description

本発明はサーバ装置において実現される仮想計算機システムに関して、ハードウェアエミュレーションの効率化に関する。
ITシステムに含まれるサーバ台数が増加するにつれて、運用に関する複雑さが増加するため、その運用コストが問題化する。運用コストを低減するために、複数サーバを1台のサーバに統合するサーバ統合が知られている。サーバ統合を実現する技術として、一つのコンピュータを任意の割合で論理的に分割する仮想計算機技術が知られている。
仮想計算機技術は、例えば、ハイパバイザなどのファームウェア又はミドルウェアが、物理計算機を複数の論理区画(LPAR:Logical PARtition)に分割し、分割された各LPARに計算機資源(CPU、主記憶及びI/O)を割り当てる。この各LPAR上でオペレーティングシステム(OS)が動作する。また、一つのサーバ上で一つのホストOS(物理計算機を直接使用するOS)を実行し、このホストOS上で稼動するハイパバイザが同様に物理計算機をLPARに分割する。この各LPAR上でゲストOS(LPAR上で稼動するOS)が稼動してもよい。
このように、仮想計算機技術は、従来複数のサーバで稼動していたOS及びOS上で稼動するソフトウェアを、1台のサーバで稼動させることを可能にする。これによって、サーバ統合が実現される。
この仮想計算機技術は、従来は汎用機(MainFrame)等の大型計算機で用いられてきた技術であるが、近年のマイクロプロセッサの性能向上によって、ローエンドサーバやパーソナルコンピュータにも適用可能である。
この仮想計算機技術を適用することによって、物理計算機は、ゲスト(ゲストOS及びゲストOS上で稼動するアプリーケーションソフトウェアの総称)を稼動させる複数の仮想計算機(Virtual Machine)と、仮想計算機の制御を行う仮想計算機モニタ(Virtual Machine Monitor、以下VMMとする)とを有する仮想計算機システムが構成される(特許文献1参照)。
なお、OSは、本来、サーバのハードウェアを全て独占して使用することを前提に作られている。しかし、仮想計算機システムでは、複数のゲストOSが稼動する。しかしながら、ゲストOSはサーバのハードウェアを独占することはできない。そこで、VMMが、ゲストOSによるハードウェア操作に対応して、ゲストOSがサーバのハードウェアを独占している状態と同じ振る舞いをエミュレーションする。
VMMは、このエミュレーションの処理のために時間とメモリを使用する。そのため、ゲストOSによってVMMによるエミュレーションの回数が増加すると、処理時間とメモリが増加することによって、ゲストの性能が低下し、ゲストの利用可能なメモリ量が減少する問題がある。この問題を軽減するために、エミュレーションの高速化(高性能化)技術や省メモリ化技術が考案されている。
エミュレーションの高速化技術の一つにコード変換方式がある。コード変換方式は、VMMが、ゲストOSによる操作コード(OSコードとも呼ぶ)に対応する変換コードをメモリ上に作成する。この変換コードの作成処理をコード変換と呼ぶ。変換コードを作成するときに、対応するOSコードに含まれるハードウェア操作は、エミュレーションコードに置き換えられる。このコード変換方式では、OSコードの代わりに変換コードを実行することで、必要最小限の処理のみでハードウェア操作のエミュレーションを可能とする。コード変換方式は、実行に必要な全てのOSコードに対してコード変換を実施する。コード変換は処理時間を要するため速度低下の原因になり得る。そこで本方式では、作成した変換コードをメモリ上に保持し続け、2度目以降はメモリ上の変換コードを再利用し、速度低下を防止する。ただし、変換コードを保持するメモリが不足した場合は、全ての変換コードを保持できないので実行頻度の低い変換コードを破棄する。
エミュレーションの省メモリ化技術であるVT方式は、Intel社製CPUに搭載されたVT(Virtualization Technology)機能を利用する。VT機能を用いるとCPUの動作モードとして、HW操作コードを一切実行できないHW操作完全禁止モードが選択可能になる。CPUがHW操作完全禁止モードのときにHW操作コードの実行を試みると、CPUが例外イベントを発生してコード実行を強制中断する。このとき、CPUはHW操作が可能なHW操作許可モードに遷移した上で、事前に登録されたコードを実行する。逆に、HW操作許可モードで例外イベントからの再開処理を実行すると、CPUはHW操作完全禁止モードに遷移し、指定アドレスから実行を再開する(非特許文献1、非特許文献2参照)。
この方式では、エミュレーション処理を実施するエミュレーションモジュールをCPUに事前登録し、ゲストをHW操作禁止モードで実行させることで、HW操作をエミュレーションする。本方式は、VMMのメモリにエミュレーションモジュール及びエミュレーションに使用するデータのみを保持するため、VMMのメモリ使用量が少ない。
米国特許6,397,242号明細書 Intel Virtualization Technology Specification for the Intel Itanium Architecture Intel Virtualization Technology Specification for the IA-32 Intel Architecture
先行技術であるコード変換方式と、VT方式はそれぞれ問題を有している。
コード変換方式は高性能だが、実行に必要な全てのOSコードを変換するため、変換コードの保持に使用するメモリ量が多く、省メモリは望めない。省メモリ化のためにメモリ量を無理に減らした場合は、変換コードの再利用が十分に機能しなくなり、コード変換の回数が増加して性能低下を招くため、高性能が望めない。
VT方式はエミュレーションの開始時に必ず例外イベントを起こすが、昨今のCPUは例外イベントが発生しないことを仮定して高度な並列実行を行っているため、例外イベントが発生するとCPUは内部状態の有効性判断、破棄、再実行等の複雑な処理を行う必要がある。したがって例外イベントの発生には遅延を要する。そのためVT方式は、省メモリではあるが、高性能は望めない。
以上のように先行技術は、高性能と省メモリの何れか一方のみを解決しており、高性能と省メモリがトレードオフの関係にあって、両立できていない問題がある。
本発明は、前記のような問題点を鑑みてなされたものであり、エミュレーション方式における高性能と省メモリを両立できる仮想計算機システムを提供することを目的とする。
課題を解決するために、本発明ではゲストのプログラムコードを、HW操作の実行頻度に応じて二つの部分に分類し、実行頻度の高い部分にコード変換方式を、実行頻度の低い部分にVT方式を適用する。
本発明ではゲストコードを、高頻度のHW操作コードを含む部分と、その他、すなわち低頻度の部分に分類し、高頻度のHW操作コードのエミュレーションにコード変換方式を適用し、低頻度に含まれるHW操作のエミュレーションにVT方式を適用する。このようにすることによって、高性能と省メモリを両立させる仮想計算機システムが実現できる。
以下に、本発明の実施の形態を添付の図面に基づいて説明する。
<実施形態1>
図1は、本発明の第1の実施の形態の物理計算機のブロック図である。
この図は、仮想計算機システムが動作する物理計算機90の構成を示す。
物理計算機90は、1つ以上のCPU400(400−1〜400−n)を含む。これらのCPU400は、フロントサイドバス425を介してノースブリッジ420と接続する。
ノースブリッジ420は、メモリバス435を介して物理メモリ415と接続する。また、バス445を介してI/Oインターフェース440と接続する。また、コンソール430と直接接続する。
I/Oインターフェース440は、物理計算機90の外部にあるI/Oデバイスと接続し、これらとデータを送受信する。図1の例では、I/Oインターフェース440は、LAN450に接続されているネットワークアダプタ451、ディスク装置460に接続されているSCSIアダプタ461、SAN(Storage Area Network)470に接続されるファイバーチャネルアダプタ471に接続する。
CPU400は、ノースブリッジ420を介して物理メモリ415にアクセスし、物理メモリ415に格納されているプログラムを実行することによって、プログラムに規定された処理を実行する。また、CPU400は、ノースブリッジ420及びI/Oインターフェース440を介して、物理計算機90の外部にあるI/Oデバイスにアクセスする。
ノースブリッジ420は、ホスト物理メモリ415へのデータの入出力を制御する。また、ノースブリッジ420は、グラフィックコントローラを含んでおり、コンソール430に画像やデータを表示する。
物理メモリ415には、仮想計算機モニタ(Virtual Machine Monitor、以下、「VMM」と表記する)10とゲスト20(20−1〜20−n)を実現するためのプログラムが格納されている。CPUがこのプログラムを実行することによって、VMM10が実行され、このVMM10によって、ゲスト20が実行される。
CPU400(400−1〜400−n)は、VT−i機能を備えるIPF(Itanium Processor Family)プロセッサである。CPU400は、CPU400が備えるレジスタのうち、PSR(Processor Status Register)のVMビットが1であるときはHW操作完全禁止モードで動作する。また、PSRのVMビットが0であり、かつ、PSRのCPL(Current Privilege Level)フィールドが0であるときはHW操作許可モードで動作する。また、何れの条件も満たさない場合は、HW操作部分禁止モードで動作する。
また、CPU400は、命令の仮想アドレスと物理アドレスとを変換するための命令アドレス変換機構を備える。この命令アドレス変換機構は、命令TLB(Translation Lookaside Buffer)を用いる。なお、CPU400が、命令TLBと命令ページテーブルを組み合わせてアドレス変換機構を実現してもよい。
次に、本実施の形態の仮想計算機システムを説明する。
図2は、物理計算機90において、ゲスト20(20−1〜20−n)とゲスト20を稼動させるVMM10とを含むハードウェア及びソフトウェアのブロック図である。
図2において、物理計算機90上では、複数のゲスト20(20−1〜20−n)を管理するVMM10が稼動している。VMM10は、これら複数のゲスト20が実行するハードウェアへの操作(以下、「HW操作」と表記する)をエミュレーションする。
各ゲスト20は、稼動に必要なゲストコード21(21−1〜21−m)を1つ以上備える。このゲストコード21は、HW操作コード25を含む。
VMM10は、コード管理モジュール30、コード生成モジュール40、例外イベントハンドラモジュール50、エミュレーションモジュール60、頻度判断モジュール70、切り替えモジュール80を含む。
以降、ゲスト20がHW操作コードを含むゲストコードを実行したときのVMM10の処理を説明する。
VMM10は、ゲストコード21をHW操作完全禁止モードで実行させる。ゲスト20がHW操作コードを含むゲストコード21を実行した場合は、CPU400は例外イベントを発生させる。そして、CPU400がHW操作許可モードに遷移した後、VMM10の例外イベントハンドラモジュール50が実行される。
例外イベントハンドラモジュール50は、例外イベントの発生要因を解析し、その例外イベント、すなわちHW操作コードに対応するエミュレーションモジュール60を呼び出す。
エミュレーションモジュール60は、必要に応じて物理計算機90を操作する。これによって、HW操作コードに対応するエミュレーションが実施される。エミュレーションモジュール60は、エミュレーションを実施する際に、頻度判断モジュール70を呼び出す。
頻度判断モジュール70は、アドレスグループ毎のHW操作の頻度を判断し、切り替えモジュール80に判断結果を渡す。
なお、当該HW操作コードの命令アドレスを含む所定のアドレスの範囲をアドレスグループと呼ぶ。本実施の形態では、アドレスグループに、ページを用いる。
また、頻度判断モジュール70は、モジュールの初期化時など必要に応じて、物理計算機90が有する記憶装置91を参照して、記憶装置91に格納された方式切り替え条件を取得する。
切り替えモジュール80は、頻度判断モジュール60からページ毎のHW操作の頻度を取得する。そして、頻度が高いと判断した場合は、コード管理モジュール30に、当該HW操作に対応する変換コードの検索を依頼する。
コード管理モジュール30は、変換コードを管理する。コード管理モジュール30は、変換コード管理表35と、変換コードLRU(Least Recent Used)リスト36とを含む。変換コード管理表35は、変換コードを検索するための情報を保持する。変換コードLRUリスト36は、未使用時間が長い変換コードの情報を保持する。
切り替えモジュール80は、コード管理モジュール30への依頼の結果、変換コード管理表35が当該HW操作コードのアドレスが含まれるページに対応する情報を記録していない場合は、コード生成モジュール40を呼び出す。
コード生成モジュール40は、当該HW操作コードのアドレスが含まれるページを参照して、対応する複数のシャドウコード31(31−1〜31−p)と複数の昇格コード32(32−1〜32−q)とを、コード管理モジュール30が管理するメモリ上に生成する。そして、その内容を変換コード管理表35に格納する。
その後、切り替えモジュール80は、物理計算機90が有する命令アドレス変換機構93に、当該ページの仮想アドレスと、シャドウコード31の物理アドレスとの対応付けを設定する。
以上の操作によって、以降は、ゲスト20によるHW操作コードのアドレスが含まれるページが実行されたときは、シャドウコード31が実行される。
VMM10は、一連の処理の最後に、CPUの動作モードをHW操作完全禁止モードに戻すための「rfi命令」を実行する。これによって、シャドウコードはゲストコードと同じく、HW操作完全禁止モードで実行される。
シャドウコード31は、HW操作コードの代わりに昇格コード32を呼び出す。
昇格コード32は、CPUをHW操作許可モードに遷移させ、エミュレーションモジュール60を呼び出す。又は、エミュレーションモジュール60の部分複製であるエミュレーションコード33(33−1)を実行する。これによって、HW操作のエミュレーションが実行される。その後、CPUをHW操作完全禁止モードに戻す。
なお、CPUをHW操作許可モードに遷移させるために、昇格コード32は、PSRのVMビットを操作する命令である「vmsw.0」と「vmsw.1」とを含む。
なお、ゲスト20によって、シャドウコード31に対応するゲストコード21が書き換えられる場合がある。エミュレーションモジュール60は、この書き換えを検出した場合は、頻度判断モジュール70と切り替えモジュール80に、この書き換えを通知する。頻度判断モジュール70は、書き換えられたページの頻度を「低頻度」に設定する。切り替えモジュール80は、書き換えられたページに対応していた変換コードを無効化し、これを変換コード管理表35に記録する。さらに、物理計算機90が有する命令アドレス変換機構93から、書き換えられたページに関する設定を削除する。
物理計算機90は、コンソール92と接続されている。システム管理者がコンソール92を用いてコード変換の設定を変更したときは、コード変換の設定を格納する記憶装置91に、その内容を記録する。また、頻度判断モジュール70及びコード管理モジュール30に、その内容を伝える。
図3は、記憶装置91に格納されているコード変換の設定表95の一例の説明図である。
コード変換の設定表95は、ゲスト20毎に、そのゲストが使用するメモリ量の上限と、そのゲストのゲストコードが高頻度であるか低頻度であるかを判断するための頻度の閾値とを格納する。
コード変換の設定95は、ゲスト識別番号フィールド501、使用するメモリ量の上限フィールド520及び頻度の閾値フィールド521を含む。
ゲスト識別番号フィールド501は、ゲスト20毎に付された識別子であるゲスト識別番号を格納する。使用するメモリ量の上限フィールド520は、メモリ変換コードを保持するために使用するメモリ量の上限を格納する。頻度の閾値フィールド521は、ゲストコードが高頻度であるか低頻度であるかを判断するための閾値を格納する。
図4は、頻度判断モジュール70の構成ブロック図である。
頻度判断モジュール70は、頻度判断コード71とHW操作頻度表72とを含む。
頻度判断コード71は、HW操作頻度表72を参照・更新して、HW操作の頻度を判断するプログラムである。HW操作頻度表72は、ゲスト20によって実行されたHW操作の回数を、ゲストコードの物理ページ単位で格納する表である。
図5は、HW操作頻度表72の一例の説明図である。
HW操作頻度表72は、ゲスト20毎に、ゲストコードの物理ページアドレスと、そのページでのHW操作の実行回数とを格納する。
HW操作頻度表72は、ゲスト識別番号フィールド501と、ゲストコードの物理ページのアドレスフィールド503と、HW操作実行回数フィールド506とを含む。
ゲスト識別番号フィールド501は、前述のコード変換の設定表95のゲスト識別番号と同じものを格納する。ゲストコードの物理ページのアドレスフィールド503は、ゲストコードの物理ページのアドレスを格納する。HW操作実行回数フィールド506は、ゲストコードの物理ページに対応するHW操作が実行された回数を格納する。なお、HW操作実行回数の初期値は0である。
図6は、変換コード管理表35の一例の説明図である。
変換コード管理表35は、ゲスト20毎に、ゲストコードの物理ページアドレスと、そのゲストコードに対応する変換コードの物理ページのアドレスを格納する。
変換コード管理表35は、ゲスト識別番号フィールド501と、ゲストコード物理ページのアドレスフィールド503と、validビットフィールド504と、変換コードの物理ページのアドレス505とを含む。
ゲスト識別番号フィールド501は、前述のコード変換表95及びHW操作頻度表70のゲスト識別番号と同じものを格納する。ゲストコード物理ページのアドレスフィールド503は、前述のHW操作頻度表72のゲストコードの物理ページのアドレスと同じものを格納する。validビットフィールド504は、そのページに対応する変換コードが有効であるか否かを示す識別子であるvalidビットを格納する。このvalidビットの初期値は0(無効)である。変換コードの物理ページのアドレスフィールド505は、ゲストコードの物理ページのアドレスに対応する変換コードの物理ページのアドレスを格納する。
図7は、変換コードLRUリスト36の一例の説明図である。
変換コードLRUリスト36は、変換コード物理ページのアドレス毎に、そのアドレスの未使用時間が短い順に保持するための双方向線形リストである。
変換コードLRUリスト36は、prevポインタフィールド530(530−1〜530−t)、変換コードの物理ページのアドレスフィールド505(505−1〜505−t)及びnextポインタフィールド531(531−1〜531−t)を一つの要素とし、これらの要素を、それぞれのポインタによって結合したものである。
prevポインタフィールド530は前の要素を示すprevポインタを格納する。nextポインタフィールド531は次の要素を示すnextポインタを格納する。変換コードの物理ページのアドレスフィールド505は、前述の変換コード管理表35の変換コードの物理ページのアドレスと同じものを格納する。
次に、ゲスト20の動作に伴うVMM10の処理を、フローチャートを参照して説明する。
図8は、VMM10がゲスト20を稼動するときの処理のフローチャートである。
まず、仮想計算機の電源の投入等によって、ゲスト20が起動すると、VMM10は、自身が有するゲスト情報を参照し、起動されたゲストに関するエントリを初期化する(S200)。
その後、ゲスト20が、HW操作完全禁止モードでゲストコード又は変換コードを実行する(S240)。VMM10は、ゲスト20によるゲストコードの実行によって、HW操作コードの実行を検出したか否かを判断する(S250)。
ゲスト20によるHW操作コードの実行を検出したと判断した場合は、VMM10は、例外イベントを発生させて、CPU400の動作モードをHW操作許可モードに変更する。その後、ステップS210へ進む。また、ゲスト20による昇格コードの実行を検出し、エミュレーションモジュール60が呼ばれたと判断した場合も同様に、VMM10は、CPU動作モードをHW操作許可モードに変更する。その後、S210へ進む。一方、VMM10が、HW操作コード又は昇格コードの実行を検出しないと判断した場合は、ステップS240に戻り、次のゲストコードの実行の検出を待機する。
ステップS210では、VMM10は、HW操作のエミュレーション処理を実施する。また、このエミュレーション処理によって、次に実行するコードの種別を決定する。
次に、VMM10は、仮想計算機の電源遮断等によってゲスト20が終了したか否かを判断する。ゲスト20が終了したと判断した場合は、VMM10は、当該ゲスト20の処理を終了する。一方、ゲスト20は終了せず、動作が継続すると判断した場合は、ステップS260に進む。
S260では、VMM10は、システム管理者によるコード変換の設定の変更がコンソール92に入力されたか否かを判断する。コンソール92への入力によってコード変換の設定95に変更があったと判断した場合は、ステップS270に移行する。一方、コード変換の設定95に変更がなければ、ステップS230に進む。
ステップS270では、物理計算機90は、コンソール92によって設定された内容を受け取り、記憶装置91のコード変換の設定95を更新するコード変換の設定更新処理を実行する。
次に、VMM10は、ステップS210によって決定したコードの種別を設定する。すなわち、ゲストコード又はシャドウコードに復帰する場合は、VMM10は、CPU動作モードをHW操作完全禁止モードに変更する命令を実行する。その後、ステップS240に戻る。また、昇格コードに復帰する場合は、なにもせずそのままS240に戻る。その後、昇格コード内の命令が実行されることによって、CPU動作モードがHW操作完全禁止モードに変更される。
図9は、図8のステップS210のVMMのエミュレーション処理のフローチャートである。
まず、ゲスト20によって実行されたHW操作コードの内容に応じて、VMM10がエミュレーションを実施する(S100)。
このとき、VMM10は、エミュレーションの内容はコード変換の対象となったゲストコードの変更を含むか否か、すなわち、命令アドレス変換機構93の設定を変更するか否かを判断する(S110)。なお、VMM10は、ゲスト20によってキャッシュ操作命令であるFC(Flush Cache)命令の実行が試みられたと場合に、ゲストコードが書き換えられたと判断する。変更しないと判断した場合は、ステップS130に進む。
変更すると判断した場合は、VMM10は、変換コード管理表35を検索して(S111)、該当するゲストコードに対応する変換コードがあるか否かを判断する(S112)。
対応する変換コードがあると判断した場合は、VMM10は、該当するゲストコードの仮想アドレスと変換コードの物理アドレスとの対応付けを命令アドレス変換機構93に設定する(S113)。さらに、VMM10は、当該変換コードの情報を、変換コードLRUリスト36に追加して、変換コードLRUリスト36を更新する(S114)。
一方、対応する変換コードがないと判断した場合は、VMM10は、該当するゲストコードの仮想アドレスと該当するゲストコードの物理アドレスとの対応付けを命令アドレス変換機構93に設定する(S115)。
次に、VMM10は、書き換えられたゲストコードに対応する変換コードの無効化処理を実行する。この処理によって、当該ゲストコードのページのエミュレーション方式をVT方式に切り替える(S120)。
ステップS130では、VMM10は、HW操作の頻度判定処理を実行する。この処理によって、ゲスト20によってなされたHW操作の頻度が高頻度であるか低頻度であるかが判定される。
次に、VMM10は、HW操作の頻度低処理の結果、頻度が高頻度であるか否かを判断する(S140)。高頻度であると判断した場合はステップS150に進む。低頻度であると判断した場合はステップS160に進む。
ステップS150では、VMM10は、当該ページに含まれるHW操作のエミュレーションにコード変換方式を適用する処理を実行する。
ステップS160では、VMM10は、当該HW操作の次の処理の選択処理を実行する。
図10は、前述の図9のステップS120の変換コードの無効化処理のフローチャートである。
VMM10は、変換コード管理表35を参照して、書き換えられたゲストコードに対応するエントリのvalidビットをクリアする。すなわち、validビットを0に変更する(S600)。
次に、VMM10は、HW操作頻度表72を参照して、書き換えられたゲストコードに対応するエントリのHW操作の実行回数を0に設定する(S610)。
次に、VMM10は、書き換えられたゲストコードの仮想アドレスと当該ゲストコードの物理アドレスとの対応付けを命令アドレス変換機構93に設定する(S630)。
図11は、前述の図9のS130の頻度の判定処理のフローチャートである。
まず、VMM10は、当該HW操作コードを実行したのは、ゲスト20のアプリケーションであるか否かを判断する(S790)。アプリケーションが実行したと判断した場合は、ステップS730に進む。ゲスト20のOSが実行したと判断した場合は、ステップS700に進む。
ステップS700では、VMM10は、当該HW操作コードが属するページの物理アドレスを算出する。
次に、VMM10は、HW操作頻度表72を参照して、算出したページの物理アドレスに対応するエントリの、HW操作の実行回数を取得する(S710)。
次に、VMM10は、コード変換の設定表95を参照して、HW操作コードの要求元のゲスト20の識別番号のエントリから、頻度の閾値を取得する。そして、取得したHW操作の実行回数と取得した頻度の閾値とを比較して、実行回数が閾値以上であるか否かを判断する(S720)。実行回数が閾値以上であると判断した場合は、ステップS740に進む。実行回数が閾値未満であると判断した場合は、ステップS730に進む。
S740では、VMM10は、当該ページでのHW操作の頻度は高頻度であると判定する。
S730では、VMM10は、当該ページでのHW操作の頻度が低頻度であると判定する。
次に、VMM10は、HW操作頻度表72の当該ページのHW操作の実行回数に1を加算して、HW操作頻度表72を更新する(S750)。
図12は、前述の図9のステップS160の次処理の選択処理のフローチャートである。
VMM10は、ゲスト20が終了したか否か、すなわち、ゲスト20が稼働する仮想計算機21の電源がOFFにされたか否かを判断する(S1000)。仮想計算機21の電源がOFFにされたと判断した場合はステップS1010に進む。そうでなければステップS1020に進む。
ステップS1010では、VMM10は、次に実行する処理として、ゲスト終了を選択する。
ステップS1020では、VMM10は、次に実行する処理にゲストコード又は変換コードを継続して適用することを決定する。
図13は、前述の図9のステップS150のコード変換方式の適用処理のフローチャートである。
ステップS1200では、VMM10は、変換コード管理表35を参照して、当該HW操作コードを含むページの物理アドレスに対応する変換コードの有無を判断する。変換コードが存在しないと判断した場合は、ステップS1210に進む。変換コードが設定されていると判断した場合は、本処理を終了して、図9のフローチャートに戻る。
S1210では、VMM10は、変換コードを格納するためのメモリ領域のメモリ容量に必要な空き容量が存在するか否かを判断する。メモリ領域に必要な空き容量が存在しないと判断した場合は、ステップS1220に移行する。必要な空き容量が存在すると判断した場合は、ステップS1230に進む。
ステップS1220では、VMM10は、変換コードLRUリスト36を参照して、未使用時間の最も長い変換コードを含む要素を一つ選択する。そして、選択された要素に含まれる変換コードに属するページの物理アドレスを無効化することによって、変換コードをメモリ領域から破棄する。さらに、選択された要素に含まれる変換コードの情報を、変換コードLRU36から削除する。そして、ステップS1210に戻る。すなわち、必要な空き容量が確保できるまで、未使用時間の最も長い変換コードをメモリ領域から破棄する。
ステップS1230では、VMM10は、当該ページのゲストコードに対応する変換コードを生成し、生成された変換コードを保存する。変換コードのうち、シャドウコードはゲストコードと1対1に対応し、HW操作コードの代わりに昇格コードを呼び出す。また、変換コードのうち、昇格コードは、vmsw命令を含み、エミュレーションモジュール60を呼び出すコード、又は、エミュレーションモジュール60の部分複製であるエミュレーションコード33の少なくとも一方を含む。
次に、VMM10は、生成した変換コードの情報を、変換コード管理表35に格納する。また、生成した変換コードの情報を変換コードLRU36リストに追加する(S1240)。
図14は、前述の図8のステップS270のコード変換の設定更新処理のフローチャートである。
まず、物理計算機90が、システム管理者によって設定されたコード変換の設定の変更を、コンソールから受信する(S1400)。
物理計算機90は、受け取った変更内容を、記憶装置91のコード変換の設定表95に反映させて、コード変換の設定表95を更新する(S1410)。
次に、物理計算機90は、更新されたコード変換の設定表95を、頻度判断モジュール70及びコード管理モジュール30に通知する。これによって、頻度判断モジュール70及びコード管理モジュール30は、自身が格納しているコード変換の設定表95を更新する。
以上のように、本発明の第1の実施の形態の仮想計算機システムでは、ゲスト20によってHW操作を含むゲストコードの実行が要求されたときに、VMM10は、当該HW操作の実行頻度に応じて処理方法を変える。すなわち、当該HW操作を二つの部分に分け、実行頻度の高い部分に実行効率の高いコード変換方式を適用し、実行頻度の低い部分にメモリ消費量の少ないVT方式を適用する。このようにすることによって、高性能と省メモリとを両立することが可能なエミュレーション処理が可能となる。
<実施形態2>
次に、本発明の第2の実施の形態の仮想計算機システムを説明する。第2の実施の形態では、操作の種別である命令タイプによって、HW操作の頻度を判断する。
なお、第2の実施の形態のハードウェア構成は図1と同一である。また、第1の実施の形態と同一の作用をする構成には同一の符号を付し、その説明は省略する。
第2の実施形態では、頻度判断に命令タイプを用いるため、コード変換の設定内容、HW操作頻度表のフォーマットの2点のみが実施例1と異なる。
図15は、第2の実施の形態の、コード変換の設定表95の説明図である。
第1の実施の形態において前述した図4とは異なり、コード変換の設定表95は、高頻度を判断するために、閾値ではなく命令タイプを格納する。
コード変換の設定95は、ゲスト識別番号フィールド501、使用するメモリ量の上限フィールド502及び命令タイプのリストフィールド522を含む。
ゲスト識別番号フィールド501は、ゲスト20毎に付された識別子であるゲスト識別番号を格納する。使用するメモリ量の上限フィールド520は、メモリ変換コードを保持するために使用するメモリ量の上限を格納する。命令タイプのリストフィールド522は、ゲストコードの命令タイプのうち、高頻度であると判断する命令タイプをリスト形式で格納する。
図16は、第2の実施の形態のHW操作頻度表72の説明図である。
第1の実施の形態において前述した図5とは異なり、HW操作頻度表72は、ゲスト20毎に、命令タイプ507と、その命令タイプが高頻度であるか否かを判断するための頻度フラグ508とを格納する。
このHW操作頻度表72は、管理者によって設定されたコード変換の設定表95を元に、頻度判断コード71によって生成される。すなわち、コード変換の設定表95のゲスト識別番号及び命令タイプのリストを、ゲスト識別番号と命令タイプとによって並び替えたものである。
HW操作頻度表72は、ゲスト識別番号フィールド501と、命令タイプフィールド507と、頻度フラグフィールド508とを含む。
ゲスト識別番号フィールド501は、前述のコード変換の設定表901のゲスト識別番号と同じものを格納する。命令タイプフィールド507は、ゲストコードの命令タイプを示す識別子を格納する。頻度フラグフィールド508は、命令タイプに対応する頻度フラグ格納する。頻度フラグは1であれば高頻度であることを示し、0であれば低頻度であることを示す。なお、頻度フラグの初期値は、頻度判断モジュール70がコード変換の設定表95から取得する。
次に、第2の実施の形態の、ゲスト20の動作に伴うVMM10の処理を、フローチャートを参照して説明する。
なお、第2の実施の形態の処理の概要は、前述の第1の実施の形態において前述した図8と同一である。
また、前述の図8のステップS210のVMMのエミュレーション処理は、前述の図9の処理と同一である。
図17は、前述の図9のステップS120の、第2の実施の形態の変換コードの無効化処理のフローチャートである。
VMM10は、変換コード管理表35を参照して、書き換えられたゲストコードに対応するエントリの、validビットフィールド504をクリアする。すなわち、validビットを0に変更する(S600)。
次に、VMM10は、書き換えられたゲストコードの仮想アドレスと当該ゲストコードの物理アドレスとの対応付けを命令アドレス変換機構93に設定する(S630)。
図18は、前述の図9のステップS130の、第2の実施の形態の頻度判断処理のフローチャートである。
まず、VMM10は、当該HW操作コードを実行したのは、ゲスト20のアプリケーションであるか否かを判断する(S790)。アプリケーションが実行したと判断した場合は、ステップS830に進む。ゲスト20のOSが実行したと判断した場合は、ステップS800に進む。
ステップS800では、VMM10は、当該HW操作コードの命令タイプを取得する。
次に、VMM10は、HW操作頻度表72を参照して、取得した命令タイプに対応するエントリの頻度フラグを取得する(S810)。
次に、VMM10は、取得した頻度フラグが1であるか否かを判断する。頻度フラグが1、すなわち高頻度を示すものであればステップS840に進む。頻度フラグが0、すなわち、低頻度を示すものであればステップS830に進む(S820)。
ステップS840では、VMM10は、当該ページでのHW操作の頻度が高頻度であると判定する。
ステップS830では、VMM10は、当該ページでのHW操作の頻度が低頻度であると判定する。
なお、図9のステップS160の次処理の選択処理は、前述の第1の実施の形態の図12の処理と同一である。
また、図9のステップS150のコード変換方式の適用処理は、前述の第1の実施の形態の図13の処理とほぼ同一であるが、以下の1点のみが異なる。
まず、ステップS1230では、VMM10は、当該ページに含まれる命令タイプが高頻度でない命令は、コード変換の対象から除外し、シャドウコードにゲストコードの命令をそのままコピーする。
また、図8のステップS270のコード変換の設定更新処理は、前述の第1の実施の形態の図14と同一である。
以上のように、本発明の第2の実施の形態では、ゲストコードをHW操作の命令タイプに応じて二つの部分に分類する。そして、実行頻度の高い命令タイプを含む部分に、コード変換方式を適用し、実行頻度の高い命令タイプを含まない部分にVT方式を適用する。このようにすることによって、高性能と省メモリを両立させるエミュレーション処理が可能となる。
<実施形態3>
次に、本発明の第3の実施の形態の仮想計算機システムを説明する。第3の実施の形態では、HW操作の間隔によって頻度を判断する。
なお、第1の実施の形態と同一の作用をする構成には同一の符号を付し、その説明は省略する。
第3の実施の形態のハードウェア構成は図1とほぼ同一である。しかしながら、第3の実施の形態では、用いられるCPU(400−1〜400−n)の機能が異なる。
CPU400(400−1〜400−n)は、VT−x機能に対応したx86プロセッサである。このCPU400は、HW操作完全禁止モードと、HW操作許可モードと、HW操作部分禁止モードとを備える。HW操作完全禁止モードはCPU400をVMX non−rootモードに設定することで有効化される。HW操作許可モードはCPU400をVMX rootモードかつ特権レベル(CPL:Current Privilege Level)を0に設定することで有効化される。HW操作部分禁止モードはCPU400をVMX rootモードかつCPLを非0に設定することで有効化される。
また、CPU400が、VMX rootモードからVMX non−rootモードに遷移するためには、VMentry操作を実行する必要がある。VMentry操作とは、ゲストOSの起動を指示するためのVMLAUNCH命令の実行と、ゲストOSを一時停止するためのVMRESUME命令の実行との総称である。また、VMX non−rootモードからVMX rootモードに遷移するためには、VMexitイベントを実行する必要がある。VMexitイベントとは、HW操作の実行に起因する例外イベントである。
次に、第3の実施の形態の仮想計算機システムを説明する。
図19は、物理計算機90において、ゲスト20(20−1〜20−n)とゲスト20を稼動させるVMM10とを含むハードウェア及びソフトウェアのブロック図である。
図19は、前述の第1の実施の形態の図2のブロック図とほぼ同一である。しかしながら、コード管理モジュール30の動作が異なる。
以降、ゲスト20がHW操作コードを含むゲストコードを実行したときのVMM10の処理を説明する。
VMM10は、ゲスト20がHW操作コード25を含むゲストコード25を実行した場合は、VMM10は例外イベントを発生させる。この例外イベントによって、CPU400がHW操作許可モードに遷移する。その後、VMM10の例外イベントハンドラモジュール50が実行される。
例外イベントハンドラモジュール50は、例外イベントの発生要因を解析し、その例外イベント、すなわち、HW操作コードに対応するエミュレーションモジュール60を呼び出す。
エミュレーションモジュール60は、必要に応じて物理計算機90を操作する。これによって、HW操作コードに対応するエミュレーションが実施される。エミュレーションモジュール60は、エミュレーションを実施する際に、頻度判断モジュール70を呼び出す。
頻度判断モジュール70は、ゲスト20によって、前回のHW操作がされたときの時刻情報と今回のHW操作がされたときの時刻情報との差から、HW操作間隔の短さ、すなわちHW操作の頻度を算出する。そして、算出された頻度の履歴を用いて、今回のHW操作がされたときの時刻情報と次回にHW操作がされたときの時刻情報の間隔の短さ、すなわち頻度を判断する。この結果を、切り替えモジュール80に渡す。
なお、時刻情報とは時刻を特定可能な情報であり、本実施形態にではゲストによって実行されたページ間の分岐命令の回数である。時刻情報には、物理計算機90が備える時計の時刻の値や、実行されたゲスト命令数、実行されたゲストのCALL命令及びRET命令数等、時刻を近似できる任意の情報が利用できる。
頻度判断モジュール70は、モジュール初期化時など、必要に応じて、物理計算機90の記憶装置91に格納された方式切り替え条件を参照し、その内容を頻度判断モジュール70内に格納しておく。
頻度判断モジュール70によって、今回のHW操作と次回のHW操作の間隔が長い、すなわち、低頻度であると判断された場合は、切り替えモジュール80は、CPU400の動作モードをHW操作完全禁止モードに戻す。すなわち、切り替えモジュール80は、CPU400に対してVMentry操作を実行する。この操作の後に、処理をゲストコードに分岐する。
一方、頻度判断モジュール70によって、今回のHW操作と次回のHW操作の間隔が短い、すなわち、高頻度であると判断された場合は、切り替えモジュール80は、まず、次に実行するゲストコードに対応する変換コードのアドレスを、コード管理モジュール30に問い合わせる。そして、CPU400の動作モードをHW操作部分禁止モードに戻す。すなわち、切り替えモジュール80は、CPL増加分岐命令を実行する。この命令の後に、処理を変換コードに分岐する。この処理によって、変換コードはHW操作部分禁止モードで実行される。なお、CPL増加分岐命令には、IRET命令、SYSRET命令、SYSEXIT命令等を用いる。
切り替えモジュール80からの問い合わせに対して、コード管理モジュール30は、変換コード管理表35を検索して、問い合わせコードに対応する変換コードが存在するか否かを判断する。変換コードが存在する場合は、当該変換コードのアドレスを返す。問い合わせコードに対応する変換コードが存在しない場合は、コード生成モジュール40を呼び出して、変換コードを生成し、生成された変換コードのアドレスを返す。
コード生成モジュール40は、次のゲストコードページを参照して対応するシャドウコード31(31−1〜31−p)と昇格コード32(32−1)とを、コード管理モジュール30が管理するメモリ上に生成する。そして、その内容を変換コード管理表35に登録する。
なお、シャドウコード31(31−1〜31−p)は、HW操作コードの代わりに昇格コード32(32−1)を含む。昇格コード32(32−1)は、CPUをHW操作許可モードに遷移させ、エミュレーションモジュール60を呼び出してHW操作をエミュレーションし、その後、CPUをHW操作部分禁止モードに戻す。昇格コード32は、CPL減少分岐命令(特権レベル減少分岐命令)を含む。CPL減少分岐命令には、farCALL命令、SYSCALL命令、SYSENTER命令等を用いる。
なお、ゲスト20によって、シャドウコード31に対応するゲストコード21が書き換えられる場合がある。エミュレーションモジュール60は、この書き換えを検出した場合は、切り替えモジュール80に、この書き換えを通知する。切り替えモジュール80は、書き換えられたページに対応していた変換コードを無効化して、これを変換コード管理表35に記録する。
なお、記憶装置91に格納されているコード変換の設定表95は、前述の第1の実施の形態の図3と同一である。
図20は、頻度判断モジュール70の構成ブロック図である。
頻度判断モジュール70は、第1の実施の形態の頻度判断モジュール71とほぼ同一であるが、HW操作履歴表73を含んでいる。
HW操作頻度表72は、あるHW操作Xと次に実行されたHW操作との間隔が短い、すなわち高頻度である場合に、そのHW操作Xを実施するゲストコードの物理アドレスを格納する。HW操作履歴表73は、最後に処理されたHW操作を実行した動作主体(OSまたはAP)と、ゲストコードの物理アドレスと、時刻情報を格納する。
図21は、HW操作頻度表72の一例の説明図である。
HW操作頻度表72は、ゲスト20毎に、当該エントリの有効性を示すvalidビットと、ゲストコードの物理アドレスとを格納する。
HW操作頻度表72は、ゲスト識別番号フィールド501と、validビットフィールド504と、ゲストコードの物理アドレスフィールド509とを含む。
ゲスト識別番号フィールド501は、ゲスト20毎に付された識別子であるゲスト識別番号を格納する。validビットフィールド504は、ゲストコードのうち、その物理アドレスが、HW操作の間隔が短い、すなわち、高頻度である部分の始点又は中間点であることを示すvalidビットを格納する。ゲストコードの物理のアドレスフィールド509は、ゲストコードの物理アドレスを格納する。
なお、本表に含まれないゲストコードの物理アドレスは、HW操作の間隔が長い、すなわち、低頻度である部分の始点又は中間点である。また、validビットの初期値は0、すなわち無効である。
図22は、HW操作履歴表73の一例の説明図である。
HW操作履歴表73は、ゲスト識別番号フィールド501と、CPU識別番号フィールド502と、動作主体フィールド523と、ゲストコードの物理アドレスフィールド509と、時刻情報フィールド510とを含む。
ゲスト識別番号フィールド501は、前述の図21のゲスト識別番号と同じものを格納する。CPU識別番号フィールド502は、CPU400を識別するための番号を格納する。動作主体フィールド523は、最後に処理されたHW操作を実行した主体はOSであるかAPであるかを区別するための識別子を格納する。ゲストコードの物理アドレス509は、前述の図21のゲストコード物理アドレスと同じものを格納する。時刻情報フィールド510は、前述のように、最後に処理されたHW操作の時点での、ゲストによって実行されたページ間の分岐命令の回数を格納する。なお、物理計算機90が備える時計の時刻の値や、実行されたゲスト命令数、実行されたゲストのCALL命令及びRET命令数等、時刻を近似できる任意の情報が利用できる。
図23は、切り替えモジュール80の構成ブロック図である。
切り替えモジュール80は、方式切り替えコード81と動作方式表82とを含む。
なお、動作方式とは、エミュレーションモジュールの呼び出し方式である。本実施の形態では、VT方式又はコード変換方式を用いる。方式切り替えコード81は、頻度に応じて動作方式であるコード変換方式とVT方式を切り替え、その結果を操作方式表82に格納する。動作方式表82は、現在適用中の動作方式を格納する。
図24は、動作方式表82の一例の説明図である。
動作方式表82は、ゲスト識別番号フィールド501と、CPU識別番号フィールド502と動作方式フィールド513とを含む。
ゲスト識別番号フィールド501は、前述の図21のHW操作頻度表72のゲスト識別番号と同じものを格納する。CPU識別番号フィールド502は、前述の図22のHW操作履歴表73のCPU識別番号と同じものを格納する。動作方式フィールド513は、現在適用中の動作方式を格納する。なお、動作方式の初期値は「VT方式」である。
図25は、変換コード管理表35の一例の説明図である。
変換コード管理表35は、ゲスト20毎に、ゲストコードの物理アドレス509と、そのゲストコードに対応する変換コードの物理アドレス511を格納する。
変換コード管理表35は、ゲスト識別番号フィールド501と、ゲストコード物理アドレスフィールド509と、validビットフィールド504と、変換コードの物理アドレス511とを含む。
ゲスト識別番号フィールド501は、前述の図21のHW操作頻度表72のゲスト識別番号と同じものを格納する。ゲストコードの物理アドレス509は、前述の図21のゲストコード物理アドレスと同じものを格納する。validビットフィールド504は、その物理アドレスに対応する変換コードが有効であるか否かを示す識別子であるvalidビットを格納する。このvalidビットの初期値は0(無効)である。変換コードの物理アドレスフィールド509は、ゲストコードの物理アドレスに対応する変換コードの物理アドレスを格納する。
次に、第3の実施の形態の、ゲスト20の動作に伴うVMM10の処理を、フローチャートを参照して説明する。
図26は、VMM10がゲスト20を稼動するときの処理のフローチャートである。
図26は、前述の第1の実施の形態の図8のフローチャートに類似しているが、最初のHW操作は必ずゲストコードによってエミュレーションされる点が異なる。
まず、仮想計算機の電源の投入等によって、ゲスト20が起動すると、VMM10は、自身が有するゲスト情報を参照し、起動されたゲストに関するエントリを初期化する(S200)。
その後、ゲスト20が、HW操作完全禁止モードでゲストコードを実行する(S340)。VMM10は、ゲスト20によるゲストコードの実行によって、HW操作コードの実行を検出したか否かを判断する(S350)。
ゲスト20によるHW操作コードの実行を検出した場合は、VMM10は、例外イベントを発生させて、CPU400の動作モードをHW操作許可モードに変更する。その後、ステップS210へ進む。一方、VMM10が、HW操作コードの実行を検出しない場合は、ステップS340に戻り、次のゲストコードを実行する。
ステップS210では、VMM10は、HW操作のエミュレーション処理を実施する。また、このエミュレーション処理によって、次に実行するコードの種別を決定する。
次に、VMM10は、仮想計算機の電源遮断等によってゲスト20が終了したか否かを判断する。ゲスト20が終了したと判断した場合は、VMM10は、当該ゲスト20の処理を終了する。一方、ゲスト20は終了せず、動作が継続すると判断した場合は、ステップS260に進む。
S260では、VMM10は、システム管理者によるコード変換の設定の変更がコンソール92に入力されたか否かを判断する。コンソール92への入力によってコード変換の設定95に変更があったと判断した場合は、ステップS270に移行する。一方、コード変換の設定95に変更がなければ、ステップS330に進む。
ステップS270では、物理計算機90は、コンソール92によって設定された内容を受け取り、記憶装置91のコード変換の設定95を更新するコード変換の設定更新処理を実行する。
次に、VMM10は、次にゲスト20によって実行される処理が変換コードの実行であるか否かを判断する(S330)。次の処理が変換コードの実行であると判断した場合は、VMM10は、CPL増加分岐命令を実行してCPU動作モードをHW操作部分禁止モードに変更する。その後、ステップS360に進む。一方、次の処理がゲストコードの実行であると判断した場合は、VMM10は、VMentry操作を実行してCPU動作モードをHW操作完全禁止モードに変更する。その後、ステップS340に戻る。
ステップS360では、VMM10は、HW操作部分禁止モードで変換コードを実行する。
次に、VMM10は、ゲスト20による昇格コードの実行を検出し、エミュレーションモジュール60が呼ばれたか否かを判断する(S370)。昇格コードが実行されてエミュレーションモジュールが呼ばれた場合は、VMM10は、CPU動作モードをHW操作許可モードに変更して、S210へ進む。一方、VMM10が、昇格コードの実行を検出しない場合は、ステップS360に戻り、次の変換コードを実行する。
図27は、図26のステップS210のVMMのエミュレーション処理のフローチャートである。
まず、ゲスト20によって実行されたHW操作コードの内容に応じて、VMM10がエミュレーションを実施する(S100)。
このとき、VMM10は、エミュレーションの内容はコード変換の対象となったゲストコードの変更を含むか否かを判断する(S110)。なお、VMM10は、ライトプロテクトを設定したページに対してゲスト20が書き込みを行った場合に、当該ページにゲストコードが存在するか否かを判定して、ゲストコードの変更の有無を判断する。変更しないと判断した場合は、ステップS130に進む。一方、変更すると判断した場合は、ステップS120に進む。
ステップS120では、VMM10は、書き換えられたゲストコードに対応する変換コードの無効化処理を実行する(S120)。
ステップS130では、VMM10は、HW操作の頻度判定処理を実行する。この処理によって、ゲスト20によってなされたHW操作の頻度が高頻度であるか低頻度であるかが判定される。
次に、VMM10は、HW操作の頻度判定処理の結果、頻度が高頻度であるか否かを判断する(S140)。高頻度であると判断した場合はステップS170に進む。低頻度であると判断した場合はステップS180に進む。
ステップS170では、VMM10は、以降のHW操作の検出手段をコード変換方式に決定する。そして、動作方式表82の当該ゲスト及びCPUに対応する動作方式513をコード変換方式に変更する。
一方、ステップS180では、VMM10は、以降のHW操作の検出手段をVT方式に決定する。そして、動作方式表82の当該ゲスト及びCPUに対応する動作方式513をVT方式に変更する。
次に、VMM10は、S160では、当該HW操作の次の処理の選択処理を実行する。
図28は、図27のステップS120の変換コードの無効化処理のフローチャートである。
VMM10は、変換コード管理表35を参照して、書き換えられたゲストコードに対応するエントリのvalidビットをクリアする。すなわち、validビットを0に変更する(S600)。
次に、VMM10は、書き換えられたゲストコードに対応するライトプロテクトを解除する(S620)。
図29は、図27のステップS130の頻度判断処理のフローチャートである。
まず、VMM10は、HW操作履歴表73を参照して、1つ前に実行されたHW操作に関するエントリを取得する。そして、当該エントリの、動作主体とゲストコードの物理アドレスと時刻情報とを取得する(S900)。
次にVMM10は、1つ前に実行されたHW操作の動作主体がアプリケーション(AP)であるか否かを判断する(S990)。動作主体がAPであると判断した場合はステップS940に進む。動作主体がAPではない、すなわち動作主体がOSであると判断した場合はステップS910に進む。
ステップS910では、VMM10は、今回のHW操作の時刻情報と1つ前のHW操作の時刻情報との差から、HW操作の間隔を算出する。
次に、VMM10は、算出したHW操作の間隔と、コード変換の設定表95から取得した閾値とを比較する。比較の結果、算出したHW操作の間隔が取得した閾値の範囲以内であるか否かを判断する(S920)。算出したHW操作の間隔が閾値以内であると判断した場合はステップS930に進む。一方、算出したHW操作の間隔が、閾値を越えると判断した場合はステップS940に進む。
ステップS930では、VMM10は、1つ前のHW操作に関するエントリのゲストコードの物理アドレスを、HW操作頻度表72に追加する。そして、追加したエントリのvalidビットを1に設定する。これによって、このゲストコードの物理アドレスが、高頻度部分の始点又は中間点として設定される。
ステップS940では、VMM10は、今回実行されたHW操作に関するエントリ、すなわち、動作主体とゲストコードの命令アドレスと時刻情報とをHW操作履歴表73に格納する。
次に、VMM10は、今回実行されたHW操作に関して、当該HW操作のゲストコードの命令アドレスがHW操作頻度表72に含まれているか否かを判断する(S950)。HW操作頻度表72に含まれていると判断した場合はステップS740に進む。HW操作頻度表72に含まれていないと判断した場合はステップS730に進む。
ステップS740では、VMM10は、今回実行されたHW操作は高頻度部分の始点又は中間点であると判定する。
ステップS730では、VMM10は、今回実行されたHW操作は低頻度部分の始点又は中間点であると判定する。
図30は、図27のステップS160の次処理の選択処理のフローチャートである。
VMM10は、ゲスト20が終了したか否か、すなわち、ゲスト20が稼働する仮想計算機21の電源がOFFにされたか否かを判断する(S1000)。仮想計算機21の電源がOFFにされたと判断した場合はステップS1010に進む。そうでなければステップS1120に進む。
ステップS1010では、VMM10は、次に実行する処理として、ゲスト終了を選択する。
ステップS1120では、VMM10は、動作方式表82を参照して、現在の動作方式がコード変換方式であるか否かを判断する。現在の動作方式がコード変換方式であると判断した場合はステップS1040に進む。現在の動作方式がVT方式であると判断した場合はステップS1060に進む。
ステップS1040では、VMM10は、次に実行する処理に変換コードを適用することを決定する。そして、次に実行する変換コードを検索するための変換コードの検索処理を実行する(S1130)。
一方、ステップS1060では、VMM10は、次に実行する処理にゲストコードを適用することを決定する。
図31は、図30のステップS1130の変換コードの検索処理のフローチャートである。
まず、VMM10は、変換コード管理表35を参照して、今回処理したHW操作コードの次のゲストコードに対応するエントリを検索する(S1300)。
次に、VMM10は、該当するエントリが存在するか否かを判断する(S1310)。エントリが存在すると判断した場合はステップS1320に進む。エントリが存在しないと判断した場合はステップS1210に進む。
ステップS1210では、VMM10は、変換コードを格納するためのメモリ領域のメモリ容量に必要な空き容量が存在するか否かを判断する。メモリ領域に必要な空き容量が存在しないと判断した場合は、ステップS1340に移行する。必要な空き容量が存在すると判断した場合は、ステップS1350に進む。
ステップS1340では、VMM10は、変換コードLRUリスト36を参照して、未使用時間の最も長い変換コードを含む要素を一つ選択する。そして、選択された要素に含まれる変換コードに属するページの物理アドレスを無効化することによって、変換コードをメモリ領域から破棄する。さらに、選択された要素に含まれる変換コードの情報を、変換コードLRUリスト36から削除する。そして、ステップS1210に戻る。すなわち、必要な空き容量が確保できるまで、未使用時間の最も長い変換コードをメモリ領域から破棄する。
一方、ステップS1350では、VMM10は、次に実行されるゲストコード以降のコードのうち、デコード可能なコードに対応する変換コードを生成し、生成されたコードを保存する。なお、変換コードはシャドウコードと昇格コードとで構成される。シャドウコードはゲストコードに対応して生成される。また、シャドウコードはゲストコードに含まれるHW操作コードの代わりに、昇格コードを含む。昇格コードはエミュレーションモジュールを呼び出すためのCPL減少分岐命令を含む。なお、本ステップにおいて生成した変換コードを、検索の結果とする。
次に、VMM10は、生成した変換コードの情報を変換コード管理表35に格納する。さらに、変換コードLRUリスト36の末尾に生成した変換コードの情報を追加する(S1360)。
次に、VMM10は、ゲストコードの書き換えを検出するために、当該ゲストコードを含むページにライトプロテクトを設定する(S1370)。
一方、ステップS1320では、VMM10は、次に実行すべき変換コードのアドレスを、検索されたエントリから取得する。取得された変換コードを検索の結果とする。
次に、VMM10は、当該エントリに対応する変換コードの組を最新に変更することによって、変換コードLRUリスト36を更新する(S1330)。
なお、図26のステップS270のコード変換の設定更新処理は、前述の第1の実施の形態の図14のフローチャートと同一である。
以上のように、本発明の第3の実施の形態の仮想計算機システムではゲスト20によってHW操作を含むゲストコードの実行が要求されたときに、VMM10は、当該HW操作の実行間隔に応じて処理方法を変える。すなわち、当該HW操作を二つの部分に分け、実行間隔が小さい部分(すなわち、実行頻度が高い)に実行効率の高いコード変換方式を適用し、実行間隔が大きい(すなわち、実行頻度が高い)部分にメモリ消費量の少ないVT方式を適用する。このようにすることによって、高性能と省メモリとを両立することが可能なエミュレーション処理が可能となる。
本発明は、CPUとして、VT−i機能を搭載したIPFやVT−x機能を搭載したx86を備えた仮想計算機システムに適用することができる。
本発明の第1の実施の形態の、仮想計算機システムを動作させる物理計算機のブロック図である。 本発明の第1の実施の形態の、仮想計算機システムのソフトウェアとハードウェアの要部を示すブロック図である。 本発明の第1及び第3の実施の形態の、コード変換の設定表の説明図である。 本発明の第1の実施の形態の、頻度判断モジュールのブロック図である。 本発明の第1の実施の形態の、HW操作頻度表の説明図である。 本発明の第1の実施の形態の、変換コード管理表の説明図である。 本発明の第1の実施の形態の、変換コードLRUリストの説明図である。 本発明の第1の実施の形態の、VMMの動作のフローチャートである。 本発明の第1の実施の形態の、エミュレーション処理を示すフローチャートである。 本発明の第1の実施の形態の、変換コードの無効化処理のフローチャートである。 本発明の第1の実施の形態の、ハードウェア操作の頻度判断処理のフローチャートである。 本発明の第1の実施の形態の、エミュレーション後の次処理選択処理のフローチャートである。 本発明の第1の実施の形態の、コード変換方式の適用処理のフローチャートである。 本発明の第1の実施の形態の、方式切り替え条件の更新処理のフローチャートである。 本発明の第2の実施の形態の、コード変換の設定表の説明図である。 本発明の第2の実施の形態の、HW操作頻度表の説明図である。 本発明の第2の実施の形態の、変換コードの無効化処理のフローチャートである。 本発明の第2の実施の形態の、HW操作の頻度判断処理のフローチャートである。 本発明の第3の実施の形態の、仮想計算機システムのソフトウェアとハードウェアの要部のブロック図である。 本発明の第3の実施の形態の、頻度判断モジュールのブロック図である。 本発明の第3の実施の形態の、HW操作頻度表の説明図である。 本発明の第3の実施の形態の、HW操作履歴表の説明図である。 本発明の第3の実施の形態の、切り替えモジュールのブロック図である。 本発明の第3の実施の形態の、動作方式表の説明図である。 本発明の第3の実施の形態の、変換コード管理表の説明図である。 本発明の第3の実施の形態の、VMMの動作のフローチャートである。 本発明の第3の実施の形態の、エミュレーション処理のフローチャートである。 本発明の第3の実施の形態の、変換コードの無効化処理のフローチャートである。 本発明の第3の実施の形態の、ハードウェア操作の頻度判断処理のフローチャートである。 本発明の第3の実施の形態の、エミュレーション後の次処理選択処理のフローチャートである。 本発明の第3の実施の形態の、変換コードの検索処理のフローチャートである。
符号の説明
10 VMM
20 ゲスト
30 コード変換モジュール
31 シャドウコード
32 昇格コード
35 変換コード管理表
40 コード生成モジュール
50 例外イベントハンドラモジュール
60 エミュレーションモジュール
70 頻度判断モジュール
80 切り替えモジュール
90 物理計算機
91 記憶装置
92 コンソール

Claims (8)

  1. 一つ以上のCPUと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置において、
    前記CPUが前記メモリに格納されたプログラムを実行することによって、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機モニタが実行されており、
    前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションは、所定の処理の実行を要求する操作コードを出力し、
    前記CPUは、ハードウェア操作許可モードとハードウェア操作禁止モードとの二つの動作モードを備え、
    前記仮想計算機モニタは、
    前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションから前記サーバ装置のハードウェアに対する操作を要求するハードウェア操作コードを含む前記操作コードが出力されたときに、前記ハードウェア操作コードに基づいて前記サーバ装置のハードウェアに対する操作をエミュレーションするエミュレーションモジュールと、
    前記ハードウェア操作コードを検出することによって前記CPUが発生させる例外イベントを契機として、前記CPUの前記動作モードを前記ハードウェア操作許可モードに切り替え、前記エミュレーションモジュールを呼び出す例外イベントハンドラモジュールと、
    前記CPUの前記動作モードを前記ハードウェア操作許可モードに切り替え、前記エミュレーションモジュールを呼び出す変換コードを管理するコード管理モジュールと、
    前記操作コードに対応する前記変換コードを生成し、前記操作コード及び前記生成された変換コードを対応づけて前記メモリ上に格納する生成モジュールと、
    所定の判断条件との比較の結果、前記操作コードに含まれる前記ハードウェア操作コードの実行頻度が高頻度であるか否かを判断する頻度判断モジュールと、
    前記実行頻度の判断の結果に基づいて、前記ハードウェア操作コードを含む前記操作コードに対して、前記CPUが前記例外イベントを発生させ、前記操作コードの実行の強制中断処理を終了した後に実行される前記例外イベントハンドラモジュールによって前記エミュレーションモジュールを呼び出すVT方式、又は、前記ハードウェア操作コードを含む前記操作コードに対応する前記変換コードを実行することによって前記エミュレーションモジュールを呼び出すコード変換方式のいずれの動作方式を適用するかを決定する切り替えモジュールと、を備え
    前記変換コードは、前記CPUの前記動作モードを前記ハードウェア操作禁止モードから前記ハードウェア操作許可モードに切り替え、前記ハードウェア操作コードをエミュレーションさせる昇格コードと、前記昇格コードを含むシャドウコードとから構成され、
    前記コード管理モジュールは、前記ハードウェア操作コード及び前記変換コードを対応づけた変換コード表を保持し、
    前記切り替えモジュールは、前記ハードウェア操作コードを含む前記操作コードと、当該操作コードに対して適用される前記動作方式とを対応づけた動作方式表を保持し、
    前記仮想計算機モニタは、
    前記動作方式表を参照して、前記ハードウェア操作コードを含む前記操作コードに適用される前記動作方式を判断し、
    前記ハードウェア操作コードを含む前記操作コードの前記動作方式がVT方式である場合、前記例外イベントを発生させ、前記CPUの動作モードをハードウェア操作禁止モードから前記ハードウェア操作許可モードに変更した後に、前記ハードウェア操作コードのエミュレーションを実行し、
    前記実行された操作コードに含まれる前記ハードウェア操作コードの実行頻度が高頻度であるか否かを判断し、
    前記実行された操作コードに含まれるハードウェア操作コードの実行頻度が高頻度である場合、前記動作方式表のうち、前記実行され他ハードウェア操作コードを含む前記操作コードに対応する前記動作方式を、前記VT方式から前記コード変換方式に変更し、
    前記変換コード表を参照して、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記変更コードを検索し、
    前記変換コード表に、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記変換コードが存在しないと判断された場合、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記シャドウコードと、前記実行されたハードウェア操作コードに対応する前記昇格コードとを含む前記変換コードを生成し、
    前記生成されたシャドウコード及び前記生成された昇格コードとの対応関係を前記コード変換表に追加することを特徴とするサーバ装置。
  2. 前記メモリは、前記ハードウェア操作コードを含む前記操作コードと、当該操作コードが実行された時を特定可能な時刻情報とを対応づけた操作履歴表を格納し、
    前記仮想計算機モニタは、
    前記実行された操作コードに含まれる前記ハードウェア操作コードの実行頻度が高頻度であるか否かを判断する場合に、当該操作コードが実行された時を特定可能な第1の時刻情報を取得し、前記操作履歴表を参照して、当該操作コードが前回実行された時を特定可能な第2の時刻情報を取得し、
    前記第1の時刻情報及び前記第2の時刻情報に基づいて、前記操作コードに含まれる前記ハードウェア操作コードによって実行された前記ハードウェアの操作の間隔を算出し、
    前記算出した間隔が所定の閾値よりも小さいときに、前記実行された操作コードに含まれる前記ハードウェア操作コードの実行頻度が高いと判断することを特徴とする請求項1に記載のサーバ装置。
  3. 前記切り替えモジュールは、前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって、前記コード変換方式が適用される前記操作コードが変更されたことを前記仮想計算機モニタが検出したときに、前記変更された操作コードに対応する前記シャドウコードを無効化し、
    前記仮想計算機モニタは、前記変更された操作コードを実行するときに、前記例外イベントを発生させて前記変更された操作コードに含まれる前記ハードウェア操作コードのエミュレーションを実行するように設定することを特徴とする請求項2に記載のサーバ装置。
  4. 前記切り替えモジュールは、
    前記シャドウコード及び前記昇格コードを保持するために必要な前記メモリの容量が不足したとき、前記変換コード表に格納される前記変換コードのうち、実行されていない期間が最も長い前記変換コードを選択し、
    前記選択された変換コードの情報を前記変換コード表から削除し、
    前記仮想計算機モニタは、前記削除された変換コードと対応する前記操作コードを実行する場合に、当該削除された変換コードを実行する代わりに、前記例外イベントを発生させて、前記削除された変換コードと対応する前記操作コードに含まれる前記ハードウェア操作コードの前記エミュレーションを実行するように設定することを特徴とする請求項2に記載のサーバ装置。
  5. 一つ以上のCPUと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置に、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機の制御プログラムであって、
    前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションは、所定の処理の実行を要求する操作コードを保持し、
    前記CPUは、ハードウェア操作許可モードとハードウェア操作禁止モードとの二つの動作モードを備え、
    前記メモリは、
    前記サーバ装置のハードウェアに対する操作を要求するハードウェア操作コードを含む前記操作コードと、前記CPUの前記動作モードを前記ハードウェア操作許可モードに切り替え、前記ハードウェア操作コードをエミュレーションさせる変換コードとを対応づけた変換コード表と、
    前記ハードウェア操作コードを含む前記操作コードと、前記ハードウェア操作コードのエミュレーション方式とを対応づけた動作方式表と、を格納し、
    前記変換コードは、前記CPUの前記動作モードを前記ハードウェア操作禁止モードから前記ハードウェア操作許可モードに切り替え、前記ハードウェア操作コードをエミュレーションさせる昇格コードと、前記昇格コードを含むシャドウコードとから構成され、
    前記エミュレーション方式は、前記ハードウェア操作コードを含む前記操作コードに対して、前記CPUが前記例外イベントを発生させ、前記操作コードの実行の強制中断処理を終了した後に、当該ハードウェア操作コードをエミュレーションするVT方式、又は、前記ハードウェア操作コードを含む前記操作コードに対応する前記変換コードを実行することによって、前記ハードウェア操作コードをエミュレーションするコード変換方式とを含み、
    前記仮想計算機の制御プログラムは、
    前記ハードウェア操作コードを含む操作コードを検出した場合に、前記動作方式表を参照し、前記ハードウェア操作コードを含む前記操作コードに対応する前記エミュレーション方式を特定する第1の手順と、
    前記特定されたエミュレーション方式が前記VT方式である場合、例外イベントを発生させて、前記CPUの前記動作モードを前記ハードウェア操作許可モードに切り替えて、前記出力された操作コードに含まれる前記ハードウェア操作コードをエミュレーションする第2の手順と、
    前記特定されたエミュレーション方式が前記コード変換方式である場合、前記検出された操作コードに対応する前記シャドウコードに含まれる前記昇格コードに基づいて、前記出力された操作コードに含まれる前記ハードウェア操作コードをエミュレーションする第3の手順と、
    前記操作コードに含まれる前記ハードウェア操作コードのエミュレーションが完了した後、所定の判断条件に基づいて、当該ハードウェア操作コードの実行頻度が高頻度であるか否かを判断する第4の手順と、
    前記判断された実行頻度に基づいて、前記第2の手順、又は、前記第3の手順のいずれを実行して前記操作コードに含まれる前記ハードウェア操作コードをエミュレーションさせるかを決定し、前記決定に基づいて前記動作方式表を更新する第5の手順と、
    前記変換コード表を参照して、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記変更コードを検索する第6の手順と、
    前記変換コード表に、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記変換コードが存在しないと判断された場合、前記実行されたハードウェア操作コードを含む前記操作コードに対応する前記シャドウコードと、前記実行されたハードウェア操作コードに対応する前記昇格コードとを含む前記変換コードを生成する第7の手順と、
    前記生成されたシャドウコード及び前記生成された昇格コードとの対応関係を前記コード変換表に追加する第8の手順と、を前記サーバ装置に実行させることを特徴とする仮想計算機の制御プログラム。
  6. 前記メモリは、前記ハードウェア操作コードを含む前記操作コードと、当該操作コードが実行された時を特定可能な時刻情報とを対応づけた操作履歴表を格納し、
    前記第4の手順は、
    前記ハードウェア操作コードを含む前記操作コードが実行された時を特定可能な第1の時刻情報を取得し、前記操作履歴表を参照して、前記ハードウェア操作コードを含む前記操作コードが前回実行された時を特定可能な第2の時刻情報を取得し、
    前記第1の時刻情報及び前記第2の時刻情報に基づいて、前記操作コードに含まれる前記ハードウェア操作コードによって実行された前記ハードウェアの操作の間隔を算出する手順と、
    前記算出した間隔が所定の閾値よりも小さいときに、前記操作コードに含まれる前記ハードウェア操作コードの実行頻度が高いと判断する手順と、を含むことを特徴とする請求項5に記載の仮想計算機の制御プログラム。
  7. 管理者によって入力された前記所定の判断条件を受け付ける手順と、
    前記入力された所定の判断条件を記憶装置に保存する手順と、を含むことを特徴とする請求項6に記載の仮想計算機の制御プログラム。
  8. 前記第2の手順は、VMexitイベントの発生によって前記CPUをVMX rootモードに設定することによって、前記ハードウェア操作許可モードに遷移する手順を含み、
    前記第3の手順は、前記昇格コードに含まれる特権レベル減少分岐命令を実行して前記CPUの特権レベルを0に設定することによって、前記ハードウェア操作許可モードに遷移する手順を含むことを特徴とする請求項6に記載の仮想計算機の制御プログラム。
JP2006097594A 2006-03-31 2006-03-31 サーバ装置及び仮想計算機の制御プログラム Expired - Fee Related JP5010164B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006097594A JP5010164B2 (ja) 2006-03-31 2006-03-31 サーバ装置及び仮想計算機の制御プログラム
US11/703,662 US8104035B2 (en) 2006-03-31 2007-02-08 Program for controlling a virtual computer and computer system for virtulization technology

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006097594A JP5010164B2 (ja) 2006-03-31 2006-03-31 サーバ装置及び仮想計算機の制御プログラム

Publications (3)

Publication Number Publication Date
JP2007272576A JP2007272576A (ja) 2007-10-18
JP2007272576A5 JP2007272576A5 (ja) 2008-11-20
JP5010164B2 true JP5010164B2 (ja) 2012-08-29

Family

ID=38561074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006097594A Expired - Fee Related JP5010164B2 (ja) 2006-03-31 2006-03-31 サーバ装置及び仮想計算機の制御プログラム

Country Status (2)

Country Link
US (1) US8104035B2 (ja)
JP (1) JP5010164B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840398B2 (en) * 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US8032897B2 (en) * 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
KR101120591B1 (ko) 2007-10-29 2012-03-09 씨씨알 주식회사 컴퓨터 실행 코드분석 및 조작 방지를 위한 임의 코드실행시스템
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8949106B2 (en) * 2009-09-18 2015-02-03 International Business Machines Corporation Just in time compiler in spatially aware emulation of a guest computer instruction set
WO2012103253A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
CN103107905B (zh) 2011-11-14 2017-08-04 华为技术有限公司 异常处理方法、装置和客户端
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) * 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
CN105122206B (zh) 2013-03-15 2018-11-09 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US10387210B2 (en) * 2016-04-04 2019-08-20 International Business Machines Corporation Resource schedule optimization
JP7168630B2 (ja) * 2020-11-11 2022-11-09 株式会社日立製作所 計算機システム及びジョブの実行制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792761B2 (ja) * 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
JPH01243155A (ja) * 1988-03-25 1989-09-27 Hitachi Ltd 仮想計算機システムにおけるチャネルパスグループ管理方式
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
JP3807860B2 (ja) * 1999-01-29 2006-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法および装置、並びにメソッド活動度計算方法および装置
US7373451B2 (en) * 2003-12-08 2008-05-13 The Board Of Trustees Of The Leland Stanford Junior University Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers

Also Published As

Publication number Publication date
US20070234358A1 (en) 2007-10-04
US8104035B2 (en) 2012-01-24
JP2007272576A (ja) 2007-10-18

Similar Documents

Publication Publication Date Title
JP5010164B2 (ja) サーバ装置及び仮想計算機の制御プログラム
US10394560B2 (en) Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US7844954B2 (en) Using branch instruction counts to facilitate replay of virtual machine instruction execution
Steinberg et al. NOVA: A microhypervisor-based secure virtualization architecture
US8775748B2 (en) Method and system for tracking data correspondences
JP5932973B2 (ja) 仮想記憶ディスク技術
US9009701B2 (en) Method for controlling a virtual machine and a virtual machine system
US20160335023A1 (en) Virtual disk storage techniques
Kloster et al. Efficient memory sharing in the xen virtual machine monitor
JP6194016B2 (ja) 計算機および負荷測定方法
Zhang et al. High-density multi-tenant bare-metal cloud
KR20090009866A (ko) 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법
US20230205713A1 (en) Computer device, exception processing method, and interrupt processing method
US9459915B2 (en) Execution of software using a virtual processor time counter and a scaling factor
KR102307900B1 (ko) 클라우드 플랫폼 환경에서의 초-저지연 리소스 메트릭 수집 방법 및 시스템
JP2006155272A (ja) 仮想計算機の制御方法及びプログラム
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
Im et al. On-Demand Virtualization for Post-Copy OS Migration in Bare-Metal Cloud
US20130346975A1 (en) Memory management method, information processing device, and computer-readable recording medium having stored therein memory management program
Chiang Optimization techniques for memory virtualization-based resource management
JP2022522740A (ja) ハイパーバイザ命令に対する条件付きイールド
Bitchebe et al. Intel page modification logging, a hardware virtualization feature: study and improvement for virtual machine working set estimation
US20240330032A1 (en) Caching memory mapped i/o emulation for virtual machines
Pandurov et al. Flexible Swapping for the Cloud
JP2005056019A (ja) 情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081006

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120507

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120601

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees