(57)【特許請求の範囲】
【請求項１】
少なくとも２つ以上のハードウェア・スレッドを用いて、ハイパーバイザと少なくとも２つ以上のＯＳとが動作可能な仮想化システムにおけるレジスタ・マッピング方法であって、
複数のマッピング用レジスタを含むレジスタ・プールを準備するステップと、
前記レジスタ・プール中の各マッピング用レジスタについて、レジスタＩＤと、前記仮想化システムの動作状態を表す複数のパラメータの各々とに関する情報を設定した、マッピング・テーブルを準備するステップと、
ハードウェア・スレッドによるレジスタ・アクセス要求があった際における、当該アクセス対象のレジスタＩＤと、動作中の前記動作状態を表す複数のパラメータの各々に関する情報を取得するステップと、
取得した前記レジスタＩＤおよび前記複数のパラメータの各々に関する情報が、前記マッピング・テーブル中の前記レジスタＩＤおよび前記複数のパラメータの各々についての情報に一致する前記マッピング用レジスタを、前記レジスタ・アクセス要求に対応してアクセスするレジスタとして設定するステップと、
を含み、
前記マッピング・テーブル中の前記動作状態を表す複数のパラメータは、前記ハイパーバイザの動作か前記ＯＳの動作かを示す動作ＩＤと、ＯＳのＩＤと、前記ハードウェア・スレッドのＩＤとを含む、
レジスタ・マッピング方法。
【請求項２】
前記マッピング・テーブルは、前記各マッピング用レジスタについて、前記動作ＩＤ、前記ＯＳのＩＤ、および前記ハードウェア・スレッドのＩＤの中のどのパラメータの情報を前記一致するか否かのチェックに利用するかを指定するチェック・マスクをさらに含む、請求項１のレジスタ・マッピング方法。
【請求項３】
前記レジスタ・アクセス要求に対応してアクセスするレジスタとして設定するステップは、前記マッピング・テーブル中の前記チェック・マスクにより指定された前記パラメータの情報についてのみ一致するか否かを判断することを含む、請求項２のレジスタ・マッピング方法。
【請求項４】
前記取得したレジスタＩＤの情報が前記マッピング・テーブル中の前記レジスタＩＤの情報に一致しない場合、前記レジスタ・プール中の前記マッピング用レジスタ以外のレジスタを前記レジスタ・アクセス要求に対応してアクセスするレジスタとして設定する、請求項１〜３のいずれか１項のレジスタ・マッピング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタ・マッピングに関し、より具体的には、複数のハードウェア・スレッドを用いて、ハイパーバイザと複数のＯＳとが動作可能な仮想化システムにおけるレジスタ・マッピング方法に関する。
【背景技術】
【０００２】
現在多くのプロセッサでは、１つのシステムで複数のオペレーティングシステム（ＯＳ）を動かすための仮想化をサポートするハードウェア機能が搭載されており、レジスタ・マッピングもその一つの機能である。レジスタ・マッピングとは、複数のＯＳを管理するためのソフトウェア（ハイパーバイザと呼ばれる）と複数のＯＳが効率よくレジスタにアクセスするための機能である。仮想化システム上で動くＯＳは一般にゲストＯＳと呼ばれることから、ハイパーバイザ上で動くＯＳもゲストＯＳと呼ばれることもある。以下の説明では、このゲストＯＳの意味も含めて単にＯＳと呼ぶことにする。【０００３】
このレジスタ・マッピングがサポートされていないプロセッサ上で仮想化を行う場合、ハイパーバイザとＯＳとで１つのレジスタを共有するため、ＯＳが動作している状態からハイパーバイザが動作している状態に遷移する場合、レジスタの内容を一時メモリ上に退避することが必要となり、これがパフォーマンスの大きな劣化となる。【０００４】
これを解決するために、従来のレジスタ・マッピング技術では、ハイパーバイザ動作時のレジスタとＯＳ動作時のレジスタを別々に用意し、現在の動作モードがハイパーバイザかＯＳかをハードウェアで自動的に判断することにより、同一のレジスタ命令でのレジスタの読み書きの場所をスイッチしている。【０００５】
しかし、この従来のレジスタ・マッピング技術では、レジスタ・マッピングをサポートしているレジスタが限定されており、それらがサポートされていないレジスタに関しては動作切り替えに伴うレジスタの内容のメモリ退避が依然として必要となってしまう。【０００６】
また、現在仮想化のより高度な機能として、１つのプロセッサ・コアを複数のＯＳで時分割もしくは他のポリシーで共有して使用する共有プロセッサ機能が存在する。この共有プロセッサ機能を使用した場合、ハイパーバイザとＯＳの動作切り替えのみならず、複数のＯＳ間でも動作の切り替えが発生する。【０００７】
しかし、従来の技術では、ＯＳ用に割り当てられたレジスタは１つであるため、共有プロセッサ機能を使用した場合は、ＯＳ間の遷移の際にレジスタの内容の一時退避の問題が生じ、パフォーマンスの劣化が発生してしまう。【０００８】
さらに、複数のハードウェア・スレッドを備えるマルチスレッディング機構では、１つのプロセッサ・コアで複数のハードウェア・スレッドが動作するため、各スレッドがアクセスするレジスタも種別によっては、共有されることによりパフォーマンスの劣化を生じるものがある。この場合、すべてのレジスタをスレッド毎に用意することも可能であるが、レジスタ個数が膨大となってしまい、コストや消費電力の面での大きなデメリットとなる。【０００９】
公開特許公報の特開2009-151650は、実際の計算機に同時に複数のＯＳを動作させ、複数の仮想化された計算機とする計算機仮想化装置を開示する。この計算機仮想化装置は、仮想化された計算機上のメモリ空間の識別子（ゲストＲＩＤ）と、実際の計算機で用いられる識別子（物理ＲＩＤ）の対応付けを管理するマッピング・テーブルと、ゲストＲＩＤを代入するエミュレーション処理を契機に、マッピング・テーブルを参照してゲストＲＩＤを物理ＲＩＤに変換するＲＩＤ変換部と、マッピング・テーブルにゲストＲＩＤと物理ＲＩＤの対応付けが存在しない場合、新規な対応付けを作成し、マッピング・テーブルに追加するＲＩＤテーブル更新部と、を備える。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開2009-151650号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、上述した従来のレジスタ・マッピング技術における問題を解決あるいは軽減すること、すなわち複数のハードウェア・スレッドを用いて、ハイパーバイザと複数のＯＳとが動作可能な仮想化システムにおいてレジスタ・アクセスのパフォーマンスを向上させることが可能なレジスタ・マッピング方法を提供することである。
【課題を解決するための手段】
【００１２】
本発明は、少なくとも２つ以上のハードウェア・スレッドを用いて、ハイパーバイザと少なくとも２つ以上のＯＳとが動作可能な仮想化システムにおけるレジスタ・マッピング方法を提供する。そのレジスタ・マッピング方法は、（ａ）複数のマッピング用レジスタを含むレジスタ・プールを準備するステップと、（ｂ）レジスタ・プール中の各マッピング用レジスタについて、レジスタＩＤと、仮想化システムの動作状態を表す複数のパラメータの各々とに関する情報を設定した、マッピング・テーブルを準備するステップと、（ｃ）ハードウェア・スレッドによるレジスタ・アクセス要求があった際における、当該アクセス対象のレジスタＩＤと、動作中の動作状態を表す複数のパラメータの各々に関する情報を取得するステップと、（ｄ）取得したレジスタＩＤおよび複数のパラメータの各々に関する情報が、マッピング・テーブル中のレジスタＩＤおよび複数のパラメータの各々についての情報に一致するマッピング用レジスタを、レジスタ・アクセス要求に対応してアクセスするレジスタとして設定するステップと、を含む。【００１３】
本発明によれば、マルチスレッディング機構を備える仮想化システムにおいて、マッピング・テーブルを利用することにより、レジスタ・アクセス要求に対して迅速なレジスタ・アクセスを可能にする。【００１４】
本発明の一態様では、マッピング・テーブル中の動作状態を表す複数のパラメータは、ハイパーバイザの動作かＯＳの動作かを示す動作ＩＤと、ＯＳのＩＤと、ハードウェア・スレッドのＩＤと、を含む。【００１５】
本発明の一態様によれば、ハイパーバイザの動作かＯＳの動作かにより、あるいはハードウェア・スレッドに応じて、ＯＳ毎に対応付けられたレジスタへの迅速なアクセスを可能にする。【００１６】
本発明の一態様では、マッピング・テーブルは、各マッピング用レジスタについて、動作ＩＤ、ＯＳのＩＤ、およびハードウェア・スレッドのＩＤの中のどのパラメータの情報を一致するか否かのチェックに利用するかを指定するチェック・マスクをさらに含む。【００１７】
本発明の一態様によれば、動作状態、ＯＳの種別、およびハードウェア・スレッドの種別に応じて、マッピング・テーブル中のチェック項目を変更することにより、より迅速かつ柔軟なレジスタ・アクセスが可能となる。【００１８】
本発明の一態様では、レジスタ・アクセス要求に対応してアクセスするレジスタとして設定するステップ（ｄ）は、マッピング・テーブル中のチェック・マスクにより指定されたパラメータの情報についてのみ一致するか否かを判断することを含む。【００１９】
本発明の一態様によれば、マッピング・テーブルを用いたアクセスするレジスタの設定のための判断処理をより迅速におこなうことが可能となる。【００２０】
本発明の一態様では、取得したレジスタＩＤの情報がマッピング・テーブル中のレジスタＩＤの情報に一致しない場合、レジスタ・プール中のマッピング用レジスタ以外のレジスタをレジスタ・アクセス要求に対応してアクセスするレジスタとして設定する。【００２１】
本発明の一態様によれば、レジスタＩＤの情報が一致しないことのみを判断することにより、アクセスするレジスタを早期に設定することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】本発明のレジスタ・マッピング方法を実施するシステムの構成例を示す図である。
【図２】図１のＣＰＵの構成例を示すブロック図である。
【図３】本発明のレジスタ・プールを用いたレジスタ・マッピングを説明するための図である。
【図４】本発明のレジスタ・マッピング方法の処理フローの例を示す図である。
【図５】本発明のマッピング・テーブルの検索の処理フローの例を示す図である。
【図６】本発明のマッピング・テーブルの構成例を示す図である。
【発明を実施するための形態】
【００２３】
図面を参照しながら本発明の実施の形態を説明する。図１は、本発明のレジスタ・マッピング方法を実施するシステムの構成例を示す図である。図１のシステム５０は、いわゆるコンピュータ・システムであって、バス１４を介して相互に接続された演算処理装置（ＣＰＵ）１０、記憶手段１２、各種Ｉ／Ｆ１６を含む。各種Ｉ／Ｆ１６は、入力Ｉ／Ｆ、出力Ｉ／Ｆ、外部記憶Ｉ／Ｆ、外部通信Ｉ／Ｆ等を含む総称として用いられ、各Ｉ／Ｆが、それぞれ対応するキーボード、マウス、テンキー等の入力手段１８、ＣＲＴ、ＬＣＤ等の表示手段２０、通信手段２２、ＵＳＢあるいはＬＡＮ接続の半導体メモリＨＤＤ、テープドライブ等の外部記憶手段２４に接続する。
【００２４】
演算処理装置１０は、所定のソフトウェアを実行することにより、記憶手段１２に保管されるデータや通信手段２２を介して送受信するデータなどの管理、制御あるいは入力手段１８により入力された情報や表示手段２０に表示する情報などの制御をおこなう。記憶手段１２は、ＲＡＭ、ＲＯＭ等の半導体メモリ、ＨＤＤ等を含む。記憶手段１２は、保管される対象（データ）に応じて複数の記憶部（保管部）を設定することができる。その際、物理的に２つの記憶手段を設けることができ、あるいは１つの記憶手段において２つの記憶域を設定することもできる。
【００２５】
図２は、図１の演算処理装置（ＣＰＵ）１０の構成例を示すブロック図である。図２の例は、パワー・アーキテクチャ（Power Architecture）をベースとしたマルチスレディング機構を用いる構成例である。図２のＣＰＵ構成は、ハイパーバイザと少なくとも２つ以上のＯＳとが動作可能な仮想化システムとして動作可能である。図２では、ＣＰＵ１０は２つのコア１（１０２）、コア２（１０４）を備える。なお、コア数は２に限定されない。各コア１、２は、複数のハードウェア・スレッド（以下、単に「スレッド」と略す）１０６、１０８、１１０、１１２を含む。スレッドは、ハードウェアとして認識可能な演算処理単位を意味する。スレッドの数は任意に設定可能である。
【００２６】
各コア１、２は、少なくとも１つのレジスタ・プール１１４、１１６を含む。各レジスタ・プール１１４、１１６は、マッピング可能な複数の汎用レジスタ１１８、１２０、１２２、１２４の集合を意味する。汎用レジスタの数は任意に設定可能である。
【００２７】
図３は、本発明のレジスタ・プールを用いたレジスタ・マッピングを説明するための図である。レジスタ・プール１１４（１１６）は、複数のマッピング可能な汎用レジスタＵＲＥＧ０〜３を含む。各汎用レジスタＵＲＥＧ０〜３は、図の破線で示されるように、ＯＳ用のレジスタを意味するＧＳＳＲ０、ＧＳＲＰＧ０〜３のそれぞれと対応付けられている。さらに、各汎用レジスタＵＲＥＧ０〜３は、図３の左側の５つのブロックＳＰＲ０、ＳＰＲＧ０〜３で例示されるハイパーバイザ動作モードでアクセス対象となるレジスタの各々とも関連付けられている。こうした関連付けにより、ハイパーバイザの各動作モードにおいて、予め各ＯＳ用に対応付けられた汎用レジスタＵＲＥＧ０〜３のいずれかを対応するアクセス可能なマッピング・レジスタとして動作させることができる。なお、図３において「マッピングなし」と示されたＳＰＲＧ１にアクセスする場合は、マッピング・レジスタにアクセスせず、かつ動作モードにかかわらず、ＳＰＲＧ１にアクセスすることになる。
【００２８】
次に、図４〜図６を参照しながら、本発明のレジスタ・マッピング方法の実施形態について説明する。図４は、本発明のレジスタ・マッピング方法の処理フローの例を示す図である。図５は、本発明のマッピング・テーブルの検索の処理フローの例を示す図である。図６は、本発明のマッピング・テーブルの構成例を示す図である。
【００２９】
図４のステップＳ１において、レジスタ・プールが準備される。レジスタ・プールの準備とは、既に図２、図３を用いて説明したレジスタ・プール１１４、１１６を利用（アクセス）可能な状態にすることを意味する。ステップＳ２において、マッピング・テーブルを準備する。マッピング・テーブルの準備とは、記憶手段１２（図１）等に格納されているマッピング・テーブルを呼び出して利用可能な状態にすることを意味する。
【００３０】
図６を参照しながらマッピング・テーブルについて説明する。図６は、パワー・アーキテクチャ（Power Architecture）のPower ISAに準拠したレジスタ群にマッピング・テーブルを適用した場合の構成例である。マッピング・テーブルは、図３においても登場するレジスタ・プール１１４、１１６内のマッピング・レジスタＵＲＥＧ０〜３の各々について、パラメータとして、レジスタ番号（Register ID）、ハイパーバイザ動作かＯＳ動作かの判断情報（GS）、ＯＳのＩＤ（LPID）、およびスレッドのＩＤ（TID）の値（ビット情報）、さらにGS、LPID、TIDのどれをチェックするかを規定するマスク情報（Check Mask）を含む。
【００３１】
ＧＳには、ハイパーバイザ動作を示す値０またはＯＳ動作を示す値１が設定される。ＬＰＩＤとＴＩＤには、それぞれ予め割り振られたＯＳのＩＤ（番号：1、2、3・・・・）とスレッドのＩＤ（番号：1、2、3・・・・）が設定される。例えば、マッピング・レジスタＵＲＥＧ１は、レジスタ番号は１０であり、ＯＳ動作（GS=1）であり、ＯＳのＩＤは３（LPID=3）であり、この２つのパラメータをチェックする（Check Mask=GS、LPID）ことが規定されている。なお、図６のマッピング・テーブルは全体の一部であり、さらに含まれるパラメータは上述した項目に限定されず、他のパラメータを追加したり、あるいは他のパラメータに変更することも可能である。
【００３２】
図４に戻って、ステップＳ３において、あるレジスタへのアクセス要求がソフトウェアにより発行される。このソフトウェアにはＯＳ自身も含まれる。ステップＳ４において、あるレジスタへのアクセス要求に伴うレジスタＩＤ（番号）と各パラメータ値を取得する。各パラメータ値とは、例えば上述した図６に例示されるマッピング・テーブル中のパワー・アーキテクチャ（Power Architecture）のPower ISAに準拠したレジスタについてのGS、LPID、TIDである。
【００３３】
ここで、GS、LPID、およびTIDは、それぞれステップＳ３のアクセス要求が発行された時点で動作している、ハイパーバイザ動作またはＯＳ動作、ＯＳ、およびスレッドについての上述した各値である。パワー・アーキテクチャ（Power Architecture）のPower ISAにおいては、レジスタへの書き込み／読み込み命令（mtspr／mfspr）に対して、レジスタ上のビット（この場合MSR［GS］）を参照することにより、GSの値（０または１）を取得することができ、ＯＳのＩＤを示すLPIDはLPIDRレジスタから取得でき、さらにスレッドのＩＤを示すTIDはTIRレジスタよりそれぞれ取得することができる。
【００３４】
ステップＳ５において、マッピング・テーブルの検索が行われる。図５を参照して、マッピング・テーブルの検索について説明する。ステップＳ５１において、取得したレジスタＩＤとエントリのレジスタＩＤが一致しているか判定する。エントリのレジスタＩＤとは、マッピング・テーブル中の各レジスタのＩＤ（例えば、図６のRegister ID）を意味する。この判定がＹｅｓの場合、次のステップＳ５２において、マッピング・テーブル中のその一致したレジスタＩＤを持つエントリ（レジスタ情報）を参照して、マスクビットのたったパラメータ値と取得したパラメータ値を個々に比較する。マスクビットのたったパラメータ値とは、図６のマスク情報（Check Mask）で設定されたチェックすべきパラメータ値（GS、LPID、またはTIDのいずれかの値）が該当する。
【００３５】
ステップＳ５３において、その一致したレジスタＩＤを持つエントリにおいて、全てのパラメータ値が一致するか否かを判定する。例えば、図６のレジスタＵＲＥＧ１がその致したレジスタＩＤを持つエントリに該当する場合、マスク情報（Check Mask）で設定されたＧＳとＬＰＩＤの値がいずれも一致するか否かが判定される。この判定がＹｅｓの場合、ステップＳ５４において、その全てのパラメータ値が一致したレジスタが一致マッピング・レジスタとして特定（選択）される。次のステップＳ５５において、マッピング・テーブル中の最後のエントリ（レジスタ）か否かを判定する。ステップＳ５１およびＳ５３において、判定結果がＮｏの場合も、ステップＳ５５に進み、同様な判定が行われる。この判定がＮｏの場合、ステップＳ５１に戻り、ステップＳ５１〜Ｓ５４までが繰り返される。ステップＳ５５の判定がＹｅｓの場合、マッピング・テーブルの検索を終了して戻る。
【００３６】
図４に戻って、ステップＳ６において、一致マッピング・レジスタがあるか否かを判定する。一致マッピング・レジスタは、図５のステップＳ５４で特定（選択）された一致マッピング・レジスタである。この判定がＹｅｓの場合、その一致マッピング・レジスタが、ステップＳ３のレジスタへのアクセス要求に応じてアクセスされるレジスタとしてアクセスされる。ステップＳ６の判定がＮｏの場合、レジスタ・プール１１４、１１６内のマッピング・レジスタではない一般のレジスタが、ステップＳ３のレジスタへのアクセス要求に応じてアクセスされるレジスタとしてアクセスされる。
【００３７】
最後に、本発明のレジスタ・マッピング方法の実施例として、パワー・アーキテクチャ（Power Architecture）におけるESR（Exception Syndrome Register）レジスタ処理について説明する。ESRレジスタは、システムの例外処理を行う際にその例外処理の詳細情報を保存しておくレジスタである。システムの例外処理には、（ｉ）ハイパーバイザが処理すべきシステムに致命的な例外処理と（ｉｉ）ＯＳが処理すべき例外処理とある。従来のシステムでは、これらの処理の詳細情報は、ESRレジスタ にはハイパーバイザ用の例外処理詳細情報が、GESRレジスタにはＯＳ用の例外処理詳細情報がそれぞれ保存される。この場合、１つのＯＳのみが動作する場合には、GESRレジスタに保存されている情報の退避は不要となるが、複数のＯＳが動作する場合、GESRレジスタの情報を一旦メモリに退避して切り替え処理が必要となる。これらの切り替え処理は、各ＯＳの仲介役となるハイパーバイザが行わねばならず、切り替え処理の度にハイパーバイザへの処理依頼が必要となってしまう。
【００３８】
本発明では複数のGESRレジスタを確保することが可能なため、切り替え処理に伴うハイパーバイザへの処理依頼も不要となり、システムとして効率的な仮想化が実現可能となる。例えば、ＯＳが自身に対して例外処理を発生させるためにESRにアクセスした場合の処理を挙げると、以下のような手順となる。
【００３９】
（ａ）ＯＳが詳細情報をESRに保存するためのＣＰＵ命令 mtsprを発行する。
（ｂ）ＣＰＵ内で、GS、LPID、TIDの情報（値）が追加され、レジスタSave/Restore処理部に処理を依頼する。なお、GESRレジスタが１つしかない従来のシステムではこの時点で、現在のGESRの内容を退避する必要があるため、ハイパーバイザに処理が移り、ハイパーバイザにより現在のGESRをメモリに退避する処理が行われる。
（ｃ）本発明ではハイパーバイザに処理は移らず、追加されたGS、LPID、TIDの情報を元にマッピング・テーブルの参照が行われ、特定されたマッピング・レジスタまたは通常のレジスタにアクセスして内容の保存が行われた後、ＣＰＵ命令mtsprを発行したＯＳに処理が戻される。
【００４０】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。さらに、本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００４１】
１０  演算処理装置（ＣＰＵ）
１２  記憶手段
１４  バス
１６  各種Ｉ／Ｏ
１８  入力手段
２０  表示手段
２２  通信手段
２４  外部記憶装置
５０  システム
１０２、１０４  コア
１０６、１０８、１１０、１１２  ハードウェア・スレッド
１１４、１１６  レジスタ・プール
１１８、１２０、１２２、１２４  マッピング（用）・レジスタ
【図１】
0005852677.tif 000002
【図２】
0005852677.tif 000003
【図３】
0005852677.tif 000004
【図４】
0005852677.tif 000005
【図５】
0005852677.tif 000006
【図６】
0005852677.tif 000007