(57)【要約】【課題】画像処理工程に含まれるか否かに関係なく、ジョブの属性や装置の情報を利用して再構成デバイスのコンフィギュレーションを行うタイミングを決定する仕組みを提供する。【解決手段】画像処理装置は、回路情報を書き換え可能であり、回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスを備え、受け付けたジョブの種別に従って、必要な画像処理を実行すべく、動的再構成デバイスの再構成を制御し、受け付けたジョブに従って、ジョブに対応する画像処理対象のページ数のうち、動的再構成デバイスによって画像処理が実行される所定のページ数を決定し、動的再構成デバイスに構成された回路構成を用いて、決定した所定のページ数に対して、１回目の画像処理を実行させる。【選択図】  図１０
2017091014.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
回路情報を書き換え可能であり、該回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスと、
ジョブを受け付ける受付手段と、
前記受付手段によって受け付けたジョブの種別に従って、必要な画像処理を実行すべく、前記動的再構成デバイスの再構成を制御する再構成制御手段と、
前記受付手段によって受け付けたジョブに従って、該ジョブに対応する画像処理対象のページ数のうち、前記動的再構成デバイスによって画像処理が実行される所定のページ数を決定する決定手段と、
前記動的再構成デバイスに構成された前記回路構成を用いて、前記決定手段によって決定された前記所定のページ数に対して、１回目の画像処理を実行させる実行制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記再構成制御手段は、
前記動的再構成デバイスによる前記画像処理の実行が前記所定のページ数に対して完了すると、前記ジョブの種別に従って、他の画像処理が必要であるか否かを判定し、必要であれば、該他の画像処理を実行するための回路構成を前記動的再構成デバイスに再構成させ、
前記実行制御手段は、再構成された前記動的再構成デバイスの前記回路構成を用いて、前記所定のページ数に対して、２回目以降の画像処理を実行させることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記動的再構成デバイスによって前記画像処理が実行された画像データを一時的に格納する格納手段をさらに備え、
前記実行制御手段は、前記２回目以降の画像処理を前記動的再構成デバイスに実行させる際に、前記格納手段から画像データを読み出して該動的再構成デバイスに送信することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記決定手段は、前記ジョブに対応する画像処理対象のページ数の全ページを、前記所定のページ数に決定することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記決定手段は、
前記ジョブの種別が、１ページ目に対して行われる全ての画像処理が完了するスピードが重要なジョブであれば、前記所定のページ数を１ページに決定し、前記動的再構成デバイスによる前記ジョブにおいて必要な画像処理の全てが完了すると、前記ジョブに対応する画像処理対象のページ数のうち、残りのページ数の全ページを前記所定のページ数に決定することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項６】
前記ジョブの種別とは、コピージョブ又はプリントジョブであることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記決定手段は、
前記ジョブの種別が、必要な画像処理のうち、後段の画像処理に時間が掛かるジョブであれば、前記格納手段の容量に従って、一度に格納することが可能な画像データに対応するページ数を、前記所定のページ数に決定することを特徴とする請求項３に記載の画像処理装置。
【請求項８】
前記ジョブの種別とは、スキャンジョブであり、
前記後段の画像処理とは、送信用のフォーマット変換処理、又は、画像データの送信処理であることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
回路情報を書き換え可能であり、該回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスを備える画像処理装置の制御方法であって、
受付手段が、ジョブを受け付ける受付工程と、
再構成制御手段が、前記受付工程で受け付けたジョブの種別に従って、必要な画像処理を実行すべく、前記動的再構成デバイスの再構成を制御する再構成制御手段と、
決定手段が、前記受付工程で受け付けたジョブに従って、該ジョブに対応する画像処理対象のページ数のうち、前記動的再構成デバイスによって画像処理が実行される所定のページ数を決定する決定工程と、
実行制御手段が、前記動的再構成デバイスに構成された前記回路構成を用いて、前記決定工程で決定された前記所定のページ数に対して、１回目の画像処理を実行させる実行制御工程と
を実行することを特徴とする画像処理装置の制御方法。
【請求項１０】
回路情報を書き換え可能であり、該回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスを備える画像処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記方法は、
受付手段が、ジョブを受け付ける受付工程と、
再構成制御手段が、前記受付工程で受け付けたジョブの種別に従って、必要な画像処理を実行すべく、前記動的再構成デバイスの再構成を制御する再構成制御手段と、
決定手段が、前記受付工程で受け付けたジョブに従って、該ジョブに対応する画像処理対象のページ数のうち、前記動的再構成デバイスによって画像処理が実行される所定のページ数を決定する決定工程と、
実行制御手段が、前記動的再構成デバイスに構成された前記回路構成を用いて、前記決定工程で決定された前記所定のページ数に対して、１回目の画像処理を実行させる実行制御工程と
を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的再構成デバイスを備えた画像処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１では、複数の工程から成る画像処理を行う際のＦＰＧＡ（Ｆｉｅｌｄ Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）等の動的再構成デバイスの再構成方法（コンフィギュレーション）に関する手法が開示されている。当該手法では、動的再構成デバイスで実施される画像処理工程に含まれる情報を利用してコンフィギュレーションを行うタイミングが検出され、それに従いコンフィギュレーションが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−５０５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、上記従来技術では、動的再構成デバイスで実施される画像処理工程に含まれないジョブの属性や処理ページ数、使用可能メモリ容量等の処理資源の情報を利用してコンフィギュレーションを行うタイミングを決定することができない。一方、一連の画像処理から成るジョブを実施する際に、ジョブの種類や処理ページ数、使用可能メモリ容量といった情報によって、動的再構成デバイスのコンフィギュレーションのタイミングや回数を決定しなければ、ジョブの処理速度が遅くなる装置がある。従来技術では動的再構成デバイスで実施される画像処理工程に含まれる情報、即ち、画像処理の種別のみしか利用できないため、装置が実施するジョブの処理速度が遅くなる、という課題がある。
【０００５】
本発明は、上述の問題に鑑みて成されたものであり、画像処理工程に含まれるか否かに関係なく、ジョブの属性や装置の情報を利用して再構成デバイスのコンフィギュレーションを行うタイミングを決定する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、画像処理装置であって、回路情報を書き換え可能であり、該回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスと、ジョブを受け付ける受付手段と、前記受付手段によって受け付けたジョブの種別に従って、必要な画像処理を実行すべく、前記動的再構成デバイスの再構成を制御する再構成制御手段と、前記受付手段によって受け付けたジョブに従って、該ジョブに対応する画像処理対象のページ数のうち、前記動的再構成デバイスによって画像処理が実行される所定のページ数を決定する決定手段と、前記動的再構成デバイスに構成された前記回路構成を用いて、前記決定手段によって決定された前記所定のページ数に対して、１回目の画像処理を実行させる実行制御手段とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、画像処理工程に含まれるか否かに関係なく、ジョブの属性や装置の情報を利用して再構成デバイスのコンフィギュレーションを行うタイミングを決定することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係る画像処理装置のブロック図。
【図２】一実施形態に係る拡張処理部１０５のブロック図。
【図３】一実施形態に係るＦＰＧＡ２０１に構成される回路構成情報を示す模式図。
【図４】一実施形態に係る画像処理装置のコピージョブを示すフローチャート。
【図５】一実施形態に係るソフトウェア構成要素を示す模式図。
【図６】一実施形態に係る拡張処理制御を示すフローチャート。
【図７】一実施形態に係る拡張処理要求の受信処理を示すフローチャート。
【図８】一実施形態に係る拡張ジョブキュー、拡張処理キューを示す模式図。
【図９】一実施形態に係る拡張処理の実行処理を示すフローチャート。
【図１０】一実施形態に係る後続拡張処理の実行処理を示すフローチャート。
【図１１】一実施形態に係るＦＰＧＡ２０１の再構成処理を示すフローチャート。
【図１２】一実施形態に係る拡張処理制御を示すフローチャート。
【図１３】一実施形態に係る後続拡張処理の実行処理を示すフローチャート。
【図１４】一実施形態に係るジョブ種ごとの再構成ページ数の例を示す図。
【図１５】一実施形態に係る時系列の処理ページ数とＦＰＧＡ状態遷移のイメージ図。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１０】
＜第１の実施形態＞
＜画像処理装置の構成＞
以下では、本発明の第１の実施形態について説明する。なお、各図面において同様の機能を有する箇所には同一の符号を付し、説明の重複は適宜省略する。本実施形態では、ジョブの全てのページに対して複数の画像処理工程を一つずつ順に実施する手順について説明する。処理Ａ、Ｂ、Ｃの３つの画像処理工程を実施する場合を例に概略を説明する。まず、動的再構成デバイスであるＦＰＧＡを処理Ａが実施可能な回路に再構成する。次に、全てのページに対して処理Ａを実施し、ＦＰＧＡを処理Ｂが実施可能な回路に再構成する。次に、全てのページに対して処理Ｂを実施し、ＦＰＧＡを処理Ｃが実施可能な回路に再構成する。次に、全てのページに対して処理Ｃを実施し、全ての画像処理工程を終了する。
【００１１】
まず、図１を参照して、本実施形態に係る画像処理装置の全体構成の一例について説明する。画像処理装置１００は、画像の入出力や送受信と、それに関連する各種の画像処理を行う複合機である。画像処理装置１００は、メインコントローラ１０１、ユーザインタフェースである操作部１０２、画像入力デバイスであるスキャナ１０３、及び画像出力デバイスであるプリンタ１０４を備える。操作部１０２、スキャナ１０３、及びプリンタ１０４は、それぞれメインコントローラ１０１に接続され、メインコントローラ１０１が各部の動作を統括的に制御する。また、画像処理装置１００は、メインコントローラ１０１が備える後述する拡張ＩＦ１２２を通じて拡張処理部１０５と接続する。
【００１２】
メインコントローラ１０１は、主制御を司るＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０６を備える。ＣＰＵ１０６は、システムバス１３０を介して、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０７、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０８、Ｆｌａｓｈ１０９と接続する。更に、画像バスＩＦ１１０、操作部ＩＦ１１１、ＮＷ通信部１１２、モデム部１１３、及び拡張ＩＦ１２２と接続する。
【００１３】
ＲＡＭ１０７は、ＣＰＵ１０６の主記憶部として作業領域を提供するための随時読み書き可能なメモリであり、内部処理する画像データを一時記憶するための画像メモリとしても使用される。ＲＯＭ１０８は、ブートＲＯＭでありシステム起動に必要なブートプログラム、及び動作に必要な各種処理プログラムを格納する。Ｆｌａｓｈ１０９は、不揮発性メモリであり画像処理装置１００の電源遮断後にも保持が必要なシステムソフトウェアや設定値データ等が格納される。
【００１４】
操作部ＩＦ１１１は、例えば、液晶タッチパネル等で構成する操作部１０２との間で入出力を行うためのインタフェースである。操作部ＩＦ１１１は、操作部１０２に対して表示すべき画像データを出力し、また、ユーザが操作部１０２を介して入力した情報をＣＰＵ１０６に伝送する。
【００１５】
ＮＷ通信部１１２は、ＬＡＮと接続するためのインタフェースであり、ＬＡＮに対して情報の入出力を行う。モデム部１１３は、公衆回線と接続するためのインタフェースであり、公衆回線に対して情報の入出力を行う。
【００１６】
画像バスＩＦ１１０は、システムバス１３０と画像データを転送するための画像バス１１４とを接続するインタフェースであり、データ構造を変換するバスブリッジとして動作する。画像バス１１４には、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）１１５、デバイスＩＦ１１６、スキャナ画像処理部１１７、プリンタ画像処理部１１８、画像回転部１１９、及び画像圧縮部１２０が接続される。
【００１７】
ＲＩＰ１１５は、ＬＡＮから受信したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データをビットマップイメージに展開する。デバイスＩＦ１１６は、スキャナ１０３、及びプリンタ１０４とメインコントローラ１０１とを接続するインタフェースであり、画像データの同期系、又は非同期系の変換を行う。スキャナ画像処理部１１７は、スキャナ１０３から読み込んだ入力画像データに対して、補正、加工、編集等の画像処理を行う。プリンタ画像処理部１１８は、プリンタ１０４へ出力するプリント出力画像データに対して、色変換、フィルタ処理、解像度変換等の処理を行う。画像回転部１１９は、画像データの回転を行う。画像圧縮部１２０は、多値画像データに対してはＪＰＥＧ圧縮伸長処理を行い、２値画像データに対してはＪＢＩＧ、ＭＭＲ、ＭＨなどの符号化方式を用いた圧縮伸長処理を行う。
【００１８】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１２１は、不揮発性のデータ記憶装置であり、画像データ、システムデータ、ユーザデータ等の各種データ、及びＣＰＵ１０６が実行する動作プログラムを格納する。拡張処理部１０５として接続されるＦＰＧＡを備えるオプションボードの制御プログラムや回路情報もＨＤＤ１２１に格納される。メインコントローラ１０１が、ＨＤＤ１２１を接続しない構成をとる場合は、各種データはＦｌａｓｈ１０９に格納されるものとする。拡張ＩＦ１２２は、例えば、ＰＣＩエクスプレスやＵＳＢで構成される周辺機器接続用のインタフェースであり、拡張処理部１０５などの周辺機器と接続され、当該機器とデータ送受信を行う。
【００１９】
＜拡張処理部＞
次に、図２を参照して、拡張処理部１０５の構成例について説明する。拡張処理部１０５は、ＦＰＧＡ２０１、ＲＡＭ２０２、システムバス２０３、機能部２０４、ホストＩＦ２０５、メモリコントローラ２０６を含んで構成される。
【００２０】
ＦＰＧＡ２０１は、回路構成情報に応じて論理回路を再構成できる再構成デバイスである。本実施形態によれば、ＦＰＧＡ２０１は、内部にメインコントローラ１０１と接続するためのホストＩＦ２０５や後述するＲＡＭ２０２と接続するメモリコントローラ２０６、及び再構成できる論理回路領域となる機能部２０４を備える。また、ＦＰＧＡ２０１は、画像処理装置１００の電源起動時に不図示のＲＯＭからＦＰＧＡ２０１の各ＩＦ（ホストＩＦ２０５、メモリコントローラ２０６）となる固定回路部の設定情報を読み出す。読み出した設定情報に基づいて、各ＩＦの固定回路部の設定が行われることにより、各ＩＦとの通信が可能な状態になる。本実施形態では、ホストＩＦ２０５、及びメモリコントローラ２０６は、ハードマクロで構成される固定的な回路とする。
【００２１】
ＲＡＭ２０２は、ＦＰＧＡ２０１が動作時に使用する主記憶メモリであり、画像データ等の中間処理データを一時的に格納するために使用される。システムバス２０３は、機能部２０４、ホストＩＦ２０５、及びメモリコントローラ２０６を接続するためのバスである。
【００２２】
機能部２０４は、回路構成情報に基づいて、画像処理回路に構成される処理部である。ホストＩＦ２０５は、メインコントローラ１０１の拡張ＩＦ１２２と接続される。例えば、ＰＣＩエクスプレスで構成されるインタフェースであり、ＣＰＵ１０６とＦＰＧＡ２０１との通信を媒介する。メモリコントローラ２０６は、ＲＡＭ２０２と接続するインタフェースであり、機能部２０４やホストＩＦ２０５を介して受信するデータ書き込み要求や、データ読み出し要求に基づくメモリ制御を行う。
【００２３】
上述した拡張処理部１０５をメインコントローラ１０１に接続すれば、画像処理装置１００は、ＦＰＧＡ２０１を使用した画像処理機能を拡張処理として実行できる。拡張処理部１０５を用いた拡張処理の制御については後述する。
【００２４】
＜回路構成情報＞
次に、図３を参照して、回路構成情報の詳細について説明する。ＨＤＤ１２１の回路構成情報の格納領域３００に機能毎の複数の回路構成情報が格納される。なお、本実施形態では、これらの回路構成情報は予めＨＤＤ１２１に格納されているが、その後に新たな回路構成情報を追加することも可能である。これらの回路構成情報は、ＣＰＵ１０６によりＨＤＤ１２１から読み出され、拡張ＩＦ１２２を介してＦＰＧＡ２０１に転送され、ＦＰＧＡ２０１の再構成が行われる。
【００２５】
回路構成情報とは、システムバス２０３、及び機能部２０４の回路情報であり、この回路情報により再構成される。機能部２０４に構成される回路の機能の種類に応じて、回路構成情報は複数用意される。本実施形態では、少なくとも回路構成情報Ａ３０１、回路構成情報Ｂ３０２、及び回路構成情報Ｃ３０３の３つが用意されており、それぞれが異なる画像処理を実行可能である。例えば、解像度変換処理、色空間処理、画像加工処理などの画像処理機能である。本実施形態では、回路構成情報Ａ３０１は処理Ａに対応した回路構成情報である。同様に、回路構成情報Ｂ３０２は処理Ｂに対応し、回路構成情報Ｃ３０３は処理Ｃに対応するものとする。
【００２６】
＜コピー処理＞
次に、図４を参照して、本実施形態における拡張処理部１０５を使用した画像処理装置１００の典型的な動作となるコピージョブの処理手順について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。ＣＰＵ１０６は、受付手段として機能し、操作部１０２を介して、ユーザによってコピージョブの実行を指示されたかを検知する。コピージョブは拡張処理部１０５により提供される拡張処理（典型的には画像処理）を使用する設定がなされているものとする。
【００２７】
コピージョブの実行を指示された場合、Ｓ４００で、ＣＰＵ１０６は、デバイスＩＦ１１６を介して、スキャナ１０３に原稿の読み取りを指示する。スキャナ１０３は読み取った画像データを、デバイスＩＦ１１６を介して、スキャナ画像処理部１１７へ送信する。続いて、Ｓ４０１で、ＣＰＵ１０６は、スキャナ画像処理部１１７を制御し受信した画像データに対する各種スキャン用画像処理を行い、画像処理後の画像データをＲＡＭ１０７へ送信する。
【００２８】
次に、Ｓ４０２で、ＣＰＵ１０６は、拡張処理部１０５を制御してＲＡＭ１０７に格納された画像データに対して拡張画像処理を実行する。具体的には、ＲＡＭ１０７に格納された画像データをＦＰＧＡ２０１に送信し、ＦＰＧＡ２０１による拡張画像処理の後、ＲＡＭ１０７又はＨＤＤ１２１へ送信する。その後、ＣＰＵ１０６は、拡張画像処理後の画像データをＲＡＭ１０７またはＨＤＤ１２１からプリンタ画像処理部１１８へ送信する。
【００２９】
Ｓ４０３で、ＣＰＵ１０６は、プリンタ画像処理部１１８を制御し、受信した画像データに対する各種プリント用の画像処理を行い、処理後の画像データをプリンタ１０４へ送信する。Ｓ４０４で、ＣＰＵ１０６は、プリンタ１０４に対して、画像データの記録媒体等の紙への印字を指示する。
【００３０】
複数ページから成るコピージョブにおいては、上記全てのステップ（Ｓ４００〜Ｓ４０４）をページ単位に同時並行で行う。以下では、このような処理の実行をページ単位パイプライン並列と記載する。以下、本実施形態においては、ページ単位パイプライン並列で行われることにより、コピージョブ全体の処理時間の短縮が可能になる。なお、ここでのページ単位とは、記録媒体に形成されるページに相当する単位である。
【００３１】
＜拡張処理＞
次に、図５及び図６を参照して、本発明の特徴となる、上述したコピー等のジョブにおいて拡張処理部１０５を使用した画像処理について説明する。図５は、本実施形態におけるソフトウェア構成要素の一例を示す。
【００３２】
ソフトウェア５０１は、再構成制御手段として機能し、拡張処理（画像処理）の全体制御を司るソフトウェアである。ソフトウェア５０１は、後述するソフトウェア５０２と通信しながら、拡張処理の制御を実現する。ソフトウェア５０２は、実行制御手段として機能し、拡張処理の実行制御を司るソフトウェアである。ソフトウェア５０２は、後述するソフトウェア５０３を制御しながら、拡張処理を実行する。
【００３３】
ソフトウェア５０３は、ＦＰＧＡ２０１の再構成を司るソフトウェアである。ソフトウェア５０４は、拡張処理の前段の処理（前段処理）を行うソフトウェアである。ソフトウェア５０５は、拡張処理の後段の処理（後段処理）を行うソフトウェアである。これらのソフトウェア５０１〜５０５は、電源起動時に動作を開始する。上述したソフトウェア構成になるため、これらのソフトウェアによる処理は並列動作可能である。なお、上述した例は、本実施形態での一例であって、限定するものではない。例えば、１つのソフトウェアにより実装されてもよいし、上述の形態よりも多くのソフトウェアで実装されてもよい。
【００３４】
また、本実施形態においては、ユーザにより指定されたコピー等の処理において、拡張処理部１０５での処理が必要かどうかはＣＰＵ１０６で行われるソフトウェア５０４により判定される。拡張処理部１０５での処理が必要だと判定した場合には、ソフトウェア５０４は、拡張処理要求をソフトウェア５０１に対してＨＴＴＰ通信により発行する。ジョブ全体はページ単位パイプライン並列で動作するため、複数ページから成るジョブにおいては、拡張処理要求は１ページごとに行われる。本実施形態においては、拡張処理要求にはジョブＩＤ、処理ＩＤ、ページＩＤ、画像データが含まれる。
【００３５】
さらに、本実施形態においては、拡張処理の前段処理がジョブに含まれる全ページ完了したか否かはＣＰＵ１０６で行われるソフトウェア５０４により判定される。前段処理が完了したと判定した場合には、ソフトウェア５０４は拡張処理部１０５への前段処理完了通知をソフトウェア５０１に対してＨＴＴＰ通信により発行する。本実施形態においては、前段処理完了通知にはジョブＩＤ、ジョブの総ページ数が含まれる。
【００３６】
続いて、図６を参照して、拡張処理の処理手順について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。なお、以下で説明する処理は、図５に示されるソフトウェア５０１に実装される。
【００３７】
Ｓ６００で、ＣＰＵ１０６は、後述する拡張処理要求の受信処理を行う。続いて、Ｓ６０１で、ＣＰＵ１０６は、拡張処理の実行要求を発行する。拡張処理の実行要求は、ソフトウェア５０１がソフトウェア５０２に対してＨＴＴＰ通信により発行する。拡張処理の実行要求には、ジョブＩＤ、処理ＩＤ、ページＩＤ、画像データが含まれる。拡張処理の実行要求を受信したソフトウェア５０２は拡張処理の実行処理を実施する。詳細な処理フローについては、図９を用いて後述する。本実施形態では、図８の８１０に記載の処理Ａ、Ｂ、Ｃの３つの拡張処理を行うため、図９の拡張処理の実行処理では先頭の処理Ａが実行される。
【００３８】
次に、Ｓ６０２で、ＣＰＵ１０６は、Ｓ６０１で依頼した拡張処理が全ページに対して完了したかを判定する。拡張処理が全ページに対して完了したかの判定は、例えば、前段処理完了通知を受信したかを判定することにより行うことができる。Ｓ６０２において、全ページに対して完了していないと判定した場合は処理をＳ６００に戻す。
【００３９】
一方、Ｓ６０２において全ページに対して完了したと判定した場合はＳ６０３に進み、ＣＰＵ１０６は、拡張処理要求に含まれる処理ＩＤが複数あるか否かを判定する。処理ＩＤが複数あればＳ６０４に進み、そうでなければＳ６０５に進む。Ｓ６０４で、ＣＰＵ１０６は、後続拡張処理の実行要求を発行し、Ｓ６０５に進む。後続拡張処理の実行要求は、ソフトウェア５０１がソフトウェア５０２に対してＨＴＴＰ通信により発行する。後続拡張処理の実行要求には、ジョブＩＤ、Ｓ６０１により拡張処理が完了した画像データの格納場所が含まれる。画像データがＨＤＤ１２１やＲＡＭ１０７、２０２に格納されるため、格納場所はファイルパスで表される。後続拡張処理の実行要求を受信したソフトウェア５０２は後続拡張処理の実行処理を実施する。詳細な処理フローについては、図１０を用いて後述する。本実施形態では、図８の８１０に記載の処理Ａ、Ｂ、Ｃの３つの拡張処理を行うため、図１０の拡張処理の実行処理では処理Ｂ、処理Ｃが実行される。
【００４０】
Ｓ６０５で、ＣＰＵ１０６は、対応するジョブＩＤのジョブを拡張処理ジョブキューから削除する。この削除では、必ず図８に示すエントリーＮｏ１のジョブが削除され、エントリーＮｏ２以降の処理がエントリーＮｏ１に繰り上がる。例えば、拡張処理キューが後述する図８に示した状態である場合には、エントリーＮｏ１のジョブＩＤ００１が削除され、ジョブＩＤ００２がエントリーＮｏ１へ、ジョブＩＤ００３がエントリーＮｏ２へ繰り上がる。
【００４１】
次に、Ｓ６０６で、ＣＰＵ１０６は、完了した拡張処理の処理結果を、ＨＴＴＰ通信により、拡張処理要求元へ通知する。処理結果の通知では、拡張処理の結果を表すメッセージ（正常終了、エラー終了など）を送信する。この送信をもって、要求された拡張処理が完了になり、処理を終了する。
【００４２】
＜拡張処理要求の受信＞
次に、図７を参照して、拡張処理要求の受信処理について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。本フローチャートの処理は図６のＳ６００の処理の詳細に相当する。なお、以下で説明する処理は、図５に示されるソフトウェア５０１に実装される。
【００４３】
Ｓ７００で、ＣＰＵ１０６は、上述した拡張処理要求を受信したか否かを判定する。上述したように、本実施形態では、拡張処理要求はＨＴＴＰ通信により発行される。したがって、ＨＴＴＰ通信により拡張処理の要求が来たかどうかを、所定のポートを監視することで実現されうる。ただし、拡張処理要求の通信方式に関しては一例であって、本発明を限定する意図はない。
【００４４】
Ｓ７００で拡張処理要求を受信したと判定した場合にはＳ７０１に進み、拡張処理要求を受信していないと判定した場合には、Ｓ７００の判定が繰り返し行われる。Ｓ７０１で、ＣＰＵ１０６は、拡張処理要求に含まれるジョブＩＤを取得し、当該ジョブＩＤが拡張ジョブキューに存在するか否かを判定する。存在しない場合はＳ７０２に進み、存在する場合は処理を終了する。
【００４５】
Ｓ７０２で、ＣＰＵ１０６は、受信した処理を拡張ジョブキューと拡張処理キューへ登録し、処理を終了する。このように、拡張処理要求の受信処理は、以上のＳ７００〜Ｓ７０２の処理により構成される。
【００４６】
ここで、図８を参照して、拡張ジョブキューと拡張処理キューについて説明する。拡張ジョブキューとは、８００に示す受信したジョブを管理するためのキューである。拡張ジョブキュー８００は、ジョブＩＤ８０１と処理キューＩＤ８０２とから構成される。受信したジョブは、受信した時間順にエントリーＮｏ１から登録される。例えば、図８では、ジョブＩＤ００１、ジョブＩＤ００２、ジョブＩＤ００３の順に受信したので、拡張ジョブキューのエントリーＮｏ１から順に登録されている。また、それぞれのジョブＩＤ８０１に識別可能な処理キューＩＤ８０２を付加する。
【００４７】
拡張処理キューとは、受信した処理を管理するためのキューである。ジョブＩＤごとに拡張処理要求に含まれる処理ＩＤの順にエントリーＮｏ１から登録されるものである。８１０は拡張処理キューＩＤ”１１１”の拡張処理キューを示す。ジョブＩＤ００１のジョブには、処理Ａ、処理Ｂ、処理Ｃの３つの処理を含むので、処理キューＩＤ”１１１”に対応する拡張処理キューは８１０のようになる。図示しないが、本実施形態では拡張処理キューは拡張ジョブキューに存在するジョブと同じ数である３つ作成される。なお、この拡張ジョブキューと拡張処理キューはＣＰＵ１０６によってＲＡＭ１０７に定義されるものとする。
【００４８】
＜拡張処理の実行＞
次に、図９を参照して、拡張処理の実行処理について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。なお、以下で説明する処理は、図５に示されるソフトウェア５０２に実装される。
【００４９】
Ｓ９００で、ＣＰＵ１０６は、拡張処理の実行要求に含まれるジョブＩＤに対応する拡張処理キューのエントリーＮｏ．１の処理ＩＤを参照して、処理ＩＤに対応する回路がＦＰＧＡ２０１に構成されているか否かを判定する。本実施形態では、図８の８１０に記載の処理Ａ、Ｂ、Ｃの３つの拡張処理を行うため、処理Ａ（１回目の画像処理）に対応する回路を再構成する。具体的には、ＦＰＧＡ２０１の機能部２０４に構成されている回路を示す情報を格納する記憶領域を設け、当該記憶領域をＣＰＵ１０６が読み出して、対応する拡張処理が構成されているか否かを判定してもよい。構成されている場合はＳ９０３に進み、構成されていない場合はＳ９０１に進む。
【００５０】
Ｓ９０１で、ＣＰＵ１０６は、ＦＰＧＡ２０１の再構成要求を発行する。再構成要求の発行では、後述するＦＰＧＡ２０１の再構成処理を行うＣＰＵ１０６で動作するソフトウェア５０２からソフトウェア５０３に対して、ＨＴＴＰ通信により、再構成要求を表すメッセージと処理対象となっている処理の処理ＩＤを送信する。処理ＩＤは、ＦＰＧＡ２０１に対して再構成すべき回路構成情報の決定のために使用される。
【００５１】
次に、Ｓ９０２において、ＣＰＵ１０６は、ＦＰＧＡ２０１の再構成が完了したか否かを判定する。上述したように、ＦＰＧＡ２０１の再構成処理はＨＴＴＰ通信により再構成の要求と完了の通知がソフトウェア５０２とソフトウェア５０３との間で行われる。したがって、再構成処理が完了したか否かは、ＨＴＴＰ通信により再構成の要求に対する完了の通知を表すメッセージを受信したか否かを判定することにより行われる。Ｓ９０２で再構成が完了したと判定されるとＳ９０３に進み、再構成が完了していないと判定されるとＳ９０２の判定が繰り返し行われる。
【００５２】
Ｓ９０３で、ＣＰＵ１０６は、ＦＰＧＡ２０１を使用して拡張処理を実行する。本処理が行われる前に、Ｓ９０１においてＦＰＧＡ２０１は処理ＩＤに応じた所望の回路構成に再構成されている。したがって、本処理では、まず、拡張処理の実行要求に含まれる画像データを、拡張ＩＦ１２２を経由して、ＦＰＧＡ２０１に接続されるＲＡＭ２０２に対して転送する。次に、ＦＰＧＡ２０１に構成された回路に対する設定を行うことで、画像処理を実行する。最後に、画像処理後の画像データをＲＡＭ２０２から取得し、ＨＤＤ１２１に格納する。以上のようにして、本処理では、ＦＰＧＡ２０１を使用した画像処理を実行する。
【００５３】
次に、Ｓ９０４で、ＣＰＵ１０６は、拡張処理の実行要求に含まれる処理ＩＤが単一であるか否かを判定する。処理ＩＤが単一ではないと判定されると、処理を終了し、そうでなければＳ９０５に進み。
【００５４】
Ｓ９０５で、ＣＰＵ１０６は、後段処理へ拡張処理済みのページに対応する画像データを送信する。具体的には、ソフトウェア５０２からソフトウェア５０５に対してＨＴＴＰ通信により、ジョブＩＤ、ページＩＤ、画像データを送信する。このように、複数ページから成るジョブにおいて、単一ページの処理が終了した時点で、後段処理へ処理済みページを送信することにより、ページ単位パイプライン並列が可能になる。
【００５５】
＜後続拡張処理の実行＞
次に、図１０を参照して、後続拡張処理の実行処理における処理手順について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。なお、以下で説明する処理は、図５に示されるソフトウェア５０２に実装される。
【００５６】
Ｓ１０００で、ＣＰＵ１０６は、処理すべきページＩＤと再構成すべき処理ＩＤを特定する。処理すべきページＩＤの特定方法として、Ｓ１００７において処理すべきページＩＤを更新し、Ｓ１０００において更新された処理すべきページＩＤ情報を参照することが考えられる。再構成すべき処理ＩＤの特定方法として、Ｓ１００６において再構成すべき処理ＩＤ情報を更新し、Ｓ１０００において更新された処理ＩＤ情報を参照することが考えられる。
【００５７】
Ｓ１００１において、ＣＰＵ１０６は、Ｓ１０００において特定した処理ＩＤに対応する回路がＦＰＧＡ２０１に構成されているか否かを判定する。判定の方法は、Ｓ９００において説明したので割愛する。構成されている場合、Ｓ１００４の処理が行われる。構成されていない場合、Ｓ１００２において、ＣＰＵ１０６はＦＰＧＡの再構成要求を発行する。再構成要求の発行については、Ｓ９０１において説明したので割愛する。本実施形態では、図８の８１０に記載の処理Ａ、Ｂ、Ｃの３つの拡張処理を行うため、本ステップは二回実行され、順に処理Ｂ、処理Ｃ（２回目以降の画像処理）に対応する回路を再構成する。
【００５８】
Ｓ１００３で、ＣＰＵ１０６は、再構成が完了したかいなかを判定する。再構成が完了していればＳ１００４に進み、そうでなければＳ１００３の判定が繰り返し行われる。Ｓ１００４で、ＣＰＵ１０６は、ＦＰＧＡ２０１を使用して拡張処理を実行する。本処理では、まず、図９で説明した拡張処理実行が完了した画像データを、拡張ＩＦ１２２を経由して、ＦＰＧＡ２０１に接続されるＲＡＭ２０２に対して転送する。次に、ＦＰＧＡ２０１に構成された回路に対する設定を行うことで、画像処理を実行する。最後に、画像処理後の画像データをＲＡＭ２０２から取得し、ＨＤＤ１２１に格納する。以上のようにして、本処理では、ＦＰＧＡ２０１を使用した画像処理を実行する。
【００５９】
次に、Ｓ１００５で、ＣＰＵ１０６は、処理すべき全ページに対して拡張処理が完了したか否かを判定する。具体的には、前段処理完了通知に含まれるジョブの総ページ数と拡張処理が完了したページ数とを比較することにより判定される。例えば、Ｓ１００４でＣＰＵ１０６が拡張処理を完了したページ数を保持しておき、それをＳ１００５で参照するようにしてもよい。Ｓ１００５で全ページに対して拡張処理が完了したと判定するとＳ１００６に進み、そうでなければＳ１００７に進む。Ｓ１００７の状態では、現在実行中の拡張処理は全ページに対して完了しておらず、次のページに対して同じ拡張処理を実行する必要がある。
【００６０】
Ｓ１００６で、ＣＰＵ１０６は、全拡張処理が完了したか否かを判定する。具体的には、拡張処理要求に含まれる最後の処理ＩＤの処理と、現在実行中の拡張処理とを比較し、一致するか否かによって判定してもよい。Ｓ１００６で全拡張処理が完了したと判定するとＳ１００９に進み、そうでない場合は処理をＳ１０００に戻す。処理を戻した場合は、現在実行中の拡張処理は全ページに対して完了しており、次は実行すべき拡張処理にＦＰＧＡ２０１を再構成する必要がある。Ｓ１００６において、処理すべき処理ＩＤを処理が完了した次の拡張処理となるように更新しておいてもよい。Ｓ１００９で、ＣＰＵ１０６は、後段処理へ拡張処理済みの最終ページに対応する画像データを送信し、処理を終了する。
【００６１】
一方、Ｓ１００７で、ＣＰＵ１０６は、現在実行中の拡張処理が最終処理か否かを判定する。具体的には、拡張処理要求に含まれる最後の処理ＩＤと、現在実行中の拡張処理の処理ＩＤとを比較し、一致するか否かによって判定してもよい。現在実行中の拡張処理が最終処理であると判定するとＳ１００８に進み、そうでない場合は処理を終了する。Ｓ１００８で、ＣＰＵ１０６は、後段処理へ拡張処理済みのページに対応する画像データを送信する。具体的には、ソフトウェア５０２からソフトウェア５０５に対してＨＴＴＰ通信により、ジョブＩＤ、ページＩＤ、画像データを送信する。Ｓ１００８の状態は、あるページまでは全ての拡張処理が完了している状態である。ジョブをページ単位パイプライン並列で処理するために、全ての拡張処理が完了したページに対応する画像データを、ＨＴＴＰ通信により、後段処理へ通知する。Ｓ１００８において、処理すべきページＩＤを送信した次のページとなるように更新しておいてもよい。Ｓ１００８の処理が終了すると、処理をＳ１０００に戻す。
【００６２】
＜再構成処理＞
次に、図１１を参照して、ＦＰＧＡ２０１の再構成処理について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。なお、図１１に示されるＦＰＧＡ２０１の再構成処理は、ＣＰＵ１０６で動作し、ＨＴＴＰ通信を介して、再構成の要求を受信するソフトウェア５０３により実装される。
【００６３】
Ｓ１１００で、ＣＰＵ１０６は、ＦＰＧＡ２０１の再構成の要求を、ＨＴＴＰ通信により、受信したか否かを判定する。ＣＰＵ１０６は、再構成の要求の受信時に、再構成要求を表すメッセージと対象処理の処理ＩＤを受信する。受信した処理内容の情報は、後述するＳ１１０１において参照される。再構成の要求を受信した場合はＳ１１０１に進み、そうでない場合はＳ１１００の判定を繰り返す。
【００６４】
Ｓ１１０１で、ＣＰＵ１０６は、ＦＰＧＡ２０１に対して、再構成すべき回路構成情報を決定する。本処理は、受信した処理ＩＤに基づいて、対応する回路構成情報を決定する処理である。本実施形態では、上述したように回路構成情報Ａは処理Ａ、回路構成情報Ｂは処理Ｂ、回路構成情報Ｃは処理Ｃに対応するとしている。したがって、受信した処理ＩＤが処理Ａである場合には、回路構成情報ＡがＦＰＧＡ２０１に対して、再構成すべき回路構成情報として決定される。
【００６５】
Ｓ１１０２で、ＣＰＵ１０６は、Ｓ１１０１で決定した回路構成情報を使用して、ＦＰＧＡ２０１の再構成を実施する。本処理は、ＣＰＵ１０６がＨＤＤ１２１に格納された回路構成情報を、拡張ＩＦ１２２を介して、ＦＰＧＡ２０１の図示しない所定の記憶領域へロードすることにより行われるものである。本処理によって、ＦＰＧＡ２０１は処理内容に対応した所望の回路構成へ再構成される。
【００６６】
Ｓ１１０３で、ＣＰＵ１０６は、ＦＰＧＡ２０１の再構成の要求元へ、ＦＰＧＡ２０１の再構成の完了を通知する。完了の通知は、ＨＴＴＰ通信にて行われる。このＨＴＴＰ通信では、単に完了を表すメッセージが送信されるものである。ＦＰＧＡ２０１の再構成処理は、以上のＳ１１００〜Ｓ１１０３の処理により構成されるものである。
【００６７】
以上説明したように、本実施形態に係る画像処理装置は、回路情報を書き換え可能であり、回路情報に従って構成された回路構成により画像処理を実行する動的再構成デバイスを備える。また、受け付けたジョブに従って、ジョブに対応する画像処理対象のページ数のうち、動的再構成デバイスによって画像処理が実行される所定のページ数を決定する。その後、動的再構成デバイスに構成された回路構成を用いて、決定した所定のページ数に対して、１回目の画像処理を実行させる。さらに、１回目の画像処理が完了すると、ジョブの種別に従って、他の画像処理が必要であるか否かを判定し、必要であれば、該他の画像処理を実行するための回路構成を再構成し、所定のページ数に対して、２回目以降の画像処理を実行させる。このように、本実施形態では動的再構成デバイスのコンフィギュレーションのタイミングをジョブ全体の処理状況や動的再構成デバイスで実施すべき画像処理の数によって、決定する。これによって、最適なタイミングで動的再構成デバイスのコンフィギュレーションが可能になり、装置が実施するジョブの処理速度の向上が可能となる。なお、本実施形態は一例であって、限定するものではない。
【００６８】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態では、動的再構成デバイスのコンフィギュレーションをジョブに含まれる全てのページの処理が完了した後に行う場合について説明した。一方、本実施形態では、再構成を行うページ数を示す再構成ページ数に対して処理が完了した後に、動的再構成デバイスのコンフィギュレーションを行う場合について説明する。なお、以下では、上記第１の実施形態との差分を中心に説明する。ここで、再構成ページ数とは、例えば、ＦＰＧＡのメモリ容量から決定されるページ数であり、再構成後に画像処理を実行している中で、ＨＤＤへの書き戻し等が発生しない範囲でのページ数となる。つまり、上記第１の実施形態では、ジョブで指定された全てのページに対して１つの画像処理を連続して実行するのに対して、本実施形態では、所定ページ数（再構成ページ数）ごとに行う。上記第１の実施形態と比較して、１枚目の処理時間が短くなることが利点である。
【００６９】
本実施形態では、ジョブの再構成ページ数に対して複数の画像処理工程を一つずつ順に実施していく。再構成ページ数に対して全ての画像処理工程が完了すると、次のページ群に対して複数の画像処理工程を一つずつ順に実施していく。以下では、処理Ａ、Ｂ、Ｃの３つの画像処理工程を実施し、ジョブの総ページ数が再構成ページ数より多い場合を例に概略を説明する。
【００７０】
まず、動的再構成デバイスであるＦＰＧＡを処理Ａが実施可能な回路に再構成する。次に、再構成ページ数に対して処理Ａを実施し、ＦＰＧＡを処理Ｂが実施可能な回路に再構成する。次に、再構成ページ数に対して処理Ｂを実施し、ＦＰＧＡを処理Ｃが実施可能な回路に再構成する。次に、再構成ページ数に対して処理Ｃを実施し、全ての画像処理工程を終了する。ジョブの総ページ数が再構成ページ数より多く、処理すべきページが残っているため、次のページ群に対して画像処理工程を一つずつ順に実施していく。ページ群のページ数は、処理すべきページが再構成ページ数より多ければ再構成ページ数と等しくなり、少なければ処理すべきページ数と等しくなる。これらを、全てのページに対して全ての画像処理工程を実施するまで繰り返す。なお、本実施形態における、画像処理装置１００のブロック図、拡張処理部１０５のブロック図は、上記第１の実施形態と同一であるので説明を省略する。
【００７１】
＜拡張処理＞
図１２を参照して、本実施形態における拡張処理の処理手順について説明する。以下で説明する処理は、ＣＰＵ１０６がＨＤＤ１２１やＲＯＭ１０８等に格納された動作プログラムをＲＡＭ１０７に読み出して実行することにより実現される。なお、以下で説明する処理は、図５に示されるソフトウェア５０１に実装される。
【００７２】
Ｓ１２００で、ＣＰＵ１０６は、拡張処理要求の受信処理を行う。本ステップはＳ６００と同様の処理であり、拡張処理要求の受信処理は図７を用いて詳細に説明した処理と同様であるため説明は省略する。続いて、Ｓ１２０１で、ＣＰＵ１０６は、拡張処理の実行要求を発行する。本ステップはＳ６０１と同一である。本ステップはジョブの総ページ数が再構成ページ数よりも多い場合、複数回実行される。例えば、再構成ページ数が７でジョブの総ページ数が１３の場合、２回実行される。
【００７３】
次に、Ｓ１２０２において、ＣＰＵ１０６は前段処理から前段処理完了通知未受信か否かを判定する。Ｓ１２０２において未受信と判定された場合、Ｓ１２０３の処理を行う。Ｓ１２０２において、受信と判定された場合、Ｓ１２０４の処理を行う。本ステップは、再構成ページ数に足りない状態で前段処理完了通知を受けた場合に処理を継続するためのステップである。受信と判定された場合、後述の後続拡張処理の実行要求に含む処理ページ数情報を現在処理しているページ数を再構成ページ数で割った余りを設定する。
【００７４】
次に、Ｓ１２０３において、ＣＰＵ１０６はＳ１２０１で依頼した拡張処理が所定の再構成ページ数に対して処理が完了したか否かを判定する。本実施形態において、再構成ページ数は、ジョブの属性やモードによって決められ、ＲＡＭ１０７に格納されるものとする。判定はＣＰＵ１０６が拡張処理完了ページ数を保持しておき、再構成ページ数と比較することにより行ってもよい。Ｓ１２０３において、再構成ページ数に対して処理が完了していないと判定した場合、Ｓ１２００の処理を繰り返す。
【００７５】
Ｓ１２０３において拡張処理切り換えページ数に対して処理が完了したと判定した場合、Ｓ１２０４において、ＣＰＵ１０６は拡張処理要求に含まれる処理ＩＤが複数あるか否かを判定する。本ステップはＳ６０３と同一である。なお、処理ＩＤが複数あると判定した場合はＳ１２０５に進み、そうでない場合はＳ１２０６に進む。Ｓ１２０５で、ＣＰＵ１０６は後続拡張処理の実行要求を発行する。後続拡張処理の実行要求は、ソフトウェア５０１がソフトウェア５０２に対してＨＴＴＰ通信により発行し、Ｓ１２０６に進む。本実施形態では、後続拡張処理の実行要求に処理ページ数情報を含む。
【００７６】
Ｓ１２０６で、ＣＰＵ１０６は、Ｓ１２０１で依頼した拡張処理が全ページに対して完了したか否かを判定する。本ステップはＳ６０２と同一である。全ページに対して処理が完了したと判定した場合はＳ１２０７に進み、そうでない場合は処理をＳ１２００に戻す。Ｓ１２０７で、ＣＰＵ１０６は、対応するジョブＩＤのジョブを拡張処理ジョブキューから削除する。本ステップはＳ６０５と同一である。続いて、Ｓ１２０８で、ＣＰＵ１０６は、完了した拡張処理の処理結果を、ＨＴＴＰ通信により、拡張処理要求元へ通知する。本ステップはＳ６０６と同一である。この送信をもって、要求された拡張処理が完了になる。
【００７７】
＜後続拡張処理の実行＞
次に、図１３を参照して、本実施形態に係る後続拡張処理の実行処理について説明する。なお、図１０のフローチャートと同一の処理については、同一のステップ番号を付し説明を省略する。図１０のフローチャートとの違いは、Ｓ１３００において、処理ページ数の拡張処理が完了したか否かを判定する点である。処理ページ数は、後続拡張処理の実行要求に含まれる処理ページ数情報を参照することによって取得できる。
【００７８】
本実施形態では、図８の８１０に記載の処理Ａ、Ｂ、Ｃの３つの拡張処理を行うため、Ｓ１００２は複数回実行され、順に処理Ｂ、処理Ｃに対応する回路を再構成する。さらに、Ｓ１００２はジョブの総ページ数が再構成ページ数よりも多い場合、複数回実行される。例えば、本実施形態では、図１３のフローチャートで再構成すべき拡張処理数が２であり、再構成ページ数が７でジョブの総ページ数が１３の場合、２×２＝４回実行される。即ち、
Ｓ１００２が実行される回数＝再構成すべき拡張処理数×（ジョブの総ページ数÷再構成ページ数の商＋１）
の数式によって算出される。
【００７９】
このように、再構成ページ数をジョブ中に動的に変更することにより、ジョブ種やジョブの総ページ数に応じて、最適なタイミングで動的再構成デバイスのコンフィギュレーションが可能になる。以下では、再構成ページ数と処理時間との関係について説明する。
【００８０】
再構成ページ数が少なくなると、１ページに対して拡張処理を全て完了するまでの期間が短くなり、後段処理に画像データを送信するまでの時間が短くなる。つまり、１ページだけに着目すると処理時間は短くなる。一方、再構成ページ数が多くなると所定のページ数をまとめて同一の拡張処理を行うため、ＦＰＧＡ２０１の再構成の回数が少なくなり、再構成に必要な時間が短くなる。つまり、ジョブに含まれるすべてのページを処理するジョブ処理時間は短くなる。一方で、再構成ページ数を大きくすると、拡張処理を全て完了したページの画像データを後段処理に送信するまでの時間が長くなる。
【００８１】
また、ＦＰＧＡ２０１のＲＡＭ２０２に拡張処理後の画像データを格納したまま、機能部２０４の再構成が可能なことが知られている。一方、拡張処理後の画像データをメインコントローラのＨＤＤ１２１に格納し、その後拡張処理を行う際に当該画像データをＲＡＭ２０２に読み出すには一定の処理時間が必要である。この特性を利用して、以下のような制御を行うことでジョブ処理時間を短くすることが可能である。
【００８２】
具体的には、ＦＰＧＡ２０１のＲＡＭ２０２の容量がフルになる、即ち、容量の空き領域が無くなるまでは、ＲＡＭ２０２に拡張処理後の画像データを格納する。その後、ＦＰＧＡの再構成を行い、ＲＡＭ２０２に格納された画像データに対して、次の拡張処理を行う。これらの処理を拡張処理が全て終了するまで繰り返す。図１３を用いて説明すると、“再構成ページ数×１ページの画像データ容量”をＲＡＭ２０２の容量より小さくなるように、再構成ページ数を決定する。即ち、一度に格納することが可能な画像データに対応するページ数を、再構成ページ数として決定する。Ｓ１００４で拡張処理を実行する際に、拡張処理後の画像データをＲＡＭ２０２に格納する。その後、Ｓ１００４において次の拡張処理を行う際にＲＡＭ２０２から画像データを取得し、拡張処理を実行する。
【００８３】
本実施形態で使用するジョブ種ごとの再構成ページ数の組み合わせの例を図１４に示す。コピージョブやプリントジョブといった、１ページ目の出力を得るまでの時間（スピード）が短いことが重要なジョブにおいては、現在処理しているページ番号により再構成ページ数を変更している。現在処理しているページ番号が１の時、再構成ページ数は“１”となる。また、現在処理しているページ番号が２以上の時、再構成ページ数は“ジョブの総ページ数−１”となる。これにより、１ページ目の出力を得るまでの時間とジョブ処理時間の短縮が両立できる。
【００８４】
コピー／プリントジョブにおける時系列の処理ページ数とＦＰＧＡ２０１の状態遷移のイメージを図１５（ａ）を用いて説明する。横軸が時間を示し、縦軸が処理済みページ数を示す。ｔ０でコピー／プリントジョブを開始する。１ページ目の処理時は、図１４（ａ）に示すように、１ページ毎にＦＰＧＡ２０１を再構成するので、ＦＰＧＡ２０１の動作状態は、再構成、処理Ａ、再構成、処理Ｂ、再構成、処理Ｃの順に遷移する。１ページ目に対して処理Ａと処理Ｂと処理Ｃが完了するｔ１に１ページ目が完成する。ｔ１はＳ１００８が実行される時間に相当する。その後、図１４（ａ）に示すように“ジョブの総ページ数−１”毎にＦＰＧＡ２０１を再構成する。図１５の例では、ジョブの総ページ数が１３ページであるため、２ページ目に対して処理Ａと処理Ｂと処理Ｃが完了するｔ２から、処理済みページ数は増加し、ｔ３に１３ページ目が完了する。ｔ３はＳ１００９が実行される時間に相当する。
【００８５】
ジョブの特徴として、スキャンジョブは後段処理として送信用のフォーマット変換処理や送信処理などを行うため、後段処理の時間が長くなる。つまり、拡張処理を全て完了したページの画像データを後段処理に送信するまでの時間を短くすることで、トータルのジョブ処理時間を短くすることが可能になる。しかし、１ページ毎に再構成を行っていては再構成時間が必要なため、トータルのジョブ処理時間が長くなってしまう。よって、図１４（ｂ）に示すように、現在処理しているページ番号が１〜ＲＡＭ２０２に格納可能なページ数の時、再構成ページ数は“ＲＡＭ２０２に格納可能なページ数”。現在処理しているページ番号がＲＡＭ２０２に格納可能なページ数以上の時、再構成ページ数は“ＲＡＭ２０２に格納可能なページ数”となる。
【００８６】
図１５（ｂ）にスキャンジョブにおける時系列の処理ページ数とＦＰＧＡ２０１の状態遷移のイメージを示す。図１５においては、ＲＡＭ２０２に格納可能なページ数を７ページとしている。ｔ０でスキャンジョブを開始する。１から７ページ目の処理時は、図１４（ｂ）に示すようにＲＡＭ２０２に格納可能なページ数（再構成ページ数）つまり７ページ毎にＦＰＧＡ２０１を再構成する。そのため、ＦＰＧＡ２０１の動作状態は、再構成、７ページ処理Ａ、再構成、７ページ処理Ｂ、再構成、７ページ処理Ｃの順に遷移する。１ページ目に対して処理Ａと処理Ｂと処理Ｃが完了するｔ４に１ページ目が完成する。ｔ４はＳ１００８が実行される時間に相当する。その後、処理済みページは増加し、ｔ５に７ページ目が完了する。図１４（ｂ）に示すように７ページ毎にＦＰＧＡ２０１を再構成する。ジョブの総ページ数が１３ページなので、８ページ目に対して処理Ａと処理Ｂと処理Ｃが完了するｔ６から、処理済みページ数は増加し、ｔ７に１３ページ目が完了する。ｔ７はＳ１００９が実行される時間に相当する。
【００８７】
以上説明したように、本実施形態では再構成ページ数を保持し、それにより動的再構成デバイスのコンフィギュレーション（再構成）のタイミングを決定する。これにより、例えば、ジョブ全体の処理状況や動的再構成デバイスで実施すべき画像処理の数によって再構成のタイミングを決定することができる。これによって、最適なタイミングで動的再構成デバイスのコンフィギュレーションが可能になり、装置が実施するジョブの処理速度の向上が可能となる。なお、本実施形態は一例であって、限定するものではない。
【００８８】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８９】
１０１：メインコントローラ、１０２：操作部、１０３：スキャナ、１０４：プリンタ、１０５：拡張処理部、２０１：ＦＰＧＡ、２０２：ＲＡＭ、２０３：システムバス、２０４：機能部、２０５：ホストＩＦ、２０６：メモリコントローラ
【図１】
2017091014.tif 000003
【図２】
2017091014.tif 000004
【図３】
2017091014.tif 000005
【図４】
2017091014.tif 000006
【図５】
2017091014.tif 000007
【図６】
2017091014.tif 000008
【図７】
2017091014.tif 000009
【図８】
2017091014.tif 000010
【図９】
2017091014.tif 000011
【図１０】
2017091014.tif 000012
【図１１】
2017091014.tif 000013
【図１２】
2017091014.tif 000014
【図１３】
2017091014.tif 000015
【図１４】
2017091014.tif 000016
【図１５】
2017091014.tif 000017