(57)【特許請求の範囲】
【請求項１】
各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報を格納したメモリアクセス情報レジスタと、
前記各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリ領域へのアクセスの可否を判定する第１のアクセス判定回路と、を備え、
前記メモリにアクセスする仮想マシンに関する情報は、予め設定されたスケジュールに従って前記各々の仮想マシンの実行時間を割り当てる仮想マシンスケジューラから出力される、
メモリ保護回路。
【請求項２】
前記メモリアクセス情報レジスタは、
前記各々のメモリ領域に関するメモリ領域情報が格納され、前記メモリ領域に対応して設けられた複数のメモリ領域設定レジスタと、
前記各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報が格納され、前記メモリ領域に対応して設けられた複数のメモリ領域割当レジスタと、
を備える、
請求項１に記載のメモリ保護回路。
【請求項３】
前記第１のアクセス判定回路は、
前記各々のメモリ領域設定レジスタに対応して設けられ、前記各々のメモリ領域設定レジスタに格納されている前記メモリ領域情報に基づき前記各々の仮想マシンが前記メモリにアクセスする際に出力したメモリアドレスが前記メモリ領域に含まれているか否かを判定するアドレス判定回路と、
前記各々のアドレス判定回路に対応して設けられ、前記各々のメモリ領域割当レジスタに格納されている前記各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報と、前記メモリにアクセスする仮想マシンに関する情報と、に基づき前記アドレス判定回路の判定結果をマスクするメモリアクセス判定回路と、を備える、
請求項２に記載のメモリ保護回路。
【請求項４】
前記各々のメモリ領域設定レジスタに対応して設けられ、前記各々のメモリ領域割当レジスタに格納されている各々のメモリ領域設定レジスタにアクセス可能な仮想マシンに関する情報と、前記メモリ領域設定レジスタにアクセスする仮想マシンに関する情報と、に基づき前記仮想マシンによる前記メモリ領域設定レジスタへのアクセスの可否を判定するレジスタアクセス判定回路を更に備える、
請求項２または３に記載のメモリ保護回路。
【請求項５】
前記仮想マシンスケジューラは、前記仮想マシンに対してプログラムの実行時間の割り当てと処理される当該仮想マシンの処理順序を決定する、請求項１に記載のメモリ保護回路。
【請求項６】
前記メモリにアクセスする仮想マシンに関する情報は、前記各々の仮想マシンで実行される各々の命令の処理順序を決定する仮想マシン・スレッドスケジューラから出力される、請求項１に記載のメモリ保護回路。
【請求項７】
前記メモリ領域割当レジスタへのアクセス権限は、前記各々の仮想マシンを管理するハイパーバイザが有する、請求項２に記載のメモリ保護回路。
【請求項８】
前記メモリ領域割当レジスタおよび前記メモリ領域設定レジスタへのアクセス権限は、前記各々の仮想マシンを管理するハイバーバイザが有する、請求項２に記載のメモリ保護回路。
【請求項９】
前記第１のアクセス判定回路は、
前記メモリアクセス情報に基づき、前記各々の仮想マシンが前記メモリにアクセスする際に出力したメモリアドレスに対応するメモリ領域へのアクセスが許可されている仮想マシンに関する情報を出力するアドレス判定回路と、
前記アドレス判定回路から出力された前記メモリ領域へのアクセスが許可されている仮想マシンに関する情報と、前記メモリにアクセスする仮想マシンに関する情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定するメモリアクセス判定回路と、を備える、
請求項１に記載のメモリ保護回路。
【請求項１０】
前記仮想マシンスケジューラは、前記仮想マシンに対してプログラムの実行時間の割り当てと処理される当該仮想マシンの処理順序を決定する、請求項９に記載のメモリ保護回路。
【請求項１１】
前記メモリにアクセスする仮想マシンに関する情報は、前記各々の仮想マシンで実行される各々の命令の処理順序を決定する仮想マシン・スレッドスケジューラから出力される、請求項９に記載のメモリ保護回路。
【請求項１２】
前記各々の仮想マシンがアクセス可能なメモリアクセス情報レジスタ領域に関するレジスタアクセス情報を格納したレジスタアクセス情報レジスタと、
前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際のレジスタアドレスおよび前記メモリアクセス情報レジスタにアクセスする仮想マシンに関する情報と、前記レジスタアクセス情報レジスタに格納されている前記レジスタアクセス情報と、に基づき、前記仮想マシンによる前記メモリアクセス情報レジスタへのアクセスの可否を判定する第２のアクセス判定回路と、を備える、
請求項１に記載のメモリ保護回路。
【請求項１３】
前記第２のアクセス判定回路は、
前記レジスタアクセス情報に基づき、前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際に出力したレジスタアドレスに対応するレジスタ領域へのアクセスが許可されている仮想マシンに関する情報を出力するレジスタアドレス判定回路と、
前記レジスタアドレス判定回路から出力された前記メモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報と、前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際に出力した前記メモリアクセス情報レジスタにアクセスする仮想マシンに関する情報と、に基づき、前記仮想マシンによる前記メモリアクセス情報レジスタへのアクセスの可否を判定するレジスタアクセス判定回路と、を備える、
請求項１２に記載のメモリ保護回路。
【請求項１４】
各々の仮想マシンに対応したプログラムを実行する演算回路と、
前記プログラムの実行時間を前記仮想マシンに対して割り当てる仮想マシンスケジューラと、
前記各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護回路と、を備え、
前記メモリ保護回路は、
前記各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報を格納したメモリアクセス情報レジスタと、
前記各々の仮想マシンが前記メモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定する第１のアクセス判定回路と、を備え、
前記メモリにアクセスする仮想マシンに関する情報は、前記仮想マシンスケジューラから出力される、
処理装置。
【請求項１５】
各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタに格納するステップと、
前記各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定するステップと、を備え、
前記メモリにアクセスする仮想マシンに関する情報は、予め設定されたスケジュールに従って前記各々の仮想マシンの実行時間を割り当てる仮想マシンスケジューラから出力される、
メモリ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ保護回路、処理装置、およびメモリ保護方法に関し、例えば各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護回路、処理装置、およびメモリ保護方法に関する。
【背景技術】
【０００２】
一般的に、ＣＰＵ（Central Processing Unit）等の処理装置は、不正なアクセスからメモリを保護するために、メモリへのアクセスを制御するメモリ保護機構を備えている。メモリ保護機構は、メモリ空間の所定のアドレスに対して、書き込みの許可／禁止や読み込みの許可／禁止を設定することができる。メモリ保護機構としては、例えばメモリ管理ユニット（ＭＭＵ：Memory Management Unit）やメモリ保護ユニット（ＭＰＵ：Memory Protection Unit）がある。
【０００３】
また、単一の物理リソース（ハードウェア資源）を複数のリソースに見せかける仮想化技術がある。この仮想化技術を用いることで、例えば、１つのＣＰＵ上で複数の仮想マシン（ＶＭ：Virtual Machine）を動作させることができ、これにより各々の仮想マシン上で異なるオペレーティングシステム（ＯＳ：Operating System）を動作させることができる。
【０００４】
特許文献１には、信頼度が高いと判定された保護領域に対しては直接的なアクセスを可能にして実行効率の低下を軽減し、信頼度が低いと判定された保護領域への直接的なアクセスを不正アクセスとして抑制するメモリ保護技術が開示されている。特許文献２には、信頼性の高いコンピュータシステムを提供し、特にオペレーティングシステムのカーネルを保護する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１４６０３０号公報
【特許文献２】特開２００９−００９２３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
背景技術で説明したように、仮想化技術を用いることで、例えば１つのＣＰＵ上で複数の仮想マシンを動作させることができる。この場合、各々の仮想マシン上では異なるＯＳやアプリケーションプログラムを動作させることが可能となる一方、各々の仮想マシンは単一の物理的なメモリを共有して使用するため、ＣＰＵに仮想化技術を用いるのにあわせて、各々の仮想マシンによるメモリへのアクセスが干渉しないようにする必要がある。このため、各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構を設ける必要がある。
【０００７】
しかしながら、メモリ保護機構として、例えばメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット（ＭＭＵ）を用いると、使用するハードウェア資源が多くなるという問題がある。このため、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構（メモリ保護回路）が必要とされていた。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態にかかるメモリ保護回路は、メモリアクセス情報レジスタとアクセス判定回路とを備える。メモリアクセス情報レジスタには、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報が格納されており、アクセス判定回路は、各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよびメモリにアクセスする仮想マシンに関する情報と、メモリアクセス情報レジスタに格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定する。
【００１０】
一実施の形態にかかる処理装置は、各々の仮想マシンに対応したプログラムを実行する演算回路と、プログラムの実行時間を仮想マシンに対して割り当てる仮想マシンスケジューラと、各々の仮想マシンによるメモリへのアクセスを制御する前記メモリ保護回路と、を備える。
【００１１】
一実施の形態にかかるメモリ保護方法は、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタに格納し、各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよびメモリにアクセスする仮想マシンに関する情報と、メモリアクセス情報レジスタに格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリへのアクセスの可否を判定する。
【発明の効果】
【００１２】
前記一実施の形態によれば、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。
【図２】仮想化技術を説明するための図である。
【図３】演算回路で実行される命令の処理順序の一例を説明するための図である。
【図４】実施の形態１にかかるメモリ保護回路の一例を示すブロック図である。
【図５】実施の形態１にかかるメモリ保護回路が備えるメモリ領域設定レジスタの一例を示す図である。
【図６】実施の形態１にかかるメモリ保護回路が備えるメモリ領域割当レジスタの一例を示す図である。
【図７】仮想化技術を用いて構築したシステムを説明するためのブロック図である。
【図８】実施の形態１にかかるメモリ保護回路の動作を説明するためのフローチャートである。
【図９】実施の形態２にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。
【図１０】実施の形態２にかかるメモリ保護回路の一例を示すブロック図である。
【図１１】実施の形態２にかかるメモリ保護回路の動作を説明するためのフローチャートである。
【図１２】実施の形態３にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。
【図１３】演算回路で実行される命令の処理順序の一例を説明するための図である。
【図１４】実施の形態４にかかるメモリ保護回路の一例を示すブロック図である。
【図１５】実施の形態５にかかるメモリ保護回路の一例を示すブロック図である。
【図１６】実施の形態５にかかるメモリ保護回路が備えるメモリアクセス情報レジスタに格納されている情報の一例を示す表である。
【図１７】実施の形態６にかかるメモリ保護回路の一例を示すブロック図である。
【図１８】実施の形態６にかかるメモリ保護回路が備えるレジスタアクセス情報レジスタに格納されている情報の一例を示す表である。
【発明を実施するための形態】
【００１４】
＜実施の形態１＞
図１は、実施の形態１にかかるメモリ保護回路を備えた処理装置（ＣＰＵ）を説明するためのブロック図である。図１に示す処理装置１は、命令バッファ２、セレクタ３、演算回路４、仮想マシンスケジューラ５、およびメモリ保護回路６_１を備える。メモリ保護回路６_１は、メモリアクセス情報レジスタ８およびアクセス判定回路９を備える。図１に示す処理装置１は、バス１０を介してメモリ１１と接続されている。なお、本実施の形態ではメモリ保護回路６_１が処理装置１に含まれている場合を例として説明するが、メモリ保護回路６_１は処理装置１と独立に設けられていてもよい。
【００１５】
命令バッファ２は、処理装置１で処理するプログラムを一時的に格納する。命令バッファ２は、命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２を有する。各命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２には、各仮想マシンに対応したプログラムが一時的に格納される。命令バッファ２には、例えばバス１０を介して命令（プログラム）が供給されてもよく、また命令メモリ（不図示）に格納されている命令が供給されるようにしてもよい。
【００１６】
セレクタ３は、仮想マシンスケジューラ５が出力する仮想マシン選択信号ＶＭ_ＳＥＬに応じて命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２のいずれか１つを選択し、選択した命令バッファ領域から読み出したプログラムを演算回路４に出力する。つまり、セレクタ３は、仮想マシン選択信号ＶＭ_ＳＥＬに応じて複数の仮想マシン（ＶＭ＃０〜ＶＭ＃２）の中から１つの仮想マシンを選択し、選択した仮想マシンで実行されるプログラムを演算回路４に出力する。ここで、各々の命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２は、ＶＭ＃０〜ＶＭ＃２にそれぞれ対応している。
【００１７】
仮想マシンスケジューラ５は、予め設定されたスケジュールに従って、複数の仮想マシンのうち次の実行期間において実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号ＶＭ_ＳＥＬを出力する。つまり、仮想マシンスケジューラ５は、命令バッファ２が備える命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２から出力されるプログラムに対応した仮想マシンの順番をスケジューリングし、このスケジューリングに従ってプログラムが演算回路４で実行されるように、仮想マシン選択信号ＶＭ_ＳＥＬを出力する。また、仮想マシンスケジューラ５は、演算回路４で実行されているプログラムに対応した仮想マシンに関する情報ＶＭ_ｎ_Ｍを演算回路４を経由してメモリ保護回路６_１に出力する。
【００１８】
演算回路４は、セレクタ３によって選択されたプログラムに基づき演算処理を実行する。具体的には、演算回路４は複数の実行ステージを有し、パイプライン処理により演算を行う。また、演算回路４は、プログラムの実行結果に応じて、メモリ１１にアクセスするためのメモリメモリアドレスＡＤＤ_Ｍや書き込みデータＷＤ_Ｍを送信し、読み込みデータＲＤ_Ｍを受信する。演算回路４から送信されたメモリメモリアドレスＡＤＤ_Ｍや書き込みデータＷＤ_Ｍは、バス１０を介してメモリ１１に供給される。
【００１９】
図２は、仮想化技術を説明するための図である。仮想化技術は、単一のハードウェア資源を複数のリソースに見せかける技術である。ここでハードウェア資源２１は、図１に示す処理装置（ＣＰＵ）１やメモリ１１、その他周辺装置等に対応している。図２に示すように、ハードウェア資源と仮想マシンとの間の階層には、ハイパーバイザが設けられている。ハイパーバイザは、複数の仮想マシン（ＶＭ＃０〜ＶＭ＃２）を管理する権限を有するソフトウェアである。そして、各々の仮想マシン（ＶＭ＃０〜ＶＭ＃２）上では、それぞれ異なるスーパバイザ（オペレーティングシステムＯＳ＃０〜ＯＳ＃２）が動作する。各々のスーパバイザ（オペレーティングシステムＯＳ＃０〜ＯＳ＃２）では、それぞれ異なるアプリケーションプログラム＃０〜＃２が動作する。このように、仮想化技術を用いることで、１つの処理装置（ＣＰＵ）上で複数の仮想マシン（ＶＭ＃０〜ＶＭ＃２）を動作させることができ、これにより各々の仮想マシン上で異なるオペレーティングシステム（ＯＳ＃０〜ＯＳ＃２）を動作させることができる。
【００２０】
図３は、演算回路４で実行されるプログラムの処理順序の一例を説明するための図である。図３に示すプログラム＃００〜＃０１（仮想マシン＃０に対応する）は、命令バッファ２が備える命令バッファ領域ＢＵＦ_０に格納されている。同様に、プログラム＃１０〜＃１１（仮想マシン＃１に対応する）は、命令バッファ領域ＢＵＦ_１に格納されている。プログラム＃２０〜＃２１（仮想マシン＃２に対応する）は、命令バッファ領域ＢＵＦ_２に格納されている。
【００２１】
図３では、一例として、仮想マシン（ＶＭ＃０）上でプログラム＃００〜＃０１が実行され、仮想マシン（ＶＭ＃１）上でプログラム＃１０〜＃１１が実行され、仮想マシン（ＶＭ＃２）上でプログラム＃２０〜＃２１が実行される場合を示している。
【００２２】
セレクタ３は、仮想マシンスケジューラ５から出力された仮想マシン選択信号ＶＭ_ＳＥＬに応じて命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２のうちのいずれか１つを選択し、選択した命令バッファ領域から読み出したプログラムを演算回路４に出力する。図３に示す例では、命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２に格納されているプログラムがプログラム＃００、プログラム＃１０、プログラム＃２０、プログラム＃０１、・・・、の順番に出力されるように、仮想マシンスケジューラ５においてスケジューリングされている場合を示している。このように、セレクタ３から出力された各プログラムを演算回路４を用いて順次実行することで、各々のプログラムを予めスケジューリングされた複数の仮想マシン（ＶＭ＃０〜ＶＭ＃２）のそれぞれの上で処理することができる。
【００２３】
なお、図３に示した仮想マシンで処理するプログラムやプログラムを処理する順序（仮想マシンスケジューリング）は一例であり、これらは任意に決定することができる。
【００２４】
図１に示すメモリ保護回路６_１は、メモリアクセス情報レジスタ８とアクセス判定回路９とを備える。メモリアクセス情報レジスタ８には、各々の仮想マシンがアクセス可能なメモリ１１のメモリ領域に関するメモリアクセス情報が格納されている。ここで、仮想マシンがメモリ１１のメモリ領域にアクセスするとは、各々の仮想マシンに対応したプログラムが演算回路４で実行された際に、演算回路４がメモリ１１のメモリ領域にアクセスすることと同義である。つまり、仮想マシン（演算回路４）は、メモリ１１に対してメモリメモリアドレスＡＤＤ_Ｍや書き込みデータＷＤ_Ｍを送信し、また読み込みデータＲＤ_Ｍを受信することで、メモリ１１のメモリ領域にアクセスする。なお、メモリ１１やメモリ保護回路６_１には、メモリメモリアドレスＡＤＤ_Ｍ以外にも、例えば、メモリ１１へのアクセスの種類（書き込みアクセス／読み込みアクセス）に関する情報やアクセス幅（バイト／ハーフワード／ロングワード）に関する情報も送信される。
【００２５】
また、アクセス判定回路９（第１のアクセス判定回路）は、各々の仮想マシンがメモリ１１にアクセスする際のメモリメモリアドレスＡＤＤ_Ｍおよびメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、メモリアクセス情報レジスタ８に格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定する。
【００２６】
図４は、本実施の形態にかかるメモリ保護回路６_１の一例を示すブロック図である。図４に示すように、メモリアクセス情報レジスタ８は、メモリ領域割当レジスタ＃０〜＃３とメモリ領域設定レジスタ＃０〜＃３とを備える。各々のメモリ領域設定レジスタ＃０〜＃３には、メモリ１１のメモリ領域に関するメモリ領域情報が格納されている。図４に示す例では、メモリアクセス情報レジスタ８は、４つのメモリ領域設定レジスタ＃０〜＃３を備えており、各々のメモリ領域設定レジスタ＃０〜＃３には、メモリ１１の４つのメモリ領域＃０〜＃３に関する情報がそれぞれ格納されている。つまり、メモリ領域設定レジスタ＃０〜＃３は、各々のメモリ領域＃０〜＃３に対応して設けられている。
【００２７】
図５は、本実施の形態にかかるメモリ保護回路６_１が備えるメモリ領域設定レジスタ＃０〜＃３の一例を示す図である。図５に示すように、各々のメモリ領域設定レジスタ＃０〜＃３は、上限アドレスレジスタ（ＭＰＵＡ０〜ＭＰＵＡ３）、下限アドレスレジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）、および属性レジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）を備える。
【００２８】
上限アドレスレジスタ（ＭＰＵＡ０〜ＭＰＵＡ３）は、各々のメモリ領域＃０〜＃３の上限アドレスを格納するレジスタである。下限アドレスレジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）は、各々のメモリ領域＃０〜＃３の下限アドレスを格納するレジスタである。例えば、メモリ１１のメモリ領域としてメモリ領域＃０〜＃３を設定する場合、メモリ領域設定レジスタ＃０の上限アドレスレジスタＭＰＵＡ０にはメモリ領域＃０の上限アドレスを、下限アドレスレジスタＭＰＬＡ０にはメモリ領域＃０の下限アドレスを格納する。メモリ領域設定レジスタ＃１の上限アドレスレジスタＭＰＵＡ１にはメモリ領域＃１の上限アドレスを、下限アドレスレジスタＭＰＬＡ１にはメモリ領域＃１の下限アドレスを格納する。メモリ領域設定レジスタ＃２の上限アドレスレジスタＭＰＵＡ２にはメモリ領域＃２の上限アドレスを、下限アドレスレジスタＭＰＬＡ２にはメモリ領域＃２の下限アドレスを格納する。メモリ領域設定レジスタ＃３の上限アドレスレジスタＭＰＵＡ３にはメモリ領域＃３の上限アドレスを、下限アドレスレジスタＭＰＬＡ３にはメモリ領域＃３の下限アドレスを格納する。このとき、メモリ１１のメモリ領域＃０〜＃３は、典型的には互いに重ならないように設定する。また、属性レジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）は、各々のメモリ領域＃０〜＃３の属性（つまり、書き込みの許可／禁止や読み込みの許可／禁止）を格納するレジスタである。
【００２９】
図４に示すメモリアクセス情報レジスタ８が備えるメモリ領域割当レジスタ＃０〜＃３には、各々のメモリ領域＃０〜＃３に対してアクセス可能な仮想マシンに関する情報が格納されている。つまり、メモリ領域割当レジスタ＃０〜＃３には、各々のメモリ領域＃０〜＃３にアクセス可能な仮想マシン（ＶＭ＃０〜ＶＭ＃２）に関する情報が格納されている。
【００３０】
図６は、本実施の形態にかかるメモリ保護回路６_１が備えるメモリ領域割当レジスタ＃０〜＃３に格納されている情報の一例を示す図である。図６に示すように、各々のメモリ領域割当レジスタ＃０〜＃３は、メモリ領域レジスタと仮想マシンレジスタとを備える。各々のメモリ領域レジスタには、メモリ領域に関する情報（メモリ領域＃０〜＃３）が格納されている。また、各々の仮想マシンレジスタには、各々のメモリ領域＃０〜＃３にアクセス可能な仮想マシン（ＶＭ＃０〜ＶＭ＃２）に関する情報が格納されている。
【００３１】
図６に示す例では、メモリ領域割当レジスタ＃０のメモリ領域レジスタにメモリ領域＃０が格納され、仮想マシンレジスタに仮想マシンＶＭ＃０が格納されているので、メモリ領域＃０にアクセス可能な仮想マシンとして仮想マシンＶＭ＃０が設定されている。また、メモリ領域割当レジスタ＃１のメモリ領域レジスタにメモリ領域＃１が格納され、仮想マシンレジスタに仮想マシンＶＭ＃０が格納されているので、メモリ領域＃１にアクセス可能な仮想マシンとして仮想マシンＶＭ＃０が設定されている。また、メモリ領域割当レジスタ＃２のメモリ領域レジスタにメモリ領域＃２が格納され、仮想マシンレジスタに仮想マシンＶＭ＃１が格納されているので、メモリ領域＃２にアクセス可能な仮想マシンとして仮想マシンＶＭ＃１が設定されている。また、メモリ領域割当レジスタ＃３のメモリ領域レジスタにメモリ領域＃３が格納され、仮想マシンレジスタに仮想マシンＶＭ＃２が格納されているので、メモリ領域＃３にアクセス可能な仮想マシンとして仮想マシンＶＭ＃２が設定されている。
【００３２】
例えば、ハイパーバイザのみにメモリ領域割当レジスタ＃０〜＃３へのアクセス権限を認め、各々の仮想マシン（スーパバイザ）にはアクセス権限を認めないようにすることで、各々の仮想マシンがメモリ領域割当レジスタ＃０〜＃３の情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
【００３３】
また、図４に示すアクセス判定回路９は、アドレス判定回路＃０〜＃３、メモリアクセス判定回路＃０〜＃３、ＡＮＤ回路（ＡＮＤ２_０〜ＡＮＤ２_３）、およびＯＲ回路（ＯＲ_１）を備える。アドレス判定回路＃０〜＃３は、各々のメモリ領域設定レジスタ＃０〜＃３に対応して設けられている。そして、アドレス判定回路＃０〜＃３は、各々のメモリ領域設定レジスタ＃０〜＃３に格納されているメモリ領域情報に基づき、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がメモリ１１にアクセスする際に出力したメモリメモリアドレスＡＤＤ_Ｍが各々のメモリ領域設定レジスタ＃０〜＃３で設定されたメモリ領域＃０〜＃３に含まれているか否かを判定する。
【００３４】
例えば、アドレス判定回路＃０は、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がメモリ１１にアクセスする際に出力したメモリメモリアドレスＡＤＤ_Ｍと、メモリ領域設定レジスタ＃０に格納されているメモリ領域＃０の上限アドレスおよび下限アドレスと、を比較する。そして、当該メモリメモリアドレスＡＤＤ_Ｍがメモリ領域＃０の上限アドレスおよび下限アドレスの範囲内に含まれている場合、アドレス判定回路＃０は、当該メモリメモリアドレスＡＤＤ_Ｍがメモリ領域設定レジスタ＃０で設定されたメモリ領域＃０に含まれていると判定する。
【００３５】
例えば、アドレス判定回路＃０は、メモリアドレスＡＤＤ_Ｍがメモリ領域設定レジスタ＃０で設定されたメモリ領域＃０に含まれていると判定した場合、ＡＮＤ２_０にハイレベルの信号"１"を出力する。一方、メモリアドレスＡＤＤ_Ｍがメモリ領域設定レジスタ＃０で設定されたメモリ領域＃０に含まれていないと判定した場合、ＡＮＤ２_０にロウレベルの信号"０"を出力する。アドレス判定回路＃１〜アドレス判定回路＃３についても、上記で説明したアドレス判定回路＃０の場合と同様である。
【００３６】
メモリアクセス判定回路＃０〜＃３は、各々のアドレス判定回路＃０〜＃３に対応して設けられている。そして、各々のメモリアクセス判定回路＃０〜＃３は、各々のメモリ領域割当レジスタ＃０〜＃３に格納されている各々のメモリ領域＃０〜＃３に対してアクセス可能な仮想マシンに関する情報と、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、アドレス判定回路＃０〜＃３の判定結果をマスクする。
【００３７】
ここで、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、各々のプログラムに対応した仮想マシンの順番をスケジューリングする仮想マシンスケジューラ５から演算回路４を経由してアクセス判定回路９に供給される。つまり、仮想マシンスケジューラ５は、演算回路４で実行しているプログラムに対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ５は、メモリアクセス判定回路＃０〜＃３に対して、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍを出力することができる。
【００３８】
メモリアクセス判定回路＃０は、仮想マシンスケジューラ５から出力されたメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、メモリ領域割当レジスタ＃０に格納されているメモリ領域＃０に対してアクセス可能な仮想マシンに関する情報と、を比較する。例えば、メモリアクセス判定回路＃０は、メモリ領域設定レジスタ＃０で設定されるメモリ領域＃０にアクセス可能な仮想マシンＶＭ＃０と、仮想マシンスケジューラ５から出力されたメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、を比較する。
【００３９】
そして、メモリアクセス判定回路＃０は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍが、メモリ領域割当レジスタ＃０に格納されているメモリ領域＃０にアクセス可能な仮想マシンＶＭ＃０と一致する場合は、仮想マシンＶＭ＃０がメモリ１１にアクセス可能であると判定し、ＡＮＤ２_０にハイレベルの信号"１"を出力する。メモリアクセス判定回路＃０から出力された信号がハイレベル"１"の場合、ＡＮＤ２_０は、アドレス判定回路＃０から出力された判定結果をマスクすることなく、ＯＲ_１に出力する。つまり、ＡＮＤ２_０は、アドレス判定回路＃０から出力された判定結果をそのままＯＲ_１に出力する。
【００４０】
一方、メモリアクセス判定回路＃０は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍが、メモリ領域割当レジスタ＃０に格納されているメモリ領域＃０にアクセス可能な仮想マシンＶＭ＃０と一致しない場合は、仮想マシンによるメモリ１１へのアクセスが禁止されていると判定し、ＡＮＤ２_０にロウレベルの信号"０"を出力する。メモリアクセス判定回路＃０から出力された信号がロウレベル"０"の場合、ＡＮＤ２_０は、アドレス判定回路＃０から出力された判定結果をマスクする。このとき、ＡＮＤ２_０は、アドレス判定回路＃０から出力された判定結果にかかわらずロウレベル"０"の信号をＯＲ_１に出力する。
【００４１】
メモリアクセス判定回路＃１〜＃３についても、上記で説明したメモリアクセス判定回路＃０の場合と同様である。また、メモリ１１からデータＲＤ_Ｍを読み込む場合も上記の場合と同様である。
【００４２】
ＯＲ_１は、ＡＮＤ２_０〜ＡＮＤ２_３から供給された信号のＯＲ演算結果をメモリアクセス判定結果ＯＵＴ_Ｍとして出力する。つまり、ＯＲ_１は、ＡＮＤ２_０〜ＡＮＤ２_３のうちのいずれかからハイレベルの信号が出力された場合、メモリアクセス判定結果ＯＵＴ_Ｍとしてアクセス許可を示すハイレベルの信号を出力する。
【００４３】
メモリ保護回路６_１から出力されたメモリアクセス判定結果ＯＵＴ_Ｍは、例えばバス１０を介してメモリ１１に供給される。メモリ１１は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシン（演算回路４）によるメモリ１１へのアクセスを無効とする。一方、メモリ１１は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシン（演算回路４）によるメモリ１１へのアクセスを有効とする。
【００４４】
なお、メモリ保護回路６_１から出力されたメモリアクセス判定結果ＯＵＴ_Ｍは、例えば演算回路４に供給されるようにしてもよい。この場合は、演算回路４は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシンによるメモリ１１へのアクセスを無効として処理する。一方、演算回路４は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシンによるメモリ１１へのアクセスを有効として処理する。
【００４５】
次に、アクセス判定回路９におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンＶＭ＃０がメモリ領域＃２にアクセスする場合について説明する。仮想マシンＶＭ＃０がメモリ領域＃２にアクセスしようとした場合、演算回路４はアドレス判定回路＃０〜＃３にメモリ領域＃２に対応したメモリアドレスＡＤＤ_Ｍを出力する。また、仮想マシンスケジューラ５は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃０を示す情報ＶＭ_０_Ｍを演算回路４を経由してメモリアクセス判定回路＃０〜＃３に出力する。アドレス判定回路＃０〜＃３に供給されたメモリアドレスＡＤＤ_Ｍはメモリ領域＃２に対応したメモリアドレスであるので、アドレス判定回路＃２はハイレベルの信号をＡＮＤ２_２に出力する。一方、アドレス判定回路＃２以外のアドレス判定回路＃０、＃１、＃３はロウレベルの信号をＡＮＤ２_０、ＡＮＤ２_１、ＡＮＤ２_３にそれぞれ出力する。
【００４６】
また、仮想マシンＶＭ＃０に対応するメモリ領域はメモリ領域＃０、＃１であるので（図６参照）、メモリアクセス判定回路＃０、＃１は、メモリ１１にアクセスする仮想マシンＶＭ＃０に関する情報ＶＭ_０_Ｍが供給されると、ハイレベルの信号をＡＮＤ２_０、ＡＮＤ２_１にそれぞれ出力する。一方、メモリアクセス判定回路＃２、＃３は、メモリ１１にアクセスする仮想マシンＶＭ＃０に関する情報ＶＭ_０_Ｍが供給されると、ロウレベルの信号をＡＮＤ２_２、ＡＮＤ２_３にそれぞれ出力する。
【００４７】
アドレス判定回路＃２から出力されたハイレベルの信号は、メモリアクセス判定回路＃２から出力された信号がロウレベルであるため、ＡＮＤ２_２によってマスクされる。このため、ＡＮＤ２_２からはロウレベルの信号が出力される。また、アドレス判定回路＃０、＃１、＃３からはロウレベルの信号が出力されているので、ＡＮＤ２_０、ＡＮＤ２_１、ＡＮＤ２_３のそれぞれもロウレベルの信号を出力する。従って、ＯＲ_１からはメモリアクセス判定結果ＯＵＴ_Ｍとして、アクセス禁止を示すロウレベルの信号が出力される。このようにして、仮想マシンＶＭ＃０によるメモリ領域＃２へのアクセスが禁止される。
【００４８】
また、他の例として、仮想マシンＶＭ＃２がメモリ領域＃３にアクセスする場合について説明する。仮想マシンＶＭ＃２がメモリ領域＃３にアクセスしようとした場合、演算回路４はアドレス判定回路＃０〜＃３にメモリ領域＃３に対応したメモリアドレスＡＤＤ_Ｍを出力する。また、仮想マシンスケジューラ５は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃２を示す情報ＶＭ_２_Ｍを演算回路４を経由してメモリアクセス判定回路＃０〜＃３に出力する。アドレス判定回路＃０〜＃３に供給されたメモリアドレスＡＤＤ_Ｍはメモリ領域＃３に対応したメモリアドレスであるので、アドレス判定回路＃３はハイレベルの信号をＡＮＤ２_３に出力する。一方、アドレス判定回路＃３以外のアドレス判定回路＃０〜＃２はロウレベルの信号をＡＮＤ２_０〜ＡＮＤ２_２にそれぞれ出力する。
【００４９】
また、仮想マシンＶＭ＃２に対応するメモリ領域はメモリ領域＃３であるので、メモリアクセス判定回路＃３は、メモリ１１にアクセスする仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍが供給されると、ハイレベルの信号をＡＮＤ２_３に出力する。一方、メモリアクセス判定回路＃０〜＃２は、メモリ１１にアクセスする仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍが供給されると、ロウレベルの信号をＡＮＤ２_０〜ＡＮＤ２_２にそれぞれ出力する。
【００５０】
アドレス判定回路＃３から出力されたハイレベルの信号は、メモリアクセス判定回路＃３から出力された信号がハイレベルであるため、ＡＮＤ２_３によってマスクされない。よって、ＡＮＤ２_３からはハイレベルの信号が出力される。従って、ＯＲ_１からはメモリアクセス判定結果ＯＵＴ_Ｍとして、アクセス許可を示すハイレベルの信号が出力される。このようにして、仮想マシンＶＭ＃２によるメモリ領域＃３へのアクセスが許可される。
【００５１】
図７は、仮想化技術を用いて構築したシステムを説明するためのブロック図である。図７に示すように、本実施の形態にかかる処理装置（ＣＰＵ）に仮想化技術を用いた場合は、単一のハードウェア資源を用いて複数の仮想マシンＶＭ＃０〜ＶＭ＃２（４２_０〜４２_２）を動作させることができる。各々の仮想マシンＶＭ＃０〜ＶＭ＃２上では、それぞれ異なるスーパバイザ４３_０〜４３_２（オペレーティングシステムＯＳ＃０〜ＯＳ＃２）が動作する。
【００５２】
ハイパーバイザ４１は、仮想マシンＶＭ＃０〜ＶＭ＃２を管理する権限を有する。また、ハイパーバイザ４１は、メモリ保護回路６_１のメモリ領域割当レジスタ＃０〜＃３にアクセスする権限を有する。すなわち、ハイパーバイザ４１はメモリ保護回路６_１のメモリ領域割当レジスタ＃０〜＃３を書き換えることで、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がアクセス可能なメモリ領域＃０〜＃３を任意に設定することができる。
【００５３】
次に、メモリ保護回路６_１を用いて仮想マシン（演算回路４）によるメモリ１１へのアクセスを制御する場合の動作について、図８を用いて説明する。なお、以下では、一例として仮想マシン（演算回路４）がメモリ１１に情報を書き込む動作について説明するが、仮想マシンがメモリ１１から情報を読み込む動作についても同様である。
【００５４】
仮想マシンスケジューラ５は、予め設定されたスケジュールに従って、実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号ＶＭ_ＳＥＬをセレクタ３に出力する。また、仮想マシンスケジューラ５は、演算回路４で実行されているプログラムに対応した仮想マシンに関する情報ＶＭ_ｎ_Ｍを演算回路４に出力する（ステップＳ１）。セレクタ３は、仮想マシン選択信号ＶＭ_ＳＥＬに応じて選択された仮想マシンに対応するプログラムを演算回路４に出力する（ステップＳ２）。
【００５５】
そして、仮想マシン（演算回路４）においてプログラムが実行されると、仮想マシン（演算回路４）はメモリ１１に対してアクセス要求をする（ステップＳ３）。仮想マシン（演算回路４）は、メモリ１１へアクセス要求する際、メモリ保護回路６_１のアクセス判定回路９に対して、メモリアドレスＡＤＤ_Ｍを出力する（ステップＳ４）。また、仮想マシンスケジューラ５から出力されたメモリにアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、演算回路４を経由してアクセス判定回路９に出力される（ステップＳ５）。アクセス判定回路９は、仮想マシンによるメモリ１１へのアクセスの可否を判定する（ステップＳ６）。
【００５６】
すなわち、アクセス判定回路９が備えるアドレス判定回路＃０〜＃３は、各々のメモリ領域設定レジスタ＃０〜＃３に格納されているメモリ領域情報に基づき、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がメモリ１１にアクセスする際に出力したメモリアドレスＡＤＤ_Ｍが各々のメモリ領域設定レジスタ＃０〜＃３で設定されたメモリ領域＃０〜＃３に含まれているか否かを判定する。このとき、アドレス判定回路＃０〜＃３は、メモリアドレスＡＤＤ_Ｍがメモリ領域設定レジスタ＃０〜＃３で設定されたメモリ領域に含まれていると判定した場合、ハイレベルの信号"１"を出力する。
【００５７】
また、メモリアクセス判定回路＃０〜＃３は、メモリ領域割当レジスタ＃０〜＃３に格納されている各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報と、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、アドレス判定回路＃０〜＃３の判定結果をマスクする。
【００５８】
そして、アクセス判定回路９が、仮想マシンによるメモリ１１へのアクセスを許可した場合（ステップＳ７：Ｙｅｓ）、仮想マシンによるメモリ１１へのアクセスが有効とされる（ステップＳ８）。つまり、メモリ１１のメモリアドレスＡＤＤ_Ｍに書き込みデータＷＤ_Ｍが書き込まれる。一方、アクセス判定回路９が、仮想マシンによるメモリ１１へのアクセスを禁止した場合（ステップＳ７：Ｎｏ）、仮想マシンによるメモリ１１へのアクセスが無効とされる（ステップＳ９）。
【００５９】
すなわち、アドレス判定回路＃０〜＃３のうちのいずれか一つのアドレス判定回路からハイレベルの信号が出力され、且つ、当該ハイレベルの信号が出力されたアドレス判定回路に対応するメモリアクセス判定回路からハイレベルの信号が出力された場合、アクセス判定回路９は、仮想マシンによるメモリ１１へのアクセスを許可する。この場合は、メモリアクセス判定結果ＯＵＴ_Ｍとしてハイレベルの信号が出力され、仮想マシンによるメモリ１１へのアクセスが有効とされる。
【００６０】
一方、アドレス判定回路＃０〜＃３のうちのいずれか一つのアドレス判定回路からハイレベルの信号が出力され、且つ、当該ハイレベルの信号が出力されたアドレス判定回路に対応するメモリアクセス判定回路からロウレベルの信号が出力された場合、アクセス判定回路９は、仮想マシンによるメモリ１１へのアクセスを禁止する。この場合は、メモリアクセス判定結果ＯＵＴ_Ｍとしてロウレベルの信号が出力され、仮想マシンによるメモリ１１へのアクセスが無効とされる。
【００６１】
背景技術で説明したように、仮想化技術を用いることで、例えば１つのＣＰＵ上で複数の仮想マシンを動作させることができる。この場合、各々の仮想マシン上では異なるＯＳやアプリケーションプログラムを動作させることが可能となる一方、各々の仮想マシンは単一の物理的なメモリを共有して使用するため、ＣＰＵに仮想化技術を用いるのにあわせて、各々の仮想マシンによるメモリへのアクセスが干渉しないようにする必要があった。このため、各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構を設ける必要があった。
【００６２】
しかしながら、メモリ保護機構として、例えばメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット（ＭＭＵ）を用いると、使用するハードウェア資源が多くなるという問題があった。このため、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構（メモリ保護回路）が必要とされていた。
【００６３】
そこで本実施の形態にかかるメモリ保護回路６_１では、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタ８に格納している。更に、アクセス判定回路９を用いて、各々の仮想マシンがメモリ１１にアクセスする際のメモリアドレスＡＤＤ_Ｍおよびメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、メモリアクセス情報レジスタ８に格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定している。よって、本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路を提供することができる。
【００６４】
例えば、処理装置（ＣＰＵ）には、パーソナルコンピュータ等に用いられるマイクロプロセッサと、搭載される電子機器の制御に機能が特化されているマイクロコントローラとがある。マイクロプロセッサは比較的大容量のメモリを扱うため、メモリ保護機構としてメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット（ＭＭＵ）を搭載する場合が多い。
【００６５】
メモリ管理ユニット（ＭＭＵ）は、マイクロプロセッサから仮想アドレスを受け取り、仮想アドレスを物理アドレスに変換する。昨今のメモリ管理ユニット（ＭＭＵ）では、仮想アドレスから物理アドレスへの変換を高速化するために、ＴＬＢ（Translation Lookaside Buffer）を備えている。ＴＬＢは、仮想アドレスから物理アドレスに変換する際に用いられるページテーブルエントリを有する。仮想アドレス空間はプロセスから見えるメモリ空間であり、この空間は固定サイズのページに分割されている。ページテーブルには、仮想ページと物理メモリ上の位置とを対応づけた情報が格納されている。
【００６６】
マイクロプロセッサがメモリ空間にアクセスする際、仮想アドレスを用いてＴＬＢを検索し、ＴＬＢに当該仮想アドレスに対応するエントリがあれば、検索結果として対応する物理アドレスを返す（ＴＬＢヒット）。一方、ＴＬＢに当該仮想アドレスに対応するエントリがなければ（ＴＬＢミスヒット）、メモリに格納されているページテーブル（ＴＬＢに収まらないページテーブルエントリを保存する空間）から対応するエントリを検索する必要がある。これをテーブルウォークという。テーブルウォークによって物理アドレスを取得した後、仮想アドレスと物理アドレスのマッピングがＴＬＢに格納される。テーブルウォークは複数個所のメモリの内容を読み取り、そこから物理アドレスを計算する必要があるため、処理に時間がかかる。
【００６７】
一方、マイクロコントローラは搭載される電子機器の制御に機能が特化されているため、大容量のメモリを搭載する必要がなく、また仮想アドレスを物理アドレスに変換するアドレス変換機能も不要である。また、マイクロコントローラでは省電力、小面積が求められている。このため、マイクロコントローラのメモリ保護機構として、メモリ管理ユニット（ＭＭＵ）を搭載するとハードウェア資源のオーバーヘッドが大きくなる。
【００６８】
また、マイクロコントローラは電子機器の制御に用いられるため、リアルタイム性が重要となる。しかし、マイクロコントローラのメモリ保護機構としてメモリ管理ユニット（ＭＭＵ）を搭載すると、ＴＬＢミスヒット時にテーブルウォークが発生し、処理に時間がかかるためリアルタイム性が損なわれる。
【００６９】
よって、マイクロコントローラのメモリ保護機構としては、アドレス変換機能を備えないメモリ保護ユニット（ＭＰＵ）を用いるほうが、アドレス変換機能を備えるＭＭＵを用いるよりも好ましい。このため、本実施の形態にかかるメモリ保護回路は、省電力、小面積、リアルタイム性が重視されるマイクロコントローラに特に適しているといえる。すなわち、本実施の形態において、演算回路４から出力されるメモリアドレスＡＤＤ_Ｍは物理アドレスであるため、メモリ保護回路６_１は物理アドレスをアドレス変換することなくメモリ１１に出力することができる。
【００７０】
なお、本実施の形態にかかるメモリ保護回路は、アドレス変換機能を備えたメモリ保護回路への適用を妨げるものではなく、例えばアドレス変換機能を備えるメモリ管理ユニット（ＭＭＵ）を搭載したマイクロプロセッサにも適用することができる。更に、本実施の形態にかかるメモリ保護回路は、例えばアドレス変換機能が不要なマイクロプロセッサにも適用することができる。
【００７１】
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
【００７２】
＜実施の形態２＞
次に、実施の形態２について説明する。図９は、本実施の形態にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。本実施の形態では、メモリ保護回路６_２がレジスタＩ／Ｆ（７）を備えている点が、実施の形態１で説明したメモリ保護回路と異なる。これ以外は実施の形態１と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【００７３】
図９に示す処理装置１は、命令バッファ２、セレクタ３、演算回路４、仮想マシンスケジューラ５、およびメモリ保護回路６_２を備える。メモリ保護回路６_２は、レジスタＩ／Ｆ（７）、メモリアクセス情報レジスタ８、およびアクセス判定回路９を備える。
【００７４】
図１０は、本実施の形態にかかるメモリ保護回路６_２の一例を示すブロック図である。レジスタＩ／Ｆ（７）は、アクセスデコード回路３０、レジスタアクセス判定回路＃０〜＃３、およびＡＮＤ回路（ＡＮＤ１_０〜ＡＮＤ１_３）を備える。各々の仮想マシンは、メモリ領域設定レジスタ＃０〜＃３にアクセスすることで、メモリ領域設定レジスタ＃０〜＃３の上限アドレスレジスタ（ＭＰＵＡ０〜ＭＰＵＡ３）、下限アドレスレジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）、および属性レジスタ（ＭＰＬＡ０〜ＭＰＬＡ３）にデータを書き込んだり、読み込んだりすることができる。レジスタＩ／Ｆ（７）は、各々の仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスを制御する回路である。
【００７５】
仮想マシンがメモリ領域設定レジスタ＃０〜＃３にアクセスする際、仮想マシン（演算回路４）は、レジスタＩ／Ｆ（７）に対してレジスタアドレスＡＤＤ_Ｒや書き込みデータＷＤ_Ｒを送信する。また、仮想マシンスケジューラ５は、演算回路４で実行されているプログラムに対応した仮想マシンに関する情報ＶＭ_ｎ_ＭをレジスタＩ／Ｆ（７）に出力する。ここで、仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスは、演算回路４で実行されるプログラムに従い行われる。
【００７６】
アクセスデコード回路３０は、仮想マシン（演算回路４）から出力されたレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを受信し、受信したレジスタアドレスＡＤＤ_Ｒに対応したメモリ領域設定レジスタ＃０〜＃３（つまり、ＡＮＤ１_０〜ＡＮＤ１_３）にレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを出力する。すなわち、各々のメモリ領域設定レジスタ＃０〜＃３は、それぞれ異なるレジスタアドレスＡＤＤ_Ｒを備えており、アクセスデコード回路３０は、受信したレジスタアドレスＡＤＤ_Ｒに応じて、メモリ領域設定レジスタ＃０〜＃３へのアクセスを制御する。
【００７７】
例えば、アクセスデコード回路３０は、入力されるレジスタアドレスＡＤＤ_Ｒ、書き込みデータＷＤ_Ｒの情報から、アドレス情報と書き込むデータの情報を分離し、メモリ領域設定レジスタ＃０〜＃３に、あるいは、その手前にあるＡＮＤ１_０〜ＡＮＤ１_３に、適切に情報が入力されるようデコードを行っている。
【００７８】
レジスタアクセス判定回路＃０〜＃３は、各々のメモリ領域設定レジスタ＃０〜＃３に対応して設けられている。そして、各々のレジスタアクセス判定回路＃０〜＃３は、各々のメモリ領域割当レジスタ＃０〜＃３に格納されているメモリ領域設定レジスタ＃０〜＃３にアクセス可能な仮想マシンに関する情報と、メモリ領域設定レジスタ＃０〜＃３にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスの可否を判定する。
【００７９】
ここで、各々のメモリ領域設定レジスタ＃０〜＃３にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、各々のプログラムに対応した仮想マシンの順番をスケジューリングする仮想マシンスケジューラ５から演算回路４を経由してレジスタアクセス判定回路＃０〜＃３に供給される。つまり、仮想マシンスケジューラ５は、演算回路４で実行しているプログラムに対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ５は、レジスタアクセス判定回路＃０〜＃３に対して、各々のメモリ領域設定レジスタ＃０〜＃３にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍを出力することができる。
【００８０】
レジスタアクセス判定回路＃０は、仮想マシンスケジューラ５から出力されたメモリ領域設定レジスタ＃０〜＃３にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、メモリ領域割当レジスタ＃０〜＃３に格納されている各々のメモリ領域＃０〜＃３（つまり、メモリ領域設定レジスタ＃０〜＃３に対応している）に対してアクセス可能な仮想マシンに関する情報（図６参照）と、を比較する。例えば、レジスタアクセス判定回路＃０は、メモリ領域＃０に対応するメモリ領域設定レジスタ＃０にアクセス可能な仮想マシンＶＭ＃０と、仮想マシンスケジューラ５から出力されたメモリ領域設定レジスタにアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、を比較する。
【００８１】
そして、レジスタアクセス判定回路＃０は、メモリ領域設定レジスタにアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍが、メモリ領域割当レジスタ＃０に格納されているメモリ領域＃０にアクセス可能な仮想マシンＶＭ＃０と一致する場合は、仮想マシンＶＭ＃０がメモリ領域設定レジスタ＃０にアクセス可能であると判定し、ＡＮＤ１_０にハイレベルの信号"１"を出力する。レジスタアクセス判定回路＃０から出力された信号がハイレベル"１"である場合、ＡＮＤ１_０は、アクセスデコード回路３０から出力されたレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒをマスクすることなく、メモリ領域設定レジスタ＃０に出力する。つまり、ＡＮＤ１_０は、アクセスデコード回路３０から出力されたレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒをそのままメモリ領域設定レジスタ＃０に出力する。
【００８２】
一方、レジスタアクセス判定回路＃０は、メモリ領域設定レジスタにアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍが、メモリ領域割当レジスタ＃０に格納されているメモリ領域＃０にアクセス可能な仮想マシンＶＭ＃０と一致しない場合は、仮想マシンによるメモリ領域設定レジスタ＃０へのアクセスが禁止されていると判定し、ＡＮＤ１_０にロウレベルの信号"０"を出力する。レジスタアクセス判定回路＃０から出力された信号がロウレベル"０"である場合、ＡＮＤ１_０は、アクセスデコード回路３０から出力されたレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒをマスクする。
【００８３】
なお、レジスタアクセス判定回路＃１〜＃３についても、上記で説明したレジスタアクセス判定回路＃０の場合と同様である。
【００８４】
次に、メモリ保護回路６_２の動作について説明する。図１１は、本実施の形態にかかるメモリ保護回路６_２の動作を説明するためのフローチャートであり、仮想マシンがメモリ領域設定レジスタ＃０〜＃３の情報を書き換える場合のフローを示している。
【００８５】
仮想マシンスケジューラ５は、予め設定されたスケジュールに従って、実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号ＶＭ_ＳＥＬをセレクタ３に出力する。また、仮想マシンスケジューラ５は、演算回路４で実行されているプログラムに対応した仮想マシンに関する情報ＶＭ_ｎ_Ｍを演算回路４に出力する（ステップＳ１１）。セレクタ３は、仮想マシン選択信号ＶＭ_ＳＥＬに応じて選択された仮想マシンに対応するプログラムを演算回路４に出力する（ステップＳ１２）。
【００８６】
そして、仮想マシン（演算回路４）において、メモリ領域設定レジスタ＃０〜＃３への書き込みを指示するプログラムが実行される（ステップＳ１３）。メモリ領域設定レジスタ＃０〜＃３への書き込みを指示するプログラムが実行されると、仮想マシン（演算回路４）は、メモリ保護回路６_２のレジスタＩ／Ｆ（７）に対して、レジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを出力する（ステップＳ１４）。
【００８７】
アクセスデコード回路３０は、アクセスデコード処理を実施する（ステップＳ１５）。すなわち、アクセスデコード回路３０は、仮想マシン（演算回路４）から出力されたレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを受信し、受信したレジスタアドレスＡＤＤ_Ｒに対応したメモリ領域設定レジスタ＃０〜＃３（つまり、ＡＮＤ１_０〜ＡＮＤ１_３）にレジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを出力する。
【００８８】
また、仮想マシンスケジューラ５から出力されたメモリ領域設定レジスタ＃０〜＃３  にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、演算回路４を経由してレジスタＩ／Ｆ（７）に出力される（ステップＳ１６）。
【００８９】
次に、レジスタアクセス判定回路＃０〜＃３は、レジスタアクセス判定処理を実施する（ステップＳ１７）。すなわち、レジスタアクセス判定回路＃０〜＃３は、メモリ領域割当レジスタ＃０〜＃３に格納されている各々のメモリ領域設定レジスタ＃０〜＃３にアクセス可能な仮想マシンに関する情報と、メモリ領域設定レジスタ＃０〜＃３にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスの可否を判定する。
【００９０】
そして、レジスタアクセス判定回路＃０〜＃３が仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスを許可している場合（ステップＳ１８：Ｙｅｓ）、仮想マシン（演算回路４）は、レジスタアドレスＡＤＤ_Ｒおよび書き込みデータＷＤ_Ｒを用いてメモリ領域設定レジスタ＃０〜＃３への書き込みを実行する（ステップＳ１９）。
【００９１】
一方、レジスタアクセス判定回路＃０〜＃３が仮想マシンによるメモリ領域設定レジスタ＃０〜＃３へのアクセスを禁止している場合（ステップＳ１８：Ｎｏ）、仮想マシン（演算回路４）によるメモリ領域設定レジスタ＃０〜＃３への書き込みは禁止される（ステップＳ２０）。
【００９２】
なお、メモリ保護回路６_２が備えるメモリアクセス情報レジスタ８およびアクセス判定回路９の構成および動作についても実施の形態１の場合と同様である。
【００９３】
＜実施の形態３＞
次に、実施の形態３について説明する。図１２は、本実施の形態にかかるメモリ保護回路を備えた処理装置２１を説明するためのブロック図である。本実施の形態では、命令バッファ２２、セレクタ２３、仮想マシン・スレッドスケジューラ２５の構成が実施の形態１および２と異なる。これ以外は実施の形態１と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【００９４】
図１２に示す処理装置２１は、命令バッファ２２、セレクタ２３、演算回路４、仮想マシン・スレッドスケジューラ２５、およびメモリ保護回路６_１を備える。メモリ保護回路６_１は、メモリアクセス情報レジスタ８およびアクセス判定回路９を備える。
【００９５】
命令バッファ２２は、処理装置２１で処理する命令を一時的に格納する。命令バッファ２２は、命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄを有する。各命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄには、各スレッドに対応した命令が一時的に格納される。命令バッファ２２には、例えばバス１０を介して命令が供給されてもよく、また命令メモリ（不図示）に格納されている命令が供給されるようにしてもよい。
【００９６】
セレクタ２３は、仮想マシン・スレッドスケジューラ２５が出力するスレッド選択信号Ｔ_ＳＥＬに応じて命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄのいずれか１つを選択し、選択した命令バッファ領域から読み出した命令を演算回路４に出力する。つまり、セレクタ２３は、スレッド選択信号Ｔ_ＳＥＬに応じて複数のスレッド（スレッドＡ〜スレッドＤ）の中から１つのスレッドを選択し、選択したスレッドが出力する命令を演算回路４に出力する。ここで、各々の命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄは、スレッドＡ〜スレッドＤにそれぞれ対応している。
【００９７】
仮想マシン・スレッドスケジューラ２５は、予め設定されたスケジュールに従って、複数のスレッドのうち次の実行サイクルにおいて実行される１つのスレッドを指定するスレッド選択信号Ｔ_ＳＥＬを出力する。つまり、仮想マシン・スレッドスケジューラ２５は、命令バッファ２２が備える命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄから出力される命令の順番をスケジューリングし、このスケジューリングに従って命令が演算回路４で実行されるように、スレッド選択信号Ｔ_ＳＥＬを出力する。また、仮想マシン・スレッドスケジューラ２５は、演算回路４で実行されている命令に対応した仮想マシンに関する情報ＶＭ_ｎ_Ｍを演算回路４を経由してメモリ保護回路６_１に出力する。
【００９８】
演算回路４は、セレクタ２３によって選択された命令に基づき演算処理を実行する。具体的には、演算回路４は複数の実行ステージを有し、パイプライン処理により演算を行う。また、演算回路４は、命令の実行結果に応じて、メモリ１１にアクセスするためのメモリアドレスＡＤＤ_Ｍや書き込みデータＷＤ_Ｍを送信し、読み込みデータＲＤ_Ｍを受信する。演算回路４から送信されたメモリアドレスＡＤＤ_Ｍや書き込みデータＷＤ_Ｍは、バス１０を介してメモリ１１に供給される。
【００９９】
図１３は、演算回路４で実行される命令の処理順序の一例を説明するための図である。図１３に示す命令Ａ０〜Ａ７（スレッドＡに対応する）は、命令バッファ２２が備える命令バッファ領域ＢＵＦ_Ａに格納されている。同様に、命令Ｂ０〜Ｂ７（スレッドＢに対応する）は、命令バッファ領域ＢＵＦ_Ｂに格納されている。命令Ｃ０〜Ｃ７（スレッドＣに対応する）は、命令バッファ領域ＢＵＦ_Ｃに格納されている。命令Ｄ０〜Ｄ７（スレッドＤに対応する）は、命令バッファ領域ＢＵＦ_Ｄに格納されている。
【０１００】
図１３では、一例として、仮想マシン（ＶＭ＃０）上で命令Ａ０〜Ａ７（スレッドＡ）および命令Ｂ０〜Ｂ７（スレッドＢ）が実行され、仮想マシン（ＶＭ＃１）上で命令Ｃ０〜Ｃ７（スレッドＣ）が実行され、仮想マシン（ＶＭ＃２）上で命令Ｄ０〜Ｄ７（スレッドＤ）が実行される場合を示している。
【０１０１】
セレクタ２３は、仮想マシン・スレッドスケジューラ２５から出力されたスレッド選択信号Ｔ_ＳＥＬに応じて命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄのうちのいずれか１つを選択し、選択した命令バッファ領域から読み出した命令を演算回路４に出力する。図１３に示す例では、命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄに格納されている命令が命令Ａ０、命令Ｂ０、命令Ｃ０、命令Ｄ０、命令Ａ１、・・・、の順番に出力されるように、仮想マシン・スレッドスケジューラ２５においてスケジューリングされている場合を示している。このように、セレクタ２３から出力された各命令を演算回路４を用いて順次実行することで、各々の命令を複数の仮想マシン（ＶＭ＃０〜ＶＭ＃２）上で並列処理することができる。
【０１０２】
なお、図１３に示した仮想マシンで処理する命令（スレッド）や命令を処理する順序（スレッドスケジューリング）は一例であり、これらは任意に決定することができる。
【０１０３】
実施の形態１および２では仮想マシンスケジューラ５が、予め設定されたスケジュールに従って、複数の仮想マシンのうち次の実行期間において実行時間が割り当てられる仮想マシンを指定していた。つまり、仮想マシンスケジューラ５は、命令バッファ２が備える命令バッファ領域ＢＵＦ_０〜ＢＵＦ_２から出力されるプログラムに対応した仮想マシンの順番をスケジューリングし、このスケジューリングに従ってプログラムが演算回路４で実行されるように、仮想マシン選択信号ＶＭ_ＳＥＬを出力していた。
【０１０４】
これに対して本実施の形態では、仮想マシン・スレッドスケジューラ２５が、予め設定されたスケジュールに従って、複数のスレッドのうち次の実行サイクルにおいて実行される１つのスレッドを指定する。つまり、仮想マシン・スレッドスケジューラ２５は、命令バッファ２２が備える命令バッファ領域ＢＵＦ_Ａ〜ＢＵＦ_Ｄから出力される命令の順番をスケジューリングし、このスケジューリングに従って命令が演算回路４で実行されるように、スレッド選択信号Ｔ_ＳＥＬを出力している。このとき、仮想マシン・スレッドスケジューラ２５は、演算回路４で実行されている命令に対応した仮想マシンに関する情報ＶＭ_ｎ_Ｍを演算回路４を経由してメモリ保護回路６_１に出力している。
【０１０５】
これ以外の構成および動作については、実施の形態１および２で説明した場合と同様であるので、重複した説明は省略する。
【０１０６】
＜実施の形態４＞
次に、実施の形態４について説明する。本実施の形態にかかるメモリ保護回路では、メモリ領域設定レジスタ＃０〜＃３へのアクセス権限をハイパーバイザのみに認めている点が、実施の形態１乃至３にかかるメモリ保護回路６_１〜６_２と異なる。これ以外は実施の形態１乃至３と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【０１０７】
図１４は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図１４に示すように、本実施の形態にかかるメモリ保護回路６_３は、メモリアクセス情報レジスタ５１とアクセス判定回路９とを備える。メモリアクセス情報レジスタ５１は、メモリ領域割当レジスタ＃０〜＃３とメモリ領域設定レジスタ＃０〜＃３とを備える。また、アクセス判定回路９は、アドレス判定回路＃０〜＃３、メモリアクセス判定回路＃０〜＃３、ＡＮＤ回路（ＡＮＤ２_０〜ＡＮＤ２_３）、およびＯＲ回路（ＯＲ_１）を備える。なお、アクセス判定回路９の構成および動作については、実施の形態１で説明したアクセス判定回路９と同様であるので重複した説明は省略する。
【０１０８】
メモリアクセス情報レジスタ５１が備えるメモリ領域割当レジスタ＃０〜＃３には、各々のメモリ領域＃０〜＃３に対してアクセス可能な仮想マシンに関する情報が格納されている。また、各々のメモリ領域設定レジスタ＃０〜＃３には、メモリ１１のメモリ領域＃０〜＃３に関するメモリ領域情報が格納されている。そして、本実施の形態にかかるメモリ保護回路６_３では、メモリ領域割当レジスタ＃０〜＃３のアクセス権限に加えて、メモリ領域設定レジスタ＃０〜＃３のアクセス権限についても、ハイパーバイザ４１に認めている。
【０１０９】
すなわち、実施の形態１と同様に、ハイパーバイザ４１のみにメモリ領域割当レジスタ＃０〜＃３へのアクセス権限を認め、各々の仮想マシン（スーパバイザ）にはアクセス権限を認めないことで、各々の仮想マシンがメモリ領域割当レジスタ＃０〜＃３の情報を自由に書き換えることを抑制することができる。更に、本実施の形態にかかるメモリ保護回路６_３では、ハイパーバイザ４１のみにメモリ領域設定レジスタ＃０〜＃３へのアクセス権限を認め、各々の仮想マシン（スーパバイザ）にはアクセス権限を認めないことで、各々の仮想マシンがメモリ領域設定レジスタ＃０〜＃３の情報を書き換えることを抑制することができる。このような構成とすることで、ハイパーバイザが各々の仮想マシンが使用するメモリ領域をより厳しく管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することをより確実に抑制することができる。
【０１１０】
なお、メモリアクセス情報レジスタ５１の上記以外の構成および動作については、実施の形態１で説明したメモリアクセス情報レジスタ８と同様であるので重複した説明は省略する。
【０１１１】
本実施の形態においても、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
【０１１２】
＜実施の形態５＞
次に、実施の形態５について説明する。本実施の形態にかかるメモリ保護回路では、メモリアクセス情報レジスタおよびアクセス判定回路の構成および動作が、実施の形態１乃至３で説明したメモリ保護回路６_１〜６_２が備えるメモリアクセス情報レジスタ８およびアクセス判定回路９と異なる。これ以外は実施の形態１乃至３と同様であるので、重複した説明は適宜省略する。
【０１１３】
図１５は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図１５に示すように、本実施の形態にかかるメモリ保護回路６_４は、メモリアクセス情報レジスタ６１とアクセス判定回路６２とを有する。アクセス判定回路６２は、アドレス判定回路６３とメモリアクセス判定回路６４とを有する。
【０１１４】
メモリアクセス情報レジスタ６１には、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報が格納されている。図１６は、本実施の形態にかかるメモリ保護回路６_４が備えるメモリアクセス情報レジスタ６１に格納されている情報の一例を示す表である。図１６に示すように、メモリアクセス情報レジスタ６１には、メモリ領域＃０〜＃３と、当該メモリ領域＃０〜＃３に対応するアドレス範囲と、当該メモリ領域＃０〜＃３にアクセス可能な仮想マシンに関する情報が格納されている。図１６に示すように、メモリ領域＃０のアドレス範囲はアドレスａ〜アドレスｂであり、メモリ領域＃０には仮想マシンＶＭ＃０がアクセスすることができる。メモリ領域＃１のアドレス範囲はアドレスｃ〜アドレスｄであり、メモリ領域＃１には仮想マシンＶＭ＃０がアクセスすることができる。メモリ領域＃２のアドレス範囲はアドレスｅ〜アドレスｆであり、メモリ領域＃２には仮想マシンＶＭ＃１がアクセスすることができる。メモリ領域＃３のアドレス範囲はアドレスｇ〜アドレスｈであり、メモリ領域＃３には仮想マシンＶＭ＃２がアクセスすることができる。
【０１１５】
なお、メモリアクセス情報レジスタ６１へのアクセス権限をハイパーバイザのみに認め、各々の仮想マシン（スーパバイザ）にはアクセス権限を認めないことで、各々の仮想マシンがメモリアクセス情報レジスタ６１に格納されているメモリアクセス情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
【０１１６】
アクセス判定回路６２が備えるアドレス判定回路６３は、メモリアクセス情報レジスタ６１に格納されているメモリアクセス情報に基づき、各々の仮想マシンがメモリ１１にアクセスする際に出力したメモリアドレスＡＤＤ_Ｍに対応するメモリ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ'を出力する。
【０１１７】
例えば、アドレス判定回路６３は、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がメモリ１１にアクセスする際に出力したメモリアドレスＡＤＤ_Ｍと、メモリアクセス情報レジスタ６１に格納されているメモリアクセス情報（具体的には、図１６のアドレス範囲）と、を比較する。そして、メモリアドレスＡＤＤ_Ｍが含まれているアドレス範囲に対応する仮想マシンに関する情報ＶＭ_ｎ_Ｍ'をメモリアクセス判定回路６４に出力する。例えば、アドレス判定回路６３は、メモリアドレスＡＤＤ_Ｍがアドレスａ〜アドレスｂの範囲に含まれている場合、当該アドレス範囲に対応する仮想マシンＶＭ＃０に関する情報ＶＭ_０_Ｍ'をメモリアクセス判定回路６４に出力する。
【０１１８】
メモリアクセス判定回路６４は、アドレス判定回路６３から出力されたメモリ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ'と、各々の仮想マシンがメモリ１１にアクセスする際に出力したメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、仮想マシンによるメモリ１１へのアクセスの可否を判定する。
【０１１９】
ここで、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、仮想マシンスケジューラ５（図１参照）や仮想マシン・スレッドスケジューラ２５（図１２参照）から供給される。つまり、仮想マシンスケジューラ５（実施の形態３の場合は、仮想マシン・スレッドスケジューラ２５）は、演算回路４で実行している命令に対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ５は、メモリアクセス判定回路６４に対して、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍを出力することができる。
【０１２０】
メモリアクセス判定回路６４は、仮想マシンスケジューラ５から出力されたメモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、アドレス判定回路６３から出力されたメモリ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ'と、を比較する。そして、仮想マシンスケジューラ５から出力されたＶＭ_ｎ_Ｍとアドレス判定回路６３から出力されたＶＭ_ｎ_Ｍ'とが一致する場合は、仮想マシンがメモリ１１にアクセス可能であると判定し、メモリアクセス判定結果ＯＵＴ_Ｍとしてアクセス許可を示すハイレベルの信号を出力する。一方、仮想マシンスケジューラ５から出力されたＶＭ_ｎ_Ｍとアドレス判定回路６３から出力されたＶＭ_ｎ_Ｍ'とが一致しない場合は、仮想マシンによるメモリ１１へのアクセスが禁止されていると判定し、メモリアクセス判定結果ＯＵＴ_Ｍとしてアクセス禁止を示すロウレベルの信号を出力する。
【０１２１】
メモリ保護回路６_４から出力されたメモリアクセス判定結果ＯＵＴ_Ｍは、例えば図１に示すバス１０を介してメモリ１１に供給される。メモリ１１は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシン（演算回路４）によるメモリ１１へのアクセスを無効とする。一方、メモリ１１は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシン（演算回路４）によるメモリ１１へのアクセスを有効とする。
【０１２２】
なお、メモリ保護回路６_４から出力されたメモリアクセス判定結果ＯＵＴ_Ｍは、例えば演算回路４に供給されるようにしてもよい。この場合は、演算回路４は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシンによるメモリ１１へのアクセスを無効として処理する。一方、演算回路４は、メモリアクセス判定結果ＯＵＴ_Ｍがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシンによるメモリ１１へのアクセスを有効として処理する。
【０１２３】
次に、アクセス判定回路６２におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンＶＭ＃０がメモリ領域＃２にアクセスした場合について説明する。仮想マシンＶＭ＃０がメモリ領域＃２にアクセスしようとした場合、演算回路４はアドレス判定回路６３にメモリ領域＃２に対応したメモリアドレスＡＤＤ_Ｍを出力する。アドレス判定回路６３は、当該メモリアドレスＡＤＤ_Ｍがメモリ領域＃２に対応するアドレス範囲（アドレスｅ〜アドレスｆ）に含まれているので、当該アドレス範囲に対応する仮想マシンＶＭ＃１に関する情報ＶＭ_１_Ｍ'をメモリアクセス判定回路６４に出力する。
【０１２４】
また、仮想マシンスケジューラ５は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃０を示す情報ＶＭ_０_Ｍをメモリアクセス判定回路６４に出力する。メモリアクセス判定回路６４は、仮想マシンスケジューラ５から出力されたメモリ１１にアクセスする仮想マシンＶＭ＃０に関する情報ＶＭ_０_Ｍと、アドレス判定回路６３から出力されたメモリ領域＃２へのアクセスが許可されている仮想マシンＶＭ＃１に関する情報ＶＭ_１_Ｍ'と、を比較する。
【０１２５】
この場合は、仮想マシンスケジューラ５から出力されたＶＭ_０_Ｍとアドレス判定回路６３から出力されたＶＭ_１_Ｍ'とが一致しないので、メモリアクセス判定回路６４は、仮想マシンＶＭ＃０によるメモリ領域＃２へのアクセスが禁止されていると判定し、メモリアクセス判定結果ＯＵＴ_Ｍとしてアクセス禁止を示すロウレベルの信号を出力する。このようにして、仮想マシンＶＭ＃０によるメモリ領域＃２へのアクセスが禁止される。
【０１２６】
また、他の例として、仮想マシンＶＭ＃２がメモリ領域＃３にアクセスする場合について説明する。仮想マシンＶＭ＃２がメモリ領域＃３にアクセスしようとした場合、演算回路４はアドレス判定回路６３にメモリ領域＃３に対応したメモリアドレスＡＤＤ_Ｍを出力する。アドレス判定回路６３は、当該メモリアドレスＡＤＤ_Ｍがメモリ領域＃３に対応するアドレス範囲（アドレスｇ〜アドレスｈ）に含まれているので、当該アドレス範囲に対応する仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍ'をメモリアクセス判定回路６４に出力する。
【０１２７】
また、仮想マシンスケジューラ５は、メモリ１１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃２を示す情報ＶＭ_２_Ｍをメモリアクセス判定回路６４に出力する。メモリアクセス判定回路６４は、仮想マシンスケジューラ５から出力されたメモリ１１にアクセスする仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍと、アドレス判定回路６３から出力されたメモリ領域＃３へのアクセスが許可されている仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍ'と、を比較する。
【０１２８】
この場合は、仮想マシンスケジューラ５から出力されたＶＭ_２_Ｍとアドレス判定回路６３から出力されたＶＭ_２_Ｍ'とが一致するので、メモリアクセス判定回路６４は、仮想マシンＶＭ＃２によるメモリ領域＃３へのアクセスが許可されていると判定し、メモリアクセス判定結果ＯＵＴ_Ｍとしてアクセス許可を示すハイレベルの信号を出力する。このようにして、仮想マシンＶＭ＃２によるメモリ領域＃３へのアクセスが許可される。
【０１２９】
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
【０１３０】
＜実施の形態６＞
次に、実施の形態６について説明する。本実施の形態にかかるメモリ保護回路では、実施の形態５で説明したメモリ保護回路６_４にレジスタＩ／Ｆが追加されている点が実施の形態５と異なる。これ以外は実施の形態５と同様であるので、重複した説明は適宜省略する。
【０１３１】
図１７は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図１７に示すように、本実施の形態にかかるメモリ保護回路６_５は、レジスタＩ／Ｆ（７１）、メモリアクセス情報レジスタ６１、およびアクセス判定回路６２を有する。ここで、メモリアクセス情報レジスタ６１およびアクセス判定回路６２の構成および動作については、実施の形態５で説明したメモリアクセス情報レジスタ６１およびアクセス判定回路６２と同様であるので重複した説明は省略する。
【０１３２】
本実施の形態にかかるメモリ保護回路６_５では、メモリアクセス情報レジスタ６１に格納されているメモリアクセス情報の一部を各々の仮想マシンが書き換えることができる。各々の仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスはレジスタＩ／Ｆ（７１）によって制限される。以下で詳細に説明する。
【０１３３】
レジスタＩ／Ｆ（７１）は、レジスタアクセス情報レジスタ７２、レジスタアドレス判定回路７３、およびレジスタアクセス判定回路７４を備える。レジスタアクセス情報レジスタ７２には、各々の仮想マシンがアクセス可能なメモリアクセス情報レジスタ領域に関するレジスタアクセス情報が格納されている。ここで、メモリアクセス情報レジスタ領域とは、メモリアクセス情報レジスタ６１が備える複数のレジスタ領域である。
【０１３４】
図１８は、本実施の形態にかかるメモリ保護回路６_５が備えるレジスタアクセス情報レジスタ７２に格納されている情報の一例を示す表である。図１８に示すように、レジスタアクセス情報レジスタ７２には、メモリ領域＃０〜＃３と、各々のメモリ領域＃０〜＃３に関する情報が格納されているレジスタアドレス範囲と、メモリ領域＃０〜＃３にアクセス可能な仮想マシンに関する情報とが格納されている。ここで、各々のメモリ領域＃０〜＃３に関する情報とは、図１６の表に示すメモリ領域＃０〜＃３に対応するアドレス範囲である。また、各々のメモリ領域＃０〜＃３に関する情報が格納されているレジスタアドレス範囲とは、図１６の表に示すメモリ領域＃０〜＃３に対応するアドレス範囲が格納されているメモリアクセス情報レジスタ６１のレジスタアドレス範囲である。例えば、メモリ領域＃０に関する情報が格納されているレジスタアドレス範囲は、図１６の表に示すメモリ領域＃０に対応するアドレス範囲（アドレスａ〜アドレスｂ）が格納されているメモリアクセス情報レジスタ６１のレジスタアドレス範囲（レジスタアドレスａ'〜レジスタアドレスｂ'）である。
【０１３５】
図１８に示すように、メモリ領域＃０のレジスタアドレス範囲はレジスタアドレスａ'〜レジスタアドレスｂ'であり、メモリアクセス情報レジスタ６１内のメモリ領域＃０に関する情報が格納されている領域（つまり、レジスタアドレスａ'〜レジスタアドレスｂ'）には仮想マシンＶＭ＃０がアクセスすることができる。メモリ領域＃１のレジスタアドレス範囲はレジスタアドレスｃ'〜レジスタアドレスｄ'であり、メモリアクセス情報レジスタ６１内のメモリ領域＃１に関する情報が格納されている領域（つまり、レジスタアドレスｃ'〜レジスタアドレスｄ'）には仮想マシンＶＭ＃０がアクセスすることができる。メモリ領域＃２のレジスタアドレス範囲はレジスタアドレスｅ'〜レジスタアドレスｆ'であり、メモリアクセス情報レジスタ６１内のメモリ領域＃２に関する情報が格納されている領域（つまり、レジスタアドレスｅ'〜レジスタアドレスｆ'）には仮想マシンＶＭ＃１がアクセスすることができる。メモリ領域＃３のレジスタアドレス範囲はレジスタアドレスｇ'〜レジスタアドレスｈ'であり、メモリアクセス情報レジスタ６１内のメモリ領域＃３に関する情報が格納されている領域（レジスタアドレスｇ'〜レジスタアドレスｈ'）には仮想マシンＶＭ＃２がアクセスすることができる。
【０１３６】
なお、本実施の形態では、各々の仮想マシンは図１６の表に示すメモリ領域＃０〜＃３に対応するアドレス範囲に関する情報のみ書き換え可能であるものとし、各々のメモリ領域＃０〜＃３にアクセス可能な仮想マシンに関する情報については書き換えできないものとする。つまり、各々のメモリ領域＃０〜＃３にアクセス可能な仮想マシンに関する情報については、ハイパーバイザのみが書き換えることができる。
【０１３７】
また、レジスタアクセス情報レジスタ７２へのアクセス権限をハイパーバイザのみに認め、各々の仮想マシン（スーパバイザ）にはアクセス権限を認めないようにすることで、各々の仮想マシンがレジスタアクセス情報レジスタ７２に格納されているレジスタアクセス情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
【０１３８】
レジスタアドレス判定回路７３とレジスタアクセス判定回路７４は、第２のアクセス判定回路を構成している。第２のアクセス判定回路は、各々の仮想マシンがメモリアクセス情報レジスタ６１にアクセスする際のレジスタアドレスＡＤＤ_Ｒおよびメモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、レジスタアクセス情報レジスタ７２に格納されているレジスタアクセス情報とに基づき仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスの可否を判定する。
【０１３９】
つまり、レジスタアドレス判定回路７３は、レジスタアクセス情報に基づき、各々の仮想マシンがメモリアクセス情報レジスタ６１にアクセスする際に出力したレジスタアドレスＡＤＤ_Ｒに対応するレジスタ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ''を出力する。
【０１４０】
例えば、レジスタアドレス判定回路７３は、各々の仮想マシンＶＭ＃０〜ＶＭ＃２がメモリアクセス情報レジスタ６１にアクセスする際に出力したレジスタアドレスＡＤＤ_Ｒと、レジスタアクセス情報レジスタ７２に格納されているレジスタアクセス情報（具体的には、図１４のレジスタアドレス範囲）と、を比較する。そして、レジスタアドレスＡＤＤ_Ｒが含まれるレジスタアドレス範囲に対応する仮想マシンに関する情報ＶＭ_ｎ_Ｍ''をレジスタアクセス判定回路７４に出力する。例えば、レジスタアドレス判定回路７３は、レジスタアドレスＡＤＤ_Ｒがレジスタアドレスａ'〜レジスタアドレスｂ'の範囲に含まれている場合、当該レジスタアドレス範囲に対応する仮想マシンＶＭ＃０に関する情報ＶＭ_０_Ｍ''をレジスタアクセス判定回路７４に出力する。
【０１４１】
レジスタアクセス判定回路７４は、レジスタアドレス判定回路７３から出力されたメモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ''と、各々の仮想マシンがメモリアクセス情報レジスタ６１にアクセスする際に出力したメモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、に基づき、仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスの可否を判定する。
【０１４２】
ここで、メモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍは、仮想マシンスケジューラ５（図１参照）や仮想マシン・スレッドスケジューラ２５（図１２参照）から供給される。つまり、仮想マシンスケジューラ５（実施の形態３の場合は、仮想マシン・スレッドスケジューラ２５）は、演算回路４で実行している命令に対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ５は、レジスタアクセス判定回路７４に対して、メモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍを出力することができる。
【０１４３】
レジスタアクセス判定回路７４は、仮想マシンスケジューラ５から出力されたメモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍと、レジスタアドレス判定回路７３から出力されたメモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報ＶＭ_ｎ_Ｍ''と、を比較する。そして、仮想マシンスケジューラ５から出力されたＶＭ_ｎ_Ｍとレジスタアドレス判定回路７３から出力されたＶＭ_ｎ_Ｍ''とが一致する場合は、仮想マシンがメモリアクセス情報レジスタ６１にアクセス可能であると判定し、レジスタアクセス判定結果ＯＵＴ_Ｒとしてアクセス許可を示すハイレベルの信号を出力する。一方、仮想マシンスケジューラ５から出力されたＶＭ_ｎ_Ｍとレジスタアドレス判定回路７３から出力されたＶＭ_ｎ_Ｍ''とが一致しない場合は、仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスが禁止されていると判定し、レジスタアクセス判定結果ＯＵＴ_Ｒとしてアクセス禁止を示すロウレベルの信号を出力する。
【０１４４】
レジスタアクセス判定回路７４から出力されたレジスタアクセス判定結果ＯＵＴ_Ｒは、メモリアクセス情報レジスタ６１に供給される。メモリアクセス情報レジスタ６１は、レジスタアクセス判定結果ＯＵＴ_Ｒがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシン（演算回路４）によるアクセスＷＤ_Ｒを無効とする。一方、メモリアクセス情報レジスタ６１は、レジスタアクセス判定結果ＯＵＴ_Ｒがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシン（演算回路４）によるアクセスＷＤ_Ｒを有効とする。
【０１４５】
なお、レジスタアクセス判定回路７４から出力されたレジスタアクセス判定結果ＯＵＴ_Ｒは、例えば演算回路４に供給されるようにしてもよい。この場合は、演算回路４は、レジスタアクセス判定結果ＯＵＴ_Ｒがアクセス禁止を示す場合（つまり、ロウレベルの場合）、仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスＷＤ_Ｒを無効として処理する。一方、演算回路４は、レジスタアクセス判定結果ＯＵＴ_Ｒがアクセス許可を示す場合（つまり、ハイレベルの場合）、仮想マシンによるメモリアクセス情報レジスタ６１へのアクセスＷＤ_Ｒを有効として処理する。
【０１４６】
次に、レジスタＩ／Ｆ（７１）におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンＶＭ＃０が、メモリ領域＃２に関する情報が格納されているレジスタアドレス範囲（以降、メモリ領域＃２に対応するレジスタアドレス範囲と記載する）にアクセスした場合について説明する。仮想マシンＶＭ＃０がメモリ領域＃２に対応するレジスタアドレス範囲にアクセスしようとした場合、演算回路４はレジスタアドレス判定回路７３に、メモリ領域＃２に対応するレジスタアドレス範囲（レジスタアドレスｅ'〜レジスタアドレスｆ'）に対応したアドレスＡＤＤ_Ｒを出力する。レジスタアドレス判定回路７３は、当該アドレスＡＤＤ_Ｒがメモリ領域＃２に対応するレジスタアドレス範囲（レジスタアドレスｅ'〜レジスタアドレスｆ'）に含まれているので、当該レジスタアドレス範囲に対応する仮想マシンＶＭ＃１に関する情報ＶＭ_１_Ｍ''をレジスタアクセス判定回路７４に出力する。
【０１４７】
また、仮想マシンスケジューラ５は、メモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃０を示す情報ＶＭ_０_Ｍをレジスタアクセス判定回路７４に出力する。レジスタアクセス判定回路７４は、仮想マシンスケジューラ５から出力されたＶＭ_０_Ｍと、レジスタアドレス判定回路７３から出力されたＶＭ_１_Ｍ''と、を比較する。
【０１４８】
この場合は、仮想マシンスケジューラ５から出力されたＶＭ_０_Ｍとレジスタアドレス判定回路７３から出力されたＶＭ_１_Ｍ''とが一致しない。よって、レジスタアクセス判定回路７４は、仮想マシンＶＭ＃０によるメモリ領域＃２に対応するレジスタアドレス範囲（レジスタアドレスｅ'〜レジスタアドレスｆ'）へのアクセスが禁止されていると判定し、レジスタアクセス判定結果ＯＵＴ_Ｒとしてアクセス禁止を示すロウレベルの信号を出力する。このようにして、仮想マシンＶＭ＃０によるメモリ領域＃２に対応するレジスタアドレス範囲（レジスタアドレスｅ'〜レジスタアドレスｆ'）へのアクセスが禁止される。
【０１４９】
また、他の例として、仮想マシンＶＭ＃２がメモリ領域＃３に対応するレジスタアドレス範囲にアクセスする場合について説明する。仮想マシンＶＭ＃２がメモリ領域＃３に対応するレジスタアドレス範囲（レジスタアドレスｇ'〜レジスタアドレスｈ'）にアクセスしようとした場合、演算回路４はレジスタアドレス判定回路７３にメモリ領域＃３に対応するレジスタアドレス範囲（レジスタアドレスｇ'〜レジスタアドレスｈ'）に対応したレジスタアドレスＡＤＤ_Ｒを出力する。レジスタアドレス判定回路７３は、当該レジスタアドレスＡＤＤ_Ｒがメモリ領域＃３に対応するレジスタアドレス範囲（レジスタアドレスｇ'〜レジスタアドレスｈ'）に含まれているので、当該レジスタアドレス範囲に対応する仮想マシンＶＭ＃２に関する情報ＶＭ_２_Ｍ''をレジスタアクセス判定回路７４に出力する。
【０１５０】
また、仮想マシンスケジューラ５は、メモリアクセス情報レジスタ６１にアクセスする仮想マシンに関する情報ＶＭ_ｎ_Ｍとして、仮想マシンＶＭ＃２を示す情報ＶＭ_２_Ｍをレジスタアクセス判定回路７４に出力する。レジスタアクセス判定回路７４は、仮想マシンスケジューラ５から出力されたＶＭ_２_Ｍと、レジスタアドレス判定回路７３から出力されたＶＭ_２_Ｍ''と、を比較する。
【０１５１】
この場合は、仮想マシンスケジューラ５から出力されたＶＭ_２_Ｍとレジスタアドレス判定回路７３から出力されたＶＭ_２_Ｍ''とが一致するので、レジスタアクセス判定回路７４は、仮想マシンＶＭ＃２によるメモリ領域＃３に対応するレジスタアドレス範囲（レジスタアドレスｇ'〜レジスタアドレスｈ'）へのアクセスが許可されていると判定し、レジスタアクセス判定結果ＯＵＴ_Ｒとしてアクセス許可を示すハイレベルの信号を出力する。このようにして、仮想マシンＶＭ＃２によるメモリ領域＃３に対応するレジスタアドレス範囲（レジスタアドレスｇ'〜レジスタアドレスｈ'）へのアクセスが許可される。
【０１５２】
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
【０１５３】
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【０１５４】
１、２１  処理装置（ＣＰＵ）
２、２２  命令バッファ
３、２３  セレクタ
４  演算回路
５  仮想マシンスケジューラ
６_１〜６_５  メモリ保護回路
７  レジスタＩ／Ｆ
８  メモリアクセス情報レジスタ
９  アクセス判定回路
１０  バス
１１  メモリ
２５  仮想マシン・スレッドスケジューラ
３０  アクセスデコード回路
【図１】
0005914145.tif 000002
【図２】
0005914145.tif 000003
【図３】
0005914145.tif 000004
【図４】
0005914145.tif 000005
【図５】
0005914145.tif 000006
【図６】
0005914145.tif 000007
【図７】
0005914145.tif 000008
【図８】
0005914145.tif 000009
【図９】
0005914145.tif 000010
【図１０】
0005914145.tif 000011
【図１１】
0005914145.tif 000012
【図１２】
0005914145.tif 000013
【図１３】
0005914145.tif 000014
【図１４】
0005914145.tif 000015
【図１５】
0005914145.tif 000016
【図１６】
0005914145.tif 000017
【図１７】
0005914145.tif 000018
【図１８】
0005914145.tif 000019