以下、図面を用いて実施形態を説明する。
図1は、情報処理システム、送信装置および情報処理システムの制御方法の一実施形態を示す。図1に示す情報処理システムSYS1は、データを送信する送信装置100と、送信装置100からデータを受信する受信装置200とを有する。送信装置100は、データ処理部110、管理部120、保持部130、140、パケット生成部150およびパケット送信部160を有する。受信装置200は、パケット受信部210、保持部220、比較部230、240、書き込み制御部250および記憶部260を有する。保持部130は、第1の保持部の一例であり、保持部140は、第2の保持部の一例であり、保持部220は、第3の保持部の一例である。
データ処理部110は、アプリケーションプログラムAPRGを実行することでデータDATAを生成し、生成したデータDATAを、鍵情報KEY1を保持する保持部130に格納する。アプリケーションプログラムAPRGは、データ処理部110が実行するソフトウェアの一例である。データ処理部110は、送信装置100に搭載されるCPU(Central Processing Unit)等のプロセッサまたはプロセッサが有するプロセッサコア等である。
管理部120は、データ処理部110の動作を管理するとともに鍵情報KEY2を生成し、生成した鍵情報KEY2を保持部140に格納する。管理部120は、データ処理部110の動作を管理するOS(Operating System)等の管理プログラム、または、OSを実行する仮想マシンを制御するハイパーバイザ等の制御プログラムにより実現される。あるいは、管理部120は、データ処理部110の状態を管理するサービスプロセッサ等の管理装置が実行する状態管理プログラムにより実現される。なお、管理部120は、送信装置100の外部に設けられてもよい。
例えば、保持部130、140の記憶領域は、I/O空間に割り当てられる。保持部130は、アプリケーションプログラムAPRGによりアクセスが可能であり、保持部140は、アプリケーションプログラムAPRGによる書き込みが禁止されている。すなわち、保持部130と保持部140とは、アクセス権限が互いに異なる。このため、アプリケーションプログラムAPRGの誤動作等により誤った鍵情報KEY2が保持部140に格納されることを抑止することができる。換言すれば、保持部140に保持された鍵情報KEY2は、アプリケーションプログラムAPRGによって誤って書き替えられることはない。鍵情報KEY1は、第1の鍵情報の一例であり、鍵情報KEY2は、第2の鍵情報の一例である。
パケット生成部150は、保持部130に保持されたデータDATAおよび鍵情報KEY1と、保持部140に保持された鍵情報KEY2とを含むパケットを生成する。すなわち、パケット生成部150は、アクセス権限が互いに異なる複数の保持部130、140に保持された鍵情報KEY1、KEY2を含むパケットを生成する。パケット送信部160は、パケット生成部150が生成したパケットを受信装置200に送信する。
パケット受信部210は、送信装置100からのパケットを受信する。また、パケット受信部210は、送信装置100がデータDATAを送信する前に生成する鍵情報KEY1、KEY2を予め受信し、受信した鍵情報KEY1、KEY2を保持部220に格納する。すなわち、保持部220は、送信装置100が生成する鍵情報KEY1、KEY2を、データDATAが送信装置100から転送される前に予め保持する。
比較部230は、パケット受信部210が受信したパケットに含まれる鍵情報KEY1と、保持部220に保持された鍵情報KEY1とを比較し、比較結果を書き込み制御部250に出力する。比較部240は、パケット受信部210が受信したパケットに含まれる鍵情報KEY2と、保持部220に保持された鍵情報KEY2とを比較し、比較結果を書き込み制御部250に出力する。比較部230は、第1の比較部の一例であり、比較部240は、第2の比較部の一例である。
書き込み制御部250は、比較部230による比較結果が一致を示し、かつ、比較部240による比較結果が一致を示す場合、パケット受信部210が受信したパケットが正常であると判定し、パケットに含まれるデータを記憶部260に書き込む。一方、書き込み制御部250は、比較部230による比較結果と比較部240による比較結果との少なくともいずれかが不一致を示す場合、パケット受信部210が受信したパケットが正常でないと判定する。この場合、書き込み制御部250は、パケットに含まれるデータを記憶部260に書き込むことなく破棄する。例えば、記憶部260は、SDRAM(Synchronous Dynamic Random Access Memory)、HDD(Hard Disk Drive)またはSSD(Solid State Drive)等の記憶装置に割り当てられる。記憶部260は、受信装置200の外部に設けられてもよい。
以上のように、受信装置200は、アクセス権限が異なる複数の保持部130、140に保持された鍵情報KEY1、KEY2を用いて、受信したパケットが正常であるか否かを判定する。このため、1つの鍵情報、またはアクセス権限が互いに同じ複数の保持部に保持された複数の鍵情報を用いて、受信したパケットが正常であるか否かを判定する場合に比べて、判定の信頼性を向上することができる。この結果、受信装置200が、正常でないパケットに含まれる誤ったデータを用いてデータ処理等を実行することを抑止することができ、情報処理システムSYS1の信頼性を向上することができる。
図2は、図1に示す情報処理システムSYS1の動作の一例を示す。すなわち、図2は、情報処理システムの制御方法の一例を示す。
管理部120は、データDATAの受信装置200への送信が開始される前に、鍵情報KEY2を保持部140に格納するとともに受信装置200に転送する(図2(a))。すなわち、アプリケーションプログラムAPRGより上位のOS等のプログラムによる鍵情報KEY2の保持部140への格納は、データDATAの転送前に予め実行される。このため、データDATAの受信装置200への転送時に、保持部140にアクセスするためのプロセスの切り替えは発生せず、プロセスの切り替え時にプロセスの状態を保存するコンテキストスイッチは発生しない。したがって、コンテキストスイッチ等により、アプリケーションプログラムAPRGの実行効率が低下することを抑止することができる。
アプリケーションプログラムAPRGは、データDATAの受信装置200への送信を開始する前に、鍵情報KEY1を受信装置200に転送する(図2(b))。受信装置200は、送信装置100から転送された鍵情報KEY1、KEY2を保持部220に格納する(図2(c))。
アプリケーションプログラムAPRGは、データDATAを受信装置200に送信する場合、データDATAおよび鍵情報AKEY1を保持部130に格納する(図2(d))。この後、図2に破線の矢印で示すように、アプリケーションプログラムAPRGは、パケット生成部150にパケットの生成を指示する(図2(e))。
パケット生成部150は、アプリケーションプログラムAPRGからの指示に基づいて、保持部130からデータDATAおよび鍵情報AKEY1を読み出し、保持部140から鍵情報KEY2を読み出す(図2(f))。そして、パケット生成部150は、データDATAと鍵情報KEY1、KEY2とを含むパケットを生成し、生成したパケットを受信装置200に送信する(図2(g))。
受信装置200のパケット受信部210は、受信したパケットに含まれる鍵情報KEY1を比較部230に出力し、受信したパケットに含まれる鍵情報KEY2を比較部240に出力する(図2(h))。
比較部230は、パケット受信部210からの鍵情報KEY1と、保持部220に保持された鍵情報KEY1とを比較し、比較結果を書き込み制御部250に出力する(図2(i))。比較部240は、パケット受信部210からの鍵情報KEY2と、保持部220に保持された鍵情報KEY2とを比較し、比較結果を書き込み制御部250に出力する(図2(j))。
図2に示す例では、比較部230による比較結果が一致を示し、かつ、比較部240による比較結果が一致を示すため、書き込み制御部250は、パケット受信部210が受信したパケットが正常であると判定する。そして、書き込み制御部250は、パケットに含まれるデータDATAを記憶部260に書き込む(図2(k))。
以上、図1および図2に示す実施形態では、アプリケーションプログラムAPRGより上位のOS等のプログラムは、アプリケーションプログラムAPRGによるアクセスが許可されていない保持部140に鍵情報KEY2を格納する。これにより、アプリケーションプログラムAPRGの誤動作等により誤った鍵情報KEY2が保持部140に格納されることを抑止することができる。また、アクセス権限が異なる複数の保持部130、140に保持された鍵情報KEY1、KEY2を用いて、受信したパケットが正常であるか否かを判定することで、判定の信頼性を向上することができる。
したがって、送信装置100が送信した誤ったパケットが、受信装置200により処理されることを抑止することができ、受信装置200が、誤ったパケットに含まれるデータを用いてデータ処理等を実行することを抑止することができる。この結果、情報処理システムSYS1の信頼性を向上することができる。
アプリケーションプログラムAPRGより上位のOS等のプログラムによる鍵情報KEY2の保持部140への格納は、データDATAの転送前に予め実行される。このため、データDATAの受信装置200への転送時にコンテキストスイッチ等は発生せず、コンテキストスイッチ等により、アプリケーションプログラムAPRGの実行効率が低下することを抑止することができる。
図3は、情報処理システム、送信装置および情報処理システムの制御方法の別の実施形態を示す。図3に示す情報処理システムSYS2は、クロスバースイッチGXBにより相互に接続された複数のノードND(ND0、ND1、ND2、ND3)を有する。各ノードNDは、サーバ等の情報処理装置により構築される。なお、情報処理システムSYS2に搭載されるノードNDの数は、4個に限定されない。ノードND0−ND3は、互いに同一または同様の構成であるため、以下ではノードND0の構成が説明される。
ノードND0は、複数のCPU(CPU0、CPU1)、複数の記憶装置MEM(MEM0、MEM1)、クロスバースイッチLXB、スイッチSW、HDDおよびネットワークインタフェースNWIFを有する。各CPUは、メモリバスMBUS(MBUS0、MBUS1)を介して互いに異なる記憶装置MEMに接続される。例えば、記憶装置MEMは、複数のSDRAM)が搭載されたDIMM(Dual Inline Memory Module)である。なお、各ノードNDは、HDDの代わりにSSDを有してもよく、HDDとSSDの両方を有してもよい。
各ノードNDにおいて、CPUは、他のCPUに接続された記憶装置MEMにアクセス可能である。さらに、各ノードNDのCPUは、クロスバースイッチLXB、GXBを介して、他のノードNDのCPUに接続された記憶装置MEMにアクセス可能である。すなわち、情報処理システムSYS2は、cc−NUMA(cache-coherent NonUniform Memory Access)アーキテクチャを採用したマルチプロセッサシステムとして機能する。
クロスバースイッチLXBは、各CPUをクロスバースイッチGXBに接続する。なお、各ノードND内のCPUは、クロスバースイッチLXBを介することなく、データ等の情報を直接送受信可能である。スイッチSWは、例えば、PCIe(Peripheral Component Interconnect express)スイッチ等であり、各CPUをHDDまたはネットワークインタフェースNWIFに接続する。ネットワークインタフェースNWIFは、LAN(Local Area Network)等のネットワークに接続される。
クロスバースイッチGXBは、各ノードNDから受信するデータを含むパケットを、パケットに含まれる宛先情報により示されるノードNDに出力する。クロスバースイッチGXBは、各ノードNDのハードウェア等の資源を管理するサービスプロセッサSPを有する。
例えば、サービスプロセッサSPは、状態管理プログラムを実行することで、CPUに供給される電源電圧、クロック周波数を制御し、ノードND内のCPU等が収納される筐体内の温度に応じて、筐体に取り付けられたファン(図示せず)の回転数を制御する。サービスプロセッサSPは、CPUおよび図4に示すCPUコア10の状態を管理する管理装置の一例である。なお、サービスプロセッサSPは、各ノードNDに搭載されてもよい。
図4は、図3に示すCPUの一例を示す。図4は、CPUコア10間で転送されるパケットの処理に関連する要素を示し、CPUと図3に示すスイッチSWとの接続に関連する要素およびCPU間の接続に関連する要素等の記載は省略される。なお、パケットを送信するCPUは、送信装置として機能し、パケットを受信するCPUは、受信装置として機能する。
CPUは、システムバスSBUSを介して互いに接続されたCPUコア10(10a、10b、10c、10d)、レジスタ部20、パケット制御部30、レジスタ部60、メモリ制御部70、およびメモリ制御部70に接続されたキャッシュメモリ80を有する。なお、CPUコア10は、メモリ制御部70を介してシステムバスSBUSに接続されてもよい。CPUに搭載されるCPUコア10の数は、4個に限定されない。以下の説明では、CPUコア10は、コア10とも称される。
各コア10は、メモリバスMBUSを介して接続される記憶装置MEM(図3)に格納されたアプリケーションプログラムを実行する。アプリケーションプログラムは、コア10が実行するソフトウェアの一例である。そして、各コア10は、アプリケーションプログラムの処理に使用するデータ等の情報を、他のコア10に送信し、または、データ等の情報を他のコア10から受信する。すなわち、複数のコア10が実行するアプリケーションプログラム間でデータ等の情報が転送される。なお、データ等の情報を互いに転送するコア10は、1つのノードNDに含まれてもよく、互いに異なるノードNDに含まれてもよい。記憶装置MEMに格納されたアプリケーションプログラム(命令コード)は、コア10にフェッチされたことに基づいてキャッシュメモリ80に保持される。コア10は、アプリケーションプログラムを実行するデータ処理部の一例である。
レジスタ部20は、各コア10から他のコア10に送信するデータと、データの送信処理に使用する情報と、送信したデータに対する他のコア10から応答に含まれる情報とを保持する複数のエントリENTSを有する。エントリENTSは、コア10に対応してそれぞれ設けられる。レジスタ部20は、CPU内の各コア10と、パケット制御部30によりアクセスされる。エントリENTSの例は、図5に示される。
パケット制御部30は、パケット送信制御部40およびパケット受信制御部50を有する。パケット送信制御部40は、データを送信する場合、レジスタ部20のエントリENTSに保持されたデータを含む情報を用いてパケットを生成し、生成したパケットを、クロスバースイッチLXBを介してパケットの送信先のコア10に向けて送信する。また、パケット送信制御部40は、対応するパケット受信制御部50がデータを受信した場合、応答パケットを生成し、生成した応答パケットを、クロスバースイッチLXBを介してデータの送信元のコア10に送信する。
パケット受信制御部50は、クロスバースイッチLXBを介してパケットを受信し、受信したパケットに含まれるデータを記憶装置MEM(図3)に割り当てられたメッセージキューMQUE(図9)に格納する。この際、パケット受信制御部50は、パケットに含まれる情報に基づいて、レジスタ部60のエントリENTRのいずれかを参照し、データを格納するメッセージキューMQUEを決定する。また、パケット受信制御部50は、パケット送信制御部40が送信したパケットに対応する応答パケットを受信した場合、以下の動作を実行する。すなわち、パケット受信制御部50は、応答パケットを送信したコア10に割り当てられたメッセージキューMQUEの状態を示す情報を応答パケットから抽出する。そして、パケット受信制御部50は、抽出した情報を、レジスタ部20のエントリENTSのうち、元のパケットの送信の生成に使用されたエントリENTSに格納する。
なお、パケットを送信するコア10とパケットを受信するコア10とが1つのノードNDに含まれる場合、パケットは、クロスバースイッチLXBを介することなく、コア10間で直接転送される。パケット送信制御部40およびパケット受信制御部50の例は、図5および図9に示される。
レジスタ部60は、パケットの受信処理時にパケット受信制御部50によりアクセスされる情報を保持する複数のエントリENTRを有する。エントリENTRは、データを受信するアプリケーションプログラム毎に割り当てられる。エントリENTRの例は、図9に示される。
メモリ制御部70は、システムバスSBUSを介してコア10から受信するメモリアクセス要求に基づいて動作する。ここで、メモリアクセス要求を発行するコア10が、他のCPUに含まれる場合、メモリアクセス要求は、パケット受信制御部50を介して他のCPUのコア10からメモリ制御部70に転送される。メモリ制御部70は、メモリアクセス要求の対象データがキャッシュメモリ80に保持されている場合(キャッシュヒット)、キャッシュメモリ80にアクセスする。メモリ制御部70は、メモリアクセス要求の対象データがキャッシュメモリ80に保持されていない場合(キャッシュミス)、メモリバスMBUSに接続された記憶装置MEMにアクセスし、あるいは、他のCPUにメモリアクセス要求を転送する。
メモリアクセス要求が転送された他のCPUは、メモリバスMBUSに接続された記憶装置MEMにアクセスし、アクセス結果を応答として発行する。なお、メモリ制御部70は、キャッシュメモリ80からデータを追い出す追い出し処理等を実行することで、記憶装置MEMが保持するデータとキャッシュメモリ80が保持するデータとの一貫性(キャッシュコヒーレンシ)を維持する制御を実行する。例えば、キャッシュメモリ80は、2次キャッシュであり、アプリケーションプログラムが実行する命令と、アプリケーションプログラムが処理するデータとを保持する。
図5は、図4に示すレジスタ部20と、パケット制御部30においてパケットを送信する場合に動作する要素との一例を示す。図5に示す要素は、パケットを送信する送信装置として機能する。図4に示すパケット送信制御部40は、パケット生成部42およびパケット送信部44を有し、図4に示すパケット受信制御部50は、パケット受信部52および応答格納部54を有する。
レジスタ部20の各エントリENTSは、レジスタMSG−DT、MSGQ−ID(Identification)、SEND−MSG、PK−SP、PK−HV、PK−OS、STを有する。レジスタ部20は、記憶装置MEMが割り当てられるアドレス空間とは別の領域(例えば、I/O空間等)に設けられる。コア10が実行するアプリケーションプログラム(プロセス)は、レジスタMSG−DT、MSGQ−IDに保持させる情報を生成し、生成した情報をレジスタMSG−DT、MSGQ−IDに格納する。
レジスタPK−SPには、サービスプロセッサSPが実行する管理プログラムが生成する鍵情報が格納される。レジスタPK−HVには、ノードND内で起動される仮想マシンを制御する制御プログラムであるハイパーバイザHVが生成する鍵情報が格納される。レジスタPK−OSには、コア10または仮想マシンが実行するOSが生成する鍵情報が格納される。アプリケーションプログラム(プロセス)は、OSの管理下で動作し、OSは、ハイパーバイザHVの管理下で動作する。レジスタPK−SP、PK−HV、PK−OSのアクセス権限については、図8で説明する。以下の説明では、レジスタPK−SPに格納される鍵情報は、鍵情報PK−SPと称され、レジスタPK−HVに格納される鍵情報は、鍵情報PK−HVと称され、レジスタPK−OSに格納される鍵情報は、鍵情報PK−OSと称される。鍵情報PK−SP、PK−HV、PK−OSは、第2の鍵情報の一例である。レジスタ部20は、第1の保持部および第2の保持部の一例である。
例えば、アプリケーションプログラム(プロセス)を実行する複数のコア10がそれぞれ使用するエントリENTSには、互いに異なる鍵情報PK−SP、互いに異なる鍵情報PK−HVおよび互いに異なる鍵情報PK−OSが格納される。複数のコア10がアプリケーションプログラム(プロセス)をそれぞれ実行する場合、エントリENTSに保持された鍵情報PK−SP、PK−HV、PK−OSを書き替えることなく、プロセスを切り替えることができる。すなわち、互いに異なるコア10がそれぞれ実行するプロセスの切り替え時にコンテキストスイッチは発生しない。一方、1つのコア10が複数のアプリケーションプログラム(プロセス)を実行する場合、複数のプロセスは共通のエントリENTSを使用するため、プロセスの切り替え時にコンテキストスイッチが発生する。
なお、各エントリENTSは、レジスタPK−SP、PK−HV、PK−OSの少なくとも1つを有してもよい。例えば、各エントリENTSは、レジスタPK−OSのみを有してもよく、レジスタPK−HVのみを有してもよく、レジスタPK−SPのみを有してもよい。あるいは、各エントリENTSは、2つのレジスタPK−OS、PK−HVを有してもよく、2つのレジスタPK−OS、PK−SPを有してもよく、2つのレジスタPK−HF、PK−SPを有してもよい。例えば、仮想マシンが起動されない情報処理システムでは、各エントリENTSは、2つのレジスタPK−OS、PK−HVを有する。
レジスタMSG−DT、MSGQ−ID、PK−SP、PK−HV、PK−OSが保持する情報は、パケット生成部42により読み出される。また、アプリケーションプログラムは、パケット生成部42にパケットを生成させる場合、レジスタSEND−MSGをセットする。レジスタSTが保持する情報は、応答格納部54により書き込まれ、アプリケーションプログラムにより読み出される。
レジスタMSG−DTには、パケットの送信元のアプリケーションプログラムからパケットの送信先のアプリケーションプログラムに転送されるデータ(送信データ)が格納される。以下の説明では、レジスタMSG−DTに格納されるデータは、メッセージデータMSG−DTとも称される。特に限定されないが、メッセージデータMSG−DTは、32バイトまたは64バイトである。
レジスタMSGQ−IDには、メッセージデータMSG−DTを送信先のプロセスに送信するための管理情報が格納される。以下の説明では、レジスタMSGQ−IDに格納されるデータは、管理情報MSGQ−IDとも称される。レジスタMSGQ−IDに格納される管理情報MSGQ−IDの例は、図6に示される。
レジスタSEND−MSGには、パケットをパケット生成部42に生成させてパケット送信部44から送信する場合、送信要求情報が格納される。例えば、レジスタSEND−MSGは1ビットであり、送信要求情報は論理1である。アプリケーションプログラムがレジスタSEND−MSGに論理1を書き込んだ場合、レジスタ部20は、送信要求を示す1ショットパルス信号をパケット生成部42に出力する。以下の説明では、レジスタSEND−MSGに格納される論理1およびパケット生成部42に出力される1ショットパルス信号は、送信要求SEND−MSGとも称される。
レジスタSTには、送信先のプロセスに送信したパケットに対応する応答に含まれる状態情報が格納される。以下の説明では、レジスタSTに格納される状態情報は、状態情報STとも称される。状態情報STの例は、図9で説明される。
パケット生成部42は、レジスタSEND−MSGを介してプロセスから送信要求SEND−MSGを受信したことに基づいて、パケットを生成し、生成したパケットをパケット送信部44に出力する。すなわち、パケット生成部42は、送信元CPU−IDおよびエントリIDと、エントリENTSに保持された管理情報MSGQ−ID、メッセージデータMSG−DTおよび鍵情報PK−SP、PK−HV、PK−OSとを用いて、パケットを生成する。送信元CPU−IDは、パケット生成部42を含むCPUを識別する番号を示す。エントリIDは、パケットに付加されるシーケンス番号等であり、パケットと応答パケットとの対応を取るために使用される。パケット生成部42が生成するパケットの例は、図6に示される。
なお、パケット生成部42は、送信要求SEND−MSGを出力したエントリENTSに保持されたメッセージデータMSG−DT、管理情報MSGQ−IDおよび鍵情報PK−SP、PK−HV、PK−OSを調停により選択する図示しない調停部を有する。
パケット送信部44は、パケット生成部42から受信したパケットを、クロスバースイッチLXBを介して送信先のコア10に向けて送信する。
パケット受信部52は、パケットの送信先のコア10からの状態情報STを含むパケット(応答パケット)を、クロスバースイッチLXBを介して受信し、受信したパケットに含まれる状態情報STを応答格納部54に出力する。応答格納部54は、パケット受信部52から受信した状態情報STを、応答パケットに対応する元のパケットを生成した情報を保持するエントリENTSのレジスタSTに格納する。
アプリケーションプログラムは、メッセージデータMSG−DTを送信する場合、対応するエントリENTSを使用して、パケットを送信する処理を実行する。パケットの送信後、アプリケーションプログラムは、状態情報STがレジスタSTに書き込まれたことに基づいて、レジスタSTから状態情報STを読み出す。
図6は、図5に示すパケット生成部42が生成するパケットの一例を示す。パケットは、送信先CPU−ID、送信元CPU−ID、エントリID、管理情報MSGQ−ID、鍵情報PK−SP、PK−HV、PK−OSおよびメッセージデータMSG−DTを含む。パケットにおいて、送信先CPU−ID、送信元CPU−ID、エントリID、管理情報MSGQ−IDおよび鍵情報PK−SP、PK−HV、PK−OSは、ヘッダ部であり、メッセージデータMSG−DTは、データ部である。送信先CPU−IDは、管理情報MSGQ−IDに含まれるCPU情報CPU−IDが使用される。
管理情報MSGQ−IDは、CPU情報CPU−ID、レジスタセット情報REG−ID、鍵情報AKEY、メッセージサイズM−SIZEを含む。CPU情報CPU−IDは、パケットの送信先のCPUを識別する番号を含む。レジスタセット情報REG−IDは、パケットを受信するCPUが使用するレジスタ部60のエントリENTR(図9)を識別する番号である。鍵情報AKEYは、パケットを送信するコア10とパケットを受信するコア10とが互いの識別に使用する第1の鍵情報の一例であり、パケットが正常か否かを判定するために使用される。レジスタセット情報REG−IDおよび鍵情報AKEYは、パケットを受信するプロセスからパケットを送信するプロセスに予め通知される。
パケットの送受信を鍵情報AKEYだけでなく、アプリケーションプログラムにより書き替えられない鍵情報PK−SP、PK−HV、PK−OSにより管理することで、予め決められたアプリケーションプログラム間でのパケットの送受信を保証することができる。換言すれば、アプリケーションプログラムが誤動作した場合にも、誤ったアプリケーションプログラム間でパケットが送受信されることを抑止することができるため、情報処理システムSYS2の信頼性を向上することができる。なお、鍵情報PK−SP、PK−HV、PK−OSは、管理情報MSGQ−ID内に鍵情報AKEYとともに格納されてもよい。
メッセージサイズM−SIZEは、メッセージデータMSG−DTのサイズ(32バイトまたは64バイト)を示す。なお、メッセージデータMSG−DTのサイズが1種類しかない場合、管理情報MSGQ−IDは、メッセージサイズM−SIZEを含まない。なお、図6に示すパケットは、送信先CPU−IDから順にクロスバースイッチLXBに送出される。
図7は、図3に示す情報処理システムSYS2の状態の一例を示す。図7に示す例では、ハイパーバイザHVがノードND0内に起動され、ハイパーバイザHVは、3個の仮想マシンを起動して、仮想マシンにOS(OS0、OS1、OS2)を実行させる。OS2は、CPU0により実行される。そして、3個のプロセスPROC(PROC0、PROC1、PROC2;すなわち、アプリケーションプログラム)がOS2上で動作する。図7に示す破線枠は、ソフトウェアの動作状態を示す。OSは、コア10の動作を管理する管理プログラムの一例であり、ハイパーバイザHVは、仮想マシンを制御する制御プログラムの一例である。
例えば、プロセスPROC2がデータの送信を開始する前に、サービスプロセッサSPにより実行される状態管理プログラムは、プロセスPROC2で使用するエントリENTSに鍵情報PK−SPを格納する。同様に、ハイパーバイザHVは、プロセスPROC2で使用するエントリENTSに鍵情報PK−HVを格納し、OS2は、プロセスPROC2で使用するエントリENTSに鍵情報PK−OSを格納する。そして、OS2上で動作するプロセスPROC2は、使用するエントリENTSに鍵情報AKEYを格納する。
このように、レジスタPK−SP、PK−HV、PK−OSに鍵情報PK−SP、PK−HV、PK−OSを格納する管理部は、状態管理プログラムと、ハイパーバイザHVと、OSとによりそれぞれ実現される。すなわち、状態管理プログラム、ハイパーバイザHVおよびOSは、コア10の動作を管理するととともに、鍵情報PK−SP、PK−HV、PK−OSを生成する管理部の一例である。なお、図5で説明したように、各エントリENTSは、レジスタPK−SP、PK−HV、PK−OSの少なくとも1つを有してもよい。
図8は、図7に示すレジスタ部20の各エントリENTSに設けられるレジスタAKEY、PK−OS、PK−HV、PK−SPのアクセス権限の一例を示す。レジスタAKEYは、プロセスPROC、OS、ハイパーバイザHVおよびサービスプロセッサSPによりアクセス可能であり、レジスタPK−OSは、OS、ハイパーバイザHVおよびサービスプロセッサSPによりアクセス可能である。レジスタPK−HVは、ハイパーバイザHVおよびサービスプロセッサSPによりアクセス可能であり、レジスタPK−SPは、サービスプロセッサSPのみによりアクセス可能である。すなわち、レジスタPK−OS、PK−HV、PK−SPは、プロセスPROCによるアクセスが禁止されている。
図9は、図4に示すレジスタ部60と、パケット制御部30においてパケットを受信する場合に動作する要素との一例を示す。図9に示す要素は、パケットを受信する受信装置として機能する。図4に示すパケット制御部30のパケット受信制御部50は、図5に示すパケット受信部52および応答格納部54に加えて、パケット判定部56および書き込み制御部58を有する。図4に示すパケット送信制御部40は、図5に示すパケット生成部42およびパケット送信部44に加えて、応答パケット生成部46を有する。
レジスタ部60の各エントリENTRは、ベースアドレスBADRS、鍵情報AKEY、PK−OS、PK−HV、PK−SP、ライトポインタWPおよびリードポインタRPをそれぞれ格納する複数のレジスタを有する。レジスタ部60は、記憶装置MEMが割り当てられるアドレス空間とは別の領域(例えば、I/O空間)に設けられる。エントリENTRは、第3の保持部の一例である。
また、各エントリENTSは、鍵情報PK−OSを有効にするかを示す許可情報OSENと、鍵情報PK−HVを有効にするかを示す許可情報HVENと、鍵情報PK−SPを有効にするかを示す許可情報SPENとを格納する領域を有する。例えば、許可情報OSEN、HVEN、SPENの各々は、1ビットであり、論理0の場合に無効を示し、論理1の場合に有効を示す。許可情報OSEN、HVEN、SPENは、パケット判定部56による鍵情報PK−OS、PK−HV、PK−SPの比較を有効にするか否かを設定する有効フラグの一例である。パケット判定部56は、受信したパケットの管理情報MSGQ−IDに含まれるレジスタセット情報REG−IDにより識別されるエントリENTRを選択して使用する。
鍵情報AKEYは、パケットを送受信するアプリケーションプログラム間で予め取り決められ、アプリケーションプログラムがメッセージデータMSG−DTの送信を開始する前に、受信側のプロセスから送信側のプロセスに鍵情報AKEYが通知される。例えば、鍵情報PK−OSは、メッセージデータMSG−DTの送信側のOSがプロセス毎に取り決めた固有の値である。鍵情報PK−HVは、メッセージデータMSG−DTの送信側のハイパーバイザHVがプロセス毎に取り決めた固有の値である。鍵情報PK−SPは、メッセージデータMSG−DTの送信側のサービスプロセッサSPがプロセス毎に取り決めた固有の値である。
なお、許可情報SPEN、HVEN、OSENにより、鍵情報PK−SP、PK−HV、PK−OSの全てが有効にされる場合、鍵情報PK−SP、PK−HV、PK−OSは、以下に示すように設定されてもよい。すなわち、鍵情報PK−SPは、プロセスが実行されるノードNDの番号に設定され、鍵情報PK−HVは、プロセスが実行されるOSの番号に設定され、鍵情報PK−OSは、プロセス番号に設定されてもよい。
ライトポインタWPは、記憶装置MEMに割り当てられたメッセージキューMQUEにおいて、受信したパケットに含まれるメッセージデータMSG−DTを格納する先頭アドレス(相対値)を示す。リードポインタRPは、メッセージキューMQUEに格納されたメッセージデータMSG−DTのうち、読み出されていないメッセージデータMSG−DTを保持する記憶領域の先頭アドレス(相対値)を示す。
記憶装置MEMには、レジスタ部60のエントリENTRにそれぞれ対応する複数のメッセージキューMQUEが割り当てられる。メッセージキューMQUEは、記憶部の一例である。各メッセージキューMQUEは、リングバッファとして機能し、ライトポインタWPとリードポインタRPとに挟まれた記憶領域に、有効なメッセージデータMSG−DTが保持される。
ベースアドレスBADRSは、例えば、レジスタ部60の各エントリENTRに対応して記憶装置MEMに割り当てられるメッセージキューMQUEの先頭アドレス(物理アドレス)を示す。そして、ベースアドレスBADRSにライトポインタWPの値を加えることで、メッセージデータMSG−DTを格納する先頭アドレスが算出される。また、ベースアドレスBADRSにリードポインタRPの値を加えることで、メッセージデータMSG−DTを読み出す先頭アドレスが算出される。
なお、ベースアドレスBADRSは、各メッセージキューMQUEの先頭アドレスにおいて所定数の上位ビットで示されてもよい。この場合、ベースアドレスBADRSのビット値とライトポインタWPのビット値とを組み合わせることで、メッセージデータMSG−DTを格納する先頭アドレスが算出される。また、ベースアドレスBADRSのビット値とリードポインタRPのビット値とを組み合わせることで、メッセージデータMSG−DTを読み出す先頭アドレスが算出される。
パケット判定部56は、パケット受信部52がパケットを受信した場合、パケットに含まれるレジスタセット情報REG−IDで示されるエントリENTRに格納された情報を読み出し、パケットが有効か否かを判定する。すなわち、パケット判定部56は、パケットに含まれる鍵情報AKEYと、エントリENTRから読み出した鍵情報AKEYを比較する。パケット判定部56は、エントリENTRから読み出した許可情報SPENが有効を示す場合、パケットに含まれる鍵情報PK−SPと、エントリENTRから読み出した鍵情報PK−SPとを比較する。パケット判定部56は、エントリENTRから読み出した許可情報HVENが有効を示す場合、パケットに含まれる鍵情報PK−HVと、エントリENTRから読み出した鍵情報PK−HVとを比較する。パケット判定部56は、エントリENTRから読み出した許可情報OSENが有効を示す場合、パケットに含まれる鍵情報PK−OSと、エントリENTRから読み出した鍵情報PK−OSとを比較する。そして、パケット判定部56は、比較結果の全てが一致を示す場合、受信したパケットが有効(正常)であると判定し、比較結果の少なくともいずれかが不一致を示す場合、受信したパケットが無効であると判定する。
パケット判定部56は、受信したパケットが有効である場合、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRからベースアドレスBADRSとライトポインタWPとを読み出す。そして、パケット判定部56は、パケットに含まれるメッセージデータMSG−DTと、エントリENTRから読み出したベースアドレスBADRSおよびライトポインタWPを、書き込み制御部58に出力する。また、パケット判定部56は、受信したパケットが正常であることを応答パケット生成部46に通知し、パケットに含まれるメッセージサイズM−SIZEに基づいて、ライトポインタWPを更新する。
なお、パケット判定部56は、受信したパケットが無効である場合、パケットに含まれるメッセージデータMSG−DTを破棄し、受信したパケットが無効であることを示す情報を応答パケット生成部46に通知する。この場合、ライトポインタWPは、更新されない。
書き込み制御部58は、パケット判定部56からベースアドレスBADRSとライトポインタWPとを受信した場合、ベースアドレスBADRSとライトポインタWPにより示されるメッセージキューMQUEの記憶領域のアドレスを算出する。そして、書き込み制御部58は、算出したアドレスにより示される記憶領域に、パケット判定部56から受信したメッセージデータMSG−DTを書き込む。メッセージキューMQUEに書き込まれたメッセージデータMSG−DTは、受信したメッセージデータMSG−DTを処理するアプリケーションプログラムにより読み出される。
書き込み制御部58は、メッセージキューMQUEにメッセージデータMSG−DTを書き込んだ後、メッセージキューMQUEの状態を示す情報を応答パケット生成部46に通知する。例えば、次に受信するメッセージデータMSG−DTを格納する余裕がメッセージキューMQUEにある場合、書き込み制御部58は、メッセージデータMSG−DTのさらなる受信が可能なことを示す情報を応答パケット生成部46に通知する。また、メッセージキューMQUEが満杯になった場合、書き込み制御部58は、メッセージキューMQUEが満杯であることを示す情報を応答パケット生成部46に通知する。さらに、メッセージキューMQUEが動作を停止しており、メッセージデータMSG−DTがメッセージキューMQUEに書き込めない場合、書き込み制御部58は、メッセージキューMQUEの非動作を示す情報を応答パケット生成部46に通知する。
応答パケット生成部46は、パケット判定部56から受信した情報と、書き込み制御部58から受信した情報とに基づいて応答パケットを生成し、生成した応答パケットをパケット送信部44に出力する。応答パケットは、送信先CPU−ID、送信元CPU−ID、エントリIDおよびメッセージキューMQUEの状態を示す状態情報STを含む。応答パケットは、送信先CPU−IDから順にクロスバースイッチLXBに送出される。
送信先CPU−IDは、応答パケットに対応する元のパケットに含まれる送信元CPU−IDであり、送信元CPU−IDは、応答パケットに対応する元のパケットに含まれる送信先CPU−IDである。エントリIDは、応答パケットに対応する元のパケットに含まれるエントリIDである。
状態情報STは、例えば2ビットであり、ビット値に応じて、”INVALID”、”INACTIVE”、”FULL”、”COMPLETE”のいずれかを示す。”INVALID”は、鍵情報AKEYの不一致が発生したことを示す(エラー応答)。”INACTIVE”は、メッセージキューMQUEが動作を停止しており、メッセージデータMSG−DTが書き込めないことを示す(エラー応答)。”FULL”は、メッセージキューMQUEが満杯であることを示す(エラー応答)。”COMPLETE”は、メッセージキューMQUEにメッセージデータMSG−DTが正常に格納され、メッセージデータMSG−DTのさらなる受信が可能なことを示す(正常応答)。
パケット送信部44は、応答パケット生成部46から受信した応答パケットを、パケットの送信元のCPUに向けて送信する。
図10は、図9に示すパケット判定部56の一例を示す。パケット判定部56は、セレクタSEL、鍵情報取り出し部KEYOUT、鍵チェッカAKEYCHK、OSCHK、HVCHK、SPCHKおよびアンド回路ANDを有する。鍵チェッカAKEYCHKは、第1の比較部の一例であり、鍵チェッカOSCHK、HVCHK、SPCHKは、第2の比較部の一例である。
セレクタSELは、受信したパケットに含まれるレジスタセット情報REG−IDで示されるエントリENTRを選択し、選択したエントリENTRに保持された情報を出力する。鍵情報取り出し部KEYOUTは、受信したパケットから鍵情報AKEY、PK−OS、PK−HV、PK−SPを取り出す。
鍵チェッカAKEYCHKは、エントリENTRから読み出した鍵情報AKEYと、鍵情報取り出し部KEYOUTがパケットから取り出した鍵情報AKEYとを比較する。鍵チェッカAKEYCHKは、エントリENTRからの鍵情報AKEYと鍵情報取り出し部KEYOUTからの鍵情報AKEYとが一致する場合、一致を示す論理1を出力する。鍵チェッカAKEYCHKは、エントリENTRからの鍵情報AKEYと鍵情報取り出し部KEYOUTからの鍵情報AKEYとが一致しない場合、不一致を示す論理0を出力する。
鍵チェッカOSCHKは、エントリENTRから読み出した許可情報OSENが有効状態(論理1)を示す場合、エントリENTRから読み出した鍵情報PK−OSと鍵情報取り出し部KEYOUTがパケットから取り出した鍵情報PK−OSとを比較する。鍵チェッカOSCHKは、エントリENTRからの鍵情報PK−OSと鍵情報取り出し部KEYOUTからの鍵情報PK−OSとが一致する場合、一致を示す論理1を出力する。鍵チェッカOSCHKは、エントリENTRからの鍵情報PK−OSと鍵情報取り出し部KEYOUTからの鍵情報PK−OSとが一致しない場合、不一致を示す論理0を出力する。鍵チェッカOSCHKは、エントリENTRからの許可情報OSENが無効状態(論理0)を示す場合、エントリENTRからの鍵情報PK−OSと鍵情報取り出し部KEYOUTからの鍵情報PK−OSとの比較結果に拘わらず、一致を示す論理1を出力する。
鍵チェッカHVCHKは、エントリENTRから読み出した許可情報HVENが有効状態(論理1)を示す場合、鍵情報取り出し部KEYOUTがパケットから取り出した鍵情報PK−HVと、エントリENTRから読み出した鍵情報PK−HVとを比較する。鍵チェッカHVCHKは、エントリENTRからの鍵情報PK−HVと鍵情報取り出し部KEYOUTからの鍵情報PK−HVとが一致する場合、一致を示す論理1を出力する。鍵チェッカHVCHKは、エントリENTRからの鍵情報PK−HVと鍵情報取り出し部KEYOUTからの鍵情報PK−HVとが一致しない場合、不一致を示す論理0を出力する。鍵チェッカHVCHKは、エントリENTRからの許可情報HVENが無効状態(論理0)を示す場合、エントリENTRからの鍵情報PK−HVと鍵情報取り出し部KEYOUTからの鍵情報PK−HVとの比較結果に拘わらず、一致を示す論理1を出力する。
鍵チェッカSPCHKは、エントリENTRから読み出した許可情報SPENが有効状態(論理1)を示す場合、鍵情報取り出し部KEYOUTがパケットから取り出した鍵情報PK−SPと、エントリENTRから読み出した鍵情報PK−SPとを比較する。鍵チェッカSPCHKは、エントリENTRからの鍵情報PK−SPと鍵情報取り出し部KEYOUTからの鍵情報PK−SPとが一致する場合、一致を示す論理1を出力する。鍵チェッカSPCHKは、エントリENTRからの鍵情報PK−SPと鍵情報取り出し部KEYOUTからの鍵情報PK−SPとが一致しない場合、不一致を示す論理0を出力する。鍵チェッカSPCHKは、エントリENTRからの許可情報SPENが無効状態(論理0)を示す場合、エントリENTRからの鍵情報PK−SPと鍵情報取り出し部KEYOUTからの鍵情報PK−SPとの比較結果に拘わらず、一致を示す論理1を出力する。
このように、パケット判定部56は、許可情報OSEN、HVEN、SPENの論理に応じて、各鍵チェッカOSCHK、HVCHK、SPCHKによる比較動作を有効または無効に設定する。これにより、情報処理システムSYS2に要求される信頼度に対応して、比較する鍵情報PK−OS、PK−HV、PK−SPの数を変更することができる。例えば、許可情報PK−OS、PK−HV、PK−SPの論理”PK−OS、PK−HV、PK−SP”は、情報処理システムSYS2に要求される信頼度が高くなるに従い、”000”、”100”、”110”、”111”に順次変更される。
なお、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPは、パケットの受信装置が設定する許可情報OSEN、HVEN、SPENの論理に応じて決定される。換言すれば、パケットの送信装置が、図5に示すエントリENTSに保持された鍵情報PK−OS、PK−HV、PK−SPを書き替えることなく、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPを変更することができる。
アンド回路ANDは、鍵チェッカAKEYCHK、OSCHK、HVCHK、SPCHKの全てから論理1を受けた場合、パケットが有効であることを示す判定結果RSLT(論理1)を出力する。一方、アンド回路ANDは、鍵チェッカAKEYCHK、OSCHK、HVCHK、SPCHKの少なくともいずれかから論理0を受けた場合、パケットが無効であることを示す判定結果RSLT(論理0)を出力する。
図11は、図3に示す情報処理システムSYS2の動作の一例を示す。図11は、パケットの送信装置からパケットの受信装置にメッセージデータMSG−DTが転送される例を示す。換言すれば、送信装置に対応するコア10のいずれかがアプリケーションプログラム1を実行し、受信装置に対応するコア10のいずれかがアプリケーションプログラム2を実行する。そして、アプリケーションプログラム1とアプリケーションプログラム2との間でメッセージデータMSG−DTが転送される。
送信装置は、エントリENTSのいずれかを使用し、受信装置は、送信装置から送信されるパケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRのいずれかを使用する。例えば、エントリENTSは、送信装置に対応するコア10毎に割り当てられる。換言すれば、レジスタMSG−DT、MSGQ−ID、SEND−MSG、PK−SP、PK−HV、PK−OS、STは、送信装置において、アプリケーションプログラムを実行するコア10毎に設けられる。エントリENTRは、受信装置に対応するコア10が実行するアプリケーションプログラム毎に割り当てられる。
送信装置は、受信装置との間でメッセージデータMSG−DTが送受信される前に、使用する鍵情報PK−SP、PK−HV、PK−OSを決定する。すなわち、図7に示すサービスプロセッサSPが実行する状態管理プログラムは、アプリケーションプログラム1で使用する鍵情報PK−SPを決定し、決定した鍵情報PK−SPをエントリENTSのレジスタPK−SPに格納する。図7に示すハイパーバイザHVは、アプリケーションプログラム1で使用する鍵情報PK−HVを決定し、決定した鍵情報PK−HVをエントリENTSのレジスタPK−HVに格納する。アプリケーションプログラム1を管理するOSは、アプリケーションプログラム1で使用する鍵情報PK−OSを決定し、決定した鍵情報PK−OSをエントリENTSのレジスタPK−OSに格納する(図11(a))。なお、鍵情報PK−SP、PK−HV、PK−OSの各々は、送信装置に対応するコア10が実行するアプリケーションプログラム毎に異なる。
そして、送信装置のパケット制御部30は、アプリケーションプログラム1で使用するエントリENTSに格納された鍵情報PK−SP、PK−HV、PK−OSを受信装置に通知する(図11(b))。例えば、鍵情報PK−SP、PK−HV、PK−OSは、アプリケーションプログラム毎に受信装置に通知される。鍵情報PK−SP、PK−HV、PK−OSを通知された受信装置のパケット制御部30は、アプリケーションプログラム2で使用するエントリENTRに鍵情報PK−SP、PK−HV、PK−OSを格納する(図11(c))。
なお、図11に示す例では、受信装置のパケット制御部30は、鍵情報PK−SP、PK−HV、PK−OSとともに、有効状態を示す許可情報SPEN、HVEN、OSENをエントリENTRに格納する。このため、受信装置は、送信装置からパケットを受信した場合、鍵情報AKEYとともに、有効を示す許可情報SPEN、HVEN、OSENに対応する鍵情報PK−SP、PK−HV、PK−OSを用いて、パケットの有効性をチェックすることができる。
アプリケーションプログラム2は、使用するエントリENTRのライトポインタWPの値とリードポインタRPの値とを所定の頻度で読み出す。そして、アプリケーションプログラム2は、ライトポインタWPの値とリードポインタRPの値とに差がない場合、メッセージデータMSG−DTを受信していないと判定する(図11(d))。
アプリケーションプログラム1は、メッセージデータMSG−DT1をアプリケーションプログラム2に転送する場合、メッセージデータMSG−DT2とともに管理情報MSGQ−IDをエントリENTSに格納する(図11(e))。例えば、管理情報MSGQ−IDの鍵情報AKEYに設定される値CD1は、受信装置から送信装置に予め通知される。アプリケーションプログラム1は、エントリENTSに情報を格納した後、論理1の送信要求SEND−MSGをエントリENTSに格納する(図11(f))。
送信装置のパケット制御部30は、送信要求SEND−MSGの論理1に基づいて、アプリケーションプログラム1がエントリENTSに格納したメッセージデータMSG−DT1と管理情報MSGQ−IDとをエントリENTSから読み出す(図11(g))。また、パケット制御部30は、エントリENTSに格納された鍵情報PK−SP、PK−HV、PK−OSを読み出す。そして、パケット制御部30は、エントリENTSから読み出したメッセージデータMSG−DT1、管理情報MSGQ−IDおよび鍵情報PK−SP、PK−HV、PK−OSを含むパケットを生成し、受信装置に向けて送信する(図11(h))。
受信装置のパケット制御部30は、パケットを受信し、受信したパケットに含まれる管理情報MSGQ−IDのレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報AKEYを読み出す。パケット制御部30は、受信したパケットに含まれる鍵情報AKEYをエントリENTRから読み出した鍵情報AKEYと比較する。
また、パケット制御部30は、受信したパケットに含まれる鍵情報PK−SP、PK−HV、PK−OSをエントリENTRから読み出した鍵情報PK−SP、PK−HV、PK−OSとそれぞれ比較する。ここで、鍵情報PK−SP、PK−HV、PK−OSを読み出すエントリENTRは、受信したパケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRである。
図11に示す例では、鍵情報AKEYが一致し、鍵情報PK−SPが一致し、鍵情報PK−HVが一致し、鍵情報PK−OSが一致するため、パケット制御部30は、受信したパケットが有効であると判定する(図11(i))。そして、パケット制御部30は、受信したパケットに含まれるメッセージデータMSG−DT1を、エントリENTRのライトポインタWPが示すメッセージキューMQUEの記憶領域に格納する(図11(j))。ここで、パケット制御部30は、受信したパケットに含まれるメッセージサイズM−SIZEに基づいて、メッセージデータMSG−DTのサイズを検出する。
受信装置のパケット制御部30は、メッセージサイズM−SIZEに合わせてライトポインタWPを更新する。そして、パケット制御部30は、メッセージデータMSG−DTを正常に受信したことを示す状態情報STを含む応答パケットを生成し、生成した応答パケットを送信装置に向けて送信する(図11(k))。
送信装置のパケット制御部30は、応答パケットを受信し、応答パケットに含まれる状態情報STを、送信したパケットの生成に使用したエントリENTSのレジスタSTに格納する(図11(l))。パケット制御部30は、応答パケットの受信をアプリケーションプログラム1に通知する。応答パケットの受信は、I/O空間等に割り当てられる受信フラグをセットすることでアプリケーションプログラム1に通知されてもよく、割り込みによりアプリケーションプログラム1に通知されてもよい。
アプリケーションプログラム1は、応答パケットの受信の通知に基づいて、エントリENTSに格納された状態情報STを読み出し、メッセージデータMSG−DT1が正常に受信装置に転送されたことを検出する(図11(m))。そして、アプリケーションプログラム1は、状態情報STを読み出したエントリENTSを開放する。
一方、受信装置に対応するコア10が実行するアプリケーションプログラム2は、エントリENTRのライトポインタWPの値とリードポインタRPの値とを読み出す。アプリケーションプログラム2は、ライトポインタWPの値とリードポインタRPの値とに差があるため、新たなメッセージデータMSG−DTを受信したと判定する(図11(n))。
アプリケーションプログラム2は、記憶装置MEMに対して読み出しアクセス要求を発行し、受信したメッセージデータMSG−DT1をメッセージキューMQUEから読み出す(図11(o))。アプリケーションプログラム2は、メッセージデータMSG−DTを読み出した後、読み出したメッセージデータMSG−DT1のサイズに合わせてエントリENTRのリードポインタRPを更新する。なお、リードポインタRPの更新は、アプリケーションプログラム2からの読み出し完了通知に基づいて受信装置のパケット制御部30により実行されてもよい。アプリケーションプログラム2は、メッセージキューMQUEから読み出したメッセージデータMSG−DT1を用いてデータ処理等を実行する。
図12は、図3に示す情報処理システムSYS2の動作の別の一例を示す。図11と同一または同様の動作については、詳細な説明は省略する。アプリケーションプログラム1がエントリENTSに格納された状態情報STを読み出し、メッセージデータMSG−DTが正常に受信装置に転送されたことを検出するまでの動作(図12(a)から図12(m))は、図11と同一または同様である。
すなわち、受信装置のパケット制御部30は、鍵情報PK−SP、PK−HV、PK−OSとともに、有効状態を示す許可情報SPEN、HVEN、OSENをエントリENTSに格納する。このため、受信装置は、送信装置からパケットを受信した場合、鍵情報AKEYとともに鍵情報PK−SP、PK−HV、PK−OSを用いて、パケットの有効性をチェックする。
図12に示す例では、まず、送信装置に対応するコア10が実行するアプリケーションプログラム1が受信装置に対応するコア10が実行するアプリケーションプログラム2に向けてメッセージデータMSG−DT1を送信する。次に、送信装置に対応するコア10が実行するアプリケーションプログラム3が誤った管理情報MSGQ−IDを用いてメッセージデータMSG−DT2を送信する。例えば、アプリケーションプログラム3は、アプリケーションプログラム1が使用する管理情報MSGQ−IDを用いて、メッセージデータMSG−DT2を受信装置に送信する。
アプリケーションプログラム3は、メッセージデータMSG−DT2を受信装置に転送する処理を実行する。しかしながら、アプリケーションプログラム3は、メッセージデータMSG−DT2とともに誤った管理情報MSGQ−IDをエントリENTSに格納する(図12(p))。例えば、管理情報MSGQ−IDのレジスタセット情報REG−IDは、アプリケーションプログラム2で使用するエントリENTRを示し、管理情報MSGQ−IDの鍵情報AKEYは、アプリケーションプログラム1、2間で取り決めた値CD1と同じである。例えば、誤った管理情報MSGQ−IDは、アプリケーションプログラム3のバグに起因してエントリENTSに格納される。
アプリケーションプログラム3は、エントリENTSに情報を格納した後、論理1の送信要求SEND−MSGをエントリENTSに格納する(図12(q))。送信装置のパケット制御部30は、送信要求SEND−MSGの論理1に基づいて、アプリケーションプログラム3がエントリENTSに格納したメッセージデータMSG−DT2と管理情報MSGQ−IDとをエントリENTSから読み出す(図12(r))。また、パケット制御部30は、エントリENTSに格納された鍵情報PK−SP、PK−HV、PK−OSを読み出す。エントリENTSに格納された鍵情報PK−SP、PK−HV、PK−OSは、アプリケーションプログラム2が使用するエントリENTSに格納された鍵情報PK−SP、PK−HV、PK−OSとはそれぞれ異なる。
そして、パケット制御部30は、エントリENTSから読み出したメッセージデータMSG−DT1、管理情報MSGQ−IDおよび鍵情報PK−SP、PK−HV、PK−OSを含むパケットを生成し、受信装置に向けて送信する(図12(s))。
受信装置のパケット制御部30は、パケットを受信し、受信したパケットに含まれる誤ったレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報AKEYを読み出す。パケット制御部30は、受信したパケットに含まれる鍵情報AKEYをエントリENTRから読み出した鍵情報AKEYと比較し、一致を検出する。
また、パケット制御部30は、受信したパケットに含まれる鍵情報PK−SP、PK−HV、PK−OSをエントリENTRから読み出した鍵情報PK−SP、PK−HV、PK−OSと比較する。ここで、鍵情報PK−SP、PK−HV、PK−OSを読み出すエントリENTRは、受信したパケットに含まれるレジスタセット情報REG−IDにより示されるアプリケーションプログラム2で使用するエントリENTRである。このため、エントリENTRから読み出した鍵情報PK−SP、PK−HV、PK−OSは、アプリケーションプログラム3に対応しておらず、誤った鍵情報PK−SP、PK−HV、PK−OSである。
図12に示す例では、鍵情報AKEYは一致するが、鍵情報PK−SP、PK−HV、PK−OSは、いずれも不一致であるため、パケット制御部30は、受信したパケットが無効であると判定する(図12(t))。このため、パケット制御部30は、受信したパケットに含まれるメッセージデータMSG−DT2をメッセージキューMQUEに格納することなく破棄する。そして、パケット制御部30は、メッセージデータMSG−DTを正常に受信しなかったことを示す状態情報STを含む応答パケット(エラー応答)を生成し、生成した応答パケットを送信装置に向けて送信する(図12(u))。
送信装置のパケット制御部30は、応答パケットを受信し、応答パケットに含まれる状態情報STを、送信したパケットの生成に使用したエントリENTSのレジスタSTに格納する(図12(v))。パケット制御部30は、応答パケットの受信をアプリケーションプログラム3に通知する。
アプリケーションプログラム3は、応答パケットの受信の通知に基づいて、エントリENTSに格納された状態情報STを読み出し、メッセージデータMSG−DTが正常に受信装置に転送されなかったことを検出する(図12(w))。そして、アプリケーションプログラム3は、状態情報STを読み出したエントリENTSを開放し、エラー処理等を実行する。
一方、受信装置に対応するコア10が実行するアプリケーションプログラム2は、図11と同様に、エントリENTRのライトポインタWPの値とリードポインタRPの値とを読み出す。アプリケーションプログラム2は、ライトポインタWPの値とリードポインタRPの値とに差があるため、新たなメッセージデータMSG−DTを受信したと判定する(図12(n))。
アプリケーションプログラム2は、記憶装置MEMに対して読み出しアクセス要求を発行し、受信したメッセージデータMSG−DT1をメッセージキューMQUEから読み出す(図12(o))。アプリケーションプログラム2は、メッセージデータMSG−DTを読み出した後、読み出したメッセージデータMSG−DT1のサイズに合わせてエントリENTRのリードポインタRPを更新する。そして、アプリケーションプログラム2は、メッセージキューMQUEから読み出したメッセージデータMSG−DT1を用いてデータ処理等を実行する。
図13は、他の情報処理システムの動作の一例を示す。図13に示す動作を実現する情報処理システムの構成は、図3に示す情報処理システムSYS2と同様であり、情報処理システムに搭載されるCPUの構成は、図4に示すCPUと同様である。但し、レジスタ部20のエントリENTSは、図5に示すレジスタPK−SP、PK−HV、PK−OSを持たない。すなわち、受信装置のパケット制御部30は、受信したパケットに含まれる鍵情報AKEYのみに基づいて、パケットが有効か否かを判定する。アプリケーションプログラム1がエントリENTSに格納された状態情報STを読み出すまでの動作は、送信装置から受信装置に転送されるパケットが鍵情報PK−SP、PK−HV、PK−OSを含まないことを除き、図12と同様である。
図13においても、図12と同様に、まず、送信装置に対応するコア10が実行するアプリケーションプログラム1がメッセージデータMSG−DT1を送信する。次に、送信装置に対応するコア10が実行するアプリケーションプログラム3が誤った管理情報MSGQ−IDを用いてメッセージデータMSG−DT2を送信する。
例えば、アプリケーションプログラム3は、アプリケーションプログラム1が使用する管理情報MSGQ−IDを用いて、メッセージデータMSG−DT2を受信装置に転送する。管理情報MSGQ−IDのレジスタセット情報REG−IDは、アプリケーションプログラム1で使用するエントリENTRを示し、管理情報MSGQ−IDの鍵情報AKEYは、アプリケーションプログラム1で使用する値CD1と同じである。送信装置のパケット制御部30は、送信要求SEND−MSGの論理1に基づいて、メッセージデータMSG−DT2と管理情報MSGQ−IDとを含むパケットを受信装置に向けて送信する(図13(a))。
受信装置のパケット制御部30は、パケットを受信し、受信したパケットに含まれる誤ったレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報AKEYを読み出す。パケット制御部30は、受信したパケットに含まれる鍵情報AKEYをエントリENTRから読み出した鍵情報AKEYと比較し、鍵情報AKEYが一致するため、受信したパケットが有効であると判定する(図13(b))。
そして、パケット制御部30は、受信したパケットに含まれるメッセージデータMSG−DT2を、アプリケーションプログラム2で使用するエントリENTRのライトポインタWPが示すメッセージキューMQUEの記憶領域に格納する(図13(c))。受信装置のパケット制御部30は、メッセージサイズM−SIZEに合わせてライトポインタWPを更新する。そして、パケット制御部30は、メッセージデータMSG−DTを正常に受信したことを示す状態情報STを含む応答パケットを生成し、生成した応答パケットを送信装置に向けて送信する(図13(d))。
送信装置のパケット制御部30は、応答パケットを受信し、応答パケットに含まれる状態情報STを、アプリケーションプログラム3で使用するエントリENTSのレジスタSTに格納する(図13(e))。パケット制御部30は、応答パケットの受信をアプリケーションプログラム3に通知する。アプリケーションプログラム3は、応答パケットの受信の通知に基づいて、エントリENTSに格納された状態情報STを読み出し、メッセージデータMSG−DT2が正常に受信装置に転送されたことを検出する(図13(f))。
一方、受信装置に対応するコア10が実行するアプリケーションプログラム2は、エントリENTRのライトポインタWPの値とリードポインタRPの値とを読み出す。アプリケーションプログラム2は、ライトポインタWPの値とリードポインタRPの値とに差があるため、新たなメッセージデータMSG−DTを受信したと判定する(図13(g))。
アプリケーションプログラム2は、記憶装置MEMに対して読み出しアクセス要求を発行し、受信したメッセージデータMSG−DT1、MSG−DT2をメッセージキューMQUEから読み出す(図13(h))。但し、メッセージデータMSG−DT2は、アプリケーションプログラム2が処理するデータではない。
アプリケーションプログラム2は、メッセージデータMSG−DT1、MSG−DT2を読み出した後、読み出したメッセージデータMSG−DT1、MSG−DT2のサイズに合わせてエントリENTRのリードポインタRPを更新する。この後、アプリケーションプログラム2は、メッセージキューMQUEから読み出したメッセージデータMSG−DT1、MSG−DT2を用いてデータ処理等を実行する。しかしながら、メッセージデータMSG−DT2は、アプリケーションプログラム2で処理するデータでないため、アプリケーションプログラム2は、誤ったデータ処理を実行する。これにより、アプリケーションプログラム2は誤動作するおそれがある。
図14は、図4に示すパケット制御部30が実行するパケットを送信する処理の一例を示す。図14に示す処理は、所定の頻度で繰り返し実行される。
まず、ステップS10において、図5に示すパケット生成部42は、レジスタ部20のエントリENTSのいずれかのレジスタSEND−MSGが論理1にセットされたか否かを判定する。レジスタSEND−MSGが論理1にセットされた場合、処理はステップS12に移行され、レジスタSEND−MSGが論理1にセットされていない場合、処理はステップS16に移行される。
ステップS12において、パケット生成部42は、レジスタSEND−MSGが論理1にセットされたエントリENTSに格納されたメッセージデータMSG−DTを用いてパケットを生成し、処理をステップS14に移行する。ステップS14において、図5に示すパケット送信部44は、パケット生成部42が生成したパケットを受信装置に向けて送信する。
次に、ステップS16において、図5に示すパケット受信部52は、応答パケットを受信したか否かを判定する。応答パケットを受信した場合、処理はステップS18に移行され、応答パケットを受信しない場合、処理は終了する。ステップS18において、図5に示す応答格納部54は、応答パケットに含まれる状態情報STを、エントリENTSのレジスタSTに格納し、処理を終了する。
図15は、図4に示すパケット制御部30が実行するパケットを受信する処理の一例を示す。図15に示す処理は、所定の頻度で繰り返し実行される。
まず、ステップS20において、図9に示すパケット受信部52は、パケットを受信したか否かを判定する。パケットを受信した場合、処理はステップS22に移行され、パケットを受信しない場合、処理は終了する。
ステップS22において、図9に示すパケット判定部56は、受信したパケットに含まれる鍵情報AKEYが、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報AKEYと一致するか否かを判定する。鍵情報AKEYが一致する場合、処理はステップS24に移行され、鍵情報AKEYが一致しない場合、処理は図16に示すステップS44に移行される。
ステップS24において、パケット判定部56は、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された許可情報SPENが有効か否かを判定する。許可情報SPENが有効(論理1)の場合、処理はステップS26に移行され、許可情報SPENが無効(論理0)の場合、処理はステップS28に移行される。
ステップS26において、パケット判定部56は、受信したパケットに含まれる鍵情報PK−SPが、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報PK−SPと一致するか否かを判定する。鍵情報PK−SPが一致する場合、処理はステップS28に移行され、鍵情報PK−SPが一致しない場合、処理は図16に示すステップS44に移行される。
ステップS28において、パケット判定部56は、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された許可情報HVENが有効か否かを判定する。許可情報HVENが有効(論理1)の場合、処理はステップS30に移行され、許可情報HVENが無効(論理0)の場合、処理は図16に示すステップS32に移行される。
ステップS30において、パケット判定部56は、受信したパケットに含まれる鍵情報PK−HVが、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報PK−HVと一致するか否かを判定する。鍵情報PK−HVが一致する場合、処理は図16に示すステップS32に移行され、鍵情報PK−HVが一致しない場合、処理は図16に示すステップS44に移行される。
図16に示すステップS32において、パケット判定部56は、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された許可情報OSENが有効か否かを判定する。許可情報OSENが有効(論理1)の場合、処理はステップS34に移行され、許可情報OSENが無効(論理0)の場合、処理はステップS36に移行される。
ステップS34において、パケット判定部56は、受信したパケットに含まれる鍵情報PK−OSが、パケットに含まれるレジスタセット情報REG−IDにより示されるエントリENTRに格納された鍵情報PK−OSと一致するか否かを判定する。鍵情報PK−OSが一致する場合、処理はステップS36に移行され、鍵情報PK−OSが一致しない場合、処理はステップS44に移行される。
ステップS36において、パケット判定部56は、メッセージキューMQUEが正常か否かを判定する。例えば、メッセージキューMQUEが動作を停止している場合、またはメッセージキューMQUEが満杯である場合、メッセージキューMQUEが正常でないと判定される。メッセージキューMQUEが正常な場合、処理はステップS38に移行され、メッセージキューMQUEが正常でない場合、処理はステップS44に移行される。
ステップS38において、図9に示す書き込み制御部58は、受信したメッセージデータMSG−DTをメッセージキューMQUEに格納する。次に、ステップS40において、パケット判定部56は、ライトポインタWPを更新し、処理をステップS42に移行する。
ステップS42において、図9に示す応答パケット生成部46は、受信したパケットを正常に処理したことを示す正常応答パケットを生成し、処理をステップS46に移行する。正常応答パケットに含まれる状態情報STは、図9に示す”COMPLETE”を示す。
ステップS44において、応答パケット生成部46は、メッセージデータMSG−DTを正常に受信しなかったことを示すエラー応答パケットを生成し、処理をステップS46に移行する。エラー応答パケットに含まれる状態情報STは、図9に示す”INVALID”、”INACTIVE”、”FULL”のいずれかを示す。
次に、ステップS46において、図9に示すパケット送信部44は、応答パケット生成部46が生成した応答パケットを、パケットの送信装置に向けて送信し、処理を終了する。
図17は、図4に示すコア10が実行するアプリケーションプログラムによりパケットを送信する場合の処理の一例を示す。例えば、アプリケーションプログラムは、図11および図12に示すアプリケーションプログラム1である。図17に示す処理は、所定の頻度で繰り返し実行される。
まず、ステップS50において、アプリケーションプログラムは、メッセージデータMSG−DTを送信する場合、メッセージデータMSG−DTをレジスタ部20のエントリENTSのいずれかに格納する。次に、ステップS52において、アプリケーションプログラムは、管理情報MSGQ−IDをエントリENTSに格納する。次に、ステップS54において、アプリケーションプログラムは、論理1の送信要求SEND−MSGをエントリENTSに格納し、パケット制御部30にパケットを送信させ、処理をステップS56に移行する。
ステップS56において、アプリケーションプログラムは、状態情報STがエントリENTSに格納されたか否かを判定する。すなわち、アプリケーションプログラムは、送信したパケットに対応する応答パケットを受信したか否かを判定する。状態情報STがエントリENTSに格納された場合、処理はステップS58に移行され、状態情報STがエントリENTSに格納されない場合、処理は終了する。ステップS58において、アプリケーションプログラムは、エントリENTSに格納された状態情報STを読み出して、メッセージデータMSG−DTが正常に転送されたか否かを確認し、処理を終了する。
図18は、図4に示すコア10が実行するアプリケーションプログラムによりパケットを受信する場合の処理の一例を示す。例えば、アプリケーションプログラムは、図11および図12に示すアプリケーションプログラム2である。図18に示す処理は、所定の頻度で繰り返し実行される。
まず、ステップS60において、アプリケーションプログラムは、使用するメッセージキューMQUEに対応するレジスタ部60のエントリENTRからライトポインタWPの値とリードポインタRPの値とを読み出す。ライトポインタWPの値とリードポインタRPの値とを読み出すエントリENTRは、受信したパケットに含まれるレジスタセット情報REG−IDにより示される。
次に、ステップS62において、アプリケーションプログラムは、ライトポインタWPの値とリードポインタRPの値の差に基づいて、メッセージキューMQUEにメッセージデータMSG−DTが格納されたか否かを判定する。メッセージキューMQUEにメッセージデータMSG−DTが格納されたと判定された場合、処理はステップS64に移行され、メッセージキューMQUEにメッセージデータMSG−DTが格納されていないと判定された場合、処理は終了する。
ステップS64において、アプリケーションプログラムは、メッセージキューMQUEからメッセージデータMSG−DTを読み出す。次に、ステップS66において、アプリケーションプログラムは、リードポインタRPを更新し、処理を終了する。
以上、図3から図18に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、アプリケーションプログラムによるアクセスが許可されていないレジスタPK−SP、PK−HV、PK−OSに鍵情報PK−SP、PK−HV、PK−OSを格納する。これにより、アプリケーションプログラムの誤動作等により誤った鍵情PK−SP、PK−HV、PK−OSがレジスタに格納されることを抑止することができる。また、アクセス権限が異なるレジスタMSGQ−ID(AKEY)とレジスタPK−SP、PK−HV、PK−OSとに保持された鍵情報を用いて、受信したパケットが正常であるか否かを判定することで、判定の信頼性を向上することができる。
したがって、送信装置が送信した誤ったパケットが、受信装置に対応するコア10が実行するアプリケーションプログラムにより処理されることを抑止することができる。この結果、受信装置に対応するコア10が実行するアプリケーションプログラムが、誤ったパケットに含まれるデータを用いてデータ処理等を実行することを抑止することができ、情報処理システムSYS2の信頼性を向上することができる。
アプリケーションプログラムより上位のOS等のプログラムによる鍵情報PK−SP、PK−HV、PK−OSのレジスタPK−SP、PK−HV、PK−OSへの格納は、送信データの転送前に予め実行される。このため、送信データの受信装置への転送時にコンテキストスイッチ等は発生せず、コンテキストスイッチ等により、アプリケーションプログラムの実行効率が低下することを抑止することができる。
さらに、図3から図18に示す実施形態では、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPは、パケットの受信装置が設定する許可情報OSEN、HVEN、SPENの論理に応じて決定される。このため、パケットの送信装置のエントリENTSに保持された鍵情報PK−OS、PK−HV、PK−SPを書き替えることなく、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPを変更することができる。この結果、パケットの送信装置でコンテキストスイッチ等を発生させることなく、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPを変更することができる。すなわち、プロセスの実行効率が低下することなく、パケット判定部56が判定に使用する鍵情報PK−OS、PK−HV、PK−SPを変更することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。