(57)【特許請求の範囲】
【請求項１】
複数の小回路を有し、一部又は全部の前記小回路における論理仕様を再構成可能な再構成可能回路と、
一又は二以上の演算を一部の前記小回路で処理する部分論理仕様を、前記一又は二以上の演算毎に記憶する記憶手段と、
互いに独立して処理可能な複数の演算に対する処理要求を取得する取得手段と、
処理要求された二以上の演算を並列処理する論理仕様を、前記小回路が重複しない前記部分論理仕様の組み合わせに基づいて決定する決定手段と、
前記再構成可能回路に対し、前記決定手段により決定された前記論理仕様を動的に再構成する再構成手段と、
を備え、
前記小回路の一部は、特殊な処理を高速に処理可能な物理的構造を有しており、
前記決定手段は、論理仕様を決定する演算に特殊な処理が含まれている場合、当該演算を、当該特殊な処理に特化した物理的構造を有する小回路に配置することを特徴とする演算処理装置。
【請求項２】
請求項１に記載の演算処理装置において、
前記記憶手段は、少なくとも一部の前記一又は二以上の演算について、演算を処理する小回路が異なる複数の部分論理仕様を記憶し、
前記決定手段は、演算を処理する小回路が異なる複数の部分論理仕様の中から、小回路を重複させずに組み合わせ可能な部分論理仕様を選択して、前記論理仕様を決定することを特徴とする演算処理装置。
【請求項３】
請求項１に記載の演算処理装置において、
少なくとも一つの前記小回路を含むように前記再構成可能回路を区画した複数の小区画が設定され、
前記決定手段は、演算の処理に用いられる小区画の重複情報に基づいて、前記小回路が重複しない前記部分論理仕様の組み合わせを判定することを特徴とする演算処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の演算処理装置において、
前記取得手段は、処理要求された演算についての処理の優先順位情報も取得し、
前記決定手段は、前記優先順位情報にも基づいて、前記論理仕様を決定することを特徴とする演算処理装置。
【請求項５】
複数の小回路を有し、一部又は全部の前記小回路における論理仕様を再構成可能な再構成可能回路と、一又は二以上の演算を一部の前記小回路で処理する部分論理仕様を、前記一又は二以上の演算毎に記憶する記憶手段と、を備えるコンピュータを、
互いに独立して処理可能な複数の演算に対する処理要求を取得する取得手段、
処理要求された二以上の演算を並列処理する論理仕様を、前記小回路が重複しない前記部分論理仕様の組み合わせに基づいて決定する決定手段、
前記再構成可能回路に対し、前記決定手段により決定された前記論理仕様を動的に再構成する再構成手段、
として機能させ、
前記小回路の一部は、特殊な処理を高速に処理可能な物理的構造を有しており、
前記決定手段は、論理仕様を決定する演算に特殊な処理が含まれている場合、当該演算を、当該特殊な処理に特化した物理的構造を有する小回路に配置することを特徴とする演算処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置または演算処理プログラムに関する。
【背景技術】
【０００２】
ソフトウエア的な制御を行って、ハードウエア的な論理仕様を再構成することができる演算処理装置が普及しつつある。
【０００３】
下記特許文献１には、生成すべき一つの回路を分割してできる複数の分割回路を、再構成可能な回路に順次構成する技術が開示されている他、再構成可能な回路中の演算器（ＡＬＵ）に定数を入力する技術も記載されている。
【０００４】
下記特許文献２には、実行させる演算間の依存関係に基づいて、回路の再構成を行う技術が開示されている。
【０００５】
下記特許文献３には、外部からの割込信号をトリガーとして回路の再構成を行うことにより、優先度の高い処理を先に実行し、その後に中断した処理を再開する技術が開示されている。
【０００６】
下記特許文献４には、パイプライン構造を有する再構成可能な複数のプロセッサ要素に対し、１クロックで構成の切り替えを行い、パイプライン構造に流されるデータに対応した演算処理を実行することにより、時分割処理を実現する技術が開示されている。
【０００７】
下記特許文献５には、再構成可能な回路内の各演算器の近くに、処理中のデータを保持することにより、回路の動作周波数を向上させる技術が開示されている。
【０００８】
【特許文献１】特開２００５−２７７６７３号公報
【特許文献２】特開２００４−３３４４２９号公報
【特許文献３】特開２００５−１６５９６１号公報
【特許文献４】特開２００６−０１８５３９号公報
【特許文献５】特開２００５−０４４３２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記特許文献１の技術のように各演算処理を順次実行する場合、単純には、各演算処理に要する時間を足しあわせただけの演算時間を必要とする。この事情は、上記特許文献２の技術のように演算順序を変更する場合も同様である。さらに、上記特許文献３の技術のように、優先順位に基づいて割り込み処理を行う場合には、優先順位の高い処理は早く終了するが、全体の処理が終了するまでには、各演算処理を順次実行するときと同程度の時間を要することになる。また、上記特許文献４で採用された時分割処理は、全体の演算時間を短くするものではなく、しかも、再構成の回数が増加するためオーバーヘッドの問題も無視できなくなる虞がある。上記特許文献５の技術も、このような時間短縮に関する課題を解決するものではない。
【００１０】
本発明は、こうした事情を鑑みてなされたものであり、その目的は、複数の処理に要する全体の処理時間を短縮可能な演算処理装置または演算処理プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の演算処理装置の一態様においては、複数の小回路を有し、一部又は全部の前記小回路における論理仕様を再構成可能な再構成可能回路と、一又は二以上の演算を一部の前記小回路で処理する部分論理仕様を、前記一又は二以上の演算毎に記憶する記憶手段と、互いに独立して処理可能な複数の演算に対する処理要求を取得する取得手段と、処理要求された二以上の演算を並列処理する論理仕様を、前記小回路が重複しない前記部分論理仕様の組み合わせに基づいて決定する決定手段と、前記再構成可能回路に対し、前記決定手段により決定された前記論理仕様を動的に再構成する再構成手段と、を備え、前記小回路の一部は、特殊な処理を高速に処理可能な物理的構造を有しており、前記決定手段は、論理仕様を決定する演算に特殊な処理が含まれている場合、当該演算を、当該特殊な処理に特化した物理的構造を有する小回路に配置することを特徴とする。
【００１２】
本発明の演算処理装置の一態様においては、前記記憶手段は、少なくとも一部の前記一又は二以上の演算について、演算を処理する小回路が異なる複数の部分論理仕様を記憶し、前記決定手段は、演算を処理する小回路が異なる複数の部分論理仕様の中から、小回路を重複させずに組み合わせ可能な部分論理仕様を選択して、前記論理仕様を決定する。
【００１３】
本発明の演算処理装置の一態様においては、少なくとも一つの前記小回路を含むように前記再構成可能回路を区画した複数の小区画が設定され、前記決定手段は、演算の処理に用いられる小区画の重複情報に基づいて、前記小回路が重複しない前記部分論理仕様の組み合わせを判定する。
【００１５】
本発明の演算処理装置の一態様においては、前記取得手段は、処理要求された演算についての処理の優先順位情報も取得し、前記決定手段は、前記優先順位情報にも基づいて、前記論理仕様を決定する。
【００１７】
本発明の演算処理プログラムの一態様においては、複数の小回路を有し、一部又は全部の前記小回路における論理仕様を再構成可能な再構成可能回路と、一又は二以上の演算を一部の前記小回路で処理する部分論理仕様を、前記一又は二以上の演算毎に記憶する記憶手段と、を備えるコンピュータを、互いに独立して処理可能な複数の演算に対する処理要求を取得する取得手段、処理要求された二以上の演算を並列処理する論理仕様を、前記小回路が重複しない前記部分論理仕様の組み合わせに基づいて決定する決定手段、前記再構成可能回路に対し、前記決定手段により決定された前記論理仕様を動的に再構成する再構成手段、として機能させ、前記小回路の一部は、特殊な処理を高速に処理可能な物理的構造を有しており、前記決定手段は、論理仕様を決定する演算に特殊な処理が含まれている場合、当該演算を、当該特殊な処理に特化した物理的構造を有する小回路に配置することを特徴とする。
【発明の効果】
【００１８】
請求項１の本発明によれば、再構成可能回路の使用効率を向上させ、一連の演算処理を全体として高速化する演算処理装置が提供される。また、再構成可能回路の物理的構造に基づく性能を引き出し、処理の高速化、大容量化、または（使用する回路部分の）小規模化の少なくとも一つが可能となる。
【００１９】
請求項２の本発明によれば、並列処理可能な部分論理仕様の組み合わせが増え、再構成可能回路の使用効率が向上する。
【００２０】
請求項３の本発明によれば、小回路の重複判定を迅速に行うことが可能となる。
【００２２】
請求項４の本発明によれば、優先順位情報に基づいて、並列処理の組み合わせを動的に決定できる。
【００２４】
請求項５の本発明によれば、再構成可能回路の使用効率を向上させ、一連の演算処理を全体として高速化する演算処理プログラムが提供される。また、再構成可能回路の物理的構造に基づく性能を引き出し、処理の高速化、大容量化、または（使用する回路部分の）小規模化の少なくとも一つが可能となる。
【発明を実施するための最良の形態】
【００２５】
［用語等の説明］
ここでは、特許請求の範囲あるいは明細書で用いている用語や概念などを簡単に説明する。
【００２６】
再構成可能回路とは、リコンフィギュラブル回路とも呼ばれるものであり、ハードウエア的な動作を規定する論理仕様をソフトウエア的（プログラム的に）に変更可能な回路を指す。この再構成可能回路は、複数の小回路を備える。各小回路の例としては、算術論理演算部（ＡＬＵ）、ランダムアクセスメモリ（ＲＡＭ）、あるいは、これらの組み合わせなどを挙げることができる。複数ある小回路は、同じ物理的構造をもっていてもよいし、互いに異なる物理的構造をもっていてもよい。例えば、一部の小回路に対してのみ、ある種の演算に適した（あるいは適さない）入出力端子、メモリ、演算回路など設ける（あるいは設けない）ようにしてもよい。再構成可能回路では、小回路の内部論理、あるいは、各小回路間や外部との接続論理などを切り換えることで、そのハードウエア的な構造がソフトウエア的に変更（再構成）される。なお、再構成可能回路の再構成は、全部の小回路に対して行われることが一般的であるが、一部の小回路に対して行われてもよく、このような回路は部分的再構成が可能な回路と呼ばれることがある。
【００２７】
記憶手段は、一又は二以上の演算毎に部分論理仕様を記憶する。部分論理仕様とは、再構成可能回路の全小回路ではなく一部の小回路を使用して、一又は二以上の演算処理を行う論理仕様を指す。記憶手段は、一又は二以上の演算毎に、一つだけ部分論理仕様を記憶してもよいし、使用する小回路の少なくも一部が異なる複数の部分論理仕様を記憶してもよい。
【００２８】
取得手段は、複数の演算に対する処理要求を、外部からあるいは再構成可能回路から取得する。ここで演算とは、演算処理装置上で管理される単位の処理、例えばタスク、ジョブ、プロセスなどを指すものであり、別の処理と連結して一連の処理をなすものであってもよいし、その中に演算処理装置上で管理される複数の小さな処理単位を含むものであってもよい。処理要求される複数の演算には、互いに独立して処理可能なもの、すなわち、一方の処理結果が他方の処理に用いられるといった従属関係になく処理順が限定されないものが含まれる。なお、互いに独立して処理可能な演算は、典型的には、処理種別が互いに異なるもの（例えば、画像データと色変換処理と、画像データの圧縮処理）であるが、処理種別が互いに同じものであってもよい。例えば、独立した二以上のデータのそれぞれに対し、同じ種類の演算（例えば色変換処理）をする態様が挙げられる。
【００２９】
決定手段は、仕様する小回路が重複しない前記部分論理仕様を組み合わせることにより、各部分論理仕様に対応した演算を並列処理（個々の演算をタスクと呼ぶならば、実質的なマルチタスクが実現されると言える）するための論理仕様を決定する。決定手段は、各演算に対して一つの部分論理仕様のみが記憶されている場合には、これらが重複しない組み合わせに基づいて、論理仕様を決定する。また、少なくとも一部の演算に対して二以上の部分論理仕様が記憶されている場合には、いずれの部分論理仕様を採用するか選択したうえで論理仕様を決定するようにしてもよい。決定手段は、例えば、部分論理仕様の組み合わせの可否を予め算出して記憶しておき、算出結果に基づいて論理仕様を決定してもよいし、その都度組み合わせを算出して論理仕様を決定してもよい。また、処理要求された複数の演算に対する処理が一回の再構成で行えない場合に、次の再構成で採用する論理仕様を決定したり、その再構成のタイミングを決定したりするなど、長期的なスケジューリングを行うようにしてもよい。決定手段は、処理要求された演算の処理の優先順位情報に基づいて、すなわち、演算処理の優先度を二段階以上のカテゴリで表した情報に基づいて、論理仕様を決定してもよい。
【００３０】
再構成手段は、前記決定手段が決定した前記論理仕様により、再構成可能回路に対し動的に再構成を行う。再構成は、例えば、再構成したい論理仕様に対応する設定データ（コンフィグデータ）を、専用のメモリに書き込むことで行われる。動的（ダイナミック）な再構成とは、一旦再構成した論理仕様が固定的に使用されるのではなく、演算処理の必要性や処理状況などに応じて再構成が行われることをいう。
【００３１】
記憶手段、取得手段、決定手段、再構成手段は、通常は、再構成可能回路の外部装置（回路など）を利用して構築されるが、これらの一部または全部を再構成可能回路を利用して構築するようにしてもよい。また、新たな演算を処理するための部分論理仕様を追加する追加手段などを、外部回路や再構成可能回路を用いて構築するようにしてもよい。なお、本演算処理装置は、別の演算処理装置（再構成可能な演算処理装置であっても、再構成不可能な演算処理装置であってもよい）と共同で、データ処理等を行ってもよいし、単体でデータ処理等を行ってもよい。
【００３２】
［第１の実施の形態］
まず、図１乃至図７を用いて、第１の実施の形態について例示する。図１は、本実施の形態にかかる画像処理装置１０の構成例を示す概略図である。図示した画像処理装置１０は単体の筐体をもつ装置であり、内部通信路としての内部バス１１を備えている。そして、内部バス１１には、ＣＰＵ（中央処理装置）１２、ＲＯＭ（ＲｅａｄＯｎｌｙＭｅｍｏｒｙ）１４、ＲＡＭ（ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）１６、ＨＤＤ（ＨａｒｄＤｉｓｃＤｒｉｖｅ）１８、再構成可能演算装置２０、ＵＩ（ＵｓｅｒＩｎｔｅｒｆａｃｅ）２１、スキャナ２２、プリンタ２４、ＣＤＤ（ＣｏｍｐａｃｔＤｉｓｃＤｒｉｖｅ）２６、及びネットワークインタフェース２８の各構成要素が接続されている。
【００３３】
ＣＰＵ１２は、ＲＯＭ１４などに格納されたプログラムに従って、画像処理装置１０の各構成要素の制御や、画像処理等を行う装置である。ＲＯＭ１４は長期的な記憶が可能な半導体メモリ（記憶装置）であり、各種のプログラムや設定情報などを記憶する。ＲＡＭ１６は一時的な記憶が可能な半導体メモリであり、処理対象となる画像データなどを記憶する。ＨＤＤ１８は磁気ディスクなどを用いて構成された大容量の記憶装置であり、画像データを長期的に記憶するためなどに用いられる。再構成可能演算装置２０は、論理仕様を再構成可能な演算装置であり、ＲＯＭ１４あるいは自装置内に記憶されたプログラムに従って、画像データの演算処理などを行う。ＵＩ２１は、液晶ディスプレイや発光ダイオードなどの表示装置、及び、タッチパネルやキーボードなどの入力装置を備え、画像処理装置１０のユーザにデータを表示したり、ユーザから操作命令を受け付けたりする。スキャナ２２は、用紙表面の画像を読み取って画像データを生成する読取装置である。プリンタ２４は、画像データに基づいて用紙に印刷を行う印刷装置である。ＣＤＤ２６は、記録媒体としてのＣＤ（コンパクトディスク）に記録されたデータを読み取る装置であり、例えば、ＣＰＵ１２や再構成可能演算装置２０を制御するためのプログラムがＣＤＤ２６により提供された場合にこのプログラムを読み取るために用いられる。ネットワークインタフェース２８は、インターネットなどのネットワーク３０に接続してデータを入出力するためのインタフェースであり、例えば、ＣＰＵ１２や再構成可能演算装置２０を制御するためのプログラムがネットワーク３０を通じて提供される場合、このプログラムのデータ信号を受信するために用いられる。
【００３４】
ここで、簡単に、画像処理装置１０の動作について説明する。画像処理装置１０では、典型的にはユーザからＵＩ２１を通じて、スキャナ２２による画像データの生成処理や、プリンタ２４による画像データの印刷処理が指示される。この場合、ＣＰＵ１２は、プログラムに従って、ユーザからの指示の解析し、スキャナ２２を制御して生成した画像データをＲＡＭ１６へ書き込む処理や、プリンタ２４を制御してＲＡＭ１６に格納された画像データに基づく印刷を行ったりする。この過程で、再構成可能演算装置２０は、必要に応じて論理回路の再構成構成を行い、拡大・縮小、色変換、回転などの各種の画像データ処理を行う。
【００３５】
続いて、図２を用いて、再構成可能演算装置２０の構成例の概略を説明する。再構成可能演算装置２０は、リコンフィグプロセッサ３４、コンフィグメモリ３８、制御部４０、内部インタフェース４２、メモリインタフェース４４を備える。リコンフィグプロセッサ３４は、再構成可能回路としての装置であり、コンフィグメモリ３８及び内部インタフェース４２と接続されている。リコンフィグプロセッサ３４には、小回路としてのプロセッサエレメント（ＰＥ）がアレイ状に配置されている。各ＰＥは、ＡＬＵやＲＡＭなどを備えており、また、他のＰＥや内部インタフェース４２と接続されている。そして、各ＰＥは、単体で、あるいは他のＰＥと連携して、内部インタフェース４２から入力される画像データに対し演算処理を行い、その結果を内部インタフェース４２に出力する。コンフィグメモリ３８は半導体メモリを備えた記憶装置であり、リコンフィグプロセッサ３４及び内部インタフェース４２に接続されている。制御部４０は、再構成可能演算装置２０を制御する演算装置であり、内部インタフェース４２に接続されている。メモリインタフェース４４は、内部インタフェース４２に接続された装置であり、図１に示した内部バス１１を通じてＲＯＭ１４、ＲＡＭ１６、ＨＤＤ１８などとデータの送受信を行ったり、ＣＰＵ１２との間で制御信号の送受信を行ったりする。図２では、ＲＯＭ１４、ＲＡＭ１６、ＨＤＤ１８に対し、リコンフィグプロセッサ３４から出力されるデータを格納する出力データ格納部４６、リコンフィグプロセッサ３４へ入力されるデータを格納する入力データ格納部４８、コンフィグメモリ３８に入力されるコンフィグデータを格納するコンフィグデータ格納部５０が構築された様子を図示している。
【００３６】
ここで、再構成可能演算装置２０の動作について簡単に説明する。制御部４０は、プログラムに従って、リコンフィグプロセッサ３４に設定すべき論理仕様、すなわちコンフィグレーションを決定する。そして、このコンフィグレーションを設定するためのコンフィグレーションデータをコンフィグデータ格納部５０からコンフィグメモリ３８に入力する。これにより、リコンフィグプロセッサ３４の半導体スイッチの動作の切り換えなどが行われ、リコンフィグプロセッサ３４の再構成が行われる。すなわち、各ＰＥの内部論理、あるいは、ＰＥ間や内部インタフェース４２との接続論理が、対応するコンフィグレーション（ある演算機能をもつことからファンクションモジュールと言うこともできる）へと変更される。
【００３７】
次に、図３を用いて、図２に示した制御部４０について説明する。制御部４０は、スケジューラ６０と、スケジューラ６０に接続された割込み検知部７０、スケジューラテーブル７２、及びレイアウトロード部７４が接続されている。スケジューラ６０は、リコンフィグプロセッサ３４に設定するコンフィギュレーションの再構成を制御する装置である。スケジューラ６０には、プライオリティ・ステータス判断部６２、レイアウト判断部６４、プロセスセット部６６、レイアウト選択部６８が含まれている。なお、ここでは、実行する一連の演算（これをタスクと呼ぶことがある）が複数の小演算単位であるプロセス（例えばタスクがパイプライン処理されるものである場合における個々の処理などをプロセスと呼ぶ場合がある）からなる場合を例に挙げて、各構成について説明する。
【００３８】
プライオリティ・ステータス判断部６２は、割込み検知部７０から割り込みをかけられた場合に、スケジューラテーブル７２を参照して、リコンフィグプロセッサ３４で処理するタスクの優先順位（プライオリティ）と、そのタスクに属するプロセスの実行状態（ステータス）を調べる。レイアウト判断部６４は、プライオリティ・ステータス判断部６２の判断結果を受けて、未設定の場合には、各プロセスを実行するためのコンフィグレーションのフロアプランレイアウト、すなわち、リコンフィグプロセッサのどの部分でどの演算を行うかを判断し、スケジューラテーブル７２に登録する。このフロアプランレイアウトは、部分論理仕様としてのデータであり、例えば、コンフィグデータ格納部５０に格納された各演算用のコンフィグデータ（これも部分論理仕様を表すデータであるとみなせる）に基づいて判断される。また、プロセスセット部６６は、タスクの優先順位の高い順に、そのタスクにおける実行対象プロセスを処理対象のプロセスとして仮設定する。そして、レイアウト選択部６８は、仮設定したプロセスのフロアプランレイアウトにおける重複の有無を判断して、実際に設定すべきフロアプランレイアウトを選択する。選択結果は、レイアウトロード部７４に指示され、レイアウトロード部では、コンフィグデータ格納部５０に格納されたコンフィグデータを読み込んでコンフィグメモリ３８に入力させるロード命令信号をＣＰＵ１２に送信する。
【００３９】
割込み検知部７０は、ＣＰＵ１２が新しい演算の処理命令を発した場合や、リコンフィグプロセッサ３４で処理中の演算が終了した場合などに、プライオリティ・ステータス判断部６２に割り込み信号を入力する。また、スケジューラテーブル７２は、ＣＰＵ１２から処理命令を受けた演算について、そのプライオリティ、ステータス、演算に用いられるフロアプランレイアウトなどをまとめたテーブルである。
【００４０】
図４は、コンフィグデータ格納部５０に格納された各演算用のコンフィグデータの例を示す図である。図４には、タスクＡと名付けられた演算についてのコンフィグデータ８０，８２，８４と、タスクＢと名付けられた別の演算についてのコンフィグデータ８６，８８，９０と、タスクＣと名付けられた別の演算についてのコンフィグデータ９２が示されている。ここでは、タスクＡ，Ｂは、順次直列に処理される（言い換えればパイプライン処理可能な）３段階のプロセス（第１〜第３プロセス）からなることを想定している。また、タスクＣは４段階のプロセス（第１〜第４プロセス）からなることを想定しているが、第２〜第４プロセスについては図示を省略している。
【００４１】
コンフィグデータ８０では、４分割されたエリア（これは再構成可能回路に設定される小区画の例である）のうち左上のエリア１に配置されたＰＥに第１プロセス用の論理回路であるタスクＡ１が設定され、コンフィグデータ８２では右上のエリア２に第２プロセス用の論理回路であるタスクＡ２が設定され、コンフィグデータ８４では左下のエリア３に第３プロセス用の論理回路であるタスクＡ３が設定されている。そして、コンフィグデータ８６では左側のエリア１，３に第１プロセス用の論理回路であるタスクＢ１が設定され、コンフィグデータ８８では右側のエリア２，４に第２プロセス用の論理回路であるタスクＢ２が設定され、コンフィグデータ９０では下側のエリア３，４に第３プロセス用の論理回路であるタスクＢ３が設定されている。また、コンフィグデータ９２では、左下を除くエリア１，２，４に第１プロセス用の論理回路であるタスクＣ１が設定されている。これらのコンフィグデータ８０〜９２において論理回路が設定されていない領域は、ＰＥの使用が予定されていない領域である。制御部４０では、論理回路が重複しないように複数のコンフィグデータを組み合わせて（フロアプランレイアウトを決定して）、最終的なコンフィグデータを設定する。
【００４２】
図５は、スケジューラテーブル７２の例を示す図である。ここでは、図４を用いて説明したタスクＡ，Ｂ，Ｃについての演算処理過程におけるスケジューラテーブル７２を示している。テーブルの最上段１０２には、現在処理中のタスクに関する情報が記録されている。具体的には、現在、タスクＡの第２プロセスと、タスクＢの第１プロセスとがリコンフィグプロセッサ３４で並列処理されていること、また、タスクＡの第２プロセスはエリア３に論理回路が設定され、タスクＢの第１プロセスはエリア２，４に論理回路が設定されていることが示されている。
【００４３】
段１０４以下は、各タスクに関する情報が記録されている。具体的には、段１０４において、「タスク名称」、優先順位を示す「プライオリティ」、処理中または処理終了済みのプロセスを示す「ステータス」、タスクに属す「プロセス数」、「第１プロセス使用フロアプランレイアウト」、「第２プロセス使用フロアプランレイアウト」、「第３プロセス使用フロアプランレイアウト」、「第４プロセス使用フロアプランレイアウト」の項目が設けられている。そして、段１０６，１０８，１１０には、それぞれタスクＡ，Ｂ，Ｃに関して、段１０４の各項目に対応する値が設定されている。例えば、タスクＡでは、優先順位が１（最も高い）であること、処理中又は処理済みのプロセスは第２プロセスであること、全プロセス数は３であること、各プロセスに対する処理が図４に示したコンフィグデータ８０，８２，８４に対応する使用フロアプランレイアウトで行われることが示されている。同様にして、タスクＢでは、優先順位が２（２番目に高い）であること、処理中または処理済みのプロセスは第１プロセスであること、全プロセス数は３であること、各プロセスに対する処理が図４に示したコンフィグデータ８６，８８，９０に対応する使用フロアプランレイアウトで行われることが示されている。また、タスクＣについては、優先順位が３（３番目に高い）であること、処理中又は処理済みのプロセスは第０プロセス（つまり、まだ処理が行われていない）であること、全プロセス数は４であること、図４に示したコンフィグデータ９２に対応する使用フロアプランレイアウト等を使用することが示されている。
【００４４】
続いて、再構成可能演算装置２０の動作について、図６，図７のフローチャートを用いて説明する。図６は、再構成可能演算装置２０における全体的な処理の流れを示すフローチャートであり、図７は、スケジューラ６０における処理の流れを示すフローチャートである。
【００４５】
図６に示すように、再構成可能演算装置２０では、ＣＰＵ１２から画像データに関するタスクの処理要求を受けた場合（Ｓ１０）、制御部４０のスケジューラ６０がタスクの内容やその処理順序等に関する判断を行う（Ｓ１２）。そして、スケジューラ６０が決定したフロアプランレイアウトに従って、コンフィグデータが、コンフィグメモリ３８に入力され、リコンフィグプロセッサ３４に対応するコンフィグレーションが再構成される（Ｓ１４）。リコンフィグプロセッサ３４では、このコンフィグレーションに基づいてタスクを実行する（Ｓ１６）。割込み検知部７０は、タスクの処理を検知した場合に、スケジューラ６０にタスク終了信号を発して割り込みをかける（Ｓ１８）。そして、スケジューラ６０は、並列処理中の別のタスクがある場合には入力データの入力を停止するとともに（Ｓ２０）、スケジューラテーブル７２を更新して終了内容を判定し（Ｓ２２）、次に実行するタスクがある場合には、ステップＳ１２以降の処理を繰り返す。
【００４６】
続いて、図７を用いて、図６のステップＳ１２，Ｓ２２におけるスケジューラ６０の処理の流れを詳しく説明する。スケジューラ６０では、タスクの実行要求があった場合（Ｓ１０）やタスクの終了信号が入力された場合（Ｓ１８）に、スケジューラテーブル７２におけるステータスの更新を行う（Ｓ３０）。続いて、処理未了のタスクのうち、最もプライオリティが高いタスクのステータスをチェックし（Ｓ３２）、これから処理すべきプロセスのフロアプランレイアウトを、処理対象のフロアプランレイアウトとしてセットする（Ｓ３４）。そして、処理未了の全てのタスクのステータスをチェックしたか否かが判定される（Ｓ３５）。未チェックのタスクがある場合には、次にプライオリティが高いタスクのステータスをチェックし（Ｓ３６）、そのステータスが示すプロセスのフロアプランレイアウトを参照して（Ｓ３８）、セット済みのフロアプランレイアウトとの論理積を取る。論理積が０になる場合には、そのフロアプランレイアウトを処理対象のフロアプランレイアウトとしてセットしたのち、ステップＳ３４以下の処理を繰り返す。他方、論理積が０にならない場合、すなわち、それ以前にセットしたフロアプランレイアウトとの重複が生じる場合には、このタスクについてのフロアプランレイアウトのセットは行わず、ステップＳ３４以下の処理を繰り返す。そして、ステップＳ３４において、全タスクのステータスのチェックが終了した場合には、レイアウトロード部７４を通じて、セットされているフロアプランレイアウトに対応するコンフィグデータを、プライオリティ順に、コンフィグデータ格納部５０から順次コンフィグメモリ３８にロードさせる（Ｓ４４，Ｓ４６，Ｓ４８）。
【００４７】
図８は、タスクの処理態様の具体例を示す図である。図においては、図４に示したコンフィグデータ、及び図５に示したスケジューラテーブル７２の下で、タスクＡ，Ｂ，Ｃが処理される様子を時間順に示している。開始前においては、状態１２０に示すように、タスクＡ，Ｂ，Ｃのステータスは０であり、いずれの処理も行われていない。処理が始まると、まず最初は、状態１２２に示すように、プライオリティが１であるタスクＡの第１プロセスと、プライオリティが２であり、かつ、フロアプランレイアウトの組み合わせ可能なタスクＢの第１プロセスとが並列処理される。そして、タスクＡの第１プロセスの処理が先に終了してスケジューラ６０は、タスクＢの第１プロセスの処理を中断してコンフィグレーションの再構成１２４を行う。その結果、状態１２６に示すように、プライオリティが１であるタスクＡの第２プロセスと、プライオリティが２であり、かつ、フロアプランレイアウトの組み合わせ可能なタスクＢの第１プロセスとの並列処理が行われる。その後、タスクＢの第１プロセスの処理が終了すると、再構成１２８が行われ、状態１３０に示すように、プライオリティが１であるタスクＡの第２プロセスと、プライオリティが２であり、かつ、フロアプランレイアウトの組み合わせ可能なタスクＢの第２プロセスとが並列処理される。同様にして、タスクＡの第２プロセスの処理が終了した時点で再構成１３２が行われ、状態１３４に示すように、タスクＡの第３プロセスとタスクＢの第２プロセスとの並列処理が行われ、タスクＢの第２プロセスの処理が終了した時点で再構成１３６が行われ、状態１３８に示すように、タスクＡの第３プロセスとタスクＢの第３プロセスとの並列処理が行われる。状態１３８においてタスクＢの第３プロセスの処理が終了した際には、プライオリティが１であるタスクＡの第３プロセスに対し、次にプライオリティが高いタスクＣの第１プロセスを組み合わせることはできず、再構成が行われないままタスクＡの第３プロセスの処理が継続されている。やがて、タスクＡの第３プロセスの処理が終了すると、再構成１４０が行われ、状態１４２に示すように、その時点でプライオリティが最も高いタスクＣの第１プロセスの処理が単独で実行される。これは、タスクＣの第１プロセスと組み合わせ可能な他のタスクが存在しないためである。そして、タスクＣの第１プロセスが終了した時点で、タスクＣの第２プロセスを処理する再構成１４４が行われる。
【００４８】
以上に説明した例では、同じタスクに属する複数のプロセスは、同時に実行しないものとして、スケジューリングを行った。そして、先行するプロセスによる処理により得られた中間データを適宜メモリに保存し、後続するプロセスで使用することを想定した。しかし、プライオリティが次に高いタスクの処理よりも、プライオリティが（その時点で）最も高いタスクの複数のプロセスに対する並列処理を優先するようにしてもよい。この場合には、先行するプロセスが生成した中間データを後続するプロセスが直接使用することになる。そして、このような複数のプロセスのパイプライン処理が不可能な場合に、別のタスクのプロセスとの組み合わせを行うようにしてもよい。なお、タスクが複数のプロセスに分かれていない場合であっても、タスクに属するプロセスに対しさらに下位のプロセスが属する場合であっても、同様の態様で処理できることは言うまでもない。
【００４９】
さらに、以上の説明では、タスクＡ，Ｂ，Ｃの処理命令のみを受けた場合の例について示したが、これらの処理中に、プライオリティが同じ又は異なる別のタスクの処理命令を受けた場合には、スケジューラテーブル７２を必要に応じて更新し、動的なスケジューリングをしてもよい。また、割り込みがかけられる前に、予め、スケジューラテーブル７２に基づいて、次のフロアプランレイアウトを決定しておくことにより、再構成に必要なオーバーヘッドを短縮するようにしてもよい。また、以上の説明では、リコンフィグプロセッサ３４のエリアを４分割して、フロアプランレイアウトを検討する例を示したが、さらに細かくエリアを設定して、リソースを効率的に使用するようにしてもよい。
【００５０】
［第２の実施の形態］
次に、図９乃至図１１を用いて、第２の実施の形態について説明する。第２の実施の形態は、第１の実施の形態を変形したものであり、図１乃至図３に示したハードウエア構成は基本的に第１の実施の形態と同様である。しかし、第２の実施の形態では、準備するコンフィグデータの数とその組み合わせ方が第１の実施の形態とは異なっている。
【００５１】
図９は、図４に対応する図であり、本実施形態において、コンフィグデータ格納部５０に格納されたコンフィグデータを示している。ここでは、タスクＡの第１プロセス用のコンフィグデータであるタスクＡ第１プロセスレイアウト群１５０として、４個のコンフィグデータ１５２，１５４，１５６，１５８が設けられている。具体的には、コンフィグデータ１５２は４分割された左上１のエリアに論理回路が設定され、コンフィグデータ１５４は右上のエリア２に論理回路が設定され、コンフィグデータ１５６は左下のエリア３に論理回路が設定され、コンフィグデータ１５８は右下のエリア４に論理回路が設定されている。また、タスクＢの第１プロセス用のコンフィグデータであるタスクＢ第１プロセスレイアウト群１６０には６個のコンフィグデータ１６２，１６４，１６６，１６８，１７０，１７２が設けられており、これらにはそれぞれ、上側のエリア１，２、左側のエリア１，３、右側のエリア２，４、下側のエリア３，４、右上及び左下のエリア２，３、左上及び右下のエリア１，４に論理回路が設定されている。このように、本実施の形態では、各タスクの各プロセスについて、論理回路の設定位置が異なる複数のコンフィグデータが用意されている。特に、図９に示した例では、各タスクの各プロセスについて、全てのエリアの組み合わせに対応したコンフィグデータが用意されている。
【００５２】
図１０は、図５に対応する図であり、本実施の形態におけるスケジューラテーブル１７８を示している。この例では、最上段１８０に、全エリアをいくつに分割してフロアプランレイアウトを設定したかを示す「フロアプランレイアウト分割エリア数」が「４」であること、セット中のコンフィグデータによって使われている「使用エリア数」が「２」であることが記録されている。そして、具体的には、タスクＡの第２プロセスと、タスクＢの第１プロセスが設定されており、タスクＡの第２プロセスはエリア１に論理回路をもち、タスクＢの第１プロセスはエリア２，４に論理回路をもつことが記録されている。
【００５３】
段１８２以下には各タスクに関する情報が記録されており、段１８２では「タスク名称」「プライオリティ」「ステータス」「プロセス数」「第１プロセスフロアプランレイアウト使用エリア数」「第２プロセスフロアプランレイアウト使用エリア数」「第３プロセスフロアプランレイアウト使用エリア数」の項目が設けられている。使用エリア数とは、４分割されたエリアのうち何個のエリアを使用して論理回路が設定されたかを表すものである。そして、段１８４，１８６，１８８には、それぞれタスクＡ，Ｂ，Ｃに関して、段１０４の各項目に対応する値が設定されている。
【００５４】
図１１は、図７に対応するフローチャートであり、スケジューラ６０における処理の流れを示している。スケジューラ６０では、タスクの実行要求があった場合やタスクの終了信号が入力された場合などに、スケジューラテーブル１７８におけるステータスの更新を行う（Ｓ５０）。続いて、処理未了のタスクのうち、最もプライオリティが高いタスクのステータスをチェックし（Ｓ５２）、これから処理すべきプロセスを処理対象のプロセスとしてセットし（Ｓ５４）、そのプロセスの使用エリア数を記録する。そして、処理未了の全てのタスクのステータスをチェックしたか否かが判定さる（Ｓ５６）。未チェックのタスクがある場合には、次にプライオリティが高いタスクのステータスをチェックし（Ｓ５８）、実行対象のプロセスの使用エリア数を参照して、合計の使用エリア数を求める（Ｓ６０）。続いて、合計の使用エリア数の合計がフロアプランレイアウト分割エリア数を超えるかを検証し（Ｓ６２）、超えない場合にはそのプロセスを処理対象のプロセスとしてセットし（Ｓ６４）、超える場合には合計のエリア数から加算したエリア数を減算する（Ｓ６６）。
【００５５】
他方、ステップＳ５６で全てのタスクのステータスをチェックした場合には、１番目にセットされたプロセスのフロアプランレイアウトを選択する。このプロセス用のフロアプランレイアウトが複数ある場合には、いずれか一つが選択される。そして、次にプロセスがセットされているかを確認し（Ｓ７０）、セットされている場合には、そのプロセスのフロアプランレイアウトを選択して（Ｓ７２）、それ以前に選択したフロアプランレイアウトとの論理積をとる（Ｓ７４）。その結果、論理積が０にならない場合、つまりフロアプランレイアウトに重複が生じる場合には、同じプロセス用の別のフロアプランレイアウトを選択して（Ｓ７２）、同様の処理を繰り返す。他方、論理積が０になった場合には、ステップＳ７０以降を繰り返す。ステップＳ７０において、次にセットされたプロセスがない場合には、選択された各フロアプランレイアウトに対応するコンフィグデータを、コンフィグデータ格納部５０から順次コンフィグメモリ３８にロードさせる（Ｓ７６）。
【００５６】
なお、以上の説明においては、各タスクの各プロセスに対して全てのエリアの組み合わせに対応したコンフィグデータが存在することを前提とした。しかし、一部のエリアの組み合わせに対応したコンフィグデータしか存在しない場合には、重複しないフロアプランレイアウトを見つけられないこともある。そこで、このような場合には、例えば、第１の実施の形態と組み合わせたフロアプランレイアウト設定などを行えばよい。
【００５７】
［第３の実施の形態］
続いて、図１２乃至図１４を用いて、第３の実施の形態について説明する。第３の実施の形態は、第２の実施の形態を変形したものであり、基本的なハードウエア構成や処理態様は第２の実施の形態と同様である。しかし、第３の実施の形態では、第２の実施の形態（そして第１の実施の形態）におけるリコンフィグプロセッサ３４とは、物理的構造が異なるリコンフィグプロセッサ３４を用いることを想定している。
【００５８】
図１２は、本実施の形態にかかるリコンフィグプロセッサ２００の構造を模式的に説明する図である。リコンフィグプロセッサ２００では、リコンフィグプロセッサ３４と同様に、複数のＰＥが配置されている。しかし、左上のエリア１には、スキャナからのデータを大量かつ拘束に入力できるダイレクトインプットポート２０２が設けられている。そして、このダイレクトインプットポート２０２の性能を十分に引き出せるＰＥは、エリア１のＰＥに限られているため、エリア１にはスキャンにより生成された画像データを処理するスキャン処理Ａというタスクを配置することが望ましい。また、エリア４には、ＪＰＥＧ（ＪｏｉｎｔＰｈｏｔｏｇｒａｐｈｉｃＥｘｐｅｒｔＧｒｏｕｐ）の画像データを高速に処理可能なハードウエア構造をもつＪＰＥＧアクセラレータ２０４が埋め込まれている。そして、このＪＰＥＧアクセラレータ２０４の性能を十分に引き出せるＰＥは、エリア４のＰＥに限られているため、エリア４にはＪＰＥＧ処理Ｂというタスクを配置することが望ましい。
【００５９】
図１３は、図１０に対応する図であり、本実施の形態におけるスケジューラテーブル２１０を表している。スケジューラテーブル２１０の最上段２１２には、図１０の場合と同様に、「フロアプランレイアウト分割エリア数」が「４」であること、及び「使用エリア数」が「２」であることが記録されている。また、最上段２１２には、現在、タスクＡの第２プロセスと、タスクＢの第１プロセスが設定されており、タスクＡの第２プロセスはエリア３に論理回路をもち、タスクＢの第１プロセスはエリア１，２に論理回路をもつことが記録されている。
【００６０】
段２１４以下には各タスクに関する情報が記録されており、基本的な項目は、図１０と同様である。ただし、スケジューラテーブル２１０では、段２１４に、タスクに含まれる特殊な処理について記載する「処理プロパティ」の項目が設けられている。そして、段２１６のタスクＡでは「処理プロパティ」が「なし」に設定され、段２１８のタスクＢでは「処理プロパティ」が「スキャン（エリア１）」に設定され、段２２０のタスクＣでは「処理プロパティ」が「ＪＰＥＧ（エリア４）」に設定されている。
【００６１】
続いて、図１４を用いて、リコンフィグプロセッサ２００及びスケジューラテーブル２１０を用いた場合のスケジューラ６０の動作について説明する。スケジューラ６０では、タスクの実行要求があった場合やタスクの終了信号が入力された場合などに、スケジューラテーブル２１０におけるステータスの更新を行う（Ｓ８０）。続いて、処理未了のタスクのうち、最もプライオリティが高いタスクの処理プロパティを参照し（Ｓ８２）、特殊な処理が含まれるか否かを確認する（Ｓ８４）。その結果、特殊な処理が含まれており、リコンフィグプロセッサ２００の特定のエリアを使用する場合には、そのエリアで処理を行うフロアプランレイアウトを選択する（Ｓ８６）。他方、特殊な処理が含まれていない場合には、特殊なエリアを使用するタスクの処理位置と重複しないようにフロアプランレイアウトを選択する（Ｓ８６）。以上の処理を、エリアに空き領域が無くなるまで、あるいは、全てのタスクに対して繰り返す（Ｓ９０）。すなわち、この実施の形態においては、特定のエリアに対して特殊な処理が配置されるように、特定のエリアをロック（鍵をかける）している。
【図面の簡単な説明】
【００６２】
【図１】本実施の形態にかかる画像処理装置の概略的な構成例を示す図である。
【図２】再構成可能演算装置の概略的な構成例を示す図である。
【図３】制御部の概略的な構成例を示す図である。
【図４】コンフィグデータの例を示す図である。
【図５】スケジューラテーブルの例を示す図である。
【図６】再構成可能演算装置における処理の流れを説明するフローチャートである。
【図７】制御部における処理の流れを説明するフローチャートである。
【図８】再構成の例を説明する図である。
【図９】コンフィグデータの別の例を示す図である。
【図１０】スケジューラテーブルの別の例を示す図である。
【図１１】制御部における処理の流れの変形例を説明するフローチャートである。
【図１２】リコンフィグプロセッサの構成の変形例を示す図である。
【図１３】スケジューラテーブルの別の例を示す図である。
【図１４】制御部に置ける処理の流れの変形例を説明するフローチャートである。
【符号の説明】
【００６３】
１０  画像処理装置、１１  内部バス、１２  ＣＰＵ、１４  ＲＯＭ、１６  ＲＡＭ、１８  ＨＤＤ、２０  再構成可能演算装置、２２  スキャナ、２４  プリンタ、２６  ＣＤＤ、２８  ネットワークインタフェース、３０  ネットワーク、３４  リコンフィグプロセッサ、３８  コンフィグメモリ、４０  制御部、４２  内部インタフェース、４４  メモリインタフェース、４６  出力データ格納部、４８  入力データ格納部、５０  コンフィグデータ格納部、６０  スケジューラ、６２  プライオリティ・ステータス判断部、６４  レイアウト判断部、６６  プロセスセット部、６８  レイアウト選択部、７０  割込み検知部、７２  スケジューラテーブル、７４  レイアウトロード部。
【図１】
0005023856.tif 000002
【図２】
0005023856.tif 000003
【図３】
0005023856.tif 000004
【図４】
0005023856.tif 000005
【図５】
0005023856.tif 000006
【図６】
0005023856.tif 000007
【図７】
0005023856.tif 000008
【図８】
0005023856.tif 000009
【図９】
0005023856.tif 000010
【図１０】
0005023856.tif 000011
【図１１】
0005023856.tif 000012
【図１２】
0005023856.tif 000013
【図１３】
0005023856.tif 000014
【図１４】
0005023856.tif 000015