(57)【要約】【課題】利用者の処理環境を安定させること。【解決手段】制御部１０６は、受け付け部１０５が受け付けたアクセス要求が示すアクセス先が記憶領域１１２−１である場合、アクセス要求に基づくアクセスをアクセス部１０４に実行させる。例えば、制御部１０６は、ユーザモジュール１０２−１から０〜１００番が示す記憶領域１１２−１へのアクセス要求に基づくアクセスをアクセス部１０４に実行させる。制御部１０６は、割り当てられた記憶領域１１２−１でない場合、アクセス要求に基づくアクセスをアクセス部１０４に実行させない。例えば、制御部１０６は、ユーザモジュール１０２−１から３００〜４００番が示す記憶領域１１２−２へのアクセス要求に基づくアクセスをアクセス部１０４に実行させない。【選択図】図１
2014230174.tif 000002
【特許請求の範囲】
【請求項１】
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、
前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部と、
前記部分回路のうちのいずれかからのアクセス要求を受け付ける受け付け部と、
前記受け付け部が受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない制御部と、
を有することを特徴とする集積回路。
【請求項２】
前記制御部は、割り当てられた前記記憶領域である場合において、前記部分回路のうちの前記要求元の部分回路（以下、「第１部分回路」と称する。）と異なる第２部分回路からのアクセス要求に基づくアクセスを前記アクセス部に実行させている場合、前記第２部分回路からの前記アクセス要求に基づくアクセスが終了した後に、前記第１部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させることを特徴とする請求項１に記載の集積回路。
【請求項３】
前記第１部分回路からの前記アクセス要求に基づく前記アクセス部による所定時間当たりの第１データ量と、前記第２部分回路からの前記アクセス要求に基づく前記アクセス部による前記所定時間当たりの第２データ量と、を計測する計測部を有し、
前記制御部は、前記計測部が計測した前記第１データ量と、前記計測部が計測した前記第２データ量と、に基づいて、前記第１部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第１状態と、前記第２部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第２状態と、を切り替えることを特徴とする請求項２に記載の集積回路。
【請求項４】
前記制御部は、前記第１データ量と前記第１部分回路についての閾値との比較結果と、前記第２データ量と前記第２部分回路についての閾値との比較結果と、に基づいて、前記第１状態と、前記第２状態と、を切り替えることを特徴とする請求項３に記載の集積回路。
【請求項５】
前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする請求項１〜４のいずれか一つに記載の集積回路。
【請求項６】
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置であって、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付ける受け付け部と、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御を行う制御部と、
を有することを特徴とする制御装置。
【請求項７】
前記制御部は、構成された前記領域である場合において、前記コンピュータのうちの前記要求元のコンピュータ（以下、「第１コンピュータ」と称する。）と異なる第２コンピュータからのアクセス要求に基づくアクセスを実行している場合、前記第２コンピュータからの前記アクセス要求に基づくアクセスが終了した後に、前記第１コンピュータからの前記アクセス要求に基づくアクセスを実行することを特徴とする請求項６に記載の制御装置。
【請求項８】
前記第１コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第１データ量と、前記第２コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第２データ量と、を計測する計測部を有し、
前記制御部は、前記第２コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第１データ量と、前記計測部が計測した前記第２データ量と、に基づいて、前記第１コンピュータからの前記アクセス要求に基づくアクセスを実行する第１状態と、前記第２コンピュータからの前記アクセス要求に基づくアクセスを実行する第２状態と、を切り替えることを特徴とする請求項７に記載の制御装置。
【請求項９】
前記制御部は、前記第１データ量と前記第１コンピュータについての閾値との比較結果と、前記第２データ量と前記第２コンピュータについての閾値との比較結果と、に基づいて、前記第１状態と前記第２状態とを切り替えることを特徴とする請求項８に記載の制御装置。
【請求項１０】
前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする請求項６〜９のいずれか一つに記載の制御装置。
【請求項１１】
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部を有する集積回路が、
前記部分回路のうちのいずれかからのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない、
処理を実行することを特徴とする制御方法。
【請求項１２】
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置が、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行することを特徴とする制御方法。
【請求項１３】
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路、制御装置、制御方法、および制御プログラムに関する。
【背景技術】
【０００２】
従来、サーバに複数のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が接続されることにより、複数の利用者がサーバを介して複数のＦＰＧＡを利用可能となる技術がある（例えば、下記特許文献１参照。）。例えば、サーバは、利用者が利用中のＦＰＧＡを他の利用者によって利用させないように制御する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７３７６９１７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数の利用者が同一のＦＰＧＡを共同で利用すると、ＦＰＧＡを介して利用者の記憶領域へのアクセスを行う場合に利用者間の干渉が生じる場合がある。このため、利用者の処理環境が不安定になるという問題点がある。
【０００５】
１つの側面では、本発明は、利用者の処理環境を安定させることができる集積回路、制御装置、制御方法、および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一の側面によれば、集積回路は、内部の回路を再構成可能であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成される。部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能であり、前記部分回路のうちのいずれかからのアクセス要求を受け付け、受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスをアクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない集積回路、および制御方法が提案される。
【０００７】
本発明の他の側面によれば、制御装置は、内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続される。複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御装置、制御方法、および制御プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、利用者の処理環境を安定させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態にかかるシステムの動作例１を示す説明図である。
【図２】図２は、本実施の形態にかかるシステムの動作例２を示す説明図である。
【図３】図３は、システムの詳細例を示す説明図である。
【図４】図４は、端末とサーバのハードウェア構成例を示すブロック図である。
【図５】図５は、サーバによるソフトウェアの実行例を示す説明図である。
【図６】図６は、システムの利用開始時のフロー例を示す説明図である。
【図７】図７は、開発システム例を示す説明図である。
【図８】図８は、仮想マシン生成プログラムを実行するサーバによる生成処理手順例を示すフローチャートである。
【図９】図９は、運用時のサーバによる初期設定処理手順例を示すフローチャートである。
【図１０】図１０は、受け入れ検査プログラムを実行するサーバのデータフロー例を示す説明図である。
【図１１】図１１は、サーバの機能的構成例を示すブロック図である。
【図１２】図１２は、メモリアロケーション例を示す説明図である。
【図１３】図１３は、各ユーザモジュールに割り当てられた記憶領域の詳細例を示す説明図である。
【図１４】図１４は、ＦＰＧＡに構成された各ユーザモジュール例を示すブロック図である。
【図１５】図１５は、アクセス許可設定レジスタの設定例を示す説明図である。
【図１６】図１６は、ユーザモジュールとポートの対応例を示す説明図である。
【図１７】図１７は、デバイスドライバが有するテーブル例を示す説明図である。
【図１８】図１８は、仮想マシンからユーザモジュールへのアクセス例を示す説明図である。
【図１９】図１９は、ユーザモジュールからサーバ内のメモリへのアクセス例を示す説明図である。
【図２０】図２０は、アドレス判断処理の詳細例を示す説明図である。
【図２１】図２１は、データ量制限処理の詳細例を示す説明図である。
【発明を実施するための形態】
【００１０】
本実施の形態では、複数の利用者が異なる回路を同一のＦＰＧＡ内に構成させる。また、本実施の形態では、複数の利用者の各々に割り当てられたコンピュータは、制御装置であるサーバを介してＦＰＧＡにアクセスする。
【００１１】
また、複数の利用者が同一のＦＰＧＡを共同で利用すると、ＦＰＧＡを介して利用者の記憶領域へのアクセスを行う場合に、ＦＰＧＡはサーバなどのコンピュータバスに接続されるため、いずれの利用者の記憶領域であってもアクセス可能である。そのため、利用者間の干渉が生じる場合がある。本実施の形態では、ＦＰＧＡを介して利用者の記憶領域へのアクセスを行う場合に、異なる利用者の記憶領域へアクセスさせないようにＦＰＧＡ内の管理モジュールが制御する。
【００１２】
また、複数の利用者が同一のＦＰＧＡを共同で利用すると、複数の利用者がＦＰＧＡへのアクセスを行う場合に、利用者がＦＰＧＡ内の異なる利用者の回路にアクセス可能であるため、利用者間の干渉が生じる場合がある。本実施の形態では、利用者がＦＰＧＡへのアクセスを行う場合に、異なる利用者の回路にアクセスさせないようにサーバが制御する。
【００１３】
以下に添付図面を参照して、本発明にかかる集積回路、制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。
【００１４】
図１は、本実施の形態にかかるシステムの動作例１を示す説明図である。システム１００は、サーバ１１１と、複数の利用者の各々に割り当てられたコンピュータ１２１と、サーバ１１１に接続されたＦＰＧＡ１０１と、を有する。システム１００の詳細例は図３に示す。
【００１５】
サーバ１１１は、コンピュータ１２１からＦＰＧＡ１０１へのアクセスを制御可能な制御装置である。ＦＰＧＡ１０１は、内部の回路を再構成可能な集積回路である。図１の例では、ＦＰＧＡ１０１には、部分回路としてユーザモジュール１０２−１とユーザモジュール１０２−２と、管理モジュール１０３と、が構成されてある。例えば、ＦＰＧＡ１０１の内部の回路を最構成させるソフトウェアには、ＦＰＧＡ１０１内の許可された領域のみにユーザモジュール１０２を構成可能なパーシャルコンフィギュレーション機能がある。そのため、ＦＰＧＡ１０１には、ユーザモジュール１０２−１と、ユーザモジュール１０２−２と、管理モジュール１０３と、がそれぞれ異なる領域に構成可能である。例えば、ユーザモジュール１０２−１は、コンピュータ１２１−１に割り当てられてあり、コンピュータ１２１−１がアクセス可能である。例えば、ユーザモジュール１０２−２は、コンピュータ１２１−２に割り当てられてあり、コンピュータ１２１−２がアクセス可能である。例えば、コンピュータ１２１−１と、コンピュータ１２１−２と、は利用者がそれぞれ異なる。複数の利用者の各々に割り当てられたコンピュータ１２１は、図１に示すように物理的な装置であってもよいし、サーバ１１１上に構築された仮想マシンであってもよい。
【００１６】
管理モジュール１０３は、アクセス部１０４と、受け付け部１０５と、制御部１０６と、を有する。アクセス部１０４は、ユーザモジュール１０２の各々に割り当てられた異なる記憶領域１１２の各々にアクセス可能である。アクセス部１０４は、例えば、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を有する。受け付け部１０５は、ユーザモジュール１０２−１とユーザモジュール１０２−２とのうちのいずれかからのアクセス要求を受け付ける。図１の例では、受け付け部１０５は、ユーザモジュール１０２−１からのアクセス要求を受け付ける。アクセス部１０４がＤＭＡ機能を実現する場合、具体的にアクセス要求は、ＤＭＡのパラメータを有する。ＤＭＡのパラメータは、例えば、転送方向、転送先アドレス、転送元アドレス、データ長、を有する。転送方向は、ＦＰＧＡ１０１からサーバ１１１へ、またはサーバ１１１からＦＰＧＡ１０１へのいずれかである。
【００１７】
例えば、制御部１０６は記憶部１０７を有する。記憶部１０７には、各ユーザモジュール１０２の各々について、ユーザモジュール１０２に割り当てられた記憶領域１１２を示す情報を記憶する。記憶領域１１２は、ＦＰＧＡ１０１に接続されたサーバ１１１内のメモリの領域であってもよい。記憶領域１１２を示す情報は、例えば、記憶領域１１２を示すアドレスである。または、コンピュータ１２１−１およびコンピュータ１２１−２が物理的なコンピュータ１２１である場合に、記憶領域１１２は、各コンピュータ１２１に設けられたメモリの領域であってもよい。記憶領域１１２を示す情報は、例えば、記憶装置のアドレスである。例えば、ユーザモジュール１０２−１については、０〜１００番が示す記憶領域１１２−１であり、ユーザモジュール１０２−２については、３００〜４００番が示す記憶領域１１２−２である。
【００１８】
制御部１０６は、受け付け部１０５が受け付けたアクセス要求が示すアクセス先が記憶領域１１２−１である場合、アクセス要求に基づくアクセスをアクセス部１０４に実行させる。例えば、制御部１０６は、ユーザモジュール１０２−１から０〜１００番が示す記憶領域１１２−１へのアクセス要求に基づくアクセスをアクセス部１０４に実行させる。
【００１９】
一方、制御部１０６は、割り当てられた記憶領域１１２−１でない場合、アクセス要求に基づくアクセスをアクセス部１０４に実行させない。例えば、制御部１０６は、ユーザモジュール１０２−１から３００〜４００番が示す記憶領域１１２−２へのアクセス要求に基づくアクセスをアクセス部１０４に実行させない。
【００２０】
図１に示したように、ある利用者が利用可能なＦＰＧＡ１０１内の回路から、他の利用者が利用可能な該ＦＰＧＡ１０１内の他の回路に割り当てられた記憶領域へアクセスさせない。これにより、他の利用者の記憶領域がある利用者が利用可能な回路に干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【００２１】
図２は、本実施の形態にかかるシステムの動作例２を示す説明図である。システム１００は、図１と同様の例を用いるため、詳細な説明を省略する。サーバ１１１は、受け付け部２１１と、制御部２１２と、を有する。
【００２２】
受け付け部２１１は、複数のコンピュータ１２１のうちのいずれかからＦＰＧＡ１０１へのアクセス要求を受け付ける。図２の例では、制御部２１２は、コンピュータ１２１−１からのアクセス要求を受け付ける。
【００２３】
制御部２１２は、記憶部２１３を有する。記憶部２１３は、複数のコンピュータ１２１の各々について、コンピュータ１２１に割り当てられたユーザモジュール１０２が構成された記憶領域２０１を示す情報を記憶する。例えば、ユーザモジュール１０２が構成された領域を示す情報は、ＦＰＧＡ１０１が有するメモリのうち、ユーザモジュール１０２内のメモリが構成された記憶領域２０１を示すアドレスである。
【００２４】
制御部２１２は、記憶部２１３の記憶内容に基づいて、受け付けたアクセス要求が示すアクセス先が、アクセス要求の要求元のコンピュータ１２１に割り当てられたユーザモジュール１０２が構成された領域である場合、アクセス要求に基づくアクセスを実行する。制御部２１２は、例えば、コンピュータ１２１−１からＦＰＧＡ１０１内のメモリの０〜１００番が示す記憶領域２０１−１へのアクセス要求に基づくアクセスを実行する。
【００２５】
一方、制御部２１２は、記憶部２１３の記憶内容に基づいて、要求元のコンピュータ１２１に割り当てられたユーザモジュール１０２が構成された領域でない場合、アクセス要求に基づくアクセスを実行しない。制御部２１２は、例えば、コンピュータ１２１−１からＦＰＧＡ１０１内のメモリの３００〜４００番が示す記憶領域２０１−２へのアクセス要求に基づくアクセスを実行しない。
【００２６】
図２に示したように、ＦＰＧＡ１０１は、ある利用者から他の利用者に割り当てられた該ＦＰＧＡ１０１内のユーザモジュール１０２へアクセスさせない。これにより、他の利用者に割り当てられたＦＰＧＡ１０１内のユーザモジュールがある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【００２７】
図３は、システムの詳細例を示す説明図である。システム１００では、複数の利用者がデータセンタ３０１にあるサーバに接続されたＦＰＧＡ１０１を利用して所望の回路を実現する。システム１００は、端末３０２と、データセンタ３０１と、を有する。データセンタ３０１には、複数のサーバがある。
【００２８】
端末３０２は利用者が直接操作可能な装置であり、図３の例では、利用者が２人であるため、端末３０２−１と端末３０２−２を示す。端末３０２は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やワークステーションである。
【００２９】
また、具体的に、データセンタ３０１には、例えば、ＦＰＧＡ１０１にプログラムさせるためのコンフィギュレーションデータを生成するための開発システム３０３用のサーバ３０４−１，３０４−２がある。また、データセンタ３０１には、コンフィギュレーションデータがプログラムされることにより内部の回路が構成される当該ＦＰＧＡ１０１に接続されたサーバ１１１がある。開発システム３０３と、サーバ１１１とは、想定される利用者の総数に応じて複数用意される。
【００３０】
また、データセンタ３０１には、サーバプールデータベース３３２とＦＰＧＡデータベース３３１などを記憶するデータベースサーバ３０６がある。サーバプールデータベース３３２用のデータベースサーバ３０６と、ＦＰＧＡデータベース３３１用のデータベースサーバ３０６と、に分けて用意されてもよい。
【００３１】
また、データセンタ３０１には、後述する仮想マシン生成プログラム３２１を実行するサーバ３０５と、後述する受け入れ検査プログラム３２２を実行するサーバ３０７と、がある。また、データセンタ３０１には、本実施の形態にかかるシステム１００の全体を制御する全体制御プログラム３２３を実行する制御用のサーバ３０８がある。また、データセンタ３０１には、一般的な運用管理用のサーバ３０９がある。
【００３２】
ここで、図１、図２に示したコンピュータ１２１は、端末３０２であっても、仮想マシンＶＭであってもよいが、本実施の形態では、仮想マシンＶＭを例に挙げる。仮想マシンＶＭを利用することにより、通信に要する時間を短縮させることができる。各利用者は、所望のユーザモジュール１０２をサーバ１１１に接続されたＦＰＧＡ１０１によって構成させ、当該サーバ１１１上で仮想マシンＶＭを構築させる。これにより、各利用者は、サーバ１１１が実現する仮想マシンＶＭ上で実行されるアプリケーションソフトウェアと、ＦＰＧＡ１０１に構成されたユーザモジュール１０２と、の間でやり取りを行わせることができる。図３の例では、サーバ１１１は、端末３０２−１に割り当てられた仮想マシンＶＭ１と、端末３０２−２に割り当てられた仮想マシンＶＭ２と、を構築する。仮想マシンＶＭ１はユーザモジュール１０２−１に割り当てられ、仮想マシンＶＭ２はユーザモジュール１０２−２に割り当てられる。
【００３３】
図４は、端末とサーバのハードウェア構成例を示すブロック図である。サーバ１１１は、例えば、ＣＰＵ４１１と、メモリ４１２と、ディスク４１３と、ディスクドライブ４１４と、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）４１５と、ネットワークインターフェース４１６と、を有する。
【００３４】
また、サーバ１１１は、ＰＣＩｅ４１５によってＦＰＧＡ１０１を搭載した拡張ボード４０１と、接続される。ＰＣＩｅ４１５は、インターフェースの一種である。拡張ボード４０１は、例えば、ＦＰＧＡ１０１と、ＦＰＧＡ１０１の外部のメモリ４０２と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インターフェース４０３と、などを有する。また、サーバ１１１は、ネットワークインターフェース４１６によってネットワークＮＥＴを介して利用者が直接操作可能な端末３０２と接続される。
【００３５】
まず、ＣＰＵ４１１は、サーバ１１１の全体の制御を司る。メモリ４１２は、ＣＰＵ４１１のワークエリアとして使用される記憶部である。メモリ４１２としては、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などが挙げられる。ディスクドライブ４１４は、ＣＰＵ４１１の制御にしたがってディスク４１３に対するデータのリード／ライトを制御する。ディスク４１３は、ディスクドライブ４１４の制御で書き込まれたデータを記憶する記憶部である。ディスク４１３としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００３６】
ネットワークインターフェース４１６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、ネットワークインターフェース４１６は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。ネットワークインターフェース４１６には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００３７】
また、データセンタ３０１内の各種サーバは、サーバ１１１と同様のハードウェア構成とする。
【００３８】
また、端末３０２は、例えば、ＰＣやワークステーションなどが挙げられる。端末３０２は、例えば、ＣＰＵ４２１と、メモリ４２２と、ディスク４２３と、ディスクドライブ４２４と、入力装置４２５と、出力装置４２６と、ネットワークインターフェース４２７と、を有する。
【００３９】
ＣＰＵ４２１は、端末３０２の全体の制御を司る。メモリ４２２は、ＣＰＵ４２１のワークエリアとして使用される記憶部である。ディスクドライブ４２４は、ＣＰＵ４２１の制御にしたがってディスク４２３に対するデータのリード／ライトを制御する。ディスク４２３は、ディスクドライブ４２４の制御で書き込まれたデータを記憶する。ディスク４２３としては、磁気ディスク、光ディスクなどが挙げられる。
【００４０】
ネットワークインターフェース４２７は、通信回線を通じてＬＡＮ、ＷＡＮ、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、ネットワークインターフェース４２７は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。ネットワークインターフェース４２７には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４１】
入力装置４２５は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置４２５は、カメラから画像や動画を取り込むこともできる。また、入力装置４２５は、マイクから音声を取り込むこともできる。出力装置４２６は、ＣＰＵ４２１の指示により、データを出力するインターフェースである。出力装置４２６には、ディスプレイやプリンタが挙げられる。
【００４２】
図５は、サーバによるソフトウェアの実行例を示す説明図である。サーバ１１１は、ディスク４１３などの記憶装置に記憶されたプログラムをＣＰＵ４１１がロードすることにより、ハイパーバイザＨＶと、管理ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）５０１−ｃを実行する仮想マシンＶＭｃとなどを実行する。例えば、サーバ１１１は、仮想マシンＶＭｃと、端末３０２の各々に割り当てられた仮想マシンＶＭｘ（図５中ｘ＝１，２）と、の各々を制御するハイパーバイザＨＶと、を実行する。
【００４３】
説明上仮想マシンＶＭ、ＯＳ５０１、アプリケーションソフトウェア５０３、デバイスドライバ５０２は、サーバ１１１によって実行されるものであるが、ここでは、説明上実行主体して記載する。仮想マシンＶＭｃは、管理ＯＳ５０１−ｃと、管理ＯＳ５０１−ｃに呼び出されるデバイスドライバ５０２−ｃと、管理ＯＳ５０１−ｃが実行するソフトウェア５０３−ｃと、を実行する。ソフトウェア５０３−ｃは、端末３０２に割り当てられた仮想マシンＶＭ全体を管理するプログラムである。デバイスドライバ５０２−ｃは、拡張ボード４０１を制御して、各アプリケーションソフトウェア５０３に対するインターフェースを提供するソフトウェアである。
【００４４】
端末３０２−ｘに各々割り当てられた仮想マシンＶＭｘは、それぞれＯＳ５０１−ｘを実行する。また、仮想マシンＶＭｘは、それぞれＯＳ５０１−ｘに呼び出されるデバイスドライバ５０２−ｘと、ＯＳ５０１−ｘが実行するアプリケーションソフトウェア５０３−ｘと、を実行する。デバイスドライバ５０２−ｘは、仮想マシンＶＭｘの各々に割り当てられたＦＰＧＡ１０１内のユーザモジュール１０２−ｘへのアクセスを制御する。
【００４５】
（利用開始時）
図６は、システムの利用開始時のフロー例を示す説明図である。全体制御プログラム３２３を実行するサーバ３０８は、開発システム３０３やサーバ３０５やサーバ３０７やサーバ１１１などを制御することにより、全体を制御する。全体制御プログラム３２３は、制御用のサーバ３０８内のディスク４１３などの記憶装置に記憶され、サーバ３０８内のＣＰＵ４１１は、記憶装置から全体制御プログラム３２３を読み出して実行する。これにより、全体制御プログラム３２３にコーディングされた機能が実現される。具体的には、サーバ３０８は、各利用者からの指示に応じて開発システム３０３を利用者が操作可能なように割り当てる。また、当該サーバ３０８は、受け入れ検査プログラム３２２を実行するサーバ３０７や仮想マシン生成プログラム３２１を実行するサーバ３０５に処理を依頼するなどの全体の制御を行う。
【００４６】
各利用者は、開発システム３０３によって、ＦＰＧＡ１０１上で動作するユーザモジュール１０２を設計する。開発システム３０３は、利用者によって設計されたユーザモジュール１０２を示すコンフィギュレーションデータを生成する。
【００４７】
また、サーバ３０５は、仮想マシン仕様定義ファイル６１１と、サーバプールデータベース３３２に登録された仮想マシンＶＭと、によって、仮想マシンＶＭを配置可能なサーバ１１１を決定する。仮想マシン仕様定義ファイル６１１は、仮想マシンＶＭの仕様を示す情報、コンフィギュレーションデータを示す識別情報などを有する。仮想マシンＶＭの仕様を示す情報は、ＣＰＵ、メモリ、ディスク、ネットワークインターフェースなどの仕様を示す。利用者は、仮想マシンの仕様を決定し、仮想マシン仕様定義ファイル６１１をデータセンタ３０１へ端末３０２を介して入力する。また、サーバ３０７は、利用者によって設計されたユーザモジュール１０２が、決定したサーバ１１１に接続された拡張ボード４０１のＦＰＧＡ１０１に構成可能か否かを判断する。
【００４８】
図７は、開発システム例を示す説明図である。データセンタ３０１には、拡張ボード７０４に接続されたサーバ３０４−１と、ＦＰＧＡ開発ソフトウェア７０３を実行中のサーバ３０４−２と、ゲートウェイ７０１と、がある。拡張ボード７０４は、拡張ボード４０１と同様のボードとする。
【００４９】
ＦＰＧＡプログラミングケーブル７０５は、サーバ３０４−２と拡張ボード７０４とを接続する。拡張ボード７０４には、管理モジュール１０３が予め構成されてあってもよい。ＦＰＧＡプログラミングケーブル７０５は、ＪＴＡＧによってサーバ３０４−２が設計したユーザモジュール１０２を示すコンフィギュレーションデータを拡張ボード７０４に書き込むことができる。また、ＦＰＧＡプログラミングケーブル７０５は、ＦＰＧＡ１０１内の内部状態を参照または変更することができる。端末３０２はネットワークＮＥＴを介してデータセンタ３０１のゲートウェイ７０１に接続される。利用者は、端末３０２を介してサーバ３０４−２が実行中のＦＰＧＡ開発ソフトウェア７０３によってユーザモジュール１０２の設計やデバッグを行う。また、サーバ３０４−２については、サーバ３０４−１上に仮想マシンＶＭとして構築されてもよい。
【００５０】
利用者は、ＪＴＡＧによって、拡張ボード７０４のＦＰＧＡ１０１内部全体にアクセス可能となるため、開発システム３０３については、全体制御プログラム３２３を実行するサーバ３０８によって、複数の利用者が同時に利用しないように制限されてもよい。そのため、開発システム３０３については、想定される利用者の数に応じて複数用意される。
【００５１】
また、利用者がサーバ３０４−１を占有する場合、開発システム３０３にリモート制御７０２の機能が用意され、サーバ３０４−１の電源オンまたは電源オフ、リセット、コンソールアクセスなどが可能な仕組みが用意される。
【００５２】
図８は、仮想マシン生成プログラムを実行するサーバによる生成処理手順例を示すフローチャートである。仮想マシン生成プログラム３２１は、例えば、サーバ３０５内のディスク４１３などの記憶装置に記憶され、サーバ３０５内のＣＰＵ４１１が、記憶装置から仮想マシン生成プログラム３２１を読み出して実行する。これにより、仮想マシン生成プログラム３２１にコーディングされた機能が実現される。
【００５３】
まず、サーバ３０５は、仮想マシン仕様定義ファイル６１１と、コンフィギュレーションデータ８０２と、を受け付ける（ステップＳ８０１）。上述したように、仮想マシン仕様定義ファイル６１１は、仮想マシンＶＭの仕様を示す情報、コンフィギュレーションデータ８０２を示す識別情報などを有する。
【００５４】
つぎに、サーバ３０５は、サーバプールデータベース３３２を検索して、仮想マシン仕様定義ファイル６１１が示す仮想マシンＶＭを配置可能なサーバ１１１を特定する（ステップＳ８０２）。そして、サーバ３０５は、特定したサーバ１１１の中に未選択のサーバ３０５があるか否かを判断する（ステップＳ８０３）。サーバプールデータベース３３２には、運用時に使用される各サーバ１１１にどのような仮想マシンＶＭが動作中であるかを示す情報と、各仮想マシンＶＭに割り当てられたリソース情報などが記憶される。ここでの割り当てられたリソース情報には、各仮想マシンＶＭに割り当てられたサーバ１１１内のＣＰＵ、メモリ４１２内の記憶領域、ディスク４１３内の記憶領域などを示す情報が含まれる。また、リソース情報は、サーバ３０５に接続されたＦＰＧＡ１０１にどのユーザモジュール１０２が構成されたかを示す情報が含まれる。
【００５５】
未選択のサーバ１１１がある場合（ステップＳ８０３：Ｙｅｓ）、サーバ３０５は、未選択のサーバ１１１から１つのサーバ１１１を選択する（ステップＳ８０４）。サーバ３０５は、ＦＰＧＡデータベース３３１を検索して、選択したサーバ１１１に接続された拡張ボード４０１のＦＰＧＡ１０１を利用可能か確認する（ステップＳ８０５）。サーバ３０５は、ＦＰＧＡ１０１を利用可能か否か判断する（ステップＳ８０６）。利用可能でない場合（ステップＳ８０６：Ｎｏ）、サーバ３０５は、ステップＳ８０３へ戻る。
【００５６】
利用可能である場合（ステップＳ８０６：Ｙｅｓ）、サーバ３０５は、ステップＳ８０７へ移行する。サーバ３０５は、開発システム３０３からのコンフィギュレーションデータ８０２に基づいて、ＦＰＧＡ１０１設計ツールを用いてユーザモジュール１０２をレイアウトする。そして、サーバ３０５は、選択したサーバ１１１に接続されたＦＰＧＡ１０１に書き込むコンフィギュレーションデータ８０３を生成する（ステップＳ８０７）。つぎに、サーバ３０５は、仮想マシン定義ファイル８０４を生成し（ステップＳ８０８）、サーバ３０５は、選択したサーバ１１１に仮想マシン定義ファイル８０４を転送し（ステップＳ８０９）、一連の処理を終了する。仮想マシン定義ファイル８０４は、仮想マシンＶＭの仕様を示す情報、仮想マシンＶＭに含まれるメモリやディスクなどのディスクイメージ、ステップＳ８０７によって生成されたコンフィギュレーションデータ８０３などが含まれる。
【００５７】
ステップＳ８０３において、未選択のサーバ１１１がない場合（ステップＳ８０３：Ｎｏ）、サーバ３０５は、エラーを出力し（ステップＳ８１０）、一連の処理を終了する。
【００５８】
図９は、運用時のサーバによる初期設定処理手順例を示すフローチャートである。サーバ１１１は、仮想マシン定義ファイル８０４を受け付けたか否かを判断する（ステップＳ９０１）。仮想マシン定義ファイル８０４を受け付けていない場合（ステップＳ９０１：Ｎｏ）、サーバ１１１は、ステップＳ９０１へ戻る。仮想マシン定義ファイル８０４を受け付けた場合（ステップＳ９０１：Ｙｅｓ）、サーバ１１１は、コンフィギュレーションデータ８０３が示すユーザモジュール１０２が許可された領域のみに再構成されるかを受け入れ検査プログラム３２２を実行するサーバ３０７に確認を依頼する（ステップＳ９０２）。
【００５９】
サーバ１１１は、再構成可能か否かを判断する（ステップＳ９０３）。再構成可能である場合（ステップＳ９０３：Ｙｅｓ）、サーバ１１１は、ハイパーバイザＨＶによって、仮想マシンＶＭを構築する（ステップＳ９０４）。サーバ１１１は、管理ＯＳ５０１−ｃによって、パーシャル・リコンフィギュレーション機能を用いてＦＰＧＡ１０１内にユーザモジュール１０２を構成する（ステップＳ９０５）。サーバ１１１は、管理ＯＳ５０１−ｃによって、ＦＰＧＡ１０１内の管理モジュール１０３にある後述するアクセス許可設定レジスタに、ユーザモジュールがアクセス可能なメモリ４１２の物理アドレス範囲を設定する（ステップＳ９０６）。
【００６０】
つぎに、サーバ１１１は、デバイスドライバ５０２によって、ＦＰＧＡ１０１内のあらたなユーザモジュール１０２を認識する（ステップＳ９０７）。そして、サーバ１１１は、ハイパーバイザＨＶによって、仮想マシンＶＭを起動し（ステップＳ９０８）、一連の処理を終了する。これにより、利用者が仮想マシンＶＭ上でアプリケーションソフトウェアを実行し、ＦＰＧＡ１０１に構成されたユーザモジュール１０２が利用可能となる。一方、ステップＳ９０３において、再構成可能でない場合（ステップＳ９０３：Ｎｏ）、サーバ１１１は、エラーを出力し（ステップＳ９０９）、一連の処理を終了する。
【００６１】
図１０は、受け入れ検査プログラムを実行するサーバのデータフロー例を示す説明図である。受け入れ検査プログラム３２２は、例えば、サーバ３０７内のディスク４１３などの記憶装置に記憶され、サーバ３０７内のＣＰＵ４１１が、記憶装置から受け入れ検査プログラム３２２を読み出して実行する。
【００６２】
サーバ３０７は、受け入れ検査プログラム３２２によって、コンフィギュレーションデータ８０３と、デバイス情報１００１と、を入力として受け付ける。デバイス情報１００１には、利用者がプログラミング可能なＦＰＧＡ１０１の領域の情報、デバイスがアドレス空間にマップする領域の情報などが含まれる。サーバ３０７は、受け入れ検査プログラム３２２によって、利用者によって設計されたユーザモジュール１０２をデータセンタ３０１にあるいずれのＦＰＧＡ１０１で構成可能かをＦＰＧＡデータベース３３１に基づいて判断する。また、サーバ３０７は、実際にサーバ３１１に接続されたえＦＰＧＡ１０１に書き込み、管理モジュール１０３、他のユーザモジュール１０２、などを領域が変更されていないかをＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）チェックサムなどによって確認してもよい。サーバ３０７は、受け入れ検査プログラム３２２によって、受け入れ可能なであると判断した場合にＦＰＧＡデータベース３３１に、検査結果を登録する。
【００６３】
例えば、検査結果として、１．コンフィギュレーションデータ８０３を示す識別情報、２．コンフィギュレーションデータ８０３、３．作成者の識別情報、４．利用許可情報、５．改変許可情報、６．デバイス種類情報がＦＰＧＡデータベース３３１へ登録される。作成者の識別情報としては、例えば、利用者の氏名情報であってもよいし、利用者が操作可能な端末３０２の識別情報であってもよい。利用許可情報は、いずれの利用者または端末３０２がコンフィギュレーションデータ８０３を使用可能であるかを示す情報である。利用許可情報によって、複数の利用者がコンフィギュレーションデータ８０３を共用することができ、複数の利用者が同一機能のユーザモジュール１０２を利用することができる。改変許可情報は、いずれの利用者または端末３０２がコンフィギュレーションデータ８０３を変更可能であるかを示す情報である。デバイス種類情報は、いずれの種類のＦＰＧＡ１０１であれば利用可能であるかを示す情報である。
【００６４】
（サーバ１１１の機能的構成例）
図１１は、サーバの機能的構成例を示すブロック図である。サーバ１１１は、受け付け部２１１と、制御部２１２と、計測部１１０１と、を有する。受け付け部２１１と制御部２１２と計測部１１０１は、例えば、管理ＯＳ５０１−ｃのデバイスドライバ５０２−ｃにコーディングされてあり、サーバ１１１が仮想マシンＶＭｃによって管理ＯＳ５０１−ｃを実行する。これにより、受け付け部２１１と制御部２１２と計測部１１０１とが実現される。
【００６５】
また、計測部１１０１については、サーバ１１１の機能でなく、管理モジュール１０３に設けられていてもよい。管理モジュール１０３に計測部１１０１が設けられる場合、制御部２１２は、管理モジュール１０３からデータ量を取得する機能を有する。
【００６６】
図１２は、メモリアロケーション例を示す説明図である。仮想マシン環境では、２段階のアドレス変換が行われる。仮想マシンＶＭｃには、仮想アドレス空間１２１１−ｃと、メモリ４１２やＦＰＧＡ１０１などの各種デバイスにアクセスするための物理アドレス空間１２１３と、が対応付けられる。仮想マシンＶＭｃの仮想アドレス空間１２１１−ｃには、例えば、管理ＯＳ５０１−ｃが使用するメモリのアドレス空間がある。管理ＯＳ５０１−ｃが使用するメモリには、例えば、論理アドレスを物理アドレスに変換するためのテーブル１２０１などが記憶される。仮想マシンＶＭｃの仮想アドレス空間１２１１−ｃには、例えば、各種デバイスドライバ５０２−ｃが使用するメモリと、ソフトウェア５０３−ｃが使用するメモリと、のそれぞれのアドレス空間がある。デバイスドライバ５０２−ｃが使用するメモリには、サーバ１１１が転送したデータ量を計測するための累積データ量カウンタが記憶される。この累積データ量カウンタが計測部１１０１である。
【００６７】
また、端末３０２−ｘに割り当てられた仮想マシンＶＭｘには、仮想アドレス空間１２１１−ｘと仮想マシンＶＭ−ｘに割り当てられたユーザモジュール１０２−ｘにアクセスするための物理アドレス空間１２１３とが対応付けられる。仮想マシンＶＭｘの仮想アドレス空間１２１１−ｘには、例えば、ＯＳ５０１−ｘが使用するメモリのアドレス空間がある。ＯＳ５０１−ｘが使用するメモリには、例えば、論理アドレスを物理アドレスに変換するためのテーブル１２０２がある。また、仮想マシンＶＭ−ｘの仮想アドレス空間１２１１−ｘには、ユーザモジュール１０２−ｘ用のデバイスドライバ５０２−ｘが使用するメモリのアドレス空間がある。また、仮想マシンＶＭｘの仮想アドレス空間１２１１−ｘには、アプリケーションソフトウェア５０３−ｘが使用するメモリの仮想アドレス空間がある。デバイスドライバ５０２−ｘが使用するメモリと、アプリケーションソフトウェア５０３−ｘが使用するメモリとは、例えば、バッファメモリ１２０３は、デバイスドライバ５０２−ｘがアプリケーションソフトウェア５０３−ｘが使用するメモリとのうちの少なくともいずれか一方にある。バッファメモリ１２０３は、ＦＰＧＡ１０１と、デバイスドライバ５０２−ｘまたはアプリケーションソフトウェア５０３−ｘと、の間でデータ転送するためのメモリである。
【００６８】
また、仮想アドレス空間１２１２は、ハイパーバイザＨＶのレベルで認識される。物理アドレス空間１２１３は、メモリ４１２内の各ＯＳ、デバイスドライバ５０２、アプリケーションの各々が使用する領域と、ＦＰＧＡ１０１内の各ユーザモジュール１０２が使用するメモリと、がある。ＣＰＵ４１１が有するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）は、各仮想マシンＶＭの仮想アドレス空間１２１１と、仮想アドレス空間１２１２と、の間のアドレス変換を行う。さらに、ＣＰＵ４１１が有するＭＭＵは、仮想アドレス空間１２１２と、物理アドレス空間１２１３と、の間のアドレス変換を行う。
【００６９】
図１３は、各ユーザモジュールに割り当てられた記憶領域の詳細例を示す説明図である。例えば、仮想アドレス空間１２１１における管理ＯＳ５０１−ｃが使用するためのＩ／Ｏメモリは、物理アドレス空間１２１３における記憶領域ａｃと、記憶領域ａｕ１と、記憶領域ａｕ２と、である。記憶領域ａｃは、管理モジュール１０３に割り当てられたメモリ４１２内の領域である。記憶領域ａｕ１は、ユーザモジュール１０２−１に割り当てられたメモリ４１２内の領域である。記憶領域ａｕ２は、ユーザモジュール１０２−２に割り当てられたメモリ４１２内の領域である。
【００７０】
仮想アドレス空間１２１１における仮想マシンＶＭ１が使用するメモリは、物理アドレス空間１２１３におけるメモリ４１２内の記憶領域ａ１である。仮想アドレス空間１２１１における仮想マシンＶＭ１が使用するＩ／Ｏメモリは、物理アドレス空間１２１３における記憶領域ａｕ１である。仮想アドレス空間１２１１における仮想マシンＶＭ２が使用するメモリは、物理アドレス空間１２１３におけるメモリ４１２内の記憶領域ａ２である。仮想アドレス空間１２１１における仮想マシンＶＭ２が使用するＩ／Ｏメモリは、物理アドレス空間１２１３における記憶領域ａｕ２である。
【００７１】
記憶領域ａｃを示すアドレス範囲は、ｅ０００００００〜ｅ００ｆｆｆｆｆである。記憶領域ａｕ１を示すアドレス範囲は、ｅ０１０００００〜ｅ０１ｆｆｆｆｆである。記憶領域ａｕ２を示すアドレス範囲は、ｅ０２０００００〜ｅ０２ｆｆｆｆｆである。
【００７２】
（ＦＰＧＡ１０１に構成された各ユーザモジュール１０２）
図１４は、ＦＰＧＡに構成された各ユーザモジュール例を示すブロック図である。ＦＰＧＡ１０１には、管理モジュール１０３と、ユーザモジュール１０２と、が構成される。管理モジュール１０３は、ＤＭＡ回路１４０３と、再構成回路１４０４と、ＰＣＩｅ１４０５と、制御回路１４０６と、メモリコントローラ１４０７と、メモリ１４０８と、を有する。ユーザモジュール１０２は、上述したように、利用者によって設計され、利用者の端末３０２に割り当てられる。ユーザモジュール１０２は、メモリ６０１と、回路１４０１と、を有する。管理モジュール１０３とユーザモジュール１０２とは、ポート１４０２を介して接続される。管理モジュール１０３は、アクセス要求をいずれのポート１４０２を介して受け付けたかによって要求元のユーザモジュール１０２を判別することができる。
【００７３】
ＤＭＡ回路１４０３は、ＤＭＡのパラメータを設定するレジスタ１４１１を有する。上述したように、ＤＭＡのパラメータは、例えば、転送方向、転送先アドレス、転送元アドレス、データ長、を有する。転送方向は、ＦＰＧＡ１０１からサーバ１１１へ、またはサーバ１１１からＦＰＧＡ１０１へのいずれかである。制御回路１４０６は、累積データ量カウンタ１４１２と、アクセス許可設定レジスタ１４１３と、を有する。累積データ量カウンタ１４１２は、ユーザモジュール１０２からのアクセス要求に基づくＤＭＡ回路１４０３によるデータ量を計測する計測部である。アクセス許可設定レジスタ１４１３は、サーバ１１１内のメモリ４１２のうちの、ユーザモジュール１０２ごとにユーザモジュール１０２に対応付けられた仮想マシンＶＭに割り当てられた記憶領域を示す情報が記憶される記憶部１０７である。
【００７４】
また、アクセス許可設定レジスタ１４１３は、ユーザモジュール１０２ごとに、メモリ４１２内のアクセス可能な領域を示すアドレス範囲と、転送量の規制値と、が記憶される記憶部１０７である。例えば、アクセス許可設定レジスタ１４１３には、ユーザモジュール１０２が管理ＯＳ５０１−ｃによって構成される際に、メモリ４１２について、管理ＯＳ５０１−ｃによってアドレス範囲を示す情報と、データ量の制限値と、が設定される。設定例は図１５に示す。
【００７５】
また、アクセス許可設定レジスタ１４１３には、ユーザモジュール１０２ごとに、メモリ４０２、メモリ６０２、Ｉ／Ｏインターフェース４０３などのアクセス許可を示す情報が記憶される。例えば、アクセス許可設定レジスタ１４１３には、ユーザモジュール１０２が管理ＯＳ５０１−ｃによって構成される際に、メモリ４０２、メモリ６０２、Ｉ／Ｏインターフェース４０３について、管理ＯＳ５０１−ｃによってアクセス許可を示す情報が設定される。そのため、ユーザモジュール１０２からメモリ４０２、メモリ６０２，Ｉ／Ｏインターフェース４０３などへのアクセスは、制御回路１４０６を介して行われる。ユーザモジュール１０２からメモリ４０２、メモリ６０２，Ｉ／Ｏインターフェース４０３などへのアクセスについての詳細例は省略するが、ユーザモジュール１０２からメモリ４１２へのアクセスと同様に制御回路１４０６がアクセス可能か否かを判断する。
【００７６】
再構成回路１４０４は、サーバ１１１からのコンフィギュレーションデータ８０３に基づいて、ＦＰＧＡ１０１内にユーザモジュール１０２が構成される際にポート１４０２などを構成する機能を有する。メモリコントローラ１４０７は、メモリ１４０８を制御する。ＰＣＩｅ１４０５は、ＰＣＩｅ４１５を介してサーバ１１１にアクセスする際の制御を行う。
【００７７】
図１５は、アクセス許可設定レジスタの設定例を示す説明図である。ここでは、理解の容易化のために、アクセス許可設定レジスタ１４１３をテーブルのように表す。アクセス許可設定レジスタ１４１３には、ユーザモジュール１０２ごとに、メモリ４１２内のアクセス可能な領域を示すアドレス範囲と、転送量の規制値と、が設定される。
【００７８】
転送量の規制値は、複数のユーザモジュール１０２からのアクセス要求が重なった際にいずれかのユーザモジュール１０２によってアクセスが占有されるのを防ぐための、ユーザモジュール１０２のアクセス優先度を決定するための閾値である。転送量の規制値については、例えば、ユーザモジュール１０２の回路規模などに基づいて決定される。例えば、転送量の規制値は、受け入れ検査プログラム３２２や管理ＯＳ５０１−ｃなどによって決定される。例えば、管理モジュール１０３については、他のユーザモジュール１０２よりも重要度が高いとして、転送量の規制値によってアクセスを制限させないこととする。例えば、管理モジュール１０３については、アドレス範囲がｅ０００００００〜ｅ００ｆｆｆｆｆであり、転送量の規制値は、∞である。ユーザモジュール１０２−１については、アドレス範囲がｅ０１０００００〜ｅ０１ｆｆｆｆｆであり、転送量の規制値は５００［Ｍｂｐｓ］である。例えば、ユーザモジュール１０２−２については、アドレス範囲がｅ０２０００００〜ｅ０２ｆｆｆｆｆであり、転送量の規制値は１０００［Ｍｂｐｓ］である。
【００７９】
図１６は、ユーザモジュールとポートの対応例を示す説明図である。例えば、テーブル１６００が示すように、管理モジュール１０３のポート１４０２−１にはユーザモジュール１０２−１が接続され、管理モジュール１０３のポート１４０２−２にはユーザモジュール１０２−２が接続される。例えば、ユーザモジュール１０２とポート１４０２の対応関係については、管理モジュール１０３内にテーブル化されてあってもよい。また、例えば、管理モジュール１０３には、予め複数のポート１４０２が用意され、ユーザモジュール１０２が構成される領域に応じてユーザモジュール１０２に使用されるポート１４０２が決定されてもよい。
【００８０】
図１７は、デバイスドライバが有するテーブル例を示す説明図である。テーブル１７００は、仮想マシンＶＭに割り当てられたＦＰＧＡ１０１内の領域を示す記憶部２１３である。仮想マシンＶＭに割り当てられたＦＰＧＡ１０１内の領域とは、仮想マシンＶＭに割り当てられたＦＰＧＡ１０１内のユーザモジュール１０２が構成された領域に含まれる記憶領域である。テーブル１７００は、例えば、デバイスドライバ５０２−ｃに割り当てられたメモリ４１２内の記憶領域に記憶される。具体的に、テーブル１７００には、仮想マシンＶＭごとに仮想マシンＶＭに割り当てられたＦＰＧＡ１０１内のユーザモジュール１０２の記憶領域を示すアドレス範囲が記憶される。
【００８１】
仮想マシンＶＭｃについては、端末３０２に割り当てられた仮想マシンＶＭｘを管理するため、ＦＰＧＡ１０１内のすべての領域に対してアクセス可能とする。また、仮想マシンＶＭｃについては、端末３０２に割り当てられた仮想マシンＶＭｘよりもアクセス要求の重要度が高いとし、転送量の規制値によってアクセスを制限させないこととする。そのため、仮想マシンＶＭｃについては、アドレス範囲がｅ０１０００００〜ｅ０３ｆｆｆｆｆであり、転送量の規制値は∞である。仮想マシンＶＭ１については、アドレス範囲がｅ０１０００００〜ｅ０１ｆｆｆｆｆであり、転送量の規制値は５００［Ｍｂｐｓ］である。仮想マシンＶＭ２については、アドレス範囲がｅ０２０００００〜ｅ０２ｆｆｆｆｆであり、転送量の規制値は１０００［Ｍｂｐｓ］である。
【００８２】
（仮想マシンＶＭからユーザモジュール１０２へのアクセス要求）
本実施の形態では、仮想マシンＶＭからユーザモジュール１０２へのアクセスは、ＰＩＯ（Ｐｒｏｇｒａｍｍｅｄ  Ｉ／Ｏ）やＭｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉ／Ｏによって実現される。
【００８３】
受け付け部２１１は、端末３０２に割り当てられた仮想マシンＶＭのいずれかからＦＰＧＡ１０１へのアクセス要求を受け付ける。制御部２１２は、受け付けたアクセス要求が示すアクセス先が、アクセス要求の要求元の仮想マシンＶＭに割り当てられたユーザモジュール１０２が構成された領域である場合、アクセス要求に基づくアクセスを実行する。具体的には、制御部２１２は、テーブル１７００に基づいて、アクセス要求に含まれるＦＰＧＡ１０１内の領域を示すアドレスが、アクセス要求の要求元の仮想マシンＶＭについてのアドレス範囲に含まれる場合、アクセス要求に基づくアクセスを実行する。制御部２１２は、構成された領域でない場合、アクセス要求に基づくアクセスを実行しない。具体的に、制御部２１２は、テーブル１７００に基づいて、アクセス要求に含まれるＦＰＧＡ１０１内の領域を示すアドレスが、アクセス要求の要求元の仮想マシンＶＭについてのアドレス範囲に含まれない場合、アクセス要求に基づくアクセスを実行しない。また、制御部２１２は、構成された領域でない場合、アクセス要求の要求元の仮想マシンＶＭに対してエラーを出力してもよい。
【００８４】
また、制御部２１２は、構成された領域でない場合に、アクセス要求を要求元の仮想マシンＶＭに割り当てられたユーザモジュール１０２が構成された領域へのアクセス要求に補正し、補正したアクセス要求を実行してもよい。具体的に、制御部２１２は、テーブル１７００に基づいて、仮想マシンＶＭについてのアドレス範囲に含まれない場合、アクセス要求をアドレス範囲に含まれる領域へのアクセス要求に補正する。より詳細な例は、図２０を用いて後述する。
【００８５】
また、制御部２１２は、構成された領域である場合において、他の仮想マシンＶＭからのアクセス要求に基づくアクセスを実行している場合、他の仮想マシンＶＭからのアクセス要求に基づくアクセスの終了を待機する。ここでは、例えば、あらたに受け付けられたアクセス要求の要求元を第１仮想マシンＶＭとし、該他の仮想マシンＶＭを第２仮想マシンＶＭとする。そして、制御部２１２は、終了後に、第１仮想マシンＶＭからのアクセス要求に基づくアクセスを実行する。これにより、複数の仮想マシンＶＭからＦＰＧＡ１０１へのアクセスが重なっても、アクセス要求を受け付けた時刻が早い順にアクセス要求が示すアクセスを終了させることができる。
【００８６】
また、いずれかの仮想マシンＶＭが、ＦＰＧＡ１０１とサーバ１１１とを接続するＰＣＩｅ１４０５などの共用リソースを連続して使用すると、他の仮想マシンＶＭがＰＣＩｅ１４０５を利用できなくなってしまう。そこで、計測部１１０１は、第１仮想マシンＶＭからのアクセス要求に基づいて転送した所定時間当たりの第１データ量と、第２仮想マシンＶＭからの前アクセス要求に基づいて転送した所定時間当たりの第２データ量と、を計測する。所定時間については、運用前にシステム１００の開発者やデータセンタ３０１の管理者によって決定されることとする。具体的には、計測部１１０１は、第１仮想マシンＶＭからのアクセス要求に基づいて転送したデータ量を累積し、所定時間間隔でサンプリングすることにより、所定時間当たりの転送したデータ量を計測する。
【００８７】
制御部２１２は、第２仮想マシンＶＭからのアクセス要求に基づくアクセスを実行している場合において、計測部１１０１が計測した第１データ量と、計測部１１０１が計測した第２データ量と、に基づいて、第１状態と第２状態とを切り替える。第１状態は、第１仮想マシンＶＭからのアクセス要求に基づくアクセスを実行する状態であり、第２状態は、第２仮想マシンＶＭからのアクセス要求に基づくアクセスを実行する状態である。
【００８８】
制御部２１２は、第１データ量と第１仮想マシンＶＭについての閾値との比較結果と、第２データ量と第１仮想マシンＶＭについての閾値との比較結果と、に基づいて、第１状態と第２状態とを切り替える。閾値は、上述した転送量の規制値である。例えば、制御部２１２は、第１状態の場合において、第１データ量が第１仮想マシンＶＭについての規制値を超えた場合、第１状態から第２状態に切り替える。また、例えば、制御部２１２は、第２状態の場合において、第２データ量が第２仮想マシンＶＭについての規制値を超えた場合、第２状態から第１状態に切り替える。より詳細な例については、図２１を用いて後述する。このように、各仮想マシンＶＭからのアクセス要求に基づくアクセスの実行を切り替えることにより、サーバ１１１内のＰＣＩｅ４１５などの共用リソースを複数の仮想マシンＶＭが公平に利用可能となる。
【００８９】
ここで、上述したように、受け付け部２１１と制御部２１２が管理ＯＳ５０１−ｃのデバイスドライバ５０２−ｃによって実現されることにより、要求元の仮想マシンＶＭによるＦＰＧＡ１０１への不正なアクセスや誤ったアクセスを防ぐことができる。例えば、管理モジュール１０３によって当該受け付け部２１１と制御部２１２の機能を実現させる場合、管理モジュール１０３は、いずれの仮想マシンＶＭからのアクセス要求を受け付けたかを区別することができない。アクセス要求に要求元である仮想マシンＶＭの識別情報を付加させるように予め取り決めてあっても、各仮想マシンＶＭが故意または誤って他の仮想マシンＶＭの識別情報を付加させる場合がある。この場合、管理モジュール１０３は、アクセス要求に含まれる要求元の仮想マシンＶＭの識別情報が正しいか否かを判断することができないため、不正なアクセスや誤ったアクセスが発生する可能性がある。
【００９０】
一方、管理ＯＳ５０１−ｃのデバイスドライバ５０２−ｃは、要求元の仮想マシンＶＭを判別可能である。そのため、受け付け部２１１と制御部２１２とが管理ＯＳ５０１−ｃのデバイスドライバ５０２−ｃによって実現されることにより、要求元の仮想マシンＶＭによるＦＰＧＡ１０１への不正なアクセスや誤ったアクセスを防ぐことができる。
【００９１】
図１８は、仮想マシンからユーザモジュールへのアクセス例を示す説明図である。管理ＯＳ５０１−ｃ、仮想マシンＶＭ、各デバイスドライバ５０２、ハイパーバイザＨＶは、サーバ１１１が実行するソフトウェアであるが、理解の容易化のために、各々を実行主体として説明する。
【００９２】
例えば、仮想マシンＶＭ１上で実行中のアプリケーションソフトウェア５０３−１からアクセス要求があると、仮想マシンＶＭ１上で実行中のＯＳ５０１−１は、ＦＰＧＡ１０１へのアクセス要求を生成する。そして、仮想マシンＶＭ１上で実行中のＯＳ５０１−１は、デバイスドライバ５０２−１を呼び出し、デバイスドライバ５０２−１にアクセス要求を通知する（ステップＳ１８０１）。図１８中、アプリケーションソフトウェア５０３−１を省略する。
【００９３】
デバイスドライバ５０２−１は、アクセス要求を受け付けると、ハイパーバイザＨＶへアクセス要求を通知する（ステップＳ１８０２）。ハイパーバイザＨＶは、デバイスドライバ５０２−１からのアクセス要求を管理ＯＳ５０１−ｃへ通知する（ステップＳ１８０３）。管理ＯＳ５０１−ｃは、ハイパーバイザＨＶから仮想マシンＶＭ１が要求元であるアクセス要求を受け付けると、デバイスドライバ５０２−ｃを呼び出し、受け付けたアクセス要求をデバイスドライバ５０２−ｃへ通知する（ステップＳ１８０４）。
【００９４】
デバイスドライバ５０２−ｃは、アクセス要求に含まれるアクセス先のアドレスが受け付けたアクセス要求の要求元である仮想マシンＶＭ１についてのアドレス範囲に含まれる場合、アクセス要求に基づくアクセスを実行する（ステップＳ１８０５）。ステップＳ１８０５において、デバイスドライバ５０２−ｃは、アクセス要求に含まれるアクセス先のアドレスが受け付けたアクセス要求の要求元である仮想マシンＶＭ１についてのアドレス範囲に含まれない場合、アクセス要求を補正する。具体的に、デバイスドライバ５０２−ｃは、アクセス要求を仮想マシンＶＭ１についてのアドレス範囲に含まれるように補正する。そして、デバイスドライバ５０２−ｃは、補正したアクセス要求に基づくアクセスを実行する。管理モジュール１０３は、デバイスドライバ５０２−ｃによるアクセス要求に基づくアクセスの実行に基づいてユーザモジュール１０２−１にアクセスする（ステップＳ１８０６）。
【００９５】
（ユーザモジュール１０２からサーバ１１１内のメモリ４１２へのアクセス要求）
つぎに、ユーザモジュール１０２からサーバ１１１内のメモリ４１２へのアクセス要求について説明する。本実施の形態では、ユーザモジュール１０２からメモリ４１２へのアクセスは、ＤＭＡによって実現される。上述したように、制御回路１４０６は、受け付け部１０５と、制御部１０６と、計測部と、を有する。また、上述したように、ＤＭＡ回路１４０３は、アクセス部１０４を有する。
【００９６】
制御回路１４０６は、受け付け部２１１によって、ユーザモジュール１０２のうちのいずれかからのアクセス要求を受け付ける。アクセス要求には、ＤＭＡ回路１４０３に与えるＤＭＡのパラメータが含まれる。
【００９７】
制御回路１４０６は、受け付けたアクセス要求が示すアクセス先がアクセス要求の要求元のユーザモジュール１０２に割り当てられた記憶領域である場合は、アクセス要求に基づくアクセスをＤＭＡ回路１４０３に実行させる。具体的に制御回路１４０６は、アクセス要求が示すアクセス先が要求元のユーザモジュール１０２についてのアクセス許可設定レジスタ１４１３に設定されたアドレス範囲に含まれる場合、アクセス要求内のＤＭＡのパラメータをレジスタ１４１１に設定する。
【００９８】
一方、制御回路１４０６は、割り当てられた記憶領域でない場合は、アクセス要求に基づくアクセスをＤＭＡ回路１４０３に実行させない。具体的に制御回路１４０６は、アクセス要求が示すアクセス先がアドレス範囲に含まれない場合、アクセス要求内のＤＭＡのパラメータをＤＭＡ回路１４０３のレジスタ１４１１に設定しない。また、制御回路１４０６は、割り当てられた記憶領域でない場合、アクセス要求を要求元のユーザモジュール１０２に割り当てられた記憶領域へのアクセス要求に補正し、補正したアクセス要求をＤＭＡ回路１４０３に実行させる。具体的に制御回路１４０６は、アクセス要求が示すアクセス先がアドレス範囲に含まれない場合、アドレス範囲に含まれるようにアクセス要求内のＤＭＡのパラメータを補正する。そして、制御回路１４０６は、補正したＤＭＡのパラメータをレジスタ１４１１に設定する。
【００９９】
また、制御回路１４０６は、割り当てられた記憶領域である場合において、他のユーザモジュール１０２からのアクセス要求に基づくアクセスをＤＭＡ回路１４０３に実行させている場合、当該アクセスの終了を待機する。ここでは、あらたに受け付けられたアクセス要求の要求元のユーザモジュール１０２を第１ユーザモジュール１０２と称し、該他のユーザモジュール１０２を第２ユーザモジュールと称する。そして、制御回路１４０６は、終了後に、第１ユーザモジュール１０２からのアクセス要求に基づくアクセスをＤＭＡ回路１４０３に実行させる。
【０１００】
また、ＦＰＧＡ１０１内のいずれかのユーザモジュール１０２が、ＦＰＧＡ１０１とサーバ１１１とを接続するＰＣＩｅ１４０５などの共用リソースを連続して使用すると、他のユーザモジュール１０２がＰＣＩｅ１４０５を利用できなくなってしまう。そこで、制御回路１４０６は、累積データ量カウンタ１４１２によって、第１ユーザモジュール１０２からのアクセス要求に基づくＤＭＡ回路１４０３による所定時間当たりの第１データ量を計測する。制御回路１４０６は、累積データ量カウンタ１４１２によって、第２ユーザモジュール１０２からのアクセス要求に基づくアクセス部１０４による所定時間当たりの第２データ量を計測する。所定時間については、運用前にシステム１００の開発者やデータセンサーの管理者によって決定されることとする。具体的には、制御回路１４０６は、第１ユーザモジュール１０２からのアクセス要求に基づいて転送したデータ量を累積し、所定時間間隔でサンプリングすることにより、所定時間当たりの転送したデータ量を計測する。
【０１０１】
制御回路１４０６は、計測した第１データ量と、計測した第２データ量と、に基づいて、第１状態と第２状態とを切り替える。第１状態は、第１ユーザモジュール１０２からのアクセス要求に基づくアクセスをＤＭＡ回路１４０３に実行させる状態である。また、第２状態は、第２ユーザモジュール１０２からのアクセス要求に基づくアクセスをアクセス部１０４に実行させる状態である。
【０１０２】
また、制御回路１４０６は、第１データ量と前記第１ユーザモジュール１０２についての閾値との比較結果と、第２データ量と第２ユーザモジュール１０２についての閾値との比較結果と、に基づいて、第１状態と第２状態と、を切り替える。各ユーザモジュール１０２についての閾値は、上述したアクセス許可設定レジスタ１４１３に設定された転送量の規制値である。例えば、制御回路１４０６は、第１状態の場合において、第１データ量が第１ユーザモジュール１０２についての規制値を超えた場合、第１状態から第２状態に切り替える。また、例えば、制御回路１４０６は、第２状態の場合において、第２データ量が第２ユーザモジュール１０２についての規制値を超えた場合、第２状態から第１状態に切り替える。より詳細な例については、図２１を用いて後述する。このように、各ユーザモジュール１０２からのアクセス要求に基づくアクセスの実行を切り替えることにより、ＦＰＧＡ１０１のＰＣＩｅ１４０５などの共用リソースを複数のユーザモジュール１０２が公平に利用可能となる。利用者が、ＦＰＧＡ１０１を共同利用する他の利用者を意識することなく、システム１００を利用できる。
【０１０３】
図１９は、ユーザモジュールからサーバ内のメモリへのアクセス例を示す説明図である。ユーザモジュール１０２−１は、ＤＭＡのパラメータを生成し、生成したＤＭＡのパラメータを含むアクセス要求を、ポート１４０２−１を介して管理モジュール１０３へ送信する（ステップＳ１９０１）。
【０１０４】
制御回路１４０６は、ポート１４０２−１を介してアクセス要求を受信すると、ポート１４０２−１に基づいてアクセス要求の要求元を判別する。制御回路１４０６は、アクセス許可設定レジスタ１４１３に基づいて、ＤＭＡのパラメータが示すアクセス先のアドレスが要求元に割り当てられたアドレス範囲に含まれる場合、ＤＭＡのパラメータをレジスタ１４１１に設定する（ステップＳ１９０２，Ｓ１９０３）。また、ステップＳ１９０２，Ｓ１９０３において、制御回路１４０６は、アクセス先のアドレスが要求元についてのアドレス範囲に含まれない場合、ＤＭＡのパラメータを、アクセス先のアドレスがアドレス範囲に含まれるように補正する。そして、制御回路１４０６は、補正したＤＭＡのパラメータをＤＭＡ回路１４０３内のレジスタ１４１１に設定する。
【０１０５】
ＤＭＡ回路１４０３は、レジスタ１４１１に設定されたＤＭＡのパラメータに基づいてＰＣＩｅ１４０５を介してサーバ１１１内のメモリ４１２にアクセスする（ステップＳ１９０４，Ｓ１９０５）。
【０１０６】
図２０は、アドレス判断処理の詳細例を示す説明図である。図２０の上側では、ＢＡＳＥ＿ＡＤＤＲ＿ＵＳＥＲ１とＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ１とは仮想マシンＶＭ１の構築時に決定されるパラメータ例を示す。ＢＡＳＥ＿ＡＤＤＲ＿ＵＳＥＲ２とＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ２とは仮想マシンＶＭ２の構築時に決定されるパラメータ例を示す。図２０の上側は、例えば、アクセス許可設定レジスタ１４１３やテーブル１７００に各アドレス範囲が設定されることと同様のことを示す。
【０１０７】
また、図２０の下側では、仮想マシンＶＭ１からのアクセス要求を受け付けた場合のデバイスドライバ５０２−ｃのアドレス判断処理、またはユーザモジュール１０２−１からのアクセス要求が発生した場合の管理モジュール１０３のアドレス判断処理を示す。アドレス判断処理では、アクセス要求が示すアクセス先の先頭アドレスと、アクセス要求が示すアクセス先のデータ長と、の入力を受け付ける。アドレス判断処理では、入力された先頭アドレスが、ＢＡＳＥ＿ＡＤＤＲ＿ＵＳＥＲ１とＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ１とによって示されるアドレス範囲に含まれる場合、入力された先頭アドレスをそのまま出力する。アドレス判断処理では、入力された先頭アドレスがアドレス範囲に含まれない場合、入力された先頭アドレスがアドレス範囲に含まれるように補正した先頭アドレスを出力する。
【０１０８】
また、アドレス判断処理では、入力されたデータ長が、ＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ１が示すデータ長以内の場合、入力されたデータ長をそのまま出力する。アドレス判断処理では、入力されたデータ長が、ＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ１が示すデータ長より大きい場合、入力されたデータ長をＭＡＳＫ＿ＡＤＤＲ＿ＵＳＥＲ１が示すデータ長以内となるように補正したデータ長を出力する。
【０１０９】
図２１は、データ量制限処理の詳細例を示す説明図である。図２１では、複数の仮想マシンＶＭからアクセス要求を受け付けた場合のデバイスドライバ５０２−ｃのデータ量制限処理例を示す。また、複数のアクセス要求を受け付けた場合の管理モジュール１０３のデータ量制限処理も同様である。
【０１１０】
ｎｕｍｂｅｒ＿ｏｆ＿ｒｅｑｕｅｓｔｅｒ（）はアクセス要求の数を示す。ｎｕｍｂｅｒ＿ｏｆ＿ｒｅｑｕｅｓｔｅｒ（）が１の場合、データ量制限処理では、１つのアクセス要求を受け付けた状態であるため、受け付けたアクセス要求に基づくアクセスが実行される。ｇｅｔ＿ｒｅｑｕｅｓｔｅｒｓ＿ｔｏｐ（）は、各仮想マシンＶＭからのアクセス要求を登録可能なキューの先頭のアクセス要求を取得する処理を示す。ｄｏ＿ｔｒａｎｓｆｅｒ（）は、（）内のアクセス要求に基づくアクセスを実行する処理を示す。
【０１１１】
ｎｕｍｂｅｒ＿ｏｆ＿ｒｅｑｕｅｓｔｅｒ（）が１より大きい場合、アクセス要求の要求元の仮想マシンＶＭについての「（規制値）−（直近の計測されたデータ量）」に基づいてアクセス要求を降順でソートする。データ量制限処理では、ソート後に、先頭のアクセス要求に基づくアクセスから順に実行する。
【０１１２】
例えば、ｇｅｔ＿ｒｅｑｕｅｓｔｅｒｓ（）は、アクセス要求を登録可能なキューに登録されたすべてのアクセス要求を取得する処理を示す。ｒｅｑｓには、取得されたアクセス要求が登録される。ｒｅｑｓに登録されたアクセス要求が、各アクセス要求の要求元の仮想マシンＶＭについての「「規制値」−「直近の計測されたデータ量」」に基づいて、降順にソートされる。ｒｅｑｓ．ｔｏｐ（）は、先頭に登録されたアクセス要求を取得する処理を示す。ｄｏ＿ｔｒａｎｓｆｅｒ（）は、（）内のアクセス要求に基づくアクセスを実行する処理を示し、ここではｒｅｑｓの先頭に登録されたアクセス要求に基づくアクセスを実行する。
【０１１３】
また、データ量制限処理では、データ量が規制値を超えたアクセス要求の要求元の仮想マシンＶＭを検出した場合、管理ＯＳ５０１−ｃに通知する。
【０１１４】
以上説明したように、本実施の形態にかかる集積回路は、ある利用者に割り当てられたＦＰＧＡ内の回路から、他の利用者に割り当てられた該ＦＰＧＡ内の他の回路に割り当てられた記憶領域へアクセスさせない。これにより、他の利用者の記憶領域がある利用者が利用可能な回路に干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【０１１５】
また、本実施の形態にかかる集積回路は、ある利用者に割り当てられた回路からのアクセス要求のアクセス先が要求元の回路に割り当てられた記憶領域でない場合に、要求元の回路に割り当てられた記憶領域へのアクセス要求に補正する。これにより、他の利用者に割り当てられたＦＰＧＡ内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【０１１６】
また、集積回路は１つのバスを介してサーバと接続されてあるため、集積回路内の複数の回路からサーバへのアクセス要求が重なる可能性がある。そのため、本実施の形態にかかる集積回路は、複数のアクセス要求がある場合、受け付けた時刻が早いアクセス要求に基づくアクセスが終了するのを待機して、受け付けた時刻が遅いアクセス要求に基づくアクセスを実行する。これにより、アクセス要求の発生順にアクセス要求に基づくアクセスを実行することができる。
【０１１７】
また、集積回路内のいずれかの回路が集積回路と制御装置とを接続するバスを連続して使用すると、集積回路内の他の回路が制御装置内の記憶領域にアクセスできなくなる。そこで、本実施の形態にかかる集積回路は、集積回路内の回路ごとに回路から制御装置内の記憶領域への転送量を計測し、計測したデータ量に基づいて、いずれの回路からのアクセス要求に基づくアクセスを実行するかを切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。
【０１１８】
また、制御装置は、実行中のアクセスによって転送したデータ量が実行中のアクセスについてのアクセス要求の要求元についての規制値を超えた場合、実行対象となるアクセス要求を切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。
【０１１９】
以上説明したように、本実施の形態にかかる制御装置は、ある利用者から他の利用者に割り当てられた該ＦＰＧＡ内の回路へアクセスさせない。これにより、他の利用者に割り当てられたＦＰＧＡ内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【０１２０】
また、本実施の形態にかかる制御装置は、ある利用者からのアクセス要求のアクセス先が要求元に割り当てられた集積回路内の回路でない場合に、要求元の利用者に割り当てられた回路へのアクセス要求に補正する。これにより、他の利用者に割り当てられた集積回路内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。
【０１２１】
また、制御装置は１つのバスを介して集積回路と接続されてあるため、複数の利用者から集積回路へのアクセス要求が重なる可能性がある。そのため、本実施の形態にかかる制御装置は、複数のアクセス要求がある場合、受け付けた時刻が早いアクセス要求に基づくアクセスが終了するのを待機して、受け付けた時刻が遅いアクセス要求に基づくアクセスを実行する。これにより、アクセス要求の発生順にアクセス要求に基づくアクセスを実行することができる。
【０１２２】
また、いずれかの利用者が集積回路と制御装置とを接続するバスを連続して使用すると、他の利用者が集積回路を利用できなくなる。そこで、本実施の形態にかかる制御装置は、利用者ごとに利用者から集積回路内の回路への転送量を計測し、計測したデータ量に基づいて、いずれの利用者からのアクセス要求に基づくアクセスを実行するかを切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。
【０１２３】
また、制御装置は、実行中のアクセスによって転送したデータ量が実行中のアクセスについてのアクセス要求の要求元についての規制値を超えた場合、実行対象となるアクセス要求を切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。
【０１２４】
また、本実施の形態によれば、サーバ上で実行される仮想マシンとＦＰＧＡとの両方において、利用者間の処理環境が分離され、共用リソースが公平に利用可能となる。そのため、複数の利用者が同一のサーバ、ＦＰＧＡを、安定した処理環境で共同利用可能となる。
【０１２５】
また、クラウドコンピューティングのようにＦＰＧＡを複数の利用者によって共同で利用可能とすることにより、利用者の各々にＦＰＧＡを割り当てる場合と比較して、投資コストや運用コストを削減することができる。運用コストとは、例えば、時間的なコストなどである。また、本実施の形態で説明したシステムをＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）サービスとして提供可能であれば、様々な利用者が利用できるようになる。
【０１２６】
また、例えば、専用ハードウェアやＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの電力効率のよいハードウェアであっても、それらのハードウェアに適合しない処理であれば、消費電力あたりの性能が低下する可能性がある。専用ハードウェアやＧＰＧＰＵなどに適さない処理であっても、ＦＰＧＡを利用することにより、消費電力あたりの処理性能を向上させることが可能となる。そのため、本実施の形態におけるシステムでは、専用ハードウェアやＧＰＧＰＵなどを利用する場合と比較して、電力効率を向上させることができる。また、専用ハードウェアを開発するほどの需要がないような回路であっても、ＦＰＧＡによって実現することができる。
【０１２７】
また、本実施の形態では、利用者がユーザモジュールを設計する例を挙げたが、予め用意されたユーザモジュールを利用者が選択して利用してもよい。
【０１２８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、
前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部と、
前記部分回路のうちのいずれかからのアクセス要求を受け付ける受け付け部と、
前記受け付け部が受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない制御部と、
を有することを特徴とする集積回路。
【０１３０】
（付記２）前記制御部は、割り当てられた前記記憶領域でない場合、前記アクセス要求を前記要求元の部分回路に割り当てられた前記記憶領域へのアクセス要求に補正し、補正した前記アクセス要求を前記アクセス部に実行させることを特徴とする付記１に記載の集積回路。
【０１３１】
（付記３）前記制御部は、割り当てられた前記記憶領域である場合において、前記部分回路のうちの前記要求元の部分回路（以下、「第１部分回路」と称する。）と異なる第２部分回路からのアクセス要求に基づくアクセスを前記アクセス部に実行させている場合、前記第２部分回路からの前記アクセス要求に基づくアクセスが終了した後に、前記第１部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させることを特徴とする付記１または２に記載の集積回路。
【０１３２】
（付記４）前記第１部分回路からの前記アクセス要求に基づく前記アクセス部による所定時間当たりの第１データ量と、前記第２部分回路からの前記アクセス要求に基づく前記アクセス部による前記所定時間当たりの第２データ量と、を計測する計測部を有し、
前記制御部は、前記計測部が計測した前記第１データ量と、前記計測部が計測した前記第２データ量と、に基づいて、前記第１部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第１状態と、前記第２部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第２状態と、を切り替えることを特徴とする付記３に記載の集積回路。
【０１３３】
（付記５）前記制御部は、前記第１データ量と前記第１部分回路についての閾値との比較結果と、前記第２データ量と前記第２部分回路についての閾値との比較結果と、に基づいて、前記第１状態と、前記第２状態と、を切り替えることを特徴とする付記４に記載の集積回路。
【０１３４】
（付記６）前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする付記１〜５のいずれか一つに記載の集積回路。
【０１３５】
（付記７）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置であって、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付ける受け付け部と、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御を行う制御部と、
を有することを特徴とする制御装置。
【０１３６】
（付記８）前記制御部は、構成された前記領域でない場合に、前記アクセス要求を前記要求元のコンピュータに割り当てられた部分回路が構成された領域へのアクセス要求に補正し、補正した前記アクセス要求を実行することを特徴とする付記７に記載の制御装置。
【０１３７】
（付記９）前記制御部は、構成された前記領域である場合において、前記コンピュータのうちの前記要求元のコンピュータ（以下、「第１コンピュータ」と称する。）と異なる第２コンピュータからのアクセス要求に基づくアクセスを実行している場合、前記第２コンピュータからの前記アクセス要求に基づくアクセスが終了した後に、前記第１コンピュータからの前記アクセス要求に基づくアクセスを実行することを特徴とする付記７または８に記載の制御装置。
【０１３８】
（付記１０）前記第１コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第１データ量と、前記第２コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第２データ量と、を計測する計測部を有し、
前記制御部は、前記第２コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第１データ量と、前記計測部が計測した前記第２データ量と、に基づいて、前記第１コンピュータからの前記アクセス要求に基づくアクセスを実行する第１状態と、前記第２コンピュータからの前記アクセス要求に基づくアクセスを実行する第２状態と、を切り替えることを特徴とする付記９に記載の制御装置。
【０１３９】
（付記１１）前記制御部は、前記第１データ量と前記第１コンピュータについての閾値との比較結果と、前記第２データ量と前記第２コンピュータについての閾値との比較結果と、に基づいて、前記第１状態と前記第２状態とを切り替えることを特徴とする付記１０に記載の制御装置。
【０１４０】
（付記１２）前記集積回路は、前記第１コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第１データ量と、前記第２コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第２データ量と、を計測する計測部を有し、
前記制御部は、前記第２コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第１データ量と、前記計測部が計測した前記第２データ量と、に基づいて、前記第１コンピュータからの前記アクセス要求に基づくアクセスを実行する第１状態と、前記第２コンピュータからの前記アクセス要求に基づくアクセスを実行する第２状態と、を切り替えることを特徴とする付記９に記載の制御装置。
【０１４１】
（付記１３）前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする付記７〜１２のいずれか一つに記載の制御装置。
【０１４２】
（付記１４）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部を有する集積回路が、
前記部分回路のうちのいずれかからのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない、
処理を実行することを特徴とする制御方法。
【０１４３】
（付記１５）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置が、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行することを特徴とする制御方法。
【０１４４】
（付記１６）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させることを特徴とする制御プログラム。
【０１４５】
（付記１７）内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させる制御プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１４６】
１００  システム
１０１  ＦＰＧＡ
１０２  ユーザモジュール
１０３  管理モジュール
１０４  アクセス部
１０５，２１１  受け付け部
１０６，２１２  制御部
１１１  サーバ
１１２  記憶領域
１２１  コンピュータ
１１０１  計測部
１４０３  ＤＭＡ回路
１４０６  制御回路
１４１２  累積データ量カウンタ
１４１３  アクセス許可設定レジスタ
ＶＭ  仮想マシン
【図１】
2014230174.tif 000003
【図２】
2014230174.tif 000004
【図３】
2014230174.tif 000005
【図４】
2014230174.tif 000006
【図５】
2014230174.tif 000007
【図６】
2014230174.tif 000008
【図７】
2014230174.tif 000009
【図８】
2014230174.tif 000010
【図９】
2014230174.tif 000011
【図１０】
2014230174.tif 000012
【図１１】
2014230174.tif 000013
【図１２】
2014230174.tif 000014
【図１３】
2014230174.tif 000015
【図１４】
2014230174.tif 000016
【図１５】
2014230174.tif 000017
【図１６】
2014230174.tif 000018
【図１７】
2014230174.tif 000019
【図１８】
2014230174.tif 000020
【図１９】
2014230174.tif 000021
【図２０】
2014230174.tif 000022
【図２１】
2014230174.tif 000023