(57)【要約】  仮想計算機２２のゲストＯＳ２４の空間切替部２６は、仮想ＣＰＵ２０の処理対象がプログラム４０１からプログラム４０２に切替わるとき、仮想ＣＰＵ２０の制御レジスタ２１に対し、ページテーブル５０２のアドレスを代入する代入命令を実行する。一方、ハイパーバイザ２３の命令捕捉部２７は、この代入命令を捕捉する。このとき、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０１〜ｎのうち、ページテーブル５０２に対応するシャドウページテーブル６０２のキャッシュ情報が蓄積された物理ＣＰＵ１０があれば、当該物理ＣＰＵ１０を選択する。一方、かかる物理ＣＰＵ１０がなければ、物理ＣＰＵ切替部２９は、キャッシュ情報自体が蓄積されていない物理ＣＰＵ１０を選択する。そして、物理ＣＰＵ切替部２９は、選択した物理ＣＰＵ１０を仮想ＣＰＵ２０に割り当てる。これにより、物理ＣＰＵ１０１〜ｎが有効活用され、全体としてメモリアクセス遅延が低減される。
2012029149.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ＣＰＵを備え、当該複数の物理ＣＰＵを１又は複数の仮想ＣＰＵに割り当てて仮想計算機の処理を実現する情報処理装置が、
仮想ＣＰＵの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理ＣＰＵの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するか否かを判定し、
当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するときには当該物理ＣＰＵを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在しないときには、キャッシュ情報自体が蓄積されていない物理ＣＰＵを選択し、
前記選択した物理ＣＰＵを、処理対象の仮想アドレス空間の切替えが発生した仮想ＣＰＵに割り当てる
処理を実行することを特徴とする情報処理プログラム。
【請求項２】
前記物理ＣＰＵを選択する処理は、記憶手段に格納された、前記複数の物理ＣＰＵのそれぞれに蓄積されているキャッシュ情報に関連する物理アドレス空間を示すデータを参照して、物理ＣＰＵを選択することを特徴とする請求項１記載の情報処理プログラム。
【請求項３】
前記物理ＣＰＵを選択する処理によりキャッシュ情報自体が蓄積されていない物理ＣＰＵが選択されたときには、前記データのうち当該選択された物理ＣＰＵに対応するデータが示す物理アドレス空間を、前記切替え先の仮想アドレス空間に対応する物理アドレス空間に変更して当該データを更新する処理を実行することを特徴とする請求項２記載の情報処理プログラム。
【請求項４】
仮想アドレス空間の空間構成が更新されたときに、当該仮想アドレス空間に対応する物理アドレス空間の空間構成の更新回数を示す更新カウンタを更新する一方、前記仮想ＣＰＵに割り当てる処理により物理ＣＰＵが仮想ＣＰＵに割り当てられたときに、当該物理ＣＰＵが仮想ＣＰＵに割り当てられる前まで処理対象であった物理アドレス空間の空間構成の更新カウンタの値を、当該物理ＣＰＵに対応付けて記憶手段に格納する処理を実行し、
前記物理ＣＰＵを選択する処理は、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するときに、当該物理ＣＰＵに対応付けて記憶装置に格納された更新カウンタの値及び切替え先の仮想アドレス空間に対応する物理アドレス空間の空間構成の更新カウンタの値が一致するときにのみ、当該物理ＣＰＵを選択することを特徴とする請求項１記載の情報処理プログラム。
【請求項５】
複数の物理ＣＰＵを備え、当該複数の物理ＣＰＵを１又は複数の仮想ＣＰＵに割り当てて仮想計算機の処理を実現する情報処理装置であって、
仮想ＣＰＵの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理ＣＰＵの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するときには当該物理ＣＰＵを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在しないときには、キャッシュ情報自体が蓄積されていない物理ＣＰＵを選択する選択手段と、
前記選択した物理ＣＰＵを、処理対象の仮想アドレス空間の切替えが発生した仮想ＣＰＵに割り当てる割当手段と、
を備えたことを特徴とする情報処理装置。
【請求項６】
複数の物理ＣＰＵを備え、当該複数の物理ＣＰＵを１又は複数の仮想ＣＰＵに割り当てて仮想計算機の処理を実現する情報処理装置が、
仮想ＣＰＵの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理ＣＰＵの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するときには当該物理ＣＰＵを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在しないときには、キャッシュ情報自体が蓄積されていない物理ＣＰＵを選択し、
前記選択した物理ＣＰＵを、処理対象の仮想アドレス空間の切替えが発生した仮想ＣＰＵに割り当てる
処理を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において構築された仮想計算機の仮想ＣＰＵに対し、物理ＣＰＵを割り当てる技術に関する。
【背景技術】
【０００２】
仮想計算機（ＶＭ：Virtual Machine）の技術を適用した情報処理装置では、ハイパーバイザ上で仮想オペレーティングシステム（ＯＳ：Operating System）であるゲストＯＳが動作する。ゲストＯＳは、物理ＣＰＵ（Central Processing Unit）が仮想的に割り当てられた仮想ＣＰＵを用いて、プログラムの処理を行う。【０００３】
物理ＣＰＵを仮想ＣＰＵに割り当てる技術の一例として、論理プロセッサ（仮想ＣＰＵ）及び物理プロセッサ（物理ＣＰＵ）の対応関係を決定するアドレス変換テーブルを用いる技術が提案されている。具体的には、本提案技術では、論理プロセッサがアクセス可能な論理パーティションアドレス空間と物理アドレス空間との対応関係を示すテーブルと、論理パーティションに含まれるゲストＯＳが直接利用することが可能な仮想アドレス空間と物理アドレス空間との対応関係を示すテーブルと、が設定される。そして、制御ＯＳ（ハイパーバイザ）がこれらのテーブルを状況に応じて適宜更新することにより、ゲストＯＳにおいて物理プロセッサの切替えを認識することなく、論理プロセッサ及び物理プロセッサの対応関係の切替えが実現される。【０００４】
また、他の技術として、タイムシェアリング処理において、論理プロセッサに対して物理プロセッサが割り付けられていない状態においても、ゲストＯＳからＭＭＩＯ（メモリマップドＩＯ）レジスタの情報へのアクセスを可能とする技術が提案されている。具体的には、本提案技術では、ゲストＯＳに対応する論理プロセッサに対して物理プロセッサが割り付けられた状態と、論理プロセッサに対して物理プロセッサが割り付けられていない状態のいずれの状態においても、論理プロセッサに対応するＭＭＩＯレジスタのコピー情報がメモリ内に保持される。このため、ゲストＯＳは常にＭＭＩＯレジスタの情報へアクセスすることができ、処理遅延を防ぐことができる。【０００５】
ここで、このように物理ＣＰＵを仮想ＣＰＵに割り当ててゲストＯＳにおけるプログラム処理を実現する技術において、仮想ＣＰＵの処理対象の仮想アドレス空間の切替えが発生した場合、ハイパーバイザは次のような処理を行っていた。すなわち、ハイパーバイザは、現在仮想ＣＰＵに割当てている物理ＣＰＵの処理対象の物理アドレス空間を、仮想ＣＰＵの処理対象の仮想アドレス空間の切替えに連動させて切り替えていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１２７４６２号公報
【特許文献２】特開２００６−３５０５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、このように同じ物理ＣＰＵを仮想ＣＰＵに割り当てたまま物理アドレス空間の切替えを繰り返した場合、次のような問題がある。例えば、切替え後の物理アドレス空間が、以前に当該物理ＣＰＵが処理したことのある物理アドレス空間であったとしても、その後に当該物理ＣＰＵにおいて他の物理アドレス空間の処理が行われていれば、切替え後の物理アドレス空間のキャッシュ情報は当然に残っていない。このため、少なくとも物理ＣＰＵに切替え後の物理アドレス空間のキャッシュ情報が再度蓄積されるまでの間、メモリアクセス効率が低下するという問題があった。【０００８】
以上のような問題点に鑑み、本技術は、仮想ＣＰＵの処理対象となる仮想アドレス空間の切替え時において、物理ＣＰＵの割当てを適切に行うことで、物理ＣＰＵにおけるメモリアクセス効率の低下を軽減することを目的とする。
【課題を解決するための手段】
【０００９】
本技術は、複数の物理ＣＰＵを備え、当該複数の物理ＣＰＵを１又は複数の仮想ＣＰＵに割り当てて仮想計算機の処理を実現する情報処理装置が、次のような処理を行う。すなわち、情報処理装置は、仮想ＣＰＵの処理対象の仮想アドレス空間の切替えが発生したときに、複数の物理ＣＰＵの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するか否かを判定する。そして、情報処理装置は、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在するときには、当該物理ＣＰＵを選択して、仮想ＣＰＵに割り当てる。一方、情報処理装置は、当該物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵが存在しないときには、キャッシュ情報自体が蓄積されていない物理ＣＰＵを選択して、仮想ＣＰＵに割り当てる。
【発明の効果】
【００１０】
本技術によれば、物理ＣＰＵにおけるメモリアクセス効率の低下を軽減することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置のハードウェア構成の一例の説明図である。
【図２】ＣＰＵの割当処理に関連する機能ブロック図の一例である。
【図３】管理テーブルの一例の説明図である。
【図４】シャドウページテーブル管理部の処理の一例のフローチャートである。
【図５】物理ＣＰＵ切替部の処理の一例のフローチャートである。
【図６】具体例における管理テーブルの内容の説明図である。
【図７】具体例における物理ＣＰＵの処理状態の遷移を示す説明図である。
【発明を実施するための形態】
【００１２】
本明細書で説明する技術は、複数の物理ＣＰＵを備え、ハイパーバイザ上でゲストＯＳが動作する仮想計算機が構築された情報処理装置において、仮想計算機上の仮想ＣＰＵに対する物理ＣＰＵの割当てを工夫することで、処理効率の向上を図るものである。
【００１３】
仮想ＣＰＵにより処理している仮想アドレス空間をゲストＯＳが切替えるときに、従来では、ハイパーバイザは、この切替え処理に連動し、次のような処理を行っていた。すなわち、ハイパーバイザは、これまで仮想ＣＰＵに割り当てていた物理ＣＰＵ（第１物理ＣＰＵとする）の処理対象の物理アドレス空間（第１物理アドレス空間とする）を、仮想アドレス空間の切替えに連動させて切り替えていた。このため、さらなる仮想アドレス空間の切替えにともなって再度第１物理アドレス空間が処理対象となったとしても、第１物理ＣＰＵに蓄積された第１物理アドレス空間のキャッシュ情報はすでに失われていた。
【００１４】
しかし、本明細書で説明する技術においては、ハイパーバイザは、次のような処理を行う。すなわち、ハイパーバイザは、単に第１物理ＣＰＵの処理対象の物理アドレス空間を切り替えるのではなく、キャッシュやＴＬＢにキャッシュ情報が蓄積されていない他の物理ＣＰＵ（第２物理ＣＰＵとする）を選択し、仮想ＣＰＵに割り当てる。このため、第１物理ＣＰＵには、第１物理アドレス空間のキャッシュ情報が保持されたままとなる。そして、仮想ＣＰＵが再度第１物理アドレス空間に対応する仮想アドレス空間を処理対象とするときには、ハイパーバイザは、第１物理アドレス空間のキャッシュ情報が蓄積された第１物理ＣＰＵを選択して、仮想ＣＰＵに割り当てる。これにより、第１物理ＣＰＵのキャッシュやＴＬＢに蓄積された物理アドレス空間のキャッシュ情報を、再度利用することが可能となる。このため、仮想アドレス空間の切替え後において、当該仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が物理ＣＰＵに蓄積されるまでに発生する物理ＣＰＵのメモリアクセス遅延を、全体として軽減することが可能となる。
【００１５】
図１は、かかる技術が具現化された情報処理装置のハードウェア構成の一例を示す。図１の情報処理装置は、複数の物理ＣＰＵ（Central Processing Unit）１０１〜ｎ、メモリ２、ストレージ３、可搬記憶媒体駆動装置４、入出力装置５及び通信インタフェース６を備える。なお、以下の説明において、例えば、物理ＣＰＵ１０と記載したときには、物理ＣＰＵ１０１〜ｎのいずれか１つの要素を例示して示す（ただし物理ＣＰＵ１０１〜ｎのうち他の要素においても同様の説明が可能である）ものとする。他の構成要素についても同様とする。
【００１６】
物理ＣＰＵ１０は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかる物理ＣＰＵ１０は、制御に用いる各種情報が格納される制御レジスタ１１、既にアクセスしたメモリ２等の内容を一時的に格納可能なキャッシュ１２、及び、ページテーブルのキャッシュとしての機能を果たすＴＬＢ１３を備える。なお、アドレス空間とは、一連のメモリアドレスで示されるメモリ領域のことを示す。そして、仮想アドレス空間は、仮想ＣＰＵがアクセスする仮想的なアドレス空間を示し、物理アドレス空間は、仮想アドレス空間に対応する物理的なアドレス空間であって、物理ＣＰＵがアクセスするアドレス空間を示す。また、本明細書においてキャッシュ情報とは、キャッシュ１２やＴＬＢ１３等に格納される、アドレス空間に関連する情報のことを示す。物理ＣＰＵ１０は、メモリ自体に直接アクセスするよりも高速にアクセス可能なキャッシュ１２やＴＬＢ１３に格納されるキャッシュ情報を用いることにより、高速な処理を実現することができる。なお、本実施例では、物理ＣＰＵ自体がそれぞれ独立して複数設けられている例を用いて説明するが、ＣＰＵコアが複数設けられている構成でもよい。本明細書において、ＣＰＵが複数設けられていると表記する場合には、ＣＰＵコアが複数設けられているという意味も含むものとする。
【００１７】
メモリ２は、例えばＲＡＭ（Random Access Memory）等であり、物理ＣＰＵ１０で実行されるプログラムがロードされるとともに、物理ＣＰＵ１０の処理に用いるデータが格納されるメインメモリである。また、ストレージ３は、例えばＨＤＤ（Hard Disk Drive）やフラッシュメモリ等であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置４は、可搬記憶媒体７に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体７は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、物理ＣＰＵ１０は、メモリ２やストレージ３と協働しつつ、ストレージ３や可搬記憶媒体７に格納されたプログラムを実行する。なお、物理ＣＰＵ１０が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
【００１８】
入出力装置５は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース６は例えばＬＡＮ（Local Area Network）カード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス８で接続されている。
【００１９】
図２は、かかる情報処理装置において実現されるＣＰＵの割当機能に関連する機能ブロック図である。
【００２０】
本情報処理装置においては、仮想計算機２２が、ハイパーバイザ２３上に構築されている。換言すれば、ゲストＯＳ２４が、ハイパーバイザ２３の制御下で動作している。なお、図２では、ゲストＯＳ２４が１つである場合について例示しているが、ゲストＯＳ２４は複数であってもよい。ハイパーバイザ２３は、ゲストＯＳ２４の下位レイヤとして、物理ＣＰＵ１０１〜ｎの上で動作する。
【００２１】
仮想計算機２２は、ゲストＯＳ２４上の各処理を実行する１又は複数の仮想ＣＰＵ２０１〜ｎを備える。仮想ＣＰＵ２０も、物理ＣＰＵ１０と同様に、制御レジスタ２１を備える。ゲストＯＳ２４上では、プログラム（プロセス）４０１〜ｎが実行され、複数のプログラム４０１〜ｎが、仮想ＣＰＵ２０１〜ｎのうちの１つの仮想ＣＰＵをタイムシェアリング等によって共有しつつ実行される。さらには、複数のプログラム４０１〜ｎの組合せが、それぞれ別々の仮想ＣＰＵにおいて同時に並行処理されていてもよい。また、ページテーブル５０１〜ｎが、プログラム４０１〜ｎにそれぞれ対応して存在している。ページテーブル５０は、プログラム４０の実行時に用いられるデータが格納される仮想アドレス空間の論理アドレスと疑似物理アドレスを対応付けて保持している。
【００２２】
さらに、ゲストＯＳ２４は、仮想ＣＰＵ２０１〜ｎの処理対象の仮想アドレス空間を管理する空間管理部２５を備える。空間管理部２５は、例えばメモリ獲得イベントやメモリ解放イベント等による仮想アドレス空間の空間構成の更新命令に応じて、ページテーブル５０１〜ｎを更新する処理等を行う。なお、仮想アドレス空間の空間構成の更新が行われると、仮想アドレス空間に対応する物理アドレス空間の空間構成も更新されることとなり、対応するシャドウページテーブル５０１〜ｎも更新されることとなる。
【００２３】
また、空間管理部２５は、仮想ＣＰＵ２０１〜ｎの処理対象となる仮想アドレス空間を切り替える空間切替部２６を備える。空間切替部２６は、仮想ＣＰＵ２０の処理対象の仮想アドレス空間を切替えるときに、仮想ＣＰＵ２０の制御レジスタ２１に、切替え先の仮想アドレス空間を示すページテーブル５０のアドレスを代入する。かかる処理は、例えば、仮想ＣＰＵ２０がタイムシェアリングによって複数のプログラムを実行している場合において、ディスパッチによって処理対象のプログラムが切り替わるときや、新たなプログラムの実行を開始するときに発生する。このとき、空間切替部２６は、切替え後に実行するプログラム４０に対応するページテーブル５０のアドレスを、仮想ＣＰＵ２０の制御レジスタ２１に代入する。
【００２４】
ハイパーバイザ２３は、仮想ＣＰＵ２０に対し、必要に応じて物理ＣＰＵ１０を割り当てる。ここで、ハイパーバイザ２３は、ページテーブル５０１〜ｎとの間でそれぞれ対応関係し、ページテーブル５０１〜ｎが示す仮想アドレス空間にそれぞれ対応する物理アドレス空間を示すシャドウページテーブル６０１〜ｎを有する。シャドウページテーブル６０には、物理アドレス空間の論理アドレス及び物理アドレス（物理ＣＰＵ１０が認識することが可能なマシンアドレス）が対応付けて格納されている。なお、ハイパーバイザ２３は、ページテーブル５０との間で対応関係にあるシャドウページテーブル６０を特定するための情報を当然に参照可能である（図示省略）。また、シャドウページテーブル６０１〜ｎには、それぞれ、シャドウページテーブル６０（すなわち、対応するページテーブル５０）が更新された回数が設定される更新カウンタ７０１〜ｎが対応付けられている。
【００２５】
また、ハイパーバイザ２３は、ゲストＯＳ２４におけるページテーブル５０の更新命令や、仮想ＣＰＵ２０の制御レジスタ２１へのページテーブル５０のアドレスの代入命令を捕捉する命令捕捉部２７を備える。そして、命令捕捉部２７は、シャドウページテーブル管理部２８及び物理ＣＰＵ切替部２９を備える。
【００２６】
シャドウページテーブル管理部２８は、ページテーブル５０に対する更新命令を捕捉したときに、更新対象となったページテーブル５０と対応関係を有するシャドウページテーブル６０に更新内容を反映させる。また、シャドウページテーブル管理部２８は、更新内容の反映時に、シャドウページテーブル６０に対応する更新カウンタ７０をカウントアップする。
【００２７】
物理ＣＰＵ切替部２９は、仮想ＣＰＵ２０の制御レジスタ２１へのページテーブル５０のアドレスの代入命令を捕捉したとき（すなわち、仮想ＣＰＵ２０の処理対象のアドレス空間の切替えが発生したとき）に、次の処理を行う。すなわち、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０１〜ｎから、仮想ＣＰＵ２０に割り当てる物理ＣＰＵ１０を選択し、当該選択した物理ＣＰＵ１０を仮想ＣＰＵ２０に割り当てる。このとき、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０の制御レジスタ１１に対し、代入命令に係るページテーブル５０に対応するシャドウページテーブル６０のアドレスを、必要な場合のみ代入する。なお、物理ＣＰＵ切替部２９は、選択手段及び割当手段の実施態様の一例である。
【００２８】
ここで、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０１〜ｎに蓄積されているキャッシュ情報に関連する物理アドレス空間を示す情報（本実施例では、物理ＣＰＵの制御レジスタに設定されているシャドウページテーブルのアドレス）を含むデータが設定される管理テーブル３０を参照する。管理テーブル３０は、図３に示すように、物理ＣＰＵと、物理ＣＰＵの制御レジスタに設定されているシャドウページテーブルのアドレスと、シャドウページテーブルの更新カウンタと、物理ＣＰＵの使用状態と、の項目を含む。当該管理テーブル３０は、例えばメモリ２またはストレージ３等の記憶手段に格納されている。
【００２９】
ここで、管理テーブル３０に設定される物理ＣＰＵの使用状態について説明する。物理ＣＰＵの使用状態としては、以下の３つの状態が想定される。
【００３０】
「割当て中」：物理ＣＰＵが特定の仮想ＣＰＵに割り当てられている状態であり、シャドウページテーブルのアドレスが制御レジスタに設定されている状態（すなわち、物理ＣＰＵがいずれかのプログラムの処理を実行中の状態であり、そのプログラムの物理アドレス空間のキャッシュ情報がキャッシュやＴＬＢに蓄積されている状態）
【００３１】
「使用中」：物理ＣＰＵは特定の仮想ＣＰＵには割り当てられていないが、シャドウページテーブルのアドレスが制御レジスタに設定されている状態（すなわち、物理ＣＰＵは現在はプログラムの処理を実行していないが、少なくとも直近の情報処理装置の起動後においていずれかのプログラムの処理を実行したことがあり、そのプログラムの物理アドレス空間のキャッシュ情報がキャッシュやＴＬＢに蓄積されている状態）
【００３２】
「未使用」：物理ＣＰＵが特定の仮想ＣＰＵに割り当てられておらず、かつ、シャドウページテーブルのアドレスが制御レジスタに設定されていない状態（すなわち、物理ＣＰＵは少なくとも直近の情報処理装置の起動後においていずれのプログラムも未だ実行しておらず、物理アドレス空間のキャッシュ情報自体がキャッシュやＴＬＢに蓄積されていない状態）
【００３３】
次に、上記各構成要素のうち、特に、ハイパーバイザ２３の命令捕捉部２７のシャドウページテーブル管理部２８及び物理ＣＰＵ切替部２９が実行する処理について、詳細に説明する。
【００３４】
図４のフローチャートは、シャドウページテーブル管理部２８の処理を示す。図４の処理は、命令捕捉部２７において、ページテーブル５０に対する更新命令を捕捉したときに実行される。
【００３５】
ステップ１（図ではＳ１と表記する。以下同様）では、シャドウページテーブル管理部２８は、更新命令により更新されたページテーブル５０との間で対応関係を有するシャドウページテーブル６０のアドレスを特定する。
【００３６】
ステップ２では、シャドウページテーブル管理部２８は、ページテーブル５０に対してなされた更新内容を、ステップ１で特定したシャドウページテーブル６０に対して反映させる。
【００３７】
ステップ３では、シャドウページテーブル管理部２８は、更新したシャドウページテーブル６０に対応して設けられた更新カウンタ７０をカウントアップする。
【００３８】
なお、かかる更新カウンタ７０のカウントアップは、次のような目的で行われる。すなわち、例えばｘ８６アーキテクチャの物理ＣＰＵ等の場合、仮想アドレス空間の空間構成の更新にあわせて物理アドレス空間の空間構成が更新されたときには、シャドウページテーブルのアドレスを物理ＣＰＵの制御レジスタに代入し、物理ＣＰＵのＴＬＢをパージする処理が必須となる。換言すれば、物理アドレス空間の空間構成が更新された場合、当該更新以前に物理ＣＰＵのキャッシュやＴＬＢに蓄積された当該物理アドレス空間のキャッシュ情報は、使用することができない。本実施例では、シャドウページテーブル管理部２８が、シャドウページテーブル６０の内容が更新される（すなわち、物理アドレス空間の空間構成が更新される）ごとに、更新カウンタ７０をカウントアップすることで、シャドウページテーブル６０の更新回数を保持しておく。一方、物理ＣＰＵ切替部２９は、後述する物理ＣＰＵの選択処理において、更新カウンタ７０の数値に基づき、シャドウページテーブル６０に対する更新の有無を識別する。そして、物理ＣＰＵ切替部２９は、当該シャドウページテーブル６０が示すアドレス空間のキャッシュ情報を保持する物理ＣＰＵのキャッシュ情報を利用可能か否かを判定する。なお、空間構成の変更時に物理ＣＰＵのＴＬＢをパージが必須となるケースが想定されないアーキテクチャのＣＰＵを用いている場合には、かかる処理は不要である。
【００３９】
次に、図５のフローチャートを用いて、物理ＣＰＵ切替部２９の処理を説明する。図５の処理は、仮想ＣＰＵ２０の制御レジスタ２１に対するページテーブル５０のアドレスの代入命令を命令捕捉部２７が捕捉したときに実行される。換言すれば、図５の処理は、仮想計算機２２において、仮想ＣＰＵ２０で処理する仮想アドレス空間の切替えが発生したときに実行される。
【００４０】
ステップ１１では、物理ＣＰＵ切替部２９は、代入命令に係るページテーブル５０のアドレスと対応関係を有するシャドウページテーブル６０のアドレスを特定する。
【００４１】
ステップ１２では、物理ＣＰＵ切替部２９は、代入命令に係るシャドウページテーブル６０のアドレスが、現在処理が割り当てられている物理ＣＰＵ１０の制御レジスタ１１に代入されているシャドウページテーブル６０のアドレスと同一であるか否かを判定する。物理ＣＰＵ切替部２９は、両者が同一でない場合にはステップ１３に処理を進める一方（Ｎｏ）、両者が同一である場合にはステップ１９に処理を進める（Ｙｅｓ）。なお、両者が同一である場合とは、例えば、ｘ８６アーキテクチャの物理ＣＰＵを用いている場合において、単にＴＬＢをパージするためにページテーブルの代入命令が実行される場合等が想定される。
【００４２】
ステップ１３では、物理ＣＰＵ切替部２９は、管理テーブル３０を参照し、物理ＣＰＵ１０１〜ｎのうち、次の条件を満たす物理ＣＰＵ１０が存在するか否かを判定する。
（１）管理テーブルの使用状態が「使用中」である
（２）管理テーブルのシャドウページテーブルアドレスが、代入命令に係るシャドウページテーブルのアドレスと同一である
（３）管理テーブルの更新カウンタが、代入命令に係るシャドウページテーブルの更新カウンタと同一である
【００４３】
これら（１）〜（３）の条件を満たす物理ＣＰＵ１０は、換言すれば、（１）現在、仮想ＣＰＵ２０１〜ｎのいずれにも割り当てられておらず、（２）切替え後の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が、キャッシュ１２やＴＬＢ１３に蓄積されており、（３）以前にこの物理ＣＰＵが当該物理アドレス空間の処理をした時点から、当該物理アドレス空間の空間構成が更新されていない、という条件を満たす物理ＣＰＵ１０である。
【００４４】
物理ＣＰＵ切替部２９は、上記（１）〜（３）の条件を満たす物理ＣＰＵが存在すれば、ステップ１４に処理を進める一方（Ｙｅｓ）、かかる物理ＣＰＵが存在しなければ、ステップ１６に処理を進める（Ｎｏ）。
【００４５】
ステップ１４では、物理ＣＰＵ切替部２９は、上記（１）〜（３）の条件を全て満たす物理ＣＰＵ１０を選択する。そして、物理ＣＰＵ切替部２９は、選択した物理ＣＰＵ１０を、仮想ＣＰＵ２０に割り当てる。
【００４６】
ステップ１５では、物理ＣＰＵ切替部２９は、管理テーブル３０を更新する。具体的には、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、ステップ１４で選択した物理ＣＰＵ１０に対応するレコードの使用状態を、「使用中」から「割当て中」に変更する。一方、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、Ｓ１４での割当て処理の前まで仮想ＣＰＵ２０に割り当てられていた物理ＣＰＵ１０に対応するレコードの使用状態を、「割当て中」から「使用中」に変更する。さらに、物理ＣＰＵ切替部２９は、変更したレコードの更新カウンタを、Ｓ１４での割当て処理の前（上記アドレス空間の切替え前）まで処理対象とされていたシャドウページテーブル６０に対応する更新カウンタ７０の現在の数値に変更する。
【００４７】
ステップ１６では、物理ＣＰＵ切替部２９は、管理テーブル３０を参照し、使用状態が「未使用」の物理ＣＰＵ１０が存在するか否かを判定する。物理ＣＰＵ切替部２９は、使用状態が「未使用」の物理ＣＰＵ１０が存在すれば、ステップ１７に処理を進める一方（Ｙｅｓ）、使用状態が「未使用」の物理ＣＰＵ１０が存在しなければ、ステップ１９に処理を進める（Ｎｏ）。
【００４８】
ステップ１７では、物理ＣＰＵ切替部２９は、使用状態が「未使用」の物理ＣＰＵ１０を選択する。換言すれば、物理ＣＰＵ切替部２９は、制御レジスタ１１にシャドウページテーブル６０のアドレス自体が設定されていない（すなわち、キャッシュ情報自体が蓄積されていない）物理ＣＰＵ１０を選択する。そして、物理ＣＰＵ切替部２９は、当該選択した物理ＣＰＵ１０を、仮想ＣＰＵ２０に割り当てる。このとき、物理ＣＰＵ切替部２９は、当該選択した物理ＣＰＵ１０の制御レジスタ１１に、代入命令に係るシャドウページテーブル６０のアドレスを代入する。換言すれば、物理ＣＰＵ切替部２９は、上記（１）〜（３）の条件を全て満たす物理ＣＰＵ１０が無い場合に、キャッシュ情報が蓄積されていない物理ＣＰＵ１０を、これまで仮想ＣＰＵ２０に割り当てられていた物理ＣＰＵ１０よりも優先して、仮想ＣＰＵ２０に割り当てる。
【００４９】
ステップ１８では、物理ＣＰＵ切替部２９は、管理テーブル３０を更新する。具体的には、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、ステップ１７で選択した物理ＣＰＵ１０のシャドウページテーブルのアドレスを、代入命令に係るシャドウページテーブル６０のアドレスに変更する。また、物理ＣＰＵ切替部２９は、シャドウページテーブル６０のアドレスを変更したレコードの使用状態を、「未使用」から「割当て中」に変更する。また、シャドウページテーブル６０のアドレスを変更したレコードの更新カウンタを、代入命令に係るシャドウページテーブル６０に対応する更新カウンタ７０の現在の数値に変更する。一方、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、Ｓ１７での割当て処理の前まで仮想ＣＰＵ２０に割り当てられていた物理ＣＰＵ１０に対応するレコードの使用状態を、「割当て中」から「使用中」に変更する。また、シャドウページテーブル６０のアドレスを変更したレコードの更新カウンタを、Ｓ１７の割当て処理の前（上記アドレス空間の切替え前）まで処理対象とされていたシャドウページテーブル６０に対応する更新カウンタ７０の現在の数値に変更する。
【００５０】
ステップ１９では、物理ＣＰＵ切替部２９は、これまで仮想ＣＰＵ２０に割り当てていた物理ＣＰＵ１０の制御レジスタ１１に、代入命令に係るシャドウページテーブル６０のアドレスを代入する。すなわち、物理ＣＰＵ切替部２９は、これまで仮想ＣＰＵ２０に割り当てていた物理ＣＰＵ１０を、引き続き仮想ＣＰＵ２０に割り当てる。
【００５１】
ステップ２０では、物理ＣＰＵ切替部２９は、管理テーブル３０を更新する。具体的には、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、ステップ１９で引き続き仮想ＣＰＵ２０に割り当てる物理ＣＰＵ１０のシャドウページテーブルのアドレスを、代入命令に係るシャドウページテーブル６０のアドレスに変更する。また、シャドウページテーブル６０のアドレスを変更したレコードの更新カウンタを、代入命令に係るシャドウページテーブル６０に対応する更新カウンタ７０の現在の数値に変更する。
【００５２】
かかる処理によれば、仮想ＣＰＵが処理する仮想アドレス空間の切替えの発生時に、次のように物理ＣＰＵの割当てが行われる。すなわち、切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理ＣＰＵがあれば、当該物理ＣＰＵが仮想ＣＰＵに割り当てられる。ここで、切替え先の物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理ＣＰＵとは、すなわち、キャッシュやＴＬＢにおいて、切替え先の物理アドレス空間のキャッシュ情報が蓄積されている物理ＣＰＵである。このため、仮想アドレス空間切替え後の処理において、当該物理ＣＰＵに蓄積されたキャッシュ情報を用いることができ、仮想アドレス空間切替え後における物理ＣＰＵのメモリアクセス処理の遅延を低減することが可能となる。
【００５３】
また、一方で、これまで仮想ＣＰＵに割り当てられていた物理ＣＰＵに対応する管理テーブルのレコードには、切替え前のシャドウページテーブルのアドレスが格納されており、使用状態も未使用ではなく使用中になっている。したがって、他の物理アドレス空間の処理に対して、すでに仮想ＣＰＵに割り当てられている物理ＣＰＵが選択されて割り当てられることがない。このため、当該物理ＣＰＵに蓄積されたキャッシュ情報は、他の物理アドレス空間のキャッシュ情報で書き換えられることなく保持されることになる。そして、次に当該物理アドレス空間が処理対象になるときに、上述のように、当該物理ＣＰＵが選択され、仮想ＣＰＵに割り当てられることとなる。このため、次に同じ物理アドレス空間が処理対象になるときには、物理ＣＰＵに蓄積されたキャッシュ情報が活用されることとなり、メモリアクセス処理の遅延を低減することが可能となる。
【００５４】
さらに、切替え先の物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理ＣＰＵが無い場合には、未使用の物理ＣＰＵが仮想ＣＰＵに割り当てられる。この割り当て処理の直後においては、仮想ＣＰＵに割り当てられた物理ＣＰＵのキャッシュやＴＬＢには、切替え先の物理アドレス空間のキャッシュ情報が蓄積されていない。しかしながら、一旦このようにして物理ＣＰＵが仮想ＣＰＵに割り当てられてキャッシュ情報を蓄積すれば、次に同じ物理アドレス空間が処理対象となるときに、当該物理ＣＰＵに蓄積されたキャッシュ情報が活用されることとなる。このようにして、結果として、複数の物理ＣＰＵを有効に利用しつつ、全体としてメモリアクセスの遅延を低減することが可能となる。
【００５５】
なお、上述のように、アドレス空間の切替えにともなってハイパーバイザが仮想ＣＰＵに割り当てる物理ＣＰＵを切替えたとしても、ゲストＯＳ側では、これまでのアドレス空間の切替えと同様に認識される。そして、このように、１つの仮想ＣＰＵで行われる処理に対して複数の物理ＣＰＵが用いられることで、例えばゲストＯＳにおいて使用可能な仮想ＣＰＵの数に上限があったとしても、当該上限数に関係なく複数の物理ＣＰＵが活用されることとなる。
【００５６】
ここで、上記実施例における処理のうち、仮想ＣＰＵ２０の制御レジスタ２１に対してアドレス空間の代入命令が実行される場合における、仮想ＣＰＵ２０への物理ＣＰＵ１０の割当て処理について、具体例を示して説明する。
【００５７】
図７（Ａ）は、具体例における、時間（ｔ）の経過にともなう物理ＣＰＵ１０１及び物理ＣＰＵ１０２の処理状態の遷移を示した説明図である。
＜１＞本具体例では、図２に示す仮想計算機２２で動作するゲストＯＳ２４上で、プログラム４０１及びプログラム４０２が、仮想ＣＰＵ２０１を共有しつつ交互に実行されているものとする。現時点で、仮想ＣＰＵ２０１は、プログラム４０１の仮想アドレス空間を処理対象としており、仮想ＣＰＵ２０１の制御レジスタ２１１には、ページテーブル５０１のアドレスが代入されている。一方、仮想ＣＰＵ２０１には物理ＣＰＵ１０１が割り当てられており、物理ＣＰＵ１０１の制御レジスタ１１１には、ページテーブル５０１との間で対応関係を有するシャドウページテーブル６０１のアドレス（0x0DD0F000）が代入されている。このとき、管理テーブル３０の内容は、図６（Ａ）に示す状態となっている。
【００５８】
＜２＞そして、プログラム４０１からプログラム４０２へのディスパッチが行われるとき、ゲストＯＳ２４における空間切替部２６は、仮想ＣＰＵ２０１の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部２６は、仮想ＣＰＵ２０１の制御レジスタ２１１に対し、プログラム４０２のアドレス空間を示すページテーブル５０２のアドレスを代入する代入命令を実行する。
【００５９】
一方、ハイパーバイザ２３の命令捕捉部２７は、かかる仮想ＣＰＵ２０１の制御レジスタ２１１に対するページテーブル５０２のアドレスの代入命令を捕捉する。そして、物理ＣＰＵ切替部２９は、管理テーブル３０を参照し、物理ＣＰＵ１０１〜ｎのうち、（１）使用状態が「使用中」であり、（２）シャドウページテーブルアドレスが、ディスパッチ後に仮想ＣＰＵ２０１で実行するプログラム４０２の仮想アドレス空間を示すページテーブル５０２との間で対応関係を有するシャドウページテーブル６０２のアドレス（0x0DF00000）であり、（３）更新カウンタがシャドウページテーブル６０２の更新カウンタ７０２と同一の物理ＣＰＵ１０を検索する。なお、この段階で更新カウンタ７０２は０であるとする。ここで、図６（Ａ）に示す管理テーブル３０の状態では、（１）〜（３）の条件を全て満たす物理ＣＰＵ１０は存在しない。このため、物理ＣＰＵ切替部２９は、使用状態が「未使用」の物理ＣＰＵ１０２を仮想ＣＰＵ２０１に割り当て、物理ＣＰＵ１０２の制御レジスタ１１２に対し、シャドウページテーブル６０２のアドレス（0x0DF00000）を代入する。そして、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、物理ＣＰＵ１０２のレコードのシャドウページテーブルアドレスをシャドウページテーブル６０２のアドレス（0x0DF00000）に変更し、使用状態を「未使用」から「割当て中」に変更する。さらに、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０１のレコードの使用状態を「割当て中」から「使用中」に変更する。図６（Ｂ）は、かかる更新が行われた後の管理テーブル３０の内容を示す。
【００６０】
＜３＞かかる処理の結果、物理ＣＰＵ１０２が仮想ＣＰＵ２０１に割り当てられ、シャドウページテーブル６０２が示す物理アドレス空間の処理、すなわち、プログラム４０２の処理が実行される。この処理の実行中、上述のように、管理テーブル３０において、物理ＣＰＵ１０１に対応するレコードのシャドウページテーブルアドレスにはシャドウページテーブル６０1のアドレス（0x0DD0F000）が設定され、使用状態は「使用中」になっている。このため、当該物理ＣＰＵ１０１は、他の物理アドレス空間の処理に対して割り当てられることはない。したがって、物理ＣＰＵ１０１のキャッシュ１２１やＴＬＢ１３１には、シャドウページテーブル６０１のアドレス空間のキャッシュ情報が保持されたままとなっている。
【００６１】
＜４＞そして、再度、プログラム４０２からプログラム４０１へのディスパッチが行われるとき、空間切替部２６は、仮想ＣＰＵ２０１の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部２６は、仮想ＣＰＵ２０１の制御レジスタ２１１に対し、プログラム４０１の仮想アドレス空間を示すページテーブル５０１のアドレスを代入する。
【００６２】
一方、ハイパーバイザ２３の命令捕捉部２７は、かかる仮想ＣＰＵ２０１の制御レジスタ２１１に対するアドレスの代入命令を捕捉する。そして、物理ＣＰＵ切替部２９は、管理テーブル３０を参照し、物理ＣＰＵ１０１〜ｎのうち、（１）使用状態が「使用中」であり、（２）シャドウページテーブルアドレスが、ディスパッチ後に仮想ＣＰＵ２０１で実行するプログラム４０１の仮想アドレス空間を示すページテーブル５０１との間で対応関係を有するシャドウページテーブル６０１のアドレス（0x0DD0F000）であり、（３）更新カウンタがシャドウページテーブル６０１の更新カウンタ７０１と同一の物理ＣＰＵ１０を検索する。なお、この段階で更新カウンタ７０１は３であるとする。ここで、図６（Ｂ）に示す管理テーブル３０に基づけば、物理ＣＰＵ１０１がこれらの条件を満たしている。このため、物理ＣＰＵ切替部２９は、物理ＣＰＵ１０１を仮想ＣＰＵ２０１に割り当てる。そして、物理ＣＰＵ切替部２９は、管理テーブル３０のレコードのうち、物理ＣＰＵ１０２のレコードの使用状態を「割当て中」から「使用中」に変更する一方、物理ＣＰＵ１０１のレコードの使用状態を「使用中」から「割当て中」に変更する。図６（Ｃ）は、かかる更新が行われた後の管理テーブル３０の内容を示す。
【００６３】
＜５＞かかる処理の結果、物理ＣＰＵ１０１が仮想ＣＰＵ２０１に割り当てられ、再び、シャドウページテーブル６０１が示す物理アドレス空間の処理、すなわち、プログラム４０１の処理が実行される。
【００６４】
ここで、図７（Ｂ）は、従来のＣＰＵ割当方法により、物理ＣＰＵ１０１のみを用いて処理を行う場合の物理ＣＰＵ１０１の処理状態を示す。従来のＣＰＵ割当方法によれば、プログラム４０１からプログラム４０２へのディスパッチが発生した後、再度プログラム４０１へのディスパッチが発生した場合、物理ＣＰＵ１０１のキャッシュ１２１及びＴＬＢ１３１は、すでにプログラム４０２の物理アドレス空間のキャッシュ情報に書き換わっている。このため、プログラム４０１へのディスパッチの直後は、プログラム４０１のアドレス空間のキャッシュ情報がキャッシュ１２１及びＴＬＢ１３１に蓄積されていないため、メモリアクセス処理が遅延するおそれがある。
【００６５】
一方、図７（Ａ）の＜５＞の説明に戻ると、物理ＣＰＵ１０１が再度仮想ＣＰＵ２０１に割り当てられるときに、物理ＣＰＵ１０１のキャッシュ１２１及びＴＬＢ１３１には、シャドウページテーブル６０１が示す物理アドレス空間のキャッシュ情報が保持されたままとなっている。このため、物理ＣＰＵ１０１は、仮想アドレス空間の切替えの直後においても、キャッシュ１２１及びＴＬＢ１３１に蓄積されたキャッシュ情報を用いてプログラム４０１を実行することができる。したがって、プログラム４０１へのディスパッチの直後であっても、メモリアクセスの遅延が低減される。
【００６６】
ここで、上記実施例においては、各物理ＣＰＵの制御レジスタに代入されているシャドウページテーブルのアドレス及び使用状態を参照して、仮想ＣＰＵに割り当てる物理ＣＰＵを選択している。しかし、使用状態を参照する処理は必ずしも行わなくてもよい。すなわち、制御レジスタに切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが設定されている状態である物理ＣＰＵが特定できた場合、ゲストＯＳの構造によっては、当該物理ＣＰＵが他の仮想ＣＰＵに対して割当て中ではないと判断できる場合もある。このため、必ずしも当該物理ＣＰＵの使用状態を参照しなくても、制御レジスタに切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが設定されていることを条件として、物理ＣＰＵを選択してもよい。また、シャドウページテーブルのアドレスが物理ＣＰＵの制御レジスタに未設定の場合には、当該物理ＣＰＵが未使用の状態であることが必然的に特定できる。このように、かりに使用状態を参照せずに、シャドウページテーブルのアドレスに基づいて物理ＣＰＵを選択したとしても、物理ＣＰＵを適切に選択することは可能である。
【００６７】
さらに、上記実施例においては、ハイパーバイザは各物理ＣＰＵの制御レジスタに代入されているシャドウページテーブルのアドレスや使用状態を管理するべく、管理テーブルを用いている。そして、ハイパーバイザは、仮想アドレス空間の切替え時に、かかる管理テーブルのデータを参照することで、速やかに物理ＣＰＵのキャッシュ情報等を確認し、物理ＣＰＵを選択することができる。しかし、かかる管理データは、必ずしもテーブルの形式で保持されている必要はない。さらには、ハイパーバイザは、必ずしも管理データを用いなくても、各物理ＣＰＵに対して割込みを発生させて直接物理ＣＰＵの制御レジスタの内容等を確認することにより、物理ＣＰＵを選択することも可能である。
【００６８】
上述した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【符号の説明】
【００６９】
１０１〜ｎ    物理ＣＰＵ
１１１〜ｎ    物理ＣＰＵの制御レジスタ
１２１〜ｎ    物理ＣＰＵのキャッシュ
１３１〜ｎ    物理ＣＰＵのＴＬＢ
２    メモリ
３    ストレージ
４    可搬記憶媒体駆動装置
５    入出力装置
６    通信インタフェース
８    バス
２０１〜ｎ    仮想ＣＰＵ
２１１〜ｎ    仮想ＣＰＵの制御レジスタ
２２    仮想計算機
２３    ハイパーバイザ
２４    ゲストＯＳ
２５    空間管理部
２６    空間切替部
２７    命令捕捉部
２８    シャドウページテーブル管理部
２９    物理ＣＰＵ切替部
３０    管理テーブル
４０１〜ｎ    プログラム
５０１〜ｎ    ページテーブル
６０１〜ｎ    シャドウページテーブル
７０１〜ｎ    更新カウンタ
【図１】
2012029149.tif 000003
【図２】
2012029149.tif 000004
【図３】
2012029149.tif 000005
【図４】
2012029149.tif 000006
【図５】
2012029149.tif 000007
【図６】
2012029149.tif 000008
【図７】
2012029149.tif 000009
【国際調査報告】
2012029149.tif 000010
2012029149.tif 000011
2012029149.tif 000012
2012029149.tif 000013