(58)【調査した分野】(Int.Cl.,DB名)
前記IDロックレジスタは、前記ロック信号がアクティブの期間中において、前記第1ID格納レジスタに格納されたIDの前記仮想マシンから前記第1ID格納レジスタに格納されたIDの書き換え要求があった場合、前記ロック信号をインアクティブにするように構成されている、
請求項4に記載のメモリ保護回路。
前記第1ID格納レジスタに格納されたIDは、前記第2ID格納レジスタに格納されたIDの前記仮想マシンからの要求に関わらず、ハイパーバイザからの要求に応じて書き換えられる、
請求項1に記載のメモリ保護回路。
【発明を実施するための形態】
【0013】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0014】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0015】
<発明者による事前検討>
実施の形態1にかかるメモリ保護システムの説明をする前に、発明者らが事前検討した内容について説明する。
【0016】
図7は、実施の形態1に至る前の構想にかかるメモリ保護システムSYS50の構成例を示すブロック図である。
【0017】
図7に示すように、メモリ保護システムSYS50は、例えばCPU等の演算処理回路によって実現されるn(nは2以上の整数)個の仮想マシンVM1〜VMn及びハイパーバイザHV1と、メモリ保護回路50と、メモリM1と、を備える。以下、仮想マシンVM1〜VMnのうちの任意の仮想マシンを、仮想マシンVMと称する場合がある。
【0018】
ハイパーバイザHV1は、仮想マシンVM1〜VMnよりも信頼性が高く、これら仮想マシンVM1〜VMnを管理する。また、ハイパーバイザHV1は、メモリ保護回路50に設けられた各レジスタにアクセスする権限を有する。仮想マシンVM1〜VMnは、それぞれ並行して演算処理を行うことが可能であるが、メモリ保護回路50に設けられた各レジスタにアクセスする権限を有しない。
【0019】
メモリ保護回路50は、複数の仮想マシンVM1〜VMnによるメモリM1へのアクセスを制御する回路である。具体的には、メモリ保護回路50は、レジスタ群51と、アクセス判定回路52と、を備える。
【0020】
レジスタ群51は、保護領域設定レジスタ511と、ID格納レジスタ512と、を有する。保護領域設定レジスタ511には、メモリM1の記憶領域のうち仮想マシンVM1〜VMnによるアクセスからの保護対象となっている記憶領域が設定されている。ID格納レジスタ512には、仮想マシンVM1〜VMnのうち、メモリM1へのアクセス権限が与えられた仮想マシンVMのID(Identification)、が格納されている。
【0021】
アクセス判定回路52は、仮想マシンVM1〜VMnの何れかの仮想マシンVMからメモリM1へのアクセス要求があった場合に、アクセス要求を行った仮想マシンVMに対してメモリM1へのアクセスを許可するか否かを判定する。
【0022】
具体的には、アクセス判定回路52は、アドレス比較回路521と、ID比較回路522と、を有する。アドレス比較回路521は、アクセス要求を行った仮想マシンVMによって指定されたメモリM1のアドレスと、保護領域設定レジスタ511に設定された記憶領域のアドレスと、を比較する。ID比較回路522は、アクセス要求を行った仮想マシンVMのIDと、ID格納レジスタ512に格納されたIDと、を比較する。アクセス判定回路52は、アドレス比較回路521による比較結果が一致を示し、かつ、ID比較回路522による比較結果が一致を示す場合に、アクセス要求を行った仮想マシンVMに対してメモリM1へのアクセスを許可する。
【0023】
ここで、メモリ保護回路50では、例えば2つの仮想マシンVM1,VM2間で共通のメモリM1を介してデータの受け渡しを行う場合、まず、ハイパーバイザHV1によって仮想マシンVM1にメモリM1へのアクセス権限が付与される。具体的には、ハイパーバイザHV1によってID格納レジスタ512に仮想マシンVM1のIDが格納される。それにより、例えば、仮想マシンVM1によって、メモリM1にデータが書き込まれる。
【0024】
その後、仮想マシンVM1によるメモリM1へのアクセスが完了すると、仮想マシンVM1からハイパーバイザHV1に対してアクセスの完了が通知される。それにより、仮想マシンVM1からハイパーバイザHV1に処理が移行する。その後、ハイパーバイザHV1によって仮想マシンVM1から仮想マシンVM2にメモリM1へのアクセス権限が切り替えられる。具体的には、ハイパーバイザHV1によって、ID格納レジスタ512に格納されたIDが、仮想マシンVM1のIDから仮想マシンVM2のIDに書き換えられる。それにより、例えば、仮想マシンVM2によって、メモリM1に書き込まれたデータが読み出される。
【0025】
このように、メモリ保護回路50では、例えば2つの仮想マシンVM1,VM2間で共通のメモリM1を介してデータの受け渡しを行う場合、何れかの仮想マシンによるメモリM1へのアクセスが完了するたびに、その仮想マシンからハイパーバイザに処理を移行させたうえで、ハイパーバイザからの要求によってメモリM1へのアクセス権限を次の仮想マシンに切り替える必要がある。そのため、メモリ保護回路50では、複数の仮想マシン間の共通のメモリを介したデータの受け渡しを速やかに行うことができない、という問題があった。
【0026】
また、この一連の処理を行うためのハイパーバイザ向けソフトウェアの開発が必要となる。さらに、仮想マシンからハイパーバイザへの遷移、及び、ハイパーバイザから仮想マシンへの遷移の際に、コンテキストスイッチによるメモリアクセス処理が発生するため、CPU等の演算処理回路による処理サイクルが長くなり、その結果、一方の仮想マシンによるデータ通信処理が完了してから、次の仮想マシンによってデータ通信処理が行われるまでの時間が長くなってしまう。
【0027】
そこで、発明者は、複数のマシン間の共通のメモリを介したデータの受け渡しを速やかに行うことが可能な、実施の形態1にかかるメモリ保護回路を見いだした。
【0028】
<実施の形態1>
図1は、実施の形態1に係るメモリ保護回路が設けられたメモリ保護システムSYS1の構成例を示すブロック図である。
【0029】
図1に示すように、メモリ保護システムSYS1は、例えばCPU等の演算処理回路によって実現されるn(nは2以上の整数)個の仮想マシンVM1〜VMn及びハイパーバイザHV1と、メモリ保護回路1と、メモリM1と、を備える。以下、仮想マシンVM1〜VMnのうちの任意の仮想マシンを、仮想マシンVMと称する場合がある。
【0030】
ハイパーバイザHV1は、仮想マシンVM1〜VMnよりも信頼性が高く、これら仮想マシンVM1〜VMnを管理する。また、ハイパーバイザHV1は、メモリ保護回路1に設けられた各レジスタ(保護領域設定レジスタ111、第1ID格納レジスタ112、第2ID格納レジスタ113、及び、モード設定レジスタ116)にアクセスする権限を有する。仮想マシンVH1〜VMnは、それぞれ並行して演算処理を行うことが可能であるが、メモリ保護回路1にアクセスする権限は限定されている。
【0031】
メモリ保護回路1は、複数の仮想マシンVM1〜VMnによるメモリM1へのアクセスを制御する回路である。具体的には、メモリ保護回路1は、レジスタ群11と、アクセス判定回路12と、アクセス判定回路14と、ID更新制御回路15と、を備える。
【0032】
レジスタ群11は、保護領域設定レジスタ111と、第1ID格納レジスタ112と、第2ID格納レジスタ113と、トリガ発生レジスタ114と、IDロックレジスタ115と、モード設定レジスタ116と、を有する。
【0033】
保護領域設定レジスタ111には、メモリM1の記憶領域のうち仮想マシンVM1〜VMnによるアクセスからの保護対象となっている記憶領域が設定されている。第1ID格納レジスタ112には、仮想マシンVM1〜VMnのうち、メモリM1へのアクセス権限が与えられた仮想マシンVMのID(Identification)、が格納されている。なお、第2ID格納レジスタ113、トリガ発生レジスタ114、IDロックレジスタ115、及び、モード設定レジスタ116については後述する。
【0034】
アクセス判定回路12は、仮想マシンVM1〜VMnの何れかの仮想マシンVMからメモリM1に対してアクセス要求があった場合に、アクセス要求を行った仮想マシンVMに対してメモリM1へのアクセスを許可するか否かを判定する。
【0035】
具体的には、アクセス判定回路12は、アドレス比較回路121と、ID比較回路122と、を有する。アドレス比較回路121は、アクセス要求を行った仮想マシンVMによって指定されたメモリM1のアドレスと、保護領域設定レジスタ111に設定された記憶領域のアドレスと、を比較する。ID比較回路122は、アクセス要求を行った仮想マシンVMのIDと、ID格納レジスタ112に格納されたIDと、を比較する。アクセス判定回路12は、アドレス比較回路121による比較結果が一致を示し、かつ、ID比較回路122による比較結果が一致を示す場合に、アクセス要求を行った仮想マシンVMに対してメモリM1へのアクセスを許可する。
【0036】
レジスタ群11において、第2ID格納レジスタ113には、第1ID格納レジスタ112へのアクセス権限が与えられた2つの仮想マシンVMのID、が格納されている。換言すると、第2ID格納レジスタ113には、第1ID格納レジスタ112に格納されたIDの書き換え権限が与えられた2つの仮想マシンVMのID、が格納されている。
【0037】
アクセス判定回路14は、仮想マシンVM1〜VMnのうち何れかの仮想マシンVMからメモリ保護回路1に対して、第1ID格納レジスタ112に格納されたIDの書き換え要求があった場合(換言すると、メモリM1へのアクセス権限を有する仮想マシンVMの変更要求があった場合)、ID書き換え要求を行った仮想マシンVMに対して、第1ID格納レジスタ112に格納されたIDの書き換えを許可するか否かを判定する。
【0038】
例えば、アクセス判定回路14は、ID書き換え要求を行った仮想マシンVMのIDと、第2ID格納レジスタ113に格納された2つのIDの何れかと、が一致した場合に、ID書き換え要求を行った仮想マシンVMに対して、第1ID格納レジスタ112に格納されたIDの書き換えを許可する。このとき、トリガ発生レジスタ114は、パルス形状のトリガ信号TRGを出力する。トリガ信号TRGが出力されると、ID更新制御回路15は、第1ID格納レジスタ112に格納されたIDを、第2ID格納レジスタ113に格納された2つのIDのうちの一方から他方に書き換える。
【0039】
例えば、第1ID格納レジスタ112には、32個の仮想マシンVM1〜VM32に対応する32ビット幅のID格納領域が設けられている。なお、32ビット幅のID格納領域のうち、例えば、下位から第1ビット目の値(即ち、最下位ビットの値)が仮想マシンVM1によるメモリM1へのアクセス権限の有無を表し、下位から第32ビット目の値(即ち、最上位ビットの値)が仮想マシンVM32によるメモリM1へのアクセス権限の有無を表している。
【0040】
同様に、第2ID格納レジスタ113には、32個の仮想マシンVM1〜VM32に対応する32ビット幅のID格納領域が設けられている。なお、32ビット幅のID格納領域のうち、例えば、下位から第1ビット目の値(即ち、最下位ビットの値)が仮想マシンVM1によるID書き換え権限の有無を表し、下位から第32ビット目の値(即ち、最上位ビットの値)が仮想マシンVM32によるID書き換え権限の有無を表している。
【0041】
例えば、仮想マシンVM1に対してメモリM1へのアクセス権限が与えられ、かつ、仮想マシンVM1,VM2に対して第1ID格納レジスタ112に格納されたIDの書き換え権限が与えられている場合、第1ID格納レジスタ112の下位4ビットの値は“0001”を示し、かつ、第2ID格納レジスタ113の下位4ビットの値は“0011”を示す。以下、本例では、上位28ビットの値は何れも0であるため、省略する。
【0042】
ここで、ID書き換え要求に応じてトリガ信号TRGが出力された場合、ID更新制御回路15は、第1ID格納レジスタ112に格納された32ビット幅の値の各ビットと、第2ID格納レジスタ113に格納された32ビット幅の値の各ビットと、の排他的論理和を算出して、第1ID格納レジスタ112に上書きする。具体的には、ID更新制御回路15は、第1ID格納レジスタ112の下位4ビットの値“0001”の各ビットと、第2ID格納レジスタ113の下位4ビットの値“0011”の各ビットと、の排他的論理和である値“0010”を第1ID格納レジスタ112に上書きする。それにより、メモリM1へのアクセス権限を有する仮想マシンが仮想マシンVM1から仮想マシンVM2に移行する。
【0043】
さらに、アクセス判定回路14は、仮想マシンVM1〜VMnのうち何れかの仮想マシンVMからメモリ保護回路1に対して、第1ID格納レジスタ112に格納されたIDのロックの要求があった場合、IDのロックの要求を行った仮想マシンVMに対して、第1格納レジスタ112に格納されたIDのロックを許可するか否かを判定する。
【0044】
例えば、アクセス判定回路14は、IDのロックの要求を行った仮想マシンVMのIDと、第1ID格納レジスタ112に格納されたIDと、が一致した場合に、IDのロックの要求を行った仮想マシンVMに対して、第1ID格納レジスタ112に格納されたIDのロックを許可する。このとき、IDロックレジスタ115は、ロック信号LKをアクティブにする。ロック信号LKがアクティブになると、ID更新制御回路15は、第1ID格納レジスタ112に格納されたIDをロックする。それにより、第1ID格納レジスタ112に格納されたIDは、ロックが解除されるまで、書き換えられなくなる。
【0045】
また、ロックされたIDの仮想マシンVMから、第1ID格納レジスタ112に格納されたIDの書き換え要求があった場合には、当該要求は受け付けられる。このとき、IDロックレジスタ115は、ロック信号LKをアクティブからインアクティブに切り替える。それにより、ロックは解除される。同時に、ID更新制御回路15は、第1ID格納レジスタ112に格納されたIDを、第2ID格納レジスタ113に格納された2つのIDのうちの一方から他方に書き換える。
【0046】
それにより、例えば、メモリM1へのアクセス権限を有する仮想マシンVM1によるメモリM1へのデータの書き込み後、メモリM1へのアクセス権限が仮想マシンVM1から仮想マシンVM2に移行し、その後、仮想マシンVM2によるメモリM1からのデータの読み出しが完了する前に、メモリM1へのアクセス権限が仮想マシンVM2から仮想マシンVM1に移行してしまうのを防ぐことができる。
【0047】
図2は、第1ID格納レジスタ112に格納されたIDがロックされていない場合における、ID書き換え要求を行った仮想マシンVMのIDと、第1ID格納レジスタ112に格納されたIDと、の関係を示す図である。なお、
図2の例では、仮想マシンVM1,VM2に、第1ID格納レジスタ112に格納されたIDの書き換え権限が与えられているものとする。
【0048】
図2を参照すると、第1ID格納レジスタ112に格納されたIDがロックされていない場合、仮想マシンVM1,VM2の何れかからID書き換え要求があれば、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM1,VM2の一方のIDから他方のIDに書き換えられている。
【0049】
図3は、第1ID格納レジスタ112に格納されたIDがロックされている場合における、ID書き換え要求を行った仮想マシンVMのIDと、第1ID格納レジスタ112に格納されたIDと、の関係を示す図である。なお、
図3の例では、仮想マシンVM1,VM2に、第1ID格納レジスタ112に格納されたIDの書き換え権限が与えられているものとする。
【0050】
図3を参照すると、第1ID格納レジスタ112に格納されたIDがロックされている場合、第1ID格納レジスタ112に格納されたIDの仮想マシンVMからID書き換え要求がある場合にのみ、第1ID格納レジスタ112に格納された仮想マシンVM1,VM2の一方のIDから他方のIDに書き換えられている。また、IDが書き換えられた場合には、IDの書き換えとともにロックが解除されている。
【0051】
モード設定レジスタ116には、第2ID格納レジスタ113に格納されたIDの仮想マシンVMからの書き換え要求によって第1ID格納レジスタに格納されたIDの書き換えが行われる動作モード(以下、動作モードMDと称す)、を有効にするか否かが設定される。本実施の形態では、動作モードMDが有効となるように設定されている。なお、動作モードMDが無効となるように設定された場合、メモリ保護回路1は、例えば、メモリ保護回路50と同様の動作を行う。
【0052】
(メモリ保護回路1の動作)
続いて、メモリ保護回路1の動作について説明する。本例では、仮想マシンVM1,VM2との間で共通のメモリM1を介してデータの受け渡しが行われる場合について説明する。
【0053】
まず、ハイパーバイザHV1によってメモリ保護回路1の各レジスタへの初期設定が行われる。例えば、第1ID格納レジスタ112には、仮想マシンVM1のIDが格納される。それにより、仮想マシンVM1には、メモリM1へのアクセス権限が付与される。また、第2ID格納レジスタ113には、仮想マシンVM1,VM2の2つのIDが格納される。それにより、仮想マシンVM1,VM2には、第1格納レジスタ112に格納されたIDの書き換え権限が付与される。また、保護領域設定レジスタ111には、仮想マシンVM1,VM2によってアクセスされるメモリM1の記憶領域が設定される。さらに、モード設定レジスタ116には動作モードMDが有効となるように設定される。
【0054】
ハイパーバイザHV1は、メモリ保護回路1の各レジスタへの初期設定後、メモリM1へのアクセス権限を有する仮想マシンVM1を起動させる。
【0055】
メモリM1へのアクセス権限を有する仮想マシンVM1は、例えば、メモリM1へのデータの書き込みを行う。このとき、仮想マシンVM1は、メモリ保護回路1に対して、第1ID格納レジスタ112に格納されたIDのロックを要求してもよい。IDがロックされることにより、仮想マシンVM1によるメモリM1へのデータの書き込みが完了する前に、メモリM1へのアクセス権限が仮想マシンVM1から仮想マシンVM2に移行してしまうのを防ぐことができる。
【0056】
仮想マシンVM1は、メモリM1へのデータの書き込みが完了すると、メモリ保護回路1に対して、第1ID格納レジスタ112に格納されたIDの書き換えを要求する。ID書き換え要求に応じてトリガ発生レジスタ114からトリガ信号TRGが出力されると、ID更新制御回路15は、第1ID格納レジスタ112に格納されたIDを、仮想マシンVM1のIDから仮想マシンVM2のIDに書き換える。それにより、メモリM1へのアクセス権限は、仮想マシンVM1から仮想マシンVM2に移行する。なお、このとき、IDロックレジスタ115から出力されるロック信号LKはインアクティブになる。それにより、第1ID格納レジスタ112に格納されたIDのロックは解除される。
【0057】
その後、仮想マシンVM1は、仮想マシンVM2に対して割り込み通知を行うことにより、仮想マシンVM2を起動させる。
【0058】
メモリM1へのアクセス権限を有する仮想マシンVM2は、例えば、メモリM1に書き込まれたデータの読み出しを行う。このとき、仮想マシンVM2は、メモリ保護回路1に対して、第1ID格納レジスタ112に格納されたIDのロックを要求してもよい。IDがロックされることにより、仮想マシンVM2によるメモリM1からのデータの読み出しが完了する前に、メモリM1へのアクセス権限が仮想マシンVM2から仮想マシンVM1に移行してしまうのを防ぐことができる。
【0059】
仮想マシンVM2は、メモリM1からのデータの読み出しが完了すると、第1ID格納レジスタ112に格納されたIDの書き換えを要求する。ID書き換え要求に応じてトリガ発生レジスタ114からトリガ信号TRGが出力されると、ID更新制御回路15は、第1ID格納レジスタ112に格納されたIDを、仮想マシンVM2のIDから仮想マシンVM1のIDに書き換える。それにより、メモリM1へのアクセス権限は、仮想マシンVM2から仮想マシンVM1に移行する。なお、このとき、IDロックレジスタ115から出力されるロック信号LKはインアクティブになる。それにより、第1ID格納レジスタ112に格納されたIDのロックは解除される。
【0060】
その後、仮想マシンVM2は、仮想マシンVM1に対して割り込み通知を行うことにより、仮想マシンVM1を起動させる。このような動作が繰り返される。
【0061】
このように、メモリ保護回路1では、2つの仮想マシン間で共通のメモリを介してデータの受け渡しを行う場合、一方の仮想マシンによるメモリM1へのアクセスが完了しても、当該一方の仮想マシンからハイパーバイザに処理を移行させることなく、一方の仮想マシンから他方の仮想マシンに直接的に処理を移行させることができる。つまり、メモリ保護回路1は、2つの仮想マシン間の共通のメモリM1を介したデータの受け渡しを、ハイパーバイザHV1を介することなく、速やかに行うことができる。
【0062】
また、メモリ保護回路1では、メモリ保護回路50の場合と異なり、ハイパーバイザHV1からの要求によって第1ID格納レジスタ112に格納されたIDを書き換えるためのソフトウェアの開発が不要となる。そのため、開発工数を削減することができる。
【0063】
さらに、2つの仮想マシン間のデータ通信を行うにあたり、メモリM1へのアクセス権限は、2つの仮想マシンVMの何れか一つにのみ与えられる。また、メモリM1へのアクセス権限を有する仮想マシンVMの移行は、2つの仮想マシンVMからの要求によってのみ許可される。つまり、保護対象であるメモリM1の記憶領域へのアクセスは、2つの仮想マシンのみによって行われるため、他のリソースからもデータを保護することができる。
【0064】
(メモリ保護回路1の変形例)
本実施の形態では、メモリ保護回路1が、2つの仮想マシンVM1,VM2間で共通のメモリM1を介してデータの受け渡しが行われる場合を例に説明したが、これに限られない。メモリ保護回路1は、3つ以上の仮想マシン間で共通のメモリM1を介してデータの受け渡しが行われてもよい。以下、メモリ保護回路1の変形例をメモリ保護回路1aとして簡単に説明する。
【0065】
図4は、メモリ保護回路1aの動作の一例を説明するための図である。
図4の例では、3個の仮想マシンVM1〜VM3間で共通のメモリM1を介してデータの受け渡しが行われている。
【0066】
なお、第2ID格納レジスタ113には、仮想マシンVM1〜VM3のそれぞれのIDが格納されている。つまり、本例では、仮想マシンVM1〜VM3からのID書き換え要求によって、第1ID格納レジスタ112に格納されたIDの書き換えが可能となっている。
【0067】
図4の例では、まず、仮想マシンVM1にメモリM1へのアクセス権限が与えられている。ここで、仮想マシンVM1からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM1のIDから仮想マシンVM2のIDに書き換えるように要求があった場合、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM1のIDから仮想マシンVM2のIDに書き換えられる。それにより、メモリM1へのアクセス権限は、仮想マシンVM1から仮想マシンVM2に移行する。
【0068】
次に、仮想マシンVM2からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM2のIDから仮想マシンVM3のIDに書き換えるように要求があった場合、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM2のIDから仮想マシンVM3のIDに書き換えられる。それにより、メモリM1へのアクセス権限は、仮想マシンVM2から仮想マシンVM3に移行する。
【0069】
次に、仮想マシンVM3からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM3のIDから仮想マシンVM1のIDに書き換えるように要求があった場合、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM3のIDから仮想マシンVM0のIDに書き換えられる。それにより、メモリM1へのアクセス権限は、仮想マシンVM3から仮想マシンVM1に移行する。
【0070】
次に、メモリM1へのアクセス権限を持たない仮想マシンVM3からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM1のIDから仮想マシンVM2のIDに書き換えるように要求があった場合、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM1のIDから仮想マシンVM2のIDに書き換えられない。この場合、第1ID格納レジスタ112に格納されたIDは、例えば、アクセスのあった仮想マシンVM3のIDに書き換えられる。それにより、メモリM1へのアクセス権限は、仮想マシンVM1から仮想マシンVM3に移行する。
【0071】
次に、メモリM1へのアクセス権限を有する仮想マシンVM3からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されているID(即ち、仮想マシンVM3のID)のロックを要求する旨のアクセスがあった場合、第1ID格納レジスタ112に格納されたIDはロックされる。
【0072】
このとき、メモリM1へのアクセス権限を持たない仮想マシンVM2からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM3のIDから仮想マシンVM1のIDに書き換えるように要求があった場合でも、第1ID格納レジスタ112に格納されたIDは、ロックされているため、仮想マシンVM3のIDから仮想マシンVM1のIDに書き換えられない。つまり、第1ID格納レジスタ112に格納されたIDは、仮想マシンVM3のIDに維持される。それにより、メモリM1へのアクセス権限は、仮想マシンVM3に維持される。
【0073】
それに対し、メモリM1へのアクセス権限を有する仮想マシンVM3からメモリ保護回路1aに対して、第1ID格納レジスタ112に格納されたIDを仮想マシンVM3のIDから仮想マシンVM1のIDに書き換えるように要求があった場合、第1ID格納レジスタ112に格納されたIDは、ロック解除されるため、仮想マシンVM3のIDから仮想マシンVM1のIDに書き換えられる。それにより、メモリM1へのアクセス権限は、仮想マシンVM3から仮想マシンVM1に移行する。
【0074】
なお、メモリM1へのアクセス権限は、メモリM1へのアクセス権限を有する仮想マシンによって、第2ID格納レジスタ113に格納された3つのIDのそれぞれの仮想マシンVM1〜VM3の何れかに移行するように指定される。メモリM1へのアクセス権限の移行先として指定された仮想マシンVMのIDは、例えばトリガ発生レジスタ114に格納される。そして、トリガ発生レジスタ114に格納されたIDと、第2ID格納レジスタ113に格納された3つのIDの何れかと、が一致した場合に、第1ID格納レジスタ112に格納されたIDは、トリガ発生レジスタ114に格納されたIDに書き換えられる。ただし、既に説明したように、メモリM1へのアクセス権限を持たない仮想マシンによってアクセス権限の移行先が指定された場合には、第1ID格納レジスタ112に格納されたIDは、トリガ発生レジスタ114に格納されたIDに書き換えられる代わりに、例えばアクセス権限の移行を要求した仮想マシンのIDに書き換えられる。
【0075】
このように、メモリ保護回路1aは、3つ以上の仮想マシン間の共通のメモリM1を介したデータの受け渡しを、ハイパーバイザを介することなく、速やかに行うことができる。
【0076】
<実施の形態2>
図5は、実施の形態2にかかるメモリ保護システムSYS2の構成例を示すブロック図である。メモリ保護システムSYS2は、メモリ保護システムSYS1と比較して、メモリ保護回路1の代わりにメモリ保護回路2を備える。メモリ保護回路2は、メモリ保護回路1と比較して、カウンタ21と、比較回路22と、閾値格納レジスタ117と、をさらに有する。
【0077】
閾値格納レジスタ117には、ハイパーバイザHV1によって指定された所定の閾値が格納されている。カウンタ21は、IDロックレジスタ115から出力されるロック信号LKがアクティブ(例えばHレベル)になったことに同期して(即ち、第1ID格納レジスタ112に格納されたIDがロックされたタイミングで)、初期値0を示すカウント値CNのカウントアップ動作を開始する。
【0078】
比較回路22は、カウンタ21のカウント値CNと、閾値格納レジスタ117に格納された閾値N1と、を比較する。比較回路22は、カウント値CNが、カウンタ21によるカウントアップ開始後、所定期間経過後に、閾値N1に達すると、比較結果をインアクティブからアクティブ(例えばLレベルからHレベル)に切り替える。それにより、IDロックレジスタ115から出力されるロック信号LKが強制的にアクティブからインアクティブに切り替わるため、第1ID格納レジスタ112に格納されているIDのロックは解除される。つまり、第1ID格納レジスタ112に格納されたIDがシステム異常等によって意図せずロックされ続けた場合でも、ロック開始から所定期間経過後には、強制的に当該IDのロックは解除される。また、比較結果をインアクティブからアクティブに切り替えることによって、ロックの解除と同時に、第1ID格納レジスタ112に格納されたIDの書き換えを行うことができる。
【0079】
メモリ保護回路2のその他の構成については、メモリ保護回路1の場合と同様であるため、その説明を省略する。
【0080】
(メモリ保護回路2の動作)
続いて、
図6を用いて、メモリ保護回路2の動作について説明する。
図6は、メモリ保護回路2の動作を示すフローチャートである。
【0081】
図6に示すように、まず、第1ID格納レジスタ112に格納されたIDの仮想マシンVM(即ち、メモリM1へのアクセス権限が与えられている仮想マシンVM)から、メモリ保護回路2に対して、第1ID格納レジスタ112に格納されているIDのロックを要求する旨のアクセスがあった場合、IDロックレジスタ115は、ロック信号LKをインアクティブからアクティブ(例えばLレベルからHレベル)に切り替える。それにより、第1ID格納レジスタ112に格納されたIDはロックされる(ステップS101)。
【0082】
カウンタ21は、第1ID格納レジスタ112に格納されたIDがロックされたタイミングで、初期値0を示すカウント値CNのカウントアップ動作を開始する(ステップS102)。
【0083】
例えば、カウント値CNが閾値N1に達する前に(ステップS103のNO)、第1ID格納レジスタ112に格納されたIDの仮想マシンVMからのID書き換え要求によって当該IDのロックが解除された場合(ステップS104のYES)には、ロックの解除と同時に、第1ID格納レジスタ112に格納されたIDの書き換えが行われる(ステップS106)。なお、このとき、カウンタ21によるカウントアップ動作は停止し、カウント値CNはゼロに初期化される。
【0084】
それに対し、カウント値CNが閾値N1に達する前に(ステップS103のNO)、第1ID格納レジスタ112に格納されたIDのロックが解除されなければ(ステップS104のNO)、カウンタ21によるカウント値CNのカウントアップ動作は継続される。
【0085】
そして、カウント値CNが閾値N1に達すると(ステップS103のYES)、第1ID格納レジスタ112に格納されたIDの仮想マシンVMからのID書き換え要求が無くても、IDロックレジスタ115から出力されるロック信号LKは強制的にアクティブからインアクティブに切り替わる。それにより、第1ID格納レジスタ112に格納されているIDのロックは解除される(ステップS105)。つまり、第1ID格納レジスタ112に格納されたIDがシステム異常等によって意図せずロックされ続けた場合でも、ロック開始から所定期間経過後には、強制的に当該IDのロックは解除される。
【0086】
このとき、必要に応じて、第1ID格納レジスタ112に格納されるIDの仮想マシンからの要求によって当該IDの書き換えが行われる(ステップS106)。
【0087】
このように、本実施の形態にかかるメモリ保護回路2は、メモリ保護回路1と同等程度の効果を奏することができる。また、本実施の形態にかかるメモリ保護回路2は、第1ID格納レジスタ112に格納されたIDがロックされてから所定期間経過後には、第1ID格納レジスタ112に格納されたIDの仮想マシンVMからの要求が無くても、第1ID格納レジスタ112に格納されているIDのロックを解除する。それにより、本実施の形態にかかるメモリ保護回路2は、第1ID格納レジスタ112に格納されたIDがシステム異常等によって意図せずロックされ続けた場合でも、ロック開始から所定期間経過後に強制的に当該IDのロックを解除することにより、メモリ保護回路2の設定を正常な状態に復帰させることができる。
【0088】
また、本実施の形態にかかるメモリ保護回路2は、ハイパーバイザHV1による処理を介することなく、比較回路22による比較結果に基づいて、強制的にIDのロックを解除している。それにより、ハイパーバイザHV1を起動するためのコンテキストの退避、及び、ハイパーバイザHV1による復帰動作が不要になるため、メモリ保護システムSYS2の性能低下が抑制される。
【0089】
以上のように、上記実施の形態1,2にかかるメモリ保護回路1,2は、複数の仮想マシン間で共通のメモリを介してデータの受け渡しを行う場合、何れかの仮想マシンによるメモリM1へのアクセスが完了しても、その仮想マシンからハイパーバイザに処理を移行させることなく、その仮想マシンから次の仮想マシンに処理を移行させることができる。つまり、メモリ保護回路1は、複数の仮想マシン間の共通のメモリM1を介したデータの受け渡しを、ハイパーバイザHV1を介することなく、速やかに行うことができる。
【0090】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。