(57)【要約】【課題】PLD内に構成する論理回路を入れ替える処理を効率よく行う。【解決手段】プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、複数の領域内に構成済みの複数の第１の論理回路と、構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、処理をコンピュータに実行させるPLD制御プログラム。【選択図】図１１
2018018198.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、
処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラム。
【請求項２】
前記処理は、さらに、
前記選択した置換対象の第１の論理回路内の状態データを退避する退避要求を出力し、
前記第２の論理回路を構成する構成データを、前記選択された置換対象の第１の論理回路が構成されていた領域に設定して、前記第２の論理回路を構成する構成要求を出力し、
前記第２の論理回路が動作再開の場合、前記第２の論理回路の退避済みの状態データを、前記構成された第２の論理回路に復元する復元要求を出力する、ことを有する、請求項１に記載のPLD制御プログラム。
【請求項３】
前記選択することは、前記第１の論理回路の前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、請求項１に記載のPLD制御プログラム。
【請求項４】
前記選択することは、前記複数の第１の論理回路のうち、それぞれの未使用時間が最も長い複数の第１の論理回路から、前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、請求項３に記載のPLD制御プログラム。
【請求項５】
前記選択することは、未使用時間から前記退避復元時間に所定の重み値を乗じた値を減じた評価値が大きいものを優先して、前記置換対象の論理回路を選択する、請求項３に記載のPLD制御プログラム。
【請求項６】
前記退避及び復元時間は、前記論理回路それぞれに予め決められた固定時間である、請求項１に記載のPLD制御プログラム。
【請求項７】
前記退避及び復元時間は、前記論理回路の動作状態に対応して異なる可変時間である、請求項１に記載のPLD制御プログラム。
【請求項８】
プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、
処理をコンピュータに実行させるPLD制御方法。
【請求項９】
論理回路を再構成可能な複数の領域を有し、前記複数の領域それぞれに論理回路を再構成可能なプログラマブルロジックデバイス（以下PLD）と、
前記PLD内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する処理を実行するプロセッサと、を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置に関する。
【背景技術】
【０００２】
プログラマブルロジックデバイス（Programmable Logic Device, PLD）は、予め複数の論理回路要素、メモリ回路要素、配線、スイッチ等が形成された集積回路装置に、所定の処理を実行可能な回路を構成するための構成データが設定または書込まれると、所定の処理を実行可能な回路を再構成する。PLDに接続されたプロセッサなどの制御回路は、所定の処理をハードウエアの専用回路で実行するとき、専用回路を構成するための構成データをPLDに設定または書込みPLD内に専用回路を構成し、その専用回路に所定の処理を実行させる。このようなPLDは、例えばFPGA（Field Programmable Gate Array）など、構成データを書き換えることで内部の回路を様々な論理回路に再構成可能なLSIである。
【０００３】
制御回路は、あるタスクの処理を実行するとき、そのタスクの処理を実行する論理回路をPLD内に構成し、そのタスクの処理が終了後、異なるタスクの処理を実行するとき、PLD内にその異なるタスクの処理を実行する異なる論理回路を再構成する。PLDは、複数のタスクの処理をそれぞれ実行する複数の論理回路に再構成できるので、実行可能な処理についてソフトウエアのような柔軟性を有し、且つ複数のタスクの処理を専用の論理回路で高速に実行できる。
【０００４】
PLDについては以下の特許文献に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２９８６号公報
【特許文献２】特開２００６−３３３４９６号公報
【特許文献３】特開２００４−２１４２６号公報
【特許文献４】特開平１１−１８４７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
PLDにおいて、プログラマブル論理回路群の一部の第１の領域に第１の論理回路の構成データを設定してその回路を構成し、第１の領域とは異なる第２の領域に第２の論理回路の構成データを設定してその回路を構成し、且つ、第１、第２の論理回路を独立に構成、実行、変更することが提案されている。
【０００７】
そのため、今後、プロセッサとPLDを混載した情報処理装置が、現在のサーバのように汎用の計算能力を提供することが予測される。その場合、単一のCPUが複数のタスクを時分割で実行するように、単一のPLDにおいて複数のタスクをそれぞれ処理する複数の論理回路が非同期で構成され動作する。複数の論理回路が非同期で構成され動作する場合、全タスクの論理回路数がPLD内のプログラマブル論理回路群の回路リソースを超えた場合、PDL内の論理回路を入れ替えながら時分割にタスクの処理を行うことになる。
【０００８】
そこで，本発明の目的は，PLD内に構成する論理回路を入れ替える処理を効率よく行うプログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本開示の第１の側面は，プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラムである。
【発明の効果】
【００１０】
第１の側面によれば，PLD内に構成する論理回路を入れ替える処理を効率よく行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態におけるPLDを有する情報処理装置の構成を示す図である。
【図２】本実施の形態におけるPLDの概略的な構成を示す図である。
【図３】本実施の形態におけるPLDを有する情報記憶装置であるサーバの動作の概略を示すフローチャート図である。
【図４】PLD内の再構成領域R_REGの構成例を示す図である。
【図５】PLD内の再構成領域R_REGに論理的に配置された部分再構成領域PRRの一例を示す図である。
【図６】本実施の形態における部分再構成領域内のユーザ回路（論理回路）の一例を示す図である。
【図７】状態データの退避と復元が必要なラッチ回路FF0,FF2と状態フリップフロップS_FFの構成を示す図である。
【図８】状態データの退避と復元が必要なメモリ回路SRAMの構成を示す図である。
【図９】各論理回路に固定の退避復元時間を予め決定する場合の論理回路と退避復元時間（S/R時間）の例を示す図である。
【図１０】状態FF値-時間情報変換テーブルの一例を示す図である。
【図１１】本実施の形態におけるCPUによる第１の論理回路の置換処理を示すフローチャート図である。
【図１２】本実施の形態におけるCPUによる第２の論理回路の置換処理を示すフローチャート図である。
【図１３】本実施の形態におけるCPUによる第３の論理回路の置換処理を示すフローチャート図である。
【図１４】CPUが管理するPRR管理テーブルの一例を示す図である。
【図１５】第１〜第３の論理回路の置換処理の具体例を示す図表である。
【発明を実施するための形態】
【００１２】
［PLDを有する情報処理装置の構成と動作］
図１は、本実施の形態におけるPLDを有する情報処理装置の構成を示す図である。情報処理装置１０は、例えばサーバなどのコンピュータであり、CPU（Central Processing Unit）１１と、DRAMなどのメインメモリ１２と、キーボードや表示装置に接続される入出力ユニット１３と、ネットワークNETに接続されるNIC（Network Interface Card）１４と、FPGAなどのPLD１５と、HDD、SSDなどの補助記憶装置１６とを有し、それらはバスBUSを介して接続される。
【００１３】
補助記憶装置１６内には、OS（Operating System）、アプリケーションプログラムAPL、その他図示しないミドルウエアプログラムが記憶され、これらは情報処理装置の起動時にメインメモリ１２に展開され、CPUにより実行される。また、補助記憶装置１６内には、PLDに構成される各論理回路を構成するための構成データCDATAのリストと、各論理回路内の状態データを退避（Save）及び復元（Restore）するために必要な退避復元時間S/R_Tと、一時的にPLDから削除された論理回路の退避データSDATAが記憶される。これらのデータCDATA、S/R_T、SDATAは、コンピュータが動作中、メインメモリ１２内にも記憶され、CPUにより参照される。
【００１４】
CPUが、PLD内に所定の処理を実行する論理回路を構成するために、その論理回路の構成データCDATAをPLDに設定または書き込むと、PLD内に論理回路が構成される。そして、論理回路が所定の処理を実行する。
【００１５】
図２は、本実施の形態におけるPLDの概略的な構成を示す図である。PLD１５は、コンピュータのバスBUSとのインターフェースを行うバスインターフェース回路BUS_IFと、構成データ書込制御回路１５１と、構成データが書き込まれる構成データメモリCRAMと、書き込まれた構成データにより種々の論理回路が再構成される再構成領域R_REGとを有する。
【００１６】
再構成領域R_REGには、図示しないが、複数の論理回路要素、メモリ回路要素、配線、スイッチ等が形成される。また、再構成領域R_REGは、論理的にまたは物理的に複数の部分再構成領域PRRに区分される。そして、再構成される論理回路は、各部分再構成領域に収容できる回路ブロックを配置単位として、各部分再構成領域に構成される。したがって、例えば、構成データメモリCRAMは、複数の部分再構成領域PRRに対応して複数の記憶領域に区分され、各記憶領域に構成データCDATAが書き込まれると、その記憶領域に対応する部分再構成領域に論理回路が構成される。
【００１７】
さらに、あるタスクを処理する論理回路が複数の部分再構成領域に分割して構成される場合、複数の部分再構成領域に対応する記憶領域に各論理回路の構成データが書き込まれ、それにより構成される複数の論理回路により前述のタスクの処理が実行される。
【００１８】
再構成領域R_REG内の複数の部分再構成領域PRRについては、後で具体例を示す。
【００１９】
図３は、本実施の形態におけるPLDを有する情報記憶装置であるサーバの動作の概略を示すフローチャート図である。ここでは一例として、CPUが実行するOSのタスク管理モジュールがタスクの切り替えを検出すると、必要に応じてPLD内に新たなタスクを処理する論理回路を構成するものとする。また、簡単のために、全てのタスクはPLD内の論理回路により処理されるものとする。但し、別のイベントに応じて、CPUがPLD内に新たな論理回路を構成するようにしてもよい。また、タスクの一部をPLD内の論理回路が処理するようにしても良い。
【００２０】
まず、CPUにより実行されるOSのタスク管理モジュールがタスクの切り替えを検出すると（S10のYES）、CPUはタスク管理モジュールを実行して、新タスクを実行する論理回路をPLD内に構成することが必要か否か判定する（S11）。つまり、PLD内に既に新タスクの論理回路が構成済みであり動作停止中であれば、新たに論理回路をPLD内に構成する必要はない。しかし、PLD内に新タスクの論理回路が構成されていない場合や、論理回路が構成済みでも動作中の場合、新たに論理回路をPLD内に構成する必要がある。
【００２１】
新たに論理回路をPLD内に構成する必要がある場合（S11のYES）、CPUはタスク管理モジュールを実行して、PLD内に構成済みの論理回路のいずれかを、新タスクの論理回路に置換することが必要か否か判定する（S12）。つまり、前述したとおりPLD内の再構成領域R_REGでは、複数の部分再構成領域PRRに収納可能な回路ブロックの単位で論理回路がそれぞれ構成される。したがって、複数の部分再構成領域PRR全てに論理回路が既に構成済みの場合、新タスクの論理回路を構成するためには、構成済みの論理回路のいずれかを新論理回路に置き換えることが必要になる。言い換えると、既に論理回路が構成されている部分再構成領域の数と、新たに構成する論理回路が構成される部分再構成領域の数の合計数が、部分再構成領域の総数を超えている場合、論理回路が構成済みの部分再構成領域PRRのいずれかの旧論理回路を新論理回路に置き換えることが必要になる。
【００２２】
このことは、構成済みの論理回路と新論理回路の合計サイズが、複数の部分再構成領域全てで構成可能な論理回路のサイズを超えている場合、いずれかの部分構成領域内の構成済み論理回路を、新論理回路に置き換えることが必要になることを意味する。複数の部分再構成領域は、好ましくは均一の回路サイズを有するが、異なる回路サイズを有する場合は、部分再構成領域の数よりも、新論理回路の回路サイズに基づいて置換が必要か否かが判断される。
【００２３】
そこで、置換えが必要な場合（S12のYES）、CPUはタスク管理モジュールを実行して、置換対象の構成済み論理回路（旧論理回路）を構成する部分再構成領域を選択し、置換対象の旧論理回路内の状態データをメインメモリ１２に退避する（S13）。
【００２４】
そして、旧論理回路内の状態データを退避（S13）した後、CPUは、新タスクの論理回路の構成データを、構成データメモリCRAM内の選択した部分再構成領域に対応する領域に書込み、置換対象の旧論理回路が構成されていた部分再構成領域に新タスクの新論理回路を構成する（S14）。または、PLD内に十分な空き部分再構成領域が存在していた場合（S12のNO）、CPUは、構成データを構成データメモリに書込み、空き部分再構成領域に新論理回路を構成する（S14）。
【００２５】
そして、この新論理回路が動作再開の場合、以前動作停止した時に退避した状態データを新論理回路内に復元する（S14）。動作再開でない場合、新論理回路には構成データにより初期値が設定される。
【００２６】
新論理回路の動作再開準備または新たな動作開始準備が整ったところで、CPUは新論理回路の動作を開始する（S15）。具体的には、新論理回路内の状態制御回路に動作開始を指示する。タスク切り替えが検出されたときに、新タスクの論理回路が既にPLD内に構成済みで且つ動作停止中だった場合も（S11のNO）、CPUは新論理回路の動作を開始する（S15）。
【００２７】
上記の工程S10〜S15が繰り返されることで、CPUが複数のタスクを時分割で実行するのと同様に、PLD上に非同期で構成された複数の論理回路が非同期で動作する。また、PLD内の再構成可能な領域に限りがあるので、構成済みの旧論理回路と新たに構成する新論理回路の総数が、PLD内に構成可能な論理回路の総数（つまり部分再構成領域PRRの総数）を超える場合、CPUは、PLD内の部分再構成領域内の論理回路を入れ替えながら、必要なタスクの論理回路を動作させる。さらに、PLD内に構成された論理回路が動作を停止または中断した場合、新たな論理回路の構成のために論理回路を置き換えられる必要がない間は、その構成済み論理回路はPLD内に維持され、回路の状態データの退避処理は行われない。
【００２８】
このように、PLDが複数の論理回路を非同期で構成し動作させる場合、PLD内の再構成領域が構成済み論理回路で一杯になると、新たに論理回路を構成するために、ある再構成領域内の構成済みの旧論理回路を新たな論理回路に置き換える必要がある。このような制御は、あたかもキャッシュメモリ内のキャッシュブロックの置き換え制御と類似する。但し、PLDの場合、論理回路の置き換え処理には、論理回路の構成データの書き換えという点でキャッシュメモリと類似するが、旧論理回路の状態データの退避と新論理回路の状態データの復元という点では、キャッシュメモリと異なる。
【００２９】
［PLD内の複数の部分再構成領域］
図４は、PLD内の再構成領域R_REGの構成例を示す図である。再構成領域R_REGには、行列状に配置され構成データにより所定の論理回路に再構成される論理回路ブロックLG_Bと、その論理回路ブロックLG_Bの周囲に縦方向と横方向に配置された信号線群SGとを有する。さらに、縦方向と横方向の信号線群SGの交差位置に設けられ構成データによって導通または非導通にされる複数のスイッチを有するスイッチボックスSBと、各信号線群SGの各信号と論理回路ブロックLG_Bの入出力端子との間に設けられた複数のスイッチを有するコネクションCNとを有する。コネクションCNのスイッチも構成データで導通または非導通に設定される。
【００３０】
さらに、再構成領域R_REGの周囲には、PLDのバスインターフェースBUS_IFと接続される複数の入出力回路IOが配置され、これらの入出力回路IOもコネクションCN内のスイッチを介して信号線群SGの信号と接続される。また、一部の論理回路ブロックLG_Bには、例えばSRAMであるメモリブロックが配置される場合もある。
【００３１】
そして、論理回路ブロックLG_Bが構成データによりある論理回路に再構成され、スイッチボックスSBやコネクションCN内のスイッチが構成データによりある接続配線に再構成され、その結果、ある論理回路が再構成される。
【００３２】
図５は、PLD内の再構成領域R_REGに論理的に配置された部分再構成領域PRRの一例を示す図である。図５では、一例として、再構成領域R_REG内に４つの部分再構成領域PRRが配置される。４つの部分再構成領域PRR以外の領域は、共通回路領域として利用される。
【００３３】
図４で示したとおり、再構成領域R_REGには、論理回路ブロックLG_Bと信号線群SGとスイッチボックスSBとコネクションCNとが連続してフラットに配置される。したがって、図４の再配置領域R_REGには複数の部分再構成領域を区別する物理的な構成はない。
【００３４】
一方、図５のPLDには、再構成領域R_REG内の例えば３行３列の合計９個の論理回路ブロック（またはメモリブロック）LG_Bを有する領域が、部分再構成領域PRRとして論理的に設定される。
【００３５】
例えば、図２に示した構成データ書込制御回路１５１が、CPUからあるタスクに対応する論理回路の構成データの書込要求を受信すると、まだ論理回路が構成されていない部分再構成領域に対応する構成データメモリCRAM内の記憶領域に、受信した構成データを書き込む。その結果、その部分再構成領域には、書き込んだ構成データに基づいて対応する論理回路が構成される。したがって、構成データ書込制御回路１５１が、再構成領域R_REG内を論理的に区分した複数の部分再構成領域PRRに対して、書き込み要求に応答し、論理回路が構成されていない部分構成領域を選択し、その選択した部分構成領域に対応する記憶領域に、入力された構成データを書き込む。
【００３６】
もちろん、図示しないが、再配置領域R_REGには複数の部分再構成領域PRRを区別する物理的な構成が形成されてもよい。その場合、PLDは、固定されたサイズと位置に複数の部分再構成領域PRRを有する。
【００３７】
［再構成される論理回路の退避及び復元回路例］
図６は、本実施の形態における部分再構成領域内のユーザ回路（論理回路）の一例を示す図である。図３において説明したとおり、PLD内の再構成領域R_REGには複数の論理回路が非同期で構成され非同期で動作する。そのため、再構成領域R_REG内の複数の部分再構成領域PRRに、様々な論理回路が互いに置換されながら構成される。論理回路の置換処理において、置換される旧論理回路内の状態データがメインメモリに退避され、新論理回路の構成データが書き込まれ、新論理回路が動作再開の場合新論理回路の状態データが復元される。そのため、ユーザ回路には状態データの退避と復元が可能な回路構成が含まれる。
【００３８】
図６において、部分再構成領域PRR内には、タスクを処理する論理回路２０と、その論理回路２０の状態を制御するステートマシン回路２４と、論理回路２０のデータの外部とのインターフェースであるデータインターフェース回路２１と、論理回路２０やステートマシン回路２４内のレジスタと外部とのインターフェースであるレジスタインターフェース回路２５とが構成されている。
【００３９】
論理回路２０は、複数の組み合わせ回路CC1,CC2と、組み合わせ回路の前後及び間に配置されるフリップフロップなどのラッチ回路FF0,FF1,FF2と、SRAMなどのメモリ回路SRAMとを有する。図６の例では、組み合わせ回路CC1がアドレスADDR、ライトデータWDATA、ライトイネーブル信号WEN、リードイネーブル信号RENをメモリ回路SRAMに入力し、メモリ回路が内部クロックCLKに同期して動作し、リードデータRDATAを別の組み合わせ回路CC2に出力する。
【００４０】
一方、ステートマシン回路２４は、ステートマシンの組み合わせ回路CC3と、その出力をラッチし再度組み合わせ回路CC3にラッチデータを入力する状態フリップフロップS_FFとを有する。ラッチ回路や状態フリップフロップは、内部クロックCLKに同期してラッチ動作する。
【００４１】
また、レジスタインターフェース回路２５は、内部のレジスタの出力を選択してレジスタのデータを外部に出力するセレクタSELと、外部から入力されるレジスタアドレスRG_ADDをデコードして内部のレジスタに選択信号を供給するアドレスデコーダADD_DECとを有する。さらに、レジスタインターフェース回路２５では、外部からレジスタアドレスRG_ADD、レジスタライトイネーブルRG_WEN、レジスタライトデータRG_WDATAを入力し、レジスタリードデータRG_RDATAを出力する。このように、レジスタインターフェース回路を介して、外部から内部のレジスタにデータを設定することができ、内部のレジスタのデータを外部に出力できる。
【００４２】
［論理回路の置き換えに伴う状態データの退避と復元］
次に、論理回路の置換に伴う状態データの退避と復元を行う回路について説明する。論理回路の置換に伴って退避及び復元される状態データは、論理回路内の所定のラッチ回路FFにラッチされているデータやメモリ回路SRAMに記憶されているデータであり、各論理回路に依存するとともに、各論理回路の動作状態にも依存するデータである。
【００４３】
一例として、図６の論理回路２０では、ラッチ回路FF0,FF2とメモリ回路SRAMがデータの退避と復元が必要であり、ステートマシン２４では状態データを保持する状態フリップフロップS_FFがデータの退避と復元が必要である。
【００４４】
そこで、ユーザ回路には、状態データの退避及び復元の制御を行う退避復元制御回路３０と、データインターフェース回路２１のデータ信号線２２または退避復元制御回路３０のデータ信号線３７を切り替え信号３６に応じて切り替えて外部データ端子２３に接続するデータインターフェース切替回路３１と、退避復元制御回路３０に退避または復元の指示をする退避復元指示信号を生成する退避復元指示信号発生回路３２とが含まれる。また、ステートマシン回路２４の状態フリップフロップS_FFの状態データ３４を退避復元時間情報３５に変換する状態データ・退避復元時間変換テーブル３３も含まれる。この変換テーブルについては後で詳述する。
【００４５】
図７は、状態データの退避と復元が必要なラッチ回路FF0,FF2と状態フリップフロップS_FFの構成を示す図である。ラッチ回路FFのデータ入力Dには、組み合わせ回路からのデータDまたは退避復元制御回路からの復元データR_Dを選択するセレクタSEL_0の出力が入力される。また、ラッチ回路FFのイネーブル端子ENには、組み合わせ回路からのイネーブル信号ENと復元イネーブル信号R_ENの論理和を出力する論理和ゲート３６の出力が入力される。そして、ラッチ回路FFのデータ出力Qは、通常の出力Qとして後段の組み合わせ回路に出力されると共に、退避データS_Dとして退避復元制御回路３０にも出力される。
【００４６】
退避時には、単に、ラッチ回路FFがラッチするデータQが、退避データS_Dとして退避復元制御回路３０に出力される。また、復元時には、復元イネーブル信号R_ENが「１」になり、セレクタSEL_0が復元データR_Dを選択し、ラッチ回路FFをラッチイネーブル状態にし、ラッチ回路FFに復元データR_Dがラッチされる。
【００４７】
図８は、状態データの退避と復元が必要なメモリ回路SRAMの構成を示す図である。メモリ回路SRAMのアドレス端子ADDRには、組み合わせ回路からのアドレスADDRまたは退避復元制御回路３０からのアドレスS/R_ADDRを選択するセレクタSEL_1の出力が入力される。また、ライトデータ端子WDATAには、組み合わせ回路からのライトデータWDATAまたは退避復元制御回路からの復元データR_Dを選択するセレクタSEL_2の出力が入力される。セレクタSEL_1は、退避データリードイネーブル信号S_RENと復元データライトイネーブルR_WENを入力する論理和ゲート３７の出力が「１」の場合に退避復元アドレスS/R_ADDRを選択する。また、セレクタSEL_2は、復元データライトイネーブルR_WENが「１」の場合に復元データR_Dを選択する。
【００４８】
そして、ライトイネーブル端子WENには、組み合わせ回路からのライトイネーブル信号WENと復元データライトイネーブル信号R_WENを出力する論理和ゲート３８の出力が入力され、リードイネーブル端子RENには、組み合わせ回路からのリードイネーブル信号RENと退避データリードイネーブル信号S_RENを出力する論理和ゲート３９の出力が入力される。
【００４９】
退避時は、退避データリードイネーブル信号S_RENが「１」になり、退避復元アドレスS/R_ADDRに対応したデータが退避データ線S_Dを経由して退避復元制御回路３０に出力される。一方、復元時は、復元データライトイネーブルR_WENが「１」になり、復元データR_Dが退避復元アドレスS/R_ADDRに書き込まれる。
【００５０】
以下、図６における状態データの退避及び復元の動作を簡単に説明する。CPUからの要求により、退避復元制御回路内の退避レジスタSのレジスタアドレスRG_ADDと、「１」のレジスタライトデータRG_WDATAと、「１」のレジスタライトイネーブルRG_WENが入力されると、退避復元指示信号発生回路３２がデコーダ出力とレジスタライトデータRG_WDATAとレジスタライトイネーブルRG_WENを出力する。これに応答して、退避復元制御回路３０内の退避レジスタSに「１」が書き込まれ、退避復元制御回路３０が退避処理を開始する。
【００５１】
退避処理では、退避復元制御回路３０からの前述の制御信号により、退避復元対象のラッチ回路FFとメモリ回路SRAMが保持している状態データが、退避復元制御回路３０に供給され、データインターフェース切替回路３１を介してデータ端子２３から出力される。退避される状態データは、PLDからメインメモリ１２に送信され記憶される。
【００５２】
一方、復元処理では、CPUからの要求により、退避復元制御回路内の復元レジスタRのレジスタアドレスRG_ADDと、「１」のレジスタライトデータRG_WDATAと、「１」のレジスタライトイネーブルRG_WENが入力されると、退避復元指示信号発生回路３２がデコーダ出力とレジスタライトデータRG_WDATAとレジスタライトイネーブルRG_WENを出力する。これに応答して、退避復元制御回路３０内の復元レジスタRに「１」が書き込まれ、退避復元制御回路３０が復元処理を開始する。
【００５３】
復元処理では、退避復元制御回路３０からの前述の制御信号により、退避復元対象のラッチ回路FFとメモリ回路SRAMに、メインメモリから転送されてきた復元すべき状態データがそれぞれ書き込まれる。
【００５４】
［論理回路の置換処理（１）］
次に、図３で示した論理回路の置換処理について具体的に説明する。論理回路の置換処理には、置換対象の旧論理回路の選択（または置換対象の旧論理回路が構成される部分再構成領域PRRの選択）とその旧論理回路内の状態データの退避処理（S13）、新たに構成される新論理回路の構成データの書込み処理と新論理回路への状態データの復元処理（S14）が含まれる。そこで、以下、本実施の形態における置換対象の論理回路の選択方法について説明する。
【００５５】
図３で既述したとおり、CPUが新たなタスクへの切り替えを検出したとき、PLD内に新タスクを実行する新論理回路を構成するに十分な空き部分再構成領域PRRが存在しない場合、CPUは、論理回路が構成済みの複数の部分再構成領域から選択した部分再構成領域において、構成済みの論理回路内の状態データの退避と、新タスクの論理回路の構成データの書込みとその状態データの復元を行う。つまり、PLD内に構成済みの旧論理回路の数またはサイズと新タスクの新論理回路の数またはサイズの合計が、PLD内に構成可能な論理回路の数またはサイズを超える場合、CPUは、複数の構成済みの旧論理回路のなかから選択した論理回路を新論理回路に置換する。
【００５６】
そして、置換された論理回路に対応するタスクへの切り替えがその後検出されると、CPUが、PLD内に、その論理回路の構成データを書込み、その状態データを論理回路内に復元する。
【００５７】
退避及び復元すべき状態データ量は、部分再構成領域PRR内に構成される論理回路に依存して異なる。退避及び復元すべきデータ量が大きい論理回路もあれば少ない論理回路もある。また、退避及び復元すべきデータ量は論理回路の動作状態にも依存して変動する場合がある。
【００５８】
したがって、どの部分再構成領域の論理回路を置換対象にするかの選択では、置換対象の論理回路をPLDから追い出しそして再度PLD内に構成するのに要する総工数ができるだけ少ないものを選ぶことが、PLD内の論理回路の置換処理の効率化につながる。つまり、PLDから追い出す工数と再度PLD内に呼び戻す工数の総工数が比較的大きい論理回路は、できるだけ置換対象に選択せずPLD内に構成したままにし、総工数が比較的小さい論理回路を置換対象に選択するのが望ましい。
【００５９】
PLDから論理回路を追い出す工数は、前述のとおり論理回路内の状態データを退避するに要する時間である。一方、PLDに論理回路を呼び戻す工数は、前述のとおり論理回路の構成データの書込み時間と、一旦退避した状態データの復元に要する時間である。
【００６０】
本実施の形態では、CPUは、論理回路の状態データの退避時間と復元時間が短いほど優先的に置換対象の論理回路に選択する。そこで、CPUは、タスク切り替えを検出すると、構成データが書込み済みの全ての部分再構成領域PRRの論理回路の退避復元時間情報を取得し、退避復元時間が短いほど優先的に置換対象の部分再構成領域PRRまたは置換対象の論理回路に選択する。具体的には、退避復元時間が最も短い部分再構成領域PRRまたは論理回路を、置換対象に選択する。
【００６１】
ここで、退避復元時間の取得について説明する。図６で説明した通り、論理回路内の退避すべき状態データは予め分かっており、したがって、ユーザ回路内の所定のラッチ回路FFやメモリ回路SRAMに退避及び復元回路が付加される。そこで、論理回路毎に固定の退避復元時間を予め定めておき、CPUが参照可能なメモリに論理回路毎の退避復元時間を記憶しておく。CPUは、置換対象の論理回路を選択する場合、メモリ内の各論理回路の退避復元時間を参照し、退避復元時間が最も短い論理回路を置換対象の論理回路に選択する。
【００６２】
各論理回路に固定の退避復元時間を予め決定する際、以下の２つの方法が好ましい。第１の例では、論理回路内の退避対象のラッチ回路FFとメモリ回路SRAMのビット数に比例するように退避復元時間を決定する。例えば、論理回路内の退避対象のラッチ回路FFのビット総数がBf、退避対象のメモリ回路SRAMのビット総数がBsとすると、退避復元時間は、(wt+rt)*(Bf+Bs)となる。ここで係数(wt+rt)は、ビット当たりの退避時間（論理回路からの読み出し時間とメインメモリへの書き込み時間）wtと復元時間（メインメモリの読み出し時間と論理回路への書込み時間）rtの合計時間である。
【００６３】
第２の例では、状態データの退避と復元時のメインメモリへのアクセス回数に比例するように退避復元時間を決定する。つまり、退避すべき状態データのビット総数をメインメモリの１回のアクセスで書き込めるビット幅で除した回数が退避時のアクセス回数になる。一方、復元すべき状態データのビット総数をメインメモリの１回のアクセスで読み出せるビット幅で除した回数が復元時のアクセス回数になる。いずれも、状態データを１回のビット幅に詰め込めるパッキング率にも依存する。そして、退避時のアクセス回数をAs、復元時のアクセス回数をArとすると、退避復元時間は、wt*As+rt*Arとなる。
【００６４】
図９は、各論理回路に固定の退避復元時間を予め決定する場合の論理回路と退避復元時間（S/R時間）の例を示す図である。図９のテーブルには、各部分再構成領域内に構成される論理回路のIDに対応して、その構成データCDATAのID及び退避復元時間（S/R時間）が格納されている。図９のテーブルが、図１の補助記憶装置内に記憶され、サーバが起動されるときにメインメモリ内に展開され、CPUにより参照される。
【００６５】
一方、論理回路から退避され復元される状態データが論理回路の状態に応じて大きく異なる場合、退避復元時間を論理回路の状態に依存した可変時間にするようにしても良い。この場合、論理回路に現在の状態を管理するステートマシンを設け、ステートマシンの各状態ｘ毎に、退避が必要なラッチ回路FFのビット数Bfx、メモリ回路SRAMのビット数Bsxを予め求めておく。そして、状態ｘにおける退避復元時間を、(wt+rt)*(Bfx+Bsx)とする。または、上記の固定値で説明したメインメモリのアクセス数に基づいて求めても良い。
【００６６】
そして、ステートマシンが示す論理回路の状態に依存する退避復元時間を常時更新して格納するレジスタを論理回路内に設けておき、タスクスイッチ発生時にそのレジスタから退避復元時間を読み出す。または、ステートマシン内に論理回路の状態を示すレジスタを設けておき、タスクスイッチ発生時にそのレジスタから論理回路の状態を読み出し、その状態から退避復元時間を算出するようにしてもよい。
【００６７】
図６においてステートマシン２４内の状態フリップフロップS_FFは、この論理回路の状態（論理回路の状態を制御するステートマシンの状態（STATE））を示すレジスタである。図６の例では、状態フリップフロップS_FFの出力３４が状態FF値-時間情報変換テーブル３３に入力され、状態FF値-時間情報変換テーブル３３が状態FF値に対応する退避復元時間を出力する。
【００６８】
図１０は、状態FF値-時間情報変換テーブルの一例を示す図である。図１０のテーブルには、論理回路Aが取りうる状態ST0-ST4それぞれにおける退避復元時間（S/R時間）と、論理回路Bが取りうる状態ST0-ST2それぞれにおける退避復元時間とが示されている。
【００６９】
論理回路の状態に応じて退避すべきデータ量が大きく異なる例として、MPEG回路がある。MPEG回路の場合、タスクスイッチのタイミングがピクチャ処理完了時とマクロブロックの処理途中とでは大きく異なる。例えば、ピクチャ処理完了時であれば退避データはピクチャ単位のレート制御用変数などである。一方、マクロブロック処理途中であれば退避データはピクチャ内の情報（ピクチャ内レート制御変数、隣接マクロブロック情報、処理中のマクロブロック情報、エントロピー符号化のコンテキスト情報）も含まれ、データ量が多くなる。
【００７０】
図１１は、本実施の形態におけるCPUによる第１の論理回路の置換処理を示すフローチャート図である。図１１のフローチャートは、図３のタスクの切り替えが検出され（S10のYES）、PLD内に構成済みの旧論理回路を新タスクに対応する新論理回路に置換する必要が発生した場合（S11,S12のYES）の工程S13,S14を詳述する。
【００７１】
論理回路の置換処理のプログラムの引数は置換対象タスクＸである。まず、ループS20は、置換対象タスクＸを実行する論理回路のうち１つの部分再構成領域PRRに構成される論理回路（回路ブロック）の構成データ（ループ変数が構成データi）のループである。したがって、置換対象タスクＸを実行する論理回路がＮ個の部分再構成領域に構成される論理回路を有する場合、ループ変数はi=0〜N-1となる。
【００７２】
最初に、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し（S21）、空きPRRが存在する場合（S21のYES）、その空きPRRを新論理回路の構成データの書込み先とする（S22）。
【００７３】
空きPRRが存在しない場合（S21のNO）、CPUは置換対象の論理回路（PRR内の論理回路）を選択する。具体的には、CPUは、全PRRの退避復元時間情報（S/R時間情報）を取得する（S23）。この取得処理は、S/R時間が論理回路に依存する固定時間を利用する場合は、CPUは、図９に示した論理回路に対応するS/R時間のテーブルから取得する。また、S/R時間が論理回路の状態に依存する変動時間を利用する場合は、CPUは、図６に示した状態FF値・時間情報変換テーブルの出力３５を読み出す、もしくは、図６のステートマシン２４内の状態フリップフロップS_FFの状態番号を取得し、図１０の各論理回路の状態番号に対応するS/R時間を抽出する。
【００７４】
そして、CPUは、S/R時間が最も短い論理回路（または部分再構成領域PRR）を置換対象の論理回路（またはPRR）に選択する（S24）。さらに、CPUは、選択した論理回路の部分再構成領域PRRに論理回路内の状態データの退避を指示する退避指示を送り、退避の完了を待つ（S25）。工程S24,S25は、図３の工程S13に対応する。
【００７５】
次に、CPUは、置換対象の部分再構成領域PRRに構成データiを書き込む（S26）。構成データはメインメモリに記憶されているので、CPUは、メインメモリから対応する構成データiを読み出し、PLDの構成データメモリCRAM内の置換対象PRRに対応する領域に書き込むようPLDに要求する。
【００７６】
さらに、新タスクＸが演算を再開する場合（S27のYES）、メインメモリ内の復元データを置換対象PRR内の論理回路に復元する復元指示をPLDに行い、復元が完了するのを待つ（S28）。新タスクＸの演算が初回の場合（S27のNO）、復元すべきデータはないので復元指示を行わない。
【００７７】
上記の工程S21〜S28を、新タスクＸを実行するに必要な論理回路の全ての構成データｉについて繰り返す処理が完了すると、論理回路の置換処理が完了する。
【００７８】
［論理回路の置換処理（２）］
図１２は、本実施の形態におけるCPUによる第２の論理回路の置換処理を示すフローチャート図である。第２の論理回路の置換処理では、置換対象の論理回路の選択を、論理回路の退避復元時間に加えて、論理回路の未使用時間も考慮して行う。すなわち、PLD内の最も最近使用されなかった論理回路（LRU論理回路）は、今後も使用される確率が低いとみなすことができるので、そのような論理回路を置換対象候補とする。つまり、キャシュメモリなどで採用されるLRU(Least recent Usage)に基づく選択アルゴリズムである。そして、第２の論理回路の置換処理では、LRUに基づいて選択された複数の置換対象候補のうち、最も退避復元時間が短い論理回路を置換対象に選択する。
【００７９】
図１２のフローチャートにおいて、図１１と同じ工程番号の工程は図１１と同じ処理である。まず、ループS20は図１１のループS20と同じである。
【００８０】
次に、ループS20内において、最初に、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し（S21）、空きPRRが存在する場合（S21のYES）、その空きPRRを新論理回路の構成データの書込み先とする（S22）。
【００８１】
空きPRRが存在しない場合（S21のNO）、CPUは置換対象の論理回路（PRR内の論理回路）を選択する。第２の置換処理では、LRUにより未使用時間が最も長い論理回路を構成するPRRを置換対象PRR候補集合の要素として選択する（S30）。そして、置換対象PRR候補集合が１つのPRRのみ有する場合（S31のYES）、そのPRRが置換対象PRRに選択される（S32）。
【００８２】
次に、CPUは、置換対象PRR候補集合が複数のPRRを有する場合（S31のNO）、置換対象PRR候補集合の全てのPRRの退避復元時間情報（S/R時間情報）を取得する（S33）。この取得処理では、S/R時間が論理回路に依存する固定時間を利用する場合、CPUは、図９の論理回路に対応するS/R時間テーブルから取得する。また、S/R時間が論理回路の状態に依存する変動時間を利用する場合、CPUは、図６の状態FF値・時間情報変換テーブルの出力３５を読み出す、もしくは、状態フリップフロップS_FFの状態番号を取得し、図１０の各論理回路の状態番号に対応するS/R時間を抽出する。
【００８３】
そして、CPUは、置換対象候補集合のうちS/R時間が最も短い論理回路（または部分再構成領域PRR）を置換対象の論理回路（またはPRR）に選択する（S34）。
【００８４】
以降は、図１１と同様に、CPUは、選択した論理回路の部分再構成領域PRRに論理回路内の状態データの退避を指示する退避指示を送り、退避の完了を待つ（S25）。次に、CPUは、置換対象の部分再構成領域PRRに構成データiを書き込む（S26）。さらに、新タスクＸが演算を再開する場合（S27のYES）、CPUは、メインメモリ内の復元データを置換対象PRR内の論理回路に復元する復元指示をPLDに行い、復元が完了するのを待つ（S28）。
【００８５】
図１４は、CPUが管理するPRR管理テーブルの一例を示す図である。第２の置換処理では、LRUに基づいて置換対象の論理回路の候補を選択する。そのために、CPUは、どのPRR内の論理回路が使用されたかの履歴を記憶する必要がある。
【００８６】
図１４のPRR管理テーブルには、PLD内の全てのPRRに対応して、構成済みの論理回路のIDと、それぞれの未使用時間が記憶される。CPUは、PRR内に構成した論理回路の動作が中断した時点で未使用時間を「０」に設定し、全ての動作中断中の論理回路の未使用時間を所定の時間が経過する度にインクリメントする。図１４の例では、未使用時間が２ビットデータであり、未使用時間が「３」（２ビットデータで「１１」）に達するとそれ以上増加しない。
【００８７】
一般に、キャッシュメモリなどでのLRUに基づく置換処理の未使用時間は記憶データ量を削減する目的からかなり粗い粒度で記憶される。たとえば、２ビットデータで所定時間毎に未使用時間が長くなるなどである。そのため、未使用時間が最も長い論理回路を構成するPRRを抽出しても多くのPRRが置換対象候補になることが想定される。そこで、置換対象候補のうち最も退避復元時間が短い論理回路を構成するPRRを置換対象に選択することで、論理回路の置換処理の効率を高めることができる。
【００８８】
［論理回路の置換処理（３）］
図１３は、本実施の形態におけるCPUによる第３の論理回路の置換処理を示すフローチャート図である。第３の論理回路の置換処理でも、置換対象の論理回路の選択を、論理回路の退避復元時間に加えて、論理回路の未使用時間も考慮して行う。但し、第３の置換処理では、未使用時間と退避復元時間とから置換対象の評価値を算出し、評価値が大きいほど優先して置換対象に選択する。
【００８９】
つまり、未使用時間が長いほど置換対象になりやすく、退避復元時間が短いほど置換対象になりやすくする。評価値を算出する式の一例は以下のとおりである。
評価値＝未使用時間−ｗ×退避復元時間
ここで、ｗは退避復元時間の重み値であり、たとえば未使用時間の粒度や、未使用時間と退避復元時間の比較に基づいて決定され、好ましくは実験等により最適な重み値が予め決定される。
【００９０】
図１３において、図１１と同じ工程番号の工程は図１１と同じ処理である。まず、ループS20は図１１のループS20と同じである。
【００９１】
次に、ループS20内において、CPUは、論理回路が構成されていない空き部分再構成領域PRRが存在するか否かを判定し（S21）、空きPRRが存在する場合（S21のYES）、その空きPRRを新論理回路の構成データの書込み先とする（S22）。
【００９２】
空きPRRが存在しない場合（S21のNO）、CPUは、全PRRの論理回路の退避復元時間と未使用時間を取得する（S40）。退避復元時間の取得は、図１１で説明した処理S23と同じであり、図９のテーブルから取得する。また、未使用時間の取得は、図１４のテーブルから取得する。
【００９３】
そして、CPUは、全PRRの論理回路の評価値を、取得した未使用時間と退避復元時間から上記の式により算出し（S41）、評価値が最も大きい論理回路のPRRを置換対象PRRとして選択する（S42）。
【００９４】
その後の工程S25〜S28は、図１１，図１２と同様である。
【００９５】
［論理回路の置換処理（４）］
第１〜第３の置換処理では、退避復元時間が短い論理回路を優先して置換対象の論理回路に選択した。それに対して、第４の置換処理では、退避復元時間と構成データの書込み時間とに基づいて算出される置換時間が短い論理回路を優先して置換対象の論理回路に選択する。置換時間は、たとえば以下の式により算出される。
置換時間＝退避復元時間＋ｗ２×構成データの書込み時間
ここで、ｗ２は構成データの書込み時間の重み値である。
【００９６】
第１〜第３の置換処理での置換対象の論理回路の選択において、退避復元時間をこの置換時間に置き換えて行うことで、PRR内に構成済みの論理回路の追い出しと呼び戻しに要する総時間を考慮して、最も追い出しと呼び戻しに要する時間が短い論理回路を置換対象に選択することができる。構成データの書込み時間が無視できないほど大きい場合、第４の置換処理が有効である。
【００９７】
［論理回路の置換処理の具体例］
図１５は、第１〜第３の論理回路の置換処理の具体例を示す図表である。図１５には、４つの部分再構成領域PRRの未使用時間、S/R時間、評価値が示され、さらに、置換対象論理回路の選択について、LRUに基づいて不使用時間が最も長いものを選択する場合、S/R時間が最も短いものを選択する場合（第１の置換処理）、不使用時間が最も長い候補からS/R時間が最も短いものを選択する場合（第２の置換処理）、評価値が最も大きいものを選択する場合（第３の置換処理）それぞれにおける置換対象の論理ブロックが示されている。未使用時間、S/R時間は、図９と図１４の具体例と同じである。
【００９８】
LRUに基づいて不使用時間が最も長いものを選択する場合、論理回路A,Bを構成するPRRが置換対象に選択される。それに対して、S/R時間が最も短いものを選択する場合（第１の置換処理）、論理回路Cを構成するPRRが置換対象に選択される。また、評価値が最も大きいものを選択する場合（第３の置換処理）、論理回路Cを構成するPRRが置換対象に選択される。論理回路Cは未使用時間は「１」でありそれほど長くないが、S/R時間が「１」と他の論理回路A,Bよりも短いので、第1、第３の置換処理で置換対象に選択されている。
【００９９】
以上のとおり、S/R時間が短いものを優先して置換対象の論理回路を選択することにより、LRUに基づく選択よりもS/R時間が短いものが選択される確率が高くなる。
【０１００】
以上、本実施の形態によれば、PLD内の複数の部分再構成領域に、様々な論理回路を互いに独立して構成し、動作させる場合、新たな論理回路を構成するための空の部分構成領域の数またはサイズが足りない場合、各論理回路の状態データの退避及び復元時間が短いものを優先して置換対象の論理回路を選択する。その結果、PLD内に構成する論理回路の置換処理の効率を高めることができる。
【０１０１】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１０２】
（付記１）
プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、
処理をコンピュータに実行させるコンピュータ読み取り可能なPLD制御プログラム。
【０１０３】
（付記２）
前記処理は、さらに、
前記選択した置換対象の第１の論理回路内の状態データを退避する退避要求を出力し、
前記第２の論理回路を構成する構成データを、前記選択された置換対象の第１の論理回路が構成されていた領域に設定して、前記第２の論理回路を構成する構成要求を出力し、
前記第２の論理回路が動作再開の場合、前記第２の論理回路の退避済みの状態データを、前記構成された第２の論理回路に復元する復元要求を出力する、ことを有する、付記１に記載のPLD制御プログラム。
【０１０４】
（付記３）
前記選択することは、前記第１の論理回路の前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記１に記載のPLD制御プログラム。
【０１０５】
（付記４）
前記選択することは、前記複数の第１の論理回路のうち、それぞれの未使用時間が最も長い複数の第１の論理回路から、前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記３に記載のPLD制御プログラム。
【０１０６】
（付記５）
前記選択することは、未使用時間から前記退避復元時間に所定の重み値を乗じた値を減じた評価値が大きいものを優先して、前記置換対象の論理回路を選択する、付記３に記載のPLD制御プログラム。
【０１０７】
（付記６）
前記退避及び復元時間は、前記論理回路それぞれに予め決められた固定時間である、付記１に記載のPLD制御プログラム。
【０１０８】
（付記７）
前記退避及び復元時間は、前記論理回路の動作状態に対応して異なる可変時間である、付記１に記載のPLD制御プログラム。
【０１０９】
（付記８）
前記PLD内の論理回路を再構成可能な複数の領域は、前記PLD内の再構成可能な領域を論理的に区分した複数の領域である、付記１に記載のPLD制御プログラム。
【０１１０】
（付記９）
前記PLD内の論理回路を再構成可能な複数の領域は、前記PLD内の再構成可能な領域を固定的に区分した複数の領域である、付記１に記載のPLD制御プログラム。
【０１１１】
（付記１０）
プログラマブルロジックデバイス（以下PLD）内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、
前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する、
処理をコンピュータに実行させるPLD制御方法。
【０１１２】
（付記１１）
論理回路を再構成可能な複数の領域を有し、前記複数の領域それぞれに論理回路を再構成可能なプログラマブルロジックデバイス（以下PLD）と、
前記PLD内の論理回路を再構成可能な複数の領域のいずれかの領域に、論理回路を構成する構成要求を出力し、前記複数の領域内に構成済みの複数の第１の論理回路と、前記構成要求により新たに構成される第２の論理回路の合計サイズまたは個数が、前記複数の領域内に構成できる論理回路のサイズまたは個数を超える場合、前記第１の論理回路内の状態データの退避及び復元に要する退避復元時間に基づいて、前記第２の論理回路に置換される置換対象の論理回路を前記複数の第１の論理回路から選択する処理を実行するプロセッサと、を有する情報処理装置。
【０１１３】
（付記１２）
前記選択することは、前記第１の論理回路内の状態データの前記退避復元時間が短いものを優先して、前記置換対象の論理回路を選択する、付記１１に記載の情報処理装置。
【０１１４】
（付記１３）
前記PLDでは、前記複数の領域それぞれに収容可能な回路ブロックを単位にして、前記論理回路が各領域に再構成される、付記１１に記載の情報処理装置。
【符号の説明】
【０１１５】
１０：情報処理装置
PLD：プログラマブルロジックデバイス、Programmable Logic Device
FPGA：フィールドプログラマブルゲートアレイ、Field Programmable Gate Array
PRR：部分再構成領域、Partial Reconfigurable Region
CPU：プロセッサ、Central Processing Unit
NIC：ネットワークインターフェースカード
OS：オペレーティングシステム
APL：アプリケーションプログラム
CDATA：構成データ、コンフィグレーションデータ
S/R_T：退避及び復元時間
CRAM：構成データRAM
SDATA：状態データ
STATE_NO：状態番号
【図１】
2018018198.tif 000003
【図２】
2018018198.tif 000004
【図３】
2018018198.tif 000005
【図４】
2018018198.tif 000006
【図５】
2018018198.tif 000007
【図６】
2018018198.tif 000008
【図７】
2018018198.tif 000009
【図８】
2018018198.tif 000010
【図９】
2018018198.tif 000011
【図１０】
2018018198.tif 000012
【図１１】
2018018198.tif 000013
【図１２】
2018018198.tif 000014
【図１３】
2018018198.tif 000015
【図１４】
2018018198.tif 000016
【図１５】
2018018198.tif 000017