(57)【要約】【課題】再構成可能回路に構成されていない回路機能を使用するジョブを実行する際の処理に要する時間を短縮する。【解決手段】回路構成を部分的に再構成可能な再構成可能回路（１４０）を有する画像処理装置において、受け付けた順番に従ってジョブをキューに登録し、再構成可能回路の部分的に再構成可能な領域の何れかでの処理が終了した際に、処理が終了した再構成可能な領域を次のジョブを処理する領域として選択し、当該領域に構成されている回路の機能を使用するジョブがキューにある場合には、そのジョブを選択して処理させる。【選択図】図２
2016189177.tif 000002
【特許請求の範囲】
【請求項１】
回路構成を領域ごとに動的再構成可能な再構成可能回路を用いた画像処理手段と、
投入されたジョブをキューに登録するジョブ記憶手段と、
前記再構成可能回路の動的再構成可能な領域のうち、停止している領域を判定する判定手段と、
次に実行するジョブとして、前記判定された領域を用いる画像処理を含むジョブを前記キューに登録されたジョブから選択する選択手段と、
前記選択されたジョブを前記キューから取り出し、当該ジョブに含まれる画像処理に応じて必要があれば前記判定された領域の再構成を行い、該領域に構成された回路により前記選択されたジョブの画像処理を実行させる実行制御手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記選択手段は、前記判定された領域に構成されている回路を用いる画像処理を含むジョブが前記キューに登録されている場合には当該ジョブを選択し、前記実行制御手段は、前記判定された領域を再構成せずに前記選択されたジョブを実行させることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記選択手段は、前記判定された領域に構成されている回路を用いる画像処理を含む複数のジョブが前記キューに登録されている場合には、前記複数のジョブのうち、最も前記キューの先頭に近いジョブを選択することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記選択手段は、前記判定された領域に構成されている回路を用いる画像処理を含むジョブが前記キューに登録されていない場合には、前記キューの先頭のジョブを選択し、前記実行制御手段は、前記判定された領域に前記選択されたジョブの画像処理のための回路を再構成して前記選択されたジョブを実行させることを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記選択手段は、前記キューに登録されたジョブを、停止した前記再構成可能回路の動的再構成可能な前記領域のそれぞれを用いて実行した際に、最も完了が遅くなるジョブと前記領域との組を推定し、停止したと判定された前記領域に応じて、最も完了が遅くなると推定した前記組とはならないようジョブを選択することを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記選択手段は、前記領域ごとに最も完了が遅くなるジョブを推定し、推定したジョブが全ての前記領域において同じであれば、当該ジョブと、該ジョブの完了が最も遅くなる前記領域との組を、前記最も完了が遅くなるジョブと領域との組であると推定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記選択手段は、前記領域ごとに最も完了が遅くなるジョブを推定し、推定したジョブが全ての前記領域において同じでなければ、最も完了が遅くなるジョブと、該ジョブの完了が最も遅くなる前記領域との組を、前記最も完了が遅くなるジョブと領域との組と推定することを特徴とする請求項５又は６に記載の画像処理装置。
【請求項８】
前記実行制御手段は、前記判定手段により停止したと次に判定された前記領域に構成した回路を用いて、前記最も完了が遅くなるジョブを実行させることを特徴とする請求項５乃至７のいずれか一項に記載の画像処理装置。
【請求項９】
前記再構成可能回路の動的再構成可能な領域ごとに、構成する回路の種類ごとの構成に要する時間と、ジョブの処理に要する処理時間とを記憶した時間記憶手段を更に有し、
前記選択手段は、前記時間記憶手段に記憶した時間に基づいて、前記最も完了が遅くなるジョブと領域との組を推定することを特徴とする請求項５乃至８のいずれか一項に記載の画像処理装置。
【請求項１０】
回路構成を領域ごとに動的再構成可能な再構成可能回路を用いた画像処理手段を有する画像処理装置の制御方法であって、
投入されたジョブをキューに登録するジョブ記憶工程と、
前記再構成可能回路の動的再構成可能な領域のうち、停止している領域を判定する判定工程と、
次に実行するジョブとして、前記判定された領域を用いる画像処理を含むジョブを前記キューに登録されたジョブから選択する選択工程と、
前記選択されたジョブを前記キューから取り出し、当該ジョブに含まれる画像処理に応じて必要があれば前記判定された領域の再構成を行い、該領域に構成された回路により前記選択されたジョブの画像処理を実行させる実行制御工程と
を有することを特徴とする画像処理装置の制御方法。
【請求項１１】
回路構成を領域ごとに動的再構成可能な再構成可能回路を用いた画像処理手段を有するコンピュータにより、
投入されたジョブをキューに登録するジョブ記憶工程と、
前記再構成可能回路の動的再構成可能な領域のうち、停止している領域を判定する判定工程と、
次に実行するジョブとして、前記判定された領域を用いる画像処理を含むジョブを前記キューに登録されたジョブから選択する選択工程と、
前記選択されたジョブを前記キューから取り出し、当該ジョブに含まれる画像処理に応じて必要があれば前記判定された領域の再構成を行い、該領域に構成された回路により前記選択されたジョブの画像処理を実行させる実行制御工程と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば画像データ等を扱う画像処理装置、その制御方法、プログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）などの再構成可能回路が良く知られている。最近では、動作中に再構成可能回路のチップ全体ではなく特定の領域だけを別の回路へ書き換えることが可能な、いわゆる動的部分再構成可能なＦＰＧＡが普及し、ＭＦＰ等の画像処理装置などに搭載されるようになってきた。このような動的部分再構成可能回路を適用することで、一つの領域に複数の回路を切り換えて実装することが可能であるため、少ないハードウェアリソースで多様な機能を実現することができる。
【０００３】
一方、再構成可能回路を書き換える場合、ＲＯＭ等の不揮発性メモリに格納された回路構成情報を読み出し、ＦＰＧＡやＰＬＤの回路構成メモリへ書き込む処理が必要な為、書き換えの処理時間分、回路処理の開始が遅くなる問題がある。この問題を解決する方法として、例えば一つのジョブの処理対象である画像データを文字や写真などの領域種別毎に分割し、同じ領域種別の画像データを連続して処理することで、回路の書き換え処理回数を低減する手法が開示されている（例えば、特許文献１参照）。
【０００４】
これと同様の手法を多機能複写機（ＭＦＰ）のジョブ処理に適用し、例えば同じ回路を使用するジョブを連続して処理することで、回路の書き換え処理回数の低減を期待できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４２８５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
動的部分再構成可能回路をＭＦＰのジョブ処理に適用する場合は、全ての部分再構成可能領域（以下、ＰＲ領域）が使用中の場合には、いずれかのＰＲ領域が再構成可能な状態となるまで受け付けたジョブをキュー等に保持し待たせる必要がある。キューに保持し待たせているジョブは、ＰＲ領域の何れかで実行されていたジョブ処理が終了した場合には、キューの順番に従って、解放されたＰＲ領域を使用する候補のジョブとして選択される。
【０００７】
しかしながら、解放されたＰＲ領域に構成されている回路（回路Ａとする）を使用するジョブ（ジョブαとする）がキューに登録されている場合であっても、その回路Ａが、キューの先頭のジョブのためのコンフィギュレーションにより別の回路へ上書きされてしまう場合がある。よって上書き前の回路Ａを使用するジョブ（すなわちジョブα）を実行する際には、それが必要とする回路（すなわち回路Ａ）を構成するために再度のコンフィギュレーションが必要となってしまう。コンフィギュレーションが行われる分、結果として、キューに登録されている全てのジョブの終了が遅くなってしまう課題がある。
【０００８】
本発明は、このような問題に鑑みてなされたものであり、回路の動的部分再構成が可能な画像処理装置において、ジョブ処理に要する時間を全体として短縮することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明は以下の構成を有する。すなわち、本発明の一側面は、
回路構成を領域ごとに動的再構成可能な再構成可能回路を用いた画像処理手段と、
投入されたジョブをキューに登録するジョブ記憶手段と、
前記再構成可能回路の動的再構成可能な領域のうち、停止している領域を判定する判定手段と、
次に実行するジョブとして、前記判定された領域を用いる画像処理を含むジョブを前記キューに登録されたジョブから選択する選択手段と、
前記選択されたジョブを前記キューから取り出し、当該ジョブに含まれる画像処理に応じて必要があれば前記判定された領域の再構成を行い、該領域に構成された回路により前記選択されたジョブの画像処理を実行させる実行制御手段とを有することを特徴とする画像処理装置にある。
【発明の効果】
【００１０】
本発明によれば、再構成可能回路を再構成する回数を減らしてジョブ処理に要する時間を全体として短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る画像処理装置の構成の一例を示すブロック図である。
【図２】本発明の実施形態１に係る画像処理装置における、動的部分再構成に関わる構成を示すブロック図である。
【図３】本発明の実施形態に係る画像処理装置における、再構成部に構成される回路情報の格納方法の一例を示す図である。
【図４】本発明の実施形態に係る画像処理装置における、部分再構成される回路機能の例を示す図である。
【図５】本発明の実施形態１に係る画像処理装置における、新規ジョブが投入されてからジョブ処理が開始されるまでの制御を示すフローチャートである。
【図６】本発明の実施形態１に係る画像処理装置における、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートである。
【図７】本発明の実施形態１に係る、部分再構成部２０１〜２０４でのジョブ処理が停止時のＰＲ管理テーブル２２０の一例である。
【図８】本発明の実施形態１に係る画像処理装置における、ジョブ実行処理制御を示すフローチャートである。
【図９】従来の画像処理装置における、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートである。
【図１０】従来の画像処理装置と、本発明の画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートである。
【図１１】キューに登録されているジョブの処理時間が長い場合における、従来の画像処理装置と、本発明の実施例１の画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートである。
【図１２Ａ】、
【図１２Ｂ】本発明の実施形態２に係る画像処理装置における、ジョブ実行処理制御を示すフローチャートである。
【図１３】本発明の実施形態２に係る画像処理装置における、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートである。
【図１４】本発明の実施形態２に係る画像処理装置のＦＰＧＡ１４０について、最も遅いジョブを特定して、特定した遅いジョブが早く終了できるＰＲ領域を算出し、選択する手順を示すフローチャートである。
【図１５】本発明の実施形態２に係る画像処理装置における、機能毎コンフィグ処理時間テーブル１５００の一例である。
【図１６】本発明の実施形態２に係る画像処理装置における、機能毎データ処理時間テーブル１６００の一例である。
【図１７】本発明の実施形態２に係る画像処理装置における、各処理候補のジョブについての各ＰＲ領域毎の終了時刻の算出結果、それぞれのタイミング関係を表す模式図である。
【図１８】本発明の実施形態２に係る画像処理装置にける、ＰＲ領域毎に最も終了時刻の遅いジョブを特定する方法を説明する模式図である。
【図１９】従来の画像処理装置と、本発明の実施形態２における画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。
＜実施形態１＞
[画像処理装置の構成]
図１は、本発明の実施形態に関わる画像処理装置の装置構成を説明するブロック図である。本実施形態の画像処理装置１００は、画像処理装置１００を使用するユーザが各種の操作を行うための操作部１０３と、操作部１０３からの指示に従い画像情報を読み取るスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御する図示しないＣＰＵや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。プリンタ部１０７は、プリンタ部１０７の制御を行う図示しないＣＰＵや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。操作部１０３は、操作部インターフェイス（Ｉ／Ｆ）１１３を介してシステムバス１２０に接続される。
【００１３】
また、画像処理装置１００は、画像処理装置１００の動作を統括的に制御するＣＰＵ１０１を備え、画像処理装置の各ユニットを制御するための制御ソフトウェアを実行する。また、画像処理装置１００は、ＣＰＵ１０１が実行するプログラムが格納されているＲＯＭ１０４を有する。また、画像処理装置１００は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあるＲＡＭ１１１を有する。ＲＡＭ１１１と、ＲＡＭ１１１への書き込み、読み出し動作を制御するメモリコントローラ１１０を有する。メモリコントローラ１１０は、システムバス１２０および画像バス１２１に接続され、ＲＡＭ１１１へのアクセスを制御する。
【００１４】
画像処理装置１００は、画像処理回路として、回路構成が不変なデバイスのＡＳＩＣ１１８と、あとで再構成可能なデバイスであるＦＰＧＡ１４０を有する。ＡＳＩＣ１１８は回路構成を変えられないが、量産コストを抑えられる為、ＭＦＰにとって必須で不変の機能であるスキャナ用の画像処理回路やプリント用の画像処理回路などにより構成されている。
【００１５】
一方、ＦＰＧＡ１４０は、部分的に動的再構成可能な再構成可能回路であり、種類は豊富であるが処理によって毎回使用される回路が異なる編集機能用の画像処理回路を動的に切り替えて構成している。本実施形態では再構成可能デバイスとしてＦＰＧＡを例に説明しているが、ＦＰＧＡ以外の再構成可能デバイスが接続される構成であってもよい。画像処理装置１００は、ＣＰＵ１０１の制御のもとにＦＰＧＡ１４０の回路構成（コンフィギュレーション）を制御するコンフィグコントローラ１３０を有する。
【００１６】
また、画像処理装置１００はＦＰＧＡ１４０に構成する為の論理回路構成情報（コンフィグデータ）が格納されているコンフィギュレーション用ＲＯＭ１５０を有する。ＦＰＧＡ１４０は、動的書き換え可能かつ部分書き換え可能なものである。すなわち、ＦＰＧＡ１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。回路構成を定めるコンフィギュレーションデータ（コンフィグデータ）は、たとえばハードディスク（ＨＤＤ）１１７に、回路構成ごと（あるいは必要であれば更に再構成部ごと）のファイルのとして予め格納され、ＨＤＤＩ／Ｆ１１６を介してコンフィグレーション用ＲＯＭ１５０に書き込まれる。
【００１７】
また、画像処理装置１００は、スキャナ部１０９から画像データが入力されるスキャナＩ／Ｆ１０８と、プリンタへ画像データを出力するプリンタＩ／Ｆ１０６とを有する。ＦＰＧＡ１４０及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。また、画像処理装置１００は、ネットワークＩ／Ｆ１０２を介し、ネットワーク上の図示しない汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、ＵＳＢＩ／Ｆ１１４を介し、画像処理装置１００と接続された図示しない汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、ＦＡＸ  Ｉ／Ｆ１１５を介し、公衆回線網と接続し、図示しない他の画像処理装置やファクシミリ装置と通信（送受信）を行う。画像処理装置１００は、ＣＰＵ１０１が実行するプログラム、ＲＯＭ１０４への書き込み、読み出し動作を制御するＲＯＭ Ｉ／Ｆ１１２を有する。また、画像処理装置１００は、ＮＦＣＩ／Ｆ１２２を介し、ＮＦＣリーダ部１２３よりユーザ情報を受信し、認証処理を行う。また、画像処理装置１００は、カメラＩ／Ｆ１２４を介し、画像処理装置に設置されたカメラ１２５により、リモート監視やカメラ認証などで利用するユーザの顔や、プリント出力等の画像を撮影する。
【００１８】
また、画像処理装置１００は、ＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部１０３、ＲＯＭ Ｉ／Ｆ１１２、ＡＳＩＣ１１８、コンフィグコントローラ１３０、ＦＰＧＡ１４０を相互に接続するシステムバス１２０を有する。ＣＰＵ１０１は、ＦＰＧＡ１４０と、ＡＳＩＣ１１８、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６、ＮＦＣＩ／Ｆ１２２、カメラＩ／Ｆ１２４のパラメータ設定を、システムバス１２０を介して行う。
【００１９】
[部分再構成関する構成]
次に、図２を用いて、本実施例にかかる画像処理装置における部分再構成に関する構成について説明する。図２は画像処理装置１００の部分再構成に特に関わる構成を示したブロック図である。ＣＰＵ１０１、コンフィグコントローラ１３０、コンフィギュレーション用ＲＯＭ１５０、ＦＰＧＡ１４０、メモリコントローラ１１０、ＲＯＭ Ｉ／Ｆ１１２については図１を用いて前述した通りである。
【００２０】
ＦＰＧＡ１４０はその内部に、第１の部分再構成部（ＰＲ１）２０１、第２の部分再構成部（ＰＲ２）２０２、第３の部分再構成部（ＰＲ３）２０３、第４の部分再構成部（ＰＲ４）２０４をさらに持つ。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。動的に再構成可能であるとは、動作していない部分再構成部については、他の再構成部が動作中であっても再構成可能であることを意味する。本実施形態においては、画像処理機能に関する回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の機能に関する回路を部分再構成部に構成可能である。
【００２１】
ＲＡＭ１１１は後述するＰＲ管理テーブル２２０、ジョブ記憶部５００のための領域を持つ。ＰＲ管理テーブル２２０は４つの部分再構成部（ＰＲ１~ＰＲ４）がそれぞれ何の機能回路を構成しているかを示す機能ＩＤ、またそれらが現在使用されているかどうかを示すフラグから構成される。
【００２２】
ジョブ記憶部５００は、操作部１０３での操作や、ネットワークＩ／Ｆ１０２を介して外部の図示しないＰＣからの操作により生成し、受け付けたジョブが記憶される。ジョブ記憶部５００へは、受け付けたジョブがＣＰＵ１０１により受け付けた順番に従ってキューイングされる。ジョブ記憶部５００へ記憶されているジョブは、ＦＰＧＡ１４０を使用して処理されるまで保持される。
【００２３】
またＲＯＭ１０４は後述する機能毎コンフィグ処理時間テーブル１５００と、機能毎データ処理時間テーブル１６００とを保持する。ＲＯＭ１０４は、部分再構成部に構成され得る回路機能と、各回路機能について各部分再構成部２０１〜２０４毎のコンフィグ処理時間と、データ処理時間とを記憶している。コンフィグ処理時間、データ処理時間は画像処理装置が一般的なジョブを実行するにあたって消費される時間を予め想定しておきＲＯＭ１０４に用意しておくものである。ＲＯＭ１０４に記憶されるこれらのデータは、ＨＤＤ１１７に格納しておいてもよい。
【００２４】
次に、図３を用いて本実施形態に係る画像処理装置におけるＦＰＧＡ１４０の部分再構成部２０１〜２０４に構成されるコンフィギュレーションデータの格納方法について説明する。図３はコンフィギュレーション用ＲＯＭ１５０に格納されるＦＰＧＡ１４０の各部分再構成部２０１〜２０４に構成するコンフィギュレーションデータの例である。
【００２５】
コンフィギュレーション用ＲＯＭ１５０には部分再構成に必要な複数個のコンフィギュレーションデータが格納される。ＰＲ１用のコンフィギュレーションデータ３００は部分再構成部（ＰＲ１）２０１に構成することが可能なコンフィギュレーションデータを表している。図３においては、部分再構成部（ＰＲ１）２０１に構成可能な機能がＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つである場合を例にしている。データ３０１はＰＲ１に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様にコンフィギュレーションデータ３０２はＰＲ１に機能Ｂの回路構成を、コンフィギュレーションデータ３０３はＰＲ１に機能Ｃの回路構成、コンフィギュレーションデータ３０４はＰＲ１に機能Ｄの回路構成を構成するためのコンフィギュレーションデータを表している。コンフィギュレーションデータ３０５，３０６は、ＰＲ１にそれぞれ機能Ｄ，Ｅの回路を構成するためのコンフィギュレーションデータである。本例では、コンフィギュレーションデータ３００は、コンフィギュレーションデータ３０１〜３０６のいずれかであり、ＰＲ１には、コンフィギュレーションデータに応じた回路が構成される。
【００２６】
また、ＰＲ２用のコンフィギュレーションデータ３１０は部分再構成部(ＰＲ２)２０２に構成することが可能なコンフィギュレーションデータを表している。ＰＲ２用のコンフィギュレーションデータ３１０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つの機能のコンフィギュレーションデータ３２１~３２６を格納しており、部分再構成部(ＰＲ２)２０２には６つの機能を切り替えて構成することが可能である。本例では、コンフィギュレーションデータ３１０は、コンフィギュレーションデータ３１１〜３１６のいずれかであり、ＰＲ２には、コンフィギュレーションデータに応じた回路が構成される。
【００２７】
また、ＰＲ３用のコンフィギュレーションデータ３２０は部分再構成部(ＰＲ３)２０３に構成することが可能なコンフィギュレーションデータを表している。ＰＲ３用のコンフィギュレーションデータ３２０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つの機能のコンフィギュレーションデータ３２１~３２６を格納しており、部分再構成部(ＰＲ３)２０３には６つの機能を切り替えて構成することが可能である。本例では、コンフィギュレーションデータ３２０は、コンフィギュレーションデータ３２１〜３２６のいずれかであり、ＰＲ３には、コンフィギュレーションデータに応じた回路が構成される。
【００２８】
また、ＰＲ４用のコンフィギュレーションデータ３３０は部分再構成部(ＰＲ４)２０４に構成することが可能なコンフィギュレーションデータを表している。ＰＲ４用のコンフィギュレーションデータ３３０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つの機能のコンフィギュレーションデータを格納しており、部分再構成部(ＰＲ４)２０４には６つの機能を切り替えて構成することが可能である。本例では、コンフィギュレーションデータ３３０は、コンフィギュレーションデータ３３１〜３３６のいずれかであり、ＰＲ４には、コンフィギュレーションデータに応じた回路が構成される。
【００２９】
上述したように、部分再構成部ごとに、そこに構成する回路に応じたコンフィギュレーションデータを用意する必要がある。例えば、機能Ａの回路構成を部分再構成部（ＰＲ１）２０１と部分再構成部(ＰＲ２)２０２に構成する場合を例にとる。ＰＲ１のためにはコンフィギュレーションデータ３０１を、ＰＲ２のためにはコンフィギュレーションデータ３１１をロードする、というように同じ機能を実現する場合においても、部分再構成部によって異なるコンフィギュレーションデータを用意しておく必要がある。
【００３０】
本実施形態では、ＦＰＧＡ１４０は４つの部分再構成部を持ち、部分再構成部に構成する機能がＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つのいずれかである場合を例に説明する。各機能の内容の具体例は図４に示す。ここで部分再構成部の数を４、機能数を６としているが、説明をわかりやすくするためだけであり、それらの数に限定されるわけではない。
【００３１】
[ＦＰＧＡ１４０へ構成されるデータ処理回路]
本実施形態の画像処理装置１００において、ＦＰＧＡ１４０へはデータ処理回路を構成する場合を例にとり説明する。図４にＦＰＧＡ１４０へ構成するデータ処理回路の機能の一例を示す。図４に示すように、画像処理装置１００は、データ処理回路の有する機能のうち、機能Ａ〜Ｆの６つの機能をＦＰＧＡ１４０により実現している。
【００３２】
機能Ａはプレビュー処理機能４０１であり、プリンタ部１０６で印刷処理する前等に、操作部103の画面上に処理前の画像データを表示する機能である。プレビュー処理機能は、操作部１０３の表示画面の解像度に合わせて、画像データを解像度変換や間引き処理を行う。
【００３３】
機能Ｂは合成処理機能４０２であり、入力される２つのページ画像について、特定の合成モードに従って合成処理を行い、合成画像を出力する機能である。合成モードは複数のモードを有し、それぞれの入力画像の画素値について所定の係数で乗算した後に加算するモードや、２つの入力画像のうち各座標の画素毎に最大値もしくは最小値を選択して出力するモード等を有する。
【００３４】
機能Ｃは色変換処理機能４０３であり、入力されるページ画像について、色空間フォーマットを変換し、色空間変換画像を出力する機能である。例えばスキャナで読み取られる際に表現されるＲＧＢ色空間を、用紙上にプリントする際に表現されるＣＭＹＫ色空間への変換や、ＪＰＥＧ圧縮方式等の際に扱われるＹＵＶ色空間への変換を行う。
【００３５】
機能ＤはＪＰＥＧ伸張処理機能４０４であり、ＪＰＥＧ符号化方式で圧縮された画像データを伸張し、復号化処理を行う。
【００３６】
機能ＥはＮＦＣ通信処理機能４０５であり、ＮＦＣ（Near Field Communication）と呼ばれる近距離無線通信方式によりデータ通信処理を行う機能である。
【００３７】
機能Ｆはカメラ画像処理機能４０６であり、カメラ１６０より入力された画像データに対して、撮像素子センサの補正処理や、レンズの歪補正といったカメラ用の画像処理を行う機能である。
【００３８】
上述した機能Ａ、機能Ｂ、機能Ｃ、機能Ｄ、機能Ｆのデータ処理は、ＲＡＭ１１１へ格納されているラスタ画像をメモリコントローラ１１０により読み出し、画像バス１２１を介してＦＰＧＡ１４０へ入力された画像データに対して行われる。そして画像処理後の画像データは、画像バス１２１を介してＦＰＧＡ１４０より出力され、メモリコントローラ１１０によりＲＡＭ１１１へ再び格納される。なおＦＰＧＡ１４０により実現する機能はこれら６つの機能に限られておらず、部分再構成部に収まる回路規模の機能であれば、他の機能をＦＰＧＡ１４０で実現してもよい。
【００３９】
[ジョブ処理前フロー]
図５は本実施形態に係る画像処理装置のＦＰＧＡ１４０について、新規ジョブが投入されてからジョブ処理が開始されるまでの制御手順を示すフローチャートである。すなわちジョブの実行制御手段の手順を示す。なお、図５のフローチャートの各手順はＣＰＵ１０１により実行される。
【００４０】
本フローチャートを説明する為に、部分再構成部２０１〜２０４が全て使用中の際に、４つのジョブが新規に投入される場合を例にとり説明する。図６に、画像処理装置１００において、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４（ＰＲ１〜ＰＲ４）で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートを示す。なお或るタイミングＴｎにおけるキューの状態（Ｔｎの右側に示された状態）は、タイミングＴｎにおいて、最も優先度が高いジョブをデキューした後の状態を示している。
【００４１】
まずＳ５０１では、画像処理装置１００に新規のジョブが投入されているか否かを確認（或いは判定）する。Ｓ５０２の判断分岐において、新規ジョブが投入されている場合には、Ｓ５０３へ進む。そうでない場合にはＳ５０４へ進む。図６の例では、タイミングＴ０〜Ｔ３の時点で、それぞれジョブ１として機能Ｅを使用するジョブ、ジョブ２として機能Ｆを使用するジョブ、ジョブ３として機能Ａを使用するジョブ、ジョブ４として機能Ｄを使用するジョブを受け付ける例を示している。つまりＳ５０２の判断分岐において、新規ジョブが投入されるＴ０〜Ｔ３ではＹＥＳとなり、Ｓ５０３へ進む。それ以外のタイミングでは、Ｓ５０２の判断分岐においてＮＯとなり、Ｓ５０４へ進む。
【００４２】
Ｓ５０３では投入されたジョブをキューに登録する。キューの構造上、最も早く登録された側を先頭、その反対側を末尾と呼ぶとすれば、キューの末尾に新たなジョブを追加する。Ｓ５０４では、ＲＡＭ１１１内に保存されたＰＲ管理テーブルより部分再構成部２０１〜２０４についてのステータスを順次読み出し、ステータスが「停止中」の部分再構成部が有るか否かを判断する。
【００４３】
Ｓ５０５の判断分岐において、ステータスが停止中の部分再構成部２０１〜２０４が有る場合はＳ５０６へ進む。そうでない場合にはＳ５０１へ戻る。Ｓ５０６では、キューに登録されているジョブのうち、最も優先度の高いジョブを取り出し、そのジョブ処理を開始する。もっとも簡易な優先度はキュー内のジョブの順序である。その他の要因を優先度の判断に際して考慮することもできる。例えば図６の例では、次に実行するジョブの決定にあたり、ジョブにより実行される機能のための回路がＦＰＧＡ１４０に構成済であること、かつ、当該回路が空いており使用可能であることがジョブの登録順序よりも優先して判断される。なおこの時のジョブの決定の手順については図８を参照して下記の「ジョブ処理フロー」の節で説明する。
【００４４】
図７にＦＰＧＡ１４０についてのタイミングＴ４の時点でのＰＲ管理テーブル２２０の一例を示す。ＰＲ管理テーブル２２０は部分再構成部２０１~２０４（ＰＲ１〜ＰＲ４）のそれぞれについて、何の機能を持つ回路が構成されているかを示す機能ＩＤと各部分再構成部が使用中であるかどうかを示すステータスとを持つ。これらの機能ＩＤおよびステータスは後述のステップで逐次書き換えられる。図７に示すように、ＰＲ１には機能ＩＤとして機能Ａ（プレビュー処理）、ＰＲ２には機能ＩＤとして機能Ｂ（合成処理）、ＰＲ３には機能ＩＤとして機能Ｃ（色変換処理）、ＰＲ４には機能ＩＤとして機能Ｄ（ＪＰＥＧ伸張処理）が設定される。そしてＰＲ１のステータスに「停止中」、ＰＲ２〜４の各ステータスに、「使用中」が設定される。
【００４５】
すなわち図６のタイミングＴ４の時点では、ステップＳ５０４により、部分再構成部２０１〜２０４についてのステータスとして、部分再構成部（ＰＲ１）２０１は「停止中」、それ以外は「使用中」を読み出す。つまり、ステータスが停止中の部分再構成部２０１が有る為、Ｓ５０５の判断分岐においてＹＥＳとなりＳ５０６へ進む。
【００４６】
全ての部分再構成部２０１〜２０４のステータスが「使用中」であり、「停止中」の部分再構成部２０１〜２０４が無い場合には、Ｓ５０５の判断分岐においてＮＯとなり、Ｓ５０１へ戻る。すなわちＦＰＧＡ１４０の部分再構成部ＰＲ１〜ＰＲ４の何れかが使用可能なるまで、ジョブはキューで待機させられ、いずれかが使用可能になればその部分再構成部を用いていずれかのジョブがキューから取り出されて実行される。
【００４７】
なお図５ではキューへの登録（キューイング）と取り出し（デキューイング）とを一つの処理をループ実行することで実現しているが、キューとでキューとは非同期に行われるものであることから、互いに独立して実行されるプロセスにより実現することもできる。その場合には、たとえばキューイングのプロセスは新規ジョブが投入される都度、それをキューに登録する。またＦＰＧＡ１４０のいずれかの部分再構成部に空きがあれば、デキューイングのプロセスをトリガする。一方デキューイングのプロセスは、たとえばＦＰＧＡ１４０のいずれかの部分再構成部の利用の終了またはキューイングプロセスからのトリガにより開始され、キュー中で最も優先度が高いジョブをデキューして実行させる。そのとき利用可能な部分再構成部に、当該ジョブに必要な機能が構成されていないなら、そのための回路を再構成してからデキューする。
【００４８】
[ジョブ処理フロー]
次に、部分再構成領域（ＰＲ領域）の何れかでの処理が終了した際に、空いたＰＲ領域を使用するジョブを、キューに登録されているジョブの中から選択するフローについて説明する。図８は、キュー中で最も優先度が高いジョブの選択方法であり、ジョブのスケジューリング方法ともいえる。
【００４９】
図８は本実施形態に係る画像処理装置のＦＰＧＡ１４０について、処理の終了したＰＲ領域を使用するジョブをキューに登録されているジョブより選択する手順を示すフローチャートである。この手順は、例えば図５のＳ５０６において、実行を開始するジョブを決定するためにＣＰＵ１０１により実行される。
【００５０】
＜ＦＰＧＡの再構成を伴わないジョブの選択と実行＞
まずＳ８０１では、キューに登録されている全てのジョブに必要な回路機能を取得する。図６のタイミングＴ４の時点では、キューには、ジョブ１〜４の４つのジョブが登録されている。ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、ジョブ１からジョブ４までの機能ＩＤとしてそれぞれ機能Ｅ、機能Ｆ、機能Ａ、機能Ｄを取得する。
【００５１】
Ｓ８０２において、停止したＰＲ領域に構成されている機能ＩＤを取得する。図６のタイミングＴ４の時点で、停止しているＰＲ領域はＰＲ１である。ここでＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ１に構成されている回路の機能ＩＤとして機能Ａを読み出す。なお、部分再構成領域に構成されている回路で実現される機能のことを、ＰＲ領域に構成された機能、と呼ぶ場合もある。
【００５２】
Ｓ８０３では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ４の時点で、キューの先頭に格納されているジョブはジョブ１であるため、ＰＲ１を使用して処理するジョブの候補（候補ジョブ）としてジョブ１が選択される。
【００５３】
Ｓ８０４では、候補ジョブに必要な回路機能が、停止したＰＲ領域に構成されているか否かを判定する。Ｓ８０５の分岐において、候補ジョブに必要な回路が停止したＰＲ領域に構成されている場合にはＳ８１１へ進む。そうでない場合にはＳ８０６へ進む。タイミングＴ４の時点において、停止したＰＲ領域であるＰＲ１に構成されている機能ＩＤは、Ｓ８０２のステップにより取得した機能ＩＤから、機能Ａであることがわかる。又、ＰＲ１を使用して処理する候補ジョブとしてジョブ１が選択されている。ジョブ１の実行のために必要とする回路機能は機能Ｅであり、ＰＲ１に構成されている機能Ａとは異なるため、Ｓ８０６へ進む。
【００５４】
Ｓ８０６では、停止しているＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを判定する。また該当するジョブがあれば当該ジョブを特定する。Ｓ８０７の分岐において、停止しているＰＲ領域に構成されている回路を使用するジョブがキューに登録されている場合にはＳ８１０へ進む。そうでない場合にはＳ８０８へ進む。タイミングＴ４の時点において、キューに登録されているジョブは、ジョブ１〜４であり、それぞれが使用する回路機能は、機能Ｅ、機能Ｆ、機能Ａ、機能Ｄである。従って、Ｔ４の時点でＰＲ１に構成されている機能Ａを使用するジョブ３がキューに登録されているので、Ｓ８１０へ進む。
【００５５】
Ｓ８１０では、キューに登録されているジョブの中から、停止しているＰＲ領域に構成されている回路を使用するジョブを、停止しているＰＲ領域を使用して処理するジョブとして改めて選択する。該当するジョブが複数ある場合には、キューの先頭に近いジョブすなわち登録順序が早いジョブを次に実行するジョブとして決定する。タイミングＴ４の時点において、ＰＲ１に構成されている機能Ａを使用するジョブの中で、キューの最も先頭に近い位置に格納されているジョブはジョブ３である。従って、ＰＲ１を使用するジョブとしてジョブ３が選択される。
【００５６】
Ｓ８１１では、停止しているＰＲ領域の回路機能を使用して選択したジョブをキューから外してその処理を実行する。タイミングＴ４の時点において、選択されたジョブ３に必要な機能ＡはＰＲ１に既に構成されている。よって、ジョブ３を実行する際には、回路機能のコンフィギュレーション処理は必要ないので、直ちにジョブ３のデータ処理を行うことができる。図６には、ジョブキューの内容としてタイミングＴ４でジョブ３がデキューされ、ＰＲ１によりジョブ３すなわちデータ処理Ａが実行されている状態を示している。
【００５７】
一方、ステップＳ８０７において、停止しているＰＲ領域に構成されている回路を使用するジョブがキューに登録されていない場合にはＳ８０８へ進む。Ｓ８０８では、停止しているＰＲ領域に、停止しているＰＲ領域すなわち図５のステップＳ５０５で判断されたＰＲ領域を再構成対象として選択し、ステップＳ８０９で、選択されたＰＲ領域に必要な回路機能を再構成する。図６のタイミングＴ５ではこの処理が実行される。
【００５８】
＜ＦＰＧＡの再構成を伴うジョブの選択と実行＞
次に、２番目にＰＲ領域が停止するタイミングが到来するタイミングＴ５の時点について説明する。図６のタイミングＴ５の時点では、キューには、ジョブ１、ジョブ２、ジョブ４の３つのジョブが登録されている。そして図５の手順により、停止しているＰＲ領域としてＰＲ２があると判定され、ステップＳ５０６が実行され、その中で図８の処理が実行される。
【００５９】
Ｓ８０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、ジョブ３はデキューされているので、残りのジョブそれぞれの機能ＩＤとして機能Ｅ、機能Ｆ、機能Ｄを取得する。Ｓ８０２において、停止したＰＲ領域に構成されている機能ＩＤを取得する。図６のタイミングＴ５の時点で、停止したＰＲ領域はＰＲ２である。ここでＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ２についての機能ＩＤとして機能Ｅを読み出す。
【００６０】
Ｓ８０３では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ５の時点で、キューの先頭に格納されているジョブはジョブ１であるため、ＰＲ１を使用して処理するジョブ候補としてジョブ１が選択される。
【００６１】
Ｓ８０４では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。タイミングＴ５の時点において、停止したＰＲ領域であるＰＲ２に構成されている機能ＩＤは機能Ｂであり、又、ＰＲ２を使用して処理するジョブ候補としてジョブ１が選択されている。ジョブ１の回路機能は機能Ｅであり、ＰＲ１に構成されている機能Ａとは異なるため、Ｓ８０６へ進む。
【００６２】
Ｓ８０６では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを判定する。タイミングＴ５の時点において、キューに登録されているジョブは、ジョブ１、ジョブ２、ジョブ４であり、それぞれが使用する回路機能は、機能Ｅ、機能Ｆ、機能Ｄである。従って、ＰＲ２に構成されている機能Ｂを使用するジョブはキューに登録されていないので、Ｓ８０８へ進む。
【００６３】
Ｓ８０８では、停止したＰＲ領域を再構成対象として選択する。タイミングＴ５の時点においては、停止したＰＲ領域であるＰＲ２が、再構成対象として選択される。
【００６４】
Ｓ８０９では、再構成対象として選択されたＰＲ領域に必要な回路機能を構成する。タイミングＴ５の時点においては、ジョブ候補として選択されているジョブ１の機能Ｅを、必要な回路機能としてＰＲ２へ構成するよう制御する。ＣＰＵ１０１は、コンフィギュレーション用ＲＯＭ１５０のＰＲ２用コンフィギュレーションデータ３１０より機能ＥのＰＲ２用コンフィギュレーションデータ３１５を読み出し、部分再構成部（ＰＲ２）２０２のコンフィギュレーションメモリへ書き込む。なおステップＳ８０９の実行の時点で、再構成するＰＲ領域を用いて実行するジョブは決定されているので、そのジョブは実行が予約されたものとしてキューから外すものとして図６のキューの状態には示している。ジョブの実行の予約の時点でキューから外されたジョブが、実行時にデキューする必要は無いことは当然である。これは、再構成を開始してから完了するまでの間に図８の手順が実行されると、既に実行が予約されたジョブまでがスケジュールし直されることを防止するためである。
【００６５】
Ｓ８１１では、停止しているＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ５の時点において、ＰＲ２に構成された機能Ｅを使用してジョブ１のデータ処理を実行する。図６には、タイミングＴ５でＰＲ２に機能Ｅの回路の構成が開始され、ジョブ１がデキューされ、再構成が完了したタイミングＴ６においてＰＲ２によりジョブ１すなわちデータ処理Ｅが実行されている状態を示している。
【００６６】
＜ＦＰＧＡの再構成を伴わないジョブの選択と実行＞
次に、３番目にＰＲ領域が停止するタイミングが到来するタイミングＴ６の時点について説明する。図６のタイミングＴ６の時点では、キューには、ジョブ２、ジョブ４の２つのジョブが登録されている。
【００６７】
Ｓ８０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、ジョブ２，ジョブ４それぞれの機能Ｆ、機能Ｄを取得する。Ｓ８０２において、停止したＰＲ領域に構成されている機能ＩＤを取得する。図６のタイミングＴ６の時点で、停止したＰＲ領域はＰＲ４である。ここでＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ４についての機能ＩＤとして機能Ｄを読み出す。
【００６８】
Ｓ８０３では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ６の時点で、キューの先頭に格納されているジョブはジョブ２であるため、ＰＲ１を使用して処理するジョブ候補としてジョブ２が選択される。
【００６９】
Ｓ８０４では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。タイミングＴ６の時点において、停止したＰＲ領域であるＰＲ４に構成されている機能ＩＤは機能Ｄであり、又、ＰＲ４を使用して処理するジョブ候補としてジョブ２が選択されている。ジョブ２が使用する回路機能は機能Ｆであり、ＰＲ４に構成されている機能Ａとは異なるため、Ｓ８０６へ進む。
【００７０】
Ｓ８０６では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを判定する。タイミングＴ６の時点において、キューに登録されているジョブは、ジョブ２、ジョブ４であり、使用する回路機能はそれぞれ機能Ｆ、機能Ｄである。従って、ＰＲ４に構成されている機能Ｄを使用するジョブ４がキューに登録されているので、Ｓ８１０へ進む。
【００７１】
Ｓ８１０では、キューに登録されているジョブの中で、停止したＰＲ領域に構成されている回路を使用するジョブを次に実行するジョブとして選択する。該当するジョブが複数ある場合にはキューの先頭に近いジョブを選択する。タイミングＴ６の時点において、ＰＲ４に構成されている機能Ｄを使用するジョブの中で、キューの最も先頭近くに格納されているジョブはジョブ４である。従って、ＰＲ４を使用するジョブとしてジョブ４が選択される。
【００７２】
Ｓ８１１では、ジョブ４をデキューし、停止したＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ６の時点において、選択されたジョブ４に必要な機能ＤはＰＲ４に既に構成されている。よって、ジョブ４を実行する際には、回路機能のコンフィギュレーション処理は必要ないので、直ちにＰＲ４の回路を用いてジョブ４のデータ処理が行われる。
【００７３】
＜ＦＰＧＡの再構成を伴うジョブの選択と実行＞
最後に、４番目にＰＲ領域が停止するタイミングが到来するタイミングＴ７の時点について説明する。図６のタイミングＴ７の時点では、キューには、ジョブ２のみが登録されている。
【００７４】
Ｓ８０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、機能Ｆを取得する。
【００７５】
Ｓ８０２において、停止したＰＲ領域に構成されている機能ＩＤを取得する。図６のタイミングＴ７の時点で、停止したＰＲ領域はＰＲ３である。ここでＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ３についての機能ＩＤとして機能Ｃを読み出す。
【００７６】
Ｓ８０３では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ７の時点で、キューの先頭に格納されているジョブはジョブ２であるため、ＰＲ１を使用して処理するジョブ候補としてジョブ２が選択される。
【００７７】
Ｓ８０４では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。タイミングＴ７の時点において、停止したＰＲ領域であるＰＲ３に構成されている機能ＩＤは機能Ｃであり、又、ＰＲ３を使用して処理するジョブ候補としてジョブ２が選択されている。ジョブ２の回路機能は機能Ｆであり、ＰＲ３に構成されている機能Ｃとは異なるため、Ｓ８０６へ進む。
【００７８】
Ｓ８０６では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを判定する。タイミングＴ７の時点において、キューに登録されているジョブはジョブ２であり、それが使用する回路機能は、機能Ｆである。従って、ＰＲ３に構成されている機能Ｃを使用するジョブはキューに登録されていないので、Ｓ８０８へ進む。
【００７９】
Ｓ８０８では、停止したＰＲ領域を再構成対象として選択する。タイミングＴ７の時点においては、停止したＰＲ領域であるＰＲ３が、再構成対象として選択される。
【００８０】
Ｓ８０９では、再構成対象として選択されたＰＲ領域に必要な回路機能を構成する。タイミングＴ７の時点においては、ジョブ候補として選択されているジョブ３の機能ＦをＰＲ３へ構成するよう制御する。ＣＰＵ１０１はコンフィギュレーション用ＲＯＭ１５０のＰＲ３用コンフィギュレーションデータ３２０より機能ＦのＰＲ３用コンフィギュレーションデータ３２６を読み出し、部分再構成部（ＰＲ３）２０３のコンフィギュレーションメモリへ書き込む。また、この時点で次に実行するジョブはジョブ２に決定されたのでジョブ２をデキューする。
【００８１】
Ｓ８１１では、停止したＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ７の時点において、ＰＲ３に構成された機能Ｆを使用してジョブ２のデータ処理を実行する。以上でジョブ処理が終了する。
【００８２】
以上説明したように本実施形態の画像処理装置では、ＦＰＧＡ１４０のＰＲ領域の何れかが利用されていない際に、その利用されていないＰＲ領域に構成されている回路機能を使用するジョブを、最も優先度が高いジョブとして決定する。そして該当するジョブをキューより取り出し、処理が終了したＰＲ領域で処理するジョブとして選択する。該当するジョブが複数ある場合、または、該当するジョブがない場合には、キューの先頭への近さを要因として優先度を判定する。本例では、より前のジョブの優先度がより高いものと判定する。そして最も優先度が高いジョブを、空いたＰＲ領域を利用したジョブとして、次に実行する。その際に、空いたＰＲ領域に選択されたジョブが利用する機能の回路が構成されていないなら、実行に先立って回路の再構成を行う。
【００８３】
なお図６に、キューイングされたジョブ１〜４が実行される前後のＦＰＧＡ１４０の状態を示した。タイミングＴ５までは、機能Ａ，Ｂ，Ｃ，Ｄの回路がＰＲ領域２０１〜２０４にそれぞれ構成されている。タイミングＴ８以降では、機能Ａ，Ｅ，Ｆ，Ｄの回路がＰＲ領域２０１〜２０４にそれぞれ構成されている。
【００８４】
＜ジョブのスケジューリングの従来例＞
図９に上記の制御を行わない従来の画像処理装置での、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートを示す。この装置では、ジョブはキューに登録された順に実行される。換言すれば優先度の判定基準はキューされた順序のみである。
【００８５】
図９に示すように、従来の画像処理装置では、タイミングＴ４の時点でＰＲ１の機能Ａを使用するジョブ３がキューに登録されていても、キューの先頭ジョブであるジョブ１で使用する機能Ｅが、ＰＲ１に構成される。その結果、ＦＰＧＡ１４０には機能Ａが構成されているＰＲ領域が無くなるので、後のジョブ３が実行されるタイミングＴ６の時点で、機能Ａを構成する必要がある。従って、キューに登録されているジョブを実施する都度、ジョブが使用するＰＲ領域の再構成が必要となるので、キューに登録されている全てのジョブが終了するのが遅くなる。
【００８６】
図１０に従来の画像処理装置と、本実施形態の画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートを示す。図１０に示すように、実施形態１の画像処理装置で最後のジョブ処理が終了するＰＲ３の終了タイミングが、従来の画像処理装置で最後のジョブ処理が終了するＰＲ３の終了タイミングより時間ΔＴだけ早くできるという効果を奏する。
【００８７】
先行文献１に記載されている画像処理装置の場合では、部分的に再構成可能なタイプではない、全体の構成回路のみを変更可能なＦＰＧＡを使用し、単一の再構成可能領域に構成される回路情報を参照することで、構成回数の減を図っていた。これに対し、本実施形態に係る画像処理装置は、複数のジョブをＦＰＧＡ内の複数の部分構成可能領域毎に割り当てて並行して処理する。その際に、キューに登録されている処理待ちのジョブをなるべく早く終了させるために、各部分構成可能領域毎に構成される回路情報を参照することで、キューに登録されているジョブを処理する際の構成回数を低減し、早期のジョブ処理終了を実現している。特に再構成が不要なジョブについては、その処理を迅速に完了させることができる。また、それによって複数のジョブ全体についても処理時間の短縮の実現が期待できる。
【００８８】
＜実施形態２＞
実施形態１では、キューに登録されているジョブをＦＰＧＡ１０４で実施する際に、ＰＲ領域に構成されている回路機能を使用するジョブをキューより取り出し、処理が終了したＰＲ領域で処理するジョブとして選択する形態について説明した。しかしながら、キューに登録されているジョブの処理時間の長さや、ＰＲ領域が停止するタイミングによっては、かえってキューに登録されている全てのジョブが終了するタイミングが遅くなる場合が考えられる。
【００８９】
図１１にキューに登録されているジョブの処理時間が長い場合における、従来の画像処理装置と、実施形態１の画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートを示す。図１１では、キューに登録されているジョブ１（機能Ｅ）とジョブ２（機能Ｆ）のジョブ処理時間（構成処理時間とデータ処理時間の合計）が、実施形態１で示した図１０に比べて長い場合を示している。つまり、ＦＰＧＡ１４０に既に構成されている回路機能を使用するジョブ３（機能Ａ）、ジョブ４（機能Ｄ）の処理時間より、回路の再構成が必要なジョブ１（機能Ｅ）、ジョブ２（機能Ｆ）の処理時間の方が長い場合についての例を表している。さらに換言すれば、優先度の低いジョブの方が、優先度の高いジョブよりも処理時間が長い場合の、処理タイミングの一例を図１１は示している。
【００９０】
図１１に示すように、使用する回路機能がＦＰＧＡ１４０に構成されているジョブより前のキューの位置に登録されているジョブの処理時間が長いと、処理時間の長いジョブが後回しになることにより、全てのジョブが終了するタイミングが遅くなる。すなわち、優先度が低いジョブは、キュー内での待ち時間が長く、また再構成に時間を要するため実行が開始されるタイミングが遅くなり、さらに処理時間が長くなれば、これらの時間の総計がジョブ全体の処理のクリチカルパスとなり得る。
【００９１】
上記ケースを想定し、実施形態２では、ジョブキューに登録されているジョブの中で、ＦＰＧＡ１４０での処理が最も遅くなるジョブを特定し、特定したジョブが早く終了できるＰＲ領域を算出し、使用するＰＲ領域として選択するよう制御する。以下、フローチャートを用いて説明する。
【００９２】
図１２Ａ，図１２Ｂは、本発明の実施形態２に係る画像処理装置のＦＰＧＡ１４０について、キューに登録されたジョブを処理する手順を示すフローチャートである。図１３に、実施形態２の画像処理装置１００において、キューに登録されるジョブの状態、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理、部分再構成部２０１〜２０４に構成される機能の関係を表すタイミングチャートを示す。
【００９３】
実施形態２に係る画像処理装置のＦＰＧＡ１４０について、新規ジョブが投入されてからジョブ処理が開始されるまでの制御手順は、実施形態１の画像処理装置と同様である為、説明を割愛する。以降、ＰＲ領域の何れかでの処理が終了した際に、前記ＰＲ領域を使用するジョブをキューに登録されているジョブの中から選択するフローについて説明する。
【００９４】
まずＳ１２０１では、キューに登録されている全てのジョブに必要な回路機能ＩＤを取得する。図１３のタイミングＴ４の時点では、キューには、ジョブ１〜４の４つのジョブが登録されている。ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、それぞれ機能Ｅ、機能Ｆ、機能Ａ、機能Ｄを取得する。
【００９５】
Ｓ１２０２において、全てのＰＲ領域に構成されている機能ＩＤを取得する。ＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ１〜４についての機能ＩＤとして、それぞれ機能Ａ、機能Ｂ、機能Ｃ、機能Ｄを読み出す。
【００９６】
Ｓ１２０３では、キューに登録されているジョブ数が、前回の処理時（すなわち最後にジョブを実行したタイミング）におけるキューのジョブ数よりも増加しているか否かを判断する。前回処理時にキューに登録されていたジョブの数は例えばメモリに記憶されている。メモリへのジョブ数の記憶は、たとえばステップＳ１２１０とＳ１２１７でジョブをデキューした後に行われる。Ｓ１２０３においてキューのジョブ数が増加していると判定した場合にはＳ１２０４へ進む。そうでない場合にはＳ１２０５へ進む。図１３のタイミングＴ４の時点では、最後のジョブが実行されたのは遅くともタイミングＴ０以前であり、キューに登録されているジョブ数が、４つ増加している為、Ｓ１２０４へ進む。
【００９７】
Ｓ１２０４では、キューに登録されているジョブの中で、最も遅いジョブを特定し、当該ジョブが使用するＰＲ領域の選択処理を行う。最も遅いジョブとは、最も遅く完了すると予想されるジョブである。Ｓ１２０４のステップの詳細処理内容については後述する。Ｓ１２０５では、停止しているＰＲ領域が、最も遅いジョブが使用するＰＲ領域であるか否かを判定する。Ｓ１２０６の分岐において、停止したＰＲ領域が、最も遅いジョブが使用するＰＲ領域である場合にはＳ１２０７へ進む。そうでない場合にはＳ１２１１へ進む。図１３のタイミングＴ４の時点おいては、その直前のＳ１２０４のステップにおいて、最も遅いジョブとしてジョブ２が特定され、使用するＰＲ領域としてＰＲ１が選択されている。よってタイミングＴ４の時点では、停止しているＰＲ領域はＰＲ１であり、最も遅いジョブが使用するＰＲ領域としてＰＲ１が選択されている為、Ｓ１２０７へ進む。
【００９８】
Ｓ１２０７では、最も遅いジョブに必要な回路機能が、停止したＰＲ領域に構成されているか否かを判定する。Ｓ１２０８の分岐において、最も遅いジョブに必要な回路が、停止したＰＲ領域に構成されている場合にはＳ１２１０へ進む。そうでない場合にはＳ１２０９へ進む。タイミングＴ４の時点において、停止したＰＲ領域であるＰＲ１に構成されている機能ＩＤは、Ｓ１２０２のステップにより機能Ａである。又、ＰＲ１を使用して処理するジョブとして、最も遅いジョブであると特定されたジョブ２が選択されている。ジョブ２の回路機能は機能Ｆであり、ＰＲ１に構成されている機能Ａとは異なるため、Ｓ１２０９へ進む。
【００９９】
Ｓ１２０９では、停止したＰＲ領域に、最も遅いジョブに必要な回路機能を構成する。タイミングＴ４の時点においては、最も遅いジョブとして特定されたジョブ２の機能ＦをＰＲ１へ構成するよう制御する。そのために、ＣＰＵ１０１はコンフィギュレーション用ＲＯＭ１５０のＰＲ１用コンフィギュレーションデータ３００より機能ＦのＰＲ１用コンフィギュレーションデータ３０６を読み出し、部分再構成部（ＰＲ１）２０１のコンフィギュレーションメモリへ書き込む。あわせてジョブ２がデキューされる。
【０１００】
Ｓ１２１０では、停止しているＰＲ領域を使用して最も遅いジョブの回路機能の処理を実行する。タイミングＴ４の時点において、ＰＲ１に構成された機能Ｆを使用してジョブ２のデータ処理を実行する。
【０１０１】
次に、２番目にＰＲ領域が停止するタイミングが到来するタイミングＴ５の時点について説明する。図１３のタイミングＴ５の時点では、キューには、ジョブ１、ジョブ３、ジョブ４の３つのジョブが登録されている。
【０１０２】
Ｓ１２０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、それぞれ機能Ｅ、機能Ａ、機能Ｄを取得する。Ｓ１２０２において、全てのＰＲ領域に構成されている機能ＩＤを取得する。ＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ１〜４についての機能ＩＤとして、それぞれ機能Ｆ、機能Ｂ、機能Ｃ、機能Ｄを読み出す。
【０１０３】
Ｓ１２０３の分岐では、前回のタイミングＴ４の時点よりキューに登録されているジョブ数が増加していない為、Ｓ１２０５へ進む。Ｓ１２０５では、停止したＰＲ領域が、最も遅いジョブが使用するＰＲ領域であるか否かを判定する。Ｓ１２０６の分岐において、タイミングＴ５の時点では、停止したＰＲ領域はＰＲ２であり、最も遅いジョブが使用するＰＲ領域としてＰＲ１が選択されていない為、Ｓ１２１１へ進む。
【０１０４】
Ｓ１２１１では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ５の時点で、キューの先頭に格納されているジョブはジョブ１であるため、ＰＲ１を使用して処理するジョブ候補としてジョブ１が選択される。
【０１０５】
Ｓ１２１２では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。Ｓ１２１３の分岐において、タイミングＴ５の時点では、停止したＰＲ領域であるＰＲ２に構成されている機能ＩＤは機能Ｂであり、又、ＰＲ２を使用して処理するジョブ候補としてジョブ１が選択されている。ジョブ１の回路機能は機能Ｅであり、ＰＲ２に構成されている機能Ｂとは異なるため、Ｓ１２１４へ進む。
【０１０６】
Ｓ１２１４では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを確認する。タイミングＴ５の時点において、キューに登録されているジョブは、ジョブ１、ジョブ３、ジョブ４であり、それぞれの回路機能は、機能Ｅ、機能Ａ、機能Ｄである。従って、ＰＲ２に構成されている機能Ｂを使用するジョブはキューに登録されていないので、Ｓ１２１６へ進む。
【０１０７】
Ｓ１２１６では、停止したＰＲ領域を再構成対象として選択する。タイミングＴ５の時点においては、停止したＰＲ領域であるＰＲ２が、再構成対象として選択される。Ｓ１２１７では、再構成対象として選択されたＰＲ領域に必要な回路機能を構成する。タイミングＴ５の時点においては、ジョブ候補として選択されているジョブ１の機能ＥをＰＲ２へ構成するよう制御する。ＣＰＵ１０１はコンフィギュレーション用ＲＯＭ１５０のＰＲ２用コンフィギュレーションデータ３１０より機能ＥのＰＲ２用コンフィギュレーションデータ３１５を読み出し、部分再構成部（ＰＲ２）２０２のコンフィギュレーションメモリへ書き込む。あわせて候補ジョブであったジョブ１の実行の予約がされたことから、ジョブ１をデキューする。
【０１０８】
Ｓ１２１９では、停止したＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ５の時点において、ＰＲ２に構成された機能Ｅを使用してジョブ１のデータ処理を実行する。
【０１０９】
次に、３番目にＰＲ領域が停止するタイミングが到来するタイミングＴ６の時点について説明する。図１３のタイミングＴ６の時点では、キューには、ジョブ３、ジョブ４の２つのジョブが登録されている。
【０１１０】
Ｓ１２０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、それぞれ機能Ａ、機能Ｄを取得する。Ｓ１２０２において、全てのＰＲ領域に構成されている機能ＩＤを取得する。ＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ１〜４についての機能ＩＤとして、それぞれ機能Ｆ、機能Ｅ、機能Ｃ、機能Ｄを読み出す。
【０１１１】
Ｓ１２０３の分岐では、前回のタイミングＴ５の時点よりキューに登録されているジョブ数が増加していない為、Ｓ１２０５へ進む。Ｓ１２０５では、停止したＰＲ領域が最も遅いジョブが使用するＰＲ領域であるか否かを判定する。
【０１１２】
Ｓ１２０６の分岐において、タイミングＴ６の時点では、停止したＰＲ領域はＰＲ４であり、最も遅いジョブが使用するＰＲ領域としてＰＲ１が選択されていない為、Ｓ１２１１へ進む。Ｓ１２１１では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ６の時点で、キューの先頭に格納されているジョブはジョブ３であるため、ＰＲ４を使用して処理するジョブ候補としてジョブ３が選択される。
【０１１３】
Ｓ１２１２では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。Ｓ１２１３の分岐において、タイミングＴ６の時点では、停止したＰＲ領域であるＰＲ４に構成されている機能ＩＤは機能Ｄであり、又、ＰＲ４を使用して処理するジョブ候補としてジョブ３が選択されている。ジョブ３の回路機能は機能Ａであり、ＰＲ４に構成されている機能Ｄとは異なるため、Ｓ１２１４へ進む。
【０１１４】
Ｓ１２１４では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを確認する。タイミングＴ６の時点において、キューに登録されているジョブは、ジョブ３、ジョブ４であり、それぞれの回路機能は、機能Ａ、機能Ｄである。従って、ＰＲ４に構成されている機能Ｄを使用するジョブ４がキューに登録されているので、Ｓ１２１８へ進む。
【０１１５】
Ｓ１２１８では、停止したＰＲ領域を使用して処理するジョブとして、停止したＰＲ領域に構成されている回路を使用するキューに登録されているジョブの中で、キューの最も早い位置に格納されているジョブを選択する。タイミングＴ６の時点において、ＰＲ４に構成されている機能Ｄを使用するジョブの中で、キューの最も早い位置に格納されているジョブはジョブ４である。従って、ＰＲ４を使用するジョブとしてジョブ４が選択される。
【０１１６】
Ｓ１２１９では、選択されたジョブ４をデキューし、停止したＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ６の時点において、選択されたジョブ４に必要な機能ＤはＰＲ４に既に構成されている。よって、ジョブ４を実行する際には、回路機能のコンフィギュレーション処理は必要ないので、直ちにジョブ４のデータ処理を行われる。
【０１１７】
最後に、４番目にＰＲ領域が停止するタイミングが到来するタイミングＴ７の時点について説明する。図１３のタイミングＴ７の時点では、キューには、ジョブ３のみが登録されている。
【０１１８】
Ｓ１２０１において、ＣＰＵ１０１は、キューに登録されているジョブの機能ＩＤを読み出し、機能Ａを取得する。Ｓ１２０２において、全てのＰＲ領域に構成されている機能ＩＤを取得する。ＣＰＵ１０１は、ＰＲ管理テーブル２２０よりＰＲ１〜４についての機能ＩＤとして、それぞれ機能Ｆ、機能Ｅ、機能Ｃ、機能Ｄを読み出す。Ｓ１２０３の分岐では、前回のタイミングＴ６の時点よりキューに登録されているジョブ数が増加していない為、Ｓ１２０５へ進む。
【０１１９】
Ｓ１２０５では、停止したＰＲ領域が最も遅いジョブが使用するＰＲ領域であるか否かを判定する。Ｓ１２０６の分岐において、タイミングＴ７の時点では、停止したＰＲ領域はＰＲ３であり、最も遅いジョブが使用するＰＲ領域としてＰＲ１が選択されていない為、Ｓ１２１１へ進む。Ｓ１２１１では、停止したＰＲ領域を使用して処理するジョブ候補として、キューの先頭の位置に格納されているジョブを選択する。タイミングＴ７の時点で、キューの先頭に格納されているジョブはジョブ３であるため、ＰＲ３を使用して処理するジョブ候補としてジョブ３が選択される。
【０１２０】
Ｓ１２１２では、ジョブに必要な回路機能が停止したＰＲ領域に構成されているか否かを判定する。Ｓ１２１３の分岐において、タイミングＴ７の時点では、停止したＰＲ領域であるＰＲ３に構成されている機能ＩＤは機能Ｃであり、又、ＰＲ３を使用して処理するジョブ候補としてジョブ３が選択されている。ジョブ３の回路機能は機能Ａであり、ＰＲ３に構成されている機能Ｃとは異なるため、Ｓ１２１４へ進む。
【０１２１】
Ｓ１２１４では、停止したＰＲ領域に構成されている回路を使用するジョブがキューに登録されているか否かを判定する。タイミングＴ７の時点において、キューに登録されているジョブは、ジョブ３であり、回路機能は、機能Ａである。従って、ＰＲ３に構成されている機能Ｃを使用するジョブはキューに登録されていないので、Ｓ１２１６へ進む。
【０１２２】
Ｓ１２１６では、停止したＰＲ領域を再構成対象として選択する。タイミングＴ７の時点においては、停止したＰＲ領域であるＰＲ３が、再構成対象として選択される。Ｓ１２１７では、再構成対象として選択されたＰＲ領域に必要な回路機能を構成する。タイミングＴ７の時点においては、ジョブ候補として選択されているジョブ３の機能ＡをＰＲ３へ構成するよう制御する。ＣＰＵ１０１はコンフィギュレーション用ＲＯＭ１５０のＰＲ３用コンフィギュレーションデータ３２０より機能ＡのＰＲ３用コンフィギュレーションデータ３２１を読み出し、部分再構成部（ＰＲ３）２０３のコンフィギュレーションメモリへ書き込む。あわせてジョブ３がデキューされる。
【０１２３】
Ｓ１２１９では、停止したＰＲ領域を使用して回路機能の処理を実行する。タイミングＴ７の時点において、ＰＲ３に構成された機能Ａを使用してジョブ３のデータ処理を実行する。
【０１２４】
[キューに登録されているジョブの中で最も遅いジョブの選択処理]
次にＳ１２０４の、キューに登録されているジョブの中で、最も遅くなるジョブを特定し、前記特定された最も遅いジョブが使用するＰＲ領域を選択する処理の詳細について説明する。図１４は本発明の実施形態２に係る画像処理装置のＦＰＧＡ１４０について、最も遅いジョブを特定して、特定した遅いジョブが早く終了できるＰＲ領域を算出し、選択する手順を示すフローチャートである。
【０１２５】
Ｓ１４０１では、処理候補のジョブとして、キューに登録されているジョブより、先頭からＰＲ領域数分のジョブを選択する。図１３のタイミングＴ４の時点において、キューには、ジョブ１、ジョブ２、ジョブ３、ジョブ４の４つのジョブが登録されている。ＦＧＰＡ１４０のＰＲ領域数は、ＰＲ１〜４の４個である為、処理候補のジョブとして、ジョブ１、ジョブ２、ジョブ３、ジョブ４の４個のジョブが選択される。
【０１２６】
Ｓ１４０２では、処理候補のジョブについて、全てのＰＲ領域においてジョブ処理を実行した際の終了時刻を算出する。動的部分再構成可能なＦＰＧＡは、ジョブ処理するＰＲ領域毎に費やされるコンフィグ処理時間、データ処理時間が異なる。前記終了時間の算出にあたり、本実施形態の画像処理装置１００は、ＰＲ領域毎に各機能のジョブ処理を実施した際の、回路の再構成に要するコンフィグ処理時間、およびデータ処理時間を測定しておき、テーブルとして予め保持している。図１５に機能毎コンフィグ処理時間テーブル１５００の一例、図１６に機能毎データ処理時間テーブル１６００の一例を示す。図１５及び図１６は、ＰＲ領域数がＰＲ１〜４の４領域それぞれで、構成する機能として機能Ａ〜Ｆの６機能が存在する場合の例を示している。これらのテーブルは、領域ごと、かつ、回路の種類ごとに、構成に要する時間とジョブの処理（特に当該機能に係る処理）に要する時間とを記憶する時間記憶部として機能している。
【０１２７】
Ｓ１４０２は、処理候補のジョブである、ジョブ１〜４について、それぞれＰＲ１〜４についてジョブ処理を実行した際の終了時刻を、機能毎コンフィグ処理時間テーブル１５００、機能毎データ処理時間テーブル１６００を使用し算出する。例えばジョブ１がＰＲ１で処理される場合の終了時刻について説明する。ジョブ１（機能Ｅ）のＰＲ１でのコンフィグ処理時間として、図１５の機能毎コンフィグ処理時間テーブル１５００より３０を取得する。又、ジョブ１（機能Ｅ）のＰＲ１でのデータ処理時間として、図１６の機能毎データ処理時間テーブル１６００より７０を取得する。ＰＲ１での処理が停止する時刻（図１３のタイミングＴ４）が２：４０だとすると、ジョブ１がＰＲ１で処理する場合の終了時刻は、２：４０＋３０＋７０＝４：２０を算出する。ＰＲ２〜ＰＲ４での実行中の処理の終了予定時刻が、それぞれ２：５５、３：２５、３：１０であるとすれば、同様にジョブ１についてＰＲ２〜４で処理する場合の終了時刻を算出し、それぞれ４：３０、５：００、４：５５の結果を得る。上記のＰＲ１〜４までの終了時刻を、その他の処理候補のジョブであるジョブ２、ジョブ３、ジョブ４についても算出する。
【０１２８】
全ての処理候補のジョブについての各ＰＲ領域毎の終了時刻の算出結果、それぞれのタイミング関係を表す模式図を図１７に示す。なお各ＰＲ領域での処理が停止する停止時刻（図１３のタイミングＴ４〜Ｔ７）は、上述した要領で、開始時刻を基に、機能毎コンフィグ処理時間テーブル１５００、機能毎データ処理時間テーブル１６００を参照して算出する。各ＰＲ領域において最初に処理するジョブについて算出した終了時刻の結果を保持し、Ｓ１４０２のステップにおいて処理する毎に累積加算することにより求めることができる。もちろん、実際に処理が終了したなら、実際の終了時刻により補正を施すことで、その予測精度を一定の範囲に維持することができる。
【０１２９】
Ｓ１４０３では、算出した終了時刻より、ＰＲ領域毎に最も終了時刻が遅くなるジョブを特定する。ここでは、Ｓ１４０２で算出した処理候補のジョブについて全てのＰＲ領域においてジョブ処理した際の終了時刻より、各ＰＲ領域毎に全ての処理候補のジョブについての終了時刻の中から最も遅い終了時刻のジョブを特定する。図１８にＰＲ領域毎に最も終了時刻の遅いジョブを特定する方法を説明する模式図を示す。始めにＰＲ１について最も終了時刻の遅いジョブの特定方法について説明する。ＰＲ１を使用した際の、ジョブ１〜４の終了時刻は、図１７に示す終了時刻の算出結果より、それぞれ４：２０、４：２５、３：３５、３：５５である。従って、ＰＲ１における最も終了時刻が遅くなるデータ処理は処理Ｆであり、それを実行するジョブとしてジョブ２を特定する。次にＰＲ２について最も終了時刻の遅いジョブを特定する。ＰＲ２を使用した際の、ジョブ１〜４の終了時刻は、図１７に示す終了時刻の算出結果より、それぞれ４：３０、４：３５、４：００、４：２０である。従って、ＰＲ２における最も終了時刻が遅くなるデータ処理は処理Ｆであり、それを実行するジョブとしてジョブ２を特定する。次にＰＲ３について最も終了時刻の遅いジョブを特定する。ＰＲ３を使用した際の、ジョブ１〜４の終了時刻は、図１７に示す終了時刻の算出結果より、それぞれ５：００、５：０５、４：３０、４：４０である。従って、ＰＲ３における最も終了時刻が遅くなるデータ処理は処理Ｆであり、それを実行するジョブとしてジョブ２を特定する。最後にＰＲ４について最も終了時刻の遅いジョブを特定する。ＰＲ４を使用した際の、ジョブ１〜４の終了時刻は、図１７に示す終了時刻の算出結果より、それぞれ４：５５、４：４５、４：２０、４：００である。従って、ＰＲ４における最も終了時刻が遅くなるデータ処理は処理Ｅであり、それを実行するジョブとしてジョブ１を特定する。
【０１３０】
Ｓ１４０４では、特定したＰＲ領域毎に算出した最も遅いジョブは全て同じであるか否かを確認する。全て同じである場合にはＳ１４０５へ進む。そうでない場合にはＳ１４０６へ進む。Ｓ１４０３において算出した各ＰＲ領域毎に最も終了時刻の遅いジョブは、ＰＲ１〜ＰＲ４について、それぞれジョブ２、ジョブ２、ジョブ２、ジョブ１である。よって、ＰＲ領域毎に算出した最も終了時刻の遅いジョブは、ジョブ１とジョブ２が存在し、全て同じではない為、Ｓ１４０６へ進む。
【０１３１】
Ｓ１４０６では、複数の最も遅いジョブについて、最も遅くなるＰＲ領域での終了時刻を比較し、最も終了時刻の遅いジョブを最も遅いジョブとして特定する。ジョブ１についての最も遅くなるＰＲ領域での終了時刻は、図１７に示す終了時刻の算出結果より、ＰＲ３での終了時刻の５：００である。一方、ジョブ２についての最も遅くなるＰＲ領域での終了時刻は、図１７に示す終了時刻の算出結果より、ＰＲ３での終了時刻の５：０５である。よってジョブ２の方が終了時刻が遅いので、ジョブ２を最も遅いジョブとして特定する。
【０１３２】
Ｓ１４０７では、特定された最も遅いジョブについて、最も終了時刻が遅くなるＰＲ領域以外のＰＲ領域を、最も遅いジョブのＰＲ領域として選択する。Ｓ１４０６のステップにおいて特定された最も遅いジョブ２について、最も終了時刻が遅くなるＰＲ領域は、図１７に示す終了時刻の算出結果より、ＰＲ３である。Ｓ１４０７においては、ジョブ２が処理するＰＲ領域としてＰＲ３以外のＰＲ１、ＰＲ２、ＰＲ４のいずれかのＰＲ領域を選択する。本実施形態の画像処理装置１００においては、最も終了時刻が遅くなるＰＲ領域以外のＰＲ領域として、最も終了時刻が早いＰＲ領域を選択する場合を例にとり説明する。ジョブ２のＰＲ１、ＰＲ２、ＰＲ４での終了時刻は、それぞれ４：２５、４：３５、４：４５である。よってＰＲ１の終了時刻が最も早いので、最も遅いジョブ２のＰＲ領域としてＰＲ１を選択する。このようにして、Ｓ１４０５，Ｓ１４０６，Ｓ１４０７により、停止したＰＲ領域で実行を開始したとして、最も完了が遅くなるようなジョブとＰＲ領域（すなわち再構成可能な部分）との組を推定する。そしてその組が形成されないように、停止したＰＲ領域に応じて実行するジョブを選択する。
【０１３３】
以上で、キューに登録されているジョブの中で最も処理が遅くなるジョブを特定し、前記遅くなるジョブのＰＲ領域を選択する処理が終了する。
【０１３４】
以上説明したように実施形態２の画像処理装置では、キューに登録されているジョブの中で最も処理が遅くなるジョブを特定し、最も遅いジョブが最も遅くなるＰＲ領域以外のＰＲ領域を選択するよう制御する。図１９に従来の画像処理装置と、実施形態２における画像処理装置での、ＦＰＧＡ１４０の部分再構成部２０１〜２０４で実施される処理を比較するタイミングチャートを示す。図１９に示すように、実施形態２における画像処理装置で最後のジョブ処理が終了するＰＲ３の終了タイミングが、従来の画像処理装置で最後のジョブ処理が終了するＰＲ３の終了タイミングより早くできるという効果を奏する。
【０１３５】
換言すれば、本実施形態により、ジョブ全体の処理に係るクリチカルパスとなるジョブを前倒しで実行することで、ジョブ全体の処理を短時間で終了させることができる。
【０１３６】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１３７】
１００  画像処理装置、１０１  ＣＰＵ、１０２  ネットワークＩ／Ｆ、１０３  操作部、１０４  ＲＯＭ、１１８  ＡＳＩＣ、１３０  コンフィグコントローラ、１４０  ＦＰＧＡ、１５０  コンフィギュレーション用ＲＯＭ、２０１  部分再構成部（ＰＲ１）、２２０  ＰＲ管理テーブル、２２１  構成情報容量テーブル、３００  ＰＲ１用コンフィギュレーションデータ、１５００  機能毎コンフィグ処理時間テーブル、１６００  機能毎データ処理時間テーブル
【図１】
2016189177.tif 000003
【図２】
2016189177.tif 000004
【図３】
2016189177.tif 000005
【図４】
2016189177.tif 000006
【図５】
2016189177.tif 000007
【図６】
2016189177.tif 000008
【図７】
2016189177.tif 000009
【図８】
2016189177.tif 000010
【図９】
2016189177.tif 000011
【図１０】
2016189177.tif 000012
【図１１】
2016189177.tif 000013
【図１２Ａ】
2016189177.tif 000014
【図１２Ｂ】
2016189177.tif 000015
【図１３】
2016189177.tif 000016
【図１４】
2016189177.tif 000017
【図１５】
2016189177.tif 000018
【図１６】
2016189177.tif 000019
【図１７】
2016189177.tif 000020
【図１８】
2016189177.tif 000021
【図１９】
2016189177.tif 000022