(57)【要約】【課題】仮想アドレスと該仮想アドレスを変換した結果を記憶するキャッシュが必要とする資源を抑制すること。【解決手段】物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する演算処理装置であって、前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力する命令制御部と、前記仮想アドレスを前記仮想メモリの実アドレスに変換し、前記実アドレスを前記物理メモリの物理アドレスに変換する変換部と、前記メモリアクセス命令と前記実アドレスの権限属性から権限違反の有無をチェックする権限チェック部と、を備える。前記権限チェック部が権限違反有りと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する。【選択図】図３
2019200450.tif 000002
【特許請求の範囲】
【請求項１】
物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する演算処理装置であって、
前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力する命令制御部と、
前記仮想アドレスを前記仮想メモリの実アドレスに変換し、前記実アドレスを前記物理メモリの物理アドレスに変換する変換部と、
前記メモリアクセス命令と前記実アドレスの権限属性から権限違反の有無をチェックする権限チェック部と、
を備え、
前記権限チェック部が権限違反有りと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する演算処理装置。
【請求項２】
前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶するキャッシュをさらに備える請求項１記載の演算処理装置。
【請求項３】
前記命令制御部から受信した前記仮想アドレスが前記キャッシュにあるか否か判定する判定部をさらに備え、
前記判定部が前記仮想アドレスが前記キャッシュにないと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換し、前記実アドレスを前記物理アドレスに変換し、前記キャッシュは、前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶する請求項２記載の演算処理装置。
【請求項４】
物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する演算処理装置の制御方法であって、
前記演算処理装置の命令制御部が、前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力し、
前記演算処理装置の権限チェック部が、前記メモリアクセス命令と前記仮想アドレスを変換した前記仮想メモリの実アドレスの権限属性から権限違反の有無をチェックし、
前記権限チェック部が権限違反有りと判定したとき、前記演算処理装置の変換部が、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する
演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）上で計算処理を行う際に、処理に使用するデータを情報処理装置上のメモリに書き込んだり、メモリから読み込んだり、すなわちメモリアクセスが行われる。メモリアクセスは、メモリ領域内のメモリアドレスによりアクセスする箇所を指定して実行される。
【０００３】
ＣＰＵ上で、各処理を実行する各プロセスが、使用するメモリ領域をお互いに分離して使えるように、全メモリ領域の一部のみが各プロセスに割り当てられる。この時、各プロセスがメモリ領域を必要とするメモリサイズやタイミングはまちまちであるため、割り当て側の都合でアドレスが離散した複数の領域を割り当てることがある。しかし、各プロセスはアドレスが連続した領域でないと使いにくいという事実もある。また、いつも同じアドレスから開始する領域を割り当てられた方が使いやすいということもある。
【０００４】
例えばこのようなことを解決するために、一般的なＣＰＵはアドレス変換機構を持っている。この場合、各プロセスはあたかも一つの連続したメモリ領域を割り当てられたように見える。各プロセスがその連続したメモリ領域内の任意のアドレスへメモリアクセス要求を発行すると、アドレス変換機構が、実際に割り当てられている離散したメモリ領域内のアドレスへ変換し、情報処理装置上のメモリへアクセスが行われる。
【０００５】
一方、近年は仮想マシンの利用が広がっている。仮想マシンは、実際に存在している物理装置上で複数実行され、一つの仮想マシン上で操作するユーザや実行されるプロセスは、あたかも一つの物理装置上で操作しているもしくは実行されているように見える仕組みである。ここで、実際の物理装置が物理的に持っているメモリの領域が分割され、各仮想マシンに仮想メモリとして割り当てられる。ここでも、前記した理由と同じような理由などで、アドレス変換が行われる。従って、仮想マシン上で動作するプロセスが当該プロセスに割り当てられたメモリ領域のアドレス（以下、仮想アドレス）へアクセスすると、仮想マシン上の仮想メモリのアドレス（以下、実アドレス）へ変換され、更に、その仮想マシンの実アドレスが、仮想マシンに割り当てられている物理装置上の物理メモリの物理アドレスへ変換されることとなる。このような複数回の変換が行うことができるアドレス変換機構は、多くのＣＰＵで採用されている。
【０００６】
このアドレス変換は、プロセスの使用するアドレス領域をどのアドレス領域に変換するかを外部から設定することで、様々な変換を実現できるように設計されている。情報処理装置上の基本ソフトウェアであるＯＳ（Operating System）や、アプリケーションソフトが自由に書き換えできるような装置では、装置起動後に、この変換の設定も自由に設定されるのが一般的である。近年の装置は、より自由度の高い変換ができるように変換の設定もより複雑になってきている。このため、変換設定の間違えや、ソフトウェアのメモリアクセスプログラムの障害(いわゆるバグ)により、変換が上手くできないことが生じる。この時、一般的なアドレス変換機構は、どのようなメモリアクセスがどのような理由で変換に失敗したのかを記録しておく。それにより、ソフトウェア設計者がデバッグしやすくなる。
【０００７】
また、より多くの仮想マシンや多くのプロセスへの変換設定に対応するために、必要な設定量も膨大となっている。そのため、最近は、変換設定をメモリ上に記録しておき、アドレス変換処理をするときに必要な変換設定だけをメモリから読み出して、アドレス変換処理を行うようになっている。しかし、この方式の場合、設定読み込みに時間がかかることから、メモリアクセス性能が劣化してしまう。これを解決するために、通常は、メモリから読み出した変換設定をキャッシュする回路をアドレス変換回路内に持ち、２回目からの変換は高速に変換処理するようになっている。変換設定をキャッシュする回路は、一般的にＴＬＢ(Translation Lookaside Buffer)と呼ばれている。また、２段変換などの複雑な変換処理自体にも時間がかかるため、入力された仮想アドレスに対する実アドレス、実アドレスに対する物理アドレス、もしくは仮想アドレスに対する物理アドレスといった、変換した結果のアドレスをキャッシュとして記憶しておくことで、２回目以降をより高速に変換できるようにするアドレス変換回路も知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−１７３８８４号公報
【特許文献２】特開平７−３１９７３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ここで、アドレス変換機構は、書き込み権限のない領域に書き込みアクセスをするといったイリーガルなメモリアクセスからメモリを保護するために、通常は、変換された実アドレスや物理アドレスの属性としてアクセス権限を設定する。すなわち、変換処理の際に変換されたアドレスが読み込み可能なのか書き込み可能なのか、といった権限も同時に変換設定に記録されており、この属性もＴＬＢに同時に登録される。
【００１０】
ＴＬＢにキャッシュされた変換エントリにヒット(キャッシュヒット)したが、権限違反が検出された場合、デバッグ用の情報として仮想アドレスや実アドレスのログ登録を行う方法がとられる。そのためにＴＬＢには最終変換アドレスである物理アドレスだけではなく、実アドレスも保持される。
【００１１】
本来、結果的に変換が成功のときにＴＬＢに必要なアドレス情報は、入力の仮想アドレスと実際にアクセスする物理アドレスだけである。しかし、権限違反などの変換失敗時に備えて実アドレスもＴＬＢに保持されるため、回路面積が増大し、消費電力も増えるという問題がある。
【００１２】
１つの側面において、本発明は、仮想アドレスと該仮想アドレスを変換した結果を記憶するキャッシュが必要とする資源を抑制することを目的とする。
【課題を解決するための手段】
【００１３】
実施の形態の演算処理装置は、物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する。前記演算処理装置は、命令制御部、変換部、および権限チェック部を有する。
【００１４】
前記命令制御部は、前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力する。
【００１５】
前記変換部は、前記仮想アドレスを前記仮想メモリの実アドレスに変換し、前記実アドレスを前記物理メモリの物理アドレスに変換する。
【００１６】
前記権限チェック部は、前記メモリアクセス命令と前記実アドレスの権限属性から権限違反の有無をチェックする。
【００１７】
前記権限チェック部が権限違反有りと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する。
【発明の効果】
【００１８】
実施の形態によれば、仮想アドレスと該仮想アドレスを変換した結果を記憶するキャッシュが必要とする資源を抑制することができる。
【図面の簡単な説明】
【００１９】
【図１Ａ】比較例の最初の読み出しアクセスを示す図である。
【図１Ｂ】比較例の２回目の読み出しアクセスを示す図である。
【図１Ｃ】比較例の読み出しアクセス後の書き込みアクセスを示す図である。
【図２】比較例の制御方法のフローチャートである。
【図３】実施の形態のＣＰＵの構成図である。
【図４Ａ】実施の形態の最初の読み出しアクセスを示す図である。
【図４Ｂ】実施の形態の２回目の読み出しアクセスを示す図である。
【図４Ｃ】実施の形態の読み出しアクセス後の書き込みアクセスを示す図である。
【図５】実施の形態の制御方法のフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら実施の形態について説明する。
最初に比較例について説明し、その後、実施の形態について説明する。
【００２１】
図１Ａは、比較例の最初の読み出しアクセスを示す図である。
ここでは、書き込み権限の無いメモリ領域に対するアクセスの例を説明する。
【００２２】
ＣＰＵ１は、ＩＵ(Instruction Unit)１１およびＭＭＵ（Memory Management Unit）２１を含む。ＭＭＵ２１は、変換要求受付部３１、仮想アドレス／実アドレス変換部４１、実アドレス／物理アドレス変換部５１、権限チェック部６１、および変換失敗ログ領域７１を含む。変換要求受付部３１は、ＴＬＢ３２を含む。ＴＬＢ３２は、仮想アドレス、権限属性、実アドレス、および物理アドレスを対応付けて記憶している。ＣＰＵ１は、メモリ２の少なくとも一部の領域が仮想メモリとして割り当てられた仮想マシン、仮想マシン上で動作するゲストＯＳ、および仮想マシンを管理するハイパーバイザ等を実行する。また、仮想マシン上では、複数のプロセスが動作しており、各プロセスには、当該プロセスが利用するメモリ領域（仮想アドレス空間）が割り当てられている。仮想マシンからは、割り当てられた仮想メモリは、物理メモリとして見え、当該仮想メモリの物理アドレスに相当するアドレスを実アドレスと呼ぶ。また、プロセスが利用するメモリ領域（仮想アドレス空間）のアドレスを仮想アドレスと呼ぶ。
【００２３】
（１）ＣＰＵ１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのリード命令を発行する。ＩＵ１１は、リード命令に従って変換要求をＭＭＵ２１に出力する。変換要求は、リード命令、およびリード命令の対象のメモリ領域のアドレスである仮想アドレスを含む。
【００２４】
（２）変換要求受付部３１は、変換要求を受信する。変換要求受付部３１は、ＴＬＢ３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ３２にあるか否かチェックする。最初の読み出しアクセスのため、受信した仮想アドレスは、ＴＬＢ３２に記憶されていない。すなわち、キャッシュミスとなる。変換要求受付部３１は、リード命令および仮想アドレスを仮想アドレス／実アドレス変換部４１に出力する。変換要求受付部３１は、仮想アドレスを権限チェック部６１に出力する。
【００２５】
（３）仮想アドレス／実アドレス変換部４１は、リード命令および仮想アドレスを受信する。仮想アドレス／実アドレス変換部４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部４１は、受信したリード命令、変換した実アドレス、および変換した実アドレスに対応する権限属性を実アドレス／物理アドレス変換部５１に出力する。ここで、権限属性は、リードオンリー（すなわち、読み込み可能且つ書き込み不可）であるとする。
【００２６】
（４）実アドレス／物理アドレス変換部５１は、リード命令、実アドレス、および権限属性を受信する。実アドレス／物理アドレス変換部５１は、受信した実アドレスを物理アドレスに変換する。実アドレス／物理アドレス変換部５１は、受信したリード命令、受信した実アドレス、変換した物理アドレス、および受信した権限属性を権限チェック部６１に出力する。
【００２７】
（５）権限チェック部６１は、リード命令、仮想アドレス、実アドレス、物理アドレス、および権限属性を受信する。権限チェック部６１は、受信したリード命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はリード命令であり、権限属性はリードオンリーであるので、権限違反無しと判定される。
（６）権限チェック部６１は、メモリ２の受信した物理アドレスに対する読み出しを行うとともに、受信した権限属性、受信した実アドレス、および受信した物理アドレスをＴＬＢ３２に出力する。ＴＬＢ３２は、変換要求受付部３１が受信した仮想アドレス、権限チェック部６１から受信した権限属性、実アドレス、および物理アドレスを対応付けて記憶する。
【００２８】
次に、上記最初の読み出しアクセス後の２回目の読み出しアクセスの処理を説明する。
図１Ｂは、比較例の２回目の読み出しアクセスを示す図である。
【００２９】
（１）ＣＰＵ１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのリード命令を発行する。ＩＵ１１は、リード命令に従って変換要求をＭＭＵ２１に出力する。変換要求は、リード命令、およびリード命令の対象のメモリ領域のアドレスである仮想アドレスを含む。尚、仮想アドレスは、図１Ａの最初の読み出しアクセス時の仮想アドレスと同一とする。
【００３０】
（２）変換要求受付部３１は、変換要求を受信する。変換要求受付部３１は、ＴＬＢ３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ３２にあるか否かチェックする。
【００３１】
（３）２回目の読み出しアクセス時における受信した仮想アドレスは、最初の読み出しアクセス時の仮想アドレスと同一であるため、受信した仮想アドレスは、ＴＬＢ３２に記憶されている。すなわち、キャッシュヒットとなる。変換要求受付部３１は、リード命令、受信した仮想アドレス、受信した仮想アドレスに対応する権限属性、実アドレス、および物理アドレスを権限チェック部６１に出力する。
【００３２】
（４）権限チェック部６１は、リード命令、仮想アドレス、権限属性、実アドレス、および物理アドレスを受信する。権限チェック部６１は、受信したリード命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はリード命令であり、権限属性はリードオンリーであるので、権限違反無しと判定される。
【００３３】
（５）権限チェック部６１は、メモリ２の受信した物理アドレスに対する読み出しを行う。
【００３４】
次に、上記最初または２回目の読み出しアクセス後の書き込みアクセスの処理を説明する。
【００３５】
図１Ｃは、比較例の読み出しアクセス後の書き込みアクセスを示す図である。
【００３６】
（１）ＣＰＵ１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのライト命令を発行する。ＩＵ１１は、ライト命令に従って変換要求をＭＭＵ２１に出力する。変換要求は、ライト命令、およびライト命令の対象のメモリ領域のアドレスである仮想アドレスを含む。尚、仮想アドレスは、図１Ａの最初の読み出しアクセス時の仮想アドレスと同一とする。
【００３７】
（２）変換要求受付部３１は、変換要求を受信する。変換要求受付部３１は、ＴＬＢ３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ３２にあるか否かチェックする。
【００３８】
（３）書き込みアクセス時における受信した仮想アドレスは、最初の読み出しアクセス時の仮想アドレスと同一であるため、受信した仮想アドレスは、ＴＬＢ３２に記憶されている。すなわち、キャッシュヒットとなる。変換要求受付部３１は、ライト命令、受信した仮想アドレス、受信した仮想アドレスに対応する権限属性、実アドレス、および物理アドレスを権限チェック部６１に出力する。
【００３９】
（４）権限チェック部６１は、ライト命令、仮想アドレス、権限属性、実アドレス、および物理アドレスを受信する。権限チェック部６１は、受信したライト命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はライト命令であり、権限属性はリードオンリーであるので、権限違反有りと判定される。
【００４０】
（５）権限チェック部６１は、受信した仮想アドレスと実アドレスを変換失敗ログ領域７１にエラーログとして記録する。
【００４１】
図２は、比較例の制御方法のフローチャートである。
ステップＳ５１において、ＣＰＵ１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域（仮想アドレス空間）へのメモリアクセス命令（リード命令またはライト命令）を発行する。ＩＵ１１は、プロセスからのメモリアクセス命令に従って変換要求をＭＭＵ２１に出力する。変換要求は、メモリアクセス命令（リード命令またはライト命令）、およびメモリアクセス命令の対象のプロセスに割り当てられたメモリ領域のアドレスである仮想アドレスを含む。
【００４２】
ステップＳ５２において、変換要求受付部３１は、変換要求を受信する。変換要求受付部３１は、ＴＬＢ３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ３２のエントリにあるか否かチェックする。変換要求に含まれる仮想アドレスがＴＬＢ３２のエントリにある（キャッシュヒット）場合、変換要求受付部３１は、メモリアクセス命令、受信した仮想アドレス、受信した仮想アドレスに対応する権限属性、実アドレス、および物理アドレスを権限チェック部６１に出力し、制御はステップＳ５７に進む。変換要求に含まれる仮想アドレスがＴＬＢ３２のエントリにない（キャッシュミス）場合、変換要求受付部３１は、メモリアクセス命令および仮想アドレスを仮想アドレス／実アドレス変換部４１に出力し、仮想アドレスを権限チェック部６１に出力し、制御はステップＳ５３に進む。
【００４３】
ステップＳ５３において、仮想アドレス／実アドレス変換部４１は、メモリアクセス命令および仮想アドレスを受信する。仮想アドレス／実アドレス変換部４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部４１は、受信したメモリアクセス命令、変換した実アドレス、および変換した実アドレスに対応する権限属性を実アドレス／物理アドレス変換部５１に出力する。
【００４４】
ステップＳ５４において、実アドレス／物理アドレス変換部５１は、メモリアクセス命令、実アドレス、および権限属性を受信する。実アドレス／物理アドレス変換部５１は、受信した実アドレスを物理アドレスに変換する。実アドレス／物理アドレス変換部５１は、受信したメモリアクセス命令、受信した実アドレス、変換した物理アドレス、および受信した権限属性を権限チェック部６１に出力する。
【００４５】
ステップＳ５５において、権限チェック部６１は、メモリアクセス命令、仮想アドレス、実アドレス、物理アドレス、および権限属性を受信する。権限チェック部６１は、受信したメモリアクセス命令と受信した権限属性とから権限違反の有無をチェック（判定）する。権限違反無し（ＯＫ）と判定された場合、制御はステップＳ５６に進み、権限違反有り（ＮＧ）と判定された場合、制御はステップＳ５９に進む。
【００４６】
ステップＳ５６において、権限チェック部６１は、受信した権限属性、受信した実アドレス、および受信した物理アドレスをＴＬＢ３２に出力する。ＴＬＢ３２は、変換要求受付部３１が受信した仮想アドレス、権限チェック部６１から受信した権限属性、実アドレス、および物理アドレスを対応付けて記憶する。
【００４７】
ステップＳ５７において、権限チェック部６１は、メモリアクセス命令、仮想アドレス、実アドレス、物理アドレス、および権限属性を受信する。権限チェック部６１は、受信したメモリアクセス命令と受信した権限属性とから権限違反の有無をチェック（判定）する。権限違反無し（ＯＫ）と判定された場合、制御はステップＳ５８に進み、権限違反有り（ＮＧ）と判定された場合、制御はステップＳ６０に進む。
【００４８】
ステップＳ５８において、権限チェック部６１は、メモリ２の受信した物理アドレスに対するメモリアクセスを行う。
【００４９】
ステップＳ５９において、権限チェック部６１は、受信した権限属性、受信した実アドレス、および受信した物理アドレスをＴＬＢ３２に出力する。ＴＬＢ３２は、変換要求受付部３１が受信した仮想アドレス、権限チェック部６１から受信した権限属性、実アドレス、および物理アドレスを対応付けて記憶する。
【００５０】
ステップＳ６０において、権限チェック部６１は、受信した仮想アドレスと実アドレスを変換失敗ログ領域７１にエラーログとして記録する。
【００５１】
図３は、実施の形態のＣＰＵの構成図である。
ＣＰＵ１０１は、ＩＵ１１１およびＭＭＵ１２１を含む。ＣＰＵ１０１は、バスを介してメモリ２０１と接続されている。メモリ２０１は、仮想メモリと区別するため物理メモリと表記する場合がある。ＣＰＵ１０１は、演算処理装置（プロセッサ）の一例である。ＣＰＵ１０１およびメモリ２０１は、例えば、サーバやパーソナルコンピュータなどの情報処理装置（コンピュータ）に搭載されている。ＣＰＵ１０１は、仮想マシン、当該仮想マシン上で動指するゲストＯＳ、および仮想マシンを管理するハイパーバイザ等のプログラムを実行する。仮想マシンには、メモリ２０１の少なくとも一部の領域が仮想メモリとして割り当てられている。仮想マシンからは、割り当てられた仮想メモリは、物理メモリとして見え、当該仮想メモリの物理アドレスに相当するアドレスを実アドレス（仮想物理アドレス）と呼ぶ。また、仮想マシン上では、複数のプロセスが動作しており、各プロセスには、当該プロセスが利用するメモリ領域（仮想アドレス空間）が割り当てられている。プロセスが利用するメモリ領域（仮想アドレス空間）のアドレスを仮想アドレスと呼ぶ。
【００５２】
ＩＵ１１１は、ＣＰＵ１０１で実行されている仮想マシンで実行されているプロセスからのメモリアクセス命令に伴い、変換要求をＭＭＵ１２１へ出力する。ＩＵ１１１は、命令制御部の一例である。
【００５３】
ＭＭＵ１２１は、変換要求受付部１３１、仮想アドレス／実アドレス変換部１４１、実アドレス／物理アドレス変換部１５１、権限チェック部１６１、および変換失敗ログ領域１７１を含む。
変換要求受付部１３１は、ＴＬＢ１３２を含む。
【００５４】
ＴＬＢ１３２は、複数のエントリを記憶し、各エントリには、仮想アドレス、権限属性、および物理アドレスが対応付けられて記憶されている。仮想アドレスは、プロセスが利用するメモリ領域（仮想アドレス空間）のアドレスである。権限属性は、仮想アドレスに対応する実アドレス（または物理アドレス）のアクセス権限を示す。権限属性は、例えば、リードオンリー（読み込み可能且つ書き込み不可）、またはリード／ライト可能（読み込み可能且つ書き込み可能）等である。物理アドレスは、仮想アドレスに対応する実アドレスに対応するメモリ２０１の物理アドレスである。ＴＬＢ１３２は、キャッシュの一例である。
【００５５】
変換要求受付部１３１は、変換要求を受信し、ＴＬＢ１３２を参照し、変換要求に含まれる仮想アドレスを検索キーとしてＴＬＢ１３２を検索し、変換要求に含まれる仮想アドレスを含むエントリがＴＬＢ１３２にあるか否かチェックする。すなわち、変換要求受付部１３１は、変換要求に含まれる仮想アドレスがＴＬＢ１３２のエントリにヒットするか否か（キャッシュヒットまたはキャッシュミス）を判定する。変換要求受付部１３１は、判定部の一例である。
【００５６】
仮想アドレス／実アドレス変換部１４１は、入力された仮想アドレスを当該仮想アドレスに対応する仮想マシンの仮想メモリの実アドレスに変換する。
【００５７】
実アドレス／物理アドレス変換部１５１は、入力された実アドレスを当該実アドレスに対応するメモリ２０１の物理アドレスに変換する。仮想アドレス／実アドレス変換部１４１および実アドレス／物理アドレス変換部１５１は、変換部の一例である。
【００５８】
権限チェック部１６１は、変換要求に含まれるメモリアクセス命令（リード命令またはライト命令）と権限属性とから権限違反の有無をチェック（判定）する。
【００５９】
変換失敗ログ領域１７１は、権限違反有りと判定されたときの仮想アドレスおよび当該仮想アドレスを変換した実アドレスをエラーログとして記憶する。変換失敗ログ領域１７１は、例えば、レジスタである。変換失敗ログ領域１７１は、ログ領域の一例である。
【００６０】
以下、実施の形態のＣＰＵを用いたアクセス処理について説明する。
先ず、最初の読み出しアクセスの処理について説明する。ここでは、書き込み権限の無いメモリ領域に対するアクセスの例を説明する。
【００６１】
図４Ａは、実施の形態の最初の読み出しアクセスを示す図である。
【００６２】
（１）ＣＰＵ１０１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのリード命令を発行する。ＩＵ１１１は、リード命令に従って変換要求をＭＭＵ１２１に出力する。変換要求は、リード命令、およびリード命令の対象のメモリ領域のアドレスである仮想アドレスを含む。
【００６３】
（２）変換要求受付部１３１は、変換要求を受信する。変換要求受付部１３１は、ＴＬＢ１３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ１３２にあるか否かチェックする。最初の読み出しアクセスのため、受信した仮想アドレスは、ＴＬＢ１３２に記憶されていない。すなわち、キャッシュミスとなる。変換要求受付部１３１は、リード命令および仮想アドレスを仮想アドレス／実アドレス変換部１４１に出力する。
【００６４】
（３）仮想アドレス／実アドレス変換部１４１は、リード命令および仮想アドレスを受信する。仮想アドレス／実アドレス変換部１４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部１４１は、受信したリード命令、変換した実アドレス、および変換した実アドレスに対応する権限属性を実アドレス／物理アドレス変換部１５１に出力する。ここで、権限属性は、リードオンリー（すなわち、読み込み可能且つ書き込み不可）であるとする。尚、各実アドレスに対応する権限属性は、予め設定されている。
【００６５】
（４）実アドレス／物理アドレス変換部１５１は、リード命令、実アドレス、および権限属性を受信する。実アドレス／物理アドレス変換部１５１は、受信した実アドレスを物理アドレスに変換する。実アドレス／物理アドレス変換部１５１は、受信したリード命令、受信した実アドレス、変換した物理アドレス、および受信した権限属性を権限チェック部１６１に出力する。
【００６６】
（５）権限チェック部１６１は、リード命令、実アドレス、物理アドレス、および権限属性を受信する。権限チェック部１６１は、受信したリード命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はリード命令であり、権限属性はリードオンリーであるので、権限違反無しと判定される。
【００６７】
（６）権限チェック部１６１は、メモリ２０１の受信した物理アドレスに対する読み出しを行うとともに、受信した権限属性、および受信した物理アドレスをＴＬＢ１３２に出力する。ＴＬＢ１３２は、変換要求受付部１３１が受信した仮想アドレス、権限チェック部１６１から受信した権限属性、および権限チェック部１６１から受信した物理アドレスを対応付けて記憶する。
【００６８】
実施の形態のＣＰＵ１０１のＴＬＢ１３２は、実アドレスを記憶しないため、回路面積を小さくすることが出来る。
【００６９】
次に、上記最初の読み出しアクセス後の２回目の読み出しアクセスの処理を説明する。
図４Ｂは、実施の形態の２回目の読み出しアクセスを示す図である。
【００７０】
（１）ＣＰＵ１０１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのリード命令を発行する。ＩＵ１１１は、リード命令に従って変換要求をＭＭＵ１２１に出力する。変換要求は、リード命令、およびリード命令の対象のメモリ領域のアドレスである仮想アドレスを含む。尚、仮想アドレスは、図４Ａの最初の読み出しアクセス時の仮想アドレスと同一とする。
【００７１】
（２）変換要求受付部１３１は、変換要求を受信する。変換要求受付部１３１は、ＴＬＢ１３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ１３２にあるか否かチェックする。
【００７２】
（３）２回目の読み出しアクセス時における受信した仮想アドレスは、最初の読み出しアクセス時の仮想アドレスと同一であるため、受信した仮想アドレスは、ＴＬＢ１３２に記憶されている。すなわち、キャッシュヒットとなる。変換要求受付部１３１は、リード命令、受信した仮想アドレスに対応する権限属性、および物理アドレスを権限チェック部１６１に出力する。
【００７３】
（４）権限チェック部１６１は、リード命令、権限属性、および物理アドレスを受信する。権限チェック部６１は、受信したリード命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はリード命令であり、権限属性はリードオンリーであるので、権限違反無しと判定される。
【００７４】
（５）権限チェック部１６１は、メモリ２０１の受信した物理アドレスに対する読み出しを行う。
【００７５】
次に、上記最初または２回目の読み出しアクセス後の書き込みアクセスの処理を説明する。
【００７６】
図４Ｃは、実施の形態の読み出しアクセス後の書き込みアクセスを示す図である。
【００７７】
（１）ＣＰＵ１０１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域へのライト命令を発行する。ＩＵ１１１は、ライト命令に従って変換要求をＭＭＵ１２１に出力する。変換要求は、ライト命令、およびライト命令の対象のメモリ領域のアドレスである仮想アドレスを含む。尚、仮想アドレスは、図４Ａの最初の読み出しアクセス時の仮想アドレスと同一とする。
【００７８】
（２）変換要求受付部１３１は、変換要求を受信する。変換要求受付部１３１は、ＴＬＢ１３２を参照し、変換要求に含まれる仮想アドレスがＴＬＢ１３２にあるか否かチェックする。
【００７９】
（３）書き込みアクセス時における受信した仮想アドレスは、最初の読み出しアクセス時の仮想アドレスと同一であるため、受信した仮想アドレスは、ＴＬＢ１３２に記憶されている。すなわち、キャッシュヒットとなる。変換要求受付部１３１は、ライト命令、受信した仮想アドレスに対応する権限属性、および物理アドレスを権限チェック部１６１に出力する。
【００８０】
（４）権限チェック部１６１は、ライト命令、権限属性、および物理アドレスを受信する。権限チェック部１６１は、受信したライト命令と受信した権限属性とから権限違反の有無をチェック（判定）する。ここで、受信した命令はライト命令であり、権限属性はリードオンリーであるので、権限違反有りと判定される。
【００８１】
（５）権限チェック部１６１は、再変換フラグをオンにして、再変換フラグを変換要求受付部１３１に通知する。
【００８２】
（６）変換要求受付部１３１は、再変換フラグを受信すると、再変換フラグおよび変換要求に含まれる仮想アドレスを仮想アドレス／実アドレス変換部１４１に出力する。仮想アドレス／実アドレス変換部１４１は、再変換フラグおよび仮想アドレスを受信する。仮想アドレス／実アドレス変換部１４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部１４１は、再変換フラグおよび変換した実アドレスを実アドレス／物理アドレス変換部１５１に出力する。実アドレス／物理アドレス変換部１５１は、再変換フラグおよび実アドレスを受信する。実アドレス／物理アドレス変換部１５１は、受信した実アドレスを物理アドレスに変換する。
【００８３】
（７）仮想アドレス／実アドレス変換部１４１は、再変換フラグを受信した場合、受信した仮想アドレスを変換失敗ログ領域１７１にエラーログとして記録する。実アドレス／物理アドレス変換部１５１は、再変換フラグを受信した場合、受信した実アドレスを仮想アドレスと対応付けて変換失敗ログ領域１７１にエラーログとして記録する。尚、仮想アドレス／実アドレス変換部１４１が、再変換フラグを受信した場合、受信した仮想アドレスと変換した実アドレスとを対応付けて変換失敗ログ領域１７１にエラーログとして記録してもよい。
【００８４】
比較例のＣＰＵでは、権限違反の検出時にエラーログに記録する実アドレスはＴＬＢから取得されており、そのためにＴＬＢは実アドレスを記憶するための資源が必要となる。一方、実施の形態のＣＰＵでは、権限違反の検出時にエラーログに記録する実アドレスは、仮想アドレス／実アドレス変換部による再度のアドレス変換処理から得るため、ＴＬＢに実アドレスを保持する必要が無い。
【００８５】
実施の形態のＣＰＵによれば、権限違反が発生した場合は、再度のアドレス変換処理が行われるが、権限違反の発生は特別な(稀な)ケースであり、エラーログの登録が多少遅くなっても影響は少ない。むしろ、ＴＬＢの複数エントリ分の実アドレスの領域が不要となることで、大幅に資源を減らすことが可能となり、消費電力も削減できる。
【００８６】
図５は、実施の形態の制御方法のフローチャートである。
ステップＳ５０１において、ＣＰＵ１０１で実行されている仮想マシンで実行されているプロセスが当該プロセスに割り当てられたメモリ領域（仮想アドレス空間）へのメモリアクセス命令（リード命令またはライト命令）を発行する。ＩＵ１１１は、プロセスからのメモリアクセス命令に従って変換要求をＭＭＵ１２１に出力する。変換要求は、メモリアクセス命令（リード命令またはライト命令）、およびメモリアクセス命令の対象のプロセスに割り当てられたメモリ領域のアドレスである仮想アドレスを含む。
【００８７】
ステップＳ５０２において、変換要求受付部１３１は、変換要求を受信する。変換要求受付部１３１は、ＴＬＢ１３２を参照し、変換要求に含まれる仮想アドレスを検索キーとしてＴＬＢ１３２を検索し、変換要求に含まれる仮想アドレスがＴＬＢ１３２のエントリにあるか否かチェックする。変換要求に含まれる仮想アドレスがＴＬＢ１３２のエントリにある（キャッシュヒット）場合、変換要求受付部１３１は、メモリアクセス命令、受信した仮想アドレスに対応する権限属性、および物理アドレスを権限チェック部１６１に出力し、制御はステップＳ５０７に進む。変換要求に含まれる仮想アドレスがＴＬＢ１３２のエントリにない（キャッシュミス）場合、変換要求受付部１３１は、メモリアクセス命令および仮想アドレスを仮想アドレス／実アドレス変換部１４１に出力し、制御はステップＳ５０３に進む。
【００８８】
ステップＳ５０３において、仮想アドレス／実アドレス変換部１４１は、メモリアクセス命令および仮想アドレスを受信する。仮想アドレス／実アドレス変換部１４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部１４１は、受信したメモリアクセス命令、変換した実アドレス、および変換した実アドレスに対応する権限属性を実アドレス／物理アドレス変換部１５１に出力する。
【００８９】
ステップＳ５０４において、実アドレス／物理アドレス変換部１５１は、メモリアクセス命令、実アドレス、および権限属性を受信する。実アドレス／物理アドレス変換部１５１は、受信した実アドレスを物理アドレスに変換する。実アドレス／物理アドレス変換部１５１は、受信したメモリアクセス命令、変換した物理アドレス、および受信した権限属性を権限チェック部１６１に出力する。
【００９０】
ステップＳ５０５において、権限チェック部１６１は、メモリアクセス命令、物理アドレス、および権限属性を受信する。権限チェック部１６１は、受信したメモリアクセス命令と受信した権限属性とから権限違反の有無をチェック（判定）する。すなわち、権限チェック部１６１は、権限属性に基づいて、メモリアクセス対象のアドレスに対してメモリアクセス命令の処理が可能であるか判定する。権限違反無し（ＯＫ）と判定された場合、制御はステップＳ５０６に進み、権限違反有り（ＮＧ）と判定された場合、制御はステップＳ５０９に進む。
【００９１】
ステップＳ５０６において、権限チェック部１６１は、受信した権限属性および受信した物理アドレスをＴＬＢ１３２に出力する。ＴＬＢ１３２は、変換要求受付部１３１が受信した仮想アドレス、権限チェック部１６１から受信した権限属性、および物理アドレスを対応付けて記憶する。
【００９２】
ステップＳ５０７において、権限チェック部１６１は、メモリアクセス命令、物理アドレス、および権限属性を受信する。権限チェック部１６１は、受信したメモリアクセス命令と受信した権限属性とから権限違反の有無をチェック（判定）する。すなわち、権限チェック部１６１は、権限属性に基づいて、メモリアクセス対象のアドレスに対してメモリアクセス命令の処理が可能であるか判定する。権限違反無し（ＯＫ）と判定された場合、制御はステップＳ５０８に進み、権限違反有り（ＮＧ）と判定された場合、制御はステップＳ５１０に進む。
【００９３】
ステップＳ５０８において、権限チェック部１６１は、メモリ２０１の受信した物理アドレスに対するメモリアクセスを行う。
【００９４】
ステップＳ５０９において、権限チェック部１６１は、受信した権限属性および受信した物理アドレスをＴＬＢ１３２に出力する。ＴＬＢ１３２は、変換要求受付部１３１が受信した仮想アドレス、権限チェック部１６１から受信した権限属性、および物理アドレスを対応付けて記憶する。
【００９５】
ステップＳ５１０において、権限チェック部１６１は、再変換フラグをオンにして、再変換フラグを変換要求受付部１３１に通知する。
【００９６】
ステップＳ５１１において、変換要求受付部１３１は、再変換フラグを受信すると、再変換フラグおよび変換要求に含まれる仮想アドレスを仮想アドレス／実アドレス変換部１４１に出力する。仮想アドレス／実アドレス変換部１４１は、再変換フラグおよび仮想アドレスを受信する。仮想アドレス／実アドレス変換部１４１は、受信した仮想アドレスを実アドレスに変換する。仮想アドレス／実アドレス変換部１４１は、再変換フラグおよび変換した実アドレスを実アドレス／物理アドレス変換部１５１に出力する。
【００９７】
ステップＳ５１２において、実アドレス／物理アドレス変換部１５１は、再変換フラグおよび実アドレスを受信する。実アドレス／物理アドレス変換部１５１は、受信した実アドレスを物理アドレスに変換する。
【００９８】
ステップＳ５１３において、仮想アドレス／実アドレス変換部１４１は、再変換フラグを受信すると、受信した仮想アドレスを変換失敗ログ領域１７１にエラーログとして記録する。実アドレス／物理アドレス変換部１５１は、再変換フラグを受信すると、受信した実アドレスを仮想アドレスと対応付けて変換失敗ログ領域１７１にエラーログとして記録する。尚、仮想アドレス／実アドレス変換部１４１が、再変換フラグを受信すると、受信した仮想アドレスと変換した実アドレスとを対応付けて変換失敗ログ領域１７１にエラーログとして記録してもよい。
【００９９】
エラーログに登録されるタイミングは重要ではなく（登録されさえすれば良く）、実施の形態では、通常時に必要な情報を得るアドレス変換動作と異常時のみに必要な情報を得るアドレス変換動作を既存の資源を使って別々に行う。実施の形態のようにＴＬＢに必要な資源数を削減する方が回路面積や消費電力削減となる。
【０１００】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する演算処理装置であって、
前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力する命令制御部と、
前記仮想アドレスを前記仮想メモリの実アドレスに変換し、前記実アドレスを前記物理メモリの物理アドレスに変換する変換部と、
前記メモリアクセス命令と前記実アドレスの権限属性から権限違反の有無をチェックする権限チェック部と、
を備え、
前記権限チェック部が権限違反有りと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する演算処理装置。
（付記２）
前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶するキャッシュをさらに備える付記１記載の演算処理装置。
（付記３）
前記命令制御部から受信した前記仮想アドレスが前記キャッシュにあるか否か判定する判定部をさらに備え、
前記判定部が前記仮想アドレスが前記キャッシュにないと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換し、前記実アドレスを前記物理アドレスに変換し、前記キャッシュは、前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶する付記２記載の演算処理装置。
（付記４）
物理メモリの少なくとも一部の領域を仮想メモリとして割り当てられた仮想マシンを実行する演算処理装置の制御方法であって、
前記演算処理装置の命令制御部が、前記仮想マシン上で実行されるプロセスからのメモリアクセス命令および前記メモリアクセス命令のアクセス先の仮想アドレスを出力し、
前記演算処理装置の権限チェック部が、前記メモリアクセス命令と前記仮想アドレスを変換した前記仮想メモリの実アドレスの権限属性から権限違反の有無をチェックし、
前記権限チェック部が権限違反有りと判定したとき、前記演算処理装置の変換部が、前記仮想アドレスを前記実アドレスに変換するとともに、前記仮想アドレスおよび前記実アドレスをログ領域に記録する
演算処理装置の制御方法。
（付記５）
前記演算処理装置のキャッシュが、前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶する付記４記載の制御方法。
（付記６）
前記演算処理装置の判定部が、前記命令制御部から受信した前記仮想アドレスが前記キャッシュにあるか否か判定し、
前記判定部が前記仮想アドレスが前記キャッシュにないと判定したとき、前記変換部は、前記仮想アドレスを前記実アドレスに変換し、前記実アドレスを前記物理アドレスに変換し、前記キャッシュは、前記仮想アドレス、前記実アドレス、前記権限属性、および前記物理アドレスのうち、前記仮想アドレス、前記権限属性、および前記物理アドレスのみを記憶する付記５記載の制御方法。
【符号の説明】
【０１０１】
１０１    ＣＰＵ
１１１    ＩＵ
１２１    ＭＭＵ
１３１    変換要求受付部
１３２    ＴＬＢ
１４１    仮想アドレス／実アドレス変換部
１５１    実アドレス／物理アドレス変換部
１６１    権限チェック部
１７１    変換失敗ログ領域
２０１    メモリ
【図１Ａ】
2019200450.tif 000003
【図１Ｂ】
2019200450.tif 000004
【図１Ｃ】
2019200450.tif 000005
【図２】
2019200450.tif 000006
【図３】
2019200450.tif 000007
【図４Ａ】
2019200450.tif 000008
【図４Ｂ】
2019200450.tif 000009
【図４Ｃ】
2019200450.tif 000010
【図５】
2019200450.tif 000011