(57)【特許請求の範囲】
【請求項１】
論理構成を書き換え可能な複数の回路領域を有する集積回路に論理回路を書き込む制御回路において、
書き込み対象の論理回路と前記書き込み対象の論理回路のデータ転送量を監視する監視回路とを、前記複数の回路領域のいずれかに書き込む構成部と、
論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた前記監視回路から取得する取得部と、
複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、前記組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、前記組み合わせに含まれる複数の論理回路が前記１つの回路領域に収まるかの判定結果とに基づいて検出する検出部とを有し、
前記構成部は、前記組み合わせが検出された場合、前記組み合わせに含まれる複数の論理回路を前記１つの回路領域に書き込み、回路領域の論理構成を再構成し、
前記検出部は、前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、
前記構成部は、前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する
ことを特徴とする制御回路。
【請求項２】
請求項１に記載の制御回路において、
前記検出部は、前記第１の回路領域を検出する処理を、所定の時間間隔で繰り返し実行する
ことを特徴とする制御回路。
【請求項３】
請求項１または請求項２に記載の制御回路において、
前記検出部は、前記組み合わせを検出する処理を、所定の時間間隔で繰り返し実行する
ことを特徴とする制御回路。
【請求項４】
請求項１ないし請求項３のいずれか１項に記載の制御回路において、
前記転送条件は、前記組み合わせに含まれる複数の論理回路のデータ転送量の合計の平均が第１閾値以下である
ことを特徴とする制御回路。
【請求項５】
請求項１ないし請求項３のいずれか１項に記載の制御回路において、
前記転送条件は、前記組み合わせに含まれる複数の論理回路のデータ転送量の合計の平均が第１閾値以下で、かつ、前記組み合わせに含まれる複数の論理回路の各々のデータ転送量のピークの合計が前記第１閾値より大きい第２閾値以下である
ことを特徴とする制御回路。
【請求項６】
請求項１ないし請求項５のいずれか１項に記載の制御回路において、
前記組み合わせに含まれる複数の論理回路とともに前記１つの回路領域に書き込まれる前記監視回路は、前記組み合わせに含まれる複数の論理回路で共有される
ことを特徴とする制御回路。
【請求項７】
論理構成を書き換え可能な複数の回路領域を有する集積回路に論理回路を書き込む制御回路において、
書き込み対象の論理回路と前記書き込み対象の論理回路のデータ転送量を監視する監視回路とを、前記複数の回路領域のいずれかに書き込む構成部と、
論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた前記監視回路から取得する取得部と、
複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、前記組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、前記組み合わせに含まれる複数の論理回路が前記１つの回路領域に収まるかの判定結果とに基づいて検出する処理を、所定の時間間隔で繰り返し実行する検出部とを有し、
前記構成部は、前記組み合わせが検出された場合、前記組み合わせに含まれる複数の論理回路を前記１つの回路領域に書き込み、回路領域の論理構成を再構成する
ことを特徴とする制御回路。
【請求項８】
論理構成を書き換え可能な複数の回路領域を有する集積回路と、前記複数の回路領域に論理回路を書き込む制御回路とを含むデータ処理装置において、
前記制御回路は、
書き込み対象の論理回路と前記書き込み対象の論理回路のデータ転送量を監視する監視回路とを、前記複数の回路領域のいずれかに書き込む構成部と、
論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた前記監視回路から取得する取得部と、
複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、前記組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、前記組み合わせに含まれる複数の論理回路が前記１つの回路領域に収まるかの判定結果とに基づいて検出する検出部とを有し、
前記構成部は、前記組み合わせが検出された場合、前記組み合わせに含まれる複数の論理回路を前記１つの回路領域に書き込み、回路領域の論理構成を再構成し、
前記検出部は、前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、
前記構成部は、前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する
ことを特徴とするデータ処理装置。
【請求項９】
論理構成を書き換え可能な複数の回路領域を有する集積回路に論理回路を書き込むコンピュータが回路領域への論理回路の割り当てを管理する論理回路管理方法において、
前記コンピュータが、
書き込み対象の論理回路と前記書き込み対象の論理回路のデータ転送量を監視する監視回路とを、前記複数の回路領域のいずれかに書き込み、
論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた前記監視回路から取得し、
複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、前記組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、前記組み合わせに含まれる複数の論理回路が前記１つの回路領域に収まるかの判定結果とに基づいて検出し、
前記組み合わせを検出した場合、前記組み合わせに含まれる複数の論理回路を前記１つの回路領域に書き込み、回路領域の論理構成を再構成し、
前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、
前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する
ことを特徴とする論理回路管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御回路、データ処理装置および論理回路管理方法に関する。
【背景技術】
【０００２】
サーバ等のデータ処理装置は、論理構成を書き換え可能な集積回路の一種であるＦＰＧＡ（Field Programmable Gate Array）を有する場合がある。例えば、ＦＰＧＡには、サーバの利用者によって設計された論理回路（以下、ユーザモジュールとも称する）が書き込まれる。近年、複数の利用者が同一のＦＰＧＡを共同で使用するシステムが提案されている(例えば、特許文献１参照)。この種のシステムは、複数の利用者によってそれぞれ設計された複数のユーザモジュールを１つのＦＰＧＡに書き込む。
【０００３】
また、回路機能を所定の単位（以下、セルとも称する）で部分的に再構成可能なＦＰＧＡでは、ＦＰＧＡの利用効率を向上するために、互いに異なる大きさの複数のセルを有する構成が提案されている(例えば、特許文献２参照)。この種のＦＰＧＡでは、書き換え対象のセル以外のセルが動作中でも、書き換え対象のセルの回路機能が再構成される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２３０１７４号公報
【特許文献２】特開２００２−１６４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
論理構成を書き換え可能な複数の回路領域毎に１つのユーザモジュールが書き込まれるＦＰＧＡでは、ユーザモジュールが小さくなるほど、ＦＰＧＡの利用効率は低下する。一方、１つの回路領域に書き込むユーザモジュールの数を単に増加させた場合、１つの回路領域に書き込まれた複数のユーザモジュールのデータ転送レートが回路領域のデータ転送レートによって制限され、ユーザモジュールの性能が低下するおそれがある。
【０００６】
１つの側面では、本発明は、論理構成を書き換え可能な集積回路に論理回路を効率よく割り当てることを目的とする。
【課題を解決するための手段】
【０００７】
一観点によれば、論理構成を書き換え可能な複数の回路領域を有する集積回路に論理回路を書き込む制御回路は、書き込み対象の論理回路と書き込み対象の論理回路のデータ転送量を監視する監視回路とを、複数の回路領域のいずれかに書き込む構成部と、論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた監視回路から取得する取得部と、複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、組み合わせに含まれる複数の論理回路が１つの回路領域に収まるかの判定結果とに基づいて検出する検出部とを有し、構成部は、組み合わせが検出された場合、組み合わせに含まれる複数の論理回路を１つの回路領域に書き込み、回路領域の論理構成を再構成し、前記検出部は、前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、前記構成部は、前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する。
【０００８】
別の観点によれば、データ処理装置は、論理構成を書き換え可能な複数の回路領域を有する集積回路と、複数の回路領域に論理回路を書き込む制御回路とを有し、制御回路は、書き込み対象の論理回路と書き込み対象の論理回路のデータ転送量を監視する監視回路とを、複数の回路領域のいずれかに書き込む構成部と、論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた監視回路から取得する取得部と、複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、組み合わせに含まれる複数の論理回路が１つの回路領域に収まるかの判定結果とに基づいて検出する検出部とを有し、構成部は、組み合わせが検出された場合、組み合わせに含まれる複数の論理回路を１つの回路領域に書き込み、回路領域の論理構成を再構成し、前記検出部は、前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、前記構成部は、前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する。
【０００９】
別の観点によれば、論理構成を書き換え可能な複数の回路領域を有する集積回路に論理回路を書き込むコンピュータが回路領域への論理回路の割り当てを管理する論理回路管理方法では、コンピュータが、書き込み対象の論理回路と書き込み対象の論理回路のデータ転送量を監視する監視回路とを、複数の回路領域のいずれかに書き込み、論理回路のデータ転送量を示す情報を、論理回路とともに回路領域に書き込まれた監視回路から取得し、複数の論理回路の中から、１つの回路領域に割り当て可能な論理回路の組み合わせを、組み合わせに含まれる複数の論理回路のデータ転送量が所定の転送条件を満たすかの判定結果と、組み合わせに含まれる複数の論理回路が１つの回路領域に収まるかの判定結果とに基づいて検出し、組み合わせを検出した場合、組み合わせに含まれる複数の論理回路を１つの回路領域に書き込み、回路領域の論理構成を再構成し、前記組み合わせに含まれる複数の論理回路が書き込まれた回路領域のうち、前記組み合わせに含まれる複数の論理回路のデータ転送量が前記転送条件から外れた第１の回路領域を検出し、前記第１の回路領域が検出された場合、前記第１の回路領域に書き込まれた複数の論理回路を複数の回路領域に分けて書き込み、前記第１の回路領域の論理構成を再構成する。
【発明の効果】
【００１０】
論理構成を書き換え可能な集積回路に論理回路を効率よく割り当てることができる。
【図面の簡単な説明】
【００１１】
【図１】制御回路、データ処理装置および論理回路管理方法の一実施形態を示す図である。
【図２】制御回路、データ処理装置および論理回路管理方法の別の実施形態を示す図である。
【図３】図２に示した論理回路および監視回路の一例を示す図である。
【図４】図２に示したデータ処理装置の動作の一例を示す図である。
【図５】図４に示した統合処理の一例を示す図である。
【図６】図４に示した分割候補検索処理の一例を示す図である。
【図７】図４に示した分割処理の一例を示す図である。
【図８】図２に示したデータ処理装置の動作の別の例を示す図である。
【図９】図２に示したＣＰＵによる論理回路の管理の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、実施形態について、図面を用いて説明する。
【００１３】
図１は、制御回路、データ処理装置および論理回路管理方法の一実施形態を示す。図１に示すデータ処理装置１０は、例えば、集積回路１００と制御回路２００とを有するサーバ等の情報処理装置である。集積回路１００は、例えば、データ処理装置１０のユーザが使用する論理回路１２０（１２０Ａ、１２０Ｂ）等をプログラム可能なＦＰＧＡ等のプログラマブルデバイスである。例えば、集積回路１００は、論理構成を書き換え可能な複数の回路領域１１０（１１０Ａ、１１０Ｂ、１１０Ｃ、１１０Ｄ）と、複数の回路領域１１０に接続されたバスＢＵＳとを有する。回路領域１１０の外部のバスＢＵＳ等の配線は、例えば、固定して配置される。
【００１４】
回路領域１１０には、図１の括弧内に示すように、論理回路１２０および論理回路１２０のデータ転送量を監視する監視回路１３０（１３０Ａ、１３０Ｂ）が制御回路２００により書き込まれる。論理回路１２０は、例えば、図示されないブロックとの間でデータ転送を実行する。なお、図１に示す括弧内には、第１段階および第２段階の回路領域１１０Ａ、１１０Ｂの状態の一例を示している。図１に示す括弧内の第１段階および第２段階については、制御回路２００による再構成の動作を説明する際に説明する。
【００１５】
制御回路２００は、回路領域１１０を書き込み単位として、論理回路１２０等を集積回路１００に書き込む。例えば、制御回路２００は、構成部２１０、取得部２２０および検出部２３０を有する。構成部２１０、取得部２２０および検出部２３０は、ハードウェアのみで実現されてもよく、ソフトウェアによりハードウェアを制御することにより実現されてもよい。例えば、制御回路２００は、ＣＰＵ（Central Processing Unit）等のプロセッサがソフトウェアを実行することにより実現されてもよい。プロセッサを含むコンピュータがソフトウェアを実行することにより制御回路２００が実現される場合、コンピュータの動作は、回路領域１１０への論理回路１２０の割り当てを管理する論理回路管理方法の一態様である。
【００１６】
構成部２１０は、書き込み対象の論理回路１２０と書き込み対象の論理回路１２０のデータ転送量を監視する監視回路１３０とを、複数の回路領域１１０のいずれかに書き込む。また、構成部２１０は、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせを検出部２３０が検出した場合、回路領域１１０の論理構成を再構成する。再構成の動作については、検出部２３０の動作を説明した後に説明する。
【００１７】
取得部２２０は、回路領域１１０に書き込まれた論理回路１２０のデータ転送量を示す情報を監視回路１３０から取得し、監視回路１３０から取得した情報を検出部２３０に通知する。
【００１８】
検出部２３０は、例えば、論理回路１２０を実現するための回路情報から論理回路１２０の規模を示す情報を取得し、論理回路１２０のデータ転送量を示す情報を監視回路１３０から取得部２２０を介して取得する。そして、検出部２３０は、複数の論理回路１２０の中から、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせを、論理回路１２０のデータ転送量、論理回路１２０の規模および回路領域１１０の規模等に基づいて検出する。
【００１９】
例えば、検出部２３０は、複数の論理回路１２０の中から、判定対象とする論理回路１２０の組み合わせを選択する。そして、検出部２３０は、判定対象として選択した論理回路１２０の組み合わせに含まれる複数の論理回路１２０（以下、判定対象の複数の論理回路１２０とも称する）が１つの回路領域１１０に収まるか否かを判定する。さらに、検出部２３０は、判定対象の複数の論理回路１２０のデータ転送量が所定の転送条件を満たすか否かを判定する。そして、検出部２３０は、１つの回路領域１１０に収まり、かつ、所定の転送条件を満たす判定対象の複数の論理回路１２０を、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせとして検出する。
【００２０】
ここで、判定対象の複数の論理回路１２０が１つの回路領域１１０に収まるか否かの判定では、例えば、検出部２３０は、判定対象の複数の論理回路１２０および監視回路１３０の規模の合計が１つの回路領域１１０の規模以下であるか否かを判定する。判定対象の複数の論理回路１２０および監視回路１３０の規模の合計が１つの回路領域１１０の規模以下である場合、検出部２３０は、判定対象の複数の論理回路１２０が１つの回路領域１１０に収まると判定する。なお、検出部２３０は、判定対象の複数の論理回路１２０の規模の合計が１つの回路領域１１０の規模以下であるか否かを判定してもよい。すなわち、検出部２３０は、判定対象の複数の論理回路１２０の規模の合計が１つの回路領域１１０の規模以下である場合、判定対象の複数の論理回路１２０が１つの回路領域１１０に収まると判定してもよい。
【００２１】
また、判定対象の複数の論理回路１２０のデータ転送量が所定の転送条件を満たすか否かの判定では、例えば、検出部２３０は、判定対象の複数の論理回路１２０のデータ転送量の合計の平均が第１閾値以下である場合、所定の転送条件を満たすと判定する。第１閾値は、回路領域１１０とバスＢＵＳとの間のバス帯域に対応する回路領域１１０のデータ転送レート以下の値に設定される。例えば、第１閾値は、回路領域１１０のデータ転送レートの７割程度の値に設定される。なお、検出部２３０は、判定対象の複数の論理回路１２０のデータ転送量の合計の平均が第１閾値以下で、かつ、判定対象の複数の論理回路１２０の各々のデータ転送量のピークの合計が第２閾値以下である場合、所定の転送条件を満たすと判定してもよい。この場合、第２閾値は、第１閾値より大きい値に設定される。例えば、第２閾値は、回路領域１１０のデータ転送レートの数倍の値に設定される。
【００２２】
なお、１つの回路領域１１０に収まらない論理回路１２０の組み合わせに対しては、所定の転送条件を満たすか否かの判定が省かれてもよい。すなわち、検出部２３０は、１つの回路領域１１０に収まる論理回路１２０の組み合わせに含まれる複数の論理回路１２０のデータ転送量が所定の転送条件を満たすか否かを判定してもよい。この場合、検出部２３０は、１つの回路領域１１０に収まる論理回路１２０の組み合わせのうち、所定の転送条件を満たす組み合わせを、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせとして検出する。
【００２３】
１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせが検出された場合、構成部２１０は、検出された組み合わせに含まれる複数の論理回路１２０を１つの回路領域１１０に書き込む。これにより、検出部２３０で検出された組み合わせに含まれる複数の論理回路１２０が書き込まれた回路領域１１０の論理構成は、再構成される。
【００２４】
集積回路１００を再構成する際の制御回路２００の動作を図１の括弧内に示した回路領域１１０Ａ、１１０Ｂを用いて説明する。なお、集積回路１００では、書き換え対象の回路領域１１０Ａ、１１０Ｂ以外の回路領域１１０Ｃ、１１０Ｄが動作中でも、回路領域１１０Ａ、１１０Ｂの論理構成を再構成することができる。
【００２５】
先ず、第１段階では、制御回路２００は、回路領域１１０毎に、論理回路１２０および論理回路１２０のデータ転送量を監視する監視回路１３０を集積回路１００に書き込む。これにより、論理回路１２０Ａおよび監視回路１３０Ａが回路領域１１０Ａに書き込まれ、論理回路１２０Ｂおよび監視回路１３０Ｂが回路領域１１０Ｂに書き込まれる。
【００２６】
そして、制御回路２００は、互いに異なる回路領域１１０に書き込まれた複数の論理回路１２０を１つの回路領域１１０に書き込む再構成を実行するか否かの判定を所定の時間間隔で繰り返し実行する。例えば、制御回路２００は、論理回路１２０Ａ、１２０Ｂの動作時のデータ転送量を示す情報を監視回路１３０Ａ、１３０Ｂからそれぞれ取得する。
【００２７】
図１に示す例では、論理回路１２０Ａ、１２０Ｂのデータ転送量は、上述した所定の転送条件を満たす。例えば、論理回路１２０Ａ、１２０Ｂのデータ転送量の合計の平均は、第１閾値以下である。また、論理回路１２０Ａ、１２０Ｂおよび監視回路１３０Ａ、１３０Ｂの規模の合計は、回路領域１１０Ａの規模より小さい。すなわち、論理回路１２０Ａ、１２０Ｂおよび監視回路１３０Ａ、１３０Ｂは、１つの回路領域１１０にプログラム可能（書き込み可能）である。このため、制御回路２００は、論理回路１２０Ａ、１２０Ｂを１つの回路領域１１０Ａに書き込む再構成を実行すると判定する。
【００２８】
したがって、第２段階では、制御回路２００は、論理回路１２０Ａ、１２０Ｂを回路領域１１０Ａに書き込み、回路領域１１０Ａ、１１０Ｂの論理構成を再構成する。なお、制御回路２００は、監視回路１３０Ａ、１３０Ｂを論理回路１２０Ａ、１２０Ｂとともに回路領域１１０Ａに書き込む。論理回路１２０Ａ、１２０Ｂおよび監視回路１３０Ａ、１３０Ｂは、回路領域１１０Ａに含まれる内部バスＩＢＵＳに接続される。例えば、内部バスＩＢＵＳとして、回路領域１１０Ａ内の配線の一部が使用される。なお、第２段階では、制御回路２００は、論理回路１２０Ａ、１２０Ｂの両方のデータ転送量を監視する１つの監視回路を、論理回路１２０Ａ、１２０Ｂに共有させてもよい。
【００２９】
回路領域１１０Ａ、１１０Ｂの論理構成を再構成することにより、論理回路１２０Ａ、１２０Ｂおよび監視回路１３０Ａ、１３０Ｂが回路領域１１０Ａに書き込まれ、回路領域１１０Ｂは、未使用の状態になる。この結果、回路領域１１０Ｂを新規の論理回路１２０に割り当てることが可能になり、集積回路１００の利用効率を向上することができる。すなわち、論理回路１２０の搭載効率を向上することができる。
【００３０】
また、上述したように、第１閾値が回路領域１１０のデータ転送レート以下の値であるため、論理回路１２０Ａ、１２０Ｂのデータ転送量の合計の平均は、回路領域１１０のデータ転送レート以下である。このため、回路領域１１０の外部のバスＢＵＳと論理回路１２０Ａ、１２０Ｂとの間のデータ転送量が回路領域１１０とバスＢＵＳとの間のバス帯域によって制限されることを抑制できる。この結果、論理回路１２０Ａ、１２０Ｂの性能が低下することを抑制できる。
【００３１】
なお、データ処理装置１０の構成および集積回路１００の構成は、図１に示す例に限定されない。例えば、データ処理装置１０は、複数の集積回路１００を有してもよい。また、例えば、回路領域１１０の数は、２つ以上であればよく、４つに限定されない。また、データ処理装置１０は、複数のＦＰＧＡチップを含むパッケージを集積回路１００として有してもよい。この場合、データ処理装置１０は、１つのＦＰＧＡチップを１つの回路領域１１０に割り当ててもよい。
【００３２】
以上、図１に示す実施形態では、データ処理装置１０は、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせを、論理回路１２０のデータ転送量に関する所定の転送条件、論理回路１２０の規模および回路領域１１０の規模等に基づいて検出する。１つの回路領域１１０に複数の論理回路１２０を割り当てることにより、集積回路１００の利用効率を向上させることができる。また、所定の転送条件を満たした組み合わせでは、組み合わせに含まれる複数の論理回路１２０のデータ転送レートが回路領域１１０のデータ転送レートによって制限されることを抑制できる。この結果、論理回路１２０の性能が低下することを抑制できる。このように、図１に示す実施形態では、論理構成を書き換え可能な集積回路１００に論理回路１２０を効率よく割り当てることができる。
【００３３】
図２は、集積回路、データ処理装置および論理回路管理方法の別の実施形態を示す。図１で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図２に示すデータ処理装置１２は、図１に示した制御回路２００の代わりにＣＰＵ２０２を有する。また、データ処理装置１２では、メモリ３００および入出力インタフェース３２０が図１に示したデータ処理装置１０に追加されている。データ処理装置１２のその他の構成は、データ処理装置１０と同一または同様である。例えば、データ処理装置１２は、集積回路１００とＣＰＵ２０２とメモリ３００と入出力インタフェース３２０とを有するサーバ等の情報処理装置である。
【００３４】
集積回路１００、ＣＰＵ２０２、メモリ３００および入出力インタフェース３２０は、バスＢＵＳ２に接続される。集積回路１００は、図１に示した集積回路１００と同一または同様である。例えば、集積回路１００の回路領域１１０には、論理回路１２０および監視回路１３０が書き込まれる。論理回路１２０および監視回路１３０は、回路領域１１０内の配線の一部である内部バスＩＢＵＳに接続される。また、内部バスＩＢＵＳは、回路領域１１０の外部に配置されたバスＢＵＳに接続され、バスＢＵＳは、集積回路１００の外部に配置されたバスＢＵＳ２に接続される。これにより、論理回路１２０および監視回路１３０は、ＣＰＵ２０２等と通信可能に接続される。回路領域１１０に書き込まれる論理回路１２０および監視回路１３０の詳細は、図３で説明する。
【００３５】
ＣＰＵ２０２は、論理回路１２０等を集積回路１００に書き込む制御回路の一例である。以下、ＣＰＵ２０２は、制御回路２０２とも称される。ＣＰＵ２０２は、例えば、メモリ３００等に保持されたソフトウェアを実行することにより、構成部２１２、取得部２２０および検出部２３２の機能を実現する。すなわち、制御回路２０２は、構成部２１２、取得部２２０および検出部２３２を有する。取得部２２０は、図１に示した取得部２２０と同一または同様である。
【００３６】
構成部２１２は、図１に示した構成部２１０の機能の他に、分割処理を実行する機能を有する。分割処理は、例えば、１つの回路領域１１０に書き込まれた複数の論理回路１２０を複数の回路領域１１０に分けて書き込む処理である。例えば、構成部２１２は、分割処理対象の回路領域１１０が検出部２３２により検出された場合、分割処理対象の回路領域１１０に書き込まれた複数の論理回路１２０を複数の回路領域１１０に分けて書き込み、分割処理対象の回路領域の論理構成を再構成する。
【００３７】
検出部２３２は、図１に示した検出部２３０の機能の他に、分割処理対象の回路領域１１０を検出する機能を有する。例えば、検出部２３２は、複数の論理回路１２０が書き込まれた回路領域１１０のうち、複数の論理回路１２０のデータ転送量が所定の転送条件から外れた回路領域１１０を、分割処理対象の回路領域１１０として検出する。
【００３８】
メモリ３００は、例えば、構成部２１２、取得部２２０および検出部２３２の動作をＣＰＵ２０２が実行するためのプログラム等を格納する。また、メモリ３００は、論理回路１２０を実現するための回路情報を格納する。また、メモリ３００は、例えば、論理回路１２０が処理を実行する際の一時記憶領域として使用される。なお、データ処理装置１２は、論理回路１２０が処理を実行する際の一時記憶領域を含むメモリを、メモリ３００とは別に有してもよい。
【００３９】
入出力インタフェース３２０は、データ処理装置１２の外部と通信する。例えば、入出力インタフェース３２０は、論理回路１２０を実現するための回路情報等の各種情報をデータ処理装置１２の外部から受け、受けた情報をＣＰＵ２０２、メモリ３００等に転送する。
【００４０】
なお、データ処理装置１２の構成は、図２に示す例に限定されない。例えば、データ処理装置１２は、複数の集積回路１００を有してもよい。また、データ処理装置１２は、複数のＦＰＧＡチップを含むパッケージを集積回路１００として有してもよい。この場合、データ処理装置１２は、１つのＦＰＧＡチップを１つの回路領域１１０に割り当ててもよい。また、構成部２１２、取得部２２０および検出部２３２を含む制御回路２０２は、ハードウェアのみで実現されてもよい。
【００４１】
図３は、図２に示した論理回路１２０および監視回路１３０の一例を示す図である。論理回路１２０は、内部バスＩＢＵＳに接続されるバスインタフェース１２１を有する。バスインタフェース１２１は、バスＢＵＳ２に接続されたＣＰＵ２０２等の装置との通信を実行する。例えば、バスインタフェース１２１は、制御信号ＢＣＮＴ（ＢＣＮＴｉ、ＢＣＮＴｏ）を用いて、ＣＰＵ２０２との間でデータＤＡＴＡ（ＤＡＴＡｉ、ＤＡＴＡｏ）の転送を実行する。
【００４２】
なお、図３に示すデータＤＡＴＡｏは、論理回路１２０から内部バスＩＢＵＳに出力されるデータＤＡＴＡを示し、データＤＡＴＡｉは、論理回路１２０が内部バスＩＢＵＳを介して受けるデータＤＡＴＡを示す。また、制御信号ＢＣＮＴｏは、論理回路１２０から内部バスＩＢＵＳに出力される制御信号ＢＣＮＴを示し、制御信号ＢＣＮＴｉは、論理回路１２０が内部バスＩＢＵＳを介して受ける制御信号ＢＣＮＴを示す。制御信号ＢＣＮＴには、リクエストを通知する信号、アドレス、バースト長等のデータサイズを示す情報等が含まれる。このため、監視回路１３０は、バスインタフェース１２１と内部バスＩＢＵＳとの間で転送される制御信号ＢＣＮＴを監視することにより、論理回路１２０のデータ転送量を監視できる。図３に示す例では、監視回路１３０は、論理回路１２０毎に設けられる。
【００４３】
監視回路１３０は、内部バスＩＢＵＳに接続されるバスインタフェース１３１と、監視制御部１３２と、データ転送量算出部１３３と、カウンタ１３４、１３５と、平均算出部１３６と、ピーク算出部１３７と、保持部１３８、１３９とを有する。
【００４４】
バスインタフェース１３１は、バスＢＵＳ２に接続されたＣＰＵ２０２等の装置との通信を実行する。例えば、ＣＰＵ２０２は、制御信号ＣＩＮＦを用いて、論理回路１２０のデータ転送量の平均およびピークをそれぞれ示すデータＡＤＡＴＡ、ＰＤＡＴＡを、監視回路１３０の監視結果として取得する。以下、データＡＤＡＴＡは、平均データ転送量ＡＤＡＴＡとも称され、データＰＤＡＴＡは、ピークデータ転送量ＰＤＡＴＡとも称される。
【００４５】
監視制御部１３２は、監視回路１３０の動作を制御する。例えば、監視制御部１３２は、タイマＴＭ１、ＴＭ２を有する。タイマＴＭ１、ＴＭ２で計測する時間（以下、タイマ値とも称する）の設定は、例えば、ＣＰＵ２０２からバスインタフェース１３１を通して実行される。例えば、ＣＰＵ２０２は、論理回路１２０のデータ転送量の平均およびピークを算出する際に使用する第１期間および第２期間をそれぞれ示すタイマ値を、制御信号ＣＩＮＦを用いて、タイマＴＭ１、ＴＭ２にそれぞれ設定する。第１期間は、例えば、数秒から数分程度の期間である。また、第２期間は、例えば、第１期間より短い期間であり、数ミリ秒から数秒程度の期間である。
【００４６】
そして、監視制御部１３２は、タイマＴＭ１に設定された第１期間が経過する度に、タイマＴＭ１に設定された第１期間が経過したことをカウンタ１３４および平均算出部１３６に通知する。また、監視制御部１３２は、タイマＴＭ２に設定された第２期間が経過する度に、タイマＴＭ２に設定された第２期間が経過したことをカウンタ１３５およびピーク算出部１３７に通知する。
【００４７】
データ転送量算出部１３３は、論理回路１２０内のバスインタフェース１２１と内部バスＩＢＵＳとの間で転送される制御信号ＢＣＮＴを取得する。そして、データ転送量算出部１３３は、制御信号ＢＣＮＴに含まれるデータサイズを示す情報に基づいて、論理回路１２０のデータ転送量を算出する。そして、データ転送量算出部１３３は、制御信号ＢＣＮＴに基づいて算出した論理回路１２０のデータ転送量を示す情報を、カウンタ１３４、１３５に転送する。
【００４８】
カウンタ１３４は、論理回路１２０のデータ転送量の平均を算出するためのカウンタである。例えば、カウンタ１３４は、第１期間が経過したことを示す信号を監視制御部１３２から受ける度に、カウンタ値を０にリセットする。そして、カウンタ１３４は、論理回路１２０のデータ転送量を示す情報をデータ転送量算出部１３３から受ける度に、データ転送量算出部１３３から受けた情報が示すデータ転送量をカウンタ値に加算する。これにより、カウンタ１３４のカウンタ値は、第１期間当たりの論理回路１２０のデータ転送量を示す。カウンタ１３４のカウンタ値は、平均算出部１３６に通知される。
【００４９】
カウンタ１３５は、論理回路１２０のデータ転送量のピークを算出するためのカウンタである。例えば、カウンタ１３５は、第２期間が経過したことを示す信号を監視制御部１３２から受ける度に、カウンタ値を０にリセットする。そして、カウンタ１３５は、論理回路１２０のデータ転送量を示す情報をデータ転送量算出部１３３から受ける度に、データ転送量算出部１３３から受けた情報が示すデータ転送量をカウンタ値に加算する。これにより、カウンタ１３５のカウンタ値は、第１期間より短い第２期間当たり論理回路１２０のデータ転送量を示す。カウンタ１３５のカウンタ値は、ピーク算出部１３７に通知される。
【００５０】
平均算出部１３６は、カウンタ１３４がリセットされる前のカウンタ値を第１期間当たりのデータ転送量として繰り返し取得し、第１期間当たりのデータ転送量を１秒間当たりのデータ転送量（バイト／秒）に換算する。これにより、１秒間当たりのデータ転送量が第１期間毎に繰り返し算出される。そして、平均算出部１３６は、繰り返し算出した１秒間当たりのデータ転送量のうち、最大値を平均データ転送量ＡＤＡＴＡとして、保持部１３８に格納する。すなわち、平均算出部１３６は、カウンタ１３４のカウンタ値から算出した１秒間当たりのデータ転送量が最大値を更新する度に、保持部１３８に保持されている平均データ転送量ＡＤＡＴＡを更新する。なお、最大値のリセットは、例えば、ＣＰＵ２０２からバスインタフェース１３１を通して実行される。
【００５１】
ピーク算出部１３７は、カウンタ１３５がリセットされる前のカウンタ値を第２期間当たりのデータ転送量として繰り返し取得し、第２期間当たりのデータ転送量を１秒間当たりのデータ転送量（バイト／秒）に換算する。これにより、１秒間当たりのデータ転送量が第２期間毎に繰り返し算出される。そして、ピーク算出部１３７は、繰り返し算出した１秒間当たりのデータ転送量のうち、最大値をピークデータ転送量ＰＤＡＴＡとして、保持部１３９に格納する。すなわち、ピーク算出部１３７は、カウンタ１３５のカウンタ値から算出した１秒間当たりのデータ転送量が最大値を更新する度に、保持部１３９に保持されているピークデータ転送量ＰＤＡＴＡを更新する。なお、最大値のリセットは、例えば、ＣＰＵ２０２からバスインタフェース１３１を通して実行される。
【００５２】
保持部１３８は、平均算出部１３６により算出された平均データ転送量ＡＤＡＴＡを保持する。保持部１３８に保持された平均データ転送量ＡＤＡＴＡは、例えば、バスインタフェース１３１を介してＣＰＵ２０２に転送される。
【００５３】
保持部１３９は、ピーク算出部１３７により算出されたピークデータ転送量ＰＤＡＴＡを保持する。保持部１３９に保持されたピークデータ転送量ＰＤＡＴＡは、例えば、バスインタフェース１３１を介してＣＰＵ２０２に転送される。
【００５４】
ここで、監視回路１３０のカウンタ１３４、１３５のビット幅等の一例を以下に示す。回路領域１１０とバスＢＵＳとの間のバス幅が１２８ビット（１６バイト）で、データ転送に用いるクロックの周波数が１ＧＨｚ（ギガヘルツ）である場合、１秒間当たりのデータ転送量の上限は、１６ギガバイトである。この場合、数秒から数分の間のデータ転送量の累積値は、符号無しの６４ビット以下の値である。また、１秒間当たりのデータ転送量（バイト／秒）に換算した平均データ転送量ＡＤＡＴＡおよびピークデータ転送量ＰＤＡＴＡも、符号無しの６４ビット以下の値である。したがって、２個のカウンタ１３４、１３５と２個の保持部１３８、１３９のビット数の合計は、６４ビットの４倍であり、３２バイト以下である。このように、監視回路１３０の回路規模を回路領域１１０の規模に対して小さくすることができるため、監視回路１３０を回路領域１１０内に設けたことが原因で論理回路１２０が回路領域１１０に収まらなくなることの発生頻度を低減することができる。
【００５５】
なお、論理回路１２０および監視回路１３０の構成は、図３に示す例に限定されない。例えば、第１期間当たりのデータ転送量および第２期間当たりのデータ転送量を１秒間当たりのデータ転送量にそれぞれ換算する処理は、ＣＰＵ２０２で実行されてもよい。この場合、保持部１３８に保持されるデータＡＤＡＴＡが示すデータ転送量は、第１期間当たりのデータ転送量であり、保持部１３９に保持されるデータＰＤＡＴＡが示すデータ転送量は、第２期間当たりのデータ転送量である。
【００５６】
また、回路領域１１０内に複数の論理回路１２０が書き込まれる場合、監視回路１３０は、複数の論理回路１２０で共有されてもよい。この場合、データ転送量算出部１３３は、複数の論理回路１２０の各々と内部バスＩＢＵＳとの間で転送される制御信号ＢＣＮＴを取得する。すなわち、データ転送量算出部１３３は、自身を含む回路領域１１０と図２に示したバスＢＵＳとの間で転送される制御信号ＢＣＮＴを取得する。さらに、この場合、監視回路１３０は、回路領域１１０の外部に固定して設けられてもよい。
【００５７】
図４は、図２に示したデータ処理装置１２の動作の一例を示す。図４に示す論理回路追加処理および再構成処理は、例えば、ソフトウェアでＣＰＵ２０２を制御することにより実現される。なお、図４に示す論理回路追加処理および再構成処理は、コンピュータが回路領域１１０への論理回路１２０の割り当てを管理する論理回路管理方法の一態様である。再構成処理は、例えば、所定の時間間隔で繰り返し実行され、論理回路追加処理と並列に実行可能である。先ず、論理回路追加処理について説明する。
【００５８】
ステップＳ１００では、ＣＰＵ２０２は、論理回路１２０に監視回路１３０を付加する。例えば、ＣＰＵ２０２は、論理回路１２０を実現するための回路情報に、監視回路１３０を実現するための回路情報を付加する。
【００５９】
次に、ステップＳ１１０では、ＣＰＵ２０２は、空きの回路領域１１０を検索する。
【００６０】
次に、ステップＳ１２０では、ＣＰＵ２０２は、空きの回路領域１１０が存在するか否かを判定する。空きの回路領域１１０が存在する場合、ＣＰＵ２０２の動作は、ステップＳ１３０に移る。すなわち、ステップＳ１１０で空きの回路領域１１０が検出された場合、ＣＰＵ２０２の動作は、ステップＳ１３０に移る。一方、空きの回路領域１１０が存在しない場合、ＣＰＵ２０２の動作は、ステップＳ１１０に戻る。すなわち、ステップＳ１１０で空きの回路領域１１０が検出されない場合、ＣＰＵ２０２の動作は、ステップＳ１１０に戻る。この場合、再構成処理のうちの統合処理または論理回路１２０の消去等により空きの回路領域１１０が確保されるまで、ステップＳ１３０の処理は、待機される。
【００６１】
ステップＳ１３０では、ＣＰＵ２０２は、論理回路１２０および監視回路１３０を、空きの回路領域１１０に書き込む。例えば、ＣＰＵ２０２は、監視回路１３０を付加した論理回路１２０を実現するための回路情報、すなわち、ステップＳ１００の処理で生成した回路情報に基づいて、論理回路１２０および監視回路１３０を空きの回路領域１１０に書き込む。これにより、論理回路追加処理は、終了する。次に、再構成処理について説明する。
【００６２】
ステップＳ２００では、ＣＰＵ２０２は、各回路領域１１０に書き込まれた論理回路１２０のデータ転送量を取得する。例えば、ＣＰＵ２０２は、各回路領域１１０に書き込まれた監視回路１３０から平均データ転送量ＡＤＡＴＡおよびピークデータ転送量ＰＤＡＴＡを取得する。
【００６３】
次に、ステップＳ３００では、ＣＰＵ２０２は、統合処理を実行する。統合処理では、ＣＰＵ２０２は、１つの回路領域１１０に割り当て可能な複数の論理回路１２０を検出した場合、検出した複数の論理回路１２０を１つの回路領域１１０に書き込む。なお、統合処理の詳細は、図５で説明する。
【００６４】
次に、ステップＳ４００では、ＣＰＵ２０２は、分割処理対象の回路領域１１０の候補（以下、分割候補とも称する）を検索する分割候補検索処理を実行する。なお、分割処理対象の回路領域１１０は、ステップＳ６００の分割処理の対象となる回路領域１１０である。分割候補検索処理の詳細は、図６で説明する。
【００６５】
次に、ステップＳ５００では、ＣＰＵ２０２は、分割候補が存在するか否かを判定する。分割候補が存在する場合、ＣＰＵ２０２の動作は、ステップＳ６００に移る。すなわち、ステップＳ４００の分割候補検索処理で分割候補が検出された場合、ＣＰＵ２０２の動作は、ステップＳ６００に移る。一方、分割候補が存在しない場合、今回の再構成処理は終了する。すなわち、ステップＳ４００の分割候補検索処理で分割候補が検出されない場合、今回の再構成処理は終了する。
【００６６】
次に、ステップＳ６００では、ＣＰＵ２０２は、１つの回路領域１１０に書き込まれた複数の論理回路１２０を複数の回路領域１１０に分けて書き込む分割処理を実行する。分割処理の詳細は、図７で説明する。分割処理の終了に伴い、今回の再構成処理は終了する。
【００６７】
なお、再構成処理が所定の時間間隔で繰り返し実行されるため、分割処理対象の回路領域１１０を検出する処理および統合処理も所定の時間間隔で繰り返し実行される。また、データ処理装置１２の動作は、図４に示す例に限定されない。例えば、データ処理装置１２は、図８に示すように、分割処理と統合処理とのいずれかを実行してもよい。
【００６８】
図５は、図４に示した統合処理の一例を示す。すなわち、図５は、図４に示したステップＳ３００の一例を示す。例えば、ステップＳ３１０の処理は、図４に示したステップＳ２００の処理が終了した後、実行される。なお、ステップＳ３１０からステップＳ３１４までの処理は、図４に示したステップＳ２００の処理と並列に実行されてもよい。
【００６９】
ステップＳ３１０では、ＣＰＵ２０２は、論理回路１２０が書き込まれた回路領域１１０の中から、２つの回路領域１１０を選択する。
【００７０】
次に、ステップＳ３１２では、ＣＰＵ２０２は、ステップＳ３１０で選択した２つの回路領域１１０内の論理回路１２０の規模の合計ＳＺを算出する。例えば、２つの回路領域１１０の一方に２つの論理回路１２０が書き込まれ、２つの回路領域１１０の他方に１つの論理回路１２０が書き込まれていた場合、ＣＰＵ２０２は、３つの論理回路１２０の規模を合計した値を合計ＳＺとして算出する。
【００７１】
次に、ステップＳ３１４では、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０の規模の合計ＳＺが１つの回路領域１１０の規模以下か否かを判定する。このように、図５に示す例では、ＣＰＵ２０２は、監視回路１３０の規模が回路領域１１０の規模に対して無視できる大きさとして、２つの回路領域１１０内の複数の論理回路１２０が１つの回路領域１１０に収まるか否かを判定する。
【００７２】
合計ＳＺが１つの回路領域１１０の規模以下である場合、ＣＰＵ２０２の動作は、ステップＳ３１６に移る。すなわち、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０が１つの回路領域１１０に収まると判定した場合、動作をステップＳ３１６に移す。一方、合計ＳＺが１つの回路領域１１０の規模を越える場合、ＣＰＵ２０２の動作は、ステップＳ３２６に移る。すなわち、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０が１つの回路領域１１０に収まらないと判定した場合、動作をステップＳ３２６に移す。
【００７３】
ステップＳ３１６では、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０の全体の平均データ量ＡＤｙを算出する。例えば、ＣＰＵ２０２は、図４に示したステップＳ２００で取得した平均データ転送量ＡＤＡＴＡのうち、２つの回路領域１１０内の複数の論理回路１２０の各々の平均データ転送量ＡＤＡＴＡを選択する。そして、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０の各々の平均データ転送量ＡＤＡＴＡの合計を、平均データ量ＡＤｙとして算出する。
【００７４】
次に、ステップＳ３１８では、ＣＰＵ２０２は、平均データ量ＡＤｙが第１閾値以下か否かを判定する。第１閾値は、回路領域１１０とバスＢＵＳとの間のバス帯域（回路領域１１０のデータ転送レート）以下の値に予め設定される。例えば、第１閾値は、回路領域１１０とバスＢＵＳとの間のバス帯域の７割程度の値に予め設定される。
【００７５】
平均データ量ＡＤｙが第１閾値以下である場合、ＣＰＵ２０２の動作は、ステップＳ３２０に移る。一方、平均データ量ＡＤｙが第１閾値を越える場合、ＣＰＵ２０２の動作は、ステップＳ３２６に移る。
【００７６】
ステップＳ３２０では、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０の合計ピークデータ量ＰＤｙを算出する。例えば、ＣＰＵ２０２は、図４に示したステップＳ２００で取得したピークデータ転送量ＰＤＡＴＡのうち、２つの回路領域１１０内の複数の論理回路１２０の各々のピークデータ転送量ＰＤＡＴＡを選択する。そして、ＣＰＵ２０２は、２つの回路領域１１０内の複数の論理回路１２０の各々のピークデータ転送量ＰＤＡＴＡの合計を、合計ピークデータ量ＰＤｙとして算出する。
【００７７】
次に、ステップＳ３２２では、ＣＰＵ２０２は、合計ピークデータ量ＰＤｙが第２閾値以下か否かを判定する。第２閾値は、第１閾値より大きい値に予め設定される。例えば、第２閾値は、回路領域１１０とバスＢＵＳとの間のバス帯域の数倍の値に予め設定される。
【００７８】
合計ピークデータ量ＰＤｙが第２閾値以下である場合、ＣＰＵ２０２の動作は、ステップＳ３２４に移る。一方、合計ピークデータ量ＰＤｙが第２閾値を越える場合、ＣＰＵ２０２の動作は、ステップＳ３２６に移る。
【００７９】
次に、ステップＳ３２４では、ＣＰＵ２０２は、ステップＳ３１０で選択した２つの回路領域１１０を、統合候補の回路領域１１０の組み合わせとして、統合候補Ｙに登録する。統合候補Ｙは、例えば、図５に示す動作を実現するためのプログラムで使用される配列またはテーブル等である。
【００８０】
次に、ステップＳ３２６では、ＣＰＵ２０２は、論理回路１２０が書き込まれた回路領域１１０の中から、２つの回路領域１１０の全ての組み合わせを選択したか否かを判定する。例えば、図２に示した回路領域１１０Ａ、１１０Ｂ、１１０Ｃ、１１０Ｄの全てに論理回路１２０が書き込まれている場合、全ての組み合わせは、以下に示す６通りである。
６通りの組み合わせの内訳は、回路領域１１０Ａ、１１０Ｂの組、回路領域１１０Ａ、１１０Ｃの組、回路領域１１０Ａ、１１０Ｄの組、回路領域１１０Ｂ、１１０Ｃの組、回路領域１１０Ｂ、１１０Ｄの組、回路領域１１０Ｃ、１１０Ｄの組である。
【００８１】
全ての組み合わせを選択した場合、ＣＰＵ２０２の動作は、ステップＳ３２８に移る。一方、選択していない組み合わせが存在する場合、ＣＰＵ２０２の動作は、ステップＳ３１０に戻る。なお、２回目以降のステップＳ３１０では、ＣＰＵ２０２は、既に選択した組み合わせと重複しないように、２つの回路領域１１０を選択する。
【００８２】
ステップＳ３２８では、ＣＰＵ２０２は、統合候補Ｙに登録された組み合わせが存在するか否かを判定する。すなわち、ＣＰＵ２０２は、ステップＳ３１０で選択した回路領域１１０の組み合わせの少なくとも１つの組み合わせを統合候補Ｙに登録したか否かを判定する。統合候補Ｙに回路領域１１０の組み合わせが登録されている場合、ＣＰＵ２０２の動作は、ステップＳ３３０に移る。一方、統合候補Ｙに回路領域１１０の組み合わせが登録されていない場合、統合処理は終了し、ＣＰＵ２０２の動作は、図４に示したステップＳ４００に移る。
【００８３】
ステップＳ３３０では、ＣＰＵ２０２は、統合候補Ｙに登録した組み合わせのうち、ステップＳ３１６で算出した平均データ量ＡＤｙが最小な組み合わせを選択する。平均データ量ＡＤｙが最小な組み合わせの回路領域１１０に含まれる論理回路１２０は、１つの回路領域１１０に割り当てられる論理回路１２０の組み合わせである。すなわち、ＣＰＵ２０２は、ステップＳ３１０からステップＳ３２４までの処理を実行することにより、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせを検出する。そして、ＣＰＵ２０２は、ステップＳ３３０の処理を実行することにより、１つの回路領域１１０に割り当てる論理回路１２０の組み合わせを決定する。
【００８４】
平均データ量ＡＤｙが最小な組み合わせを選択することにより、１つの回路領域１１０に割り当てた複数の論理回路１２０のデータ転送量が所定の転送条件から外れる頻度を低減することができる。
【００８５】
次に、ステップＳ３３２では、ＣＰＵ２０２は、ステップＳ３３０で選択した平均データ量ＡＤｙが最小な組み合わせの回路領域１１０に含まれる論理回路１２０を、１つの回路領域１１０に書き込む。
【００８６】
例えば、ＣＰＵ２０２は、ステップＳ３３０で選択した組み合わせが回路領域１１０Ａ、１１０Ｃの組である場合、回路領域１１０Ａに含まれる論理回路１２０と回路領域１１０Ｃに含まれる論理回路１２０とを、回路領域１１０Ａに書き込む。これにより、回路領域１１０Ｃは、空きの回路領域１１０となる。この結果、回路領域１１０Ｃを新規の論理回路１２０に割り当てることが可能になり、集積回路１００の利用効率を向上することができる。すなわち、論理回路１２０の搭載効率を向上することができる。
【００８７】
ステップＳ３３２の処理が実行されることにより、統合処理は終了し、ＣＰＵ２０２の動作は、図４に示したステップＳ４００に移る。
【００８８】
なお、統合処理の例は、図５に示す例に限定されない。例えば、ステップＳ３２０、Ｓ３２２は、省かれてもよい。また、ＣＰＵ２０２は、ステップＳ３１２において、２つの回路領域１１０内の論理回路１２０および監視回路１３０の規模の合計を、合計ＳＺとして算出してもよい。すなわち、ＣＰＵ２０２は、ステップＳ３１４において、２つの回路領域１１０内の論理回路１２０および監視回路１３０の規模の合計が１つの回路領域１１０の規模以下か否かを判定してもよい。
【００８９】
また、ＣＰＵ２０２は、ステップＳ３３２の処理を、図４に示したステップＳ５００の判定より後に実行してもよい。例えば、ＣＰＵ２０２は、図４に示したステップＳ５００で分割候補が存在すると判定した場合、ステップＳ３３２の処理を図７に示す分割処理のステップＳ６１６の処理と一緒に実行してもよい。また、ＣＰＵ２０２は、図４に示したステップＳ５００で分割候補が存在しないと判定した場合、ステップＳ３３２の処理を実行して再構成処理を終了してもよい。ステップＳ３３２の処理が図４に示したステップＳ５００の判定より後に実行される場合、図４に示すステップＳ４００以降の処理は、ステップＳ３３２の処理が実行されたと仮定した状態に基づいて実行される。例えば、ステップＳ３３２の処理が実行されたと仮定した場合、図７に示すステップＳ６１０で使用される空きの回路領域１１０の数は、現状の空きの回路領域１１０の数に１を加算した数である。
【００９０】
図６は、図４に示した分割候補検索処理の一例を示す。すなわち、図６は、図４に示したステップＳ４００の一例を示す。例えば、ステップＳ４１０の処理は、図４に示したステップＳ３００の統合処理が終了した後、実行される。
【００９１】
ステップＳ４１０では、ＣＰＵ２０２は、複数の論理回路１２０が書き込まれた回路領域１１０が存在するか否かを判定する。複数の論理回路１２０が書き込まれた回路領域１１０が存在する場合、ＣＰＵ２０２の動作は、ステップＳ４１２に移る。一方、複数の論理回路１２０が書き込まれた回路領域１１０が存在しない場合、分割候補検索処理は終了し、ＣＰＵ２０２の動作は、図４に示したステップＳ５００に移る。
【００９２】
ステップＳ４１２では、ＣＰＵ２０２は、複数の論理回路１２０が書き込まれた回路領域１１０の中から、１つの回路領域１１０を選択する。
【００９３】
次に、ステップＳ４１４では、ＣＰＵ２０２は、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の全体の平均データ量ＡＤｚを算出する。例えば、ＣＰＵ２０２は、図４に示したステップＳ２００で取得した平均データ転送量ＡＤＡＴＡのうち、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の各々の平均データ転送量ＡＤＡＴＡを選択する。そして、ＣＰＵ２０２は、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の各々の平均データ転送量ＡＤＡＴＡの合計を、平均データ量ＡＤｚとして算出する。
【００９４】
次に、ステップＳ４１６では、ＣＰＵ２０２は、平均データ量ＡＤｚが第１閾値を越えるか否かを判定する。第１閾値は、例えば、図５に示した統合処理で使用される第１閾値と同じである。平均データ量ＡＤｚが第１閾値を越える場合、ＣＰＵ２０２の動作は、ステップＳ４２２に移る。一方、平均データ量ＡＤｚが第１閾値以下である場合、ＣＰＵ２０２の動作は、ステップＳ４１８に移る。
【００９５】
ステップＳ４１８では、ＣＰＵ２０２は、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の合計ピークデータ量ＰＤｚを算出する。例えば、ＣＰＵ２０２は、図４に示したステップＳ２００で取得したピークデータ転送量ＰＤＡＴＡのうち、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の各々のピークデータ転送量ＰＤＡＴＡを選択する。そして、ＣＰＵ２０２は、ステップＳ４１２で選択した１つの回路領域１１０内の複数の論理回路１２０の各々のピークデータ転送量ＰＤＡＴＡの合計を、合計ピークデータ量ＰＤｚとして算出する。
【００９６】
次に、ステップＳ４２０では、ＣＰＵ２０２は、合計ピークデータ量ＰＤｚが第２閾値を越えるか否かを判定する。第２閾値は、例えば、図５に示した統合処理で使用される第２閾値と同じである。合計ピークデータ量ＰＤｚが第２閾値を越える場合、ＣＰＵ２０２の動作は、ステップＳ４２２に移る。一方、合計ピークデータ量ＰＤｚが第２閾値以下である場合、ＣＰＵ２０２の動作は、ステップＳ４２４に移る。
【００９７】
ステップＳ４２２では、ＣＰＵ２０２は、ステップＳ４１２で選択した１つの回路領域１１０を、分割候補の回路領域１１０として、分割候補Ｚに登録する。分割候補Ｚは、例えば、図６に示す動作を実現するためのプログラムで使用される配列またはテーブル等である。すなわち、ＣＰＵ２０２は、ステップＳ４１２からステップＳ４２２までの処理を実行することにより、複数の論理回路１２０が書き込まれた回路領域１１０の中から、複数の論理回路１２０のデータ転送量が所定の転送条件から外れた回路領域１１０を検出する。
【００９８】
次に、ステップＳ４２４では、ＣＰＵ２０２は、検索対象の全ての回路領域１１０を選択したか否かを判定する。すなわち、ＣＰＵ２０２は、複数の論理回路１２０が書き込まれた回路領域１１０を全て選択したか否かを判定する。検索対象の中に、選択していない回路領域１１０が存在する場合、ＣＰＵ２０２の動作は、ステップＳ４１２に戻る。すなわち、ステップＳ４１２からステップＳ４２２までの処理は、複数の論理回路１２０が書き込まれた全ての回路領域１１０に対して実行される。
【００９９】
一方、検索対象の全ての回路領域１１０を選択した場合、分割候補検索処理は終了し、ＣＰＵ２０２の動作は、図４に示したステップＳ５００に移る。例えば、図４に示したステップＳ５００では、ＣＰＵ２０２は、分割候補Ｚに登録された回路領域１１０が存在するか否かを判定することにより、分割候補が存在するか否かを判定する。すなわち、ＣＰＵ２０２は、分割候補Ｚに回路領域１１０を登録した場合、図４に示したステップＳ５００において、分割候補が存在すると判定する。なお、分割候補検索処理の例は、図６に示す例に限定されない。例えば、ステップＳ４１８、Ｓ４２０は、省かれてもよい。
【０１００】
図７は、図４に示した分割処理の一例を示す。すなわち、図７は、図４に示したステップＳ６００の一例を示す。例えば、ステップＳ６１０の処理は、図４に示したステップＳ５００で分割候補が存在すると判定された場合、実行される。
【０１０１】
ステップＳ６１０では、ＣＰＵ２０２は、空きの回路領域１１０の数がリザーブ数Ｒ（Ｒは、０以上の整数）より多いか否かを判定する。リザーブ数Ｒは、新規の論理回路１２０の追加用に予め予約された数である。ＣＰＵ２０２は、リザーブ数Ｒを参照することにより、新規に追加可能な論理回路１２０の数を容易に検出できる。なお、新規の論理回路１２０の追加用に回路領域１１０を確保しなくてもよい場合は、リザーブ数Ｒは０に設定される。
【０１０２】
空きの回路領域１１０の数がリザーブ数Ｒより多い場合、ＣＰＵ２０２の動作は、ステップＳ６１２に移る。一方、空きの回路領域１１０の数がリザーブ数Ｒ以下である場合、分割処理は、終了する。このように、図７に示す分割処理では、新規の論理回路１２０の追加用に確保していた空きの回路領域１１０が分割処理で使用されることを防止することができる。
【０１０３】
ステップＳ６１２では、ＣＰＵ２０２は、分割候補Ｚに登録した回路領域１１０のうち、図６に示したステップＳ４１４で算出した平均データ量ＡＤｚが最大な回路領域１１０を、分割処理対象の回路領域１１０として選択する。平均データ量ＡＤｚが最大な回路領域１１０に含まれる複数の論理回路１２０は、２つの回路領域１１０に分けて割り当てられる論理回路１２０である。すなわち、ＣＰＵ２０２は、ステップＳ６１２の処理を実行することにより、２つの回路領域１１０に分けて割り当てる複数の論理回路１２０を決定する。平均データ量ＡＤｚが最大な回路領域１１０を選択することにより、性能が最も低下していたと予想される論理回路１２０の性能を向上させることができる。
【０１０４】
次に、ステップＳ６１４では、ＣＰＵ２０２は、平均データ量ＡＤｚが最大な回路領域１１０に含まれる複数の論理回路１２０を、２つのグループに分ける。例えば、ＣＰＵ２０２は、２つのグループのそれぞれの平均データ量ＡＤが第１閾値以下になるように、複数の論理回路１２０を２つのグループに分ける。なお、ＣＰＵ２０２は、平均データ量ＡＤｚが最大な回路領域１１０に３つ以上の論理回路１２０が含まれる場合、２つのグループのそれぞれの平均データ量ＡＤがなるべく等しくなるように、複数の論理回路１２０を２つのグループに分けてもよい。
【０１０５】
次に、ステップＳ６１６では、ＣＰＵ２０２は、ステップＳ６１４で２つのグループに分けた論理回路１２０を、２つの回路領域１１０にそれぞれ書き込む。すなわち、ＣＰＵ２０２は、２つのグループの一方に含まれる論理回路１２０を２つの回路領域１１０の一方に書き込み、２つのグループの他方に含まれる論理回路１２０を２つの回路領域１１０の他方に書き込む。これにより、分割処理は、終了する。
【０１０６】
なお、分割処理の例は、図６に示す例に限定されない。例えば、空きの回路領域１１０の数がリザーブ数Ｒに１を加算した値より多い場合、ＣＰＵ２０２は、ステップＳ６１２において、２つの回路領域１１０を選択してもよい。この場合、ＣＰＵ２０２は、ステップＳ６１４において、２つの回路領域１１０に含まれる複数の論理回路１２０を４つのグループに分けてもよい。そして、ＣＰＵ２０２は、ステップＳ６１６において、４つのグループに分けた論理回路１２０を４つの回路領域１１０にそれぞれ書き込みしてもよい。
【０１０７】
図８は、図２に示したデータ処理装置１２の動作の別の例を示す。図８に示す論理回路追加処理および再構成処理は、例えば、ソフトウェアでＣＰＵ２０２を制御することにより実現される。なお、図８に示す論理回路追加処理および再構成処理は、コンピュータが回路領域１１０への論理回路１２０の割り当てを管理する論理回路管理方法の一態様である。
【０１０８】
図８に示す論理回路追加処理は、図４に示した論理回路追加処理と同一である。図８に示す再構成処理は、ステップＳ３００の統合処理が実行されるタイミングを除いて、図４に示した再構成処理と同一または同様である。図４で説明したステップＳと同一または同様のステップＳについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。例えば、図８に示す再構成処理は、所定の時間間隔で繰り返し実行され、論理回路追加処理と並列に実行可能である。
【０１０９】
ＣＰＵ２０２は、ステップＳ２００の処理を実行した後、ステップＳ４００の分割候補検索処理を実行する。ステップＳ４００の分割候補検索処理は、図６に示した分割候補検索処理と同一である。例えば、図６に示したステップＳ４１０の処理は、ステップＳ２００の処理が終了した後、実行される。
【０１１０】
そして、ＣＰＵ２０２は、ステップＳ４００の分割候補検索処理が終了した後、ステップＳ５００の判定を実行し、分割候補が存在しないと判定した場合、ステップＳ３００の統合処理を実行する。ステップＳ３００の統合処理は、図５に示した統合処理と同一である。例えば、図５に示したステップＳ３１０の処理は、ステップＳ５００で分割候補が存在しないと判定された場合、実行される。そして、ステップＳ３００の統合処理の終了により、今回の再構成処理は終了する。
【０１１１】
なお、ステップＳ５００で分割候補が存在すると判定された場合、ステップＳ６００の分割処理が実行される。ステップＳ６００の分割処理は、図７に示した分割処理と同一である。ステップＳ６００の分割処理の終了により、今回の再構成処理は終了する。
【０１１２】
図９は、図２に示したＣＰＵ２０２による論理回路１２０の管理の一例を示す。図９では、図を見やすくするために、監視回路１３０等の記載を省略している。なお、図９に示す例では、リザーブ数Ｒは０に設定されている。また、図９に示す例では、論理回路１２０ｑのデータ転送量は、他の論理回路１２０より大きく、回路領域１１０とバスＢＵＳとの間のバス帯域とほぼ同じ大きさである。したがって、論理回路１２０ｑと論理回路１２０ｐ等の他の論理回路１２０とを統合した場合のデータ転送量は、所定の転送条件を満たさない。このため、論理回路１２０ｑは、他の論理回路１２０と統合されない。
【０１１３】
論理回路１２０ｍ、１２０ｎが回路領域１１０Ａに書き込まれ、論理回路１２０ｏ、１２０ｐ、１２０ｑが回路領域１１０Ｂ、１１０Ｃ、１１０Ｄにそれぞれ書き込まれた状態では、空きの回路領域１１０は存在しない（図９（ａ））。この場合、新規の論理回路１２０の追加は、統合処理または論理回路１２０の消去等により空きの回路領域１１０が確保されるまで、待機される。
【０１１４】
例えば、ＣＰＵ２０２は、論理回路１２０ｏを消去する指示を、図２に示した入出力インターフェース３２０を介してデータ処理装置１２の外部から受けた場合、回路領域１１０Ｂに書き込まれた論理回路１２０ｏを消去する（図９（ｂ））。これにより、空きの回路領域１１０Ｂが確保される。
【０１１５】
そして、ＣＰＵ２０２は、論理回路１２０ｒを追加する指示を、入出力インターフェース３２０を介してデータ処理装置１２の外部から受けた場合、論理回路１２０ｒを回路領域１１０Ｂに書き込む（図９（ｃ））。
【０１１６】
また、ＣＰＵ２０２は、所定の時間間隔で繰り返し実行する再構成処理（図４または図８に示した再構成処理）により、１つの回路領域１１０に割り当て可能な論理回路１２０の組み合わせとして、論理回路１２０ｒ、１２０ｐを検出する。そして、ＣＰＵ２０２は、論理回路１２０ｒ、１２０ｐを１つの回路領域１１０Ｂに書き込む。これにより、論理回路１２０ｒ、１２０ｐが１つの回路領域１１０Ｂに統合され、空きの回路領域１１０Ｃが確保される（図９（ｄ））。
【０１１７】
また、ＣＰＵ２０２は、所定の時間間隔で繰り返し実行する再構成処理により、１つの回路領域１１０Ａに書き込まれた論理回路１２０ｍ、１２０ｎのデータ転送量が論理回路１２０ｍのデータ転送量の増加に伴い所定の転送条件から外れたことを検出する（図９（ｅ）の破線の×印）。すなわち、ＣＰＵ２０２は、回路領域１１０Ａを分割候補として検出する。
【０１１８】
そして、ＣＰＵ２０２は、論理回路１２０ｍ、１２０ｎを２つの回路領域１１０Ａ、１１０Ｃに分けて書き込む（図９（ｆ））。このように、ＣＰＵ２０２による論理回路１２０の管理により、論理回路１２０の性能低下を抑制しつつ、論理回路１２０の搭載効率を向上することができる。
【０１１９】
ここで、例えば、論理回路１２０のデータ転送量を考慮しない管理方法では、論理回路１２０ｑと論理回路１２０ｐとが１つの回路領域１１０に書き込まれるおそれがある。この場合、１つの回路領域１１０に書き込まれた論理回路１２０ｑ、１２０ｐのデータ転送レートが回路領域１１０のデータ転送レートによって制限され、論理回路１２０ｑ、１２０ｐの性能が低下するおそれがある。また、論理回路１２０ｍのデータ転送量が増加して、回路領域１１０Ａに書き込まれた論理回路１２０ｍ、１２０ｎのデータ転送レートが回路領域１１０Ａのデータ転送レートによって制限される場合でも、回路領域１１０Ａの論理構成は、再構成されない。この場合、論理回路１２０ｑ、１２０ｐの性能は低下する。
【０１２０】
これに対し、ＣＰＵ２０２は、論理回路１２０ｑと論理回路１２０ｑ等の他の論理回路１２０とを統合した場合にデータ転送量が所定の転送条件を満たさないため、論理回路１２０ｑを他の論理回路１２０と統合しない。したがって、論理回路１２０ｑ等の性能が低下することを抑制できる。また、ＣＰＵ２０２は、上述したように、回路領域１１０Ａに書き込まれた論理回路１２０ｍ、１２０ｎのデータ転送レートが回路領域１１０Ａのデータ転送レートによって制限される状態に変化した場合、回路領域１１０Ａの論理構成を再構成する。論理回路１２０ｍ、１２０ｎが２つの回路領域１１０Ａ、１１０Ｃに分割されるため、各回路領域１１０Ａ、１１０Ｃのデータ転送量は、所定の転送条件を満たす。これにより、各論理回路１２０の性能が低下することを抑制できる。
【０１２１】
以上、図２から図９に示す実施形態においても、図１に示した実施形態と同様の効果を得ることができる。例えば、ＣＰＵ２０２は、１つの回路領域１１０に収まる論理回路１２０の組み合わせのうち、所定の転送条件を満たす組み合わせの論理回路１２０を、１つの回路領域１１０に書き込む。これにより、論理回路１２０の性能が低下することを抑制しつつ、集積回路１００の利用効率を向上させることができる。
【０１２２】
さらに、ＣＰＵ２０２は、複数の論理回路１２０が書き込まれた回路領域１１０のうち、複数の論理回路１２０のデータ転送量が所定の転送条件から外れた回路領域１１０を検出して、回路領域１１０の論理構成を再構成する。例えば、データ転送量が所定の転送条件から外れた回路領域１１０に書き込まれた複数の論理回路１２０を複数の回路領域１１０に分けて書き込む。これにより、論理回路１２０の性能が低下することを抑制できる。このように、ＣＰＵ２０２は、論理構成を書き換え可能な集積回路１００に論理回路１２０を効率よく割り当てることができる。
【０１２３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２４】
１０、１２‥データ処理装置；１００‥集積回路；１１０‥回路領域；１２０‥論理回路；１２１、１３１‥バスインターフェース；１３０‥監視回路；１３２‥監視制御部；１３３‥データ転送量算出部；１３４、１３５‥カウンタ；１３６‥平均算出部；１３７‥ピーク算出部；１３８、１３９‥保持部；２００‥制御回路；２０２‥ＣＰＵ；２１０、２１２‥構成部；２２０‥取得部；２３０、２３２‥検出部；３００‥メモリ；３２０‥入出力インタフェース；ＢＵＳ、ＢＵＳ２‥バス；ＩＢＵＳ‥内部バス；ＴＭ１、ＴＭ２‥タイマ
【図１】
0006610271.tif 000002
【図２】
0006610271.tif 000003
【図３】
0006610271.tif 000004
【図４】
0006610271.tif 000005
【図５】
0006610271.tif 000006
【図６】
0006610271.tif 000007
【図７】
0006610271.tif 000008
【図８】
0006610271.tif 000009
【図９】
0006610271.tif 000010