(57)【要約】【課題】プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させる。【解決手段】ＨＶ保護領域の全てのアクセス先にアクセス可能なハイパーバイザを記憶する保護メモリと、ＨＶ保護領域のうち全てのアクセス先より狭い範囲となるアクセス先にアクセス可能なソフトウェアと、ハイパーバイザと、を動作させるプロセッサと、保護メモリとプロセッサとを接続する通信路と、プロセッサが通信路を介して保護メモリのハイパーバイザが格納されたエントリ部のアドレスに対するフェッチを検出する検出部と、当該フェッチを検出の有無に応じてアクセス先を制御する第１及び第２ＨＶ領域保護回路と、を備える。【選択図】        図１
2008176637.tif 000002
【特許請求の範囲】
【請求項１】
第１のアクセス範囲にアクセス可能な特権ソフトウェアを記憶する記憶部と、
前記第１のアクセス範囲よりも狭い範囲である第２のアクセス範囲にアクセス可能なソフトウェアと、前記特権ソフトウェアと、を動作させるプロセッサと、
前記記憶部と前記プロセッサとを接続し、前記特権ソフトウェアを前記プロセッサで実行するために必要なデータの通信を行う通信路と、
前記プロセッサが前記通信路を介して行う、前記記憶部の前記特権ソフトウェアが格納された格納アドレスに対するフェッチを、検出する検出手段と、
前記格納アドレスに対するフェッチの検出の有無に応じて、前記プロセッサのアクセス範囲を制御する制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記検出手段は、さらに前記格納アドレスとして前記ソフトウェアの動作が開始することを示す開始アドレスに対するフェッチを検出し、
前記制御手段は、前記開始アドレスに対するフェッチを検出した場合に、アクセスを許可するアクセス範囲を前記第２のアクセス範囲から前記第１のアクセス範囲に変更する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検出手段は、さらに前記プロセッサにおいて、前記ソフトウェアによる割り込みが禁止されていることを検出し、
前記制御手段は、前記格納アドレスに対するフェッチ及び前記ソフトウェアによる割り込みが禁止されていることを検出した場合に、前記第１のアクセス範囲に対するアクセスを許可する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、アクセスを許可するアクセス範囲に含まれている記憶アドレスに書き込みを許可する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記格納アドレスは、前記第1のアクセス範囲に含まれ、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記第1のアクセス範囲に対してアクセスを許可する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記検出手段は、さらに前記プロセッサからの書き込み命令を検出し、
前記制御手段は、前記書き込み命令で指し示されているアドレスがチェック用のアドレスであること、及び前記書き込み命令に含まれているデータが割り込み禁止を表す値であることを満たすか否かに応じて、前記プロセッサに対してアクセスを許可するアクセス範囲を制御すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記検出手段は、前記格納アドレスとしての前記プロセッサに対する割り込みを禁止する命令が記載されたアドレスに対するフェッチを検出すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記検出手段は、さらに前記格納アドレスに対してアクセスしないことが保証される特権ソフトウェア脱出命令を検出し、
前記制御手段は、前記特権ソフトウェア脱出命令を検出した場合に、アクセス範囲を前記第１のアクセス範囲から前記第２のアクセス範囲に変更すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記検出手段は、前記プロセッサからフェッチの要求がなされた要求アドレスが前記格納アドレスとは異なることを検出し、
前記制御手段は、前記要求アドレスが前記格納アドレスとは異なることを検出した場合に、アクセスを許可するアクセス範囲を前記第１のアクセス範囲から前記第２のアクセス範囲に変更すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記制御手段は、前記アクセス範囲に含まれている、データの格納に用いられるデータ記憶部内に確保されたアクセス可能な領域を変更する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記制御手段は、前記アクセス範囲に含まれている、アクセス可能なデバイスを変更する制御を行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項１２】
前記ソフトウェア毎に、データを格納するデータ記憶部が有する記憶領域に対してアクセス可能か否かを保持する制御情報に基づいて、前記データ記憶部へのアクセスを制御するメモリアクセス制御手段、をさらに備え、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記制御情報の書き込みを許可し、
前記プロセッサは、前記制御情報の書き込みが許可されている場合に、前記制御情報に対して書き込みを行うこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記ソフトウェア毎にデバイスに対してアクセス可能か否かを保持する制御情報に基づいて、デバイスに対するアクセスを制御するデバイスアクセス制御手段、をさらに備え、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記制御情報の書き込みを許可し、
前記プロセッサは、前記制御情報の書き込みが許可されている場合に、前記制御情報に対して書き込みを行うこと、
を特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のソフトウェアが搭載されている情報処理装置に関するものである。
【背景技術】
【０００２】
従来から、データベースシステムやミッションクリティカルな処理を実行するサーバマシンにおいては、その処理の重要性や内部で保持するデータの機密度などの要因から、信頼性やセキュリティが重要視されていた。しかし近年では、これら汎用計算機等に限らず、組込み機器等の様々な装置において信頼性やセキュリティを確保することが重要となっている。
【０００３】
組込み機器では、一つの機器内で複数の機能を同時に実行したり、新しい機能をダウンロードして機能を追加するなど、機能の複雑化が進んでいる。このような複数の機能を実行可能な機器の開発または運用では、単機能の機器と比較すると、新たな問題が発生している。
【０００４】
例えば、ある機能に不具合が含まれていた場合、それがごく一部の機能であったとしても機器全体が停止するという障害が発生するケースがある。また、ダウンロードして、機器に対して追加した機能が悪意のある不正なプログラムである場合、秘密を保持すべき情報、またはプログラムが外部に漏洩したり、破壊や改竄されるケースがある。このように、組み込み機器等においても信頼性及びセキュリティが問題となっている。
【０００５】
上記の問題を解決するには、各機能を実現するプログラムに割り当てられたリソースへのアクセスを制御する必要がある。例えば、あるプログラムに割り当てたリソースへの他のプログラムや機能からのアクセスを禁止したり、複数の機能やプログラムから共有されるリソースへのアクセスを排他制御して管理する方法等が挙げられる。さらに、アクセス制御機構や制御情報自体も自由に操作できないように保護する必要がある。
【０００６】
これらの保護を実現し、複数の機能を隔離して信頼性やセキュリティを高める手段として、計算機の仮想化技術が提案されている。この仮想化技術の実装には様々な形態が存在する。仮想化技術の例としては、ハードウェアとＯＳ（Operating  System）の間に仮想化層を設けて、当該仮想化層上に複数のＯＳ（ゲストＯＳ）を動作させる形態がある。この仮想化層は、一般にハイパーバイザ層と呼ばれている。このハイパーバイザ層は、メモリやデバイス及び割込み等のリソースを管理し、個々のゲストＯＳに対して割り当てたリソースで構成される仮想計算機を提供する。これにより複数のゲストＯＳが互いに干渉せず隔離された状態での実行が実現できる。このハイパーバイザ層の機能をソフトウェアで実現する場合、当該ソフトウェアはハイパーバイザと呼ばれている。
【０００７】
汎用計算機に使用されるプロセッサでは、プロセッサ自体に仮想化をサポートするハードウェア機構が用意されている。例としては、非特許文献１に示したＩｎｔｅｌ（登録商標）社が提唱する技術が存在する。この技術を実装したプロセッサでは、実行中のプログラムの権限を示す特権モードを多数用意し、特定の命令の実行時に、より上位の特権モードへ移行するように設定することが可能となる。これにより、ゲストＯＳから共有リソースへのアクセスをハードウェアで監視し、アクセス時により上位の特権モードを付与したソフトウェアでそのアクセス内容をチェックすることが可能になる。
【０００８】
他の例としては、Ａｄｖａｎｃｅｄ Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ社が提唱する技術（Ｐａｃｉｆｉｃａ）がある。当該技術（Ｐａｃｉｆｉｃａ）を実装したプロセッサでは、割込みをインターセプトする機構と、ソフトウェアから仮想割込みを発生させる機能とが用意されている。これにより、ハイパーバイザで割込みを一旦インターセプトした上で、その割込みを必要とするゲストＯＳへの割込み配送を管理することができる。また、ゲストＯＳによるアドレス変換テーブルへのアクセスを監視する機構が用意される。これにより、ゲストＯＳが自由にアドレス変換テーブルを書き換えて、他のゲストＯＳに割り当てられたメモリ領域をアクセスすることを防ぐことができる。
【０００９】
【非特許文献１】“Intel(R) Virtualization Technology Specification for the IA-32 Intel(R) Architecture"、[online]、[平成１７年５月３１日検索]、インターネット<URL: ftp://download.intel.com/technology/computing/vptech/C97063-002.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、汎用計算機に使用されるような高機能なプロセッサと異なり、組込用に用いられる一般的なプロセッサには仮想化をサポートする機構が実装されていない。通常これらプロセッサでは、特権モードが少ないため、当該プロセッサで複数のゲストＯＳを実行した場合、各ゲストＯＳが最上位の特権モードで動作する。したがって、任意のゲストＯＳが、他のゲストＯＳに割り当てられたメモリ領域やデバイスを不正に参照・変更可能という問題がある。また、当該プロセッサでは、割込みの管理する割込みベクタテーブルを保護する機構がないため、ハイパーバイザが確実に割込みのインターセプトおよび配送を行えるという保証がないという問題がある。
【００１１】
本発明は、上記に鑑みてなされたものであって、プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、第１のアクセス範囲にアクセス可能な特権ソフトウェアを記憶する記憶部と、前記第１のアクセス範囲よりも狭い範囲である第２のアクセス範囲にアクセス可能なソフトウェアと、前記特権ソフトウェアと、を動作させるプロセッサと、前記記憶部と前記プロセッサとを接続し、前記特権ソフトウェアを前記プロセッサで実行するために必要なデータの通信を行う通信路と、前記プロセッサが前記通信路を介して行う、前記記憶部の前記特権ソフトウェアが格納された格納アドレスに対するフェッチを、検出する検出手段と、前記格納アドレスに対するフェッチの検出の有無に応じて、前記プロセッサのアクセス範囲を制御する制御手段と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかる情報処理装置の最良な実施の形態を詳細に説明する。また、後述する実施の形態においては、情報処理装置をシステムＬＳＩに適用した例について説明する。なお、情報処理装置は、システムＬＳＩに限らず、どのような装置に適用しても良い。
【００１５】
（第１の実施の形態）
図１に示すように、システムＬＳＩ１００は、メモリ１５０と、デバイス１６０とを接続している。また、システムＬＳＩ１００は、プロセッサ１０１と、動作モード管理回路１０２と、メモリアクセス制御部１０３と、第１ＨＶ（Ｈｙｐｅｒ  Ｖｉｓｅｒ）領域保護回路１０４と、デバイスアクセス制御部１０５と、第２ＨＶ領域保護回路１０６と、保護メモリ１０７とを備える。
【００１６】
また、本実施の形態にかかるシステムＬＳＩ１００の内部では、第１〜第６通信路が配接されている。これら通信路は、プロセッサ１０１とメモリ／デバイス等の間でデータを伝える媒体である。少なくとも、アクセス先のアドレスと読み書きされるデータが通信路を介して伝送される。また、通信路はどのような形態でも良く、本実施の形態ではバスを用いることとする。このバスの例としては、アドレスのビット幅分のアドレスバス、データのビット幅分のデータバス、読み出し／書き込みを示す信号線から構成されることが考えられる。また、別の実施例としては、シリアルバスのように、アドレスやデータ等の区別なく少数の信号線で構成して、その信号線上に所定のプロトコルでプロセッサからのアクセス要求とメモリからの応答とを伝送してもよい。
【００１７】
本実施の形態にかかるシステムＬＳＩ１００では、プロセッサ１０１上で特権ソフトウェアが動作している場合に、当該システムＬＳＩ１００が管理している最上位の動作モードで動作するように設定を行っている。そして、当該最上位の動作モードに限りＨＶ保護領域に対する所定のアクセスを許可している。
【００１８】
また、特権ソフトウェアとは、システムＬＳＩ１００で動作するソフトウェアのうち真に信頼できるソフトウェアをいう。特権ソフトウェアの信頼性を保証する機構は、どのような手法で実現しても良い。本実施の形態では、読み込み及び書き込みが制限されている保護メモリ１０７に格納することで信頼性を保証している。また、本実施の形態は、特権ソフトとしてハイパーバイザを用いた例とする。当該ハイパーバイザでは、後述するＨＶ保護領域に含まれるアクセス先全てがアクセス（可能な）範囲となる。そして、当該ハイパーバイザのソースコードを「ＨＶコード」と呼ぶ。また、上記の最上位の動作モードを、「ＨＶモード」と呼ぶ。
【００１９】
次に、従来から存在する組み込み機器において、単にハイパーバイザが動作している時に最上位の動作モードとなるように設計をしたために、ハイパーバイザ以外のソフトウェアが最上位の動作モードで実行されてしまう例について説明する。図２において、左側のソースコードが不正な処理を行うソフトウェアコードであり、右側のソースコードがハイパーバイザのソースコード（以下、ＨＶコードという）である。まず、不正な処理を行うソフトウェアでは、“enable interrupt”により割込み許可に設定する。その後、不正な処理を行うソフトウェアの実行時に、ＨＶコードのエントリ部にジャンプする。これと同時に、動作モードが最上位の動作モードに変更される。
【００２０】
そして、ＨＶコードの実行中に、プロセッサが割込み許可である場合、他のソフトウェアにより割込みが発生すると最上位の動作モードが設定されたまま、割込み処理ルーチンにジャンプする。仮に、汎用計算機に使用されるプロセッサのように割込みベクタテーブルや割込み処理ルーチンを完全に保護できる場合には、このような割込み処理ルーチンへのジャンプが行われても、再びＨＶコードに戻るように記述しておけば問題ない。しかしながら、組込み向け機器に用いられるプロセッサでは、割込みベクタテーブルや割込み処理ルーチンを完全にハイパーバイザの保護下に置くことができない。このため、割込み発生時に任意のコードを実行されてしまう可能性がある。
【００２１】
上記のような不正に対処する手段として、ＨＶコードの実行中のみ最上位の動作モードになるようにすればよい。具体的にはハイパーバイザが格納された記憶領域から、命令をフェッチする場合に、最上位の動作モードで動作するという仕組みで、動作モードを遷移させることも考えられる。しかしながら、任意のソフトウェアから、ハイパーバイザの途中にジャンプした場合、最上位の動作モードに遷移するにもかかわらず、ハイパーバイザコードが正しく動作することが保証できない。また、割込み発生した場合にＨＶコードの実行が中断されることに変わりはない。そこで、本実施の形態では、以下の構成及び処理を実現することで、このような問題を解消する。
【００２２】
メモリ１５０は、第１メモリ領域１５４と、第２メモリ領域１５５と、第３メモリ領域１５６と、第２のゲストＯＳ格納領域１５２と、第３のゲストＯＳ格納領域１５３とを備えている。そして、第１メモリ領域１５４は、第１のゲストＯＳ格納領域１５１を保持している。
【００２３】
また、第１のゲストＯＳ格納領域１５１には第１のゲストＯＳのソースが、第２のゲストＯＳ格納領域１５２には第２のゲストＯＳのソースが、第３のゲストＯＳ格納領域１５３には第３のゲストＯＳのソースが格納されている。また、第１メモリ領域１５４、第２メモリ領域１５５及び第３メモリ領域１５６は、メモリアクセス制御部１０３により読み込み及び書き込みが制限される記憶領域とする。また、ゲストＯＳを格納する領域は、第１のゲストＯＳ格納領域１５１のように、読み込み及び書き込みが制限される記憶領域内に確保されていても良い。
【００２４】
デバイス１６０は、システムＬＳＩ１００に接続され、システムＬＳＩ１００に含まれるプロセッサ１０１により制御が行われるデバイスとする。また、デバイス１６０は、後述するデバイスアクセス制御部１０５によりアクセスが制限される。また、デバイス１６０は、システムＬＳＩ１００の内部に備えるものでも、システムＬＳＩ１００の外部に備えるものでもよい。なお、システムＬＳＩ１００に接続されるデバイスの数について特に制限を設けるものではない。
【００２５】
また、デバイス１６０の例としては、メモリモジュール、ハードディスクドライブ等の大容量外部記憶装置、ネットワークインターフェース等の外部通信装置、キーボードやマウスなど利用者が入力に用いる入力装置、さらにはディスプレイ等の外部出力装置が考えられるが、これらに限るものではない。
【００２６】
プロセッサ１０１は、第１のゲストＯＳ等のＯＳ及びハイパーバイザなどのソフトウェアに従って処理又は演算等を行う。また、本実施の形態にかかるプロセッサ１０１は、仮想化を支援する機能を内蔵されていないプロセッサとする。
【００２７】
また、プロセッサ１０１は、メモリ（メモリ１５０及び保護メモリ１０７）から命令を順次読み出し、読み出した命令を実行する。また、プロセッサ１０１は、読み出した命令に応じて、各通信路に接続されたメモリやデバイスに対してデータの読み出し／書き込みを行う。
【００２８】
ところで、一般的なプロセッサでは、より上位の特権モードに移行するときは、システムコール命令に代表される特定の命令の実行によって行われる。このシステムコール命令の実行後、特権モードへの移行とともに、例外が発生してＯＳのカーネルコードへジャンプし、割込み禁止状態として、安全性を確保している。しかしながら、本実施の形態にかかるプロセッサ１０１は、このような機構を備えているものではない。
【００２９】
そこで、本実施の形態では、プロセッサ１０１自体が持つ動作モードよりも上位のアクセス権限を有する動作モードであるＨＶモードを導入している。このため、プロセッサ１０１の外部に配置されたハードウェアでＨＶモードに切り替えることになる。この場合、プロセッサ１０１上で動作するソフトウェアの指示によるＨＶコードへのジャンプや割込み禁止状態への移行等は、プロセッサ内部の動作のため、外部に配置されたハードウェアからは制御できない。
【００３０】
そこで、本実施の形態にかかるシステムＬＳＩ１００では、ＨＶコードへのジャンプや割込み禁止状態への移行はプロセッサ１０１上で動作するソフトウェア（例えば第１のゲストＯＳ等）に任せ、プロセッサ１０１の外部のハードウェアで、適切にＨＶコードへジャンプしているか及び適切に割込み禁止状態になっているかチェックする。次に、このようなチェックを行う動作モード管理回路１０２について説明する。
【００３１】
動作モード管理回路１０２は、検出部１２１と、モード切替部１２２とを備え、プロセッサ１０１と第２ＨＶ領域保護回路１０６とを接続する第１通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。
【００３２】
また、動作モード管理回路１０２は、動作モードとして少なくともＨＶモードと通常モードの２個の状態を保持する状態遷移回路とする。動作モード管理回路１０２は、第１通信路に流れる信号を監視して、所定の条件が満たされた場合にＨＶモード／通常モードの状態遷移を起こす。また、動作モード管理回路１０２は、ＨＶモード／通常モードの状態に応じて、モード情報信号を第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６に出力する。これにより、第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６は、動作モードに応じたアクセス制御を行うことができる。なお、動作モード管理回路１０２の動作に関する詳細については後述する。
【００３３】
また、ＨＶモードに遷移できる条件について説明する。上述から動作モード管理回路１０２が動作モードをＨＶモードに切り替えるために必要な処理は、ＨＶコードのエントリ部に実行を移す処理（つまり実行が移ったことを保証する必要がある）、及び割込み禁止にする処理（つまり割込み禁止状態であることを保証する必要がある）とする。そして動作モード管理回路１０２は、これら２つの処理の実行を保証した上で、動作モードをＨＶモードに設定する処理を行うことができる。つまり、これら３つの処理が不可分に行われることが必要となる。なお、処理が不可分に行われるとは、これらの処理の間に別の処理が行われることがないとことを意味する。また、当然ながら、ＨＶコードは、ゲストＯＳ等の他のソフトウェアから修正できないように保護される必要がある。
【００３４】
動作モード管理回路１０２が、上述した条件を満たすように処理を行うことで、動作モードを管理する。これにより、動作モード管理回路１０２がＨＶモードに切り替えたときには、ＨＶコードのみ実行されていることが保証される。そして、後述するＨＶ保護領域においては、後述する第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６が、当該動作モードに基づいて、メモリ１５０、保護メモリ１０７上のアドレス、又はデバイス１６０においてアクセス範囲を変更する処理を行う。なお、アクセス範囲とは、アクセスが許可されたアクセス先の範囲を示すものとする。
【００３５】
これにより、ＨＶコードの実行時のみハイパーバイザのみがＨＶ保護領域に含まれる全てのアクセス先にアクセスを許可される。そして、通常モードの場合には、第１のゲストＯＳ等はＨＶ保護領域に含まれる全てのアクセス先（範囲）よりも狭い範囲のアクセス範囲に対してアクセスが許可される。
【００３６】
このようにＨＶコードに実行を移す処理、及び割込み禁止にする処理は、プロセッサ１０１上で動作するソフトウェアで行い、動作モード管理回路１０２がこれらの処理の実行要求又は実行結果の検出を行う。この検出チェック方法として、本実施の形態にかかる動作モード管理回路１０２は、プロセッサ１０１と保護メモリ１０７とを接続する第１通信路で送受信されるアクセス要求の種類や、アドレス、データを監視する。
【００３７】
検出部１２１は、プロセッサ１０１と第２ＨＶ領域保護回路１０６とを接続する第１通信路を介して、後述する保護メモリ１０７のＨＶコード格納領域１１２に格納されたＨＶコードの所定のアドレスに対する命令のフェッチ等の検出を行う。なお、詳細な処理については後述する。
【００３８】
モード切替部１２２は、検出部１２１の検出結果に従って、動作モードの切替を行う。例えば、モード切替部１２２は、検出部１２１がＨＶコードのエントリ部を示すＨＶエントリに対する命令のフェッチを検出した場合、モード切替部１２２は、ハイパーバイザがプロセッサ１０１上で動作するとみなして、動作モードをＨＶモードに切り替える。
【００３９】
また、検出部１２１がＨＶコードの脱出部を示すＨＶ脱出部に対する命令のフェッチを検出した場合、モード切替部１２２は、第１のゲストＯＳ等のソフトウェアがプロセッサ１０１上で動作するとみなして、動作モードを通常モードに切り替える。なお、詳細な切り替え条件等については後述する。
【００４０】
本実施の形態では、システムＬＳＩ１００内部において、プロセッサ１０１上で動作するソフトウェアに応じてアクセス先として範囲の変更等が行われる領域を、ＨＶ（ハイパーバイザ）保護領域とする。図１に示すようにＨＶ保護領域には、メモリアクセス制御部１０３と、デバイスアクセス制御部１０５と、保護メモリ１０７と、第１ＨＶ(ハイパーバイザ)領域保護回路１０４と、第２ＨＶ領域保護回路１０６とを含むものとする。
【００４１】
このＨＶ保護領域に格納された構成（メモリ又は回路）は、プロセッサ１０１からのアクセス（読出し／書込み）に対して所定の制限が設けられている。これにより、ＨＶ保護領域に格納されたメモリやデバイスの制御情報、ゲストＯＳの管理情報等が、ＨＶコードのみがアクセス又は書き込み可能となり、ゲストＯＳ等による不正な処理から保護することができる。
【００４２】
なお、本実施の形態では、ＨＶ保護領域に上述した構成を含むものとするが、このような構成に制限するものではない。変形例として、システムＬＳＩのＨＶ保護領域に、ＨＶ領域保護回路とメモリアクセス制御部のみ含むものでも良いし、ＨＶ領域保護回路とデバイスアクセス制御部のみ含むものでも良いし、ＨＶ領域保護回路と保護メモリのみ含むものでも良いし、これらの２つ以上の組み合わせでも良い。なお、他の組み合わせの詳細な例については後述する。
【００４３】
保護メモリ１０７は、ＨＶコード格納領域１１２を格納する。また、保護メモリ１０７は、通常モードの場合は書き込み禁止とする。
【００４４】
ＨＶコード格納領域１１２は、ＨＶコードを格納している。図３に示すようにＨＶコードは、エントリ部３０１に“store  SR  to  CheckAdr”を保持し、脱出部３０２に“return”を保持する。
【００４５】
また、当該ＨＶコード格納領域１１２に格納されたＨＶコードは、ゲストＯＳ等のソフトウェアから修正されてはならない。本実施の形態では、第２ＨＶ領域保護回路１０６により保護されることとするが、他の実施例としてはプロセッサ１０１から書換え不可能なＲＯＭ（read  only  memory）上にＨＶコード格納領域１１２を設けても良い。
【００４６】
また、本実施の形態では、ＨＶコード格納領域１１２が、ＨＶ保護領域内に備えた保護メモリ１０７内に設けられている。そして、ＨＶコード格納領域１１２は、後述する第２ＨＶ領域保護回路１０６により、動作モードがＨＶモード以外の時には書込みが禁止されている。これにより、ゲストＯＳからＨＶコードに対する修正を抑止することができる。なお、本実施の形態では、ＨＶコード格納領域１１２をＨＶ保護領域内部に設けたが、ＨＶ保護領域内部に制限するものではなく、ゲストＯＳからの修正を抑止できるのであればどこに設けても良く、例えばメモリ１５０内に設けても良い（ただし、メモリ１５０内に設けた場合、動作モード管理回路１０２は通信路６に接続する必要がある）。
【００４７】
さらに、第２ＨＶ領域保護回路１０６は、ＨＶコード格納領域１１２に対する書込みを禁止するだけではなく、ＨＶコードのエントリ部を除いたＨＶコード本体のアドレスへの操作を全て禁止するように制御を行ってもよい。第２ＨＶ領域保護回路１０６がこのように制御を行うことで、通常モードにおいてＨＶコード本体の読み出しを抑止することも可能となる。これにより、ＨＶコードの処理内容をゲストＯＳから隠蔽することができ、安全性をいっそう向上させることもできる。
【００４８】
次に、ＨＶコード格納領域１１２に格納されたハイパーバイザと、第１のゲストＯＳ格納領域１５１に格納された第１のゲストＯＳと、第２のゲストＯＳ格納領域１５２に格納された第２のゲストＯＳと、第３のゲストＯＳ格納領域１５３に格納された第３のゲストＯＳと、について説明する。図４に示すように、本実施の形態にかかるシステムＬＳＩ１００では、ハードウェア上にソフトウェアの最下層としてハイパーバイザ４０４が配置されている。さらに、そのハイパーバイザ４０４の上に第１のゲストＯＳ４０１と、第２のゲストＯＳ４０２と、第３のゲストＯＳ４０３とが配置された構成となっている。なお、図４では説明を容易にするために、ハードウェアの構成としてメモリ１５０内部の第１メモリ領域１５４と、第２メモリ領域１５５と、第３メモリ領域１５６と、ＨＶ保護領域１１１のメモリアクセス制御部１０３及びデバイスアクセス制御部１０５内に格納された制御情報とを示したが、これら以外の構成に対しても、同様の制御が行われるものとする。
【００４９】
そして、ハイパーバイザ４０４は、これらゲストＯＳ４０１〜４０３の切り替え機能を提供する。システムＬＳＩ１００では、ゲストＯＳの切替え時に、ゲストＯＳからハイパーバイザに処理を戻してから、現在のゲストＯＳの状態の保存、及び次のゲストＯＳの状態の復帰を行う。
【００５０】
また、ゲストＯＳからハイパーバイザに処理が移ったときに、動作モードがＨＶモードとなる。この時、ハイパーバイザは、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５が制御を行うときに参照する制御情報を更新することができる。そこで、ハイパーバイザは、次のゲストＯＳに対して割り当てられたメモリ及びデバイスのみアクセスできるように制御情報を更新する。このように、ＨＶモードで動作しているハイパーバイザは、ＨＶ保護領域に含まれる全てのハードウェア（アクセス先）にアクセスすることができる。
【００５１】
そして、ハイパーバイザから次のゲストＯＳに処理が移った段階で、動作モードが通常モードになる。この通常モードでは、制御情報に対して更新を行うことができない。これにより、後述するメモリアクセス制御部１０３は、更新された制御情報に従って、第１のゲストＯＳ４０１に対して第１メモリ領域１５４のみアクセスを許可し、第２メモリ領域１５５及び第３メモリ領域１５６に対してアクセスを禁止することができる。これにより、本実施の形態にかかるシステムＬＳＩ１００では、不正なゲストＯＳが、他のゲストＯＳに割り当てられたメモリやデバイスにアクセスすることを抑止することができる。本実施の形態にかかるシステムＬＳＩ１００のソフトウェア構成では、このように複数のゲストＯＳを互いに隔離して動作させることとする。
【００５２】
図１に戻り、第２ＨＶ領域保護回路１０６は、保護メモリ１０７とプロセッサ１０１との間に配置され、保護メモリ１０７を保護するための処理を行う。本実施の形態では、プロセッサ１０１と第２ＨＶ領域保護回路１０６とを第１通信路で接続し、第２ＨＶ領域保護回路１０６と保護メモリ１０７とを第３通信路で接続する。そして、第２ＨＶ領域保護回路１０６は、動作モード管理回路１０２から動作モードを示すモード情報信号が入力される。
【００５３】
第２ＨＶ領域保護回路１０６は、第２制御部１３２を備え、第１通信路を介してプロセッサ１０１からのアクセス要求を受け付ける。そして、第２ＨＶ領域保護回路１０６は、動作モード管理回路１０２から入力されたモード情報信号がＨＶモードを示す値の場合、受け付けたアクセス要求を保護メモリ１０７に、第３通信路を介して出力する。
【００５４】
そして、第２制御部１３２は、動作モードがＨＶモードである旨の入力された場合に、保護メモリ１０７に対してアクセス要求を許可する制御を行う。また動作モードが通常モードである旨の入力がされた場合に、保護メモリ１０７に対してアクセス要求を禁止する制御を行う。
【００５５】
これにより、第２ＨＶ領域保護回路１０６は、入力されたモード情報信号がＨＶモード以外を示す値の場合、受け付けたアクセス要求を保護メモリ１０７に出力することを抑止される。この保護メモリ１０７に対するアクセスに対する制限の例としては、保護メモリ１０７のアドレスの一部に対してアクセスを禁止する例や、書き込みのみ禁止する例等がある。また、これらの制限を組み合わせてもよい。このような制限は、保護メモリ１０７の一部のみ通常モード時のアクセスを制限する場合や、一部の操作を禁止する（書込みのみ禁止等）場合に有効である。
【００５６】
また、第２ＨＶ領域保護回路１０６は、ＨＶコードの隠蔽を行う場合には、ＨＶコード格納領域１１２のうちＨＶコードのエントリ部に対応するアドレスのみ常に読み出し可能にしておく。そして、ＨＶコードの本体に対応するアドレスは、ＨＶモードの時のみ読み出し可能にする。また、ＨＶコード実行時に動作モードをＨＶモードに変更する手順については後述する。このような処理を行うことで、安全性をさらに向上させることができる。
【００５７】
また、本実施の形態では、保護メモリ１０７と第２ＨＶ領域保護回路１０６とが別構成となる例について説明したが、これらの機能を１つの構成としてシステムＬＳＩ１００に配置しても良い。
【００５８】
第１ＨＶ領域保護回路１０４は、第１制御部１３１を備え、第１通信路を介してプロセッサ１０１からのアクセス要求を受け付ける。そして、第１ＨＶ領域保護回路１０４は、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５とを第２通信路で接続する。また、第１ＨＶ領域保護回路１０４は、動作モード管理回路１０２からモード情報信号が入力される。
【００５９】
そして、メモリアクセス制御部１０３とメモリ１５０とを第４通信路で接続し、デバイス１６０とデバイスアクセス制御部１０５とを第５通信路で接続する。
【００６０】
メモリアクセス制御部１０３は、メモリ１５０に対するアクセスを制御する。また、本実施の形態にかかるシステムＬＳＩ１００では、プロセッサ１０１とメモリアクセス制御部１０３を接続する通信路として第６通信路を備え、プロセッサ１０１からメモリアクセス制御部１０３の制御情報にアクセスするための通信路として第１通信路及び第２通信路を用意した。これにより、メモリ１５０へのアクセス要求は、第６通信路を介して出力される。また、デバイスアクセス制御部１０５についても同様の通信路を備えることにした。
【００６１】
また、メモリアクセス制御部１０３は、プロセッサ１０１から第１通信路及び第１ＨＶ領域保護回路１０４を介して、制御情報の所定のアドレスに対するアクセス（少なくとも書込み、あるいは書込み／読出しの両方）を受け付ける。本実施の形態にかかるメモリアクセス制御部１０３では、保護対象となるのはこの制御情報とする。
【００６２】
メモリアクセス制御部１０３は、プロセッサ１０１から第６通信路を介して伝送されたメモリ１５０へのアクセス要求を、第４通信路を介してメモリ１５０に伝送する。このとき、メモリアクセス制御部１０３は、予め設定された制御情報に従い、メモリ１５０に伝送するアクセス要求に制限を加える。
【００６３】
また、メモリアクセス制御部１０３に設定される制御情報には様々な形態で実現できる。例えば、＜開始アドレス，終了アドレス＞の組を複数設定する。メモリへのアクセス要求のアドレスが、それらの組が表すアドレスの範囲内であれば、第４通信路へアクセス要求を伝える。そして、このようなアドレスの組をＨＶモードの場合に限り、編集することを可能とする。
【００６４】
メモリアクセス制御部１０３は、第１ＨＶ領域保護回路１０４にＨＶモードを示すモード情報信号が入力されている場合に、制御情報の書込み／読出しに割り当てられたアドレスに対するアクセスを受け付ける。そして、メモリアクセス制御部１０３は、第１ＨＶ領域保護回路１０４にＨＶモード以外のモードを示すモード情報信号が入力されている場合に、制御情報の書込み／読出しに割り当てられたアドレスに対するアクセスを受け付けない。
【００６５】
また、本実施の形態では、プロセッサ１０１とメモリアクセス制御部１０３を接続する経路として、第６通信路と、プロセッサ１０１から第１通信路、第１ＨＶ領域保護回路１０４及び第２通信路を経由する通信路との２つの経路を備えている。しかしながら、本実施の形態は、このような複数の経路を備えているものに制限するものではなく、例えばプロセッサ１０１から第１通信路、第１ＨＶ領域保護回路１０４及び第２通信路を経由する通信路のみとしてもよい。
【００６６】
メモリアクセス制御部１０３は、このようにＨＶモードに限り制御情報の書き込み／読み出しが行われることで、ゲストＯＳを動作を切り替える際に、ハイパーバイザが当該にメモリアクセス制御部１０３の制御情報を切り替え先のゲストＯＳに適した設定を行うことで、次に動作するゲストＯＳのデータのみアクセス可能にすることができる。
【００６７】
そして、第１制御部１３１は、動作モードがＨＶモードである旨の入力された場合に、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５が有する制御情報に対するアクセスを許可する制御を行う。また動作モードが通常モードである旨の入力がされた場合に、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５が有する制御情報に対するアクセスを禁止する制御を行う。
【００６８】
そして、通信路をこのような構成としたことで、第１ＨＶ領域保護回路１０４は、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５の制御情報の書込み／読出し以外のアクセス要求に対する処理を行わなくてよい。
【００６９】
また、第１ＨＶ領域保護回路１０４は、プロセッサ１０１からメモリアクセス制御部１０３の制御情報の書込み／読出しに割り当てられたアドレスへのアクセス要求を受け付けた時、動作モード管理回路１０２から入力されるモード情報信号がＨＶモードを表す値の場合、当該アクセス要求を、第２通信路を介してメモリアクセス制御部１０３に出力する。また、第１ＨＶ領域保護回路１０４は、動作モード管理回路１０２から入力されるモード情報信号がＨＶモード以外を表す値の場合、当該アクセス要求を、メモリアクセス制御部１０３に出力するのを抑止する。
【００７０】
なお、本実施の形態では、メモリアクセス制御部１０３の制御情報に対するアクセス要求を第１通信路及び第２通信路を介してデータの送受信を行い、制御情報以外のメモリアクセス制御部１０３に対するアクセス要求を第６通信路を介してデータの送受信を行うこととした。しかしながら、本実施の形態とは異なるが、これら別々となっている通信路を、第１ＨＶ領域保護回路１０４を介した１つの通信路で構成しても良い。この場合、メモリ１５０に対するアクセス要求も第１ＨＶ領域保護回路１０４を介してアクセス要求が行われることになる。また、第１ＨＶ領域保護回路１０４は、メモリアクセス制御部１０３の制御情報に対する書き込み／読み込みは上述したような制御を行うが、これら以外のアクセス要求（例えば、メモリ１５０に対するアクセス要求）については全てメモリアクセス制御部１０３に出力する。
【００７１】
デバイスアクセス制御部１０５は、デバイス１６０に対するアクセスを制御する。また、デバイスアクセス制御部１０５は、上記のメモリアクセス制御部１０３と同様に第１ＨＶ領域保護回路１０４を介して、デバイスアクセス制御部１０５が有する制御情報に対するアクセス要求を受け付ける。なお、デバイスアクセス制御部１０５で行われる処理は、メモリアクセス制御部１０３と同様なので説明を省略する。
【００７２】
また、デバイスアクセス制御部１０５に設定される制御情報には様々な形態で実現できる。例えば、＜開始アドレス，終了アドレス＞の組を複数設定する。デバイスへのアクセス要求のアドレスが、それらの組が表すアドレスの範囲内であれば、第５通信路へアクセス要求を伝える。そして、このようなアドレスの組をＨＶモードの場合に限り、編集することを可能とする。
【００７３】
また制御情報の別の形態としては、複数のデバイスを接続されている場合、各デバイスに対応する＜開始アドレス，終了アドレス＞の組をあらかじめ設定しておき、さらに、当該アドレスに対してアクセスを許可するか否かを１ビットのビットマスクとして設定してもよい。この形態では、デバイスへのアクセス要求のアドレスが、ビットマスクが‘１’に対応するデバイスに割り当てられたアドレスの範囲内であれば、アクセス要求を出力する。
【００７４】
本実施の形態では、例えばゲストＯＳを切り替える際に、ハイパーバイザがデバイスアクセス制御部１０５の制御情報の書き換えを行うことで、動作するゲストＯＳに割り当てられたデバイスにのみアクセスを許可することが可能となる。
【００７５】
次に動作モード管理回路１０２の処理について説明する。動作モード管理回路１０２が行う動作は、大きく分けると以下の２つの動作になる。
【００７６】
まず第１の動作として、動作モード管理回路１０２は、動作モードが通常モードの時、ＨＶモードエントリのチェックを行い、所定の条件が満たされた時点で動作モードをＨＶモードに遷移させる。第２の動作として、動作モード管理回路１０２は、動作モードがＨＶモードの時、ＨＶモード脱出のチェックを行い、所定の条件が満たされた時点で動作モードを通常モードへ遷移させる。
【００７７】
図５に示すように、まず、動作モード管理回路１０２は、システムＬＳＩ１００全体の起動時に初期化を行う（ステップＳ５１１）。ここでは動作モードを通常モードにする。
【００７８】
その後、動作モード管理回路１０２の検出部１２１が、第１通信路を監視してＨＶモードエントリの検出を行う（ステップＳ５１２）。ここでは、検出部１２１が、第１通信路を監視して、所定の条件が満たされるまでチェックを行う。なお、詳細な処理手順については後述する。
【００７９】
次に、モード切替部１２２が、動作モードをＨＶモードに切り替える処理を行う（ステップＳ５１３）。そして、動作モード管理回路１０２は、動作モードがＨＶモードであることを示すモード情報信号を、第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６に対して出力する（ステップＳ５１４）。なお、本フローチャートでは説明を容易にするため、このタイミングでモード情報信号を出力しているが、実際には、動作モード管理回路１０２は、動作モード管理回路１０２は所定間隔毎に常にモード情報信号を出力している。なお、動作モード管理回路１０２が、モード情報信号を常に信号線に出力していてもよい。いずれにしても、動作モード管理回路１０２が、モード変更のタイミングを第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６に伝えることが可能である。以上までが、上記第１の動作となる。
【００８０】
そして、第１ＨＶ領域保護回路１０４は、動作モード管理回路１０２からモード情報信号の入力を受け付け、動作モードがＨＶモードに変更されたことを認識する（ステップＳ５０１）。これにより、第１制御部１３１は、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５が有する制御情報に対するアクセスを許可する制御を行う（ステップＳ５０２）。
【００８１】
同様に、第２ＨＶ領域保護回路１０６は、動作モード管理回路１０２からモード情報信号の入力を受け付けた場合、動作モードがＨＶモードに変更されたことを認識する（ステップＳ５２１）。これにより、第２制御部１３２は、保護メモリ１０７に対するアクセスを許可する制御を行う（ステップＳ５２２）。
【００８２】
その後、動作モード管理回路１０２の検出部１２１が、第１通信路を監視してＨＶモード脱出の検出を行う（ステップＳ５１５）。ここでは、検出部１２１が、第１通信路を監視して、所定の条件が満たされるまでチェックを行う。なお、詳細な処理手順については後述する。
【００８３】
次に、モード切替部１２２が、動作モードを通常モードに切り替える処理を行う（ステップＳ５１６）。そして、動作モード管理回路１０２は、動作モードが通常モードであることを示すモード情報信号を、第１ＨＶ領域保護回路１０４及び第２ＨＶ領域保護回路１０６に対して出力する（ステップＳ５１７）。以上までが、上記第２の動作となる。
【００８４】
そして、第１ＨＶ領域保護回路１０４は、動作モード管理回路１０２からモード情報信号の入力を受け付けた場合、動作モードが通常モードに変更されたことを認識する（ステップＳ５０３）。これにより、第１制御部１３１は、メモリアクセス制御部１０３及びデバイスアクセス制御部１０５が有する制御情報に対するアクセスを禁止する制御を行う（ステップＳ５０４）。
【００８５】
同様に、第２ＨＶ領域保護回路１０６は、動作モード管理回路１０２からモード情報信号の入力を受け付けた場合、動作モードが通常モードに変更されたことを認識する（ステップＳ５２３）。これにより、第２制御部１３２は、保護メモリ１０７に対するアクセスを禁止する制御を行う（ステップＳ５２４）。
【００８６】
本実施の形態では、上述した処理を行うことで、動作モードに従って、ＨＶ保護領域に格納された構成を適切に保護することができる。
【００８７】
次に、図５のステップＳ５１２で示したＨＶモードエントリの検出手順について説明する。ＨＶモードエントリチェックは、ＨＶコードのエントリ部との組合せに応じて複数の形態が存在する。本実施の形態では複数存在する形態のうち一形態について説明する。なお、他の形態の例については、後述する実施形態で説明する。
【００８８】
本実施の形態にかかるＨＶモードエントリのチェックの手法は、ＨＶコードのエントリ部で割込み禁止であることをチェックする手法とする。その前にＨＶコードについて詳細に説明する。
【００８９】
まず、図３に示すように、ＨＶコードが格納されている先頭アドレス（ＨＶＥｎｔｒｙ）には、プロセッサ１０１の状態を所定のアドレスに書き込むストア命令が存在する。本実施の形態では、この命令がＨＶコードのエントリ部となる。そして、この命令はプロセッサ１０１が提供する機械語の１命令に相当する。
【００９０】
そして、この命令に含まれる‘ＳＲ’は、プロセッサ１０１の状態を表す値が格納されているレジスタ（ステータスレジスタ）を示す。この‘ＳＲ’の値には、プロセッサ１０１が現在割込み禁止状態かどうかを示す情報が含まれている。
【００９１】
この命令に含まれる‘ＣｈｅｃｋＡｄｒ’は‘ＳＲ’の値を書き込むアドレスとする。‘ＣｈｅｃｋＡｄｒ’は、プロセッサ１０１が制御するメモリやデバイスのアドレスとは異なる、実際には存在しないアドレスを選択することが望ましい。この場合、プロセッサ１０１が通信路に対してアクセス要求を伝送するが、当該通信路を介して接続されるメモリやデバイスは、伝送されたアクセス要求に応答して実際に読み書きを行うことがない。
【００９２】
また、‘ＣｈｅｃｋＡｄｒ’に実際に存在するアドレスを選択する場合、ハイパーバイザ及びゲストＯＳを含む全てのプログラムが使用しないアドレスを選択する必要がある。仮に‘ＣｈｅｃｋＡｄｒ’で示されたアドレスにデバイスが存在する場合、当該命令によってデータ書き込み処理が行われることになる。この結果、デバイスの誤動作を引き起こす可能性がある。このため、実際に使用されているアドレスを選択しないように留意する必要がある。
【００９３】
そして、ＨＶコードのエントリ部が実行される時、プロセッサ１０１から第１通信路に以下の順序で信号が伝送される。
【００９４】
まず、第１の処理として、プロセッサ１０１から、ＨＶコード格納領域１１２内のアドレス‘ＨＶＥｎｔｒｙ’に対して命令フェッチの要求を伝送する。そして、第２の処理として、当該要求に従い、ＨＶコード格納領域１１２からプロセッサ１０１に対してデータ（ＨＶＥｎｔｒｙにある命令）を伝送する。
【００９５】
さらに、第３の処理として、プロセッサ１０１が、アドレス‘ＣｈｅｃｋＡｄｒ’に対してデータ（プロセッサ状態を表す値）の書込みの要求を伝送する。
【００９６】
そして、本実施の形態にかかる動作モード管理回路１０２では、第１の処理を確認することで、ＨＶコードのエントリ部に実行を移したことを保証する。さらに第３の処理を確認することでプロセッサ１０１が割込み禁止状態であることを保証する。ただし、第３の処理においては、データ（プロセッサ状態を表す値）が、書き込み禁止状態であることを示している必要がある。これらが保証されたことで、動作モード管理回路１０２が動作モードをＨＶモードに遷移させる条件が満たされたことになる。
【００９７】
図６に示すように、まず、検出部１２１は、第１通信路を監視して、プロセッサ１０１から伝送されてくる命令フェッチの要求を検出する（ステップＳ６０１）。
【００９８】
次に、検出部１２１は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘ＨＶＥｎｔｒｙ’と一致するか否か判断する（ステップＳ６０２）。そして、検出部１２１が、異なると判断した場合（ステップＳ６０２：Ｎｏ）、再び命令フェッチの検出を行う（ステップＳ６０１）。
【００９９】
そして、検出部１２１は、アドレスが‘ＨＶＥｎｔｒｙ’と一致すると判断した場合（ステップＳ６０２：Ｙｅｓ）、第１通信路を監視して、保護メモリ１０７から伝送されるデータ書き込みの要求を検出する（ステップＳ６０３）。
【０１００】
次に、検出部１２１がデータ書込みの要求を検出した場合、当該データ書き込み要求で指定されたアドレスが‘ＣｈｅｃｋＡｄｒ’と一致するか否か判断する（ステップＳ６０４）。そして、検出部１２１が、異なると判断した場合（ステップＳ６０４：Ｎｏ）、再び命令フェッチの検出を行う（ステップＳ６０１）。
【０１０１】
そして、検出部１２１は、アドレスが‘ＣｈｅｃｋＡｄｒ’と一致すると判断した場合（ステップＳ６０４：Ｙｅｓ）、書込み要求で指定されたデータと割込み禁止を表す‘ＳＲ’の値が一致するか否か判断する（ステップＳ６０５）。そして、検出部１２１が、異なると判断した場合（ステップＳ６０５：Ｎｏ）、再び命令フェッチの検出を行う（ステップＳ６０１）。
【０１０２】
次に、検出部１２１は、書込みデータと割込み禁止を表す‘ＳＲ’の値が一致すると判断した場合（ステップＳ６０５：Ｙｅｓ）、ＨＶモードエントリチェックが完了したものとする。そして、図５に示したステップＳ５１３以降の処理が行われることになる。
【０１０３】
なお、‘ＳＲ’が割込み禁止／許可のみを表す場合には、単純に書込みデータ全体を比較すれば良い。しかし、一般にはプロセッサ状態を表すレジスタは、割込み状態、アドレス変換モード、特権モードなどの異なる種類の状態をビット単位で表す場合が多い。このような場合、割込み状態に対応するビットのみを比較すれば良い。
【０１０４】
次に、図５のステップＳ５１５で示したＨＶモード脱出の検出手順について説明する。ＨＶモード脱出のチェックは、上記のＨＶモードエントリチェックに対応するＨＶモード脱出の一例について説明する。後述する例は、ＨＶモード脱出のチェックの第一の形態として、ＨＶモードで動作すべき処理が終了したことが保証される命令（以降、ＨＶモード脱出命令と呼ぶ）が実行されたことが保証されたときに動作モードを通常モードに遷移させる例である。
【０１０５】
ＨＶモードで動作すべき処理が終了したことが保証される命令はＨＶコードに依存する。このため、当該命令は、ＨＶコードに応じて様々な形態が存在する。例えば、図３で示したＨＶコードでは、符号３０２で示されるＨＶコードの最後の命令‘ｒｅｔｕｒｎ’が呼び出された場合、ＨＶコードによる処理が終了する。そこで、プロセッサ１０１が最後の命令３０２を呼び出して、実行されるソフトウェアをゲストＯＳに切り替える場合、これ以降の処理はＨＶモードで動作させる必要がない。そこで、図３に示すＨＶコードでは、当該最後の命令３０２を、ＨＶモード脱出命令として用いる。なお、本実施の形態は、ＨＶモード脱出命令をＨＶコードの最後の命令に制限するものではない。つまり、ＨＶモードで動作すべき処理が終了したことが保証される命令であれば、ＨＶコードの最後の命令より前の命令でも良い。
【０１０６】
そして、図３に示すＨＶモード脱出命令（最後の命令３０２）が実行される時、まず第１にプロセッサ１０１は、保護メモリ１０７のＨＶモード脱出命令が格納されているアドレス（以下、“ＨＶＥｘｉｔ”とする）に対して、命令フェッチの要求を伝送する。次に、保護メモリ１０７からＨＶコード格納領域１１２に格納されたデータ（“ＨＶＥｘｉｔ”に格納されている命令）をプロセッサ１０１に対して伝送する。
【０１０７】
そして、本実施の形態では、動作モード管理回路１０２は、ＨＶモード脱出命令が格納されているアドレスに対するフェッチを検出した場合に、ＨＶモードで動作すべき処理が終了したことを保証されたと判断し、動作モードを通常モードに切り替える。
【０１０８】
図７に示すように、まず、検出部１２１は、第１通信路を監視して、プロセッサ１０１から伝送されてくる命令フェッチの要求を検出する（ステップＳ７０１）。
【０１０９】
次に、検出部１２１は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘ＨＶＥｘｉｔ’と一致するか否か判断する（ステップＳ７０２）。そして、検出部１２１が、異なると判断した場合（ステップＳ７０２：Ｎｏ）、再び命令フェッチの検出を行う（ステップＳ７０１）。
【０１１０】
次に、検出部１２１は、当該命令フェッチの要求で指定されたアドレスが‘ＨＶＥｘｉｔ’と一致すると判断した場合（ステップＳ７０２：Ｙｅｓ）、ＨＶモード脱出チェックが完了したものとする。そして、図５に示したステップＳ５１６以降の処理が行われることになる。
【０１１１】
なお、ＨＶ保護領域の制限手法として、本実施の形態以外の制限手法を用いても良い。例えば、ＨＶモード以外の動作モードの場合は、ＨＶ保護領域に格納された全てのメモリ及びデバイスの全てのアドレスに対して、全ての操作（読出し／書込み）を禁止してもよい。他の例としては、ＨＶ保護領域に格納されたうちアドレスの一部に対してのみアクセスや書き込みを禁止しても良い。また、これらの制限を組み合わせても良い。
【０１１２】
なお、通信路を流れるデータにおいて、命令フェッチとデータ読出しを区別する信号が存在しない場合、通信路と別経路でプロセッサ１０１が出力する命令フェッチを示す信号を動作モード管理回路に入力する必要がある。これにより、命令フェッチとデータ読み出しを区別することができる。
【０１１３】
本実施の形態にかかるシステムＬＳＩ１００を用いることで、プロセッサの仮想化サポート機能に依存することなく、ＨＶコードの実行時にのみアクセス可能となる保護領域を確保することができる。この保護領域にメモリやデバイスのアクセス制御情報、ゲストＯＳの管理情報、ＨＶコード本体といった情報を格納することにより、ゲストＯＳから不正にこれらの情報を読出し／書込みすることを抑止することができる。このように、確実にゲストＯＳ間の隔離を実現することで、安全性を向上させることができる。
【０１１４】
また、上述した第１実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【０１１５】
（第１の実施の形態の変形例１）
上述した第１の実施の形態では、動作モード管理回路１０２が管理する動作モードが、ＨＶモードと通常モードの２種類の場合について説明した。しかしながら、動作モードを２種類に制限するものではない。そこで、第１の実施の形態の変形例１では、動作モードが３種類の場合について説明する。
【０１１６】
本変形例は、第１の実施の形態と同様のＨＶモードエントリチェックを適用するので、プロセッサ１０１から伝送された命令フェッチ検出してから、データ書込みの命令を検出するまでの間、待機する処理が必要となる。
【０１１７】
そこで、これらを考慮して動作モード管理回路を状態遷移回路として実装する場合、命令フェッチ（ＨＶＥｎｔｒｙ）の検出を監視している状態を通常モード１と設定し、データ書き込みを待機している状態を通常モード２と設定し、命令フェッチ（ＨＶモード脱出命令）を待機している状態をＨＶモードと設定する。
【０１１８】
このように、動作モード管理回路が３種類の状態を有する状態遷移回路として実装された場合、当該動作モード管理部が出力するモード情報信号では、通常モード１と通常モード２の時に‘０’を出力し、ＨＶモードの時には‘１’を出力し、ＨＶモード以外のモードについては同一の信号を出力することが望ましい。なお、他の処理については、第１の実施の形態と同様として説明を省略する。
【０１１９】
（第１の実施の形態の変形例２）
第１の実施の形態では、ＨＶ保護領域に、第１ＨＶ領域保護回路１０４、メモリアクセス制御部１０３、デバイスアクセス制御部１０５、第２ＨＶ領域保護回路１０６及び保護メモリ１０７を含む例について説明した。しかしながら、ＨＶ保護領域に含まれる構成をこれらに制限するものではない。そこで、第１の実施の形態の変形例２では、ＨＶ保護領域にさらに保護デバイス１３０１を含む例とする。
【０１２０】
図８に示したシステムＬＳＩ１３００は、上述した第１の実施の形態に係るシステムＬＳＩ１００とは、第２ＨＶ領域保護回路１０６と処理が異なる第２ＨＶ領域保護回路１３０２を備え、保護デバイス１３０１を追加された点のみ異なる。
【０１２１】
保護デバイス１３０１は、保護メモリ１０７と同様に、第２ＨＶ領域保護回路１３０２
を介してプロセッサ１０１からの要求を受け付ける。
【０１２２】
本変形例は、プロセッサ１０１と第２ＨＶ領域保護回路１３０２を第１通信路で接続し、第２ＨＶ領域保護回路１３０２と保護デバイス１３０１を第３通信路で接続する。そして、第２ＨＶ領域保護回路１３０２は、動作モード管理回路１０２からのモード情報信号が入力される。
【０１２３】
第２ＨＶ領域保護回路１３０２は、第２制御部１３１１を備え、第１の実施の形態の第２ＨＶ領域保護回路１０６とは、保護メモリ１０７のみならず保護デバイス１３０１のアクセスも制御する点とする。なお、第２ＨＶ領域保護回路１３０２は、それ以外の処理については第２ＨＶ領域保護回路１０６と同様なので説明を省略する。
【０１２４】
また、第２制御部１３１１は、動作モードがＨＶモードである旨の入力された場合に、保護メモリ１０７及び保護デバイス１３０１に対してアクセス要求を許可する制御を行う。
【０１２５】
そして、第２ＨＶ領域保護回路１３０２では、動作モードがＨＶモード以外のモードの場合、アクセス要求に対して各ＨＶ保護領域固有の制限を加えられている。このため、第２ＨＶ領域保護回路１３０２は、当該制限で禁止されるアクセス要求を、保護デバイス１３０１に出力することを抑止する。
【０１２６】
本変形例は、ゲストＯＳからは直接操作してはならないデバイスを保護する際に有効である。例えば、インターバルタイマや割込みコントローラ等は、一般に複数のゲストＯＳから制御するため、ゲストＯＳから直接それらのデバイスにアクセスしてはならない。そして、これらデバイスに対して制御を行う場合、ハイパーバイザが一旦それらの制御要求を受け付けて、不具合が生じない手順でこれらデバイスを制御する。このような手順で処理を行うことで安全性が向上する。
【０１２７】
（第２の実施の形態）
第１の実施の形態にかかるシステムＬＳＩ１００では、ＨＶ保護領域内の保護メモリ１０７にＨＶコード格納領域を設けられた。しかしながら、ＨＶコード格納領域をＨＶ保護領域内に設けることに制限するものではなく、例えばシステムＬＳＩに接続されたメモリ内に設けることにしても良い。そこで、第２の実施の形態では、システムＬＳＩに接続されたメモリ内にＨＶコード格納領域を設けた例について説明する。また、ＨＶモードエントリ及びＨＶモード脱出の別形態についても併せて説明する。
【０１２８】
図９に示すように、システムＬＳＩ１４００は、上述した第１の実施の形態に係るシステムＬＳＩ１００とは、第２ＨＶ領域保護回路１０６及び保護メモリ１０７が削除され、メモリ１５０とは格納された情報が異なるメモリ１４５０を備え、動作モード管理回路１０２とは処理が異なる動作モード管理回路１４０１を備えている点のみ異なる。なお、本実施の形態のシステムＬＳＩ１４００の構成で、第１の実施の形態のシステムＬＳＩ１００と共通な構成については、同一の符号を付して説明を省略する。
【０１２９】
メモリ１４５０は、メモリ１５０にさらにＨＶコード格納領域１４５１が追加されたものとする。また、メモリアクセス制御部１０３の制御により、動作モードが通常モードの場合、当該ＨＶコード格納領域１４５１への書き込みも禁止される。また、ＨＶコード格納領域１４５１の書込み禁止を指定する制御情報の設定は、ＨＶコード自身が行う。
【０１３０】
ＨＶコード格納領域１４５１は、ＨＶコードを格納している。図１０に示すようにＨＶコードは、エントリ部９０１に“disable  interrupt”を保持し、脱出部９０２に“return”を保持する。
【０１３１】
図１１に示すように、ＨＶコード格納領域１００１は、アドレス０１００〜０６００の間に格納されている。なお、図１１上に示されていないが、第１のゲストＯＳ格納領域１５１等についても同様にメモリ１４５０上に配置されている。これにより、アドレス０１００〜０６００以外のアドレスに対するフェッチの要求を受け付けた場合に、ＨＶコードを脱出して、第１のゲストＯＳ等に処理が切り替わったと判断することができる。
【０１３２】
動作モード管理回路１４０１は、検出部１４１１と、モード切替部１２２とを備え、プロセッサ１０１とメモリアクセス制御部１０３とを接続する第６通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。
【０１３３】
なお、検出部１４１１は、プロセッサ１０１とメモリアクセス制御部１０３とを接続する第６通信路を介して、メモリ１４５０のＨＶコード格納領域１４５１に格納されたＨＶコードの所定のアドレスに対する命令のフェッチ等の検出を行う。なお、詳細な処理については後述する。
【０１３４】
また、本実施の形態にかかるシステムＬＳＩ１４００は、第１の実施の形態のシステムＬＳＩ１００と同様に図５で示した処理手順に従って、動作モードの遷移に応じた制御情報の設定を行う。ただし、検出部１４１１が行うステップＳ５１２のＨＶモードエントリの検出と、ステップＳ５１５のＨＶモード脱出の検出のみ処理が異なる。そこで以下に、本実施の形態にかかる検出部１４１１が行う検出処理手順について説明する。
【０１３５】
次に、検出部１４１１が、図５のステップＳ５１２で行うＨＶモードエントリの検出について説明する。本実施の形態では、ＨＶコードのエントリ部で割込み禁止状態に設定する場合の例とする。つまり、図１０に示すＨＶコードでは、ＨＶコードが格納されている先頭アドレス（ＨＶＥｎｔｒｙ）に、割込みを禁止する命令(disable  interrupt)が記載されている。この命令がＨＶコードのエントリ部である。この命令はプロセッサが提供する機械語の１命令に相当する。
【０１３６】
ＨＶコードのエントリ部が実行される時に、まず、プロセッサ１０１は、第６通信路を介して、メモリ１４５０のＨＶコード格納領域１４５１のアドレス‘ＨＶＥｎｔｒｙ’に対して命令フェッチの要求を伝送する。そして、当該命令フェッチの要求を受け付けたメモリ１４５０は、ＨＶコード格納領域１４５１からデータ（‘ＨＶＥｎｔｒｙ’にある命令）を伝送する。
【０１３７】
そして、本実施の形態にかかる動作モード管理回路１４０１は、‘ＨＶＥｎｔｒｙ’に対する命令フェッチの要求を、第６通信路で確認した場合に、ＨＶコードのエントリ部に実行を移したことを保証すると共に、同時に割込み禁止状態であることを保証する。この割り込み禁止状態であるのを保証できるのは、上述したように先頭アドレスには割り込みを禁止する命令が含まれているためである。これにより、動作モード管理回路１４０１は、動作モードをＨＶモードに遷移する条件を満たしたと判断できる。
【０１３８】
図１２に示すように、まず、検出部１４１１は、第６通信路を監視して、プロセッサ１０１から伝送されてくる命令フェッチの要求を検出する（ステップＳ１１０１）。
【０１３９】
次に、検出部１４１１は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘ＨＶＥｎｔｒｙ’と一致するか否か判断する（ステップＳ１１０２）。そして、検出部１４１１が、異なると判断した場合（ステップＳ１１０２：Ｎｏ）、再び命令フェッチの検出を行う（ステップＳ１１０１）。
【０１４０】
そして、検出部１４１１は、アドレスが‘ＨＶＥｎｔｒｙ’と一致すると判断した場合（ステップＳ１１０２：Ｙｅｓ）、ＨＶモードエントリチェックが完了したものとする。そして、図５に示したステップＳ５１３以降の処理が行われることになる。
【０１４１】
次に、検出部１４１１が、ステップＳ５１５のＨＶモード脱出の検出について説明する。本実施の形態では、検出部１４１１は、ＨＶコード以外の命令のフェッチを検出した場合に、ＨＶモード脱出したと判断する。
【０１４２】
図１３に示すように、まず、検出部１４１１は、第６通信路を監視して、プロセッサ１０１からの命令フェッチの要求の検出を行う（ステップＳ１２０１）。
【０１４３】
次に検出部１４１１は、プロセッサ１０１からの命令フェッチの要求を検出した場合に、要求で指定されたアドレスが、ＨＶコードが格納されているアドレスの範囲外か否かを判断する（ステップＳ１２０２）。つまり、図１１で示した例では、ＨＶコード格納領域であるアドレス０１００〜アドレス０６００の範囲内に含まれているか否か判断する。検出部１４１１が、当該範囲内に含まれていると判断した場合（ステップＳ１２０２：Ｎｏ）、再びプロセッサ１０１からの命令フェッチの要求を検出する（ステップＳ１２０１）。
【０１４４】
また、検出部１４１１は、命令フェッチの要求で指定されたアドレスが、当該範囲外だと判断した場合（ステップＳ１２０２：Ｙｅｓ）、ＨＶモード脱出チェックが完了したと判断する。そして、図５のステップＳ５１６以降の処理が行われることになる。
【０１４５】
本実施の形態で示したＨＶモード脱出の検出処理手順では、ＨＶコード自体に不具合があった場合や、将来的にＨＶコードのセキュリティホールが見つかった場合でも、ＨＶコードの途中からゲストＯＳにジャンプされ、ＨＶモードのままゲストＯＳが実行されることを防ぐことが可能となる。
【０１４６】
なお、本形態において命令アドレスの比較回路を簡潔にするために、図１１に示すように、ＨＶコードがメモリ１４５０内のＨＶコード格納領域１４５１で連続したアドレス上に存在することが望ましい。これは、ＨＶコードとＨＶコード以外のプログラムが、メモリ１４５０のアドレス上で交互に存在する場合、比較すべきアドレス範囲が複数になり、比較回路が複雑になるためである。
【０１４７】
また、上述したＨＶ脱出の検出手法は、プログラム等が格納されたメモリとプロセッサとを接続した通信路が一経路で、プロセッサ１０１からメモリに対するアクセスを全て監視できる場合のみとする。仮に、プロセッサ１０１に接続された通信路が複数あり、ゲストＯＳのコードを格納したメモリとＨＶコード格納領域が格納されたメモリとが別の通信路に接続されている場合（例えば第１の実施の形態）、ゲストＯＳのコードの命令をフェッチする要求を、動作モード管理回路で監視できないため、ＨＶモードのままゲストＯＳが実行されてしまうことになる。したがって、このような通信路の構成をとる場合、上述したＨＶ脱出の検出手法を適用できない。
【０１４８】
なお、本実施の形態で示したシステムＬＳＩ１４００の構成で、第１の実施の形態で示した検出手法を用いて、動作モードの切り替えを行ってもよい。これに対し、第１の実施の形態では、第１経路を介して接続されている保護メモリ１０７に格納されたＨＶコード格納領域が配置され、第６通信路を介して接続されているメモリ１５０にゲストＯＳ等が配置されているため、当該メモリへのアクセス要求を動作モード管理回路１０２が検出できない。このため、第１の実施の形態で示した構成では、第２の実施形態で示したＨＶコード脱出の検出手法を用いて、動作モードを切り替えることはできない。
【０１４９】
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【０１５０】
変形例１では、ＨＶコード格納領域を有する保護メモリとプロセッサ１０１とが直接第１通信路で接続された例とする。
【０１５１】
図１４に示すように、システムＬＳＩ１５００は、上述した第１の実施の形態に係るシステムＬＳＩ１００とは、第１ＨＶ領域保護回路１０４、第２ＨＶ領域保護回路１０６が削除され、動作モード管理回路１０２とは処理が異なる動作モード管理回路１５０２を備え、保護メモリ１０７と配置が異なる保護メモリ１５０１を備え、メモリアクセス制御部１０３と処理が異なるメモリアクセス制御部１５０５を備え、デバイスアクセス制御部１０５と処理が異なるデバイスアクセス制御部１５０４を備え、さらにメモリ１５０３が追加されている点のみ異なる。なお、本実施の形態のシステムＬＳＩ１５００の構成で、第１の実施の形態のシステムＬＳＩ１００と共通な構成については、同一の符号を付して説明を省略する。
【０１５２】
保護メモリ１５０１は、ＨＶ保護領域内に格納されておらず、プロセッサ１０１から自由に参照可能なメモリとする。なお、保護メモリ１５０１は、プロセッサ１０１からの書込みが不可能なＲＯＭ（Read  Only  Memory）とする。これにより、ゲストＯＳからの修正を抑止することができる。ＨＶコード格納領域１５１１に格納されたＨＶコードは、第１の実施の形態の図３で示したＨＶコードと同様として説明を省略する。本変形例のように、ＨＶコードの書き換えを抑止できるのであれば、ＨＶコード格納領域が、ＨＶ保護領域外に存在しても良い。
【０１５３】
動作モード管理回路１５０２は、検出部１５２１と、モード切替部１５２２とを備え、第１の実施の形態と同様に、プロセッサ１０１と保護メモリ１５０１とを接続する第１通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。なお、動作モードの切り替え手法は、第１の実施の形態と同様の手法を用いることとして、説明を省略する。
【０１５４】
また、本実施の形態にかかるシステムＬＳＩ１５００では、ＨＶ保護領域にメモリアクセス制御部１５０５、デバイスアクセス制御部１５０４、メモリ１５０３が格納されている。
【０１５５】
また、メモリアクセス制御部１５０５、デバイスアクセス制御部１５０４及びメモリ１５０３は、それぞれ内部にＨＶ領域保護回路と同等の機能を備えているものとする。これにより、メモリアクセス制御部１５０５、デバイスアクセス制御部１５０４及びメモリ１５０３は、動作モードに従ってアクセスを制御することができる。
【０１５６】
なお、メモリアクセス制御部１５０５、デバイスアクセス制御部１５０４及びメモリ１５０３は、ＨＶ領域保護回路と同等の機能を備えている以外、メモリアクセス制御部１０３、デバイスアクセス制御部１０５及び保護メモリ１０７（但しＨＶコード格納領域１１２を除く）と同等として説明を省略する。
【０１５７】
メモリ１５０３は、第４メモリ領域１５０４を備えている。そして、メモリ１５０３は、ＨＶ領域保護回路と同等の機能により、第４メモリ領域に格納された情報を保護する。
【０１５８】
このようにＨＶコード格納領域１１２をＨＶ保護領域外に存在していたとしても、第１の実施の形態と同様に動作モードの切り替えで、安全性を確保することができる。
【産業上の利用可能性】
【０１５９】
以上のように、本発明にかかるデバイス制御装置は、プロセッサが仮想化サポート機能を有するか否かにかかわらず、ゲストＯＳで動作するときにアクセスを制御する技術として有用である。
【図面の簡単な説明】
【０１６０】
【図１】第１の実施の形態にかかるシステムＬＳＩの構成を示すブロック図である。
【図２】従来のプロセッサ上でハイパーバイザの実行途中に、不正な処理を行うソフトウェアコードに実行が移る例を示した図である。
【図３】第１の実施の形態にかかるシステムＬＳＩが有するＨＶコードのソースの例を示した図である。
【図４】第１の実施の形態にかかるシステムＬＳＩのソフトウェア構成の例を示した図である。
【図５】第１の実施の形態にかかるシステムＬＳＩにおいて、動作モードの遷移に応じて制御情報の設定を行う処理手順を示したフローチャートである。
【図６】第１の実施の形態にかかるシステムＬＳＩにおいて、動作モード管理回路の検出部のＨＶモードエントリの検出手順を示すフローチャートである。
【図７】第１の実施の形態にかかるシステムＬＳＩにおいて、動作モード管理回路の検出部のＨＶモード脱出の検出手順を示すフローチャートである。
【図８】第１の実施の形態の変形例２に係るシステムＬＳＩの構成を示すブロック図である。
【図９】第２の実施の形態に係るシステムＬＳＩの構成を示すブロック図である。
【図１０】第２の実施の形態にかかるシステムＬＳＩに接続されたメモリ内に格納されたＨＶコードのソースの例を示した図である。
【図１１】第２の実施の形態にかかるシステムＬＳＩに接続されたメモリ上に配置されたＨＶコード格納領域のアドレスの例を示した図である。
【図１２】第２の実施の形態にかかるシステムＬＳＩにおいて、動作モード管理回路の検出部のＨＶモードエントリの検出手順を示すフローチャートである。
【図１３】第２の実施の形態にかかるシステムＬＳＩにおいて、動作モード管理回路の検出部のＨＶモード脱出チェックのフローチャートである。
【図１４】変形例１に係るシステムＬＳＩの構成を示すブロック図である。
【符号の説明】
【０１６１】
１００、１３００、１４００、１５００  システムＬＳＩ
１０１  プロセッサ
１０２、１４０１、１５０２  動作モード管理回路
１０３、１５０５  メモリアクセス制御部
１０４  第１ＨＶ領域保護回路
１０５、１５０４  デバイスアクセス制御部
１０６、１３０２  第２ＨＶ領域保護回路
１０７、１５０１  保護メモリ
１１２、１４５１、１５１１  ＨＶコード格納領域
１２１、１４１１、１５２１  検出部
１２２、１５２２  モード切替部
１３１  第１制御部
１３２、１３１１  第２制御部
１５０、１４５０、１５０３  メモリ
１５１  第１のゲストＯＳ格納領域
１５２  第２のゲストＯＳ格納領域
１５３  第３のゲストＯＳ格納領域
１５４  第１メモリ領域
１５５  第２メモリ領域
１５６  第３メモリ領域
１３０１  保護デバイス
【図１】
2008176637.tif 000003
【図２】
2008176637.tif 000004
【図３】
2008176637.tif 000005
【図４】
2008176637.tif 000006
【図５】
2008176637.tif 000007
【図６】
2008176637.tif 000008
【図７】
2008176637.tif 000009
【図８】
2008176637.tif 000010
【図９】
2008176637.tif 000011
【図１０】
2008176637.tif 000012
【図１１】
2008176637.tif 000013
【図１２】
2008176637.tif 000014
【図１３】
2008176637.tif 000015
【図１４】
2008176637.tif 000016