以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの一実施形態を示す。図1に示す情報処理システムSYS1は、複数のサーバSV(SV1、SV2、SV3)と、複数のサーバSVを管理する管理サーバMSVとを有する。サーバSVは、情報処理装置の一例であり、管理サーバMSVは、管理装置の一例である。
管理サーバMSVは、アプリケーションAPP(APP1、APP2)をサーバSVに配備する機能を有する。各アプリケーションAPPは、ソフトウェアSW(SW1、SW2)とIP(Intellectual Property)コアIP(IP1、IP2)の回路情報とを含む。ソフトウェアSWは、プロセッサCPU(Central Processing Unit)が実行するプログラムの一例である。IPコアIPは、データ処理をプロセッサCPUからの指示に基づいて実行する処理回路の一例であり、データ処理等の情報処理の論理機能を実現する回路情報を含む。例えば、IPコアIPは、ハードウェアアクセラレータとして機能する。なお、アプリケーションAPPは、管理サーバMSVの外部に保持され、管理サーバMSVの外部で管理されてもよい。
各サーバSVは、プロセッサCPU(CPU1、CPU2、CPU3)と、メモリMEM(MEM1、MEM2、MEM3)と、ルータ部RT(RT1、RT2、RT3)と、プログラマブル部FPGA(FPGA1、FPGA2、FPGA3)とを有する。プログラマブル部FPGAは、第1のプログラマブル部の一例である。例えば、各サーバSVは、ルータ部RT間を接続する配線の配線長ができる限り短くなる位置に配置される。ルータ部RT間は、メッシュネットワークにより接続されてもよく、トーラスネットワークにより接続されてもよい。以下の説明では、サーバSVは、ノードとも称される。
各プロセッサCPUは、自ノードのメモリMEMに格納されたソフトウェアSW(SW1、SW2)を実行する。各プログラマブル部FPGAには、IPコアIP(IP1、IP2)がプログラムされる。各IPコアIPは、自ノードまたは他ノードのプロセッサCPUが実行するソフトウェアSWからの指示に基づいてデータ処理を実行する。図1では、ソフトウェアSW1、SW2は、サーバSV1のメモリMEM1に格納され、サーバSV1のプロセッサCPU1により実行される。ソフトウェアSW1、SW2は、プロセッサCPU1に搭載される複数のCPUコアのそれぞれにより実行されてもよく、プロセッサCPU1が起動する複数の仮想マシンのそれぞれにより実行されてもよい。IPコアIP1は、サーバSV1のFPGA1にプログラムされ、IPコアIP2は、サーバSV2のFPGA2にプログラムされる。
各ルータ部RTは、ソフトウェアSWを実行するプロセッサCPUとIPコアIPがプログラムされたプログラマブル部FPGAとの間で転送される情報の転送経路を示す経路情報を保持する保持部HLD(HLD1、HLD2、HLD3)を有する。各ルータ部RTは、自ノードのプロセッサCPUと、自ノードのプログラマブル部FPGAと、他ノードのルータ部RTとに接続される。そして、各ルータ部RTは、自ノードのプロセッサCPUと、自ノードのプログラマブル部FPGAと、他ノードのプログラマブル部FPGAとの間で転送される情報のルーティング処理を実行する。他ノードのルータ部RTは、他のルータ部の一例であり、他ノードのプログラム部FPGAは、他の第1のプログラマブル部の一例である。
図1に示す情報処理システムSYS1では、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、各プロセッサCPUと他ノードのプログラム部FPGAとの間で情報を転送することが可能である。これにより、IPコアIPを自ノードのプログラム部FPGAだけでなく、他ノードのプログラム部FPGAに搭載することができる。
例えば、プログラマブル部FPGA1において、IPコアIP2を搭載するプログラマブル領域が足りない場合にも、図1に示すように、ソフトウェアSW2が搭載されるノードとは別のノードのプログラム部FPGA2にIPコアIP2を搭載することができる。すなわち、1つのサーバSVにソフトウェアSWとIPコアIPを配備するという制約を解消することができる。この結果、1つのサーバSVにソフトウェアSWとIPコアIPを配備する場合に比べて、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS1の性能を向上することができる。
さらに、図1に示す情報処理システムSYS1では、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続する。これにより、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散して配備する場合にも、サーバSVの外部に配置されるスイッチ装置等を介することなく、プロセッサCPUとIPコアIPとの間での情報を転送することができる。したがって、サーバSVの外部に配置されるスイッチ装置等を介して、プロセッサCPUとIPコアIPとの間での情報を転送する場合に比べて、情報の転送速度を向上することができる。この結果、プロセッサCPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。
なお、アプリケーションAPP(SW、IP)を1つのサーバSV内のメモリMEMとプログラム部FPGAとに配備することで、ソフトウェアSWとIPコアIPとの間での情報の転送を1つのサーバSV内で実行することができる。この場合、2つのサーバSVに跨って配備されるソフトウェアSWとIPコアIPとの間で情報を転送する場合に比べて、情報の転送時間を短くすることができ、情報の転送速度を向上することができる。換言すれば、情報の転送に使用されるルータ部RTの数が少ないほど、情報の転送速度を向上することができる。このため、ソフトウェアSWとIPコアIPとの間での情報の転送速度の仕様に合わせてアプリケーションAPPを配備するサーバSVを決めることで、プロセッサCPUが実行するソフトウェアSWの処理性能の仕様を満足させることができる。
これに対して、例えば、複数のプロセッサCPUと複数のプログラム部FPGAとを、共通のスイッチ装置を介して相互に接続する場合、プロセッサCPUとプログラム部FPGAとの間での情報の転送は、スイッチ装置を介して実行される。スイッチ装置は、複数のプロセッサCPUと複数のプログラム部FPGAとに共通に接続される。このため、プロセッサCPUとスイッチ装置とを接続する信号線の配線長は、図1に示す各サーバSV内におけるプロセッサCPUとルータ部RTとを接続する信号線の配線長より長くなる。プログラム部FPGAとスイッチ装置とを接続する信号線の配線長は、図1に示す各サーバSVにおけるプログラム部FPGAとルータ部RTとを接続する信号線の配線長より長くなる。また、スイッチ装置を介して互いに接続されるプロセッサCPUとプログラム部FPGAとの間で転送される情報の転送性能は、使用されるプロセッサCPUとプログラム部FPGAとに拘わらず同等である。したがって、スイッチ装置を介して互いに接続されるプロセッサCPUとプログラム部FPGAとの間で転送される情報の転送性能は、図1に示す1つのサーバSVにソフトウェアSWとIPコアIPを配備する場合に比べて低くなる。
図2は、図1に示す管理サーバMSVの動作の一例を示す。図2に示す動作は、図1に示す管理サーバMSVが実行する制御プログラムにより実現される。すなわち、図2は、情報処理システムSYS1の制御方法および情報処理システムSYS2の制御プログラムの一例を示す。
まず、ステップS1において、管理サーバMSVは、複数のサーバSVの中から、新たなソフトウェアSWを実行可能なプロセッサCPUを選択する。
次に、ステップS2において、管理サーバMSVは、複数のサーバSVの中から、新たなIPコアIPをプログラム可能なプログラマブル部FPGAを選択する。ここで、新たなIPコアIPをプログラムするプログラマブル部FPGAは、対応するソフトウェアSWを実行するプロセッサCPUに近いことが、転送性能を確保する点で好ましい。すなわち、ソフトウェアSWを実行するプロセッサCPUと新たなIPコアIPをプログラムするプログラマブル部FPGAとの間に介在するルータ部RTの数は、少ない方が好ましい。但し、プロセッサCPUとプログラマブル部FPGAとの間で転送される情報の転送性能が、プロセッサCPUが実行するソフトウェアSWの仕様に対して余裕がある場合、新たなIPコアIPをプログラムするプログラマブル部FPGAの位置は制限されない。
次に、ステップS3において、管理サーバMSVは、ステップS1で選択したプロセッサCPUによりアクセスされるメモリMEM(すなわち、自ノードのメモリMEM)に新たなソフトウェアSWを格納する格納処理を実行する。次に、ステップS4において、管理サーバMSVは、ステップS2で選択したプログラマブル部FPGAに、新たなIPコアIPをプログラムするプログラム処理を実行する。
次に、ステップS5において、管理サーバMSVは、新たなソフトウェアSWを実行するプロセッサCPUと新たなIPコアIPを搭載したプログラマブル部FPGAとの間で転送される情報の転送経路を示す経路情報を保持部HLDに格納する格納処理を実行する。図1に示す例では、保持部HLD1、HLD2には、以下に示す経路情報がそれぞれ格納される。
<保持部HLD1に格納される経路情報>
(a)ソフトウェアSW1を実行するプロセッサCPU1から受信したIPコアIP1用の情報は、プログラム部FPGA1に転送する。
(b)ソフトウェアSW2を実行するプロセッサCPU1から受信したIPコアIP2用の情報は、ルータ部RT2に転送する。
(c)プログラム部FPGA1のIPコアIP1から受信したソフトウェアSW1用の情報は、プロセッサCPU1に転送する。
(d)ルータ部RT2から受信したソフトウェアSW2用の情報は、プロセッサCPU1に転送する。
<保持部HLD2に格納される経路情報>
(a)ルータ部RT1から受信したIPコアIP2用の情報は、プログラム部FPGA2に転送する。
(b)プログラム部FPGA2のIPコアIP2から受信したソフトウェアSW2用の情報は、ルータ部RT1に転送する。
図2に示す処理を実行することで、図1で説明したように、ソフトウェアSWとIPコアIPとを効率的に配備することが可能になり、情報処理システムSYS1の性能を向上することができる。
なお、アプリケーションAPP(ソフトウェアSWおよびIPコアIP)が他の管理装置により管理される場合、管理サーバMSVは、ソフトウェアSWの格納処理、IPコアIPのプログラム処理および経路情報の格納処理を他の管理装置に実行させる。この場合、管理サーバMSVは、ソフトウェアSWの格納処理、IPコアIPのプログラム処理および経路情報の格納処理を制御する。
以上、図1および図2に示す実施形態では、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続する。これにより、プロセッサCPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS1の性能を向上することができる。
図3は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態を示す。図1に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図3に示す情報処理システムSYS2は、複数のサーバSVと、複数のサーバSVを管理する管理サーバMSVと、管理サーバMSVにより管理されるIPプールIPPLとを有する。各サーバSVは、LAN(Local Area Network)等のネットワークNW1を介して管理サーバMSVに接続される。管理サーバMSVは、インターネットまたはイントラネット等のネットワークNW2を介して複数の端末装置TMに接続される。例えば、情報処理システムSYS2は、クラウドサービスを提供するデータセンタとして機能する。なお、管理サーバMSVとサーバSVとは、同じ場所に配置されてもよく、互いに離れた場所に配置されてもよい。
IPプールIPPLは、HDD(Hard Disk Drive)またはSSD(Solid State Drive)等の複数の記憶装置を用いて構築され、複数のアプリケーションAPP(APP1、APP2、...)を保持する。各アプリケーションAPPは、ソフトウェアSW(SW1、SW2、...)とIPコアIP(IP1、IP2、...)の回路情報とを含む。IPプールIPPLは、ソフトウェアSWと、ソフトウェアSWに対応するIPコアIPの回路情報とをそれぞれ含む複数のアプリケーションAPPを保持するデータベースの一例である。
ソフトウェアSW(プログラム)は、複数のサーバSVのいずれかのメモリMEMに格納され、サーバSVのプロセッサCPUにより実行される。IPコアIPは、データ処理等の情報処理の論理機能を実現する回路情報を含み、複数のサーバSVのいずれかのFPGA内のユーザロジック部ULGに再構成可能に搭載される。FPGAに搭載されたIPコアIPは、ハードウェアアクセラレータとして機能し、サーバSVのプロセッサCPUが実行するソフトウェアSWによる指示に基づいて、データ処理等の所定の情報処理を実行する。ユーザロジック部ULGは、IPコアIPがプログラムされる第1のプログラマブル部の一例である。以下の説明では、プロセッサCPUは、単にCPUと称される。
なお、メモリMEMは、ソフトウェアSWが格納される記憶領域に加えて、IPコアIPが実行するデータ処理に使用される処理データが格納される記憶領域と、データ処理の実行によりIPコアIPが生成した処理結果が格納される記憶領域とを有する。また、IPプールIPPLは、管理サーバMSVに搭載されるHDD等の記憶装置内に構築されてもよく、ネットワークNW1またはネットワークNW2を介して管理サーバMSVに接続されてもよい。
管理サーバMSVは、CPU、メモリMEMおよび管理テーブルMTBLを有する。CPUは、メモリMEMに保持された制御プログラムを実行することで、端末装置TMからの要求に基づいて、IPプールIPPLに格納されたアプリケーションAPP(APP1、APP2、...)をサーバSVのいずれかに配備する。すなわち、管理サーバMSVは、端末装置TMからの要求に基づいて、ソフトウェアSWをサーバSVのメモリMEMに格納し、IPコアIPに含まれる回路情報を、FPGA内のユーザロジック部ULGにプログラムする。また、管理サーバMSVは、アプリケーションAPPで処理するデータ等の情報を端末装置TMから受信し、アプリケーションAPPで処理された処理結果を端末装置TMに送信する。さらに、管理サーバMSVは、IPプールIPPLにアプリケーションAPPを登録する機能と、IPプールIPPLに格納されたアプリケーションAPPを管理する機能とを有する。
管理テーブルMTBLは、サーバSV毎に、CPUの使用状況を示す情報と、FPGAのユーザロジック部ULGの使用状況を示す情報とを保持する。管理テーブルMTBLが保持する情報は、サーバSVにアプリケーションAPPが配備される毎、またはサーバSVからアプリケーションAPPが削除される毎に更新される。なお、管理テーブルMTBLは、管理サーバMSV内のメモリMEMに保持されてもよい。管理テーブルMTBLの例は、図9に示される。
各サーバSVは、NIC(Network Interface Card)、CPU、メモリMEMおよびFPGAを有する。例えば、CPU、メモリMEMおよびFPGAは、それぞれ半導体チップの形態を有し、マザーボート等に実装される。メモリMEMは、メモリモジュールの形態を有してもよい。NICは、ネットワークNW1に接続され、ネットワークNW1を介してサーバSVを管理サーバMSVに接続する。各サーバSVは、図示しないHDDを有しており、管理サーバMSVから転送されるソフトウェアSWは、HDDにインストールされた後、メモリMEM上に展開され、CPUにより実行可能になる。
CPUは、サーバSV全体の動作を制御するとともに、メモリMEMに格納されたソフトウェアSWを実行し、FPGAのユーザロジック部ULGに搭載されたIPコアの動作を制御する。
FPGAは、サーバSVにアプリケーションAPPが配備される前に予めプログラムされるルータ部RTと、アプリケーションAPPに含まれるIPコア(回路情報)が搭載されるユーザロジック部ULGとを有する。ユーザロジック部ULGは、第1のプログラマブル部の一例であり、FPGAにおいてルータ部RTが再構成可能に搭載された領域は、第2のプログラマブル部の一例である。FPGAは、ルータ部RTとユーザロジック部ULGとを含むプログラマブル装置の一例である。例えば、サーバSV(ノード)は、ルータ部RTを介して、二次元トーラスネットワークにより互いに接続される。サーバSV間の接続の例は、図7に示される。
ルータ部RTは、各サーバSVのCPUを、複数のサーバSVのユーザロジック部ULGのいずれかに接続する機能を有する。ルータ部RTは、サーバSVのCPUから受信するパケットに基づいて、宛先のユーザロジック部ULGにパケットを転送するルーティング処理を実行する。また、ルータ部RTは、ユーザロジック部ULGから受信するパケットに基づいて、宛先のサーバSVのCPUにパケットを転送するルーティング処理を実行する。そして、ルーティング処理により、各サーバSVのCPUと、複数のサーバSVのユーザロジック部ULGのいずれかとが、情報を相互に転送可能に接続される。
ルータ部RTをFPGAに再構成可能に搭載することで、ルータ部RTとユーザロジック部ULGとの間の情報の転送をFPGAチップ内で実行することができる。これにより、ルータ部RTとユーザロジック部ULGとを互いに異なる半導体チップに搭載する場合に比べて、ルータ部RTとユーザロジック部ULGとの間の情報の転送を高速に実行することができる。
端末装置TMは、ネットワークNW2に接続されたコンピュータ装置であり、アプリケーションAPPを使用してデータ処理等を実行する場合、アプリケーションAPPのサーバSVへの配備を、ネットワークNW2を介して管理サーバMSVに指示する。例えば、端末装置TMを使用するユーザは、端末装置TMのディスプレイに表示されたアプリケーションAPPの一覧から使用したいアプリケーションAPPを選択した後、ディスプレイに表示された実行ボタン等をクリックする。端末装置TMは、実行ボタン等がクリックされたことに基づいて、アプリケーションAPPのサーバSVへの配備を、ネットワークNW2を介して管理サーバMSVに指示する。
図4は、図3に示すサーバSVの一例を示す。各サーバSVにおいて、CPUは、ソフトウェアSWをそれぞれ実行可能な4個のCPUコアCR(CR1−CR4)を有する。ユーザロジック部ULGは、回路情報をプログラム可能な9個の機能ブロックBLK(BLK1−BLK9)を有する。各IPコアIPは、少なくとも1つの機能ブロックBLKにプログラムされる。換言すれば、各機能ブロックBLKには、互いに異なるIPコアIPがプログラムされる。なお、CPUが有するCPUコアCRの数は、4個に限定されず、ユーザロジック部ULGが有する機能ブロックBLKの数は、9個に限定されない。
例えば、各サーバSVは、4個のCPUを有してもよい。この場合、各サーバSVは、16個のCPUコアCRを有し、最大で16個のソフトウェアSWを実行可能である。なお、サーバSVが、機能ブロックBLKの数(9個)より多い16個のソフトウェアSWを実行する場合、ソフトウェアSWに対応するIPコアIPは、自ノードのユーザロジック部ULGだけでなく、他ノードのユーザロジック部ULGを用いて配備される。自ノードのCPUが実行するソフトウェアSWにより制御されるIPコアIPの他ノードのユーザロジック部ULGへの配備は、各サーバSVのルータ部RTが相互に接続されることで可能になる。
図5は、図3に示すルータ部RTの一例を示す。ルータ部RTは、CPUに接続されるインタフェース部CIF、ユーザロジック部ULGに接続されるインタフェース部FIF、ポートP(P0、P1、P2、P3)、クロスバースイッチXBARおよび調停部ARBを有する。調停部ARBは、ルーティングテーブルRTBLおよびIDマッピングテーブルIDMTBLを有する。
インタフェース部CIFは、CPUからパケットを受信した場合、調停部ARBのIDマッピングテーブルIDMTBLを参照し、パケットの宛先を示す宛先IDおよびパケットの送信元を示す送信元IDをCPUから受信したパケットに付加する。インタフェース部CIFは、宛先IDおよび送信元IDを付加したパケットをクロスバースイッチXBARに出力する。また、インタフェース部CIFは、クロスバースイッチXBARからパケットを受信した場合、パケットから宛先IDおよび送信元IDを削除し、宛先IDおよび送信元IDを削除したパケットをCPUに出力する。
インタフェース部FIFは、ユーザロジック部ULGからパケットを受信した場合、調停部ARBのIDマッピングテーブルIDMTBLを参照し、宛先IDおよび送信元IDをユーザロジック部ULGから受信したパケットに付加する。インタフェース部FIFは、宛先IDおよび送信元IDを付加したパケットをクロスバースイッチXBARに出力する。また、インタフェース部FIFは、クロスバースイッチXBARからパケットを受信した場合、パケットから宛先IDおよび送信元IDを削除し、宛先IDおよび送信元IDを削除したパケットをユーザロジック部ULGに出力する。
各ポートP0、P1、P2、P3は、クロスバースイッチXBARから受信するパケットを他のサーバSVのルータ部RTに出力し、他のサーバSVのルータ部RTから受信するパケットをクロスバースイッチXBARに出力する。
調停部ARBは、ルータ部RT間での情報の転送経路を示すルーティングテーブルRTBLと、ソフトウェアSWが搭載されるノードとIPコアIPが搭載されるノードとの関係を示すIDマッピングテーブルIDMTBLとを有する。ルーティングテーブルRTBLの例は、図10に示され、IDマッピングテーブルIDMTBLの例は、図11に示される。
調停部ARBは、各ポートP0、P1、P2、P3が他のルータ部RTから受信するパケットに基づいてルーティングテーブルRTBLを参照し、パケットを転送する経路を決定する。また、調停部ARBは、インタフェース部CIFがCPUから受信するパケットまたはインタフェース部FIFがユーザロジック部ULGから受信するパケットに基づいてIDマッピングテーブルIDMTBLを参照し、パケットを転送する経路を決定する。調停部ARBは、決定した経路にしたがってスイッチ制御信号SWCNTを生成し、生成したスイッチ制御信号SWCNTをクロスバースイッチXBARに出力する。
クロスバースイッチXBARは、スイッチ制御信号SWCNTに基づいて切り替わり、インタフェース部CIF、FIF、ポートP0、P1、P2、P3の2つを互いに接続する。なお、転送経路が重複しない場合、クロスバースイッチXBARは、複数のパケットを並列に転送可能である。
図6は、図5に示すルータ部RTに転送されるパケットのフォーマットの一例を示す。CPUとルータ部RT間で転送されるパケットは、パケットの内容を示すコマンドとデータとをそれぞれ格納する領域を有する。コマンドは、パケットの宛先を示す宛先情報およびパケットのシーケンス番号等が格納されるリクエストタグを含む。ユーザロジック部ULGとルータ部RT間で転送されるパケットは、CPUとルータ部RT間で転送されるパケットと同様であり、パケットの内容を示すコマンドとデータとをそれぞれ格納する領域を有する。
ルータ部RT間で転送されるパケットは、宛先IDと送信元IDとコマンドとデータとをそれぞれ格納する領域を含む。宛先IDおよび送信元IDは、CPUまたはユーザロジック部ULG(すなわち、FPGA)を識別する情報を含む。図5で説明したように、宛先IDおよび送信元IDは、CPUからパケットを受信したインタフェース部CIFにより付加され、あるいは、ユーザロジック部ULGからパケットを受信したインタフェース部FIFにより付加される。
例えば、CPUは、IPコアIPにデータ処理の開始を指示する場合、または、IPコアIPが発行したメモリアクセス要求の応答をIPコアIPに返す場合、IPコアIPに対してパケットを発行する。IPコアIPは、ソフトウェアSWが格納されたメモリMEMに対して、データの読み出しまたはデータの書き込みを実行する場合、CPUに対してメモリアクセス要求のパケットを発行する。
例えば、IPコアIPにデータ処理の開始を指示するパケットは、IPコアIPに設けられるコンフィギュレーションレジスタに所定値を書き込むパケットである。IPコアIPは、コンフィギュレーションレジスタに所定値が書き込まれたことに基づいて、処理対象のデータである処理データをメモリMEMから読み出すために、メモリアクセス要求のパケット(読み出し要求パケット)をCPUに発行する。
CPUは、CPUコアCR(ソフトウェアSW)を介することなくメモリMEMのアクセスを制御可能なシステムコントローラを有する。読み出し要求パケットをIPコアIPから受信したシステムコントローラは、メモリMEMにアクセスし、メモリMEMから読み出した処理データを含む応答パケットをIPコアIPに対して発行する。なお、処理データは、ソフトウェアSWを実行するCPUコアCRにより、データ処理の開始の指示前にメモリMEMに格納される。
処理データを含むパケットを受信したIPコアIPは、データ処理を実行し、処理結果をメモリMEMに書き込むために、メモリアクセス要求のパケット(書き込み要求パケット)をCPUに発行する。書き込み要求パケットは、処理結果を含む。書き込み要求パケットをIPコアIPから受信したCPUのシステムコントローラは、メモリMEMにアクセスし、IPコアIPから受信した処理結果をメモリMEMに書き込む。そして、システムコントローラは、処理結果のメモリMEMへの書き込みが完了した後、書き込み要求パケットに対する応答パケットをIPコアIPに発行する。
図7は、図5に示すルータ部RTによるサーバSV間の接続の一例を示す。図7において、太い実線は、ポートPを介して互いに接続されるサーバSV間の接続経路を示す。図7に示す例では、情報処理システムSYS2は、X方向に3個が配列され、Y方向に3個が配列された9個のサーバSVを有し、サーバSVは、二次元トーラス接続により互いに接続される。サーバSV、CPU、ルータ部RTおよびユーザロジック部ULGの末尾に付加した2桁の数字のうち、上位の桁はX方向の並び順(アドレス)を示し、下位の桁はY方向の並び順を示す。
図7に示す例では、ノード数は9個であるが、ノード数は9個に限定されない。また、図7は、二次元トーラス接続の例を示すが、メッシュ接続によりノード間が接続されてもよく、3次元以上のトーラス接続またはメッシュ接続によりノード間が接続されてもよい。
図8は、図3に示すサーバSVに配備されたアプリケーションAPPの一例を示す。図8では、説明を分かりやすくするために、図7に示すサーバSVのうち、3個のサーバSV00、SV11、SV22を示す。ソフトウェアSWおよびIPコアIPにおいて、末尾に示す数字が同じペアが1つのアプリケーションAPPに対応する。各CPUコアCR1−CR4は、ソフトウェアSWのいずれかを実行可能である。このため、各サーバSVにおいて、メモリMEMに格納されるソフトウェアSWの最大数は”4”である。なお、各CPUコアCR1−CR4は、複数の仮想マシンを起動し、各仮想マシンがソフトウェアSWを実行してもよい。この場合、メモリMEMに格納されるソフトウェアSWの最大数は、CPU内で起動される仮想マシンの数に等しくなる。したがって、仮想マシンを使用しない場合に比べて、実行可能なソフトウェアSWの数を増やすことができる。
サーバSV00では、ソフトウェアSW1、SW2、SW11、SW12がメモリMEMに格納され、IPコアIP1、IP2がユーザロジック部ULG00にプログラムされる。サーバSV11では、ソフトウェアSW3、SW4、SW5、SW6がメモリMEMに格納され、IPコアIP3、IP4、IP5、IP6、IP11がユーザロジック部ULG11にプログラムされる。サーバSV22では、ソフトウェアSW7、SW8、SW9、SW10がメモリMEMに格納され、IPコアIP7、IP8、IP9、IP10、IP12がユーザロジック部ULG22にプログラムされる。
太い実線で示すソフトウェアSW11とIPコアIP11と、太い点線で示すソフトウェアSW12とIPコアIP12とは、2つのサーバSVに跨って配備されることを示す。すなわち、アプリケーションAPP1−APP10が配備されるメモリMEMとユーザロジック部ULGは、1つのサーバSVに含まれる。アプリケーションAPP11、APP12が配備されるメモリMEMとユーザロジック部ULGは、互いに異なるサーバSVに含まれる。
CPUとユーザロジック部ULGとをルータ部RTを介して接続することで、各アプリケーションAPPのソフトウェアSWとIPコアIPとを、任意のメモリMEMと任意のユーザロジック部ULGとに配備することができる。また、CPUとユーザロジック部ULGとを各サーバSV内に設けられたルータ部RTを介して接続することで、パケットのルーティングを各サーバSV内で実行することができる。これにより、CPUとユーザロジック部ULGとをサーバSVの外部に設けられるルータ装置またはスイッチ装置等により接続する場合に比べて、パケットの転送速度(所定時間に転送されるパケットの転送量)を向上することができる。この結果、情報処理システムSYS2の性能を向上することができる。なお、ソフトウェアSWを実行するCPUコアCRとIPコアIPが搭載されるユーザロジック部ULGとの間に介在するルータ部RTの数は、パケットの転送速度の低下を抑止する点で、少ない方が好ましい。
さらに、図8では、ソフトウェアSW11とIPコアIP11とがサーバSV00、SV11に跨って配備されるが、介在するルータ部RTの数が異なることを除き、ソフトウェアSW11とIPコアIP11とがサーバSV00のみに配備される場合と等価である。したがって、図3に示す情報処理システムSYS2では、既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。
図9は、図3に示す管理サーバMSV内の管理テーブルMTBLの一例を示す。管理テーブルMTBLは、各サーバSVにおけるCPUコアCR毎に、CPUコアCRの使用/未使用を示す情報を格納するフラグ領域FLGと、動作させるソフトウェアSWの名称を示す情報を格納するSW名領域と有する。また、管理テーブルMTBLは、各サーバSVにおける機能ブロックBLK毎に、機能ブロックBLKの使用/未使用を示す情報を格納するフラグ領域FLGと、動作させるIPコアIPの名称を示す情報を格納するIP名領域とを有する。各フラグ領域FLGに格納された”0”は、”未使用”を示し、各フラグ領域FLGに接続された”1”は、”使用”を示す。管理テーブルMTBLは、ソフトウェアSWとIPコアIPとがサーバSVに配備される毎に、管理サーバMSVにより更新される。管理テーブルMTBLは、各サーバSVのCPUコアCRの使用状況を示す情報と、各サーバSVの機能ブロックBLKの使用状況を示す情報とを保持する状況保持部の一例である。なお、各サーバSVにおいてCPUが交換され、CPUコアCRの数が変更される場合がある。または、各サーバSVにおいてFPGAが交換され、ユーザロジック部ULGの機能ブロックBLKの数が変更される場合がある。このような場合にも、管理テーブルMTBLを変更することで、情報処理システムSYS2の運用を継続することができる。
図9に示す例は、サーバSV00のCPUコアCR3、CR4と、サーバSV00の機能ブロックBLK9と、サーバSV10の機能ブロックBLK9と、サーバSV20のCPUコアCR4とが未使用であることを示す。また、サーバSV11の機能ブロックBLK6−BLK9と、サーバSV21の機能ブロックBLK9と、サーバSV22の機能ブロックBLK7−BLK9とが未使用であることを示す。図9に示す管理テーブルMTBLの状態は、後述する図12に示すアプリケーションAPPの配備状態に対応する。換言すれば、図9に示す管理テーブルMTBLは、図8において、アプリケーションAPP11(SW11、IP11)と、アプリケーションAPP12(SW12、IP12)とが情報処理システムSYS2に配備される前の状態を示す。なお、サーバSVが増設または削減される場合にも、増設または削減されるサーバSVに合わせて管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS2の運用を継続することができる。
図10は、図5に示すルーティングテーブルRTBLの一例を示す。各ルータ部RTのルーティングテーブルRTBLは、受信したパケットを出力するポートPの番号P#を示す情報を、パケットに含まれる宛先ID毎に格納する領域を有する。図10に示すルーティングテーブルRTBLは、情報処理システムSYS2の起動時に、サーバSV間でのパケットの転送仕様に基づいて管理サーバMSVにより設定される。例えば、サーバSV間でのパケットの転送仕様の1つの例では、パケットは図7のY方向(縦方向)に転送された後、図7のX方向(横方向)に転送される。
例えば、図8において、サーバSV00のメモリMEMに格納されたソフトウェアSW11を実行するCPU00が、サーバSV11のユーザロジック部ULG11に搭載されたIPコアIP11にパケットを送信する場合、宛先IDはRT11である。このため、まず、CPU00からパケットを受信したルータ部RT00は、ルーティングテーブルRTBLを参照し、宛先ID=RT11に対応するポートP3にパケットを転送し、パケットはルータ部RT01に届く。ルータ部RT01は、ルーティングテーブルRTBLを参照し、宛先ID=RT11に対応するポートP1にパケットを転送し、パケットはルータ部RT11に届く。ルータ部RT11は、パケットに含まれる宛先IDが自身を示すため、パケット内のコマンド(リクエストタグ)に含まれるIPコアIP11を示す情報に基づいて、ユーザロジック部ULG11にパケットを転送する。
また、サーバSV11のユーザロジック部ULG11に搭載されたIPコアIP11が、サーバSV00のメモリMEMにインストールされたソフトウェアSW11を実行するCPU00にパケットを送信する場合、宛先IDはRT00である。このため、まず、ルータ部RT11は、ルーティングテーブルRTBLを参照し、宛先ID=RT00に対応するポートP2にパケットを転送し、パケットはルータ部RT10に届く。ルータ部RT10は、ルーティングテーブルRTBLを参照し、宛先ID=RT00に対応するポートP0にパケットを転送し、パケットはルータ部RT00に届く。ルータ部RT00は、パケットに含まれる宛先IDが自身を示すため、パケット内のコマンド(リクエストタグ)に含まれるソフトウェアSW11を示す情報に基づいて、CPU00にパケットを転送する。
図11は、図5に示すIDマッピングテーブルIDMTBLの一例を示す。各ルータ部RTのIDマッピングテーブルIDMTBLは、対応テーブルTBLA、TBLB、TBLCを有する。IDマッピングテーブルIDMTBLは、CPUと、IPコアIPがプログラムされた自ノードまたは他ノードのユーザロジック部ULGとの間で転送される情報の転送経路を示す経路情報を保持する保持部の一例である。
各ルータ部RTの対応テーブルTBLAは、各ノードに搭載されたソフトウェアSWに対応するIPコアIPの搭載先を示す情報を保持する。すなわち、対応テーブルTBLAは、ユーザロジック部ULGに搭載されたIPコアIPを示すデバイスIDを格納する領域と、IPコアIPを搭載したユーザロジック部ULGに接続されたルータ部RTを示す宛先ルータIDを格納する領域とを有する。
対応テーブルTBLAは、データ処理の開始をIPコアIPに指示するパケットをCPUから受信したルータ部RTのインタフェース部CIFが、パケットに付加する宛先ID(図6)を決定する場合に使用される。対応テーブルTBLAは、ソフトウェアSWとIPコアIPとが互いに異なるサーバSVに配備される毎に、管理サーバMSVにより更新される。
例えば、ルータ部RT00の対応テーブルTBLAは、IPコアIP1、IP2が自ノード(SV00)のユーザロジック部ULGに搭載されていることを示す。また、ルータ部RT00の対応テーブルTBLAは、IPコアIP11が他ノード(SV11)のロジック部ULGに搭載され、IPコアIP12が他ノード(SV12)のロジック部ULGに搭載されていることを示す。
各ルータ部RTの対応テーブルTBLBは、各ノードに搭載されたIPコアIPに対応するソフトウェアSWの搭載先を示す情報を保持する。すなわち、対応テーブルTBLBは、ユーザロジック部ULGに搭載されたIPコアIPを示すデバイスIDを格納する領域と、IPコアIPに対応するソフトウェアSWを実行するCPUに接続されたルータ部RTを示す宛先ルータIDを格納する領域とを有する。
対応テーブルTBLBは、IPコアIPからメモリアクセス要求のパケットを受信したルータ部RTのインタフェース部FIFが、パケットに付加する宛先ID(図6)を決定する場合に使用される。対応テーブルTBLBは、ソフトウェアSWとIPコアIPとが互いに異なるサーバSVに配備される毎に、管理サーバMSVにより更新される。
例えば、ルータ部RT11の対応テーブルTBLBは、IPコアIP3、IP4、IP5、IP6に対応するソフトウェアSWが自ノード(SV11)に搭載されていることを示す。また、ルータ部RT11の対応テーブルTBLBは、IPコアIP11に対応するソフトウェアSWが他ノード(SV00)に搭載されていることを示す。
各ルータ部RTの対応テーブルTBLCは、IPコアIPから発行されたメモリアクセス要求のパケットに対する応答パケットの転送経路を示す情報を保持する。すなわち、対応テーブルTBLCは、メモリアクセス要求のパケットに含まれるリクエストタグを格納する領域と、メモリアクセス要求のパケットを当該ルータ部RTに転送した直近のルータ部RTを示す送信元ルータIDを格納する領域とを有する。
対応テーブルTBLCは、メモリアクセス要求のパケットに対する応答パケットを、メモリアクセス要求を発行したIPコアIPに転送する場合に使用される。対応テーブルTBLCは、各ルータ部RTがメモリアクセス要求のパケットを受信する毎に、各ルータ部RTの調停部ARBにより更新される。
例えば、IPコアIP11が発行したメモリアクセス要求のパケットをルータ部RT10が受信したとする。この場合、ルータ部RT10は、パケットに含まれるリクエストタグと、パケットの直近の送信元のルータ部RT11を示す送信元ルータIDとを対応テーブルTBLCに格納する。対応テーブルTBLCのリクエストタグの領域には、メモリアクセス要求のパケットを発行したIPコアIP11を示す情報と、パケットのシーケンス番号(この例では、”0001”)とが格納される。
ルータ部RT10は、ルーティングテーブルRTBLにしたがって、メモリアクセス要求のパケットをルータ部RT00に転送する。メモリアクセス要求のパケットをルータ部RT10から受信したルータ部RT00は、パケットに含まれるリクエストタグと、パケットの直近の送信元のルータ部RT10を示す送信元ルータIDとを対応テーブルTBLCに格納する。ルータ部RT00は、メモリアクセス要求のパケットに含まれる宛先IDが自身を示すため、パケット内のコマンド(リクエストタグ)に含まれるソフトウェアSW11を示す情報に基づいて、CPU00にパケットを転送する。
一方、CPU00からメモリアクセス要求のパケットに対する応答パケットを受信したルータ部RT00は、対応テーブルTBLCを参照する。ここで、ルータ部RT00の調停部ARBは、パケット内のコマンドをデコードすることで、パケットが応答パケットであることを検出する。ルータ部RT00は、応答パケット内のコマンドに含まれるリクエストタグと一致するリクエストタグに対応して対応テーブルTBLCに格納されている送信元ルータIDにより示されるルータ部RT10に応答パケットを転送する。
ルータ部RT00からメモリアクセス要求のパケットに対する応答パケットを受信したルータ部RT10は、上述したルータ部RT00と同様に動作し、対応テーブルTBLCを参照し、応答パケットをルータ部RT11に転送する。そして、ルータ部RT11を介してメモリアクセス要求のパケットの発行元のIPコアIP11に応答パケットが転送される。
各ルータ部RTにIDマッピングテーブルIDMTBLを設けることで、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。換言すれば、ソフトウェアSWに対応するIPコアIPを自ノードまたは他ノードのユーザロジック部ULGに配備する場合にも、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。
図12は、図3に示す情報処理システムSYS2においてアプリケーションAPPが配備された状態の一例を示す。図12では、説明を分かりやすくするために、図7に示すサーバSVのうち、3個のサーバSV00、SV11、SV22のみを示す。図12は、図9に示す管理テーブルMTBLの状態を視覚的に表したものである。すなわち、図12は、サーバSV00のCPUコアCR3、CR4と、サーバSV00の機能ブロックBLK9と、サーバSV11の機能ブロックBLK6−BLK9と、サーバSV22の機能ブロックBLK7−BLK9とが未使用であることを示す。
図12に示す例では、ソフトウェアSWは、CPUコアCR毎に割り当てられ、IPコアIPは、回路規模に応じて1つまたは複数の機能ブロックBLKに割り当てられる。ソフトウェアSWをCPUコアCR毎に割り当てることで、簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。
新たに配備されるアプリケーションAPPのソフトウェアSWは、サーバSV00のCPUコアCR3またはCR4のいずれかに割り当て可能である。新たに配備されるアプリケーションAPPのIPコアIPは、サーバSV00の機能ブロックBLK9、サーバSV11の機能ブロックBLK6−BLK9またはサーバSV22の機能ブロックBLK7−BLK9のいずれかに割り当て可能である。
これに対して、各サーバSVがルータ部RTを持たない場合、アプリケーションAPPは、サーバSV00におけるCPUコアCR3またはCR4と機能ブロックBLK9のみに配備可能である。換言すれば、サーバSV11において空いている機能ブロックBLK6−BLK9およびサーバSV12において空いている機能ブロックBLK7−BLK9には、IPコアIPが搭載されず、ユーザロジック部ULGに無駄な領域が発生してしまう。また、新たに搭載されるIPコアIPが、複数の機能ブロックBLKに跨って搭載される場合、情報処理装置SYS2は、サーバSV00のCPUコアCR3、CR4が空いているにも拘わらず、アプリケーションAPPを配備しない。
なお、1つの機能ブロックBLKに搭載可能なIPコアIP5等は、他のIPコアIPに比べて簡易なデータ処理を繰り返して実行する場合があり、ソフトウェアSW5から頻繁にデータ処理の指示を受ける場合がある。この場合にも、サーバSV内のルータ部RTを介して、ソフトウェアSW5を実行するCPUコアCRとIPコアIP5とを接続することで、サーバSVの外部のスイッチ装置を介する場合に比べて、ソフトウェアSW5の処理性能の低下を抑えることができる。
図13は、図3に示す情報処理システムSYS2においてアプリケーションAPPが配備された状態の別の例を示す。図12と同じ要素については、詳細な説明は省略する。図13は、図8に示す状態に対応する。すなわち、図13は、網掛けで示すアプリケーションAPP11(SW11、IP11)、APP12(SW12、IP12)が、図12に対して新たに配備された状態を示す。
図13では、IPコアIP11の搭載には、2個の機能ブロックBLKが使用され、IPコアIP12の搭載には、3個の機能ブロックBLKが使用される。このため、IPコアIP11、IP12は、ソフトウェアSW11、SW12が搭載されるサーバSV00と異なるサーバSV11、SV12にそれぞれ搭載される。換言すれば、サーバSVは、互いに接続されたルータ部RTを有するため、ソフトウェアSWとIPコアIPとを、互いに異なるサーバSVに搭載することができる。
図14は、図3に示すサーバSVにより実行されるアプリケーションAPPの動作の一例を示す。図14では、図13に示すアプリケーションAPP11(SW11、IP11)とアプリケーションAPP2(SW2、IP2)とが実行される。なお、図14に示す動作では、説明を分かりやすくするために、アプリケーションAPP11(SW11、IP11)、APP2(SW2、IP2)を互いに重複することなく順に実行させている。しかしながら、アプリケーションAPP11、APP2は、互いに重複して実行されてもよい。
まず、サーバSV00のCPUコアCR3が実行するソフトウェアSW11は、サーバSV11のIPコアIP11に処理させる処理データDTをメモリMEMに書き込む(図14(a))。なお、実際の動作では、CPUコアCR3は、メモリMEMに処理データDTを書き込むメモリアクセス要求MRQWをメモリMEMに発行する。メモリMEMは、処理データDTを記憶領域に書き込んだ後、メモリアクセス要求MRQWに対する応答パケットRESを発行する。
メモリMEMに処理データDTを書き込んだ後、ソフトウェアSW11は、IPコアIP11に対してデータ処理要求DRQ(パケット)を発行する(図14(b))。データ処理要求DRQは、図10に示すルーティングテーブルRTBLにしたがって、ルータ部RT00、RT01、RT11を介してIPコアIP11に転送される。データ処理要求DRQは、CPUコアCR3からIPコアIP11に転送されるデータ処理の指示の一例である。
データ処理要求DRQを受信したIPコアIP11は、処理データDTをメモリMEMから読み出すメモリアクセス要求MRQR(パケット)を発行する(図14(c))。メモリアクセス要求MRQRは、ルーティングテーブルRTBLにしたがって、ルータ部RT11、RT10、RT00を介してメモリMEMに転送される(図14(d))。メモリアクセス要求MRQRは、IPコアIP11からメモリMEMに転送される処理データの読み出し要求の一例である。なお、実際の動作では、メモリMEMの読み出しアクセスは、CPU(図4)に搭載されるシステムコントローラを介して実行される。
メモリMEMのアクセスを制御するシステムコントローラは、メモリアクセス要求MRQRに基づいて記憶領域から読み出した処理データDTを含む応答パケットRESを発行する(図14(e))。処理データDTを含む応答パケットRESは、図11に示すIDマッピングテーブルIDMTBLの対応テーブルTBLCにしたがって、ルータ部RT00、RT10、RT11を介してIPコアIP11に転送される(図14(f))。すなわち、処理データDTを含む応答パケットRESは、メモリアクセス要求MRQRが転送された経路の逆の経路を通って転送される。
IPコアIP11は、メモリMEMから転送された処理データDTを用いてデータ処理を実行し、データ処理により得られた処理結果RSLTをメモリMEMに書き込むメモリアクセス要求MRQW(パケット)を発行する(図14(g))。処理結果RSLTは、ルーティングテーブルRTBLにしたがって、ルータ部RT11、RT10、RT00を介してメモリMEMに転送され、メモリMEMの記憶領域に書き込まれる(図14(h))。メモリアクセス要求MRQWは、IPコアIP11がメモリMEMに発行する処理結果の書き込み要求の一例である。
サーバSV00のCPUに搭載されるシステムコントローラは、処理結果RSLTのメモリMEMへの書き込みの完了に基づいて、メモリアクセス要求MRQWに対する応答パケットRESを発行する(図14(i))。応答パケットRESは、IDマッピングテーブルIDMTBLの対応テーブルTBLCにしたがって、ルータ部RT00、RT10、RT11を介してIPコアIP11に転送される(図14(j))。
応答パケットRESを受信したIPコアIP11は、データ処理の完了をCPUコアCR1が実行するソフトウェアSW11に通知する割り込みINT(パケット)を発行する(図14(k))。割り込みINTは、ルーティングテーブルRTBLにしたがって、ルータ部RT11、RT10、RT00を介してCPUコアCR3に転送される(図14(l))。
割り込みINTを検出したソフトウェアSW11は、処理結果RSLTをメモリMEMから読み出すメモリアクセス要求MRQRを発行する(図14(m))。そして、ソフトウェアSW11は、メモリMEMから処理結果RSLTを受信し、アプリケーションAPP11の処理の1つを完了する(図14(n))。
次に、サーバSV00のCPUコアCR2が実行するソフトウェアSW2は、サーバSV00のIPコアIP2に処理させる処理データDTをメモリMEMに書き込んだ後、IPコアIP2に対してデータ処理要求DRQ(パケット)を発行する(図14(o))。CPUコアCR2が実行するソフトウェアSW2とIPコアIPとのその後の動作は、パケットがルータ部RT00のみを介して転送されることを除き、CPUコアCR3が実行するソフトウェアSW11とIPコアIP11との上述した動作と同様である。図14に示すように、ソフトウェアSWに対応するIPコアIPが他ノードのユーザロジック部ULGに配備される場合にも、ルータ部RTを介して、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。
図15は、図3に示す管理サーバMSVの動作の一例を示す。図15に示す動作は、図3に示す管理サーバMSVが実行する制御プログラムにより実現される。すなわち、図15は、情報処理システムSYS2の制御方法および情報処理システムSYS2の制御プログラムの一例を示す。
まず、ステップS10において、管理サーバMSVは、ネットワークNW2を介して端末装置TMからアプリケーションAPPの配備の指示を受信したか否かを判定する。アプリケーションAPPの配備の指示を受信した場合、処理はステップS100に移行され、アプリケーションAPPの配備の指示を受信していない場合、処理はステップS20に移行される。
ステップS20において、管理サーバMSVは、ネットワークNW2を介して端末装置TMからアプリケーションAPPの削除の指示を受信したか否かを判定する。アプリケーションAPPの削除の指示を受信した場合、処理はステップS30に移行され、アプリケーションAPPの削除の指示を受信していない場合、処理は終了する。
ステップS30において、管理サーバMSVは、管理テーブルMTBLを参照し、削除が指示されたアプリケーションAPPのソフトウェアSWが動作するサーバSVのCPUコアCRを検出する。そして、管理サーバMSVは、検出したCPUコアCR上で動作するアプリケーションAPPのソフトウェアSWを停止する。
次に、ステップS40において、管理サーバMSVは、管理テーブルMTBLを参照し、削除が指示されたアプリケーションAPPのIPコアIPが搭載されたサーバSVの機能ブロックBLKを検出する。そして、管理サーバMSVは、検出した機能ブロックBLKからIPコアIPを削除する。
次に、ステップS50において、管理サーバMSVは、削除したアプリケーションAPP(SW、IP)に基づいて、図11に示すIDマッピングテーブルIDMTBLの対応テーブルTBLA、TBLBを更新し、処理をステップS60に移行する。
一方、アプリケーションAPPの配備の指示を受信した場合、ステップS100において、管理サーバMSVは、アプリケーションAPPを配備する処理を実行し、処理をステップS60に移行する。ステップS100の処理の例は、図16に示される。
ステップS60において、管理サーバMSVは、アプリケーションAPPの配備またはアプリケーションAPPの削除に基づいて、図9に示す管理テーブルMTBLを更新し、処理を終了する。
図16は、図15に示すステップS100の処理の一例を示す。
まず、ステップS110において、管理サーバMSVは、管理テーブルMTBLを参照し、空いているCPUコアCRと、空いている機能ブロックBLKとを検出する。
次に、ステップS120において、管理サーバMSVは、アプリケーションAPP(SW、IP)を1つのサーバSVに配備可能か否かを判定する。ソフトウェアSWとIPコアIPとを1つのサーバSVに配備可能な場合、処理はステップS130に移行され、ソフトウェアSWとIPコアIPとを互いに異なるサーバSVに配備する場合、処理はステップS150に移行される。
ステップS130において、管理サーバMSVは、ステップS120で判定したサーバSVのHDDに、新たに配備するアプリケーションAPPのソフトウェアSWをインストールする。なお、新たに配備するアプリケーションAPPのソフトウェアSWがHDDに既にインストールされている場合、ステップS130の処理は省略される。
次に、ステップS140において、管理サーバMSVは、ステップS120で判定したサーバSVのユーザロジック部ULGの空いている機能ブロックBLKにIPコアIPをプログラムする。これにより、新たに配備したアプリケーションAPPの情報処理システムSYS2上での動作が可能になる。
一方、ソフトウェアSWとIPコアIPとを異なるサーバSVに配備する場合、ステップS150において、管理サーバMSVは、ソフトウェアSWを動作可能なCPUコアCRが存在するか否かを判定する。ソフトウェアSWを動作可能なCPUコアCRが存在する場合、処理はステップS160に移行され、ソフトウェアSWを動作可能なCPUコアCRが存在しない場合、アプリケーションAPPの配備が困難なため、処理は終了する。
ステップS160において、管理サーバMSVは、IPコアIPをプログラム可能な機能ブロックBLKが存在するか否かを判定する。IPコアIPをプログラム可能な機能ブロックBLKが存在する場合、処理はステップS170に移行され、IPコアIPをプログラム可能な機能ブロックBLKが存在しない場合、アプリケーションAPPの配備が困難なため、処理は終了する。
ステップS170において、管理サーバMSVは、ステップS150で判定したソフトウェアSWを動作可能なCPUコアCRのいずれかに対応するHDDに、新たに配備するアプリケーションAPPのソフトウェアSWをインストールする。新たに配備するアプリケーションAPPのソフトウェアSWがHDDに既にインストールされている場合、ステップS170の処理は省略される。
次に、ステップS180において、管理サーバMSVは、ステップS160で判定したIPコアIPをプログラム可能な機能ブロックBLKのいずかにIPコアIPをプログラムする。
次に、ステップS190において、管理サーバMSVは、新たに配備したアプリケーションAPP(SW、IP)に基づいて、図11に示すIDマッピングテーブルIDMTBLの対応テーブルTBLA、TBLBを更新し、処理を終了する。
以上、図3から図16に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。例えば、CPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS1の性能を向上することができる。
さらに、図3から図16に示す実施形態では、ルータ部RTをFPGAに再構成可能に搭載することで、ルータ部RTとユーザロジック部ULGとの間の情報の転送をFPGAチップ内で実行することができる。これにより、ルータ部RTとユーザロジック部ULGとを互いに異なる半導体チップに搭載する場合に比べて、ルータ部RTとユーザロジック部ULGとの間の情報の転送を高速に実行することができる。
ソフトウェアSWをCPUコアCR毎に割り当てることで、簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。
図11に示すIDマッピングテーブルIDMTBLにより、ソフトウェアSWに対応するIPコアIPを自ノードまたは他ノードに配備する場合にも、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。
複数のルータ部RTを介して、ソフトウェアSWとIPコアIPとがサーバSVに跨って配備される場合にも、既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。各サーバSVにおいて、CPUコアCRの数が変更され、または、ユーザロジック部ULGの機能ブロックBLKの数が変更される場合にも、管理テーブルMTBLを変更することで、情報処理システムSYS2の運用を継続することができる。
また、サーバSVが増設または削減される場合、増設または削減されるサーバSVに合わせて管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS2の運用を継続することができる。
図17は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態を示す。図1から図16で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図17に示す情報処理システムSYS3は、各サーバSVのルータ部RTがFPGAの外部に設けられることを除き、図3に示す情報処理システムSYS2と同様である。すなわち、ルータ部RTは、FPGAチップとは別の半導体チップ内に設けられ、FPGAは、IPコアIPがプログラムされるユーザロジック部ULGを有する。情報処理システムSYS3の動作は、図14から図16と同一または同様である。すなわち、図15および図16は、情報処理システムSYS3の制御方法および情報処理システムSYS7の制御プログラムの一例を示す。
以上、図17に示す実施形態においても、図1から図16に示す実施形態と同様の効果を得ることができる。例えば、CPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS3の性能を向上することができる。
また、簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。図11に示すIDマッピングテーブルIDMTBLにより、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。各サーバSVのハードウェア構成が変更される場合にも、管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS3の運用を継続することができる。
図18は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態を示す。図1から図16で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図18に示す情報処理システムSYS4は、各サーバSVの構成が、図3に示すサーバSVの構成と異なることを除き、図3に示す情報処理システムSYS2と同様である。各サーバSVは、CPUに直接接続されるルータ部RTaと、ルータ部RTaを介してCPUに接続されるルータ部RTbとを有する。各ルータ部RTa、RTbは、ユーザロジック部ULGとともにFPGAチップ内に搭載される。各サーバSVが複数のルータ部RTa、RTbを有するため、情報処理システムSYS4は、ルータ部RTa、RTbが二次元トーラスネットワークにより互いに接続される。サーバSV間の接続の例は、図19に示される。
ルータ部RTaは、調停部ARBのルーティングテーブルRTBLおよびIDマッピングテーブルIDMTBLが異なることを除き、図5に示すルータ部RTと同じ構成を有する。ルータ部RTbは、図5に示すルータ部RTからインタフェース部CIFを削除した構成と同様である。但し、ルータ部RTbは、CPUからパケットを直接受信しないため、ルータ部RTbのIDマッピングテーブルIDMTBLは、図11に示す対応テーブルTBLAを持たない
図18では、各サーバSVに搭載されるルータ部RT(RTaまたはRTb)の数が図3に比べて増えているため、ルータ部RTa、RTbのルーティングテーブルRTBLは、図5に示すルーティングテーブルRTBLに比べてエントリの数(行数)が多い。情報処理システムSYS4は、図15および図16と同様に動作する。すなわち、図15および図16は、情報処理システムSYS4の制御方法および情報処理システムSYS4の制御プログラムの一例を示す。
各サーバSVに複数のルータ部RTa、RTbと、各ルータ部RTa、RTbに接続されるユーザロジック部ULGを設けることで、各サーバSVに配備可能なIPコアIPの数を、図3に比べて増やすことができる。これにより、回路規模が大きい複数のIPコアIPがユーザロジック部ULGに搭載される場合にも、IPコアIPをプログラムする機能ブロックBLKが不足する可能性を低くすることができる。換言すれば、CPUコアCRが空いているにも拘わらず、機能ブロックBLKの不足によりIPコアIPの配備が困難であることに起因して、アプリケーションAPPが配備されない不具合を抑止することができる。
さらに、各サーバSVに複数のルータ部RTa、RTbと複数のユーザロジック部ULGとを設けることで、アプリケーションAPP(SW、IP)を自ノード内に配備できる可能性を高くできる。これにより、アプリケーションAPP(SW、IP)が複数のノードに跨って配備される場合に比べて、ソフトウェアSWとIPコアIP間での情報の転送速度を高くすることができ、アプリケーションAPPの性能を向上することができる。
図19は、図18に示すルータ部RTによるサーバSV間の接続の一例を示す。図7と同じ要素については、詳細な説明は省略する。図19に示す例では、情報処理システムSYS4は、3つのサーバSV00、SV01、SV02を有し、各サーバSVは、X方向に配列された3個のルータ部RT(RTb00、RTa10、RTb20等)を有する。そして、ルータ部RTは、二次元トーラス接続により互いに接続される。なお、情報処理システムSYS4に搭載されるサーバSVの数は3個に限定されず、ルータ部RTの接続手法は、二次元のトーラス接続に限定されない。
以上、図18および図19に示す実施形態においても、図1から図16に示す実施形態と同様の効果を得ることができる。例えば、CPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS4の性能を向上することができる。
ルータ部RTをFPGAに再構成可能に搭載することで、ルータ部RTとユーザロジック部ULGとの間の情報の転送を高速に実行することができる。簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。図11に示すIDマッピングテーブルIDMTBLにより、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。各サーバSVのハードウェア構成が変更される場合にも、管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS4の運用を継続することができる。
さらに、図18および図19に示す実施形態では、以下の効果を得ることができる。すなわち、各サーバSVに複数のルータ部RTa、RTbと複数のユーザロジック部ULGとを設けることで、CPUコアCRが空いているにも拘わらず、機能ブロックBLKの不足によりアプリケーションAPPが配備されない不具合を抑止することができる。さらに、アプリケーションAPP(SW、IP)を自ノード内に配備できる可能性を高くできる。これにより、アプリケーションAPP(SW、IP)が複数のノードに跨って配備される場合に比べて、ソフトウェアSWとIPコアIP間での情報の転送速度を高くすることができ、アプリケーションAPPの性能を向上することができる。
図20は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態を示す。図1から図19で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図20に示す情報処理システムSYS5は、各サーバSVの構成が、図3に示すサーバSVの構成と異なることを除き、図3に示す情報処理システムSYS2と同様である。すなわち、各サーバSVは、図18と同様に、CPUに直接接続されるルータ部RTaと、ルータ部RTaを介してCPUに接続されるルータ部RTbとを有する。また、各サーバSVのルータ部RTは、図17と同様に、FPGAの外部に設けられ、FPGAは、IPコアIPがプログラムされるユーザロジック部ULGを有する。
情報処理システムSYS5は、図15および図16と同様に動作する。すなわち、図15および図16は、情報処理システムSYS5の制御方法および情報処理システムSYS5の制御プログラムの一例を示す。以上、図20に示す実施形態においても、図1から図19に示す実施形態と同様の効果を得ることができる。
図21は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態を示す。図1から図16で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図21に示す情報処理システムSYS6は、IPプールIPPLを持たず、IPプールIPPLは、ネットワークNW1に接続されたIP管理サーバIPMSVにより管理される。IP管理サーバIPMSVは、情報処理システムSYS6の外部に設置され、IPプールIPPLにアプリケーションAPPを登録する管理を実行する。なお、IP管理サーバIPMSVは、ネットワークNW2に接続されてもよい。
各サーバSVは、図3に示すサーバSVと同じ構成である。管理サーバMSVは、IPプールIPPLにアプリケーションAPPを登録する機能と、IPプールIPPLに格納されたアプリケーションAPPを管理する機能とを持たないことを除き、図3に示す管理サーバMSVと同様の機能を有する。但し、管理サーバMSVは、IP管理サーバIPMSVにアプリケーションAPPの配備の指示およびアプリケーションAPPの削除の指示を発行する機能を有する。
情報処理システムSYS6は、図15および図16と同様に動作する。すなわち、図15および図16は、情報処理システムSYS6の制御方法および情報処理システムSYS7の制御プログラムの一例を示す。但し、図16のステップS130、S140、S170、S180およびS190は、管理サーバMSVからのアプリケーションAPPの配備の指示を受信したIP管理サーバIPMSVにより実行される。なお、図15のステップS30、S40およびS50も、管理サーバMSVからのアプリケーションAPPの削除の指示を受信したIP管理サーバIPMSVにより実行されてもよい。
IPプールIPPLをIP管理サーバIPMSVに管理させ、管理サーバMSVをアプリケーションAPPの配備の処理に集中させることで、図3に示す情報処理システムSYS2に比べて、アプリケーションAPPを効率的にサーバSVに配備することができる。
管理サーバMSVとIP管理サーバIPMSVとサーバSVとは、同じ場所に配置されてもよく、互いに離れた場所に配置されてもよい。例えば、管理サーバMSVとサーバSVとを用いてクラウドサービスを提供する事業者と、アプリケーションAPPをクラウドサービスの事業者に提供する事業者とは、互いに相違してもよい。
なお、情報処理システムSYS6は、管理サーバMSVに接続された他のIPプールIPPLを有してもよい。すなわち、情報処理システムSYS6は、図3に示すシステム構成に加えて、ネットワークNW1に接続されたIP管理サーバIPMSVとIP管理サーバIPMSVに管理されるIPプールIPPLを有してもよい。これにより、IP管理サーバIPMSVがネットワークNW1に接続されない場合に比べて、他の事業者等により新たに開発されたアプリケーションAPPを、迅速に端末装置TMを操作するユーザに提供することができ、ユーザの利便性を向上することができる。
以上、図21に示す実施形態においても、図1から図16に示す実施形態と同様の効果を得ることができる。例えば、CPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS6の性能を向上することができる。
ルータ部RTをFPGAに再構成可能に搭載することで、ルータ部RTとユーザロジック部ULGとの間の情報の転送を高速に実行することができる。簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。図11に示すIDマッピングテーブルIDMTBLにより、ソフトウェアSWを実行するCPUコアCRとIPコアIPとの間で、情報を確実に転送することができる。既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。各サーバSVのハードウェア構成が変更される場合にも、管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS6の運用を継続することができる。
さらに、図21に示す実施形態では、IPプールIPPLをIP管理サーバIPMSVに管理させることで、管理サーバMSVは、図3に示す管理サーバMSVに比べて、アプリケーションAPPを効率的にサーバSVに配備することができる。
図22は、情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理システムの制御プログラムの別の実施形態におけるサーバに配備されたアプリケーションの一例を示す。図1から図16で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図22に示す情報処理システムSYS7は、各サーバSVのCPUが仮想マシンVMを起動し、仮想マシンVMによりソフトウェアSWを実行する。また、情報処理システムSYS7は、管理サーバMSVによるアプリケーションAPPの配備の制御が、図3に示す管理サーバMSVによるアプリケーションAPPの配備の制御と異なる。情報処理システムSYS7の他の要素は、図3に示す情報処理システムSYS2、図17に示す情報処理システムSYS3、図18に示す情報処理システムSYS4、図20に示す情報処理システムSYS5、図21に示す情報処理システムSYS6と同様である。
図22において、ソフトウェアSW、仮想マシンVMおよびIPコアIPの末尾に示す数字は、互いの対応関係を示す。例えば、ソフトウェアSW1とIPコアIP1とは1つのアプリケーションAPPに含まれ、ソフトウェアSW1は、仮想マシンVM1により実行される。太い実線で示すソフトウェアSW9とIPコアIP9、および太い点線で示すソフトウェアSW10とIPコアIP10は、図8と同様に、2個のサーバSVに跨って配備されることを示す。
情報処理システムSYS7の管理サーバMSVは、図9と同様の管理テーブルMTBLを有する。但し、管理テーブルMTBLは、各サーバSVにおける仮想マシンVM毎に、仮想マシンVMの使用/未使用を示す情報を格納するフラグ領域FLGと、動作させるソフトウェアSWの名称を示す情報を格納するSW名領域と有する。ソフトウェアSWを仮想マシンVM毎に割り当てることで、簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。
図23は、図22に示すアプリケーションAPPが配備された状態の一例を示す。図13と同じ要素については、詳細な説明は省略する。図23は、網掛けで示すアプリケーションAPP9(SW9、IP9)およびアプリケーションAPP10(SW10、IP10)が、新たに配備された状態を示す。
図22に示す情報処理システムSYS7では、管理サーバMSVは、CPUの稼働率に基づいて、仮想マシンVMによりソフトウェアSWを実行するサーバSVを決定する。例えば、管理サーバMSVは、新たに仮想マシンVMを起動してソフトウェアSWを実行した場合のCPUの稼働率が95%以下であると予測される場合、仮想マシンVMを起動してソフトウェアSWを実行可能と判断する。また、管理サーバMSVは、ユーザロジック部ULGの使用率に基づいて、IPコアIPを搭載するユーザロジック部ULGを決定する。例えば、管理サーバMSVは、新たなIPコアIPをプログラムした場合のユーザロジック部ULGの使用率100%以下であると予測される場合、IPコアIPをプログラム可能と判断する。
図23に示す例では、管理サーバMSVは、端末装置TMから配備を要求されたアプリケーションAPP9のソフトウェアSW9を、サーバSV00のCPUで実行した場合、CPUの稼働率が95%以下であると予測する。一方、管理サーバMSVは、ソフトウェアSW9を、サーバSV11またはサーバSV22のCPUで実行した場合、CPUの稼働率が95%を超えると予測する。このため、管理サーバMSVは、サーバSV00のCPU上に仮想マシンVMを起動し、起動した仮想マシンVMにソフトウェアSW9を実行させる。同様に、管理サーバMSVは、ソフトウェアSW10を、ソフトウェアSW9を実行中のサーバSV00のCPU上に新たに起動した仮想マシンVMで実行させる。
また、管理サーバMSVは、端末装置TMから配備を要求されたアプリケーションAPP9のIPコアIP9を、サーバSV00のユーザロジック部ULGにプログラムした場合、ユーザロジック部ULGの使用率が100%を超えると予測する。一方、管理サーバMSVは、IPコアIP9をサーバSV11またはサーバSV22のユーザロジック部ULGにプログラムした場合、ユーザロジック部ULGの使用率が100%以下であると予測する。このため、管理サーバMSVは、IPコアIP9をサーバSV11のユーザロジック部ULGにプログラムする。また、管理サーバMSVは、IPコアIP9のプログラム後、IPコアIP10をサーバSV22のユーザロジック部ULGにプログラムする。
なお、管理サーバMSVは、図12および図13に示すように、未使用の機能ブロックBLKの数に応じて、IPコアIPをユーザロジック部ULGにプログラムしてもよい。
図24は、図22に示す情報処理システムSYS7の管理サーバMSVが実行するアプリケーションAPPの配備処理の一例を示す。図16と同じ処理については、詳細な説明は省略する。
図24に示す動作は、図22に示す情報処理システムSYS7が実行する制御プログラムにより実現される。すなわち、図24は、情報処理システムSYS7の制御方法および情報処理システムSYS7の制御プログラムの一例を示す。また、図22に示す情報処理システムSYS7の管理サーバMSVは、図15に示す処理を実行し、図15に示すステップS100の代わりに、図24に示すステップS200の処理を実行する。
まず、ステップS210において、管理サーバMSVは、各サーバSVにおけるCPUの稼働率とユーザロジック部ULGの使用率とを検出する。
次に、ステップS220において、図16に示すステップS120と同様に、管理サーバMSVは、アプリケーションAPP(SW、IP)を1つのサーバSVに配備可能か否かを判定する。ソフトウェアSWとIPコアIPとを1つのサーバSVに配備可能な場合、処理はステップS230に移行され、ソフトウェアSWとIPコアIPとを互いに異なるサーバSVに配備する場合、処理はステップS250に移行される。
ステップS230において、管理サーバMSVは、ステップS220で判定したサーバSVのCPUに仮想マシンVMを起動し、ステップS220で判定したサーバSVのHDDに、新たに配備するアプリケーションAPPのソフトウェアSWをインストールする。
次に、ステップS240において、管理サーバMSVは、ステップS220で判定したサーバSVのユーザロジック部ULGにIPコアIPをプログラムする。これにより、新たに配備したアプリケーションAPPの情報処理システムSYS7上での動作が可能になる。
一方、ソフトウェアSWとIPコアIPとを異なるサーバSVに配備する場合、ステップS250において、管理サーバMSVは、ソフトウェアSWを動作可能なCPUが存在するか否かを判定する。すなわち、管理サーバMSVは、新たに配備するアプリケーションAPPのソフトウェアSWをCPUの仮想マシンVM上で実行する場合にも、CPUの稼働率が95%以下になるか否かを判定する。ソフトウェアSWを動作可能なCPUが存在する場合、処理はステップS260に移行され、ソフトウェアSWを動作可能なCPUが存在しない場合、アプリケーションAPPの配備が困難なため、処理は終了する。
ステップS260において、管理サーバMSVは、IPコアIPをプログラム可能なユーザロジック部ULGが存在するか否かを判定する。すなわち、管理サーバMSVは、新たに配備するアプリケーションAPPのIPコアIPをユーザロジック部ULGにプログラムする場合にも、ユーザロジック部ULGの使用率が100%以下になるか否かを判定する。IPコアIPをプログラム可能なユーザロジック部ULGが存在する場合、処理はステップS270に移行され、IPコアIPをプログラム可能なユーザロジック部ULGが存在しない場合、アプリケーションAPPの配備が困難なため、処理は終了する。
ステップS270において、管理サーバMSVは、ステップS250で判定したソフトウェアSWを動作可能なCPUのうち、ソフトウェアSWを実行させるCPUに仮想マシンVMを起動する。また、管理サーバMSVは、仮想マシンVMを起動したサーバSVのHDDに、新たに配備するアプリケーションAPPのソフトウェアSWをインストールする。
次に、ステップS280において、管理サーバMSVは、ステップS260で判定したIPコアIPをプログラム可能なユーザロジック部ULGのいずかにIPコアIPをプログラムする。
次に、ステップS290において、管理サーバMSVは、新たに配備したアプリケーションAPP(SW、IP)に基づいて、図11に示すIDマッピングテーブルIDMTBLの対応テーブルTBLA、TBLBを更新し、処理を終了する。
以上、図22から図24に示す実施形態においても、図1から図21に示す実施形態と同様の効果を得ることができる。例えば、CPUが実行するソフトウェアSWの処理性能を低下させることなく、ソフトウェアSWとIPコアIPとを複数のサーバSVに配備することができる。また、各サーバSVにルータ部RTを設け、ルータ部RT間を相互に接続することで、ソフトウェアSWとIPコアIPとを複数のサーバSVに分散させて効率的に配備することが可能になり、情報処理システムSYS7の性能を向上することができる。
ルータ部RTをFPGAに再構成可能に搭載することで、ルータ部RTとユーザロジック部ULGとの間の情報の転送を高速に実行することができる。図11に示すIDマッピングテーブルIDMTBLにより、ソフトウェアSWを実行する仮想マシンVMとIPコアIPとの間で、情報を確実に転送することができる。既存のアプリケーションAPP(SW、IP)をそのまま使用して、クラウドサービスを提供することができる。各サーバSVのハードウェア構成が変更される場合にも、管理テーブルMTBLとルーティングテーブルRTBLとを変更することで、情報処理システムSYS7の運用を継続することができる。
さらに、図22から図24に示す実施形態では、ソフトウェアSWを仮想マシンVM毎に割り当てることで、簡易な管理テーブルMTBLにより、管理サーバMSVによるアプリケーションAPPの配備を管理することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。