(57)【要約】【課題】ホストが各ゲストの特権命令をエミュレーションする頻度を低減し、ゲストの命令実行効率を向上させる。【解決手段】情報処理装置を構成するプロセッサ１０１ａ，１０１ｂ及びメモリ１０４を仮想化して、ホストと夫々が異なるオペレーティングシステムで動作する任意の数の論理的な区画（ゲスト）に分割し、前記プロセッサ１０１ａ，１０１ｂはホスト特権レジスタセット２０８ａとゲスト特権レジスタセット２０８ｂを有し、前記ゲストが命令を実行中に前記ホスト特権レジスタセット２０８ａの設定変更を必要としない特権命令が実行された場合は、特権命令例外を発生させずに前記ゲスト特権レジスタセット２０８ｂの参照及び更新を実行し、前記ホスト特権レジスタセット２０８ａの設定変更を必要とする特権命令が実行された場合は、特権命令例外を発生させ当該命令のエミュレーションを前記ホストに実行させる。【選択図】  図２
2005056017.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサを有し、ホストと少なくとも一つの仮想計算機を動作させる機能を有する情報処理装置において、前記プロセッサは前記ホストの状態を規定するホスト特権レジスタセットと、前記仮想計算機の状態を規定するゲスト特権レジスタセットと、前記ホスト特権レジスタセットもしくは前記ゲスト特権レジスタセットを指定するレジスタセット指定子と、該レジスタセット指定子に従って前記ホスト特権レジスタセットもしくは前記ゲスト特権レジスタセットのアクセスを制御する特権レジスタ制御部とを有し、前記ホスト特権レジスタセットは前記仮想計算機で実行している命令の特権レベルを示すホスト特権レベルレジスタを有し、前記特権レジスタ制御部は、前記ホスト特権レベルレジスタによって示される特権レベルと、命令の種類もしくは命令の対象特権レジスタに応じて特権命令例外を発生させる例外発生手段とを有することを特徴とする情報処理装置。
【請求項２】
情報処理装置を構成するプロセッサ及びメモリを仮想化して、ホストと夫々が異なるオペレーティングシステムで動作する任意の数の論理的な区画（ゲスト）に分割し、前記プロセッサはホスト特権レジスタとゲスト特権レジスタを有し、前記ゲストが命令を実行中に前記ホスト特権レジスタの設定変更を必要としない特権命令が実行された場合は、特権命令例外を発生させずに前記ゲスト特権レジスタの参照及び更新を実行し、前記ホスト特権レジスタの設定変更を必要とする特権命令が実行された場合は、特権命令例外を発生させ当該命令のエミュレーションを前記ホストに実行させることを特徴とする情報処理装置。
【請求項３】
情報処理装置を構成するプロセッサ及びメモリを仮想化して、ホストと夫々が異なるオペレーティングシステムで動作する任意の数の論理的な区画（ゲスト）に分割し、前記プロセッサは特権レジスタを有し、前記ゲストが命令を実行中に前記特権レジスタを参照する命令が実行された場合は、特権命令例外を発生させず、前記特権レジスタを更新する命令が実行された場合は、特権命令例外を発生させ当該命令のエミュレーションを前記ホストに実行させることを特徴とする情報処理装置。
【請求項４】
少なくとも１つ以上のプロセッサを有する計算機において、前記プロセッサは複数のレジスタからなるレジスタセットと、該レジスタセットのレジスタをアクセスして命令を実行する命令実行部を有し、前記レジスタセットは計算機で実行しているコンテキストの特権レベルを示す特権レベルレジスタと、前記特権レベルと前記レジスタの種別と該レジスタに対するアクセスの種類との組み合わせごとに例外を発生させるか否かを設定する例外許可レジスタを有し、前記命令実行部は命令の実行時に前記例外許可レジスタに設定された値に従って例外を発生させる例外発生手段を有することを特徴とする計算機。
【請求項５】
前記レジスタセットは、前記例外許可レジスタとして、前記特権レベルと前記レジスタの種別と該レジスタに対するアクセスの種類との組み合わせに対して、例外を発生させる場合には１もしくは０を設定し、例外を発生させない場合には０もしくは１を設定するビットマップレジスタを有することを特徴とする請求項４記載の計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機に複数の論理的な区画を生成する技術に関係し、各論理区画において独立に稼動するオペレーティングシステムを正常に稼動させるための技術に関係する。
【０００２】
【従来の技術】
近年の計算機性能の向上により、従来複数のサーバに分散していた処理を一つのサーバに集約しコストを削減する動きが多く見られる。このような集約に際して有効となる手段が、一つのサーバ上で複数のオペレーティングシステムを稼動させる区画方式である。区画方式は、従来のサーバを一つの区画に対応させることによって、サーバ移行をスムーズに行うことを可能とすることができる。
【０００３】
上記のニーズに対し、従来の計算機では、計算機中に区画を物理的に設ける物理分割方式によって、複数のオペレーティングシステムを稼動させていた。物理分割方式では、ＣＰＵ性能やメモリ容量等の計算機資源を物理的なＣＰＵやメモリ毎にしか割当できない。ＣＰＵやメモリの高性能化・大容量化が急速に進展する状況においては、物理区画に従来の一つのサーバを割当てると性能・容量的に余剰を生じるため無駄が多かった。
【０００４】
そこで、物理的なＣＰＵやメモリを仮想化し、計算機中に任意の数の論理的な区画（以下、論理区画という）を生成する論理分割方式が注目を集めている。論理分割方式はハイパバイザと呼ばれるファームウェアによって実現される。論理分割方式において各論理区画で稼動するオペレーティングシステムおよび該オペレーティングシステム上で動作するアプリケーションプログラムをまとめてゲストと呼び、ハイパバイザをホストと呼ぶ。各ゲストはユーザレベルで実行され、ホストのみが特権命令の実行を担当する。各ゲストはオペレーティングシステムであるため特権命令を発行するが、プロセッサの特権レベルがユーザレベルであるため特権命令例外が発生する。該例外をホストがトラップし、各ゲストに応じた特権命令のエミュレーションを実施する。このエミュレーションのためにホスト側では、特権命令が使用するレジスタ等をホスト側のデータ領域に格納し、特権命令を実行した論理区画毎に正しくエミュレーションデータをアクセスするようにしている。
【０００５】
このホストによるエミュレーションの実行は通常数十サイクルからそれ以上の時間がかかり、ゲストで実行するアプリケーションプログラムの種類によっては大幅に実行効率を低下させる。この実行効率の低下を改善するために、ホストの実行を支援するハードウェア機構が有効である。ホストの実行を支援するハードウェアとして、特許文献１に、複数のレジスタセットを持つ、マルチスレッド化されたＣＰＵを用い、ホスト命令とゲスト命令がそれぞれのスレッドで同時に実行する例が開示されている。
【０００６】
【特許文献１】
米国特許出願公開第２００３／０００９６４８号明細書（第１０−１１頁、第１図）
【０００７】
【発明が解決しようとする課題】
上記従来技術においては、ゲスト命令は依然としてユーザレベルで実行されるため、ゲストが特権命令を実行した場合、特権命令例外が発生しホストによるエミュレーションが行われる。そのため特権命令のエミュレーションによるゲスト命令の実行効率の低下を避けることが出来ないという問題がある。
【０００８】
本発明の目的は、上記従来の問題に鑑み、ホストによる特権命令のエミュレーションの頻度を低減し、ゲスト命令の実行効率を向上させることである。
【０００９】
【課題を解決するための手段】
本発明の望ましい形態の一つでは、プロセッサにホストの状態を規定する唯一つのホスト特権レジスタセットと、仮想計算機の状態を規定する一つ以上のゲスト特権レジスタセットと、前記ホスト特権レジスタセットもしくは前記一つ以上のゲスト特権レジスタセットのいずれか一つを指定するレジスタセット指定子と、前記レジスタセット指定子に従って前記ホスト特権レジスタセットもしくは前記ゲスト特権レジスタセットのいずれか一つを選択し、特権レジスタへのアクセスを制御する特権レジスタ制御部を設け、前記ホスト特権レジスタセットは前記プロセッサで実行しているコンテキストの特権レベルを示すホスト特権レベルレジスタを有し、前記特権レジスタ制御部は、前記ホスト特権レベルレジスタによって示される特権レベルと、命令の種類もしくは命令の対象特権レジスタに応じて例外を発生させる例外発生手段を有する。
【００１０】
上記のホスト特権レジスタセットを適切に設定し、前記レジスタセット指定子によって論理区画（＝仮想計算機）に対応するゲスト特権レジスタセットを指定した上でゲスト命令を実行させ、物理的な計算機の特権レジスタの設定変更を必要としない特権命令が実行された場合は、前記選択したゲスト特権レジスタセットのみを参照および更新させ、特権命令例外を発生させないことを可能にし、ホストによる命令エミュレーションの頻度を低減することができる。
【００１１】
また本発明の異なる望ましい形態の一つでは、プロセッサに複数のレジスタからなるレジスタセットと、前記レジスタセットのレジスタをアクセスして命令を実行する命令実行部を設け、前記レジスタセットは、前記プロセッサで実行しているコンテキストの特権レベルを示す特権レベルレジスタと、前記特権レベルと前記レジスタセットの有するレジスタの種別と該レジスタに対するアクセスの種類との組み合わせごとに特権命令例外を発生させるか否かを設定する例外許可レジスタを有し、前記命令実行部は、命令の実行時に前記例外許可レジスタに設定された値に従って特権命令例外を発生させる例外発生手段を有する。
【００１２】
上記例外許可レジスタに、例えば特権レジスタに対する読み出しは特権命令例外を発生させず、書き込みのみ特権命令例外を発生させるよう設定することができる。これによりホストによる特権命令のエミュレーションの頻度をさらに低減可能である。
【００１３】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態を詳細に説明する。
図１に、本発明の一実施例による情報処理装置の構成を示す。ＣＰＵバス１０２、メモリ１０４、Ｉ／Ｏバス＃０  １０５ａ、およびＩ／Ｏバス＃１  １０５ｂがチップセット１０３を介して接続されている。図面の都合上、Ｉ／Ｏバスがチップセット１０３に２本接続されている構成を図示したが、２以上もしくは２以下でも構わない。
【００１４】
ＣＰＵバス１０２にはＣＰＵ＃０  １０１ａ、およびＣＰＵ＃１  １０１ｂが接続されている。本実施例ではＣＰＵバス１０２に２つのＣＰＵが接続されている構成を示したが、２以上もしくは２以下でも構わない。前述のＣＰＵ＃０  １０１ａ、ＣＰＵ＃１  １０１ｂ、ＣＰＵバス１０２、チップセット１０３、メモリ１０４、Ｉ／Ｏバス＃０  １０５ａおよび    Ｉ／Ｏバス＃１  １０５ｂをまとめてノードと呼ぶ。各ノードはノード間インタコネクト１０６を介して相互に結合される。なお、本実施例では２つのノードからなる情報処理装置を示したが、必ずしも２つに制限されるものではない。
【００１５】
図２に、ＣＰＵ＃０  １０１ａの内部構成を示す。なお、ＣＰＵ＃１  １０１ｂも同じ構成をとるためＣＰＵ＃０  １０１ａのみを説明する。実行制御部２２４は、命令キャッシュ２０１より命令コードを読み込みデコードした上で演算器２２１のスケジューリング、特権レジスタ制御回路２２２へのアクセスを行う。命令キャッシュ２０１はＣＰＵバスＩ／Ｆ２０４を介してＣＰＵバス１０２に接続されており、メモリ１０４から命令コードを読み出し蓄える。
【００１６】
一方データキャッシュ２０２は、命令キャッシュ２０１と同様ＣＰＵバスＩ／Ｆ２０４を介してメモ１０４へアクセスし、処理対象のデータの読み出し、または書き戻しを行う。データキャッシュ２０２に蓄えられたデータは、実行制御部２２４の指示によってユーザレジスタ２０３へ転送される。演算器２２１はユーザレジスタ２０３を処理対象として演算を実行する。
【００１７】
特権レジスタ制御回２２２は実行制御部２２４からの指示によって、ホスト特権レジスタセット２０８ａ、もしくはゲスト特権レジスタセット２０８ｂへの参照、もしくは更新処理を行う。
【００１８】
ホスト特権レジスタセット２０８ａは、ホスト特権レベルレジスタ２０５ａを含め、ｎ個の特権レジスタを有する。これらの特権レジスタは、例えばＩｎｔｅｌ社のＩＡ−６４（Ｒ）プロセッサにおける、プロセッサ・ステータス・レジスタ（ＰＳＲ）、領域レジスタ（ＲＲ）、コントロールレジスタ（ＣＲ）など、特定の特権レベルでのみアクセス可能なレジスタを意図している。本実施例ではこれらの特権レジスタは一意に番号が割り付けられており、０番目の特権レジスタがホスト特権レベルレジスタ２０５ａである。
【００１９】
ホスト特権レジスタ２０５ａは、プロセッサで実行中のコンテキストに設定されている特権レベルを保持する。すなわち、ホスト特権レベルレジスタ２０５ａは、前述のＩＡ−６４（Ｒ）プロセッサにおけるＰＳＲ中のＣＰＬ（現行特権レベル）フィールドに類似のものである。本実施例では、前述のホスト命令が実行されている間は、ホスト特権レベルレジスタ２０５ａに特権レベル０’が設定され、ゲスト命令コードのうちオペレーティングシステムにあたる部分の命令コードが実行されている間は  １’が、ゲスト命令コードのうちアプリケーションプログラムにあたる部分の命令コードが実行されている間は  ３’が設定されるものとする。
【００２０】
ゲスト特権レジスタセット２０８ｂは、ゲスト特権レベルレジスタ２０５ｂを含め、ｎ個の論理的な特権レジスタを有する。なお本実施例では、ゲスト特権レジスタセット２０８ｂが１つのみの例を示したが、２つ以上でも構わない。本実施例ではこれらの論理的な特権レジスタは一意に番号が割り付けられており、０番目の論理的な特権レジスタがゲスト特権レベルレジスタ２０５ｂである。
【００２１】
ゲスト特権レジスタ２０５ｂは、対応する論理区画で実行中のコンテキストに設定されている論理的な特権レベルを保持する。すなわち本実施例では、前述のゲスト命令コードのうちオペレーティングシステムにあたる部分の命令コードが実行されている間は０’が、ゲスト命令コードのうちアプリケーションプログラムにあたる部分の命令コードが実行されている間は３’が設定されているものとする。
【００２２】
レジスタセット指定子２０６は、特権レジスタ制御回路２２２が参照、もしくは更新すべき対象のレジスタセットを指定する。すなわちホスト命令実行中にはレジスタセット指定子２０６に０がセットされ、特権レジスタ制御回路２２２はホスト特権レジスタ２０８ａをアクセスする。ゲスト命令実行中にはレジスタセット指定子２０６に１がセットされ、特権レジスタ制御回路２２２はゲスト特権レジスタ２０８ｂをアクセスする。レジスタセット指定子２０６は特定の特権命令によって設定可能であり、実行制御部２２４から更新される。
【００２３】
例外許可レジスタ２０７には、実行制御部２２４からの処理要求の種別と対象レジスタ番号、およびホスト特権レベルレジスタ２０５ａに保持された特権レベルに対応して、例外生成回路２２３が特権命令例外を発生させるか否かを指定するための情報が格納されている。例外許可レジスタ２０７は特定の特権命令によって設定可能であり、実行制御部２２４から更新される。
【００２４】
図３に特権レジスタ制御回路２２２の構成を示す。特権レジスタ制御回路２２２は、実行制御部２２４からＣＭＤ３０１、アクセス種別３０２、対象レジスタ番号３０３、ＷｒｉｔｅＤＴ３０５を受信し、例外信号３０４およびＲｅａｄＤＴ３０５を送信する。
【００２５】
ＣＭＤ３０１は実行制御部２２４からホスト特権レジスタセット２０８ａ、もしくはゲスト特権レジスタセット２０８ｂへのアクセスが要求されたことを示すコマンド信号である。アクセス種別３０２はＣＭＤ３０１が有効のときのみ意味を持つ信号で、該信号の値が０’の場合、該アクセス要求は参照要求を示し、該信号の値が１’の場合、更新要求を示す。本実施例では特権レジスタに対するアクセスの種類として参照と更新の２通りを取り上げたが、必ずしもこれに限定されるものではない。対象レジスタ番号３０３は、ＣＭＤ３０１によるアクセス要求の対象レジスタを番号で指定する信号である。
【００２６】
例外生成回路２２３は例外許可レジスタ２０７から受信したレジスタ値と、アクセス種別３０２、対象レジスタ番号３０３、およびホスト特権レベル３１１から、ＣＭＤ３０１によるアクセスに対して特権命令例外を起こすか否かを判断する。
【００２７】
図４に例外許可レジスタ２０７のフォーマットを示す。本レジスタは８ｘｎのビットマップレジスタとして構成されている。例外生成回路２２３は実行制御部２２４からＣＭＤ３０１によって処理要求を受信した際に、同じく実行制御部２２４から受信するアクセス種別３０２、対象レジスタ番号３０３、およびホスト特権レジスタセット２０８ａ中のホスト特権レベルレジスタ２０５ａから受信したホスト特権レベル３１１とによって指定される、例外許可レジスタ２０７の対応するビットを参照する。
【００２８】
該ビットが１の場合、例外生成回路２３３は例外信号３０４をアサート（有効に）して例外を発生させるとともに、ＷＥ３１２をディアサート（無効に）する。該ビットが０の場合、例外信号３０４をディアサートするとともに、該アクセスが更新要求であった場合のみＷＥ３１２をアサートする。
【００２９】
ＣＭＤ３０１によるアクセス要求の対象のレジスタセットはレジスタセット指定子２０６によって指定される。アクセス種別３０２が１’すなわち更新要求の場合でレジスタセット指定子２０６が０’のときのみ対ホスト特権レジスタセットＷＥ３１３ａが有効になり、ＷｒｉｔｅＤＴ３０５で指定されるデータが対象レジスタ番号３０３によって指定されるレジスタへ書き込まれる。またアクセス種別３０２が１’すなわち更新要求の場合でレジスタセット指定子２０６が１’のとき対ゲスト特権レジスタセットＷＥ３１３ｂが有効になり、ＷｒｉｔｅＤＴ３０５で指定されるデータが対象レジスタ番号３０３によって指定されるレジスタへ書き込まれる。
【００３０】
一方アクセス種別が３０２０’、すなわち参照要求の場合、対象レジスタ番号３０３によって指定されたレジスタのデータがホスト特権レジスタＲｅａｄ  ＤＴ３１４ａ、およびゲスト特権レジスタＲｅａｄＤＴ３１４ｂのそれぞれに出力され、上記のいずれかがレジスタセット指定子２０６によって選択されＲｅａｄＤＴ３０５に出力される。
【００３１】
図５に、前述のゲスト命令コードのうちオペレーティングシステムに相当する命令コードから、特権レベルレジスタを参照する命令が実行された場合の動作を、フローチャートで示す。
【００３２】
ステップ５０１において、実行制御部２２４が特権レジスタ制御回路２２２に特権レベルレジスタの参照を要求する。このときＣＭＤ３０１がアサートされ、アクセス種別３０２は０’（参照）であり、対象レジスタ番号３０３は０’を示す。
【００３３】
ステップ５０２において、例外生成回路２２３は例外許可レジスタ２０７を参照し、例外信号３０４のアサート／ディアサートを決定する。このとき、ゲスト命令コードのうちオペレーティングシステムに相当する命令コードが動作していることから、ホスト特権レベル３１１は１’となっている。例外許可レジスタ２０７の対応するビットは０’であるため例外は発生せず、例外信号３０４はディアサートされる。
【００３４】
ステップ５０３において、特権レジスタ制御回路２２２はレジスタセット指定子２０６の設定に従って、ＲｅａｄＤＴ３０５へのデータ出力を実施する。ゲスト命令が実行されているため、レジスタセット指定子２０６には１’が設定されており、ＲｅａｄＤＴ３０５へはゲスト特権レジスタＲｅａｄＤＴ３１４ｂ（＝  ２０５ｂゲスト特権レベルレジスタの値）が出力される。
【００３５】
上記のように特権命令例外を発生させずに特権レジスタを参照することが可能であるため、ホストによるエミュレーションの頻度を低減させることが可能である。
【００３６】
図６に前述のゲスト命令コードのうちオペレーティングシステムに相当する命令コードから、特権レベルレジスタを更新する命令が実行された場合の動作を、フローチャートで示す。
【００３７】
ステップ６０１において、実行制御部２２４が特権レジスタ制御回路２２２に特権レベルレジスタへの更新を要求する。このときＣＭＤ３０１がアサートされ、アクセス種別３０２は１’（更新）であり、対象レジスタ番号３０３は０’を示す。
【００３８】
ステップ６０２において、例外生成回路２２３は例外許可レジスタ２０７を参照し、例外信号３０４のアサート／ディアサートを決定する。このとき、ゲスト命令コードのうちオペレーティングシステムに相当する命令コードが動作していることから、ホスト特権レベル３１１は１’となっている。例外許可レジスタ２０７の対応するビットは１’であるため例外が発生し、例外信号３０４がアサートされる。
【００３９】
ステップ６０３において、実行制御部２２４は以下の処理を実施し、ゲスト命令コードからホスト命令コードへ処理を移行させる。まず所定のレジスタもしくはメモリに必要な情報、例えばゲスト命令コードにおいて例外を発生させた命令のアドレスなどを退避する。次にレジスタセット指定子２０６を１’から０’に変更する。次にホスト特権レベルレジスタ２０５ａを１’から０’に変更する。最後に所定のホスト例外ハンドラのアドレスに分岐する。本ハンドラのアドレスはホスト特権レジスタセット２０８ａ中の特定の特権レジスタに記録されていてもよいし、メモリ上に保持されていても構わない。
【００４０】
ステップ６０４において、ホストの例外ハンドラはユーザレジスタ２０３のうち、例外処理に必要な分のユーザレジスタ２０３の内容をメモリに退避する。
【００４１】
ステップ６０５において、ホストの例外ハンドラは、ステップ６０３の処理で退避された情報を元に、例外が発生した原因を特定する。この例では、ホストはゲストのオペレーティングシステムに相当するコードが特権レベルレジスタに対して更新を行う命令を発行したことを特定する。
【００４２】
ステップ６０６において、ホストの例外ハンドラはステップ６０３の処理で退避された情報を元に、ゲストのオペレーティングシステムが特権レベルレジスタへ設定しようとした値７０１を特定する。この７０１の値は、ステップ６０３の処理で退避された例外を発生させた命令のアドレスを元に、メモリからゲスト命令のコードを取得し逆アセンブルすることによって得られる。ホストの例外ハンドラは７０１の値を元に、例外処理終了後にホスト特権レベルレジスタ２０５ａ、およびゲスト特権レベルレジスタ２０５ｂへ設定されるべき値を特定し、ステップ６０７においてユーザレジスタ２０３に保存する。上記の設定値の一覧を図７に示す。
【００４３】
図７では、ゲスト命令が設定しようとした値７０１が０’の場合、ホスト特権レベルレジスタ２０５ａへ設定すべき値７０２は１’であり、ゲスト命令が設定しようとした値７０１が０’以外の場合、ホスト特権レベルレジスタ２０５ａへ設定すべき値７０２は３’であることを示している。一方、ゲスト特権レベルレジスタ２０５ｂへ設定すべき値７０３は、７０１のゲスト命令が設定しようとした値と同一の値である。
【００４４】
ステップ６０８において、ホストの例外ハンドラはレジスタセット指定子２０６を１’に設定する。以下、ホストの例外ハンドラはゲスト特権レベルレジスタ２０５ｂへアクセスできる。
【００４５】
ステップ６０９において、ホストの例外ハンドラはステップ６０７の処理でユーザレジスタ２０３に保存したゲスト特権レベルレジスタ２０５ｂへ設定されるべき値７０３を、ゲスト特権レベルレジスタ２０５ｂに設定する。このとき、ホスト特権レベルレジスタ２０５ａは０’に設定されているため、ゲスト命令の実行中と違い例外は発生せず、ゲスト特権レベルレジスタ２０５ｂが更新される。
【００４６】
ステップ６１０において、ホストの例外ハンドラはレジスタセット指定子２０６を０’に設定する。以下、ホストの例外ハンドラはホスト特権レベルレジスタ２０５ａへアクセスできる。
【００４７】
ステップ６１１において、ホストの例外ハンドラは、ホスト特権レベルレジスタ２０５ａへ設定すべき値７０２を格納する。７０２の値はホスト特権レジスタセット２０８ａ中の特定の特権レジスタに記録されていてもよいし、メモリ上に保持されていても構わない。
【００４８】
ステップ６１２において、ホストの例外ハンドラは、ステップ６０４の処理でメモリに退避したユーザレジスタ２０３の値を回復する。
【００４９】
ステップ６１３において、ホストの例外ハンドラは例外処理終了命令を発行する。
【００５０】
ステップ６１４において、実行制御部２２４は該例外処理終了命令をデコードした後、以下の処理を実施してホスト命令コードからゲスト命令コードへ処理を移行させる。まずステップ６１１において格納された７０２の値をホスト特権レベルレジスタ２０５ａへ設定する。次にゲスト命令コードで特権命令例外が発生した命令の次の命令に処理を移行させ、本例外処理を完了させる。
【００５１】
以上の処理によって、ゲストがゲスト特権レベルレジスタ２０５ｂを参照する命令を発行した場合、図５に説明した処理フローによって正しくゲストが設定した特権レベルが参照できる一方、ゲストがゲスト特権レベルレジスタ２０５ｂを更新する命令を発行した場合、ステップ６０２の処理によって該命令に対して特権命令例外を発生させることができ、複数のゲストオペレーティングシステムの動作が保証できる。
【００５２】
図８に、例外許可レジスタ２０７の設定手順をフローチャートで示す。情報処理装置の電源投入後、ステップ８０１においてＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）が実行され、ハードウェアに故障がないかをチェックする。
【００５３】
ステップ８０２において、ＢＩＯＳ（Ｂａｓｉｃ  Ｉ／Ｏ  Ｓｙｓｔｅｍ）のコードが実行される。これにより、ＰＣＩデバイスのスキャンや初期化など、オペレーティングシステムもしくはホストの起動に必要な処理が実行される。
【００５４】
ステップ８０３において、該計算機を論理分割して運用するか否かを決定する。
決定する方法はＶＧＡ（Ｖｉｄｅｏ  ｇｒａｐｈｉｃｓ  ａｒｒａｙ）やシリアル端末などのコンソール画面に特定の入力フォームを表示しユーザに選択させる方法や、あらかじめフロッピーディスク（登録商標）やハードディスクなどの不揮発な記憶装置に記録した設定に従うなどの方法が考えられる。論理分割を行わない場合は所定のＯＳをロードする処理を開始する。
【００５５】
論理分割を行う場合は、ステップ８０４においてホストローダを実行する。このときホストはフロッピーディスクやハードディスクなどの不揮発な記憶装置から読み出され、メモリ上に展開され、ホスト本体の処理が開始される。
【００５６】
ステップ８０５において、ホストはプロセッサＩＤを確認し、必要に応じて例外許可レジスタ２０７の値を再設定する。その後、ホストは論理区画の設定処理を開始する。ステップ８０１から８０４、および論理分割を行わない場合には例外許可レジスタ２０７にはデフォルト値（初期値）がプリセットされている。すなわち、特権レベルが０の場合には参照／更新とも全て０’（例外発生せず）がプリセットされており、特権レベルが０以外の場合には参照／更新ともに全て１’（例外発生する）がプリセットされている。
【００５７】
【発明の効果】
以上の説明のとおり本発明によれば、ホストが各ゲストの特権命令をエミュレーションする頻度を低減し、ゲストの命令実行効率を向上させることができる。
【図面の簡単な説明】
【図１】本発明の一実施例による情報処理装置の構成図である。
【図２】本発明の一実施例による情報処理装置に搭載されるＣＰＵの構成図である。
【図３】ＣＰＵの特権レジスタ制御回路の構成図である。
【図４】ＣＰＵの例外許可レジスタのフォーマットを示す図である。
【図５】ゲストオペレーティングシステムからの特権レベルレジスタ参照処理を示すフローチャートである。
【図６】ゲストオペレーティングシステムからの特権レベルレジスタ更新処理を示すフローチャートである。
【図７】ＣＰＵの特権レベルレジスタへの設定値を示す図である。
【図８】ＣＰＵの例外許可レジスタの設定手順を示すフローチャートである。
【符号の説明】
１０１ａ…ＣＰＵ＃０、１０１ｂ…  ＣＰＵ＃１、１０２…ＣＰＵバス、１０３…チップセット、
１０４…メモリ、１０５ａ…Ｉ／Ｏバス＃０、１０５ｂ…Ｉ／Ｏバス＃１、
１０６…ノード間インタコネクト、２０１…命令キャッシュ、
２０２…データキャッシュ、２０３…ユーザレジスタ、２０４…ＣＰＵバスＩ／Ｆ、
２０５ａ…ホスト特権レベルレジスタ、２０５ｂ…ゲスト特権レベルレジスタ、
２０６…レジスタセット指定子、２０７…例外許可レジスタ、
２０８ａ…ホスト特権レジスタセット、２０８ｂ…ゲスト特権レジスタセット、
２２１…演算器、２２２…特権レジスタ制御回路、２２３…例外生成回路、
２２４…実行制御部、３０１…ＣＭＤ、３０２…アクセス種別、
３０３…対象レジスタ番号、３０４…例外信号、３０５…Ｗｒｉｔｅ  ＤＴ、
３１１…ホスト特権レベル、３１２…ＷＥ、
３１３ａ…対ホスト特権レジスタセットＷＥ、
３１３ｂ…対ゲスト特権レジスタセットＷＥ、
３１４ａ…ホスト特権レジスタＲｅａｄ  ＤＴ、
３１４ｂ…ゲスト特権レジスタＲｅａｄ  ＤＴ。
【図１】
2005056017.tif 000003
【図２】
2005056017.tif 000004
【図３】
2005056017.tif 000005
【図４】
2005056017.tif 000006
【図５】
2005056017.tif 000007
【図６】
2005056017.tif 000008
【図７】
2005056017.tif 000009
【図８】
2005056017.tif 000010