(57)【特許請求の範囲】
【請求項１】
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第１のロジック回路の総処理終了時刻と前記第１のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第２のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第２のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第２のロジック回路を選択し前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置。
【請求項２】
前記構成制御部は、
前記第２のロジック回路の選択において、前記複数の総処理時間のうち最短の総処理時間に対応する第２のロジック回路を選択する、請求項１に記載の演算処理装置。
【請求項３】
前記構成制御部は、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内に既に構成されている第１のロジック回路のタスク処理の終了と同期せずに、前記処理要求されたタスクに対応する第２のロジック回路を前記プログラマブルロジック回路に構成する、請求項１または２に記載の演算処理装置。
【請求項４】
前記構成制御部は、
前記タスクの処理要求の際に、前記選択した第２のロジック回路の総処理時間と現在時刻とから前記総処理終了時刻を算出して記憶し、
さらに、前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成した際に、前記処理時間と現在時刻から前記総処理終了時刻を算出し、前記記憶済みの総処理終了時刻を更新する、請求項１または２に記載の演算処理装置。
【請求項５】
前記構成制御部は、
前記タスクに対応する第２のロジック回路の処理時間の実績値を記憶し、
新たなタスクの処理要求の際に、前記新たなタスクに対応するタスクの前記処理時間の実績値に基づいて、前記新たなタスクに対応する第２のロジック回路の処理時間を予測する、請求項１または２に記載の演算処理装置。
【請求項６】
前記構成制御部は、
前記構成可能時間を算出する際に、発生済みタスクのロジック回路の前記総処理終了時刻が早い順に、前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定し、現在時刻から構成可能な前記総処理終了時刻までの時間を前記構成可能時間として算出する、請求項１または２に記載の演算処理装置。
【請求項７】
前記構成制御部は、
前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かの判定を、前記ロジック回路が構成されてから実行終了までの期間において、前記ロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定する、請求項６に記載の演算処理装置。
【請求項８】
前記構成制御部は、
前記新たなタスクに対応するロジック回路を、当該新たなタスクよりも先に発生したタスクに対応するロジック回路を前記プログラマブルロジック回路内に構成するよりも前に、前記プログラマブルロジック回路内に構成する、請求項７に記載の演算処理装置。
【請求項９】
前記構成制御部は、
前記ロジック回路の処理終了後に、前記選択した第２のロジック回路の実績処理時間を対応するタスクと関連付けて記憶し、
前記複数種類の第２のロジック回路それぞれの処理に要する処理時間を、前記記憶した実績処理時間に基づいて予測する、請求項１または２に記載の演算処理装置。
【請求項１０】
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、を有する演算処理装置の制御方法であって、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第１のロジック回路の総処理終了時刻と前記第１のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第２のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、
前記複数種類の第２のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、
より短い総処理時間の第２のロジック回路を選択し、
前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成する演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理回路またはCPU（Central Processing Unit）などのプロセッサ回路と、プログラム可能なロジック回路であるPLD（Programmable Logic Device）とを混載する演算処理装置（CPUチップ）が提案されている。CPUはプログラムの命令をフェッチし実行する。これに対して、PLDは内部のロジック回路をコンフィグレーションデータ（構成データ、またはロジック回路を構成するための設定値）で再構成し、プログラム内の一部の命令またはタスク（例えば演算関数など、以下タスク等と称する）を処理するロジック回路を構成する。それによりPLDの内部に構成されたロジック回路が、タスク等を高速に処理する。たとえば、プログラマが、プログラム内の一部のタスク等をPLDにより処理するよう設定しておくことで、一部のタスク等はPLDにより実行され、残りのタスク等はCPUにより実行される。その結果、CPUチップによるデータ処理を高速化、低消費電力化を図ることができる。
【０００３】
一方、PLDはコンフィグレーションデータにより所望のロジック回路を構成する。そして、プログラム内のタスク等をPLDで実行するためには、タスク等のコードを高位合成してハードウエア記述言語（HDL）に変換し、そのHDLを論理合成してネットリストに変換し、ネットリストを実現するコンフィグレーションデータに変換する。PLDには、例えば、FPGA（Field Programmable Gate Array）やリコンフィギュラブルLSIなどがある。
【０００４】
命令コードは抽象度が高く制約条件に依存する複数種類のロジック回路に対応するHDLに変換できる。そして、複数のロジック回路のうちいずれかを選択するPLDについては、以下の特許文献に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２５２８１４号公報
【特許文献２】特開２００７−１７９３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のCPUとPLDを混載する演算処理装置は、１つのタスク等に対応するロジック回路をPLD内に構成し、そのタスク等を実行することが行われている。つまり、従来のPLDは、１つのタスク等のロジック回路を構成（コンフィグレーション：configuration）して処理を実行し、その処理が完了した後、新たなタスク等のロジック回路に再構成（リコンフィグレーション：reconfiguration）してその処理を実行するというように、同期してロジック回路の再構成と処理の実行を行う。
【０００７】
しかしながら、近年においてPLDでもFPGAの高集積化及び高性能化により、１つのPLDで複数のタスク等を非同期に部分的に再構成し処理を実行することが可能になっている。この場合、複数のタスク等は、異なるプログラム内のタスクであり、異なるプログラムは互いに依存関係がない。この互いに独立関係にある複数のタスクの場合、PLD内に既に構成され実行中のロジック回路の処理が完了する前に、新規のロジック回路が構成される、部分的再構成が行われる。そのため、新規に構成するロジック回路を、単にその時点でのPDL内の再構成可能なスペースの大きさに応じて選択すると、面積が小さいが処理速度は低速のロジック回路が選択された結果、最終的な処理完了時間が遅くなるという課題が発生する。
【０００８】
そこで、実施の形態の第１の側面の目的は、命令またはタスクの処理完了時間を短くできる演算処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
開示の第１の側面は、複数のタスクを実行するプロセッサと、前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第１のロジック回路の総処理終了時刻と前記第１のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第２のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第２のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第２のロジック回路を選択し前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置である。
【発明の効果】
【００１０】
第１の側面によれば、命令またはタスクの処理完了時間を短くできる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態における演算処理装置の構成を示す図である。
【図２】プログラマブルロジック回路（PLD）が複数のロジック回路を非同期に構成することを説明する図である。
【図３】FPGA内に配置（構成）するロジック回路の性能と面積について説明する図である。
【図４】図３の３つのロジック回路の処理時間を示す図である。
【図５】新たなタスクのロジック回路を非同期で配置（構成）する場合の問題点について説明する図である。
【図６】２つのロジック回路の実行時間と処理量を示す図である。
【図７】本実施の形態における構成制御プログラムによる新たなタスクのロジック回路を選択する例を示す図である。
【図８】タスクＸを２つのロジック回路で処理する場合とＣＰＵで処理する３つの実行プランを示す図である。
【図９】本実施の形態における構成制御プログラムのフローチャート図である。
【図１０】構成制御プログラムの処理時間予測処理のフローチャート図である。
【図１１】構成可能時間の計算のフローチャート図である。
【図１２】図１１の回路候補C#がFPGA内に構成（配置）可能か否かの判定処理のフローチャート図である。
【図１３】構成制御プログラムによる各タスクのロジック回路の構成（配置）例１を示す図である。
【図１４】構成制御プログラムによる各タスクのロジック回路の構成（配置）例２を示す図である。
【発明を実施するための形態】
【００１２】
図１は、本実施の形態における演算処理装置の構成を示す図である。演算処理装置（CPUチップ）１０は、プログラム内の命令またはタスクをフェッチし実行するプロセッサ（またはCPU）１１と、外部との入出力処理を行うI/O処理回路１４と、外部のメインメモリへのアクセスを制御するメモリアクセス制御回路（MAC）１７と、それらを接続するバスBUSとを有する。さらに、演算処理装置１０は、プロセッサ１１が実行するプログラム内の複数の命令またはタスクの少なくとも一部の命令またはタスク（以下タスク等と称する。）に対応するロジック回路に再構成されるプログラマブルロジック回路（PLD）１６と、PLD１６を再構成する構成情報（Configuration Data）を記憶する構成情報メモリ１２と、PLD１６のタスク等に対応するロジック回路の構成、削除と実行を制御する構成制御プログラムを格納するメモリ１５とを有する。さらに、PLD１６内に構成されたロジック回路の処理時間の実績値を格納する処理時間データベースを記憶するメモリ１３を有する。
【００１３】
図１のPLD１６は、例えばフィールドプログラマブルゲートアレイ（FPGA）や再構成可能な回路であり、いずれもコンフィグレーションデータによって内部に所望のロジック回路を構成することができる。
【００１４】
また、PLD１６は、プロセッサからのタスク等（関数など）の処理要求に応じて、要求されたタスク等に対応するロジック回路の構成及び実行をすることなく、要求を受け付けた旨の応答をプロセッサに返信する。そして、プロセッサ１０が構成制御プログラム１５を実行することで構成される構成制御部が、PLD１６内にロジック回路を構成し実行し、実行終了後ロジック回路を削除する。
【００１５】
プログラム内のタスク等を全てプロセッサ１０が実行する場合に比較すると、専用のロジック回路により実行するほうが、処理を高速化でき低消費電力化できる。
【００１６】
以下、「命令やタスク、タスク等」を簡単化のために以下単に「タスク」と称する。
【００１７】
PLD１６は、さらに、複数のタスクを非同期に構成し実行する。すなわち、PLDは、部分的な再構成を動的に行うことができ（動的／部分的再構成）、PLD内に構成したあるタスクのロジック回路の動作を停止することなく、新たなタスクに対応するロジック回路を構成し実行する。この場合、複数のタスクは互いに依存関係はなく、複数のタスクのロジック回路による実行の順番は、互いに依存する関係を有しない。
【００１８】
図２は、プログラマブルロジック回路（PLD）が複数のロジック回路を非同期に構成することを説明する図である。PLDのうち特にFPGAは、図示されるとおり、行列状に配置された複数の再構成可能な論理ブロックCLBと、論理ブロックCLB間に配置される配線用チャネル（図示せず）と、IOパッド（図示せず）を有する。そして、構成データ（コンフィグレーションデータ）をPLD内にダウンロードして設定することで、論理ブロックCLB内と配線用チャネルの例えば接続構成などが、構成データに対応した構成に設定される。
【００１９】
図２に示した例では、FPGAは４行４列の論理ブロックCLBを有する。まず、初期状態S1では、構成データが設定されておらず、全ての論理ブロックが未構成状態である。そこで、タスクＡの処理要求が発生すると、構成制御プログラムが、タスクＡに対応するロジック回路の構成データを生成し構成情報メモリ１２内に格納する。具体的には、構成制御プログラムは、タスクＡの命令コードを高位合成してRTL（Register Transfer Level）などのHDL（Hardware Description Language）に変換し、さらに、HDLを論理合成してネットリストに変換し、ネットリストのロジック回路を実現する構成データを生成する。そして、構成情報メモリ１２内に記憶した構成データをFPGA内のラッチ回路に書き込む（設定する）ことでFPGA内に所望のロジック回路が構成される（S2）。その結果、FPGAは、２つの論理ブロックによりタスクＡに対応するロジック回路を構成する。FPGAは、プログラムのタスクＡに対する入力パラメータを入力し、入力パラメータに基づいて、新たに構成されたタスクＡのロジック回路に動作を開始させ、その出力データをプロセッサ１１に出力する。
【００２０】
図２では、次にタスクＢの処理要求が発生すると、タスクＡのロジック回路の動作が終了するのを待つことなく、構成制御プログラムが、タスクＢの構成データをFPGA内に設定しタスクＢに対応するロジック回路を構成し、動作を開始させる(S3)。図示されるとおり、工程S3では、タスクＢに対応するロジック回路が、タスクＡのロジック回路に隣接して６つの論理ブロックで構成されている。
【００２１】
そして、工程S4では、さらにタスクＣの処理要求が発生し、構成制御プログラムが、タスクＣの構成データをFPGA内に設定し、タスクＣに対応するロジック回路を構成する。
【００２２】
次に、工程S5では、タスクＢのロジック回路の処理が完了し、構成制御プログラムが、タスクＢのロジック回路を削除する。具体的には、構成制御プログラムは、タスクＢのロジック回路の構成データの設定をクリアする。その結果、未構成の論理ブロックの面積が増加している。
【００２３】
また、工程S6では、新たにタスクＤの処理要求が発生し、構成制御プログラムが、タスクＤの構成データをFPGA内に設定し、タスクＤのロジック回路を構成する。この段階では、タスクＡ，Ｃのロジック回路の処理は未完了であり、タスクＡ，Ｃ，Ｄそれぞれのロジック回路がFPGA内に構成され、同時に動作している。
【００２４】
このように、FPGA内に非同期で新たな処理要求のタスクのロジック回路が構成され実行されるので、高い集積度のFPGA内の論理ブロックを有効に利用し、高速処理を可能にする。また、FPGA内の演算資源である論理ブロックの空き状況が逐一変化する。
【００２５】
図３は、FPGA内に配置（構成）するロジック回路の性能と面積について説明する図である。C言語などの高級言語によるプログラム内の命令やタスクは抽象度が高いため、同じ命令やタスクから、複数種類のロジック回路に変換可能である。例えば、低いクロック周波数で動作し処理時間が長くなる（処理速度が遅い）が回路面積が小さいロジック回路と、高いクロック周波数で動作し処理時間が短くなる（処理速度が速い）が回路面積が大きいロジック回路などである。
【００２６】
これらの異なるロジック回路への変換は、命令やタスクを高位合成するとき設定する制約条件（速度優先（高速処理を優先）または回路面積優先（小面積、省電力優先））に基づいて、異なるHDLに変換することで可能になる。
【００２７】
図３には、同じタスクに対応する演算Ｘを実行可能な３つのロジック回路CIR_1, 2, 3が示されている。ロジック回路CIR_1は、パイプライン構成されていない回路構成を有し、但し回路面積は最も小さい。ロジック回路CIR_2は、３ステージを有するパイプライン構成の回路であり、回路面積はロジック回路CIR_1よりも大きい。そして、ロジック回路CIR_3は、１０ステージを有するパイプライン構成の回路であり、回路面積は最も大きい。回路面積が大きいほど回路規模が大きく、その分、単位時間当たりの消費電力も大きくなる。
【００２８】
図４は、図３の３つのロジック回路の処理時間を示す図である。図４の横軸は各回路の面積を、縦軸は各回路によるタスク処理時間を示す。図示されるとおり、第１のロジック回路CIR_1は、パイプライン構成でないので並列処理を行うことができないので、複数の入力を処理する場合のタスク処理時間が長くなる。一方、第２、第３のロジック回路CIR_2, CIR_3は、パイプライン構成であるため並列処理を行うことができる。そのため、複数の入力を処理する場合、第２のロジック回路CIR_2は第１のロジック回路CIR_1よりもタスク処理時間は短くなり、第３のロジック回路CIR_3はさらに短くなる。このように、ロジック回路内のパイプラインステージ数が多いほど並列処理が可能故、並列処理により処理時間が短くなる。
【００２９】
以上のとおり、回路面積が大きいほど回路規模が大きく単位時間当たりの消費電力が大きくなるが、並列処理を行うことでトータルの処理時間が短くなり、その分、全処理完了までに必要な消費電力はより低くなる可能性がある。
【００３０】
また、第２のロジック回路CIR_2よりも第３のロジック回路CIR_3のほうが、各パイプラインステージ内の回路規模が小さくその遅延時間が短い。そのため、第３のロジック回路CIR_3は第２のロジック回路CIR_2に比較すると、より高速クロックで動作可能である。この点からも単位時間当たりの消費電力が大きいのが理解できる。
【００３１】
図５は、新たなタスクのロジック回路を非同期で配置（構成）する場合の問題点について説明する図である。図３で説明したとおり、同じタスクでも複数種類のロジック回路で処理することができる。したがって、複数種類のロジック回路のうち、最適なロジック回路を選択することで、演算処理装置の処理性能を向上させることができる。
【００３２】
しかしながら、新たなタスクのロジック回路をFPGA内に配置（構成）する場合、図２で示したとおり、FPGA内の空き領域がその都度異なるので、空き領域が狭い場合は処理速度が速い高性能だが回路面積が大きいロジック回路を配置（構成）させることができない。そのため、処理速度は遅いが回路面積が小さいロジック回路を配置せざるをえない。
【００３３】
図５には、新たなタスクＸを処理可能な２つのロジック回路CIR_1、CIR_2のいずれかを、状態S10のFPGAに配置（構成）する処理例が示されている。図示されるとおり、ロジック回路CIR_1は処理速度は低いが回路面積は小さく、ロジック回路CIR_2は処理速度は高いが回路面積は大きい例である。そして、状態S10のFPGAは、６つのロジック回路が既に配置（構成、使用中）済みのため、空き論理ブロックは４つであり、しかも空き領域は単一の矩形形状ではない。
【００３４】
そのため、状態S10のFPGAに配置（構成）可能なロジック回路は面積が小さいほうの回路CIR_1である。したがって、状態S11では、ロジック回路CIR_1が配置（構成）されてしまい、タスクＸの処理時間は、ロジック回路CIR_2を配置できた場合に比較すると長くなる。
【００３５】
図６は、２つのロジック回路の実行時間と処理量を示す図である。図５の例のように、状態S10で新たなタスクＸのために次に配置（構成）する回路をロジック回路CIR_1に選択すると、図６中、CIR_1で示されるとおり、短時間でロジック回路CIR_1の構成データをダウンロードしてFPGA内にロジック回路CIR_1を再構成できるが、処理速度が遅いため、タスクＸの処理量に達するまでの時間は長くなる。
【００３６】
一方で、状態S10でタスクＸのために配置（構成）する回路をロジック回路CIR_2に選択すると、図６中、CIR_2で示されるとおり、他のタスクのロジック回路の処理が完了してそのロジック回路が削除されるまで待つ必要があるので、ロジック回路CIR_2を配置（構成）するまでの待ち時間と再構成に要する時間の合計はロジック回路CIR_1よりも長い。しかし、ロジック回路CIR_2は処理速度が速いため、タスクＸの処理量に達するまでの合計時間は、ロジック回路CIR_1よりも短くなる。
【００３７】
［本実施の形態のロジック回路の選択方法］
本実施の形態における構成制御プログラムは、以下のような処理を行って、より早く処理が終了するロジック回路を選択してPLD内に配置（構成）する。
【００３８】
すなわち、構成制御プログラムは、新たなタスクの処理要求に応じて、PLD内に既に構成されているまたは構成することが予約されている受付済みタスクのロジック回路の総処理終了時刻とそのロジック回路の面積とに基づいて、新たなタスクに対応する複数種類のロジック回路それぞれが構成可能となるまでの構成可能時間T#wait（＃は複数種類の番号を表す。）を生成（または算出）する。つまり、受付済みタスクのロジック回路の総処理終了時刻毎にそのロジック回路が消去されて空き領域が形成されるので、新たなタスクの複数種類のロジック回路のうち総処理終了時刻それぞれの時点で配置（構成）可能なロジック回路を検出し、配置可能（構成可能）になるまでに待たされる時間、構成可能時間T#waitを求める。これは全ロジック回路それぞれについて求める。
【００３９】
次に、構成制御プログラムは、新たなタスクの複数種類のロジック回路それぞれの配置（構成）に要する構成時間T#confと、それぞれの処理に要する処理時間T#exeに、構成可能時間T#waitをそれぞれ加算した総処理時間T#totalを生成（または算出）する。そして、構成制御プログラムは、より短い総処理時間のロジック回路を選択し、選択したロジック回路をPLD内に配置（構成）する。望ましくは、最も短い総処理時間のロジック回路を選択する。
【００４０】
これにより、新たなタスクの処理が完了する時間が最も早くなるロジック回路を選択することができる。
【００４１】
図７は、本実施の形態における構成制御プログラムによる新たなタスクのロジック回路を選択する例を示す図である。図７の例は、図５と同様に、状態S10のFPGAに対して新規タスクＸの処理依頼があった場合を想定している。そして、構成制御プログラムが、タスクＸを高位合成してHDLに変換し更に論理合成してネットリストに変換しさらにネットリストの論理回路を構成するための構成データを生成したとする。つまり、タスクＸを処理する２種類のロジック回路CIR_1、CIR_2の構成データが生成されたとする。状態S10ではFPGAには既に６つのロジック回路が構成済みで実行中であり、それらのロジック回路の処理が終了する予測総処理終了時刻が図示されるとおりとする。
【００４２】
上記の場合、構成制御プログラムは、２つの候補のロジック回路それぞれについて、配置（構成）可能になるまでに待たされる構成可能時間T#waitと、構成データをFPGAにダウンロードし設定するのに要する構成時間T#confと、それぞれの処理に要する処理時間T#exeを算出またはデータベースから抽出する。そして、構成制御プログラムは、２つの候補のロジック回路のうち、上記時間を加算した総処理時間T#totalが短いほうを選択する。
【００４３】
図８は、タスクＸを２つのロジック回路で処理する場合とＣＰＵで処理する３つの実行プランを示す図である。図８中、タスクＸをロジック回路CIR_1で処理した場合Ａと、ロジック回路CIR_2で処理した場合Ｂと、ＣＰＵで実行した場合Ｃ、それぞれの構成可能時間、構成時間、処理時間、そして総処理時間が示されている。
【００４４】
図７のタスクＸの処理依頼が発生したときの状態S10に示されるFPGA内の配置（構成）済且つ実行中の６つのロジック回路の状態と、それぞれのロジック回路の総処理終了時刻とによれば、ロジック回路CIR_1であれば面積が小さいので、構成可能時間（構成するまでの待ち時間）は０ｓｅｃである。また、ロジック回路CIR_1の構成時間と処理時間と総処理時間は図８に示されるとおりである。
【００４５】
一方、ロジック回路CIR_2は面積が大きいので、予測総処理終了時刻が５００ｎｓのロジック回路が処理を終了するまで待てば構成可能になるので、構成可能時間は５００ｎｓである。そして、ロジック回路CIR_2の構成時間と処理時間と総処理時間は図８に示されるとおりである。ロジック回路CIR_2は、ロジック回路CIR_1よりも面積が大きいので構成時間がより長いが、処理時間はより短く、総処理時間はより短い。
【００４６】
さらに、タスクＸをFPGA内のロジック回路で処理するのではなくCPUにより実行する場合は、構成可能時間と構成時間は共に０ｓｅｃである。但し、CPUによる実行のため２つのロジック回路より処理時間は長く、総処理時間も長くなっている。
【００４７】
そこで、構成制御プログラムは、図８の表に示されたロジック回路CIR_1, CIR_2の総処理時間に基づいて、総処理時間がより短いロジック回路CIR_2を選択し、FPGA内に配置（構成）する予約状態に登録する。
【００４８】
図９は、本実施の形態における構成制御プログラムのフローチャート図である。制御構成プログラムは、CPUから新規タスクの処理依頼を受信すると（S20のYES）、新規タスク構成・実行処理を行う（S21）。
【００４９】
新規タスク構成・実行処理S21は、図９の右側に示されている。構成制御プログラムは、まず、新規タスクに対し高位合成等を行い、新規タスクを処理可能な複数のロジック回路C#(#=1〜n)の構成データを生成し、構成情報メモリ１２に書き込む（S30）。
【００５０】
次に、構成制御プログラムは、各ロジック回路について、構成データをPLDに設定してロジック回路を構成するのに要する回路構成時間T#confと、ロジック回路の処理時間T#exeとを算出する（S31）。これらの時間は、過去にFPGA内に構成された回路の実績に基づいて算出される。具体的な計算例については後述する。
【００５１】
さらに、構成制御プログラムは、各ロジック回路について、構成可能になるまで待たされる時間である構成可能時間T#waitを算出する（S32）。構成可能時間T#waitは、FPGA内に構成済みまたは構成予約済みのロジック回路の予測される総処理終了時刻とそれらロジック回路の面積と位置に基づいて、算出される。具体的な計算例については後述する。
【００５２】
そして、構成制御プログラムは、各ロジック回路の総処理時間T#totalを以下のとおり算出する（S33）
総処理時間T#total = T#wait + T#conf + T#exe
【００５３】
さらに、構成制御プログラムは、上記の複数のロジック回路の総処理時間T#totalが最小のものを選択する。そして、現在時刻に、選択した最小の総処理時間T#totalを次のとおり加算して、総処理終了時刻（予測総処理終了時刻）T#total_endを算出し、メモリに記憶する（S34）。
総処理終了時刻T#total_end = 現在時刻 + T#total（最小値）
この総処理終了時刻T#total_endは、後で構成可能時間T#waitを算出する際に参照されるので、メモリに記憶しておく。
【００５４】
以上の処理で新たなタスクを処理するロジック回路が選択され、そのロジック回路をFPGA内に配置（構成）する時刻（現在時刻＋T#wait）が決定し、そのロジック回路の処理が完了する時刻（総処理終了時刻）T#total_endが算出される。
【００５５】
次に、構成制御プログラムは、選択されたロジック回路Cxが現時点で構成（配置）可能か否か判定する（S35）。この判定では、構成可能時間Tx_wait=0の場合に構成可能と判定される。構成可能な場合（S35のYES）、ロジック回路CxをFPGA内に構成する（S37）。一方、構成可能でない場合（構成可能時間Tx_waitが０でない場合）（S35のNO）、ロジック回路Cxの構成を予約する（S36）。構成の予約では、構成する位置と面積の情報や構成する予約時刻などとともに、ロジック回路Cxが予約行列に記憶される。
【００５６】
構成制御プログラムは、構成することを予約されたロジック回路について、FPGA内のロジック回路の処理が完了するタイミング毎に構成（配置）可能な否かを判定する（S35）。この判定では、構成可能時間Tx_waitが経過しそのロジック回路をPLDに構成できるか否かが判定される。やがて予約中のロジック回路が構成可能になると（S35のYES）、構成制御プログラムは、予約されていたロジック回路CxをFPGA内の予約位置に構成する（S37）。
【００５７】
構成制御プログラムは、ロジック回路CxをFPGA内に構成したとき、工程S34で記憶済みの総処理終了時刻Tx_total_endを、現在時刻にロジック回路の処理時間Tx_exeを加算した時刻に更新する（S37）。この更新処理は、構成予約された場合、予測した構成可能時間Tx_waitと実際に待たされた時間とが乖離している場合があるため、ロジック回路Cxの総処理終了時刻の精度を高めるために行われる。
【００５８】
そして、構成制御プログラムは、構成したロジック回路Cxが処理を実行し実行が完了すると、その処理時間Tx_exeの実績値を処理時間データベースのメモリ１３に記憶する（S38）。処理時間の実績値は、ロジック回路の処理時間を見積もるときに参照される。
【００５９】
以上のとおり、構成制御プログラムは、新規タスクの処理要求を受け付けるたびに、その新規タスクを処理可能な複数のロジック回路のうち、総処理時間T#totalが最も短いロジック回路を選択し、その構成可能時刻（現在時刻＋構成可能時間T#wait）、総処理終了時刻T#total_endをメモリに記憶しておく。また、ロジック回路が終了した時点で実際に要した処理時間T#exeの実績値も処理時間データベース内に記憶する。
【００６０】
［処理時間の計算方法］
図１０は、構成制御プログラムの処理時間予測処理のフローチャート図である。構成制御プログラムは、タスクを処理するロジック回路の平均処理時間μを以下の通り計算する（S40）。
μ＝Tconst＋L(引数値)
ここで、Tconstは固定処理時間であり、高位合成時にタスクの内容に応じて予測される時間か、過去の同じタスクの処理時間の平均値である。また、L(x)は、タスクの引数ｘに応じた処理時間の変動に対応する。タスクの引数ｘで処理量が変動するのでその変動時間に対応する。
【００６１】
例えば、処理量に影響する引数の例は、処理が関数F(x,y)で、繰り返し回数が引数ｘである一重ループと、繰り返し回数が引数xと引数yの二重ループを有する場合、以下の遅延時間が生じる。
L(x,y)＝c0*x + c1*x*y
C0, C1は係数である。
【００６２】
また、上記の平均処理時間μは、処理の重要度に応じてメモリアクセスの優先順位が設定される場合には、その重要度Cimpの係数を乗じて、以下のように変形させてもよい。
μ＝Cimp *{Tconst + L(引数値)}
【００６３】
さらに、構成制御プログラムは、過去の同じタスクの実行結果から処理時間の分散の度合いである標準偏差σを求める（S41）。
【００６４】
次に、構成制御プログラムは、外乱による処理時間のブレ値Envを次のとおり計算する（S42）。
Env = T_fpga*E0 + P_fpga*E1
T_fpgaは、FPGAの温度Tに依存する処理時間のぶれ値であり、P_fpgaは、FPGAの消費電力Pに依存する処理時間のぶれ値である。FPGAの温度が高くなると処理速度が変化し、消費電力が上がると処理速度が変化するので、そのぶれ値を処理時間に反映させるのが望ましい。E0, E1は係数または重み値である。
【００６５】
上記以外にも、FPGAの動作周波数Fに依存するぶれ値F_fpgaを追加してもよい。動作周波数Fが上がれば処理時間は短くなる。さらに、回路の面積Sに依存するぶれ値S_fpgaを追加してもよい。回路の面積Sが大きいほど並列化処理による処理時間は短くなる。
【００６６】
例えば、FPGAの動作周波数F_fpgaが基準周波数F_refに対してどの程度高いかまたは低いかにより、処理時間を上下させて調整するのが望ましい。例えば、以下のとおりである。
Env = μ*{(F_ref-F_fpga)/F_ref}*Ct
ここで、Ctは変換係数または重み値である。F_fpga＞F_refの場合はEvnが負の値になり処理時間は短くなり、逆の場合はEvnが正の値になり処理時間は長くなる。平均値μに両周波数の差の割合を乗じた分だけ、処理時間が長くなったり短くなったりする。
【００６７】
そして、最後に、構成制御プログラムは、タスクの処理をするロジック回路の処理時間T#exeを以下のとおり算出する（S43）。
T#exe = μ + W0*σ*rand + W1*Env
ここで、W0,W1は重み付け係数（W0,W1=０〜１）、randは標準正規乱数である。すなわち、標準正規乱数randは分布が正規分布になる乱数であり、標準正規乱数randに過去の処理時間の分散度合いである標準偏差σを乗じることで、毎回のロジック回路の処理時間のランダムな変動を加えることができる。
【００６８】
［処理時間の計算例１］
第１の例は、固定パケットの送信を行う関数send()であり、過去の処理時間の履歴が以下のとおりとする。
１回目：処理時間1105 ns
２回目：処理時間1320 ns
３回目：処理時間1190 ns
【００６９】
そこで、処理時間の導出方法は以下のとおりである。まず、過去の処理時間の履歴から処理時間がランダムであると仮定して、平均値Tconstと標準偏差σを以下のとおり算出する。
Tconst = 1205 ns
σ = 88.4 ns
【００７０】
また、ランダム要因が支配的であるので、ランダム要因の係数をW0=1.0とする。また、引数がないのでL(引数値)＝０とする。さらに、外乱による雑音Env、W1については、以下のように仮定する。
Env = Tconst * {(250MHx-F_fpga)/250MHx}
= 1205 ns * {(250MHx-F_fpga)/250MHx}
W1 = 0.7
【００７１】
その結果、第１例の処理時間T#exeは、以下の通り算出される。
T#exe = Tconst + W0*σ*rand + W1*Env
= 1205 ns + W1*1205 ns * {(250MHx-F_fpga)/250MHx} + W0*σ*rand
= 1205 ns[1+0.7{(250-F_fpga)/250}] + 88.4 ns*rand
【００７２】
［処理時間の計算例２］
第２の例は、関数var（sizex, sizey, *image）である。この関数は、画素数がsizex * sizeyの入力画像に対して、４×４画素毎の画素値の分散値をメモリRAMに出力する関数であり、処理量が引数sizex * sizeyに比例する。*imageは分散値を求める画像フィルタのポインタを意味する。
【００７３】
そこで、過去の処理の履歴が以下のとおりだったと仮定する。
１回目：引数（256, 256, *ptr）、処理時間1200 ps
２回目：引数（64, 64, *ptr）、処理時間900 ps
【００７４】
上記の場合の処理時間の導出方法は、以下のとおりである。すなわち、この関数にはランダムな要因がないので、ランダムな項の係数W0をW0=0とする。
【００７５】
さらに、平均値に相当する部分μ＝Tconst + L(*)を以下のような一次関数と仮定する。
μ = A * sizex * sizey + Tconst
つまり、L(*)=A * sizex * sizeyと見なしている。Aは係数である。
【００７６】
この一次関数に上記の過去の履歴の値を代入して連立方程式を解くと、AとTconstが以下のとおり求められる。
A = 0.184 [ps/pel]
Tconst = 146.2 ps
ここで、pelは画素（pixel）を意味する。
【００７７】
また、外乱による変動要因のEnvとその係数W1を以下のように仮定する。
Env = F(RAM使用量)
W1 = 0.1
ここで、RAM使用量が多いほどRAMの空き領域が少なくなり、処理時間は長くなるので、その変動要因が上記のEnvに反映されている。
【００７８】
この結果、処理時間T#exeは、以下のとおりになる。
T#exe = (sizex * sizey * 0.184) + 146.2 + 0.1*F(RAM使用量)
【００７９】
［構成可能時間の計算方法］
図１１は、構成可能時間の計算のフローチャート図である。以下、構成可能時間T#waitの計算方法について説明する。構成可能時間T#waitは、複数のロジック回路の候補C#それぞれが、最も早くFPGA内に構成（配置）することができる時間である。また、FPGA内の空き領域は、発生済みのタスクのロジック回路が動作を終了した時刻（総処理終了時刻T#total_end）毎に変化するので、構成制御プログラムは、その変化する空き領域に基づいて候補C#を構成（配置）できるか否か判定する。
【００８０】
まず、新たなタスクを処理する全てのロジック回路の候補C#それぞれについて、工程S50〜S56を繰り返す。
【００８１】
さらに、各ロジック回路の候補C#について、発生済みの全タスクのロジック回路の総処理終了時刻T#_total_endの最も早いものから順に、工程S51〜S55を繰り返す。より詳しく言うと、現在時刻（T#_total_end=0）を最初に、その次から総処理終了時刻T#_total_endの最も早いものから順に、工程S51〜S55を繰り返す（S51）。
【００８２】
前述のとおり、これらの総処理終了時刻毎に、FPGA内の構成されたロジック回路の状況が変化するので、その変化する全てのタイミングで、FPGA内の実行中の全タスクのロジック回路の面積と位置に基づく空き領域に、新タスクの回路候補C#が構成（配置）可能か否かを判定する（S52）。この判定には、各総処理終了時刻でのFPGA内の空き領域と、回路候補C#が構成（配置）される期間中（T#conf+T#exe）のFPGA内の空き領域の両方が、回路候補C#の面積以上であることが必要である。
【００８３】
そして、回路候補C#が構成（配置）可能な場合は、その回路候補C#が構成までに待たされる構成可能時間T#waitは、判定対象の総処理終了時刻と現在時刻との差であるので、以下のとおり求められる。
T#wait = 総処理終了時刻T#_total_end - 現在時刻
【００８４】
上記の工程S51〜S55が、回路候補C#が構成可能になるまで繰り返され（S55）、さらに、全ての回路候補C#に対して繰り返される（S56）。
【００８５】
図１２は、図１１の回路候補C#がFPGA内に構成（配置）可能か否かの判定処理のフローチャート図である。図１２は、図１１の工程S53を２つの工程S53_1, S53_2で示す。構成制御プログラムは、総処理終了時刻T#total_endでのFPGA内の空き領域に新規の候補C#を構成（配置）可能か否か判定する（S53_1）。この判定では、構成制御プログラムは、総処理終了時刻T#total_endで処理終了するするロジック回路の削除と、同じ総処理終了時刻T#total_endで新たに構成される予約中のロジック回路の追加を考慮して、空き領域とその形状を算出し、その空き領域に新規の候補C#を構成可能か否かを判定する。
【００８６】
さらに、S53_1でYESの場合、構成制御プログラムは、新規の回路候補C#の構成時間と処理時間の合計T#cnf+T#exeの期間中、予約中の回路Cが構成（配置）されたとしても、新規の回路候補C#が構成可能か否かを判定する（S53_2）。すなわち、予約中の回路Cが今後配置されても、新規候補C#の構成状態を維持できる必要がある。
【００８７】
[ロジック回路の構成（配置）例１]
図１３は、前述の構成制御プログラムによる各タスクのロジック回路の構成（配置）例１を示す図である。この例１では、プロセッサから４つの新規タスクTA0-TA3が順番に要求される。図１３中、横軸は時刻を示す。
【００８８】
最初に時刻450nsで新規タスクTA0が要求される。構成制御プログラムは、FPGA内にはなにもロジック回路が構成されていないため、新規タスクTA0の回路候補C#のうち最適な（総処理時間T#totalが最速の）回路C0を選択し、FPGA内に構成（配置）し、その回路動作を開始させる。この回路C0の総処理時間と総処理終了時刻は以下のとおりとする。
総処理時間T0_total＝1950ns
総処理終了時刻T0_total_end＝2400ns
【００８９】
次に、時刻720nsで新規タスクTA1が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA1の回路候補C#のうち最適な（総処理時間T#totalが最速の）回路C1を選択する。この時刻720nsでは選択した回路C1を構成可能であるので、構成制御プログラムは、FPGA内に構成（配置）し、その回路動作を開始させる。この回路C1の総処理時間と総処理終了時刻は以下のとおりとする。
総処理時間T1_total＝2680ns
総処理終了時刻T1_total_end＝3400ns
【００９０】
次に、時刻1500nsで新規タスクTA2が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA2の回路候補C#のうち最適な回路C2を選択したが、現時刻1500nsでは回路C2を構成（配置）できず、回路C1が処理終了後に構成可能になるため、構成予約状態にする。この回路C2の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait＝900ns
総処理時間t2_total＝500ns
総処理終了時刻T2_total_end＝2900ns
【００９１】
最後に、時刻2100nsで新規タスクTA3が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA3の回路候補C#のうち最適な回路C3を選択したが、現時刻では回路C3を構成（配置）できず、回路C2が処理終了後に構成可能になるので、構成予約状態にする。この回路C3の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait＝800ns
総処理時間t2_total＝1000ns
総処理終了時刻T2_total_end＝3900ns
【００９２】
上記のタスクTA2の回路C2は回路C1が終了する時刻2400nsでFPGA内に構成され、タスクTA3の回路C3は回路C2が終了する時刻2900nsでFPGA内に構成される。この例１では、タスクの発生順に回路がFPGA内に構成されている。
【００９３】
[ロジック回路の構成（配置）例２]
図１４は、前述の構成制御プログラムによる各タスクのロジック回路の構成（配置）例２を示す図である。この例２でも、４つの新規タスクTA0-TA3が順番に要求される。そして、例２では、新規タスクT0, T1, T2の回路C0, C1, C2の構成（配置）は例１と同じであるが、新規タスクTA3の回路C3を構成（配置）するタイミングが例１と異なる。
【００９４】
新規タスクTA0, TA1, TA2については、例１と同じである。
【００９５】
最後に、時刻2100nsで新規タスクTA3が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA3の回路候補C#のうち最適な回路C3を選択したが、例２の回路C3は、例１の回路C3より面積が小さいとする。
【００９６】
構成制御プログラムは、回路C3が新規タスクTA3の要求時刻2100nsでFPGA内に配置可能であり、回路C3の総処理時間T3_totalの間、予約中の回路C2の配置が行われてもFPGA内に配置可能であることを判定する。その結果、構成制御プルグラムは、回路C3をFPGA内に配置し、実行させる。したがって、回路C3の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait＝0ns
総処理時間t2_total＝1000ns
総処理終了時刻T2_total_end＝3100ns
【００９７】
上記のタスクTA2の回路C2は時刻2400nsでFPGA内に構成され、タスクTA3の回路C3は先に要求されたタスクTA2の回路C2よりも先に、時刻2100nsでFPGA内に構成される。例２では、タスクの発生の順番と回路がFPGA内に構成される順番とが異なっている。それぞれのタスクが互いに依存関係のない異なるプログラムから要求されているので、構成制御プログラムは、タスクに対応する回路の構成と実行の順番を独立して決定することができる。
【００９８】
以上のとおり、本実施の形態では、プログラマブルロジックデバイスPLDが複数のタスクを非同期で処理する場合、各タスクの処理を行う最適なロジック回路をPLD内に構成し、各タスクの処理効率を高めることができる。
【００９９】
以上の実施の形態をまとめると、次の付記のとおりである。
【０１００】
（付記１）
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第１のロジック回路の総処理終了時刻と前記第１のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第２のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第２のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第２のロジック回路を選択し前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置。
【０１０１】
（付記２）
前記構成制御部は、
前記第２のロジック回路の選択において、前記複数の総処理時間のうち最短の総処理時間に対応する第２のロジック回路を選択する、付記１に記載の演算処理装置。
【０１０２】
（付記３）
前記構成制御部は、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内に既に構成されている第１のロジック回路のタスク処理の終了と同期せずに、前記処理要求されたタスクに対応する第２のロジック回路を前記プログラマブルロジック回路に構成する、付記１または２に記載の演算処理装置。
【０１０３】
（付記４）
前記構成制御部は、
前記タスクの処理要求の際に、前記選択した第２のロジック回路の総処理時間と現在時刻とから前記総処理終了時刻を算出して記憶し、
さらに、前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成した際に、前記処理時間と現在時刻から前記総処理終了時刻を算出し、前記記憶済みの総処理終了時刻を更新する、付記１または２に記載の演算処理装置。
【０１０４】
（付記５）
前記構成制御部は、
前記タスクに対応する第２のロジック回路の処理時間の実績値を記憶し、
新たなタスクの処理要求の際に、前記新たなタスクに対応するタスクの前記処理時間の実績値に基づいて、前記新たなタスクに対応する第２のロジック回路の処理時間を予測する、付記１または２に記載の演算処理装置。
【０１０５】
（付記６）
前記構成制御部は、
前記構成可能時間を算出する際に、発生済みタスクのロジック回路の前記総処理終了時刻が早い順に、前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定し、現在時刻から構成可能な前記総処理終了時刻までの時間を前記構成可能時間として算出する、付記１または２に記載の演算処理装置。
【０１０６】
（付記７）
前記構成制御部は、
前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かの判定を、前記ロジック回路が構成されてから実行終了までの期間において、前記ロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定する、付記６に記載の演算処理装置。
【０１０７】
（付記８）
前記構成制御部は、
前記新たなタスクに対応するロジック回路を、当該新たなタスクよりも先に発生したタスクに対応するロジック回路を前記プログラマブルロジック回路内に構成するよりも前に、前記プログラマブルロジック回路内に構成する、付記７に記載の演算処理装置。
【０１０８】
（付記９）
前記構成制御部は、
前記ロジック回路の処理終了後に、前記選択した第２のロジック回路の実績処理時間を対応するタスクと関連付けて記憶し、
前記複数種類の第２のロジック回路それぞれの処理に要する処理時間を、前記記憶した実績処理時間に基づいて予測する、付記１または２に記載の演算処理装置。
【０１０９】
（付記１０）
前記複数の第２のロジック回路は、少なくとも、第１の面積と第１の処理速度を有する第１の回路と、前記第１の面積より広い第２の面積と前記第１の処理速度より早い第２の処理速度を有する第２の回路とを有する、付記１に記載の演算処理装置。
【０１１０】
（付記１１）
前記プログラマブルロジック回路は、フィールドプログラマブルゲートアレイまたは再構成可能回路のいずれかである、付記１に記載の演算処理装置。
【０１１１】
（付記１２）
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、を有する演算処理装置の制御方法であって、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第１のロジック回路の総処理終了時刻と前記第１のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第２のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、
前記複数種類の第２のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、
より短い総処理時間の第２のロジック回路を選択し、
前記選択した第２のロジック回路を前記プログラマブルロジック回路内に構成する演算処理装置の制御方法。
【符号の説明】
【０１１２】
CPU：プロセッサ
PLD：プログラマブルロジックデバイス
１５：構成制御プログラム
C#：候補のロジック回路
T#wait：構成可能時間
T#conf：構成時間
T#exe：処理時間
T#total：総処理時間
T#total_end：総処理終了時刻
【図１】
0006485335.tif 000002
【図２】
0006485335.tif 000003
【図３】
0006485335.tif 000004
【図４】
0006485335.tif 000005
【図５】
0006485335.tif 000006
【図６】
0006485335.tif 000007
【図７】
0006485335.tif 000008
【図８】
0006485335.tif 000009
【図９】
0006485335.tif 000010
【図１０】
0006485335.tif 000011
【図１１】
0006485335.tif 000012
【図１２】
0006485335.tif 000013
【図１３】
0006485335.tif 000014
【図１４】
0006485335.tif 000015