(57)【要約】【課題】  同一処理機能を実現できる複数種類のＦＰＧＡ再構成データの中から、ＦＰＧＡの利用可能なリソース量に合わせて、一番適切なＦＰＧＡ再構成データを自動選択する。【解決手段】    所定数に分割される部分再構成領域に所定の再構成データを書き込んで特定の機能処理を実行する情報処理装置において、管理される部分再構成領域の使用状態で特定される新たに書込可能な部分再構成領域の数に応じて、特定の機能処理が同一となる複数種類の再構成データから書き込むべき１つの再構成データを選択することを特徴とする。【選択図】  図５
2017129951.tif 000002
【特許請求の範囲】
【請求項１】
所定数に分割される部分再構成領域に所定の再構成データを書き込んで特定の機能処理を実行する情報処理装置であって、
特定の機能処理が同一となる複数種類の再構成データと、前記部分再構成領域に書き込まれる再構成データの使用状態とを管理する管理手段と、
前記部分再構成領域の使用状態で特定される新たに書込可能な部分再構成領域の数に応じて、特定の機能処理が同一となる複数種類の再構成データから書き込むべき１つの再構成データを選択する選択手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
選択された所定の再構成データを取得する取得手段と、
前記部分再構成領域に書き込まれていたいずれかの再構成データの削除と、前記取得手段が取得した所定の再構成データの前記部分再構成領域の書込とを制御する制御手段と、
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記部分再構成領域に書き込まれた再構成データに基づく特定の機能処理を実行した後、当該特定の機能処理に対応する再構成データを削除した後、先に削除した再構成データを前記部分再構成領域に書き込むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記部分再構成領域に書き込まれた再構成データのうち、新たに書き込むべき特定の機能処理の優先度よりも高い優先度で、かつ、使用していない再構成データは削除しないことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記管理手段は、１つの特定の機能処理に対して、使用する前記部分再構成領域の数が異なる再構成データを管理することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記管理手段は、処理機能名、再構成データ名、使用する前記部分再構成領域の数、性能情報、優先度、取得先を管理することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記優先度は、所定の再構成データの使用頻度で特定されることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記優先度は、所定の再構成データの再構成時間で特定されることを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記優先度は、所定の再構成データに設定された優先順位で特定されることを特徴とする請求項６に記載の情報処理装置。
【請求項１０】
前記管理手段は、前記部分再構成領域と、再構成データ名、使用状態、前記部分再構成領域のいずれの領域が書換可能かどうかを特定する情報とを関連づけて管理することを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
所定数に分割される部分再構成領域に所定の再構成データを書き込んで特定の機能処理を実行する情報処理装置の制御方法であって、
特定の機能処理が同一となる複数種類の再構成データと、前記部分再構成領域に書き込まれる再構成データの使用状態とを登録手段に登録して管理する管理工程と、
前記部分再構成領域の使用状態で特定される新たに書込可能な部分再構成領域の数に応じて、特定の機能処理が同一となる複数種類の再構成データから書き込むべき１つの再構成データを選択する選択工程と、
選択された所定の再構成データを取得先から取得する取得工程と、
前記部分再構成領域に書き込まれていたいずれかの再構成データの削除と、前記取得工程が取得した所定の再構成データの前記部分再構成領域の書込とを制御する制御工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１２】
請求項１１に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
近年、半導体集積回路装置において、頻繁に発生する機能拡張、パフォーマンス向上の要望を柔軟に対応するために、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの再構成可能な回路装置が適用されている。
【０００３】
ユーザは、所望の処理機能を実現できるＦＰＧＡ再構成データをＦＰＧＡにコンフィグする（書き込む）ことにより、所望のデータ処理を実現する。また、別のＦＰＧＡ再構成データで再コンフィグ（ＦＰＧＡ再構成データの書き換え）により、自由にＦＰＧＡの機能を変えることが可能である。
【０００４】
それから、一個のＦＰＧＡに複数のＦＰＧＡ再構成データをコンフィグし、複数の処理機能を実現することが可能になり、その際、ＦＰＧＡの一部の領域だけを変更し、前記複数の機能の中のどれかを変更することも可能である。
【０００５】
上記部分再構成（Ｐａｒｔｉａｌ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ）技術は、現在使用中の他の処理機能や、変更してはいけない処理機能などに影響せずに、所望の部分だけを変更することを特徴として、公知されている。
【０００６】
従って、新たにＦＰＧＡ再構成データをＦＰＧＡに書き込む際に、ＦＰＧＡの変更できる領域を判明し、その変更できる領域にコンフィグ可能なＦＰＧＡ再構成データを選択し、ＦＰＧＡをコンフィグする必要がある。
【０００７】
一方、同一処理機能を実現できるＦＰＧＡ再構成データでも、複数のバージョンが存在することがある。一般的に、これらのＦＰＧＡ再構成データは、異なる要求仕様に合わせて設計されるものであり、回路規模、消費電力、性能などの属性が異なり、実際の状況に従い、選択すべきものである。
【０００８】
例えば、特許文献１には、同一処理機能を実現できる複数のＦＰＧＡ再構成データが存在し、それぞれの性能と消費電力が異なり、ＦＰＧＡ全体の消費電力が所定の総消費電力値以下に収まるよう、自動的に適切なＦＰＧＡ再構成データが選択される方法が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−２７１６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実際にＦＰＧＡを使用する際に、以下の状況が発生するのは容易に想像できる。
例えば一部の領域（リソース）がとある処理機能（処理機能Ａ）により占有され、残りのリソース量が足りなく、別の処理機能（処理機能Ｂ）を実現するＦＰＧＡ再構成データを書き込めない可能性がある。
その際、従来の方法では、処理機能Ｂのコンフィグを諦めるか、処理機能Ａが動作しなくなり、それに占有されているリソースが解放されるのを待つか、という二つの方法がある。
しかし、もし、処理機能Ａが常にＦＰＧＡリソースを占有する場合、処理機能Ｂのコンフィグはずっと待ち続けることになってしまい、結局、コンフィグは失敗する。
【００１１】
その場合、所望の処理機能Ｂが実現でき、かつ回路規模が小さく、残りのＦＰＧＡリソースにコンフィグできる別のＦＰＧＡ再構成データが存在すれば、そのＦＰＧＡ再構成データを選択すべきであるが、そのＦＰＧＡ再構成データを検出し、自動的に選択する方法がない。
【００１２】
特許文献１には、同じ機能を実現するＦＰＧＡ再構成データの中から、適切なものを選択する方法が記載されているが、あくまで総消費電力値の観点から、適切なものを選択する方法である。このように、ＦＰＧＡのリソース量の制限が考慮されていなく、使用可能なリソースが足りるか否かの観点から、適切なＦＰＧＡ再構成データを自動選択することができないという課題があった。
【００１３】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、同一処理機能を実現できる複数種類のＦＰＧＡ再構成データの中から、ＦＰＧＡの利用可能なリソース量に合わせて、一番適切なＦＰＧＡ再構成データを自動選択できる仕組みを提供することである。
【課題を解決するための手段】
【００１４】
上記目的を達成する本発明の情報処理装置は以下に示す構成を備える。
所定数に分割される部分再構成領域に所定の再構成データを書き込んで特定の機能処理を実行する情報処理装置であって、特定の機能処理が同一となる複数種類の再構成データと、前記部分再構成領域に書き込まれる再構成データの使用状態とを管理する管理手段と、前記部分再構成領域の使用状態で特定される新たに書込可能な部分再構成領域の数に応じて、特定の機能処理が同一となる複数種類の再構成データから書き込むべき１つの再構成データを選択する選択手段と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、同一処理機能を実現できる複数種類のＦＰＧＡ再構成データの中から、ＦＰＧＡの利用可能なリソース量に合わせて、一番適切なＦＰＧＡ再構成データを自動選択できる。
【図面の簡単な説明】
【００１６】
【図１】情報処理装置の構成を示すブロック図である。
【図２】情報処理装置の処理機能の情報を管理するテーブルを示す図である。
【図３】優先度の項目に記載される内容の決める方法の例を示す図である。
【図４】ＦＰＧＡのリソースを管理する表の一例を示す図である。
【図５】情報処理装置の制御方法を示すフローチャートである。
【図６】情報処理装置の制御方法を示すフローチャートである。
【図７】情報処理装置の制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１７】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示す情報処理装置の構成を示すブロック図である。本例は、ＦＰＧＡ装置が適用されている情報処理装置の例である。情報処理装置は、画像形成装置、ファクシミリ装置、ＭＦＰ、プリンタ装置、画像処理装置等が含まれる。
図１において、システム１００は、制御装置１０１、サーバ１０２、再構成可能装置（ＦＰＧＡ）１０３、ネットワーク１０４、ＰＣＩ  Ｅｘｐｒｅｓｓ１０５で構成される。なお、本実施形態に示す情報処理装置は、所定数に分割される部分再構成領域に所定の再構成データを書き込んで特定の機能処理を実行可能に構成されている。また、制御部１０１１が後述するようにテーブルで所定の再構成データを管理している。
制御装置１０１は、制御部１０１１、第１のＩＦ部１０１２、記憶部１０１３、第２のＩＦ部１０１４、及び表示部１０１５で構成される。
【００１８】
制御部１０１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのデバイスからなり、第１のＩＦ部１０１２、記憶部１０１３と第２のＩＦ部１０１４を制御する。
【００１９】
制御部１０１１は、また、第１のＩＦ部１０１２を介して、サーバ１０２へ制御コマンドを送信することができる。図１では、ネットワーク１０４を介して送信しているが、本発明における、どのような送信手段にしても良い。
【００２０】
制御部１０１１は、また、第１のＩＦ部１０１２を介して、サーバ１０２から送信されたＦＰＧＡ１０３の構成データを記憶部１０１３に格納することができる。もちろん、前記構成データを格納せずに、そのままＦＰＧＡ１０３に送信しても良い。制御部１０１１は、また、記憶部１０１３に格納されている情報に基づき、適切な構成データを自動選択することができる。
【００２１】
制御部１０１１は、また、第２のＩＦ部１０１４を介して、ＦＰＧＡ１０３へ構成データと制御コマンドを送信することができる。図１では、ＰＣＩ  Ｅｘｐｒｅｓｓ１０５を介して、送信しているが、本発明における、どのような送信手段にしても良い。制御部１０１１は、また、表示部１０１５を介して、ユーザに文字や、画像などを提示することができる。第１のＩＦ部１０１２は、ＴＣＰ／ＩＰインタフェースなど、サーバ１０２と通信できるインタフェースの回路装置である。
記憶部１０１３は、ＲＡＭやＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の大容量記憶装置からなり、ＦＰＧＡ１０３の構成データを格納することができる。記憶部１０１３は、また、ＦＰＧＡ１０３の構成状態情報、及びサーバ１０２から送信された構成データの属性情報を格納することができる。
第２のＩＦ部１０１４は、ＰＣＩ  Ｅｘｐｒｅｓｓなど、ＦＰＧＡ１０３と通信できるインタフェースの回路装置である。表示部１０１５は、液晶ディスプレイ等から成る表示手段と表示手段に対する制御を行う表示制御手段からなり、制御部１０１１の制御により、文字や画像などを表示する。サーバ１０２は、記憶部１０２１とＩＦ部１０２２で構成される。
【００２２】
記憶部１０２１は、ＨＤＤや、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの大容量記憶装置からなり、ＦＰＧＡ１０３の構成データを格納し、ＩＦ部１０２２を介して、制御装置１０１に送信することができる。ＩＦ部１０２２は、ＴＣＰ／ＩＰインタフェースなど、制御装置１０１と通信できるインタフェースの回路である。制御装置１０１から制御コマンドを受信し、所望の構成データを送信することができる。ＦＰＧＡ１０３は、再構成制御部１０３１、ＩＦ部１０３２、機能実行部１０３３で構成される。
【００２３】
再構成制御部１０３１は、ハードウェア回路からなり、ＩＦ部１０３２を介して、ＦＰＧＡ１０３の構成データを受信し、機能実行部１０３３を書き換えることができる。また、機能実行部１０３３の全体を再構成しても良いし、その一部だけを再構成しても良い。
【００２４】
ＩＦ部１０３２は、ＰＣＩ  Ｅｘｐｒｅｓｓなど、制御装置１０１と通信できるインタフェースの回路である。制御装置１０１から制御コマンド、及び構成データを受信し、制御装置１０１に機能実行完了などの通知を送信することができる。機能実行部１０３３は、ＦＰＧＡ、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）や、ＲＡＭからなり、再構成制御部１０３１に制御され、ＩＦ部１０３２を介して、受信した構成データが書き込まれると、所定の処理機能を実現できる回路である。また、説明の便宜上、以下は再構成装置１０３をＦＰＧＡ１０３と称する。
また、構成データをコンフィグデータと称する。ネットワーク１０４は、本実施形態における、制御装置１０１とサーバ１０２との通信手段の一例であり、他の手段にしても、本発明に影響がない。ＰＣＩ  Ｅｘｐｒｅｓｓ１０５は、本実施形態における、制御装置１０１とＦＰＧＡ１０３との通信手段の一例であり、他の手段にしても、本発明に影響がない。
【００２５】
図２は、本実施形態を示す情報処理装置の処理機能の情報を管理するテーブルを示す図である。なお、制御部１０１１は、処理機能名、再構成データ名、使用する部分再構成領域の数、性能情報、優先度、取得先を記憶部１０１３に登録して管理する。なお、制御部１０１１は、図４で後述する部分再構成領域と、再構成データ名、使用状態、前記部分再構成領域のいずれの領域が書換可能かどうかを特定する情報とを関連づけて再構成データを管理している。
図２において、コンフィグデータ管理表２００には、処理機能２０１、コンフィグデータ２０２、所要リソース量２０３、性能２０４、優先度２０５、パス２０６などの項目が含まれる。コンフィグデータ管理表２００には、サーバ１０２に格納されているすべてのコンフィグデータが管理されている。
処理機能２０１の項目には、すべての種類の処理機能が記載されている。例えば、セキュリティ機能Ａ、画像処理機能Ｂ、画像処理機能Ｃなどが記載されている。ここで、画像処理機能Ｂについては、複数種類（３種類）の再構成データを備え、ＦＰＧＡから削除される面数に応じたいずれかの再構成データが書き込まれるように制御される。
【００２６】
コンフィグデータ２０２の項目には、処理機能２０１に記載されている処理機能を実現できるすべてのコンフィグデータが記載されている。例えば、セキュリティ機能Ａを実現できるコンフィグデータは１個（Ａ＿ＨＩＧＨ）存在し、画像処理機能Ｂを実現できるコンフィグデータは３個存在する（Ｂ＿ＨＩＧＨ、Ｂ＿ＭＩＤ、Ｂ＿ＬＯＷ）。
また、前述のように、画像処理機能Ｂ、画像処理機能Ｃを実現できるコンフィグデータは複数個存在し、それぞれが異なる性能を出せるものであり、所要リソース量も異なる。
【００２７】
所要リソース量２０３の項目には、前記コンフィグデータをコンフィグする際に、必要な最小限のリソース量が記載されている。例えば、ＦＰＧＡの利用可能な総リソース量を４面と仮定し、コンフィグデータＢ＿ＨＩＧＨにはその中の３面が必要であり、コンフィグデータＢ＿ＭＩＤにはその中の２面が必要である。
【００２８】
性能２０４の項目には、前記コンフィグデータ２０２をコンフィグした後に、処理機能を実行する際に、予想される性能が記載されている。例えば、複写機の場合、前記コンフィグデータＡ＿ＨＩＧＨの性能は、１分間で処理できる画像のページ数で評価され、８０ｐｐｍ（Ｐａｇｅ  Ｐｅｒ  Ｍｉｎｕｔｅ）と記載される。
本実施形態では処理速度を持って性能を評価しているが、これはあくまで一例であり、他の基準で性能を評価しても構わない。
【００２９】
また、一般的に、性能が高ければ、高いほど所要リソース量が多くなるため、処理機能ＢのＨＩＧＨ、ＭＩＤ、ＬＯＷのコンフィグデータがそれぞれ３面、２面、１面のリソース量が必要であるとする。
優先度２０５の項目には、各処理機能の優先度が記載されている。例えば、Ａはセキュリティ機能であるため、優先度が高い。それに対し、Ｂ、Ｃは普通の画像処理であるため、優先度が低い。前記優先度は設計者が事前に決めたことであり、その決め方は、どういう方法にしても構わない。
【００３０】
パス２０６の項目には、各コンフィグデータが格納されている場所が記載されている。制御装置１０１が、ＦＰＧＡ１０３にコンフィグデータを送信する際に、上記パスを参照し、コンフィグデータを取得する。制御装置１０１の制御部１０１１は、上記コンフィグデータ管理表２００を記憶部１０１３に格納し、ＦＰＧＡ１０３をコンフィグする際に、それを参照し、適切なコンフィグデータを選択する。
【００３１】
図３は、図２に示した優先度２０５の項目に記載される内容の決定方法を示す図である。以下は図３の（Ａ）の優先順位決定表３００を詳細に説明する。
図３の（Ａ）において、処理機能３０１の項目には、各処理機能名Ａ、Ｂ、Ｃが記載されている。処理機能種類３０２の項目には、各処理機能の種類が記載されている。例えば、Ａは特定な画像パターンを検出すると、コピー禁止を行うセキュリティ処理機能であり、Ｂは裏写りを除去する画像の補正処理である。
また、設計者が事前に決めた基準は、セキュリティ系の処理機能の優先度が高く、一般の画像処理の優先度が低い。その場合、優先度３０３の項目には、Ａの優先度がＨＩＧＨとなり、ＢとＣの優先度がＬＯＷとなる。
【００３２】
次に、図３の（Ｂ）、図３の（Ｃ）について説明する。表の構成は基本同じなので、図３の（Ａ）との差分だけを説明する。
図３の（Ｂ）の使用頻度３０４の項目には、各処理機能が使用される頻度の予想が記載されている。例えば、機能Ａはほとんどのジョブに使わることが予想されて、使用頻度３０４が９０％である。それに対し、機能Ｃはあんまり使用されないことが予想されて、使用頻度３０４が２０％である。
また、設計者が事前に決めた基準は、頻繁に使用される機能（予想使用頻度８５％以上）は優先度高く、他の処理の優先度が低い。その場合、優先度３０３の項目には、Ａの優先度がＨＩＧＨとなり、ＢとＣの優先度がＬＯＷとなる。
【００３３】
図３の（Ｃ）の再構成所要時間（再構成時間）３０５の項目には、各処理機能をＦＰＧＡにコンフィグするのに必要な時間が記載されている。例えば、機能Ａの回路規模、及びコンフィグのオーバーヘッドが大きく、再構成するために５秒必要である。それに対し、機能Ｂ、Ｃのコンフィグは１秒しか要らない。
また、設計者が事前に設定した基準は、構成時間の節約のために、再構成所要時間３０５が長い（３秒以上）機能は優先度高く、他の処理の優先度が低い。その場合、優先度３０３の項目には、Ａの優先度がＨＩＧＨとなり、ＢとＣの優先度がＬＯＷとなる。上記優先度３０３の項目に記載されている内容は、図２の優先度２０５の項目に反映される。また、上記以外の方法で優先度を決めても良い。
【００３４】
図４は、図１に示したＦＰＧＡ１０３のリソースを管理する表の一例を示す図である。以下は図４の（Ａ）のＦＰＧＡリソース管理表４００を詳細に説明する。制御部１０１１は、ＦＰＧＡリソース管理表４００を構成する部分再構成領域と、再構成データ名、使用状態、前記部分再構成領域のいずれの領域が書換可能かどうかを特定する情報を記憶部１０１３に登録して管理する。
図４の（Ａ）において、部分再構成可能領域４０１の項目には、ＦＰＧＡ１０３の中に、部分再構成機能を持つ領域の番号が記載されている。例えば、ＦＰＧＡが４面の部分再構成領域があり、領域Ｉ、領域ＩＩ、領域ＩＩＩ、領域ＩＶに分かれている。
【００３５】
コンフィグ状態４０２の項目には、各領域にコンフィグされているコンフィグデータが記載されている。例えば、領域Ｉ、領域ＩＩがコンフィグデータＡ＿ＨＩＧＨに占有されて、領域ＩＩＩ、領域ＩＶはコンフィグデータＢ＿ＭＩＤ占有されている。なお、コンフィグデータ管理表２００により、Ａ＿ＨＩＧＨとＢ＿ＭＩＤはそれぞれリソース２面が必要である。
【００３６】
使用状態４０３の項目には、各コンフィグされた処理機能が実際に動作しているか否かの状態が記載されている。例えば、図４の（Ａ）の場合、処理機能Ａが動作していなく、処理機能Ｂが実際に動作している。
【００３７】
書込可能かを示す書き換え可否４０４の項目には、ＦＰＧＡ１０３の各部分再構成可能領域４０１に新しいコンフィグデータを書き込み、元々のコンフィグデータを書き換えられるか否かの状態が記載されている。例えば、図４の（Ａ）の場合、すべての領域が書き換え不可になっている。
また、図４の（Ｂ）については、図４の（Ａ）の差分だけを説明する。
使用状態４０３の項目には、機能Ａと機能Ｂ両方とも動作していないことが記載されている。書き換え可否４０４の項目には、領域Ｉ、ＩＩは書換え不可の状態、領域ＩＩＩ、ＩＶは書き換え可能の状態となっている。
また、上記書き換え可否の判断については、コンフィグデータ管理表２００とＦＰＧＡリソース管理表４００に記載されている内容に基づき、自動的に判断されている。詳細の判断方法は図５に示すフローチャートを参照して説明する。
【００３８】
以下、図５、図６を使って、上記書き換え可否の判断方法、及びその判断結果に基づき、自動的に適切なコンフィグデータを選択するシステムの動作を説明する。
【００３９】
図５は、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。なお、Ｓ５０１〜Ｓ５１５は、制御装置１０１の制御部１０１１が、ＦＰＧＡリソース管理表４００とコンフィグデータ管理表２００から情報を取得し、書き換え可能なＦＰＧＡの領域数に合わせて、自動的に性能が一番良いコンフィグデータを選択する動作の流れである。なお、各ステップは、制御装置１０１の記憶部１０１３に格納され、制御部１０１１に実行される。以下、ＦＰＧＡ１０３が図４の（Ｂ）の状態であり（処理機能Ａ、処理機能Ｂがコンフィグされて、両方とも未使用の状態である）、処理機能Ｃをさらに実装しようする例を説明する。これにより、図４の（Ｂ）の状態が図４の（Ｃ）の状態に遷移する。
【００４０】
制御部１０１１が、第２のＩＦ部１０１４を介して、ＦＰＧＡ１０３に命令を送信し、また、第２のＩＦ部１０１４を介して、ＦＰＧＡ１０３のリソース管理表４００を取得し、記憶部１０１３に格納する（Ｓ５０１）。
制御部１０１１が、ＦＰＧＡリソース管理表４００を参照し、各領域の書き換え可否を判断する（Ｓ５０２）。書き換え可否の判断は図６で詳細に説明する（Ｓ５１６〜Ｓ５２７）。
次に、制御部１０１１が、書き換え可能な総領域数を取得する。本実施形態の場合、書き換え可能な領域数は２面（図４参照）である（Ｓ５０３）。制御部１０１１が、記憶部１０１３に格納されているコンフィグデータ管理表２００を参照する（Ｓ５０４）。制御部１０１１が、コンフィグデータ管理表２００の処理機能２０１の項目から、処理機能Ｃを探し、特定する（Ｓ５０５）。
【００４１】
制御部１０１１が、コンフィグデータ管理表２００のコンフィグデータ２０２の項目から、処理機能Ｃを実現できるすべてのコンフィグデータを特定する。本実施形態の場合、Ｃ＿ＨＩＧＨ、Ｃ＿ＭＩＤ、Ｃ＿ＬＯＷの三つのコンフィグデータが特定される（Ｓ５０６）。
【００４２】
制御部１０１１が、コンフィグデータ管理表２００の所要リソース量２０３の項目から、各コンフィグデータの所要リソース量を取得する（Ｓ５０７）。本実施形態の場合、Ｃ＿ＨＩＧＨは３面必要、Ｃ＿ＭＩＤは２面必要、Ｃ＿ＬＯＷは１面必要である。
【００４３】
次に、制御部１０１１が、コンフィグデータ管理表２００の性能２０４の項目の情報を参照し、Ｓ５０６で特定されたコンフィグデータの中に、性能が一番高いものから比較する。本実施形態の場合、Ｃ＿ＨＩＧＨのコンフィグデータから比較する（Ｓ５０８）。制御部１０１１が、Ｓ５０７で取得したＣ＿ＨＩＧＨのコンフィグデータの所要リソース量（３面）とＳ５０３で取得した書き換え可能な領域数（２面）と比較する（Ｓ５０９）。具体的には、制御部１０１１が、Ｃ＿ＨＩＧＨの所要リソース量２０３が書換可能な領域数を越えているかどうかを判断する。
【００４４】
制御部１０１１が、Ｓ５０９の比較結果を見て、「Ｃ＿ＨＩＧＨの所要リソース」＞「書き換え領域数」でないと判断した場合、Ｃ＿ＨＩＧＨを一番適切なコンフィグデータとして選択し、パス２０６の項目から、実際のコンフィグデータを取得して（Ｓ５１０）、本処理を終了する。
【００４５】
一方、制御部１０１１が、Ｓ５０９の比較結果を見て、「Ｃ＿ＨＩＧＨの所要リソース」＞「書き換え領域数」であると判断した場合、Ｓ５１１へ進む。そして、Ｃ＿ＭＩＤのコンフィグデータの所要リソース量（２面）とＳ５０３で取得した書き換え可能領域数（２面）と比較する（Ｓ５１１）。具体的には、制御部１０１１が、Ｃ＿ＭＩＤの所要リソース２０３が書換可能な領域数を越えているかどうかを判断する。
【００４６】
制御部１０１１が、Ｓ５１１の比較結果をみて、「Ｃ＿ＭＩＤの所要リソース」＞「書き換え領域数」でないと判断した場合、Ｃ＿ＭＩＤを一番適切なコンフィグデータとして選択し、パス２０６の項目から、実際のコンフィグデータを取得して（Ｓ５１２）、本処理を終了する。
【００４７】
一方、制御部１０１１が、Ｓ５１１の比較結果を見て、「Ｃ＿ＭＩＤの所要リソース」＞「書き換え領域数」であると判断した場合、Ｓ５１３へ進む。そして、Ｃ＿ＬＯＷのコンフィグデータの所要リソース量（１面）とＳ５０３で取得した書き換え可能領域数（２面）と比較する（Ｓ５１３）。具体的には、制御部１０１１が、Ｃ＿ＬＯＷの所要リソース２０３が書換可能な領域数を越えているかどうかを判断する。
【００４８】
ここで、制御部１０１１が、Ｓ５１３の比較結果をみて、「Ｃ＿ＬＯＷの所要リソース」＞「書き換え領域数」でないと判断した場合、Ｃ＿ＬＯＷを一番適切なコンフィグデータとして選択し、パス２０６の項目から、実際のコンフィグデータを取得して（Ｓ５１４）、本処理を終了する。
【００４９】
一方、制御部１０１１が、Ｓ５１３の比較結果を見て、「Ｃ＿ＬＯＷの所要リソース」＞「書き換え領域数」であると判断した場合、処理機能Ｃを実現できるコンフィグデータは全部ＦＰＧＡにコンフィグすることはできないと判断し、ユーザに表示部１０１５を介して提示して（Ｓ５１５）、本処理を終了する。
本実施形態の場合、書き換え可能な領域数は２面であるので、上記方法により、Ｃ＿ＭＩＤが適切なコンフィグデータとして自動的に選択される。
【００５０】
図４の（Ｃ）は、上記方法でコンフィグデータを選択し、コンフィグした後のＦＰＧＡリソース管理表４００の状態を示している。
書き換え可能な領域（領域ＩＩＩ、領域ＩＶ）にコンフィグされていた処理機能Ｂのコンフィグデータは処理機能Ｃのコンフィグデータに書き換えられた。書き換え不可な領域（領域Ｉ、領域ＩＩ）にコンフィグされていた処理機能Ａのコンフィグデータは影響されていない。
【００５１】
図６は、本実施形態を示す情報処理装置の制御方法を示すフローチャートである。本例は、制御装置１０１の制御部１０１１が、記憶部１０１３の中に格納されているＦＰＧＡリソース管理表４００を利用し、書き換え可能な領域を特定する処理例であり、各ステップは、制御装置１０１の記憶部１０１３に格納され、制御部１０１１により実行される。以下、図５に示したＳ５０２の詳細手順について説明する。
制御部１０１１が、ＦＰＧＡリソース管理表４００の各領域を書き換え不可状態にする（Ｓ５１６）。制御部１０１１が、記憶部１０１３に格納されているＦＰＧＡリソース管理表４００を参照する（Ｓ５１７）。
制御部１０１１が、順番に、ＦＰＧＡ１０３のすべての領域（本実施形態の場合、領域Ｉ、ＩＩ、ＩＩＩ、ＩＶ）に対応する情報を参照する。本実施形態では、領域Ｉから参照する（Ｓ５１８）。
制御部１０１１が、ＦＰＧＡリソース管理表４００のコンフィグ状態４０２の項目に記載れている内容に基づき、該当領域がコンフィグされているか否かを判断する（Ｓ５１９）。
【００５２】
制御部１０１１が、Ｓ５１９の判断結果を見て、コンフィグされていないと判断した場合、該当領域を書き換え可能にして（Ｓ５２０）、Ｓ５２６へ進む。
一方、コンフィグされていると制御部１０１１が判断した場合、該当領域の使用状態４０３を参照する（Ｓ５２１）。次に、制御部１０１１が、該当領域にコンフィグされている処理機能（本実施形態の場合、処理機能Ｂ）が動作しているか否かを判断する（Ｓ５２２）。
なお、制御部１０１１が、Ｓ５２２の判断結果を見て、処理機能Ｂが動作していると判断した場合も、Ｓ５２６の判断に移る。
制御部１０１１が、Ｓ５２２の判断結果を見て、処理機能Ｂが動作していないと判断した場合、記憶部１０１３に格納されているコンフィグデータ管理表２００を参照する（Ｓ５２３）。
【００５３】
制御部１０１１が、コンフィグデータ管理表２００の優先度２０５の項目から、機能Ｂの優先度を参照し、優先度が「ＬＯＷ」であるか、「ＨＩＧＨ」であるかを判断する（Ｓ５２４）。制御部１０１１が、Ｓ５２４の判断結果を見て、優先度２０５が「ＬＯＷ」であると判断した場合、Ｓ５２０と同じように、該当領域を書き換え可能にして（Ｓ５２５）、Ｓ５２６へ進む。
また、制御部１０１１が、Ｓ５２４の判断結果を見て、優先度２０５が「ＨＩＧＨ」である場合、該当領域の書き換え可否の属性を変えずに、すべての領域に対して探索完了したか否かを判断する（Ｓ５２６）。
【００５４】
ここで、制御部１０１１が、Ｓ５２６の判断結果を見て、すべての領域に対し、判断を完了していない場合、Ｓ５１８に移り、次の領域の判断を行う。
一方、制御部１０１１が、Ｓ５２６の判断結果を見て、すべての領域に対し、判断を完了している場合、総書き換え可能な領域数を取得する（Ｓ５２７）。
上記方法で、処理機能ＣをＦＰＧＡ１０３にコンフィグしようとする際に、書き換え可能なリソース量を算出することはできる。
【００５５】
〔第２実施形態〕
第１実施形態では、優先度２０５は「ＬＯＷ」の処理機能のコンフィグデータをコンフィグする際の動作を説明したが、以下、第２実施形態で、優先度は「ＨＩＧＨ」の処理機能のコンフィグデータをコンフィグする際の動作を説明する。第２実施形態の説明は、第１実施形態との差分を中心に説明する。
【００５６】
図４の（Ｄ）は、ＦＰＧＡリソースの使用状況の一例を示している。ＦＰＧＡ１０３のリソースは、コンフィグデータＢ＿ＨＩＧＨにより、４面の中の３面が占有されている。ただし、図４の（Ｄ）の使用状態４０３から明らかなように、Ｂ＿ＨＩＧＨは動作していない。
第２実施形態は、上記図４の（Ｄ）に示された状態で、優先度２０５は「ＨＩＧＨ」である処理機能ＡをさらにＦＰＧＡ１０３にコンフィグしようとする際、システムの動作を説明する例である。
【００５７】
図７は、本実施形態を示す情報処理装置の制御方法を説明するフローチャートである。本例は、制御装置１０１の制御部１０１１が、処理機能Ａを優先的にＦＰＧＡ１０３にコンフィグし、その後、ＦＰＧＡ１０３の残りのリソース量を考慮し、処理機能Ｂを実現できるコンフィグデータの中から、適切なものを選択する処理例であり、各ステップは、制御装置１０１の記憶部１０１３に格納され、制御部１０１１により実行される。
【００５８】
制御部１０１１が、記憶部１０１３から、コンフィグデータ管理表２００を取得し、これからコンフィグしようとする処理機能の優先度２０５を判断する（Ｓ６０１）。ここで、制御部１０１１が、Ｓ６０１の判断結果を見て、処理機能Ｂの優先度２０５は「ＬＯＷ」である場合、Ｓ５０１〜Ｓ５１５に記載されている方法で、該当処理機能を実現できるコンフィグデータを自動選択し、ＦＰＧＡ１０３をコンフィグする（Ｓ６０２）。
【００５９】
制御部１０１１が、Ｓ６０１の判断結果を見て、優先度２０５が「ＨＩＧＨ」である場合、ＦＰＧＡリソース管理表４００を記憶部１０１３から取得し、表の中のコンフィグ状態４０２の項目に記載されている内容を記憶部１０１３に格納する。本実施形態の場合、「Ｂ＿ＨＩＧＨがコンフィグされている」という情報が記憶部１０１３に格納される（Ｓ６０３）。
【００６０】
制御部１０１１が、第２のＩＦ部１０１４を介して、ＦＰＧＡ１０３にコマンドを発行し、すべてのコンフィグ済みのデータを削除する（Ｓ６０４）。制御部１０１１が、Ｓ５０１〜Ｓ５１５に記載されている方法で、コンフィグデータを自動選択し、コンフィグしようとする処理機能をＦＰＧＡ１０３に書き込む。本実施形態の場合、Ａ＿ＨＩＧＨがコンフィグされる（Ｓ６０５）。
【００６１】
制御部１０１１が、Ｓ６０３で格納された情報を参照し、元々がコンフィグされていた、Ｓ６０４で削除された処理機能を再コンフィグしようとする。本実施形態の場合、制御部１０１１が、処理機能Ｂが削除されたことを判明し、処理機能Ｂを再コンフィグしようとする（Ｓ６０６）。
【００６２】
制御部１０１１が、また、Ｓ５０１〜Ｓ５１５に記載されている方法で、適切なコンフィグデータを選択し、Ｓ６０４で削除された機能を再コンフィグする。本実施形態の場合、その時のＦＰＧＡリソース残量を考慮し、元々のＢ＿ＨＩＧＨの代わりに、「Ｂ＿ＭＩＤ」が選択されて、ＦＰＧＡをコンフィグする（Ｓ６０７）。これにより、図４の（Ｂ）はコンフィグ後のＦＰＧＡリソース管理表を示している。
【００６３】
また、Ｓ６０７でコンフィグデータの変更が発生した際に、制御装置１０１の記憶部１０１３にＢ＿ＭＩＤのコンフィグデータがある場合、そのままＦＰＧＡ１０３をコンフィグするが、Ｂ＿ＭＩＤのコンフィグデータがないと判断した場合、第１のＩＦ部１０１２を介して、サーバ１０２からＢ＿ＭＩＤのコンフィグデータを受信しても良い。
次に、制御部１０１１が、コンフィグ後のＦＰＧＡリソース管理表４００から、処理機能Ｂのコンフィグデータ情報を抽出し、Ｓ６０３で格納した元々のコンフィグデータ情報と比較する（Ｓ６０８）。制御部１０１１が、Ｓ６０８の比較結果を見て、差分がある場合、表示部１０１５を介してユーザに提示する（Ｓ６０９）。
【００６４】
上記方法で、後から優先度２０５が高い処理機能をコンフィグする際に、優先度２０５が高い機能が先にコンフィグされ、残りのリソース残量に合わせて、元々コンフィグされていた優先度より低い機能を復元させることができ。また、その際、性能差がある場合、ユーザに提示することができる。
なお、本実施形態は、ＦＰＧＡで再構成データを書き換える情報処理装置について説明したが、ＣＰＬＤ  （Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）を備える情報処理装置についても適用可能である。
【００６５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６６】
１０１  制御装置
１０３  再構成可能装置
【図１】
2017129951.tif 000003
【図２】
2017129951.tif 000004
【図３】
2017129951.tif 000005
【図４】
2017129951.tif 000006
【図５】
2017129951.tif 000007
【図６】
2017129951.tif 000008
【図７】
2017129951.tif 000009