(57)【特許請求の範囲】
【請求項１】
物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、当該仮想マシンがメモリにアクセスする際に用いる論理アドレスを、当該メモリ上の物理アドレスに変換する装置であって、
前記仮想マシンが実行可能な命令であって、前記論理アドレスを前記物理アドレスに変換する命令を、当該仮想マシンが実行すると、当該論理アドレスを当該仮想マシンから受け付ける受付部と、
前記受付部が受け付けた前記論理アドレスを、当該論理アドレスに予め対応付けられた前記物理アドレスに変換する変換部と、
前記変換部による変換で得られた前記物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、
前記暗号化情報生成部により生成された前記暗号化情報を前記仮想マシンに出力する出力部と
を含む、装置。
【請求項２】
前記変換部による変換で得られた前記物理アドレスを含むビット列のハッシュを生成するハッシュ生成部と、
前記ハッシュ生成部により生成された前記ハッシュが前記物理アドレス情報に含まれるように、前記物理アドレスに当該ハッシュを結合する結合部と
を含む、請求項１の装置。
【請求項３】
前記結合部は、前記仮想マシンの識別子が前記物理アドレス情報に含まれるように、前記物理アドレスに当該識別子を更に結合する、請求項２の装置。
【請求項４】
前記ハッシュ生成部は、前記識別子を更に含む前記ビット列のハッシュを生成する、請求項３の装置。
【請求項５】
物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、当該仮想マシンがメモリにアクセスする際に用いる論理アドレスを、当該メモリ上の物理アドレスに変換する装置であって、
前記仮想マシンが実行可能な命令であって、前記論理アドレスを前記物理アドレスに変換する命令を、当該仮想マシンが実行すると、当該論理アドレスを当該仮想マシンから受け付ける受付部と、
前記受付部が受け付けた前記論理アドレスを、前記仮想マシンの識別子と、当該論理アドレスに予め対応付けられた前記物理アドレスとを含むビット列に変換する変換部と、
前記変換部による変換で得られた前記ビット列のハッシュを生成するハッシュ生成部と、
前記変換部による変換で得られた前記ビット列と、前記ハッシュ生成部により生成された前記ハッシュとを結合する結合部と、
前記結合部による結合で得られた物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、
前記暗号化情報生成部により生成された前記暗号化情報を前記仮想マシンに出力する出力部と
を含む、装置。
【請求項６】
物理マシンを論理的に分割することによって実現される仮想マシンを動作させるＣＰＵ（Central Processing Unit）と、当該仮想マシンがメモリにアクセスする際に用いる論理アドレスに対応する当該メモリ上の物理アドレスを用いて当該メモリにアクセスするアクセス装置とを含むシステムであって、
前記ＣＰＵは、
前記仮想マシンが実行可能な命令であって、前記論理アドレスを前記物理アドレスに変換する命令を、当該仮想マシンが実行すると、当該論理アドレスを当該仮想マシンから受け付ける受付部と、
前記受付部が受け付けた前記論理アドレスを、当該論理アドレスに予め対応付けられた前記物理アドレスに変換する変換部と、
前記変換部による変換で得られた前記物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、
前記暗号化情報生成部により生成された前記暗号化情報を前記仮想マシンに出力する出力部と
を含み、
前記アクセス装置は、
前記出力部により出力された前記暗号化情報を受け取った前記仮想マシンから、当該暗号化情報を受信する受信部と、
前記受信部により受信された前記暗号化情報を復号することにより、前記物理アドレス情報を取得する取得部と、
前記取得部により取得された前記物理アドレス情報に含まれる前記物理アドレスを用いて、前記メモリにアクセスするアクセス部と
を含む、システム。
【請求項７】
前記ＣＰＵは、
前記変換部による変換で得られた前記物理アドレスを含むビット列のハッシュである第１のハッシュを生成する第１のハッシュ生成部と、
前記第１のハッシュ生成部により生成された前記第１のハッシュが前記物理アドレス情報に含まれるように、前記物理アドレスに当該第１のハッシュを結合する結合部と
を含み、
前記アクセス装置は、
前記取得部により取得された前記物理アドレス情報に含まれる前記物理アドレスを含むビット列のハッシュである第２のハッシュを生成する第２のハッシュ生成部と、
前記取得部により取得された前記物理アドレス情報に含まれる前記第１のハッシュと、前記第２のハッシュ生成部により生成された前記第２のハッシュとを比較する比較部と、
前記比較部による比較結果が、前記第１のハッシュと前記第２のハッシュとが一致することを示す場合に、前記物理アドレス情報に含まれる前記物理アドレスを前記アクセス部が用いるように制御する制御部と
を含む、請求項６のシステム。
【請求項８】
前記結合部は、前記仮想マシンの識別子である第１の識別子が前記物理アドレス情報に含まれるように、前記物理アドレスに当該第１の識別子を更に結合し、
前記受信部は、前記仮想マシンから、当該仮想マシンの識別子である第２の識別子を更に受信し、
前記比較部は、前記物理アドレス情報に含まれる前記第１の識別子と、前記受信部により受信された前記第２の識別子とを更に比較し、
前記制御部は、前記比較部による比較結果が、前記第１の識別子と前記第２の識別子とが一致することを示す場合に、前記物理アドレス情報に含まれる前記物理アドレスを前記アクセス部が用いるように制御する、請求項７のシステム。
【請求項９】
前記第１のハッシュ生成部は、前記第１の識別子を更に含む前記ビット列のハッシュである前記第１のハッシュを生成し、
前記第２のハッシュ生成部は、前記取得部により取得された前記物理アドレス情報に含まれる前記物理アドレス及び前記第１の識別子を含むビット列のハッシュである前記第２のハッシュを生成する、請求項８のシステム。
【請求項１０】
前記ＣＰＵ及び前記アクセス装置以外の装置が使用できない記憶装置を更に含み、
前記暗号化情報生成部は、前記記憶装置に記憶された暗号化鍵を用いて、前記物理アドレス情報を暗号化し、
前記取得部は、前記記憶装置に記憶された前記暗号化鍵又は当該暗号化鍵に対応する復号鍵を用いて、前記暗号化情報を復号する、請求項６乃至請求項９の何れかのシステム。
【請求項１１】
物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、当該仮想マシンがメモリにアクセスする際に用いる論理アドレスを、当該メモリ上の物理アドレスに変換する方法であって、
前記仮想マシンが実行可能な命令であって、前記論理アドレスを前記物理アドレスに変換する命令を、当該仮想マシンが実行すると、当該論理アドレスを当該仮想マシンから受け付けるステップと、
前記受け付けるステップで受け付けた前記論理アドレスを、当該論理アドレスに予め対応付けられた前記物理アドレスに変換するステップと、
前記変換するステップにおける変換で得られた前記物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成するステップと、
前記暗号化情報を生成するステップで生成された前記暗号化情報を前記仮想マシンに出力するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理アドレスを物理アドレスに変換する装置及び方法に関する。特に、本発明は、物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、仮想マシンがメモリにアクセスする際に用いる論理アドレスを、メモリ上の物理アドレスに変換する装置及び方法に関する。
【背景技術】
【０００２】
近年、仮想化技術の進歩により、１台の物理マシンをハイパーバイザによって論理分割し、複数の仮想マシンとして動作させることが可能となった。各仮想マシンはハイパーバイザによって分離されており、ある仮想マシンが別の仮想マシンのメモリ領域をアクセスすることはできない。これは、次のようなアドレス変換によって実現されている。
ＣＰＵを論理分割して使用する場合、メモリは２種類のアドレスを用いてアクセスされる。このうち、物理アドレスは、ハイパーバイザのみが使用できるアドレスである。また、仮想マシン上のＯＳ等のプログラム（以下、「ゲストパーティション」という）が使用するアドレスは、論理アドレスである。ゲストパーティションがメモリにアクセスする時、ＣＰＵ又はハイパーバイザは、変換テーブルに従って、論理アドレスを物理アドレスに変換する。【０００３】
ところで、特定の処理を高速化する手法として、ＣＰＵにハードウェアアクセラレータ（以下、単に「アクセラレータ」という）等の装置を接続し、特定のワークロードをオフロードする手法がある。例えば、Ｐｏｗｅｒ７（商標）やＰｏｗｅｒＥＮ（商標）チップは、ＩＣＳＷＸ命令によってアクセラレータを呼び出すことができる。このＩＣＳＷＸ命令を仮想マシンが実行した場合、その仮想マシンのＩＤ（ＬＰＡＲＩＤ）とメモリ上のパラメータが配置された場所のアドレスとが目的のアクセラレータへ送信される。
このような環境において、ゲストパーティションとアクセラレータとの間のデータの交換は、データが大きければ、メモリ又はキャッシュを経由して行うのが一般的である。また、データが複雑であれば、リンクリスト、ツリー等のデータ構造を使用し、データ内にメモリ上の他の領域へのポインタを配置することも必要となる。この場合、データ構造を用意するのはゲストパーティションであるため、ポインタは、論理アドレスを指すことになる。ところが、アクセラレータがメモリにアクセスするためには物理アドレスが必要となるため、何らかの方法で、アクセラレータに物理アドレスと論理アドレスとの対応を伝える必要がある。以下では、この「アクセラレータに物理アドレスと論理アドレスとの対応を伝える」処理を「マッピング」と呼ぶ。
通常、このマッピングはハイパーバイザによって行われる。【０００４】
尚、公報記載の技術としても、パーティション内のアドレスとパーティション間で共通なアドレスとの間でアドレス変換を行うものは存在した（例えば、特許文献１参照）。
この特許文献１の技術では、階層型バス型ＳＭＰの内部を複数のパーティションに分け、パーティション間で共有メモリを実現する際に、各ノードの出入り口において、共有領域のアドレスを、パーティション内のアドレスと、パーティション間で共通な共有メモリ空間アドレスとの間で、双方向に変換する手段を設けている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４１２３６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このように、従来は、アクセラレータ等に物理アドレスを渡す必要がある場合、ハイパーバイザがマッピングを行っていた。
しかしながら、ハイパーバイザがマッピングを行うと、マッピングの度にゲストパーティションとハイパーバイザとの間でコンテクストスイッチが発生し、パフォーマンスが低下するという問題がある。
ここで、ゲストパーティションが物理アドレスを知ることができれば、ゲストパーティションもマッピングを行うことができる。ところが、マッピングで誤った対応をアクセラレータに伝えると、アクセラレータが別のゲストパーティションに割り当てられたメモリにアクセスし、パーティション間の分離が侵される可能性がある、という別の問題が発生する。
尚、特許文献１の技術は、これらの問題に対する解決手段を何ら提示するものではない。【０００７】
本発明の目的は、論理アドレスから物理アドレスへの変換を、パフォーマンスを低下させることなく、安全に行うことにある。
【課題を解決するための手段】
【０００８】
かかる目的のもと、本発明は、物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、仮想マシンがメモリにアクセスする際に用いる論理アドレスを、メモリ上の物理アドレスに変換する装置であって、仮想マシンが実行可能な命令であって、論理アドレスを物理アドレスに変換する命令を、仮想マシンが実行すると、論理アドレスを仮想マシンから受け付ける受付部と、受付部が受け付けた論理アドレスを、論理アドレスに予め対応付けられた物理アドレスに変換する変換部と、変換部による変換で得られた物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、暗号化情報生成部により生成された暗号化情報を仮想マシンに出力する出力部とを含む、装置を提供する。【０００９】
ここで、この装置は、変換部による変換で得られた物理アドレスを含むビット列のハッシュを生成するハッシュ生成部と、ハッシュ生成部により生成されたハッシュが物理アドレス情報に含まれるように、物理アドレスにハッシュを結合する結合部とを含む、ものであってよい。
その場合、結合部は、仮想マシンの識別子が物理アドレス情報に含まれるように、物理アドレスに識別子を更に結合する、ものであってよい。
そして、更に、ハッシュ生成部は、識別子を更に含むビット列のハッシュを生成する、ものであってよい。【００１０】
また、本発明は、物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、仮想マシンがメモリにアクセスする際に用いる論理アドレスを、メモリ上の物理アドレスに変換する装置であって、仮想マシンが実行可能な命令であって、論理アドレスを物理アドレスに変換する命令を、仮想マシンが実行すると、論理アドレスを仮想マシンから受け付ける受付部と、受付部が受け付けた論理アドレスを、仮想マシンの識別子と、論理アドレスに予め対応付けられた物理アドレスとを含むビット列に変換する変換部と、変換部による変換で得られたビット列のハッシュを生成するハッシュ生成部と、変換部による変換で得られたビット列と、ハッシュ生成部により生成されたハッシュとを結合する結合部と、結合部による結合で得られた物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、暗号化情報生成部により生成された暗号化情報を仮想マシンに出力する出力部とを含む、装置も提供する。【００１１】
更に、本発明は、物理マシンを論理的に分割することによって実現される仮想マシンを動作させるＣＰＵ（Central Processing Unit）と、仮想マシンがメモリにアクセスする際に用いる論理アドレスに対応するメモリ上の物理アドレスを用いてメモリにアクセスするアクセス装置とを含むシステムであって、ＣＰＵは、仮想マシンが実行可能な命令であって、論理アドレスを物理アドレスに変換する命令を、仮想マシンが実行すると、論理アドレスを仮想マシンから受け付ける受付部と、受付部が受け付けた論理アドレスを、論理アドレスに予め対応付けられた物理アドレスに変換する変換部と、変換部による変換で得られた物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成する暗号化情報生成部と、暗号化情報生成部により生成された暗号化情報を仮想マシンに出力する出力部とを含み、アクセス装置は、出力部により出力された暗号化情報を受け取った仮想マシンから、暗号化情報を受信する受信部と、受信部により受信された暗号化情報を復号することにより、物理アドレス情報を取得する取得部と、取得部により取得された物理アドレス情報に含まれる物理アドレスを用いて、メモリにアクセスするアクセス部とを含む、システムも提供する。【００１２】
ここで、このシステムは、ＣＰＵは、変換部による変換で得られた物理アドレスを含むビット列のハッシュである第１のハッシュを生成する第１のハッシュ生成部と、第１のハッシュ生成部により生成された第１のハッシュが物理アドレス情報に含まれるように、物理アドレスに第１のハッシュを結合する結合部とを含み、アクセス装置は、取得部により取得された物理アドレス情報に含まれる物理アドレスを含むビット列のハッシュである第２のハッシュを生成する第２のハッシュ生成部と、取得部により取得された物理アドレス情報に含まれる第１のハッシュと、第２のハッシュ生成部により生成された第２のハッシュとを比較する比較部と、比較部による比較結果が、第１のハッシュと第２のハッシュとが一致することを示す場合に、物理アドレス情報に含まれる物理アドレスをアクセス部が用いるように制御する制御部とを含む、ものであってよい。
その場合、結合部は、仮想マシンの識別子である第１の識別子が物理アドレス情報に含まれるように、物理アドレスに第１の識別子を更に結合し、受信部は、仮想マシンから、仮想マシンの識別子である第２の識別子を更に受信し、比較部は、物理アドレス情報に含まれる第１の識別子と、受信部により受信された第２の識別子とを更に比較し、制御部は、比較部による比較結果が、第１の識別子と第２の識別子とが一致することを示す場合に、物理アドレス情報に含まれる物理アドレスをアクセス部が用いるように制御する、ものであってよい。
そして、更に、第１のハッシュ生成部は、第１の識別子を更に含むビット列のハッシュである第１のハッシュを生成し、第２のハッシュ生成部は、取得部により取得された物理アドレス情報に含まれる物理アドレス及び第１の識別子を含むビット列のハッシュである第２のハッシュを生成する、ものであってよい。
また、このシステムは、ＣＰＵ及びアクセス装置以外の装置が使用できない記憶装置を更に含み、暗号化情報生成部は、記憶装置に記憶された暗号化鍵を用いて、物理アドレス情報を暗号化し、取得部は、記憶装置に記憶された暗号化鍵又は暗号化鍵に対応する復号鍵を用いて、暗号化情報を復号する、ものであってよい。【００１３】
更にまた、本発明は、物理マシンを論理的に分割することによって実現される仮想マシンを動作させ、仮想マシンがメモリにアクセスする際に用いる論理アドレスを、メモリ上の物理アドレスに変換する方法であって、仮想マシンが実行可能な命令であって、論理アドレスを物理アドレスに変換する命令を、仮想マシンが実行すると、論理アドレスを仮想マシンから受け付けるステップと、受け付けるステップで受け付けた論理アドレスを、論理アドレスに予め対応付けられた物理アドレスに変換するステップと、変換するステップにおける変換で得られた物理アドレスを含む物理アドレス情報を暗号化することにより、暗号化情報を生成するステップと、暗号化情報を生成するステップで生成された暗号化情報を仮想マシンに出力するステップとを含む、方法も提供する。
【発明の効果】
【００１４】
本発明によれば、論理アドレスから物理アドレスへの変換を、パフォーマンスを低下させることなく、安全に行えるようになる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態が適用されるシステムの構成例を示したブロック図である。
【図２】本発明の実施の形態でゲストパーティションが論理アドレスを暗号化実アドレスに変換してアクセラレータに渡すときの動作の概要を示した図である。
【図３】本発明の実施の形態でＣＰＵが論理アドレスを暗号化実アドレス情報に変換する処理の内容を模式的に示した図である。
【図４】本発明の実施の形態におけるＣＰＵの機能構成例を示したブロック図である。
【図５】本発明の実施の形態におけるＣＰＵの動作例を示したフローチャートである。
【図６】本発明の実施の形態でアクセラレータが暗号化実アドレス情報を実アドレス情報に変換する処理の内容を模式的に示した図である。
【図７】本発明の実施の形態におけるアクセラレータの機能構成例を示したブロック図である。
【図８】本発明の実施の形態におけるアクセラレータの動作例を示したフローチャートである。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図１は、本実施の形態が適用されるシステムの構成例を示したブロック図である。
図示するように、このシステムは、ＣＰＵ（Central Processing Unit）１０と、アクセラレータ２０ａ，２０ｂと、メモリ３０と、メモリコントローラ４０と、暗号化鍵保存領域５０とが、バス６０を介して接続されることにより構成される。尚、図では、アクセラレータ２０ａ，２０ｂを示したが、これらを区別する必要がない場合は、アクセラレータ２０と称することもある。また、図には、２つのアクセラレータ２０を示したが、アクセラレータ２０の数はこれに限らず、１つであってもよいし、３つ以上であってもよい。
【００１７】
ＣＰＵ１０は、システム全体の動作を制御する装置である。特に、本実施の形態では、ハイパーバイザによって物理マシン上に複数の仮想マシンを動作させ、各仮想マシン上でＯＳ（Operating System）及びアプリケーションが動作するようにする。
アクセラレータ２０は、ＣＰＵが行う特定の処理の一部を代わりに行うことにより、システムの処理能力を向上させる装置である。ここで、特定の処理としては、データの暗号化、圧縮、伸張等の処理が例示される。尚、本実施の形態では、メモリ３０にアクセスするアクセス装置の一例として、アクセラレータ２０を設けているが、アクセラレータ２０以外の装置を設けてもよい。
【００１８】
メモリ３０は、ＣＰＵ１０が処理で用いるデータ又は処理結果のデータを記憶する装置である。特に、本実施の形態では、ＣＰＵ１０がアクセラレータ２０に受け渡すデータを記憶する。ここで、メモリ３０としては、例えば、ＤＲＡＭ（Dynamic Random Access Memory）を用いるとよい。
メモリコントローラ４０は、メモリ３０へのデータの書き込み及びメモリ３０からのデータの読み出し等を制御する装置である。
【００１９】
暗号化鍵保存領域５０は、後述するＣＰＵ１０での暗号化処理及びアクセラレータ２０での復号処理で用いる暗号化鍵を保存する領域である。この暗号化鍵保存領域５０は、ＣＰＵ１０及びアクセラレータ２０のみがアクセスできる領域とする。このような領域は、例えば、ＴＰＭ（Trusted Platform Module）によって実現可能である。本実施の形態では、ＣＰＵ及びアクセス装置以外の装置が使用できない記憶装置の一例として、暗号化鍵保存領域５０を設けている。
【００２０】
ところで、このシステムにおいて、ハイパーバイザが論理アドレスから実アドレス（物理アドレス）への変換を行ったとすると、ゲストパーティションとの間でコンテクストスイッチが発生してパフォーマンスが低下してしまう。そこで、本実施の形態では、ハイパーバイザではなく、ゲストパーティションが論理アドレスから実アドレスへの変換を行う。具体的には、ゲストパーティションから実行可能な論理アドレスから実アドレスへの変換命令（以下、「ＬＴＯＲ命令」と呼ぶ）を、ＣＰＵ１０に追加する。
【００２１】
但し、ゲストパーティションが論理アドレスから実アドレスへの変換を行えるようにすると、ゲストパーティションが故意に又は誤って不正な実アドレスをアクセラレータへ伝え、別のゲストパーティションに割り当てられたメモリを侵してしまう可能性がある。そこで、本実施の形態では、暗号化された実アドレス（以下、「暗号化実アドレス」という）をゲストパーティションに渡すことにより、各ゲストパーティションに割り当てられたメモリを保護する。
【００２２】
図２は、ゲストパーティションがＬＴＯＲ命令により論理アドレスを暗号化実アドレスに変換してアクセラレータ２０に渡すときの様子を模式的に示した図である。
図示するように、ＣＰＵ１０は、ハイパーバイザ１９１を動作させ、その制御の下で、ゲストパーティション１９２ａ，１９２ｂ，１９２ｃを動作させている。尚、図では、ゲストパーティション１９２ａ，１９２ｂ，１９２ｃを示したが、これらを区別する必要がない場合は、ゲストパーティション１９２と称することもある。また、図には、３つのゲストパーティション１９２を示したが、ゲストパーティション１９２の数はこれに限らず、１つ又は２つであってもよいし、４つ以上であってもよい。
【００２３】
ここで、例えばゲストパーティション１９２ａがＬＴＯＲ命令を実行したとする。すると、ＣＰＵ１０は、ゲストパーティション１９２ａから論理アドレスを受け取り、実アドレスに変換する。但し、本実施の形態では、ＣＰＵ１０は、ゲストパーティション１９２ａに対して、実アドレスをそのまま返すのではなく、上述したように暗号化実アドレスを返す。これにより、ゲストパーティション１９２ａは、実アドレスを知らないまま、バス６０を介してアクセラレータ２０に渡すことになる。
一方、暗号化実アドレスを受け取ったアクセラレータ２０は、暗号化鍵を用いて暗号化実アドレスを実アドレスに変換し、この実アドレスを用いてメモリ３０（図１参照）にアクセスする。
尚、ここでＣＰＵ１０による暗号化及びアクセラレータ２０による復号に使用する暗号化鍵は、前述の通り、ＣＰＵ１０及びアクセラレータ２０のみがアクセス可能な暗号化鍵保存領域５０（図１参照）に保存しておくものとする。
【００２４】
このように、本実施の形態では、ＣＰＵ１０が論理アドレスを暗号化実アドレスに変換する処理と、アクセラレータ２０が暗号化実アドレスを実アドレスに変換する処理とが行われるので、以下、これらを分けて説明する。
【００２５】
［ＣＰＵ１０が論理アドレスを暗号化実アドレスに変換する処理］
図３は、このような処理を行うときの様子を模式的に示した図である。
まず、ゲストパーティション１９２でＬＴＯＲ命令が実行されることにより、論理アドレスがゲストパーティション１９２からＣＰＵ１０に渡される（１Ａ）。
次に、ＣＰＵ１０は、論理アドレスを、アドレス変換テーブルに基づいて実アドレス情報に変換する（１Ｂ）。ここで、実アドレス情報は、左から順に、暗号化ビット、パディング、ＬＰＡＲＩＤ、実アドレス上の実効アドレス（以下、単に「実効アドレス」という）を含む。このうち、暗号化ビットは、実アドレス情報が暗号化されているかどうかを示すビットであり、「１」が暗号化されていることを示し、「０」が暗号化されていないことを示す。１Ｂで変換された直後の実アドレス情報は暗号化されていないので、暗号化ビットは「０」となっている。また、ＬＰＡＲＩＤは、論理パーティション（ＬＰＡＲ）であるゲストパーティション１９２の識別子（ＩＤ）である。図では、省略して「Ｌ」としている。
【００２６】
また、ＣＰＵ１０は、実アドレス情報内のＬＰＡＲＩＤ、実効アドレスからなるビット列にＳＨＡ−１（Secure Hash Algorithm 1）等のハッシュ関数を適用してハッシュを生成し、これをパディングの位置に埋め込むことで、ハッシュ結合ビット列を生成する（１Ｃ）。
更に、ＣＰＵ１０は、ハッシュ結合ビット列内のハッシュ、ＬＰＡＲＩＤ、実効アドレスからなるビット列をＡＥＳ（Advanced Encryption Standard）等により暗号化し、暗号化ビットを「１」に変更することで、暗号化された実アドレス情報（以下、「暗号化実アドレス情報」という）を生成する（１Ｄ）。
これにより、ＣＰＵ１０からゲストパーティション１９２へ暗号化実アドレス情報が送られ、ゲストパーティション１９２が暗号化実アドレス情報を受け取る（１Ｅ）。
【００２７】
次に、図３のような処理を行うＣＰＵ１０の機能構成について説明する。
図４は、ＣＰＵ１０の機能構成例を示したブロック図である。
図示するように、ＣＰＵ１０は、命令デコーダ１１と、権限判定回路１２と、オペランドフェッチ回路１３と、アドレス変換回路１４と、アドレス変換テーブル１４１と、ステータスレジスタ１４２とを備える。また、ハッシュ回路１５と、結合回路１６と、暗号化回路１７と、暗号化鍵受信回路１７１と、ビット変更回路１８とを備える。
【００２８】
命令デコーダ１１は、ハイパーバイザ１９１又はゲストパーティション１９２が実行した命令をデコードする。
権限判定回路１２は、命令デコーダ１１がデコードした命令が、その命令を実行する権限を有するソフトウェアによって実行されたものであるかどうかを判定する。特に、命令デコーダ１１がデコードした命令がＬＴＯＲ命令である場合は、その命令がゲストパーティション１９２によって実行されたかどうかを判定する。
オペランドフェッチ回路１３は、命令デコーダ１１がデコードした命令のオペランドを取り出す。特に、命令デコーダ１１がデコードした命令がＬＴＯＲ命令である場合は、オペランドとして、論理アドレスを取り出す。本実施の形態では、論理アドレスを受け付ける受付部の一例として、オペランドフェッチ回路１３を設けている。
【００２９】
アドレス変換回路１４は、オペランドフェッチ回路１３が取り出した論理アドレスを実アドレス情報に変換する。実アドレス情報は、前述の通り、暗号化ビット、パディング、ＬＰＡＲＩＤ、実効アドレスを含む。本実施の形態では、物理アドレスの一例として、実効アドレスを用いており、仮想マシンの識別子の一例として、ＬＰＡＲＩＤを用いている。また、論理アドレスを物理アドレスに変換する変換部又は論理アドレスを仮想マシンの識別子と物理アドレスとを含むビット列に変換する変換部の一例として、更には、物理アドレスに識別子を結合する結合部の一例として、アドレス変換回路１４を設けている。
アドレス変換テーブル１４１は、アドレス変換回路１４が論理アドレスを実アドレス情報に変換する際に参照されるテーブルであり、論理アドレスと、実アドレス上の実効アドレス（図では単に「実アドレス」と表記）との対応を保持している。
ステータスレジスタ１４２は、アドレス変換回路１４が論理アドレスを実アドレス情報に変換する際に参照されるレジスタであり、ＣＰＵ１０が命令を受け取ると、その命令を実行したゲストパーティション１９２のＬＰＡＲＩＤが保持される。
【００３０】
ハッシュ回路１５は、アドレス変換回路１４による変換後の実アドレス情報内のＬＰＡＲＩＤ及び実効アドレスの部分のハッシュを生成する。本実施の形態では、物理アドレスを含むビット列の一例として、実アドレス情報内のＬＰＡＲＩＤ及び実効アドレスの部分を用いている。また、ビット列のハッシュを生成するハッシュ生成部又は第１のハッシュ生成部の一例として、ハッシュ回路１５を設けている。
結合回路１６は、アドレス変換回路１４による変換後の実アドレス情報内の暗号化ビット、ＬＰＡＲＩＤ、実効アドレスと、ハッシュ回路１５で生成されたハッシュとを結合することにより、ハッシュ結合ビット列を生成する。本実施の形態では、物理アドレスにハッシュを結合する結合部又はビット列とハッシュとを結合する結合部の一例として、結合回路１６を設けている。
【００３１】
暗号化回路１７は、結合回路１６で生成されたハッシュ結合ビット列内のハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を暗号化する。本実施の形態では、物理アドレスを含む物理アドレス情報の一例として、ハッシュ結合ビット列内のハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を用いており、暗号化情報の一例として、暗号化されたハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を用いている。また、物理アドレス情報を暗号化することにより暗号化情報を生成する暗号化情報生成部の一例として、暗号化回路１７を設けている。
暗号化鍵受信回路１７１は、暗号化回路１７が暗号化を行う際に用いる暗号化鍵を暗号化鍵保存領域５０（図１参照）から受信する。
ビット変更回路１８は、暗号化回路１７で暗号化された実アドレス情報内の暗号化ビットを変更することにより、暗号化実アドレス情報を生成する。本実施の形態では、暗号化情報を出力する出力部の一例として、ビット変更回路１８を設けている。
【００３２】
次いで、図３のような処理を行うＣＰＵ１０の動作について説明する。
ＣＰＵ１０では、まず、命令デコーダ１１が命令をデコードし、権限判定回路１２が、その命令を実行する権限を有するソフトウェアがその命令を実行したかどうかを判定する。本実施の形態では、命令デコーダ１１がデコードした命令がＬＴＯＲ命令でゲストパーティション１９２がＬＴＯＲ命令を実行した場合、即ち、ゲストパーティション１９２上のＯＳ又はアプリケーションが、暗号化実アドレス情報に変換したい論理アドレスを引数としてＬＴＯＲ命令を実行した場合に、以降の処理を行う。
【００３３】
図５は、この場合のＣＰＵ１０の動作例を示したフローチャートである。
図示するように、ＣＰＵ１０では、まず、オペランドフェッチ回路１３が、論理アドレスを受け取る（ステップ１０１）。
そして、アドレス変換回路１４が、ステップ１０１で受け取った論理アドレスを実アドレス情報に変換する（ステップ１０２）。具体的には、アドレス変換テーブル１４１に基づいて論理アドレスを実効アドレスに変換し、暗号化ビットと、パディングと、ステータスレジスタ１４２に保持されたＬＰＡＲＩＤとをこれに付加して、実アドレス情報とする。
【００３４】
次に、ハッシュ回路１５は、ステップ１０２で得られた実アドレス情報内のＬＰＡＲＩＤ及び実効アドレスの部分のハッシュ（ダイジェスト）を生成する（ステップ１０３）。
また、結合回路１６は、ステップ１０２で得られた実アドレス情報と、ステップ１０３で生成されたハッシュ（ダイジェスト）とを結合したハッシュ結合ビット列を生成する（ステップ１０４）。
更に、暗号化回路１７は、ステップ１０４で生成されたハッシュ結合ビット列内のハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を暗号化する（ステップ１０５）。具体的には、暗号化鍵受信回路１７１が暗号化鍵保存領域５０から受信した暗号化鍵を用いてＡＥＳ等により暗号化を行う。
そして、ビット変更回路１８は、ステップ１０５での暗号化後のハッシュ結合ビット列の先頭の暗号化ビットを「０」から「１」に変更することで、暗号化実アドレス情報を生成する（ステップ１０６）。
【００３５】
以上の処理により生成された暗号化実アドレス情報は、ゲストパーティション１９２に返される。そして、ゲストパーティション１９２上のＯＳ又はアプリケーションが、暗号化実アドレス情報を受け取り、ＩＣＳＷＸ命令等によりアクセラレータ２０に送信する。尚、以下では、ゲストパーティション１９２が暗号化実アドレス情報をアクセラレータ２０に送信する際に用いる命令としてＩＣＳＷＸ命令を例にとり説明する。
【００３６】
［アクセラレータ２０が暗号化実アドレスを実アドレスに変換する処理］
図６は、このような処理を行うときの様子を模式的に示した図である。
まず、ゲストパーティション１９２上のＯＳ又はアプリケーションは、ＩＣＳＷＸ命令により、アクセラレータ２０へ処理を依頼する。このとき、ＩＣＳＷＸ命令の引数としてゲストパーティションのＬＰＡＲＩＤがアクセラレータ２０に渡される。また、ＩＣＳＷＸ命令が実行されることにより、暗号化実アドレス情報がゲストパーティション１９２からアクセラレータ２０に渡される（２Ａ）。具体的には、暗号化実アドレス情報は、ＩＣＳＷＸ命令の引数、又は、ＩＣＳＷＸ命令の引数で指定されたメモリアドレスに記憶されたデータとして、アクセラレータ２０に渡される。
【００３７】
即ち、アクセラレータ２０は、ＩＣＳＷＸ命令の引数又はメモリ３０に暗号化実アドレス情報を発見すると、以下の復号プロセスを実行する。
まず、アクセラレータ２０は、暗号化実アドレス情報内の暗号化されたハッシュ、ＬＰＡＲＩＤ、実効アドレスからなるビット列をＡＥＳ等により復号することで、復号ビット列を生成する（２Ｂ）。
次に、アクセラレータ２０は、復号ビット列内のＬＰＡＲＩＤ、実効アドレスからなるビット列にＳＨＡ−１等のハッシュ関数を適用してハッシュを生成する（２Ｃ）。
【００３８】
これにより、アクセラレータ２０は、復号ビット列内のハッシュと、２Ｃで生成されたハッシュとを比較する（２Ｄ）。その結果、ハッシュが一致していれば次のステップへ進むが、ハッシュが一致していなければエラーとみなして以降の処理を行わない。
また、図示しないが、２Ｄでは、ＩＣＳＷＸ命令を実行したゲストパーティション１９２のＬＰＡＲＩＤと、復号ビット列内のＬＰＡＲＩＤとの比較も行う。その結果、ＬＰＡＲＩＤが一致していれば次のステップへ進むが、ＬＰＡＲＩＤが一致していなければエラーとみなして以降の処理を行わない。
２Ｄでハッシュ及びＬＰＡＲＩＤが一致すると、アクセラレータ２０は、復号ビット列内のハッシュを「０」でパディングする（２Ｅ）。
また、アクセラレータ２０は、復号ビット列内の暗号化ビットを「０」に変更することで、実アドレス情報を生成する（２Ｆ）。
そして、最後に、アクセラレータ２０は、２Ｆで生成された実アドレス情報を使用してメモリ３０にアクセスする（２Ｇ）。
【００３９】
次に、図６のような処理を行うアクセラレータ２０の機能構成について説明する。
図７は、アクセラレータ２０の機能構成例を示したブロック図である。
図示するように、アクセラレータ２０は、命令デコーダ２１と、オペランドフェッチ回路２２と、復号回路２３と、暗号化鍵受信回路２３１と、ハッシュ回路２４と、比較回路２５とを備える。また、パディング回路２６と、ビット変更回路２７と、メモリアクセス回路２８とを備える。
【００４０】
命令デコーダ２１は、ＣＰＵ１０からＩＣＳＷＸ命令によって送信された命令を受信してデコードする。送信された命令には、処理内容の指示のほか、送信元ゲストパーティションのＬＰＡＲＩＤが含まれる。
オペランドフェッチ回路２２は、命令デコーダ２１がデコードした命令のオペランド、及びＬＰＡＲＩＤを取り出す。オペランドには、多くの場合、暗号化実アドレス情報が含まれる。本実施の形態では、暗号化情報を受信する受信部又は仮想マシンの識別子を受信する受信部の一例として、オペランドフェッチ回路２２を設けている。
【００４１】
復号回路２３は、オペランドフェッチ回路２２で取り出された暗号化実アドレス情報内の暗号化されたハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を復号することにより、復号ビット列を生成する。本実施の形態では、暗号化情報の一例として、暗号化されたハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を用いており、物理アドレス情報の一例として、復号ビット列を用いている。また、暗号化情報を復号することにより物理アドレス情報を取得する取得部の一例として、復号回路２３を設けている。
暗号化鍵受信回路２３１は、復号回路２３が復号を行う際に用いる暗号化鍵を暗号化鍵保存領域５０（図１参照）から受信する。
【００４２】
ハッシュ回路２４は、復号回路２３で生成された復号ビット列内のＬＰＡＲＩＤ及び実効アドレスの部分のハッシュを生成する。本実施の形態では、物理アドレスを含むビット列の一例として、復号ビット列内のＬＰＡＲＩＤ及び実効アドレスの部分を用いている。また、ビット列のハッシュを生成する第２のハッシュ生成部の一例として、ハッシュ回路２４を設けている。
比較回路２５は、復号回路２３で生成された復号ビット列内のハッシュと、ハッシュ回路２４で生成されたハッシュとの比較、及び、復号回路２３で生成された復号ビット列内のＬＰＡＲＩＤと、オペランドフェッチ回路２２で取り出されたＬＰＡＲＩＤとの比較を行う。そして、これらの比較の結果が何れも一致していることを示している場合に、以降の回路での動作を行う。本実施の形態では、ハッシュを比較する比較部又は識別子を比較する比較部の一例として、また、物理アドレスをアクセス部が用いるように制御する制御部の一例として、比較回路２５を設けている。
【００４３】
パディング回路２６は、復号回路２３で生成された復号ビット列内のハッシュの部分を「０」でパディングする。
ビット変更回路２７は、パディング回路２６でパディングされた復号ビット列内の暗号化ビットを変更することにより、実アドレス情報を生成する。
メモリアクセス回路２８は、ビット変更回路２７で生成された実アドレス情報を用いて、メモリ３０にアクセスする。本実施の形態では、物理アドレスを用いてメモリにアクセスするアクセス部の一例として、メモリアクセス回路２８を設けている。
【００４４】
次いで、図６のような処理を行うアクセラレータ２０の動作について説明する。
アクセラレータ２０では、まず、命令デコーダ２１が命令をデコードする。本実施の形態では、命令デコーダ２１がデコードした命令のオペランドに暗号化実アドレス情報が含まれる場合に、以降の処理を行う。
【００４５】
図８は、この場合のアクセラレータ２０の動作例を示したフローチャートである。
図示するように、アクセラレータ２０では、まず、オペランドフェッチ回路２２が、ＬＰＡＲＩＤと暗号化実アドレス情報とを受け取る（ステップ２０１）。ここで、暗号化実アドレス情報内の暗号化ビットが「０」である場合については、既存の方法でメモリ３０にアクセスすればよいので説明を省略し、以下では、暗号化実アドレス情報内の暗号化ビットが「１」の場合について説明する。
【００４６】
この場合、まず、復号回路２３は、暗号化実アドレス情報内の暗号化されたハッシュ、ＬＰＡＲＩＤ、実効アドレスの部分を復号することにより、復号ビット列を生成する（ステップ２０２）。具体的には、暗号化鍵受信回路２３１が暗号化鍵保存領域５０から受信した暗号化鍵を用いてＡＥＳ等により復号を行う。但し、暗号化回路１７での暗号化に用いられた暗号化鍵とは異なる、暗号化鍵に対応する復号鍵を用いて復号を行ってもよい。
次に、ハッシュ回路２４は、ステップ２０２で得られた復号ビット列内のＬＰＡＲＩＤ及び実効アドレスの部分のハッシュ（ダイジェスト）を生成する（ステップ２０３）。
【００４７】
これにより、比較回路２５は、ステップ２０２で生成された復号ビット列内のハッシュと、ステップ２０３で生成されたハッシュとを比較し、これらが一致しているかどうかを判定する（ステップ２０４）。
その結果、ハッシュが一致していないと判定されれば、実アドレス情報内のＬＰＡＲＩＤ又は実効アドレスがゲストパーティション１９２で改ざんされた可能性があるので、処理を終了する。一方、ハッシュが一致していると判定されれば、比較回路２５は、ステップ２０１で受け取ったＬＰＡＲＩＤと、ステップ２０２で生成された復号ビット列内のＬＰＡＲＩＤとを比較し、これらが一致しているかどうかを判定する（ステップ２０５）。
その結果、ＬＰＡＲＩＤが一致していないと判定されれば、ＬＰＡＲＩＤが書き換えられた可能性があるので、処理を終了する。一方、ＬＰＡＲＩＤが一致していると判定されれば、パディング回路２６以降に処理を移す。
【００４８】
即ち、パディング回路２６は、ステップ２０２で生成された復号ビット列内のハッシュの部分を「０」でパディングする（ステップ２０６）。
また、ビット変更回路２７は、ステップ２０６でのパディング後の復号ビット列の先頭の暗号化ビットを「１」から「０」に変更することで、実アドレス情報を生成する（ステップ２０７）。
そして、メモリアクセス回路２８は、ステップ２０７で生成された実アドレス情報内の実効アドレスを用いて、メモリ３０にアクセスする（ステップ２０８）。
【００４９】
このように、本実施の形態では、ＣＰＵ１０が実アドレスをそのままではなく暗号化してゲストパーティション１９２に伝えるようにした。これにより、ゲストパーティション１９２が実アドレスを直接扱えるようになり、マッピングのオーバーヘッドを軽減することが可能となった。
また、本実施の形態では、不正な暗号化実アドレスの使用防止策を講じた。具体的には、実アドレス内のＬＰＡＲＩＤと送信元のゲストパーティション１９２のＬＰＡＲＩＤとの合致、及び、実アドレスとそのダイジェストとの合致をチェックするようにした。これにより、実アドレスが改ざんされたとしても受け取った側で改ざんを検出できるので、ゲストパーティション１９２が不正な実アドレスをアクセラレータ２０へ渡すことを防止できる。
【００５０】
尚、本実施の形態では、ハッシュを生成する際の処理対象を、ＬＰＡＲＩＤ及び実効アドレスの部分としたが、実効アドレスのみとしてもよい。つまり、実効アドレスのみのハッシュを生成することとしてもよい。
また、本実施の形態では、実アドレス情報にＬＰＡＲＩＤ及びハッシュを含めたが、実アドレス情報にこれらの少なくとも一方を含めないような態様を採用してもよい。
【００５１】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００５２】
１０…ＣＰＵ、１１，２１…命令デコーダ、１２…権限判定回路、１３，２２…オペランドフェッチ回路、１４…アドレス変換回路、１４１…アドレス変換テーブル、１４２…ステータスレジスタ、１５，２４…ハッシュ回路、１６…結合回路、１７…暗号化回路、１７１，２３１…暗号化鍵受信回路、１８，２７…ビット変更回路、２０…アクセラレータ、２３…復号回路、２５…比較回路、２６…パディング回路、２８…メモリアクセス回路、３０…メモリ、４０…メモリコントローラ、５０…暗号化鍵保存領域、６０…バス
【図１】
0005576565.tif 000002
【図２】
0005576565.tif 000003
【図３】
0005576565.tif 000004
【図４】
0005576565.tif 000005
【図５】
0005576565.tif 000006
【図６】
0005576565.tif 000007
【図７】
0005576565.tif 000008
【図８】
0005576565.tif 000009